From f9ae38733731426be96817fcd10cbe5732d38b98 Mon Sep 17 00:00:00 2001 From: RafficMohammed Date: Sun, 8 Jan 2023 01:59:16 +0530 Subject: [PATCH] upgraded dependencies --- .idea/community.iml | 195 +- .idea/php.xml | 195 +- composer.json | 5 +- composer.lock | 2746 +++++++------ config/app.php | 4 +- vendor/asm89/stack-cors/LICENSE | 19 + vendor/asm89/stack-cors/README.md | 83 + vendor/asm89/stack-cors/composer.json | 43 + vendor/asm89/stack-cors/src/Cors.php | 61 + vendor/asm89/stack-cors/src/CorsService.php | 225 ++ vendor/autoload.php | 2 +- vendor/bin/patch-type-declarations | 117 + vendor/bin/yaml-lint | 117 + vendor/brick/math/CHANGELOG.md | 415 ++ vendor/brick/math/LICENSE | 20 + vendor/brick/math/SECURITY.md | 17 + vendor/brick/math/composer.json | 35 + vendor/brick/math/src/BigDecimal.php | 895 +++++ vendor/brick/math/src/BigInteger.php | 1184 ++++++ vendor/brick/math/src/BigNumber.php | 572 +++ vendor/brick/math/src/BigRational.php | 523 +++ .../src/Exception/DivisionByZeroException.php | 41 + .../Exception/IntegerOverflowException.php | 27 + .../math/src/Exception/MathException.php | 14 + .../src/Exception/NegativeNumberException.php | 12 + .../src/Exception/NumberFormatException.php | 35 + .../Exception/RoundingNecessaryException.php | 21 + vendor/brick/math/src/Internal/Calculator.php | 756 ++++ .../Internal/Calculator/BcMathCalculator.php | 116 + .../src/Internal/Calculator/GmpCalculator.php | 156 + .../Internal/Calculator/NativeCalculator.php | 634 +++ vendor/brick/math/src/RoundingMode.php | 107 + vendor/brozot/laravel-fcm/.gitignore | 26 - vendor/brozot/laravel-fcm/.travis.yml | 14 - vendor/brozot/laravel-fcm/LICENSE | 21 - vendor/brozot/laravel-fcm/README.md | 446 --- vendor/brozot/laravel-fcm/composer.json | 49 - vendor/brozot/laravel-fcm/composer.lock | 3528 ----------------- vendor/brozot/laravel-fcm/config/fcm.php | 14 - ...sage-Exceptions-InvalidOptionsException.md | 19 - ...age-Exceptions-NoTopicProvidedException.md | 19 - .../doc/LaravelFCM-Message-Options.md | 49 - .../doc/LaravelFCM-Message-OptionsBuilder.md | 241 -- .../LaravelFCM-Message-OptionsPriorities.md | 69 - .../doc/LaravelFCM-Message-PayloadData.md | 49 - .../LaravelFCM-Message-PayloadDataBuilder.md | 91 - .../LaravelFCM-Message-PayloadNotification.md | 49 - ...lFCM-Message-PayloadNotificationBuilder.md | 400 -- .../doc/LaravelFCM-Message-Topics.md | 134 - .../doc/LaravelFCM-Response-BaseResponse.md | 118 - .../LaravelFCM-Response-DownstreamResponse.md | 338 -- ...FCM-Response-DownstreamResponseContract.md | 147 - ...onse-Exceptions-InvalidRequestException.md | 37 - ...onse-Exceptions-ServerResponseException.md | 50 - ...Exceptions-UnauthorizedRequestException.md | 37 - .../doc/LaravelFCM-Response-GroupResponse.md | 172 - ...ravelFCM-Response-GroupResponseContract.md | 59 - .../doc/LaravelFCM-Response-TopicResponse.md | 173 - ...ravelFCM-Response-TopicResponseContract.md | 60 - .../doc/LaravelFCM-Sender-BaseSender.md | 83 - .../doc/LaravelFCM-Sender-FCMGroup.md | 164 - .../doc/LaravelFCM-Sender-FCMSender.md | 153 - ...elFCM-Test-Mocks-MockDownstreamResponse.md | 254 -- ...LaravelFCM-Test-Mocks-MockGroupResponse.md | 110 - ...LaravelFCM-Test-Mocks-MockTopicResponse.md | 95 - vendor/brozot/laravel-fcm/doc/Readme.md | 38 - vendor/brozot/laravel-fcm/phpunit.xml | 18 - vendor/brozot/laravel-fcm/src/FCMManager.php | 21 - .../laravel-fcm/src/FCMServiceProvider.php | 54 - vendor/brozot/laravel-fcm/src/Facades/FCM.php | 13 - .../laravel-fcm/src/Facades/FCMGroup.php | 13 - .../Exceptions/InvalidOptionsException.php | 12 - .../Exceptions/NoTopicProvidedException.php | 12 - .../laravel-fcm/src/Message/Options.php | 110 - .../src/Message/OptionsBuilder.php | 336 -- .../laravel-fcm/src/Message/PayloadData.php | 38 - .../src/Message/PayloadDataBuilder.php | 78 - .../src/Message/PayloadNotification.php | 155 - .../Message/PayloadNotificationBuilder.php | 447 --- .../brozot/laravel-fcm/src/Message/Topics.php | 226 -- .../laravel-fcm/src/Request/BaseRequest.php | 65 - .../laravel-fcm/src/Request/GroupRequest.php | 70 - .../laravel-fcm/src/Request/Request.php | 151 - .../laravel-fcm/src/Response/BaseResponse.php | 75 - .../src/Response/DownstreamResponse.php | 413 -- .../Response/DownstreamResponseContract.php | 85 - .../Exceptions/InvalidRequestException.php | 25 - .../Exceptions/ServerResponseException.php | 37 - .../UnauthorizedRequestException.php | 24 - .../src/Response/GroupResponse.php | 148 - .../src/Response/GroupResponseContract.php | 30 - .../src/Response/TopicResponse.php | 151 - .../src/Response/TopicResponseContract.php | 31 - .../laravel-fcm/src/Sender/FCMGroup.php | 94 - .../laravel-fcm/src/Sender/FCMSender.php | 118 - .../laravel-fcm/src/Sender/HTTPSender.php | 37 - .../tests/DownstreamResponseTest.php | 460 --- .../laravel-fcm/tests/DownstreamTest.php | 92 - .../brozot/laravel-fcm/tests/FCMTestCase.php | 22 - .../laravel-fcm/tests/GroupResponseTest.php | 72 - .../brozot/laravel-fcm/tests/MessageTest.php | 143 - .../laravel-fcm/tests/TopicResponseTest.php | 64 - .../brozot/laravel-fcm/tests/TopicsTest.php | 149 - .../tests/mocks/MockDownstreamResponse.php | 232 -- .../tests/mocks/MockGroupResponse.php | 123 - .../tests/mocks/MockTopicResponse.php | 94 - vendor/composer/autoload_classmap.php | 535 +-- vendor/composer/autoload_files.php | 19 +- vendor/composer/autoload_namespaces.php | 2 - vendor/composer/autoload_psr4.php | 19 +- vendor/composer/autoload_real.php | 14 +- vendor/composer/autoload_static.php | 673 ++-- vendor/composer/installed.json | 2901 ++++++++------ vendor/composer/installed.php | 641 +-- vendor/dnoegel/php-xdg-base-dir/LICENSE | 19 - vendor/dnoegel/php-xdg-base-dir/README.md | 41 - vendor/dnoegel/php-xdg-base-dir/composer.json | 17 - vendor/dnoegel/php-xdg-base-dir/src/Xdg.php | 132 - vendor/facade/ignition/.babelrc | 4 - .../ignition/.github/workflows/run-tests.yml | 100 - vendor/facade/ignition/.php_cs.php | 40 + vendor/facade/ignition/.prettierignore | 1 - vendor/facade/ignition/.prettierrc | 6 - vendor/facade/ignition/.styleci.yml | 8 - vendor/facade/ignition/CHANGELOG.md | 440 +- vendor/facade/ignition/README.md | 13 +- vendor/facade/ignition/SECURITY.md | 3 + vendor/facade/ignition/composer.json | 33 +- vendor/facade/ignition/config/flare.php | 18 +- vendor/facade/ignition/config/ignition.php | 4 +- vendor/facade/ignition/package.json | 6 +- vendor/facade/ignition/postcss.config.js | 29 - vendor/facade/ignition/psalm-baseline.xml | 51 + vendor/facade/ignition/psalm.xml | 47 + .../ignition/resources/compiled/ignition.js | 8 +- .../ignition/resources/views/errorPage.php | 4 +- .../src/Actions/ShareReportAction.php | 3 +- .../Commands/SolutionProviderMakeCommand.php | 50 + .../ignition/src/Commands/TestCommand.php | 46 +- .../src/Commands/stubs/solution-provider.stub | 18 + .../src/Context/LaravelContextDetector.php | 14 +- .../src/Context/LaravelRequestContext.php | 23 +- .../src/Context/LivewireRequestContext.php | 94 + .../ignition/src/DumpRecorder/DumpHandler.php | 4 +- .../src/DumpRecorder/DumpRecorder.php | 43 +- .../ignition/src/DumpRecorder/HtmlDumper.php | 2 +- .../src/ErrorPage/ErrorPageHandler.php | 5 +- .../src/ErrorPage/ErrorPageViewModel.php | 27 +- .../ErrorPage/IgnitionExceptionRenderer.php | 26 + .../ignition/src/ErrorPage/Renderer.php | 2 +- vendor/facade/ignition/src/Facades/Flare.php | 8 +- .../src/Http/Controllers/StyleController.php | 3 +- .../Http/Requests/ExecuteSolutionRequest.php | 1 + .../ignition/src/IgnitionServiceProvider.php | 238 +- .../ignition/src/JobRecorder/JobRecorder.php | 167 + .../ignition/src/LogRecorder/LogRecorder.php | 28 +- .../ignition/src/Logger/FlareHandler.php | 39 +- .../Middleware/AddExceptionInformation.php | 24 + .../src/Middleware/AddGitInformation.php | 25 +- .../src/Middleware/AddJobInformation.php | 26 + .../src/Middleware/CustomizeGrouping.php | 27 - .../src/Middleware/SetNotifierName.php | 2 +- .../src/QueryRecorder/QueryRecorder.php | 49 +- .../DefaultDbNameSolutionProvider.php | 27 +- ...rectValetDbCredentialsSolutionProvider.php | 4 +- .../InvalidRouteActionSolutionProvider.php | 4 +- .../LazyLoadingViolationSolutionProvider.php | 41 + .../MergeConflictSolutionProvider.php | 7 +- .../MissingColumnSolutionProvider.php | 2 +- ...ssingLivewireComponentSolutionProvider.php | 42 + .../MissingMixManifestSolutionProvider.php | 24 + .../RouteNotDefinedSolutionProvider.php | 2 +- .../TableNotFoundSolutionProvider.php | 2 +- ...ndefinedLivewireMethodSolutionProvider.php | 48 + ...efinedLivewirePropertySolutionProvider.php | 49 + .../UndefinedPropertySolutionProvider.php | 98 + .../UndefinedVariableSolutionProvider.php | 49 +- .../ViewNotFoundSolutionProvider.php | 9 +- .../Solutions/LivewireDiscoverSolution.php | 53 + .../MakeViewVariableOptionalSolution.php | 9 +- .../src/Solutions/MissingPackageSolution.php | 2 +- .../src/Solutions/SolutionTransformer.php | 12 +- .../SuggestCorrectVariableNameSolution.php | 5 +- .../SuggestLivewireMethodNameSolution.php | 44 + .../SuggestLivewirePropertyNameSolution.php | 44 + .../ignition/src/Support/ComposerClassMap.php | 38 +- .../ignition/src/Support/LaravelVersion.php | 11 + .../src/Support/LivewireComponentParser.php | 97 + .../src/Support/Packagist/Packagist.php | 2 +- .../ignition/src/Support/SentReports.php | 57 + vendor/facade/ignition/src/Tabs/Tab.php | 2 +- .../Compilers/BladeSourceMapCompiler.php | 29 +- .../src/Views/Engines/CompilerEngine.php | 18 +- .../ignition/src/Views/Engines/PhpEngine.php | 7 +- vendor/facade/ignition/src/helpers.php | 4 +- vendor/facade/ignition/tailwind.config.js | 114 - vendor/facade/ignition/tsconfig.json | 23 - vendor/facade/ignition/webpack.config.js | 50 - vendor/fruitcake/laravel-cors/.editorconfig | 15 + vendor/fruitcake/laravel-cors/LICENSE | 21 + vendor/fruitcake/laravel-cors/changelog.md | 43 + vendor/fruitcake/laravel-cors/composer.json | 54 + vendor/fruitcake/laravel-cors/config/cors.php | 60 + vendor/fruitcake/laravel-cors/readme.md | 174 + .../laravel-cors/src/CorsServiceProvider.php | 115 + .../fruitcake/laravel-cors/src/HandleCors.php | 145 + vendor/guzzlehttp/guzzle/.php_cs | 23 - vendor/guzzlehttp/guzzle/CHANGELOG.md | 205 +- vendor/guzzlehttp/guzzle/Dockerfile | 18 - vendor/guzzlehttp/guzzle/README.md | 43 +- vendor/guzzlehttp/guzzle/UPGRADING.md | 56 +- vendor/guzzlehttp/guzzle/composer.json | 37 +- .../guzzlehttp/guzzle/src/BodySummarizer.php | 28 + .../guzzle/src/BodySummarizerInterface.php | 13 + vendor/guzzlehttp/guzzle/src/Client.php | 236 +- .../guzzlehttp/guzzle/src/ClientInterface.php | 23 +- vendor/guzzlehttp/guzzle/src/ClientTrait.php | 241 ++ .../guzzle/src/Cookie/CookieJar.php | 130 +- .../guzzle/src/Cookie/CookieJarInterface.php | 23 +- .../guzzle/src/Cookie/FileCookieJar.php | 46 +- .../guzzle/src/Cookie/SessionCookieJar.php | 35 +- .../guzzle/src/Cookie/SetCookie.php | 232 +- .../src/Exception/BadResponseException.php | 30 +- .../guzzle/src/Exception/ClientException.php | 1 + .../guzzle/src/Exception/ConnectException.php | 39 +- .../guzzle/src/Exception/GuzzleException.php | 22 +- .../guzzle/src/Exception/RequestException.php | 108 +- .../guzzle/src/Exception/SeekException.php | 27 - .../guzzle/src/Exception/ServerException.php | 1 + .../Exception/TooManyRedirectsException.php | 1 + .../src/Exception/TransferException.php | 1 + .../guzzle/src/Handler/CurlFactory.php | 412 +- .../src/Handler/CurlFactoryInterface.php | 8 +- .../guzzle/src/Handler/CurlHandler.php | 26 +- .../guzzle/src/Handler/CurlMultiHandler.php | 145 +- .../guzzle/src/Handler/EasyHandle.php | 80 +- .../guzzle/src/Handler/HeaderProcessor.php | 42 + .../guzzle/src/Handler/MockHandler.php | 140 +- .../guzzlehttp/guzzle/src/Handler/Proxy.php | 40 +- .../guzzle/src/Handler/StreamHandler.php | 416 +- vendor/guzzlehttp/guzzle/src/HandlerStack.php | 142 +- .../guzzle/src/MessageFormatter.php | 87 +- .../guzzle/src/MessageFormatterInterface.php | 18 + vendor/guzzlehttp/guzzle/src/Middleware.php | 116 +- vendor/guzzlehttp/guzzle/src/Pool.php | 63 +- .../guzzle/src/PrepareBodyMiddleware.php | 33 +- .../guzzle/src/RedirectMiddleware.php | 116 +- .../guzzlehttp/guzzle/src/RequestOptions.php | 63 +- .../guzzlehttp/guzzle/src/RetryMiddleware.php | 84 +- .../guzzlehttp/guzzle/src/TransferStats.php | 55 +- vendor/guzzlehttp/guzzle/src/UriTemplate.php | 237 -- vendor/guzzlehttp/guzzle/src/Utils.php | 365 +- vendor/guzzlehttp/guzzle/src/functions.php | 275 +- .../guzzle/src/functions_include.php | 2 +- vendor/guzzlehttp/psr7/.github/FUNDING.yml | 2 - vendor/guzzlehttp/psr7/.github/stale.yml | 14 - .../guzzlehttp/psr7/.github/workflows/ci.yml | 34 - .../psr7/.github/workflows/integration.yml | 37 - .../psr7/.github/workflows/static.yml | 29 - vendor/guzzlehttp/psr7/.php_cs.dist | 56 - vendor/guzzlehttp/psr7/CHANGELOG.md | 92 +- vendor/guzzlehttp/psr7/README.md | 42 +- vendor/guzzlehttp/psr7/composer.json | 48 +- vendor/guzzlehttp/psr7/src/AppendStream.php | 64 +- vendor/guzzlehttp/psr7/src/BufferStream.php | 49 +- vendor/guzzlehttp/psr7/src/CachingStream.php | 36 +- vendor/guzzlehttp/psr7/src/DroppingStream.php | 14 +- .../src/Exception/MalformedUriException.php | 14 + vendor/guzzlehttp/psr7/src/FnStream.php | 79 +- vendor/guzzlehttp/psr7/src/Header.php | 113 +- vendor/guzzlehttp/psr7/src/HttpFactory.php | 100 + vendor/guzzlehttp/psr7/src/InflateStream.php | 47 +- vendor/guzzlehttp/psr7/src/LazyOpenStream.php | 15 +- vendor/guzzlehttp/psr7/src/LimitStream.php | 36 +- vendor/guzzlehttp/psr7/src/Message.php | 38 +- vendor/guzzlehttp/psr7/src/MessageTrait.php | 60 +- vendor/guzzlehttp/psr7/src/MimeType.php | 1335 ++++++- .../guzzlehttp/psr7/src/MultipartStream.php | 49 +- vendor/guzzlehttp/psr7/src/NoSeekStream.php | 13 +- vendor/guzzlehttp/psr7/src/PumpStream.php | 75 +- vendor/guzzlehttp/psr7/src/Query.php | 24 +- vendor/guzzlehttp/psr7/src/Request.php | 31 +- vendor/guzzlehttp/psr7/src/Response.php | 43 +- vendor/guzzlehttp/psr7/src/Rfc7230.php | 12 +- vendor/guzzlehttp/psr7/src/ServerRequest.php | 97 +- vendor/guzzlehttp/psr7/src/Stream.php | 86 +- .../psr7/src/StreamDecoratorTrait.php | 63 +- vendor/guzzlehttp/psr7/src/StreamWrapper.php | 44 +- vendor/guzzlehttp/psr7/src/UploadedFile.php | 181 +- vendor/guzzlehttp/psr7/src/Uri.php | 302 +- vendor/guzzlehttp/psr7/src/UriComparator.php | 11 +- vendor/guzzlehttp/psr7/src/UriNormalizer.php | 41 +- vendor/guzzlehttp/psr7/src/UriResolver.php | 25 +- vendor/guzzlehttp/psr7/src/Utils.php | 131 +- vendor/guzzlehttp/psr7/src/functions.php | 422 -- .../guzzlehttp/psr7/src/functions_include.php | 6 - vendor/laravel/framework/composer.json | 53 +- .../Auth/Access/AuthorizationException.php | 5 +- .../src/Illuminate/Auth/Access/Gate.php | 4 + .../src/Illuminate/Auth/GuardHelpers.php | 2 +- .../Auth/Middleware/Authenticate.php | 3 +- .../Auth/Notifications/ResetPassword.php | 29 +- .../Auth/Passwords/PasswordBroker.php | 3 +- .../Passwords/TokenRepositoryInterface.php | 8 + .../src/Illuminate/Auth/SessionGuard.php | 5 +- .../src/Illuminate/Auth/composer.json | 16 +- .../Broadcasting/BroadcastManager.php | 7 +- .../Broadcasting/Broadcasters/Broadcaster.php | 2 +- .../src/Illuminate/Broadcasting/composer.json | 10 +- .../src/Illuminate/Bus/Queueable.php | 38 +- .../src/Illuminate/Bus/composer.json | 11 +- .../src/Illuminate/Cache/ArrayLock.php | 2 +- .../src/Illuminate/Cache/ArrayStore.php | 34 +- .../src/Illuminate/Cache/CacheManager.php | 47 +- .../src/Illuminate/Cache/DatabaseLock.php | 139 + .../src/Illuminate/Cache/DatabaseStore.php | 91 +- .../src/Illuminate/Cache/DynamoDbStore.php | 10 - .../framework/src/Illuminate/Cache/Lock.php | 24 +- .../src/Illuminate/Cache/RateLimiter.php | 25 - .../src/Illuminate/Cache/composer.json | 14 +- .../src/Illuminate/Config/composer.json | 6 +- .../src/Illuminate/Console/Application.php | 2 +- .../src/Illuminate/Console/Command.php | 6 +- .../Console/Concerns/InteractsWithIO.php | 6 +- .../Console/DetectsApplicationNamespace.php | 21 - .../Console/Events/ScheduledTaskFailed.php | 35 + .../Illuminate/Console/GeneratorCommand.php | 131 +- .../Console/Scheduling/CacheAware.php | 14 + .../Console/Scheduling/CacheEventMutex.php | 2 +- .../Scheduling/CacheSchedulingMutex.php | 2 +- .../Illuminate/Console/Scheduling/Event.php | 70 +- .../Console/Scheduling/ManagesFrequencies.php | 94 +- .../Console/Scheduling/Schedule.php | 4 +- .../Console/Scheduling/ScheduleRunCommand.php | 32 +- .../src/Illuminate/Console/composer.json | 18 +- .../src/Illuminate/Container/Container.php | 69 +- .../Container/ContextualBindingBuilder.php | 17 +- .../src/Illuminate/Container/composer.json | 7 +- .../Contracts/Auth/Access/Authorizable.php | 4 +- .../Auth/Middleware/AuthenticatesRequests.php | 8 + .../Contracts/Auth/StatefulGuard.php | 2 +- .../Contracts/Broadcasting/Factory.php | 2 +- .../src/Illuminate/Contracts/Cache/Lock.php | 2 +- .../Contracts/Database/Eloquent/Castable.php | 13 + .../Database/Eloquent/CastsAttributes.php | 28 + .../Eloquent/CastsInboundAttributes.php | 17 + .../Contracts/Debug/ExceptionHandler.php | 22 +- .../Contracts/Foundation/Application.php | 86 +- .../Foundation/CachesConfiguration.php | 27 + .../Contracts/Foundation/CachesRoutes.php | 20 + .../src/Illuminate/Contracts/Mail/Factory.php | 14 + .../Illuminate/Contracts/Mail/Mailable.php | 47 +- .../src/Illuminate/Contracts/Queue/Job.php | 14 + .../src/Illuminate/Contracts/Queue/Queue.php | 2 +- .../Contracts/Routing/Registrar.php | 14 +- .../Contracts/Routing/ResponseFactory.php | 8 +- .../Contracts/Routing/UrlRoutable.php | 13 +- .../Support/DeferringDisplayableValue.php | 13 + .../Contracts/Validation/Validator.php | 4 + .../src/Illuminate/Contracts/composer.json | 2 +- .../src/Illuminate/Cookie/CookieJar.php | 16 +- .../src/Illuminate/Cookie/composer.json | 10 +- .../Database/Concerns/BuildsQueries.php | 2 +- .../Database/Concerns/ManagesTransactions.php | 55 +- .../src/Illuminate/Database/Connection.php | 8 +- .../Database/Connectors/ConnectionFactory.php | 10 +- .../Database/Connectors/MySqlConnector.php | 31 +- .../Database/Connectors/PostgresConnector.php | 18 + .../Connectors/SqlServerConnector.php | 4 + .../Console/Factories/FactoryMakeCommand.php | 34 +- .../Console/Factories/stubs/factory.stub | 4 +- .../Console/Migrations/FreshCommand.php | 6 +- .../Console/Migrations/MigrateCommand.php | 40 +- .../Console/Migrations/RefreshCommand.php | 6 +- .../Console/Migrations/ResetCommand.php | 26 +- .../Console/Migrations/RollbackCommand.php | 20 +- .../Console/Migrations/StatusCommand.php | 28 +- .../Database/Console/Seeds/SeedCommand.php | 12 +- .../Console/Seeds/SeederMakeCommand.php | 15 +- .../Database/Console/Seeds/stubs/seeder.stub | 2 +- .../Database/Console/WipeCommand.php | 6 +- .../Illuminate/Database/DatabaseManager.php | 18 + .../Database/DetectsConcurrencyErrors.php | 6 +- .../Database/DetectsLostConnections.php | 7 - .../Illuminate/Database/Eloquent/Builder.php | 65 +- .../Database/Eloquent/Collection.php | 75 +- .../Eloquent/Concerns/GuardsAttributes.php | 26 + .../Eloquent/Concerns/HasAttributes.php | 404 +- .../Eloquent/Concerns/HasRelationships.php | 37 +- .../Eloquent/Concerns/HidesAttributes.php | 74 +- .../Concerns/QueriesRelationships.php | 18 +- .../Illuminate/Database/Eloquent/Factory.php | 67 +- .../Database/Eloquent/FactoryBuilder.php | 19 +- .../Eloquent/HigherOrderBuilderProxy.php | 1 + .../Eloquent/JsonEncodingException.php | 14 + .../Illuminate/Database/Eloquent/Model.php | 140 +- .../Database/Eloquent/Relations/BelongsTo.php | 6 +- .../Eloquent/Relations/BelongsToMany.php | 133 +- .../Eloquent/Relations/Concerns/AsPivot.php | 2 + .../Concerns/InteractsWithPivotTable.php | 34 +- .../Eloquent/Relations/HasManyThrough.php | 25 +- .../Eloquent/Relations/HasOneOrMany.php | 17 + .../Database/Eloquent/Relations/MorphTo.php | 27 +- .../Database/Eloquent/Relations/Relation.php | 2 +- .../Database/Eloquent/SoftDeletes.php | 15 +- .../Database/MigrationServiceProvider.php | 2 +- .../Database/Migrations/MigrationCreator.php | 40 +- .../Database/Migrations/Migrator.php | 26 +- .../Database/Migrations/stubs/blank.stub | 28 - .../Database/Migrations/stubs/create.stub | 31 - .../Migrations/stubs/migration.create.stub | 31 + .../Database/Migrations/stubs/migration.stub | 28 + .../Migrations/stubs/migration.update.stub | 32 + .../Database/Migrations/stubs/update.stub | 32 - .../Illuminate/Database/MySqlConnection.php | 7 - .../Database/PostgresConnection.php | 34 +- .../src/Illuminate/Database/Query/Builder.php | 263 +- .../Database/Query/Grammars/Grammar.php | 23 +- .../Database/Query/Grammars/MySqlGrammar.php | 37 + .../Query/Grammars/SqlServerGrammar.php | 26 +- .../Illuminate/Database/QueryException.php | 9 +- .../Illuminate/Database/SQLiteConnection.php | 7 - .../Illuminate/Database/Schema/Blueprint.php | 121 +- .../Database/Schema/ColumnDefinition.php | 41 +- .../Schema/ForeignIdColumnDefinition.php | 52 + .../Database/Schema/ForeignKeyDefinition.php | 36 +- .../Database/Schema/Grammars/ChangeColumn.php | 11 +- .../Database/Schema/Grammars/MySqlGrammar.php | 4 +- .../Database/Schema/Grammars/RenameColumn.php | 8 +- .../Schema/Grammars/SQLiteGrammar.php | 2 +- .../Schema/Grammars/SqlServerGrammar.php | 8 +- .../Database/SqlServerConnection.php | 16 +- .../src/Illuminate/Database/composer.json | 19 +- .../src/Illuminate/Encryption/Encrypter.php | 2 +- .../src/Illuminate/Encryption/composer.json | 6 +- .../Illuminate/Events/CallQueuedListener.php | 2 +- .../src/Illuminate/Events/Dispatcher.php | 29 +- .../src/Illuminate/Events/composer.json | 8 +- .../src/Illuminate/Filesystem/Filesystem.php | 27 +- .../Filesystem/FilesystemAdapter.php | 10 +- .../Filesystem/FilesystemServiceProvider.php | 12 +- .../src/Illuminate/Filesystem/composer.json | 12 +- .../src/Illuminate/Foundation/AliasLoader.php | 6 +- .../src/Illuminate/Foundation/Application.php | 85 +- .../Foundation/Auth/RegistersUsers.php | 62 - .../Foundation/Auth/VerifiesEmails.php | 71 - .../Foundation/Bootstrap/HandleExceptions.php | 30 +- .../Bootstrap/LoadEnvironmentVariables.php | 4 +- .../Foundation/Bus/Dispatchable.php | 27 + .../Foundation/Bus/PendingChain.php | 25 +- .../Foundation/Bus/PendingDispatch.php | 25 +- .../Foundation/Console/CastMakeCommand.php | 50 + .../Foundation/Console/ClosureCommand.php | 4 +- .../Console/ComponentMakeCommand.php | 144 + .../Foundation/Console/ConsoleMakeCommand.php | 8 +- .../Foundation/Console/EventMakeCommand.php | 3 +- .../Foundation/Console/JobMakeCommand.php | 17 +- .../Illuminate/Foundation/Console/Kernel.php | 18 +- .../Foundation/Console/MailMakeCommand.php | 4 +- .../Foundation/Console/ModelMakeCommand.php | 19 +- .../Console/NotificationMakeCommand.php | 4 +- .../Foundation/Console/PolicyMakeCommand.php | 72 +- .../Foundation/Console/PresetCommand.php | 96 - .../Foundation/Console/Presets/Bootstrap.php | 44 - .../Foundation/Console/Presets/None.php | 72 - .../Console/Presets/bootstrap-stubs/app.scss | 13 - .../Console/Presets/none-stubs/app.js | 7 - .../Console/Presets/none-stubs/bootstrap.js | 42 - .../Console/Presets/none-stubs/webpack.mix.js | 15 - .../Console/Presets/react-stubs/Example.js | 24 - .../Presets/react-stubs/webpack.mix.js | 15 - .../Console/Presets/vue-stubs/webpack.mix.js | 15 - .../Foundation/Console/RequestMakeCommand.php | 15 +- .../Console/ResourceMakeCommand.php | 17 +- .../Foundation/Console/RouteCacheCommand.php | 2 +- .../Foundation/Console/RouteListCommand.php | 6 +- .../Foundation/Console/RuleMakeCommand.php | 6 +- .../Foundation/Console/StorageLinkCommand.php | 53 +- .../Foundation/Console/StubPublishCommand.php | 73 + .../Foundation/Console/TestMakeCommand.php | 19 +- .../Foundation/Console/stubs/cast.stub | 36 + .../Foundation/Console/stubs/console.stub | 10 +- .../Foundation/Console/stubs/job-queued.stub | 34 - .../Foundation/Console/stubs/job.queued.stub | 34 + .../Foundation/Console/stubs/job.stub | 4 +- .../Foundation/Console/stubs/model.pivot.stub | 10 + .../Foundation/Console/stubs/model.stub | 4 +- .../Foundation/Console/stubs/pivot.model.stub | 10 - .../Console/stubs/policy.plain.stub | 6 +- .../Foundation/Console/stubs/policy.stub | 60 +- .../Foundation/Console/stubs/request.stub | 4 +- .../Console/stubs/resource-collection.stub | 4 +- .../Foundation/Console/stubs/resource.stub | 4 +- .../Foundation/Console/stubs/routes.stub | 4 +- .../Foundation/Console/stubs/rule.stub | 4 +- .../Foundation/Console/stubs/test.stub | 4 +- .../Foundation/Console/stubs/test.unit.stub | 18 + .../Foundation/Console/stubs/unit-test.stub | 18 - .../Console/stubs/view-component.stub | 28 + .../Foundation/Events/Dispatchable.php | 26 + .../Foundation/Exceptions/Handler.php | 87 +- .../Foundation/Exceptions/WhoopsHandler.php | 2 +- .../Exceptions/MaintenanceModeException.php | 6 +- .../src/Illuminate/Foundation/Http/Kernel.php | 19 +- .../src/Illuminate/Foundation/Inspiring.php | 37 +- .../Illuminate/Foundation/PackageManifest.php | 4 +- .../Providers/ArtisanServiceProvider.php | 56 +- .../Providers/FoundationServiceProvider.php | 2 + .../Illuminate/Foundation/Testing/Assert.php | 148 - .../Testing/Concerns/InteractsWithConsole.php | 29 +- .../Concerns/InteractsWithDatabase.php | 22 +- .../InteractsWithExceptionHandling.php | 22 +- .../Testing/Concerns/MakesHttpRequests.php | 89 +- .../Testing/Constraints/ArraySubset.php | 279 -- .../Foundation/Testing/PendingCommand.php | 225 -- .../Foundation/Testing/RefreshDatabase.php | 30 +- .../Foundation/Testing/TestCase.php | 2 + .../src/Illuminate/Foundation/helpers.php | 29 +- .../src/Illuminate/Hashing/composer.json | 6 +- .../Http/Client/ConnectionException.php | 8 + .../src/Illuminate/Http/Client/Factory.php | 285 ++ .../Http/Client/HttpClientException.php | 10 + .../Illuminate/Http/Client/PendingRequest.php | 775 ++++ .../src/Illuminate/Http/Client/Request.php | 305 ++ .../Http/Client/RequestException.php | 26 + .../src/Illuminate/Http/Client/Response.php | 285 ++ .../Http/Client/ResponseSequence.php | 153 + .../Http/Concerns/InteractsWithInput.php | 51 + .../Http/Exceptions/PostTooLargeException.php | 6 +- .../Exceptions/ThrottleRequestsException.php | 6 +- .../src/Illuminate/Http/RedirectResponse.php | 22 + .../framework/src/Illuminate/Http/Request.php | 6 +- .../ConditionallyLoadsAttributes.php | 17 + .../Http/Resources/DelegatesToResource.php | 18 +- .../Http/Resources/Json/JsonResource.php | 20 + .../Json/PaginatedResourceResponse.php | 2 +- .../Http/Resources/Json/Resource.php | 8 - .../src/Illuminate/Http/Response.php | 24 +- .../src/Illuminate/Http/ResponseTrait.php | 8 +- .../src/Illuminate/Http/Testing/MimeType.php | 814 +--- .../src/Illuminate/Http/UploadedFile.php | 2 +- .../src/Illuminate/Http/composer.json | 14 +- .../src/Illuminate/Log/LogServiceProvider.php | 4 +- .../framework/src/Illuminate/Log/Logger.php | 4 +- .../src/Illuminate/Log/composer.json | 8 +- .../src/Illuminate/Mail/MailManager.php | 468 +++ .../Illuminate/Mail/MailServiceProvider.php | 85 +- .../src/Illuminate/Mail/Mailable.php | 62 +- .../framework/src/Illuminate/Mail/Mailer.php | 43 +- .../src/Illuminate/Mail/PendingMail.php | 2 +- .../Illuminate/Mail/SendQueuedMailable.php | 10 +- .../src/Illuminate/Mail/TransportManager.php | 218 - .../src/Illuminate/Mail/composer.json | 10 +- .../resources/views/html/button.blade.php | 2 +- .../resources/views/html/header.blade.php | 6 +- .../resources/views/html/promotion.blade.php | 7 - .../views/html/promotion/button.blade.php | 13 - .../resources/views/html/themes/default.css | 173 +- .../resources/views/text/promotion.blade.php | 1 - .../views/text/promotion/button.blade.php | 1 - .../Notifications/Channels/MailChannel.php | 13 +- .../Notifications/Messages/SimpleMessage.php | 20 + .../Notifications/NotificationSender.php | 8 +- .../Notifications/SendQueuedNotifications.php | 26 +- .../Illuminate/Notifications/composer.json | 20 +- .../Pagination/AbstractPaginator.php | 57 + .../Pagination/LengthAwarePaginator.php | 2 +- .../Pagination/PaginationServiceProvider.php | 4 + .../src/Illuminate/Pagination/UrlWindow.php | 18 +- .../src/Illuminate/Pagination/composer.json | 6 +- .../resources/views/simple-tailwind.blade.php | 25 + .../resources/views/tailwind.blade.php | 102 + .../src/Illuminate/Pipeline/Pipeline.php | 16 +- .../src/Illuminate/Pipeline/composer.json | 7 +- .../Illuminate/Queue/CallQueuedHandler.php | 4 +- .../Queue/Connectors/SqsConnector.php | 2 +- .../Queue/Console/ListFailedCommand.php | 2 +- .../Illuminate/Queue/Console/RetryCommand.php | 29 +- .../src/Illuminate/Queue/DatabaseQueue.php | 4 +- .../Queue/Events/JobExceptionOccurred.php | 4 +- .../src/Illuminate/Queue/Events/JobFailed.php | 4 +- .../Failed/DatabaseFailedJobProvider.php | 2 +- .../Failed/DynamoDbFailedJobProvider.php | 2 +- .../Failed/FailedJobProviderInterface.php | 2 +- .../Queue/Failed/NullFailedJobProvider.php | 2 +- .../Illuminate/Queue/InteractsWithQueue.php | 2 +- .../src/Illuminate/Queue/Jobs/Job.php | 20 + .../src/Illuminate/Queue/Jobs/RedisJob.php | 2 +- .../framework/src/Illuminate/Queue/Queue.php | 12 +- .../src/Illuminate/Queue/QueueManager.php | 2 +- .../Illuminate/Queue/QueueServiceProvider.php | 16 +- .../Illuminate/Queue/SerializableClosure.php | 4 +- .../src/Illuminate/Queue/SqsQueue.php | 15 +- .../src/Illuminate/Queue/SyncQueue.php | 18 +- .../framework/src/Illuminate/Queue/Worker.php | 74 +- .../src/Illuminate/Queue/composer.json | 22 +- .../Redis/Connections/PhpRedisConnection.php | 45 +- .../Redis/Connectors/PhpRedisConnector.php | 6 +- .../Redis/Limiters/DurationLimiterBuilder.php | 2 +- .../src/Illuminate/Redis/RedisManager.php | 2 +- .../src/Illuminate/Redis/composer.json | 6 +- .../Routing/AbstractRouteCollection.php | 249 ++ .../Routing/CompiledRouteCollection.php | 329 ++ .../Routing/Console/ControllerMakeCommand.php | 27 +- .../Routing/Console/MiddlewareMakeCommand.php | 15 +- .../Routing/Console/stubs/controller.api.stub | 6 +- .../Console/stubs/controller.invokable.stub | 6 +- .../Console/stubs/controller.model.api.stub | 20 +- .../Console/stubs/controller.model.stub | 24 +- .../Console/stubs/controller.nested.api.stub | 36 +- .../Console/stubs/controller.nested.stub | 46 +- .../Console/stubs/controller.plain.stub | 6 +- .../Routing/Console/stubs/controller.stub | 6 +- .../Routing/Console/stubs/middleware.stub | 4 +- .../Routing/ImplicitRouteBinding.php | 10 +- .../Routing/Matching/UriValidator.php | 2 +- .../Routing/PendingResourceRegistration.php | 42 + .../src/Illuminate/Routing/Pipeline.php | 8 +- .../src/Illuminate/Routing/Redirector.php | 30 + .../Illuminate/Routing/ResourceRegistrar.php | 36 +- .../Illuminate/Routing/ResponseFactory.php | 4 +- .../src/Illuminate/Routing/Route.php | 269 +- .../Illuminate/Routing/RouteCollection.php | 147 +- .../Routing/RouteCollectionInterface.php | 98 + .../src/Illuminate/Routing/RouteCompiler.php | 54 - .../Routing/RouteDependencyResolverTrait.php | 19 +- .../src/Illuminate/Routing/RouteGroup.php | 14 +- .../Routing/RouteParameterBinder.php | 3 - .../src/Illuminate/Routing/RouteRegistrar.php | 13 + .../src/Illuminate/Routing/RouteUri.php | 62 + .../src/Illuminate/Routing/Router.php | 133 +- .../Routing/RoutingServiceProvider.php | 17 +- .../Illuminate/Routing/SortedMiddleware.php | 46 +- .../src/Illuminate/Routing/UrlGenerator.php | 64 +- .../src/Illuminate/Routing/composer.json | 25 +- .../Session/ArraySessionHandler.php | 124 + .../Session/Console/stubs/database.stub | 2 +- .../Session/Middleware/StartSession.php | 82 +- .../src/Illuminate/Session/SessionManager.php | 34 +- .../Session/SessionServiceProvider.php | 7 +- .../src/Illuminate/Session/Store.php | 2 +- .../src/Illuminate/Session/composer.json | 14 +- .../framework/src/Illuminate/Support/Arr.php | 10 +- .../src/Illuminate/Support/Collection.php | 96 +- .../Support/ConfigurationUrlParser.php | 4 +- .../src/Illuminate/Support/Enumerable.php | 32 +- .../framework/src/Illuminate/Support/Env.php | 59 +- .../src/Illuminate/Support/Facades/App.php | 47 +- .../Illuminate/Support/Facades/Artisan.php | 6 +- .../src/Illuminate/Support/Facades/Auth.php | 43 +- .../src/Illuminate/Support/Facades/Blade.php | 30 +- .../Illuminate/Support/Facades/Broadcast.php | 4 +- .../src/Illuminate/Support/Facades/Bus.php | 23 +- .../src/Illuminate/Support/Facades/Cache.php | 19 +- .../src/Illuminate/Support/Facades/Config.php | 4 +- .../src/Illuminate/Support/Facades/Cookie.php | 4 +- .../src/Illuminate/Support/Facades/Crypt.php | 6 +- .../src/Illuminate/Support/Facades/DB.php | 34 +- .../src/Illuminate/Support/Facades/Date.php | 66 +- .../src/Illuminate/Support/Facades/Event.php | 22 +- .../src/Illuminate/Support/Facades/File.php | 58 +- .../src/Illuminate/Support/Facades/Gate.php | 30 +- .../src/Illuminate/Support/Facades/Hash.php | 2 +- .../src/Illuminate/Support/Facades/Http.php | 54 + .../src/Illuminate/Support/Facades/Lang.php | 1 + .../src/Illuminate/Support/Facades/Log.php | 18 +- .../src/Illuminate/Support/Facades/Mail.php | 24 +- .../Support/Facades/Notification.php | 16 +- .../Illuminate/Support/Facades/Password.php | 7 +- .../src/Illuminate/Support/Facades/Queue.php | 12 +- .../Illuminate/Support/Facades/Redirect.php | 20 +- .../Illuminate/Support/Facades/Request.php | 146 +- .../Illuminate/Support/Facades/Response.php | 18 +- .../src/Illuminate/Support/Facades/Route.php | 47 +- .../src/Illuminate/Support/Facades/Schema.php | 10 +- .../Illuminate/Support/Facades/Session.php | 30 +- .../Illuminate/Support/Facades/Storage.php | 39 +- .../src/Illuminate/Support/Facades/URL.php | 12 +- .../src/Illuminate/Support/Facades/View.php | 9 +- .../Support/HigherOrderWhenProxy.php | 63 + .../src/Illuminate/Support/HtmlString.php | 12 +- .../src/Illuminate/Support/LazyCollection.php | 124 +- .../src/Illuminate/Support/Manager.php | 2 +- .../src/Illuminate/Support/MessageBag.php | 21 +- .../Illuminate/Support/ServiceProvider.php | 29 +- .../framework/src/Illuminate/Support/Str.php | 293 +- .../src/Illuminate/Support/Stringable.php | 731 ++++ .../Support/Testing/Fakes/BusFake.php | 66 +- .../Support/Testing/Fakes/EventFake.php | 27 +- .../Support/Testing/Fakes/MailFake.php | 71 +- .../Testing/Fakes/NotificationFake.php | 26 +- .../Support/Testing/Fakes/PendingMailFake.php | 6 +- .../Support/Testing/Fakes/QueueFake.php | 32 +- .../Support/Traits/EnumeratesValues.php | 138 +- .../Support/Traits/ReflectsClosures.php | 55 + .../src/Illuminate/Support/composer.json | 17 +- .../src/Illuminate/Support/helpers.php | 21 +- .../src/Illuminate/Testing/Assert.php | 88 + .../Testing/Constraints/ArraySubset.php | 279 ++ .../Testing/Constraints/CountInDatabase.php | 83 + .../Testing/Constraints/HasInDatabase.php | 2 +- .../Testing/Constraints/SeeInOrder.php | 2 +- .../Constraints/SoftDeletedInDatabase.php | 2 +- .../src/Illuminate/Testing/LICENSE.md | 21 + .../src/Illuminate/Testing/PendingCommand.php | 348 ++ .../{Foundation => }/Testing/TestResponse.php | 87 +- .../src/Illuminate/Testing/composer.json | 43 + .../src/Illuminate/Translation/composer.json | 8 +- .../Concerns/FilterEmailValidation.php | 32 +- .../Validation/Concerns/FormatsMessages.php | 6 +- .../Concerns/ValidatesAttributes.php | 131 +- .../Validation/DatabasePresenceVerifier.php | 4 +- .../DatabasePresenceVerifierInterface.php | 14 + .../src/Illuminate/Validation/Rule.php | 2 +- .../Validation/Rules/DatabaseRule.php | 10 +- .../Validation/Rules/RequiredIf.php | 8 +- .../Validation/ValidationRuleParser.php | 2 +- .../src/Illuminate/Validation/Validator.php | 157 +- .../src/Illuminate/Validation/composer.json | 15 +- .../Illuminate/View/AnonymousComponent.php | 55 + .../View/Compilers/BladeCompiler.php | 147 +- .../View/Compilers/ComponentTagCompiler.php | 488 +++ .../Compilers/Concerns/CompilesComponents.php | 109 +- .../Concerns/CompilesConditionals.php | 76 + .../View/Compilers/Concerns/CompilesEchos.php | 2 +- .../Concerns/CompilesTranslations.php | 2 +- .../src/Illuminate/View/Component.php | 279 ++ .../Illuminate/View/ComponentAttributeBag.php | 308 ++ .../View/Concerns/ManagesComponents.php | 25 +- .../View/Concerns/ManagesLayouts.php | 11 + .../View/Engines/CompilerEngine.php | 16 +- .../src/Illuminate/View/Engines/PhpEngine.php | 12 +- .../framework/src/Illuminate/View/Factory.php | 34 +- .../View/InvokableComponentVariable.php | 95 + .../framework/src/Illuminate/View/View.php | 22 +- .../src/Illuminate/View/ViewName.php | 2 +- .../Illuminate/View/ViewServiceProvider.php | 6 +- .../src/Illuminate/View/composer.json | 13 +- vendor/laravel/tinker/.styleci.yml | 4 - vendor/laravel/tinker/README.md | 28 +- vendor/laravel/tinker/composer.json | 29 +- vendor/laravel/tinker/config/tinker.php | 17 +- .../tinker/src/ClassAliasAutoloader.php | 83 +- .../tinker/src/Console/TinkerCommand.php | 71 +- vendor/laravel/tinker/src/TinkerCaster.php | 50 +- .../tinker/src/TinkerServiceProvider.php | 16 +- vendor/laravel/ui/CHANGELOG.md | 125 + vendor/laravel/ui/LICENSE.md | 21 + vendor/laravel/ui/README.md | 33 + .../auth-backend}/AuthenticatesUsers.php | 24 +- .../auth-backend}/ConfirmsPasswords.php | 7 +- .../auth-backend}/RedirectsUsers.php | 0 .../ui/auth-backend/RegistersUsers.php | 68 + .../auth-backend}/ResetsPasswords.php | 12 + .../SendsPasswordResetEmails.php | 18 +- .../auth-backend}/ThrottlesLogins.php | 0 .../ui/auth-backend/VerifiesEmails.php | 95 + vendor/laravel/ui/composer.json | 36 + .../src/Auth/bootstrap-stubs/auth/login.stub | 73 + .../auth/passwords/confirm.stub | 49 + .../bootstrap-stubs/auth/passwords/email.stub | 47 + .../bootstrap-stubs/auth/passwords/reset.stub | 65 + .../Auth/bootstrap-stubs/auth/register.stub | 77 + .../src/Auth/bootstrap-stubs/auth/verify.stub | 28 + .../ui/src/Auth/bootstrap-stubs/home.stub | 23 + .../src/Auth/bootstrap-stubs/layouts/app.stub | 80 + .../stubs/controllers/HomeController.stub | 28 + vendor/laravel/ui/src/Auth/stubs/routes.stub | 4 + vendor/laravel/ui/src/AuthCommand.php | 164 + vendor/laravel/ui/src/AuthRouteMethods.php | 92 + vendor/laravel/ui/src/ControllersCommand.php | 49 + vendor/laravel/ui/src/Presets/Bootstrap.php | 72 + .../Console => ui/src}/Presets/Preset.php | 5 +- .../Console => ui/src}/Presets/React.php | 2 +- .../Console => ui/src}/Presets/Vue.php | 10 +- .../Presets/bootstrap-stubs/_variables.scss | 0 .../ui/src/Presets/bootstrap-stubs/app.scss | 8 + .../src/Presets/bootstrap-stubs/bootstrap.js | 41 + .../Presets/bootstrap-stubs/webpack.mix.js | 15 + .../ui/src/Presets/react-stubs/Example.js | 24 + .../src}/Presets/react-stubs/app.js | 0 .../ui/src/Presets/react-stubs/webpack.mix.js | 15 + .../Presets/vue-stubs/ExampleComponent.vue | 0 .../src}/Presets/vue-stubs/app.js | 0 .../ui/src/Presets/vue-stubs/webpack.mix.js | 15 + vendor/laravel/ui/src/UiCommand.php | 91 + vendor/laravel/ui/src/UiServiceProvider.php | 35 + .../stubs/Auth/ConfirmPasswordController.stub | 40 + .../stubs/Auth/ForgotPasswordController.stub | 22 + .../ui/stubs/Auth/LoginController.stub | 40 + .../ui/stubs/Auth/RegisterController.stub | 73 + .../stubs/Auth/ResetPasswordController.stub | 30 + .../ui/stubs/Auth/VerificationController.stub | 42 + ...12_100000_create_password_resets_table.php | 32 + .../nunomaduro/collision/.github/FUNDING.yml | 5 + .../collision/.github/workflows/tests.yml | 38 - vendor/nunomaduro/collision/.php_cs | 29 + vendor/nunomaduro/collision/README.md | 36 +- vendor/nunomaduro/collision/composer.json | 34 +- vendor/nunomaduro/collision/phpstan.neon.dist | 19 + vendor/nunomaduro/collision/phpunit.xml.dist | 2 +- .../Laravel/CollisionServiceProvider.php | 44 +- .../Adapters/Laravel/Commands/TestCommand.php | 143 + .../src/Adapters/Laravel/ExceptionHandler.php | 18 +- .../Laravel/IgnitionSolutionsRepository.php | 49 + .../src/Adapters/Phpunit/ConfigureIO.php | 38 + .../src/Adapters/Phpunit/Listener.php | 177 - .../src/Adapters/Phpunit/Printer.php | 56 + .../src/Adapters/Phpunit/PrinterContents.php | 224 ++ .../collision/src/Adapters/Phpunit/State.php | 194 + .../collision/src/Adapters/Phpunit/Style.php | 239 ++ .../src/Adapters/Phpunit/TestResult.php | 156 + .../collision/src/Adapters/Phpunit/Timer.php | 47 + .../collision/src/ArgumentFormatter.php | 6 +- .../nunomaduro/collision/src/ConsoleColor.php | 310 ++ .../Phpunit/HasPrintableTestCaseName.php | 23 + .../Contracts/Adapters/Phpunit/Listener.php | 5 +- .../src/Contracts/ArgumentFormatter.php | 5 - .../collision/src/Contracts/Handler.php | 4 +- .../collision/src/Contracts/Highlighter.php | 5 - .../src/Contracts/SolutionsRepository.php | 30 + .../collision/src/Contracts/Writer.php | 21 +- .../src/Exceptions/ShouldNotHappen.php | 27 + vendor/nunomaduro/collision/src/Handler.php | 10 +- .../nunomaduro/collision/src/Highlighter.php | 250 +- vendor/nunomaduro/collision/src/Provider.php | 11 +- .../NullSolutionsRepository.php | 31 + vendor/nunomaduro/collision/src/Writer.php | 188 +- vendor/paragonie/random_compat/LICENSE | 22 - vendor/paragonie/random_compat/build-phar.sh | 5 - vendor/paragonie/random_compat/composer.json | 34 - .../dist/random_compat.phar.pubkey | 5 - .../dist/random_compat.phar.pubkey.asc | 11 - vendor/paragonie/random_compat/lib/random.php | 32 - .../random_compat/other/build_phar.php | 57 - .../random_compat/psalm-autoload.php | 9 - vendor/paragonie/random_compat/psalm.xml | 19 - .../php-console-color/CHANGELOG.md | 23 - .../php-console-color/LICENSE | 27 - .../php-console-color/README.md | 10 - .../php-console-color/composer.json | 26 - .../php-console-color/example.php | 38 - .../php-console-color/src/ConsoleColor.php | 287 -- .../src/InvalidStyleException.php | 10 - .../php-console-highlighter/CHANGELOG.md | 24 - .../php-console-highlighter/LICENSE | 21 - .../php-console-highlighter/README.md | 36 - .../php-console-highlighter/composer.json | 31 - .../src/Highlighter.php | 263 -- vendor/phpspec/phpspec/.gitattributes | 4 - vendor/phpspec/phpspec/.gitignore | 6 - vendor/phpspec/phpspec/.scrutinizer.yml | 26 - vendor/phpspec/phpspec/.travis.yml | 54 - vendor/phpspec/phpspec/CHANGES-v2.md | 211 - vendor/phpspec/phpspec/CHANGES-v3.md | 85 - vendor/phpspec/phpspec/CHANGES-v4.md | 84 - vendor/phpspec/phpspec/CHANGES-v5.md | 33 - vendor/phpspec/phpspec/CHANGES.md | 1 - vendor/phpspec/phpspec/CONTRIBUTING.md | 25 - vendor/phpspec/phpspec/README.rst | 6 +- vendor/phpspec/phpspec/appveyor.yml | 63 - vendor/phpspec/phpspec/behat.yml.dist | 15 - vendor/phpspec/phpspec/bin/phpspec | 2 +- vendor/phpspec/phpspec/box.json | 19 - vendor/phpspec/phpspec/check-release.php | 49 - vendor/phpspec/phpspec/composer.json | 28 +- .../features/bootstrap/ApplicationContext.php | 473 --- .../features/bootstrap/Fake/Prompter.php | 50 - .../features/bootstrap/Fake/ReRunner.php | 28 - .../features/bootstrap/FilesystemContext.php | 169 - .../bootstrap/IsolatedProcessContext.php | 136 - .../bootstrap/autoloader/autoload.php | 8 - .../bootstrap/autoloader/fake_autoload.php | 21 - .../developer_generates_class.feature | 167 - .../developer_generates_collaborator.feature | 121 - ...erates_collaborator_from_use_group.feature | 132 - ...oper_generates_collaborator_method.feature | 213 - .../developer_generates_method.feature | 422 -- ...eloper_generates_named_constructor.feature | 516 --- ...eveloper_generates_return_constant.feature | 323 -- .../developer_generates_spec.feature | 194 - .../developer_reruns_features.feature | 62 - ..._can_use_composer_to_create_suites.feature | 59 - ...eloper_can_use_config_dir_in_paths.feature | 104 - .../developer_adds_extensions.feature | 102 - ...oper_specifies_object_construction.feature | 436 -- .../developer_defines_supporting_spec.feature | 46 - .../developer_is_shown_a_parse_error.feature | 81 - .../developer_is_shown_runtime_errors.feature | 87 - .../developer_specifies_exceptions.feature | 48 - ..._bootstrap_config_key_in_any_place.feature | 61 - .../developer_uses_extension.feature | 247 -- .../developer_is_shown_diffs.feature | 647 --- .../formatter/use_the_junit_formatter.feature | 68 - .../formatter/use_the_tap_formatter.feature | 88 - ...upported_collaborator_type_hinting.feature | 126 - ...veloper_uses_approximately_matcher.feature | 42 - ...veloper_uses_array_contain_matcher.feature | 41 - ...developer_uses_array_count_matcher.feature | 41 - .../developer_uses_array_key_matcher.feature | 44 - ...loper_uses_array_key_value_matcher.feature | 41 - .../developer_uses_comparison_matcher.feature | 41 - .../developer_uses_custom_matcher.feature | 99 - .../developer_uses_identity_matcher.feature | 448 --- .../developer_uses_inline_matcher.feature | 161 - .../developer_uses_iterate_as_matcher.feature | 40 - ...eveloper_uses_iterate_like_matcher.feature | 39 - ...eveloper_uses_object_state_matcher.feature | 78 - .../developer_uses_scalar_matcher.feature | 53 - ...er_uses_start_iterating_as_matcher.feature | 41 - ...eloper_uses_string_contain_matcher.feature | 41 - .../developer_uses_string_end_matcher.feature | 41 - ...eveloper_uses_string_regex_matcher.feature | 41 - ...eveloper_uses_string_start_matcher.feature | 41 - .../developer_uses_throw_matcher.feature | 256 -- ...r_uses_traversable_contain_matcher.feature | 40 - ...per_uses_traversable_count_matcher.feature | 42 - ...loper_uses_traversable_key_matcher.feature | 40 - ...uses_traversable_key_value_matcher.feature | 40 - .../developer_uses_trigger_matcher.feature | 119 - .../developer_uses_type_matcher.feature | 145 - ...veloper_chooses_no_code_generation.feature | 81 - .../developer_chooses_stop_on_failure.feature | 144 - .../developer_chooses_verbose_output.feature | 183 - ...eloper_is_told_about_pending_specs.feature | 124 - .../runner/developer_runs_specs.feature | 204 - ...eveloper_runs_specs_with_bootstrap.feature | 31 - ...eveloper_runs_specs_with_spec_path.feature | 52 - .../runner/developer_skips_specs.feature | 42 - .../PhpSpec/Console/Prompter/QuestionTest.php | 70 - .../PhpSpec/Loader/StreamWrapperTest.php | 36 - .../PhpSpec/Loader/examples/ExampleSpec.php | 13 - vendor/phpspec/phpspec/phpunit.xml | 10 - .../MagicAwareAccessInspectorSpec.php | 98 - .../StaticRejectingNamespaceResolverSpec.php | 44 - .../TokenizedNamespaceResolverSpec.php | 128 - .../TokenizedTypeHintRewriterSpec.php | 258 -- .../VisibilityAccessInspectorSpec.php | 80 - .../Generator/ClassGeneratorSpec.php | 143 - .../Generator/ConfirmingGeneratorSpec.php | 57 - .../Generator/MethodGeneratorSpec.php | 82 - .../NamedConstructorGeneratorSpec.php | 85 - .../NewFileNotifyingGeneratorSpec.php | 119 - .../Generator/OneTimeGeneratorSpec.php | 54 - .../Generator/ReturnConstantGeneratorSpec.php | 38 - .../Generator/SpecificationGeneratorSpec.php | 129 - ...ateClassNameSpecificationGeneratorSpec.php | 75 - .../CodeGenerator/GeneratorManagerSpec.php | 46 - .../CodeGenerator/TemplateRendererSpec.php | 98 - .../Writer/TokenizedCodeWriterSpec.php | 289 -- .../spec/PhpSpec/Config/OptionsConfigSpec.php | 65 - .../spec/PhpSpec/Console/ApplicationSpec.php | 19 - .../spec/PhpSpec/Console/ConsoleIOSpec.php | 283 -- .../NamespacesAutocompleteProviderSpec.php | 49 - .../PhpSpec/Console/ResultConverterSpec.php | 35 - .../spec/PhpSpec/Event/ExampleEventSpec.php | 72 - .../PhpSpec/Event/ExpectationEventSpec.php | 87 - .../PhpSpec/Event/FileCreationEventSpec.php | 31 - .../PhpSpec/Event/MethodCallEventSpec.php | 66 - .../PhpSpec/Event/SpecificationEventSpec.php | 59 - .../spec/PhpSpec/Event/SuiteEventSpec.php | 70 - .../PhpSpec/Exception/ErrorExceptionSpec.php | 41 - .../Example/NotEqualExceptionSpec.php | 28 - .../Example/StopOnFailureExceptionSpec.php | 25 - .../Exception/ExceptionFactorySpec.php | 173 - .../spec/PhpSpec/Exception/ExceptionSpec.php | 21 - .../Fracture/ClassNotFoundExceptionSpec.php | 23 - .../InterfaceNotImplementedExceptionSpec.php | 28 - .../Fracture/MethodNotFoundExceptionSpec.php | 33 - .../MethodNotVisibleExceptionSpec.php | 34 - .../NamedConstructorNotFoundExceptionSpec.php | 34 - .../PropertyNotFoundExceptionSpec.php | 28 - .../InvalidCollaboratorTypeExceptionSpec.php | 40 - .../PhpSpec/Formatter/BasicFormatterSpec.php | 43 - .../PhpSpec/Formatter/DotFormatterSpec.php | 205 - .../PhpSpec/Formatter/Html/HtmlIOSpec.php | 16 - .../Formatter/Html/ReportFailedItemSpec.php | 45 - .../Formatter/Html/ReportItemFactorySpec.php | 42 - .../Formatter/Html/ReportPassedItemSpec.php | 29 - .../Formatter/Html/ReportPendingItemSpec.php | 30 - .../PhpSpec/Formatter/Html/TemplateSpec.php | 57 - .../PhpSpec/Formatter/HtmlFormatterSpec.php | 37 - .../PhpSpec/Formatter/JUnitFormatterSpec.php | 226 -- .../Presenter/Differ/ArrayEngineSpec.php | 53 - .../Formatter/Presenter/Differ/DifferSpec.php | 41 - .../Presenter/Differ/ObjectEngineSpec.php | 43 - .../Presenter/Differ/StringEngineSpec.php | 47 - .../Exception/CallArgumentsPresenterSpec.php | 65 - .../GenericPhpSpecExceptionPresenterSpec.php | 20 - .../HtmlPhpSpecExceptionPresenterSpec.php | 14 - .../SimpleExceptionElementPresenterSpec.php | 79 - .../SimpleExceptionPresenterSpec.php | 30 - .../TaggingExceptionElementPresenterSpec.php | 67 - .../Presenter/SimplePresenterSpec.php | 53 - .../Presenter/TaggingPresenterSpec.php | 38 - .../Value/ArrayTypePresenterSpec.php | 29 - .../Value/BaseExceptionTypePresenterSpec.php | 32 - .../Value/BooleanTypePresenterSpec.php | 30 - .../Value/CallableTypePresenterSpec.php | 113 - .../Value/ComposedValuePresenterSpec.php | 93 - .../Presenter/Value/NullTypePresenterSpec.php | 24 - .../Value/ObjectTypePresenterSpec.php | 24 - .../Value/QuotingStringTypePresenterSpec.php | 26 - .../TruncatingStringTypePresenterSpec.php | 47 - .../Formatter/ProgressFormatterSpec.php | 114 - .../PhpSpec/Formatter/TapFormatterSpec.php | 148 - .../Listener/ClassNotFoundListenerSpec.php | 92 - ...CollaboratorMethodNotFoundListenerSpec.php | 205 - .../CollaboratorNotFoundListenerSpec.php | 134 - .../Listener/CurrentExampleListenerSpec.php | 57 - .../Listener/MethodNotFoundListenerSpec.php | 126 - .../MethodReturnedNullListenerSpec.php | 232 -- .../NamedConstructorNotFoundListenerSpec.php | 89 - .../PhpSpec/Listener/RerunListenerSpec.php | 41 - .../Listener/StatisticsCollectorSpec.php | 113 - .../Listener/StopOnFailureListenerSpec.php | 67 - .../PhpSpec/Loader/Node/ExampleNodeSpec.php | 82 - .../Loader/Node/SpecificationNodeSpec.php | 64 - .../phpspec/spec/PhpSpec/Loader/SuiteSpec.php | 36 - .../Transformer/InMemoryTypeHintIndexSpec.php | 43 - .../Transformer/TypeHintRewriterSpec.php | 28 - .../PhpSpec/Locator/PSR0/PSR0LocatorSpec.php | 556 --- .../PhpSpec/Locator/PSR0/PSR0ResourceSpec.php | 119 - .../PrioritizedResourceManagerSpec.php | 117 - .../Matcher/ApproximatelyMatcherSpec.php | 44 - .../Matcher/ArrayContainMatcherSpec.php | 46 - .../PhpSpec/Matcher/ArrayCountMatcherSpec.php | 70 - .../PhpSpec/Matcher/ArrayKeyMatcherSpec.php | 72 - .../Matcher/ArrayKeyValueMatcherSpec.php | 112 - .../PhpSpec/Matcher/CallbackMatcherSpec.php | 48 - .../PhpSpec/Matcher/ComparisonMatcherSpec.php | 106 - .../PhpSpec/Matcher/IdentityMatcherSpec.php | 121 - .../Matcher/Iterate/IterablesMatcherSpec.php | 145 - ...ubjectElementDoesNotMatchExceptionSpec.php | 24 - .../SubjectHasFewerElementsExceptionSpec.php | 19 - .../SubjectHasMoreElementsExceptionSpec.php | 19 - .../PhpSpec/Matcher/IterateAsMatcherSpec.php | 156 - .../Matcher/IterateLikeMatcherSpec.php | 90 - .../Matcher/ObjectStateMatcherSpec.php | 119 - .../PhpSpec/Matcher/ScalarMatcherSpec.php | 470 --- .../Matcher/StartIteratingAsMatcherSpec.php | 161 - .../Matcher/StringContainMatcherSpec.php | 73 - .../PhpSpec/Matcher/StringEndMatcherSpec.php | 53 - .../Matcher/StringRegexMatcherSpec.php | 53 - .../Matcher/StringStartMatcherSpec.php | 53 - .../spec/PhpSpec/Matcher/ThrowMatcherSpec.php | 77 - .../Matcher/TraversableContainMatcherSpec.php | 72 - .../Matcher/TraversableCountMatcherSpec.php | 105 - .../Matcher/TraversableKeyMatcherSpec.php | 72 - .../TraversableKeyValueMatcherSpec.php | 82 - .../PhpSpec/Matcher/TriggerMatcherSpec.php | 47 - .../spec/PhpSpec/Matcher/TypeMatcherSpec.php | 79 - .../Message/CurrentExampleTrackerSpec.php | 26 - .../ComposerPsrNamespaceProviderSpec.php | 52 - .../Context/JsonExecutionContextSpec.php | 38 - .../Prerequisites/SuitePrerequisitesSpec.php | 29 - .../ReRunner/CompositeReRunnerSpec.php | 57 - .../Process/ReRunner/OptionalReRunnerSpec.php | 34 - .../Process/ReRunner/PcntlReRunnerSpec.php | 28 - .../Process/ReRunner/ProcOpenReRunnerSpec.php | 39 - .../ReRunner/WindowsPassthruRerunnerSpec.php | 39 - .../PhpSpec/Process/Shutdown/ShutdownSpec.php | 22 - .../Shutdown/UpdateConsoleActionSpec.php | 26 - .../Runner/CollaboratorManagerSpec.php | 68 - .../spec/PhpSpec/Runner/ExampleRunnerSpec.php | 149 - .../Runner/Maintainer/ErrorMaintainerSpec.php | 39 - .../Maintainer/MatchersMaintainerSpec.php | 25 - .../PhpSpec/Runner/MatcherManagerSpec.php | 48 - .../Runner/SpecificationRunnerSpec.php | 67 - .../spec/PhpSpec/Runner/SuiteRunnerSpec.php | 104 - .../IndexedServiceContainerSpec.php | 110 - .../Specification/ErrorSpecificationSpec.php | 15 - .../PhpSpec/Util/ClassFileAnalyserSpec.php | 96 - .../PhpSpec/Util/ClassNameCheckerSpec.php | 42 - .../PhpSpec/Util/ExampleObjectUsingTrait.php | 8 - .../spec/PhpSpec/Util/ExampleTrait.php | 18 - .../spec/PhpSpec/Util/InstantiatorSpec.php | 53 - .../spec/PhpSpec/Util/MethodAnalyserSpec.php | 90 - .../ReservedWordsMethodNameCheckerSpec.php | 23 - .../PhpSpec/Wrapper/Subject/CallerSpec.php | 278 -- .../Expectation/ConstructorDecoratorSpec.php | 37 - .../Subject/Expectation/DecoratorSpec.php | 39 - .../Expectation/DispatcherDecoratorSpec.php | 65 - .../Subject/Expectation/NegativeSpec.php | 27 - .../Subject/Expectation/PositiveSpec.php | 25 - .../Subject/ExpectationFactorySpec.php | 82 - .../Wrapper/Subject/WrappedObjectSpec.php | 101 - .../spec/PhpSpec/Wrapper/SubjectSpec.php | 64 - .../DisallowedUnionTypehintException.php | 18 + .../MagicAwareAccessInspector.php | 4 +- .../TokenizedNamespaceResolver.php | 4 +- .../TokenizedTypeHintRewriter.php | 60 +- .../PhpSpec/CodeAnalysis/TypeHintRewriter.php | 6 +- .../Generator/ClassGenerator.php | 8 +- .../Generator/ConfirmingGenerator.php | 6 +- .../Generator/ExistingConstructorTemplate.php | 8 +- .../Generator/MethodGenerator.php | 12 +- .../Generator/MethodSignatureGenerator.php | 6 +- .../Generator/NamedConstructorGenerator.php | 12 +- .../Generator/NewFileNotifyingGenerator.php | 11 +- .../Generator/OneTimeGenerator.php | 4 +- .../Generator/PrivateConstructorGenerator.php | 12 +- .../Generator/PromptingGenerator.php | 19 +- .../Generator/ReturnConstantGenerator.php | 11 +- .../Generator/SpecificationGenerator.php | 10 +- .../CodeGenerator/GeneratorManager.php | 5 +- .../CodeGenerator/TemplateRenderer.php | 8 +- .../Writer/TokenizedCodeWriter.php | 14 +- .../src/PhpSpec/Config/OptionsConfig.php | 18 +- .../src/PhpSpec/Console/Application.php | 19 +- .../Console/Command/DescribeCommand.php | 21 +- .../PhpSpec/Console/Command/RunCommand.php | 22 +- .../phpspec/src/PhpSpec/Console/ConsoleIO.php | 9 +- .../PhpSpec/Console/ContainerAssembler.php | 67 +- .../phpspec/src/PhpSpec/Console/Formatter.php | 8 +- .../src/PhpSpec/Console/Prompter/Question.php | 6 +- .../src/PhpSpec/Console/ResultConverter.php | 4 - .../phpspec/src/PhpSpec/Event/BaseEvent.php | 18 + .../src/PhpSpec/Event/ExampleEvent.php | 44 +- .../src/PhpSpec/Event/ExpectationEvent.php | 48 +- .../src/PhpSpec/Event/FileCreationEvent.php | 8 +- .../src/PhpSpec/Event/MethodCallEvent.php | 42 +- .../src/PhpSpec/Event/ResourceEvent.php | 39 + .../src/PhpSpec/Event/SpecificationEvent.php | 31 +- .../phpspec/src/PhpSpec/Event/SuiteEvent.php | 29 +- .../Exception/Example/ErrorException.php | 6 +- .../Example/MethodFailureException.php | 50 + .../Exception/Example/NotEqualException.php | 26 +- .../Exception/Example/PendingException.php | 4 +- .../Exception/Example/SkippingException.php | 4 +- .../Example/StopOnFailureException.php | 2 +- .../src/PhpSpec/Exception/Exception.php | 8 +- .../PhpSpec/Exception/ExceptionFactory.php | 55 +- .../Fracture/ClassNotFoundException.php | 9 +- .../CollaboratorNotFoundException.php | 14 +- .../InterfaceNotImplementedException.php | 14 +- .../Fracture/MethodInvocationException.php | 19 +- .../Fracture/PropertyNotFoundException.php | 14 +- .../Exception/Generator/GenerationFailed.php | 7 + .../InvalidCollaboratorTypeException.php | 14 +- .../Wrapper/MatcherNotFoundException.php | 23 +- .../phpspec/phpspec/src/PhpSpec/Extension.php | 5 +- .../src/PhpSpec/Factory/ObjectFactory.php | 58 + .../src/PhpSpec/Factory/ReflectionFactory.php | 1 - .../src/PhpSpec/Formatter/BasicFormatter.php | 40 +- .../PhpSpec/Formatter/ConsoleFormatter.php | 30 +- .../src/PhpSpec/Formatter/DotFormatter.php | 28 +- .../src/PhpSpec/Formatter/Html/HtmlIO.php | 10 +- .../Formatter/Html/ReportFailedItem.php | 14 +- .../src/PhpSpec/Formatter/Html/ReportItem.php | 4 +- .../Formatter/Html/ReportItemFactory.php | 25 +- .../Formatter/Html/ReportPassedItem.php | 5 +- .../Formatter/Html/ReportPendingItem.php | 5 +- .../Formatter/Html/ReportSkippedItem.php | 5 +- .../src/PhpSpec/Formatter/Html/Template.php | 15 +- .../src/PhpSpec/Formatter/HtmlFormatter.php | 30 +- .../src/PhpSpec/Formatter/JUnitFormatter.php | 12 - .../src/PhpSpec/Formatter/JsonFormatter.php | 81 + .../Presenter/Differ/ArrayEngine.php | 2 +- .../Presenter/Differ/DifferEngine.php | 14 +- .../Presenter/Differ/ObjectEngine.php | 14 +- .../AbstractPhpSpecExceptionPresenter.php | 20 +- .../Exception/CallArgumentsPresenter.php | 33 +- .../Exception/ExceptionElementPresenter.php | 35 +- .../Exception/ExceptionPresenter.php | 6 +- .../GenericPhpSpecExceptionPresenter.php | 14 +- .../HtmlPhpSpecExceptionPresenter.php | 10 +- .../Exception/PhpSpecExceptionPresenter.php | 5 +- .../SimpleExceptionElementPresenter.php | 45 +- .../Exception/SimpleExceptionPresenter.php | 83 +- .../TaggingExceptionElementPresenter.php | 45 +- .../PhpSpec/Formatter/Presenter/Presenter.php | 6 +- .../Formatter/Presenter/SimplePresenter.php | 24 +- .../Formatter/Presenter/TaggingPresenter.php | 21 +- .../Presenter/Value/ArrayTypePresenter.php | 14 +- .../Value/BaseExceptionTypePresenter.php | 26 +- .../Presenter/Value/BooleanTypePresenter.php | 14 +- .../Presenter/Value/CallableTypePresenter.php | 18 +- .../Value/ComposedValuePresenter.php | 9 +- .../Presenter/Value/NullTypePresenter.php | 14 +- .../Presenter/Value/ObjectTypePresenter.php | 14 +- .../Value/QuotingStringTypePresenter.php | 14 +- .../Value/TruncatingStringTypePresenter.php | 14 +- .../Presenter/Value/TypePresenter.php | 14 +- .../Presenter/Value/ValuePresenter.php | 5 +- .../PhpSpec/Formatter/ProgressFormatter.php | 39 +- .../src/PhpSpec/Formatter/TapFormatter.php | 33 +- .../PhpSpec/Formatter/TeamCityFormatter.php | 280 ++ .../src/PhpSpec/Formatter/Template.php | 5 +- vendor/phpspec/phpspec/src/PhpSpec/IO/IO.php | 2 +- .../Listener/ClassNotFoundListener.php | 18 +- .../CollaboratorMethodNotFoundListener.php | 51 +- .../Listener/CollaboratorNotFoundListener.php | 24 +- .../Listener/MethodNotFoundListener.php | 7 +- .../Listener/MethodReturnedNullListener.php | 31 +- .../src/PhpSpec/Listener/RerunListener.php | 13 +- .../PhpSpec/Listener/StatisticsCollector.php | 31 +- .../Listener/StopOnFailureListener.php | 10 +- .../src/PhpSpec/Loader/Node/ExampleNode.php | 37 +- .../PhpSpec/Loader/Node/SpecificationNode.php | 32 +- .../src/PhpSpec/Loader/ResourceLoader.php | 39 +- .../src/PhpSpec/Loader/StreamWrapper.php | 7 + .../phpspec/src/PhpSpec/Loader/Suite.php | 8 +- .../Transformer/InMemoryTypeHintIndex.php | 29 +- .../Loader/Transformer/TypeHintIndex.php | 20 +- .../Loader/Transformer/TypeHintRewriter.php | 10 +- .../src/PhpSpec/Locator/PSR0/PSR0Locator.php | 88 +- .../src/PhpSpec/Locator/PSR0/PSR0Resource.php | 37 +- .../Locator/PrioritizedResourceManager.php | 16 +- .../phpspec/src/PhpSpec/Locator/Resource.php | 32 +- .../src/PhpSpec/Locator/ResourceLocator.php | 22 +- .../src/PhpSpec/Locator/ResourceManager.php | 8 +- .../src/PhpSpec/Locator/SrcPathLocator.php | 4 +- .../PhpSpec/Matcher/ApproximatelyMatcher.php | 56 +- .../PhpSpec/Matcher/ArrayContainMatcher.php | 35 +- .../src/PhpSpec/Matcher/ArrayCountMatcher.php | 41 +- .../src/PhpSpec/Matcher/ArrayKeyMatcher.php | 35 +- .../PhpSpec/Matcher/ArrayKeyValueMatcher.php | 43 +- .../src/PhpSpec/Matcher/BasicMatcher.php | 39 +- .../src/PhpSpec/Matcher/CallbackMatcher.php | 37 +- .../src/PhpSpec/Matcher/ComparisonMatcher.php | 31 +- .../src/PhpSpec/Matcher/IdentityMatcher.php | 35 +- .../Matcher/Iterate/IterablesMatcher.php | 13 +- .../SubjectElementDoesNotMatchException.php | 8 +- .../src/PhpSpec/Matcher/IterateAsMatcher.php | 4 +- .../PhpSpec/Matcher/IterateLikeMatcher.php | 4 +- .../phpspec/src/PhpSpec/Matcher/Matcher.php | 16 - .../src/PhpSpec/Matcher/MatchersProvider.php | 4 +- .../PhpSpec/Matcher/ObjectStateMatcher.php | 47 +- .../src/PhpSpec/Matcher/ScalarMatcher.php | 29 +- .../Matcher/StartIteratingAsMatcher.php | 4 +- .../PhpSpec/Matcher/StringContainMatcher.php | 4 +- .../src/PhpSpec/Matcher/StringEndMatcher.php | 35 +- .../PhpSpec/Matcher/StringRegexMatcher.php | 35 +- .../PhpSpec/Matcher/StringStartMatcher.php | 35 +- .../src/PhpSpec/Matcher/ThrowMatcher.php | 75 +- .../Matcher/TraversableContainMatcher.php | 12 +- .../Matcher/TraversableCountMatcher.php | 13 +- .../PhpSpec/Matcher/TraversableKeyMatcher.php | 12 +- .../Matcher/TraversableKeyValueMatcher.php | 12 +- .../src/PhpSpec/Matcher/TriggerMatcher.php | 56 +- .../src/PhpSpec/Matcher/TypeMatcher.php | 35 +- .../ComposerPsrNamespaceProvider.php | 16 +- .../phpspec/src/PhpSpec/ObjectBehavior.php | 42 +- .../Process/Context/ExecutionContext.php | 12 +- .../Process/Context/JsonExecutionContext.php | 22 +- .../Prerequisites/SuitePrerequisites.php | 4 +- .../Process/ReRunner/OptionalReRunner.php | 4 +- .../Process/ReRunner/PcntlReRunner.php | 13 +- .../ReRunner/PhpExecutableReRunner.php | 4 +- .../ReRunner/PlatformSpecificReRunner.php | 2 - .../Process/ReRunner/ProcOpenReRunner.php | 5 - .../ReRunner/WindowsPassthruReRunner.php | 5 - .../PhpSpec/Runner/CollaboratorManager.php | 19 +- .../src/PhpSpec/Runner/ExampleRunner.php | 44 +- .../Maintainer/CollaboratorsMaintainer.php | 91 +- .../Runner/Maintainer/ErrorMaintainer.php | 49 +- .../Maintainer/LetAndLetgoMaintainer.php | 24 +- .../PhpSpec/Runner/Maintainer/Maintainer.php | 24 +- .../Runner/Maintainer/MatchersMaintainer.php | 25 +- .../Runner/Maintainer/SubjectMaintainer.php | 35 +- .../src/PhpSpec/Runner/MatcherManager.php | 14 +- .../PhpSpec/Runner/SpecificationRunner.php | 36 +- .../src/PhpSpec/Runner/SuiteRunner.php | 23 +- .../phpspec/src/PhpSpec/ServiceContainer.php | 22 - .../IndexedServiceContainer.php | 28 - .../src/PhpSpec/Util/ClassFileAnalyser.php | 70 +- .../src/PhpSpec/Util/DispatchTrait.php | 38 + .../phpspec/src/PhpSpec/Util/Filesystem.php | 29 +- .../phpspec/src/PhpSpec/Util/Instantiator.php | 2 - .../src/PhpSpec/Util/MethodAnalyser.php | 54 +- .../phpspec/src/PhpSpec/Util/NameChecker.php | 6 +- .../src/PhpSpec/Wrapper/Collaborator.php | 30 +- .../src/PhpSpec/Wrapper/DelayedCall.php | 11 +- .../src/PhpSpec/Wrapper/ObjectWrapper.php | 4 +- .../phpspec/src/PhpSpec/Wrapper/Subject.php | 101 +- .../src/PhpSpec/Wrapper/Subject/Caller.php | 129 +- .../Expectation/ConstructorDecorator.php | 35 +- .../Wrapper/Subject/Expectation/Decorator.php | 16 +- .../Expectation/DispatcherDecorator.php | 43 +- .../Subject/Expectation/DuringCall.php | 43 +- .../Subject/Expectation/Expectation.php | 8 +- .../Wrapper/Subject/Expectation/Negative.php | 12 +- .../Subject/Expectation/NegativeThrow.php | 3 - .../Subject/Expectation/NegativeTrigger.php | 3 - .../Wrapper/Subject/Expectation/Positive.php | 12 +- .../Subject/Expectation/PositiveThrow.php | 3 - .../Subject/Expectation/PositiveTrigger.php | 3 - .../Subject/Expectation/ThrowExpectation.php | 7 +- .../Subject/Expectation/UnwrapDecorator.php | 13 +- .../Wrapper/Subject/ExpectationFactory.php | 56 +- .../Subject/SubjectWithArrayAccess.php | 35 +- .../PhpSpec/Wrapper/Subject/WrappedObject.php | 70 +- .../src/PhpSpec/Wrapper/SubjectContainer.php | 4 +- .../phpspec/src/PhpSpec/Wrapper/Unwrapper.php | 22 +- .../phpspec/src/PhpSpec/Wrapper/Wrapper.php | 12 +- .../phpunit/php-code-coverage/.gitattributes | 3 - .../php-code-coverage/.github/CONTRIBUTING.md | 1 - .../php-code-coverage/.github/FUNDING.yml | 1 - .../.github/ISSUE_TEMPLATE.md | 18 - vendor/phpunit/php-code-coverage/.gitignore | 7 - vendor/phpunit/php-code-coverage/.php_cs.dist | 197 - vendor/phpunit/php-code-coverage/.travis.yml | 60 - vendor/phpunit/php-code-coverage/ChangeLog.md | 430 +- vendor/phpunit/php-code-coverage/LICENSE | 2 +- vendor/phpunit/php-code-coverage/README.md | 38 +- vendor/phpunit/php-code-coverage/build.xml | 30 - .../phpunit/php-code-coverage/composer.json | 29 +- vendor/phpunit/php-code-coverage/phive.xml | 4 - vendor/phpunit/php-code-coverage/phpunit.xml | 21 - .../php-code-coverage/src/CodeCoverage.php | 914 ++--- .../php-code-coverage/src/Driver/Driver.php | 138 +- .../php-code-coverage/src/Driver/PCOV.php | 45 - .../php-code-coverage/src/Driver/PHPDBG.php | 96 - .../src/Driver/PcovDriver.php | 75 + .../src/Driver/PhpdbgDriver.php | 93 + .../php-code-coverage/src/Driver/Selector.php | 79 + .../php-code-coverage/src/Driver/Xdebug.php | 123 - .../src/Driver/Xdebug2Driver.php | 128 + .../src/Driver/Xdebug3Driver.php | 119 + ...chAndPathCoverageNotSupportedException.php | 16 + .../CoveredCodeNotExecutedException.php | 17 - ...DeadCodeDetectionNotSupportedException.php | 16 + .../DirectoryCouldNotBeCreatedException.php | 17 + .../src/Exception/Exception.php | 9 +- .../Exception/InvalidArgumentException.php | 24 +- .../MissingCoversAnnotationException.php | 17 - ...NoCodeCoverageDriverAvailableException.php | 20 + ...hPathCoverageSupportAvailableException.php | 20 + .../src/Exception/ParserException.php | 16 + .../PathExistsButIsNotDirectoryException.php | 22 + .../Exception/PcovNotAvailableException.php | 21 + .../Exception/PhpdbgNotAvailableException.php | 21 + .../src/Exception/ReflectionException.php | 16 + .../ReportAlreadyFinalizedException.php | 20 + .../src/Exception/RuntimeException.php | 14 - ...ticAnalysisCacheNotConfiguredException.php | 16 + .../src/Exception/TestIdMissingException.php | 20 + .../UnintentionallyCoveredCodeException.php | 11 +- .../WriteOperationFailedException.php | 22 + .../Exception/WrongXdebugVersionException.php | 17 + .../Exception/Xdebug2NotEnabledException.php | 21 + .../Exception/Xdebug3NotEnabledException.php | 21 + .../Exception/XdebugNotAvailableException.php | 21 + .../src/Exception/XmlException.php | 16 + .../phpunit/php-code-coverage/src/Filter.php | 154 +- .../src/Node/AbstractNode.php | 301 +- .../php-code-coverage/src/Node/Builder.php | 121 +- .../php-code-coverage/src/Node/CrapIndex.php | 50 + .../php-code-coverage/src/Node/Directory.php | 247 +- .../php-code-coverage/src/Node/File.php | 542 +-- .../php-code-coverage/src/Node/Iterator.php | 17 +- .../src/ProcessedCodeCoverageData.php | 255 ++ .../src/RawCodeCoverageData.php | 274 ++ .../php-code-coverage/src/Report/Clover.php | 131 +- .../src/Report/Cobertura.php | 306 ++ .../php-code-coverage/src/Report/Crap4j.php | 72 +- .../src/Report/Html/Facade.php | 114 +- .../src/Report/Html/Renderer.php | 195 +- .../src/Report/Html/Renderer/Dashboard.php | 105 +- .../src/Report/Html/Renderer/Directory.php | 91 +- .../src/Report/Html/Renderer/File.php | 1165 ++++-- .../Html/Renderer/Template/branches.html.dist | 9 + .../Template/coverage_bar_branch.html.dist | 5 + .../Renderer/Template/css/bootstrap.min.css | 10 +- .../Html/Renderer/Template/css/style.css | 22 +- .../Template/dashboard_branch.html.dist | 281 ++ .../Template/directory_branch.html.dist | 62 + .../Template/directory_item_branch.html.dist | 19 + .../Html/Renderer/Template/file.html.dist | 15 +- .../Renderer/Template/file_branch.html.dist | 67 + .../Renderer/Template/file_item.html.dist | 14 +- .../Template/file_item_branch.html.dist | 20 + .../Renderer/Template/js/bootstrap.min.js | 8 +- .../Html/Renderer/Template/js/jquery.min.js | 4 +- .../Html/Renderer/Template/js/popper.min.js | 4 +- .../Html/Renderer/Template/line.html.dist | 1 + .../Html/Renderer/Template/lines.html.dist | 5 + .../Renderer/Template/method_item.html.dist | 9 +- .../Template/method_item_branch.html.dist | 18 + .../Html/Renderer/Template/paths.html.dist | 9 + .../php-code-coverage/src/Report/PHP.php | 50 +- .../php-code-coverage/src/Report/Text.php | 248 +- .../src/Report/Xml/BuildInformation.php | 27 +- .../src/Report/Xml/Coverage.php | 21 +- .../src/Report/Xml/Directory.php | 5 +- .../src/Report/Xml/Facade.php | 194 +- .../php-code-coverage/src/Report/Xml/File.php | 22 +- .../src/Report/Xml/Method.php | 11 +- .../php-code-coverage/src/Report/Xml/Node.php | 34 +- .../src/Report/Xml/Project.php | 35 +- .../src/Report/Xml/Report.php | 49 +- .../src/Report/Xml/Source.php | 12 +- .../src/Report/Xml/Tests.php | 9 +- .../src/Report/Xml/Totals.php | 36 +- .../php-code-coverage/src/Report/Xml/Unit.php | 33 +- .../src/StaticAnalysis/CacheWarmer.php | 30 + .../StaticAnalysis/CachingFileAnalyser.php | 184 + .../StaticAnalysis/CodeUnitFindingVisitor.php | 326 ++ .../ExecutableLinesFindingVisitor.php | 365 ++ .../src/StaticAnalysis/FileAnalyser.php | 31 + .../IgnoredLinesFindingVisitor.php | 119 + .../StaticAnalysis/ParsingFileAnalyser.php | 253 ++ vendor/phpunit/php-code-coverage/src/Util.php | 40 - .../php-code-coverage/src/Util/Filesystem.php | 37 + .../php-code-coverage/src/Util/Percentage.php | 66 + .../phpunit/php-code-coverage/src/Version.php | 6 +- .../php-code-coverage/tests/TestCase.php | 395 -- .../tests/_files/BankAccount-clover.xml | 26 - .../tests/_files/BankAccount-crap4j.xml | 59 - .../tests/_files/BankAccount-text.txt | 12 - .../tests/_files/BankAccount.php | 33 - .../tests/_files/BankAccountTest.php | 66 - .../_files/CoverageClassExtendedTest.php | 14 - .../tests/_files/CoverageClassTest.php | 14 - .../CoverageFunctionParenthesesTest.php | 13 - ...erageFunctionParenthesesWhitespaceTest.php | 13 - .../tests/_files/CoverageFunctionTest.php | 13 - .../CoverageMethodOneLineAnnotationTest.php | 12 - .../_files/CoverageMethodParenthesesTest.php | 14 - ...overageMethodParenthesesWhitespaceTest.php | 14 - .../tests/_files/CoverageMethodTest.php | 14 - .../tests/_files/CoverageNoneTest.php | 11 - .../tests/_files/CoverageNotPrivateTest.php | 14 - .../tests/_files/CoverageNotProtectedTest.php | 14 - .../tests/_files/CoverageNotPublicTest.php | 14 - .../tests/_files/CoverageNothingTest.php | 15 - .../tests/_files/CoveragePrivateTest.php | 14 - .../tests/_files/CoverageProtectedTest.php | 14 - .../tests/_files/CoveragePublicTest.php | 14 - .../CoverageTwoDefaultClassAnnotations.php | 17 - .../tests/_files/CoveredClass.php | 36 - .../tests/_files/CoveredFunction.php | 4 - .../php-code-coverage/tests/_files/Crash.php | 2 - .../NamespaceCoverageClassExtendedTest.php | 14 - .../_files/NamespaceCoverageClassTest.php | 14 - ...NamespaceCoverageCoversClassPublicTest.php | 17 - .../NamespaceCoverageCoversClassTest.php | 22 - .../_files/NamespaceCoverageMethodTest.php | 14 - .../NamespaceCoverageNotPrivateTest.php | 14 - .../NamespaceCoverageNotProtectedTest.php | 14 - .../_files/NamespaceCoverageNotPublicTest.php | 14 - .../_files/NamespaceCoveragePrivateTest.php | 14 - .../_files/NamespaceCoverageProtectedTest.php | 14 - .../_files/NamespaceCoveragePublicTest.php | 14 - .../tests/_files/NamespaceCoveredClass.php | 38 - .../_files/NotExistingCoveredElementTest.php | 26 - .../BankAccount.php.html | 249 -- .../CoverageForBankAccount/dashboard.html | 287 -- .../HTML/CoverageForBankAccount/index.html | 118 - .../dashboard.html | 285 -- .../index.html | 118 - ...with_class_and_anonymous_function.php.html | 172 - .../dashboard.html | 283 -- .../index.html | 108 - .../source_with_ignore.php.html | 196 - .../BankAccount.php.xml | 262 -- .../XML/CoverageForBankAccount/index.xml | 33 - .../index.xml | 30 - ..._with_class_and_anonymous_function.php.xml | 161 - .../CoverageForFileWithIgnoredLines/index.xml | 30 - .../source_with_ignore.php.xml | 187 - .../class-with-anonymous-function-clover.xml | 21 - .../class-with-anonymous-function-crap4j.xml | 26 - .../class-with-anonymous-function-text.txt | 12 - .../tests/_files/ignored-lines-clover.xml | 17 - .../tests/_files/ignored-lines-crap4j.xml | 37 - .../tests/_files/ignored-lines-text.txt | 10 - ...urce_with_class_and_anonymous_function.php | 19 - .../tests/_files/source_with_ignore.php | 37 - .../tests/_files/source_with_namespace.php | 20 - .../source_with_oneline_annotations.php | 36 - .../_files/source_with_use_statements.php | 23 - .../tests/_files/source_without_ignore.php | 4 - .../tests/_files/source_without_namespace.php | 18 - .../php-code-coverage/tests/bootstrap.php | 7 - .../tests/tests/BuilderTest.php | 246 -- .../tests/tests/CloverTest.php | 48 - .../tests/tests/CodeCoverageTest.php | 359 -- .../tests/tests/Crap4jTest.php | 48 - ...nintentionallyCoveredCodeExceptionTest.php | 51 - .../tests/tests/FilterTest.php | 213 - .../tests/tests/HTMLTest.php | 102 - .../tests/tests/TextTest.php | 48 - .../tests/tests/UtilTest.php | 28 - .../php-code-coverage/tests/tests/XmlTest.php | 97 - .../phpunit/php-file-iterator/.gitattributes | 1 - .../php-file-iterator/.github/stale.yml | 40 - vendor/phpunit/php-file-iterator/.gitignore | 5 - vendor/phpunit/php-file-iterator/.php_cs.dist | 168 - .../php-file-iterator/.psalm/baseline.xml | 8 + .../php-file-iterator/.psalm/config.xml | 16 + vendor/phpunit/php-file-iterator/.travis.yml | 32 - vendor/phpunit/php-file-iterator/ChangeLog.md | 53 +- vendor/phpunit/php-file-iterator/LICENSE | 2 +- .../phpunit/php-file-iterator/composer.json | 14 +- vendor/phpunit/php-file-iterator/phpunit.xml | 21 - .../phpunit/php-file-iterator/src/Facade.php | 43 +- .../phpunit/php-file-iterator/src/Factory.php | 44 +- .../php-file-iterator/src/Iterator.php | 51 +- .../php-file-iterator/tests/FactoryTest.php | 50 - vendor/phpunit/php-invoker/ChangeLog.md | 48 + vendor/phpunit/php-invoker/LICENSE | 33 + vendor/phpunit/php-invoker/README.md | 18 + vendor/phpunit/php-invoker/composer.json | 54 + vendor/phpunit/php-invoker/src/Invoker.php | 69 + .../php-invoker/src/exceptions/Exception.php | 16 + ...cessControlExtensionNotLoadedException.php | 16 + .../src/exceptions/TimeoutException.php | 16 + .../phpunit/php-text-template/.gitattributes | 1 - vendor/phpunit/php-text-template/.gitignore | 5 - .../php-text-template/.psalm/baseline.xml | 2 + .../php-text-template/.psalm/config.xml | 16 + vendor/phpunit/php-text-template/ChangeLog.md | 43 + vendor/phpunit/php-text-template/LICENSE | 4 +- vendor/phpunit/php-text-template/README.md | 12 +- .../phpunit/php-text-template/composer.json | 18 +- .../php-text-template/src/Template.php | 94 +- .../src/exceptions/Exception.php | 16 + .../exceptions/InvalidArgumentException.php | 14 + .../src/exceptions/RuntimeException.php | 16 + vendor/phpunit/php-timer/.gitattributes | 1 - vendor/phpunit/php-timer/.github/FUNDING.yml | 1 - vendor/phpunit/php-timer/.github/stale.yml | 40 - vendor/phpunit/php-timer/.gitignore | 5 - vendor/phpunit/php-timer/.php_cs.dist | 197 - vendor/phpunit/php-timer/.psalm/baseline.xml | 2 + vendor/phpunit/php-timer/.psalm/config.xml | 16 + vendor/phpunit/php-timer/.travis.yml | 23 - vendor/phpunit/php-timer/ChangeLog.md | 111 +- vendor/phpunit/php-timer/LICENSE | 2 +- vendor/phpunit/php-timer/README.md | 83 +- vendor/phpunit/php-timer/build.xml | 20 - vendor/phpunit/php-timer/composer.json | 9 +- vendor/phpunit/php-timer/phpunit.xml | 19 - vendor/phpunit/php-timer/src/Duration.php | 109 + vendor/phpunit/php-timer/src/Exception.php | 14 - .../php-timer/src/ResourceUsageFormatter.php | 73 + .../php-timer/src/RuntimeException.php | 14 - vendor/phpunit/php-timer/src/Timer.php | 92 +- .../php-timer/src/exceptions/Exception.php | 16 + .../src/exceptions/NoActiveTimerException.php | 16 + ...nceStartOfRequestNotAvailableException.php | 16 + vendor/phpunit/php-timer/tests/TimerTest.php | 134 - .../phpunit/php-token-stream/.gitattributes | 12 - vendor/phpunit/php-token-stream/.gitignore | 7 - vendor/phpunit/php-token-stream/ChangeLog.md | 92 - vendor/phpunit/php-token-stream/LICENSE | 33 - vendor/phpunit/php-token-stream/README.md | 18 - vendor/phpunit/php-token-stream/composer.json | 42 - .../phpunit/php-token-stream/src/Abstract.php | 12 - .../php-token-stream/src/Ampersand.php | 12 - .../phpunit/php-token-stream/src/AndEqual.php | 12 - vendor/phpunit/php-token-stream/src/Array.php | 12 - .../php-token-stream/src/ArrayCast.php | 12 - vendor/phpunit/php-token-stream/src/As.php | 12 - vendor/phpunit/php-token-stream/src/At.php | 12 - .../phpunit/php-token-stream/src/Backtick.php | 12 - .../php-token-stream/src/BadCharacter.php | 12 - .../phpunit/php-token-stream/src/BoolCast.php | 12 - .../php-token-stream/src/BooleanAnd.php | 12 - .../php-token-stream/src/BooleanOr.php | 12 - .../php-token-stream/src/CachingFactory.php | 42 - .../phpunit/php-token-stream/src/Callable.php | 12 - vendor/phpunit/php-token-stream/src/Caret.php | 12 - vendor/phpunit/php-token-stream/src/Case.php | 12 - vendor/phpunit/php-token-stream/src/Catch.php | 12 - .../php-token-stream/src/Character.php | 12 - vendor/phpunit/php-token-stream/src/Class.php | 62 - .../phpunit/php-token-stream/src/ClassC.php | 12 - .../src/ClassNameConstant.php | 12 - vendor/phpunit/php-token-stream/src/Clone.php | 12 - .../php-token-stream/src/CloseBracket.php | 12 - .../php-token-stream/src/CloseCurly.php | 12 - .../php-token-stream/src/CloseSquare.php | 12 - .../phpunit/php-token-stream/src/CloseTag.php | 12 - .../phpunit/php-token-stream/src/Coalesce.php | 12 - .../php-token-stream/src/CoalesceEqual.php | 12 - vendor/phpunit/php-token-stream/src/Colon.php | 12 - vendor/phpunit/php-token-stream/src/Comma.php | 12 - .../phpunit/php-token-stream/src/Comment.php | 12 - .../php-token-stream/src/ConcatEqual.php | 12 - vendor/phpunit/php-token-stream/src/Const.php | 12 - .../src/ConstantEncapsedString.php | 12 - .../phpunit/php-token-stream/src/Continue.php | 12 - .../php-token-stream/src/CurlyOpen.php | 12 - .../phpunit/php-token-stream/src/DNumber.php | 12 - vendor/phpunit/php-token-stream/src/Dec.php | 12 - .../phpunit/php-token-stream/src/Declare.php | 12 - .../phpunit/php-token-stream/src/Default.php | 12 - vendor/phpunit/php-token-stream/src/Dir.php | 12 - vendor/phpunit/php-token-stream/src/Div.php | 12 - .../phpunit/php-token-stream/src/DivEqual.php | 12 - vendor/phpunit/php-token-stream/src/Do.php | 12 - .../php-token-stream/src/DocComment.php | 12 - .../phpunit/php-token-stream/src/Dollar.php | 12 - .../src/DollarOpenCurlyBraces.php | 12 - vendor/phpunit/php-token-stream/src/Dot.php | 12 - .../php-token-stream/src/DoubleArrow.php | 12 - .../php-token-stream/src/DoubleCast.php | 12 - .../php-token-stream/src/DoubleColon.php | 12 - .../php-token-stream/src/DoubleQuotes.php | 12 - vendor/phpunit/php-token-stream/src/Echo.php | 12 - .../phpunit/php-token-stream/src/Ellipsis.php | 12 - vendor/phpunit/php-token-stream/src/Else.php | 12 - .../phpunit/php-token-stream/src/Elseif.php | 12 - vendor/phpunit/php-token-stream/src/Empty.php | 12 - .../src/EncapsedAndWhitespace.php | 12 - .../php-token-stream/src/EndHeredoc.php | 12 - .../php-token-stream/src/Enddeclare.php | 12 - .../phpunit/php-token-stream/src/Endfor.php | 12 - .../php-token-stream/src/Endforeach.php | 12 - vendor/phpunit/php-token-stream/src/Endif.php | 12 - .../php-token-stream/src/Endswitch.php | 12 - .../phpunit/php-token-stream/src/Endwhile.php | 12 - vendor/phpunit/php-token-stream/src/Equal.php | 12 - vendor/phpunit/php-token-stream/src/Eval.php | 12 - .../php-token-stream/src/ExclamationMark.php | 12 - vendor/phpunit/php-token-stream/src/Exit.php | 12 - .../phpunit/php-token-stream/src/Extends.php | 12 - vendor/phpunit/php-token-stream/src/File.php | 12 - vendor/phpunit/php-token-stream/src/Final.php | 12 - .../phpunit/php-token-stream/src/Finally.php | 12 - vendor/phpunit/php-token-stream/src/Fn.php | 12 - vendor/phpunit/php-token-stream/src/For.php | 12 - .../phpunit/php-token-stream/src/Foreach.php | 12 - vendor/phpunit/php-token-stream/src/FuncC.php | 12 - .../phpunit/php-token-stream/src/Function.php | 196 - .../phpunit/php-token-stream/src/Global.php | 12 - vendor/phpunit/php-token-stream/src/Goto.php | 12 - vendor/phpunit/php-token-stream/src/Gt.php | 12 - .../php-token-stream/src/HaltCompiler.php | 12 - vendor/phpunit/php-token-stream/src/If.php | 12 - .../php-token-stream/src/Implements.php | 12 - vendor/phpunit/php-token-stream/src/Inc.php | 12 - .../phpunit/php-token-stream/src/Include.php | 12 - .../php-token-stream/src/IncludeOnce.php | 12 - .../phpunit/php-token-stream/src/Includes.php | 57 - .../php-token-stream/src/InlineHtml.php | 12 - .../php-token-stream/src/Instanceof.php | 12 - .../php-token-stream/src/Insteadof.php | 12 - .../phpunit/php-token-stream/src/IntCast.php | 12 - .../php-token-stream/src/Interface.php | 166 - .../phpunit/php-token-stream/src/IsEqual.php | 12 - .../php-token-stream/src/IsGreaterOrEqual.php | 12 - .../php-token-stream/src/IsIdentical.php | 12 - .../php-token-stream/src/IsNotEqual.php | 12 - .../php-token-stream/src/IsNotIdentical.php | 12 - .../php-token-stream/src/IsSmallerOrEqual.php | 12 - vendor/phpunit/php-token-stream/src/Isset.php | 12 - vendor/phpunit/php-token-stream/src/Line.php | 12 - vendor/phpunit/php-token-stream/src/List.php | 12 - .../phpunit/php-token-stream/src/Lnumber.php | 12 - .../php-token-stream/src/LogicalAnd.php | 12 - .../php-token-stream/src/LogicalOr.php | 12 - .../php-token-stream/src/LogicalXor.php | 12 - vendor/phpunit/php-token-stream/src/Lt.php | 12 - .../phpunit/php-token-stream/src/MethodC.php | 12 - vendor/phpunit/php-token-stream/src/Minus.php | 12 - .../php-token-stream/src/MinusEqual.php | 12 - .../phpunit/php-token-stream/src/ModEqual.php | 12 - .../phpunit/php-token-stream/src/MulEqual.php | 12 - vendor/phpunit/php-token-stream/src/Mult.php | 12 - .../src/NameFullyQualified.php | 12 - .../php-token-stream/src/NameQualified.php | 12 - .../php-token-stream/src/NameRelative.php | 12 - .../php-token-stream/src/Namespace.php | 31 - vendor/phpunit/php-token-stream/src/New.php | 12 - vendor/phpunit/php-token-stream/src/NsC.php | 12 - .../php-token-stream/src/NsSeparator.php | 12 - .../php-token-stream/src/NumString.php | 12 - .../php-token-stream/src/ObjectCast.php | 12 - .../php-token-stream/src/ObjectOperator.php | 12 - .../php-token-stream/src/OpenBracket.php | 12 - .../php-token-stream/src/OpenCurly.php | 12 - .../php-token-stream/src/OpenSquare.php | 12 - .../phpunit/php-token-stream/src/OpenTag.php | 12 - .../php-token-stream/src/OpenTagWithEcho.php | 12 - .../phpunit/php-token-stream/src/OrEqual.php | 12 - .../src/PaamayimNekudotayim.php | 12 - .../phpunit/php-token-stream/src/Percent.php | 12 - vendor/phpunit/php-token-stream/src/Pipe.php | 12 - vendor/phpunit/php-token-stream/src/Plus.php | 12 - .../php-token-stream/src/PlusEqual.php | 12 - vendor/phpunit/php-token-stream/src/Pow.php | 12 - .../phpunit/php-token-stream/src/PowEqual.php | 12 - vendor/phpunit/php-token-stream/src/Print.php | 12 - .../phpunit/php-token-stream/src/Private.php | 12 - .../php-token-stream/src/Protected.php | 12 - .../phpunit/php-token-stream/src/Public.php | 12 - .../php-token-stream/src/QuestionMark.php | 12 - .../phpunit/php-token-stream/src/Require.php | 12 - .../php-token-stream/src/RequireOnce.php | 12 - .../phpunit/php-token-stream/src/Return.php | 12 - .../php-token-stream/src/Semicolon.php | 12 - vendor/phpunit/php-token-stream/src/Sl.php | 12 - .../phpunit/php-token-stream/src/SlEqual.php | 12 - .../php-token-stream/src/Spaceship.php | 12 - vendor/phpunit/php-token-stream/src/Sr.php | 12 - .../phpunit/php-token-stream/src/SrEqual.php | 12 - .../php-token-stream/src/StartHeredoc.php | 12 - .../phpunit/php-token-stream/src/Static.php | 12 - .../phpunit/php-token-stream/src/Stream.php | 658 --- .../phpunit/php-token-stream/src/String.php | 12 - .../php-token-stream/src/StringCast.php | 12 - .../php-token-stream/src/StringVarname.php | 12 - .../phpunit/php-token-stream/src/Switch.php | 12 - vendor/phpunit/php-token-stream/src/Throw.php | 12 - vendor/phpunit/php-token-stream/src/Tilde.php | 12 - vendor/phpunit/php-token-stream/src/Token.php | 68 - .../php-token-stream/src/TokenWithScope.php | 107 - .../src/TokenWithScopeAndVisibility.php | 67 - vendor/phpunit/php-token-stream/src/Trait.php | 12 - .../phpunit/php-token-stream/src/TraitC.php | 12 - vendor/phpunit/php-token-stream/src/Try.php | 12 - vendor/phpunit/php-token-stream/src/Unset.php | 12 - .../php-token-stream/src/UnsetCast.php | 12 - vendor/phpunit/php-token-stream/src/Use.php | 12 - .../php-token-stream/src/UseFunction.php | 12 - vendor/phpunit/php-token-stream/src/Util.php | 18 - vendor/phpunit/php-token-stream/src/Var.php | 12 - .../phpunit/php-token-stream/src/Variable.php | 12 - vendor/phpunit/php-token-stream/src/While.php | 12 - .../php-token-stream/src/Whitespace.php | 12 - .../phpunit/php-token-stream/src/XorEqual.php | 12 - vendor/phpunit/php-token-stream/src/Yield.php | 12 - .../php-token-stream/src/YieldFrom.php | 12 - vendor/phpunit/php-token-stream/src/break.php | 12 - vendor/phpunit/phpunit/ChangeLog-9.5.md | 242 ++ vendor/phpunit/phpunit/README.md | 4 +- vendor/phpunit/phpunit/composer.json | 42 +- vendor/phpunit/phpunit/phpunit | 4 +- vendor/phpunit/phpunit/phpunit.xsd | 137 +- vendor/phpunit/phpunit/schema/8.5.xsd | 317 ++ vendor/phpunit/phpunit/schema/9.2.xsd | 317 ++ .../phpunit/phpunit/src/Framework/Assert.php | 1506 ++----- .../src/Framework/Assert/Functions.php | 2041 +++++----- .../src/Framework/Constraint/ArraySubset.php | 135 - .../src/Framework/Constraint/Attribute.php | 80 - .../Constraint/{ => Boolean}/IsFalse.php | 2 +- .../Constraint/{ => Boolean}/IsTrue.php | 2 +- .../src/Framework/Constraint/Callback.php | 4 +- .../Constraint/{ => Cardinality}/Count.php | 20 +- .../{ => Cardinality}/GreaterThan.php | 3 +- .../Constraint/{ => Cardinality}/IsEmpty.php | 2 +- .../Constraint/{ => Cardinality}/LessThan.php | 3 +- .../Constraint/Cardinality/SameSize.php | 21 + .../src/Framework/Constraint/Composite.php | 70 - .../src/Framework/Constraint/Constraint.php | 120 +- .../Framework/Constraint/Equality/IsEqual.php | 138 + .../Equality/IsEqualCanonicalizing.php | 108 + .../Equality/IsEqualIgnoringCase.php | 108 + .../Constraint/Equality/IsEqualWithDelta.php | 100 + .../src/Framework/Constraint/Exception.php | 82 - .../Constraint/Exception/Exception.php | 85 + .../{ => Exception}/ExceptionCode.php | 3 + .../{ => Exception}/ExceptionMessage.php | 3 + .../ExceptionMessageRegularExpression.php | 3 + .../{ => Filesystem}/DirectoryExists.php | 4 +- .../{ => Filesystem}/FileExists.php | 4 +- .../{ => Filesystem}/IsReadable.php | 4 +- .../{ => Filesystem}/IsWritable.php | 4 +- .../src/Framework/Constraint/IsAnything.php | 4 +- .../src/Framework/Constraint/IsEqual.php | 142 - .../src/Framework/Constraint/IsIdentical.php | 14 +- .../src/Framework/Constraint/JsonMatches.php | 2 +- .../JsonMatchesErrorMessageProvider.php | 2 +- .../src/Framework/Constraint/LogicalAnd.php | 121 - .../src/Framework/Constraint/LogicalNot.php | 169 - .../src/Framework/Constraint/LogicalOr.php | 118 - .../src/Framework/Constraint/LogicalXor.php | 123 - .../Constraint/{ => Math}/IsFinite.php | 2 +- .../Constraint/{ => Math}/IsInfinite.php | 2 +- .../Framework/Constraint/{ => Math}/IsNan.php | 2 +- .../{ => Object}/ClassHasAttribute.php | 7 +- .../{ => Object}/ClassHasStaticAttribute.php | 7 +- .../Constraint/Object/ObjectEquals.php | 151 + .../{ => Object}/ObjectHasAttribute.php | 5 +- .../Constraint/Operator/BinaryOperator.php | 148 + .../Constraint/Operator/LogicalAnd.php | 51 + .../Constraint/Operator/LogicalNot.php | 136 + .../Constraint/Operator/LogicalOr.php | 51 + .../Constraint/Operator/LogicalXor.php | 63 + .../Constraint/Operator/Operator.php | 55 + .../Constraint/Operator/UnaryOperator.php | 140 + .../src/Framework/Constraint/SameSize.php | 18 - .../Constraint/{ => String}/IsJson.php | 4 +- .../{ => String}/RegularExpression.php | 8 +- .../Constraint/String/StringContains.php | 85 + .../{ => String}/StringEndsWith.php | 3 +- .../StringMatchesFormatDescription.php | 7 +- .../{ => String}/StringStartsWith.php | 3 +- .../Framework/Constraint/StringContains.php | 79 - .../{ => Traversable}/ArrayHasKey.php | 7 +- .../Traversable/TraversableContains.php | 63 + .../Traversable/TraversableContainsEqual.php | 40 + .../TraversableContainsIdentical.php | 39 + .../TraversableContainsOnly.php | 10 +- .../Constraint/TraversableContains.php | 120 - .../Constraint/TraversableContainsEqual.php | 88 - .../TraversableContainsIdentical.php | 87 - .../Constraint/{ => Type}/IsInstanceOf.php | 5 +- .../Constraint/{ => Type}/IsNull.php | 2 +- .../Constraint/{ => Type}/IsType.php | 66 +- .../src/Framework/DataProviderTestSuite.php | 28 +- .../src/Framework/Error/Deprecated.php | 3 + .../phpunit/src/Framework/Error/Error.php | 3 + .../phpunit/src/Framework/Error/Notice.php | 3 + .../phpunit/src/Framework/Error/Warning.php | 3 + .../phpunit/src/Framework/ErrorTestCase.php | 66 + .../ActualValueIsNotAnObjectException.php | 32 + ...hodDoesNotAcceptParameterTypeException.php | 38 + ...dDoesNotDeclareBoolReturnTypeException.php | 37 + ...NotDeclareExactlyOneParameterException.php | 37 + ...odDoesNotDeclareParameterTypeException.php | 37 + .../ComparisonMethodDoesNotExistException.php | 37 + .../phpunit/src/Framework/Exception/Error.php | 24 + .../src/Framework/ExceptionWrapper.php | 30 +- .../Framework/ExecutionOrderDependency.php | 206 + .../phpunit/src/Framework/IncompleteTest.php | 4 +- .../MockObject/Builder/InvocationMocker.php | 82 +- .../MockObject/Builder/InvocationStubber.php | 3 + .../Framework/MockObject/Builder/Match_.php | 26 - .../MockObject/Builder/ParametersMatch.php | 12 +- .../MockObject/ConfigurableMethod.php | 2 +- .../CannotUseAddMethodsException.php | 29 + .../CannotUseOnlyMethodsException.php | 29 + .../Exception/ClassAlreadyExistsException.php | 28 + .../Exception/ClassIsFinalException.php | 28 + .../Exception/ClassIsReadonlyException.php | 28 + .../Exception/DuplicateMethodException.php | 35 + .../IncompatibleReturnValueException.php | 19 + .../Exception/InvalidMethodNameException.php | 28 + .../MatchBuilderNotFoundException.php | 28 + .../MatcherAlreadyRegisteredException.php | 28 + .../MethodCannotBeConfiguredException.php | 28 + .../MethodNameAlreadyConfiguredException.php | 21 + .../MethodNameNotConfiguredException.php | 21 + ...odParametersAlreadyConfiguredException.php | 21 + ...ConstructorInvocationRequiredException.php | 21 + .../Exception/ReflectionException.php | 19 + .../ReturnValueNotConfiguredException.php | 29 + .../SoapExtensionNotAvailableException.php | 23 + .../Exception/UnknownClassException.php | 28 + .../Exception/UnknownTraitException.php | 28 + .../Exception/UnknownTypeException.php | 28 + .../src/Framework/MockObject/Generator.php | 465 +-- .../MockObject/Generator/intersection.tpl | 5 + .../MockObject/Generator/mocked_method.tpl | 2 +- .../Generator/mocked_method_never_or_void.tpl | 20 + .../Generator/mocked_method_void.tpl | 20 - .../MockObject/Generator/proxied_method.tpl | 2 +- .../proxied_method_never_or_void.tpl | 22 + .../Generator/proxied_method_void.tpl | 22 - .../src/Framework/MockObject/Invocation.php | 164 +- .../MockObject/InvocationHandler.php | 21 +- .../src/Framework/MockObject/Matcher.php | 30 +- .../src/Framework/MockObject/MockBuilder.php | 64 +- .../src/Framework/MockObject/MockClass.php | 8 +- .../src/Framework/MockObject/MockMethod.php | 175 +- .../src/Framework/MockObject/MockObject.php | 2 + .../src/Framework/MockObject/MockTrait.php | 8 +- .../src/Framework/MockObject/MockType.php | 3 + .../MockObject/Rule/ConsecutiveParameters.php | 6 - .../MockObject/Rule/InvokedAtIndex.php | 6 +- .../Framework/MockObject/Rule/MethodName.php | 6 +- .../MockObject/Rule/ParametersRule.php | 3 + .../phpunit/src/Framework/MockObject/Stub.php | 2 + .../phpunit/src/Framework/Reorderable.php | 28 + .../phpunit/src/Framework/SkippedTest.php | 4 +- vendor/phpunit/phpunit/src/Framework/Test.php | 2 +- .../phpunit/src/Framework/TestBuilder.php | 6 +- .../phpunit/src/Framework/TestCase.php | 758 ++-- .../phpunit/src/Framework/TestFailure.php | 4 +- .../phpunit/src/Framework/TestListener.php | 2 + .../TestListenerDefaultImplementation.php | 2 + .../phpunit/src/Framework/TestResult.php | 229 +- .../phpunit/src/Framework/TestSuite.php | 341 +- .../src/Framework/TestSuiteIterator.php | 2 + .../phpunit/src/Runner/BaseTestRunner.php | 31 +- .../src/Runner/Extension/ExtensionHandler.php | 118 + .../src/Runner/Extension/PharLoader.php | 77 + .../phpunit/src/Runner/Filter/Factory.php | 13 +- .../src/Runner/Filter/NameFilterIterator.php | 3 +- .../Runner/Hook/AfterIncompleteTestHook.php | 2 + .../src/Runner/Hook/AfterLastTestHook.php | 2 + .../src/Runner/Hook/AfterRiskyTestHook.php | 2 + .../src/Runner/Hook/AfterSkippedTestHook.php | 2 + .../Runner/Hook/AfterSuccessfulTestHook.php | 2 + .../src/Runner/Hook/AfterTestErrorHook.php | 2 + .../src/Runner/Hook/AfterTestFailureHook.php | 2 + .../phpunit/src/Runner/Hook/AfterTestHook.php | 2 + .../src/Runner/Hook/AfterTestWarningHook.php | 2 + .../src/Runner/Hook/BeforeFirstTestHook.php | 2 + .../src/Runner/Hook/BeforeTestHook.php | 2 + .../phpunit/phpunit/src/Runner/Hook/Hook.php | 2 + .../phpunit/src/Runner/Hook/TestHook.php | 2 + .../phpunit/src/Runner/PhptTestCase.php | 97 +- .../src/Runner/StandardTestSuiteLoader.php | 142 +- .../phpunit/src/Runner/TestSuiteLoader.php | 6 +- .../phpunit/src/Runner/TestSuiteSorter.php | 120 +- vendor/phpunit/phpunit/src/Runner/Version.php | 14 +- .../src/TextUI/CliArguments/Builder.php | 887 +++++ .../src/TextUI/CliArguments/Configuration.php | 2108 ++++++++++ .../src/TextUI/CliArguments/Exception.php | 19 + .../src/TextUI/CliArguments/Mapper.php | 365 ++ vendor/phpunit/phpunit/src/TextUI/Command.php | 1182 ++---- .../src/TextUI/DefaultResultPrinter.php | 593 +++ .../phpunit/phpunit/src/TextUI/Exception.php | 19 - .../src/TextUI/Exception/Exception.php | 19 + .../TextUI/Exception/ReflectionException.php | 19 + .../src/TextUI/Exception/RuntimeException.php | 17 + .../TestDirectoryNotFoundException.php | 29 + .../Exception/TestFileNotFoundException.php | 29 + vendor/phpunit/phpunit/src/TextUI/Help.php | 35 +- .../phpunit/src/TextUI/ResultPrinter.php | 574 +-- .../phpunit/phpunit/src/TextUI/TestRunner.php | 1162 +++--- .../phpunit/src/TextUI/TestSuiteMapper.php | 103 + .../CodeCoverage/CodeCoverage.php | 363 ++ .../CodeCoverage/Filter/Directory.php | 66 + .../Filter/DirectoryCollection.php | 60 + .../Filter/DirectoryCollectionIterator.php | 68 + .../CodeCoverage/FilterMapper.php | 45 + .../CodeCoverage/Report/Clover.php | 35 + .../CodeCoverage/Report/Cobertura.php | 35 + .../CodeCoverage/Report/Crap4j.php | 46 + .../CodeCoverage/Report/Html.php | 57 + .../CodeCoverage/Report/Php.php | 35 + .../CodeCoverage/Report/Text.php | 57 + .../CodeCoverage/Report/Xml.php | 35 + .../TextUI/XmlConfiguration/Configuration.php | 152 + .../src/TextUI/XmlConfiguration/Exception.php | 19 + .../XmlConfiguration/Filesystem/Directory.php | 33 + .../Filesystem/DirectoryCollection.php | 65 + .../DirectoryCollectionIterator.php | 68 + .../XmlConfiguration/Filesystem/File.php | 33 + .../Filesystem/FileCollection.php | 65 + .../Filesystem/FileCollectionIterator.php | 68 + .../src/TextUI/XmlConfiguration/Generator.php | 73 + .../TextUI/XmlConfiguration/Group/Group.php | 33 + .../Group/GroupCollection.php | 72 + .../Group/GroupCollectionIterator.php | 68 + .../TextUI/XmlConfiguration/Group/Groups.php | 54 + .../src/TextUI/XmlConfiguration/Loader.php | 1264 ++++++ .../TextUI/XmlConfiguration/Logging/Junit.php | 35 + .../XmlConfiguration/Logging/Logging.php | 147 + .../XmlConfiguration/Logging/TeamCity.php | 35 + .../XmlConfiguration/Logging/TestDox/Html.php | 35 + .../XmlConfiguration/Logging/TestDox/Text.php | 35 + .../XmlConfiguration/Logging/TestDox/Xml.php | 35 + .../TextUI/XmlConfiguration/Logging/Text.php | 35 + .../Migration/MigrationBuilder.php | 73 + .../Migration/MigrationBuilderException.php | 19 + .../Migration/MigrationException.php | 19 + .../Migration/Migrations/ConvertLogTypes.php | 53 + .../Migrations/CoverageCloverToReport.php | 31 + .../Migrations/CoverageCrap4jToReport.php | 33 + .../Migrations/CoverageHtmlToReport.php | 33 + .../Migrations/CoveragePhpToReport.php | 31 + .../Migrations/CoverageTextToReport.php | 33 + .../Migrations/CoverageXmlToReport.php | 31 + .../Migrations/IntroduceCoverageElement.php | 28 + .../Migrations/LogToReportMigration.php | 79 + .../Migration/Migrations/Migration.php | 20 + ...ttributesFromFilterWhitelistToCoverage.php | 51 + .../MoveAttributesFromRootToCoverage.php | 47 + .../MoveWhitelistDirectoriesToCoverage.php | 49 + .../MoveWhitelistExcludesToCoverage.php | 72 + .../Migrations/RemoveCacheTokensAttribute.php | 27 + .../Migrations/RemoveEmptyFilter.php | 54 + .../Migration/Migrations/RemoveLogTypes.php | 40 + .../Migrations/UpdateSchemaLocationTo93.php | 27 + .../XmlConfiguration/Migration/Migrator.php | 57 + .../TextUI/XmlConfiguration/PHP/Constant.php | 44 + .../PHP/ConstantCollection.php | 60 + .../PHP/ConstantCollectionIterator.php | 68 + .../XmlConfiguration/PHP/IniSetting.php | 44 + .../PHP/IniSettingCollection.php | 60 + .../PHP/IniSettingCollectionIterator.php | 68 + .../src/TextUI/XmlConfiguration/PHP/Php.php | 143 + .../XmlConfiguration/PHP/PhpHandler.php | 121 + .../TextUI/XmlConfiguration/PHP/Variable.php | 55 + .../PHP/VariableCollection.php | 60 + .../PHP/VariableCollectionIterator.php | 68 + .../XmlConfiguration/PHPUnit/Extension.php | 73 + .../PHPUnit/ExtensionCollection.php | 53 + .../PHPUnit/ExtensionCollectionIterator.php | 68 + .../XmlConfiguration/PHPUnit/PHPUnit.php | 715 ++++ .../TestSuite/TestDirectory.php | 79 + .../TestSuite/TestDirectoryCollection.php | 65 + .../TestDirectoryCollectionIterator.php | 68 + .../XmlConfiguration/TestSuite/TestFile.php | 57 + .../TestSuite/TestFileCollection.php | 65 + .../TestSuite/TestFileCollectionIterator.php | 68 + .../XmlConfiguration/TestSuite/TestSuite.php | 66 + .../TestSuite/TestSuiteCollection.php | 65 + .../TestSuite/TestSuiteCollectionIterator.php | 68 + .../phpunit/src/Util/Annotation/DocBlock.php | 84 +- .../phpunit/src/Util/Annotation/Registry.php | 4 +- vendor/phpunit/phpunit/src/Util/Blacklist.php | 201 +- vendor/phpunit/phpunit/src/Util/Cloner.php | 34 + .../phpunit/src/Util/Configuration.php | 1231 ------ .../src/Util/ConfigurationGenerator.php | 70 - .../phpunit/phpunit/src/Util/ExcludeList.php | 253 ++ .../phpunit/phpunit/src/Util/FileLoader.php | 16 +- .../phpunit/phpunit/src/Util/Filesystem.php | 5 +- vendor/phpunit/phpunit/src/Util/Filter.php | 18 +- vendor/phpunit/phpunit/src/Util/Getopt.php | 197 - .../phpunit/phpunit/src/Util/GlobalState.php | 24 +- vendor/phpunit/phpunit/src/Util/Log/JUnit.php | 34 +- .../phpunit/phpunit/src/Util/Log/TeamCity.php | 11 +- .../src/Util/PHP/DefaultPhpProcess.php | 3 + .../src/Util/PHP/Template/PhptTestCase.tpl | 33 +- .../src/Util/PHP/Template/TestCaseClass.tpl | 25 +- .../src/Util/PHP/Template/TestCaseMethod.tpl | 25 +- vendor/phpunit/phpunit/src/Util/Printer.php | 126 +- .../phpunit/phpunit/src/Util/Reflection.php | 2 +- vendor/phpunit/phpunit/src/Util/Test.php | 312 +- .../src/Util/TestDox/CliTestDoxPrinter.php | 25 +- .../src/Util/TestDox/HtmlResultPrinter.php | 7 +- .../src/Util/TestDox/NamePrettifier.php | 12 +- .../src/Util/TestDox/ResultPrinter.php | 9 +- .../src/Util/TestDox/TestDoxPrinter.php | 15 +- .../src/Util/TestDox/TextResultPrinter.php | 8 +- .../src/Util/TestDox/XmlResultPrinter.php | 14 +- vendor/phpunit/phpunit/src/Util/Type.php | 13 - .../src/Util/XdebugFilterScriptGenerator.php | 33 +- vendor/phpunit/phpunit/src/Util/Xml.php | 131 +- .../phpunit/src/Util/Xml/Exception.php | 19 + .../Util/Xml/FailedSchemaDetectionResult.php | 19 + .../phpunit/phpunit/src/Util/Xml/Loader.php | 117 + .../src/Util/Xml/SchemaDetectionResult.php | 31 + .../phpunit/src/Util/Xml/SchemaDetector.php | 39 + .../phpunit/src/Util/Xml/SchemaFinder.php | 53 + .../phpunit/src/Util/Xml/SnapshotNodeList.php | 51 + .../Xml/SuccessfulSchemaDetectionResult.php | 38 + .../phpunit/src/Util/Xml/ValidationResult.php | 69 + .../phpunit/src/Util/Xml/Validator.php | 35 + vendor/psr/event-dispatcher/.editorconfig | 15 + vendor/psr/event-dispatcher/.gitignore | 2 + vendor/psr/event-dispatcher/LICENSE | 21 + vendor/psr/event-dispatcher/README.md | 6 + vendor/psr/event-dispatcher/composer.json | 26 + .../src/EventDispatcherInterface.php | 21 + .../src/ListenerProviderInterface.php | 19 + .../src/StoppableEventInterface.php | 26 + vendor/psy/psysh/.editorconfig | 15 - vendor/psy/psysh/.github/CONTRIBUTING.md | 9 - vendor/psy/psysh/.gitignore | 9 - vendor/psy/psysh/.phan/config.php | 46 - vendor/psy/psysh/.php_cs | 32 - vendor/psy/psysh/.styleci.yml | 29 - vendor/psy/psysh/.travis.yml | 47 - vendor/psy/psysh/LICENSE | 2 +- vendor/psy/psysh/Makefile | 95 - vendor/psy/psysh/README.md | 4 +- vendor/psy/psysh/bin/build-stub | 22 - vendor/psy/psysh/bin/psysh | 42 +- vendor/psy/psysh/box.json.dist | 12 - vendor/psy/psysh/composer.json | 25 +- vendor/psy/psysh/phpunit.xml.dist | 12 - vendor/psy/psysh/src/CodeCleaner.php | 124 +- .../src/CodeCleaner/AbstractClassPass.php | 14 +- .../CodeCleaner/AssignThisVariablePass.php | 8 +- .../CallTimePassByReferencePass.php | 13 +- .../psysh/src/CodeCleaner/CalledClassPass.php | 17 +- .../psysh/src/CodeCleaner/CodeCleanerPass.php | 2 +- .../CodeCleaner/EmptyArrayDimFetchPass.php | 55 + vendor/psy/psysh/src/CodeCleaner/ExitPass.php | 7 +- .../psysh/src/CodeCleaner/FinalClassPass.php | 12 +- .../src/CodeCleaner/FunctionContextPass.php | 11 +- .../FunctionReturnInWriteContextPass.php | 32 +- .../src/CodeCleaner/ImplicitReturnPass.php | 8 +- .../psysh/src/CodeCleaner/InstanceOfPass.php | 28 +- .../psy/psysh/src/CodeCleaner/IssetPass.php | 49 + .../src/CodeCleaner/LabelContextPass.php | 101 + .../src/CodeCleaner/LeavePsyshAlonePass.php | 4 +- .../psysh/src/CodeCleaner/LegacyEmptyPass.php | 73 - vendor/psy/psysh/src/CodeCleaner/ListPass.php | 8 +- .../psysh/src/CodeCleaner/LoopContextPass.php | 16 +- .../src/CodeCleaner/MagicConstantsPass.php | 4 +- .../src/CodeCleaner/NamespaceAwarePass.php | 10 +- .../psysh/src/CodeCleaner/NamespacePass.php | 7 +- .../psysh/src/CodeCleaner/NoReturnValue.php | 8 +- .../CodeCleaner/PassableByReferencePass.php | 20 +- .../psy/psysh/src/CodeCleaner/RequirePass.php | 52 +- .../psysh/src/CodeCleaner/ReturnTypePass.php | 127 + .../psysh/src/CodeCleaner/StrictTypesPass.php | 19 +- .../src/CodeCleaner/UseStatementPass.php | 62 +- .../src/CodeCleaner/ValidClassNamePass.php | 142 +- .../src/CodeCleaner/ValidConstantPass.php | 90 - .../src/CodeCleaner/ValidConstructorPass.php | 11 +- .../src/CodeCleaner/ValidFunctionNamePass.php | 30 +- .../psy/psysh/src/Command/BufferCommand.php | 16 +- vendor/psy/psysh/src/Command/ClearCommand.php | 4 +- vendor/psy/psysh/src/Command/Command.php | 65 +- vendor/psy/psysh/src/Command/DocCommand.php | 171 +- vendor/psy/psysh/src/Command/DumpCommand.php | 10 +- vendor/psy/psysh/src/Command/EditCommand.php | 17 +- vendor/psy/psysh/src/Command/ExitCommand.php | 4 +- vendor/psy/psysh/src/Command/HelpCommand.php | 17 +- .../psy/psysh/src/Command/HistoryCommand.php | 54 +- vendor/psy/psysh/src/Command/ListCommand.php | 68 +- .../ListCommand/ClassConstantEnumerator.php | 23 +- .../Command/ListCommand/ClassEnumerator.php | 48 +- .../ListCommand/ConstantEnumerator.php | 91 +- .../src/Command/ListCommand/Enumerator.php | 30 +- .../ListCommand/FunctionEnumerator.php | 58 +- .../ListCommand/GlobalVariableEnumerator.php | 16 +- .../ListCommand/InterfaceEnumerator.php | 89 - .../Command/ListCommand/MethodEnumerator.php | 31 +- .../ListCommand/PropertyEnumerator.php | 44 +- .../Command/ListCommand/TraitEnumerator.php | 89 - .../ListCommand/VariableEnumerator.php | 18 +- vendor/psy/psysh/src/Command/ParseCommand.php | 50 +- .../psysh/src/Command/PsyVersionCommand.php | 2 +- .../psysh/src/Command/ReflectingCommand.php | 85 +- vendor/psy/psysh/src/Command/ShowCommand.php | 69 +- vendor/psy/psysh/src/Command/SudoCommand.php | 12 +- .../psy/psysh/src/Command/ThrowUpCommand.php | 39 +- .../psy/psysh/src/Command/TimeitCommand.php | 14 +- .../Command/TimeitCommand/TimeitVisitor.php | 33 +- vendor/psy/psysh/src/Command/TraceCommand.php | 90 +- .../psy/psysh/src/Command/WhereamiCommand.php | 72 +- vendor/psy/psysh/src/Command/WtfCommand.php | 25 +- vendor/psy/psysh/src/ConfigPaths.php | 342 +- vendor/psy/psysh/src/Configuration.php | 881 +++- vendor/psy/psysh/src/ConsoleColorFactory.php | 82 - vendor/psy/psysh/src/Context.php | 34 +- vendor/psy/psysh/src/ContextAware.php | 2 +- vendor/psy/psysh/src/EnvInterface.php | 25 + .../psysh/src/Exception/BreakException.php | 6 +- .../src/Exception/DeprecatedException.php | 2 +- .../psysh/src/Exception/ErrorException.php | 50 +- vendor/psy/psysh/src/Exception/Exception.php | 2 +- .../src/Exception/FatalErrorException.php | 18 +- .../src/Exception/ParseErrorException.php | 8 +- .../psysh/src/Exception/RuntimeException.php | 12 +- .../psysh/src/Exception/ThrowUpException.php | 16 +- .../src/Exception/TypeErrorException.php | 23 +- .../Exception/UnexpectedTargetException.php | 37 + vendor/psy/psysh/src/ExecutionClosure.php | 50 +- vendor/psy/psysh/src/ExecutionLoop.php | 67 - .../src/ExecutionLoop/AbstractListener.php | 6 +- .../psy/psysh/src/ExecutionLoop/Listener.php | 8 +- .../psysh/src/ExecutionLoop/ProcessForker.php | 102 +- .../src/ExecutionLoop/RunkitReloader.php | 25 +- vendor/psy/psysh/src/ExecutionLoopClosure.php | 27 +- .../psy/psysh/src/Formatter/CodeFormatter.php | 301 +- .../psysh/src/Formatter/DocblockFormatter.php | 28 +- vendor/psy/psysh/src/Formatter/Formatter.php | 12 +- .../src/Formatter/ReflectorFormatter.php | 25 + .../src/Formatter/SignatureFormatter.php | 119 +- .../psysh/src/Formatter/TraceFormatter.php | 96 + vendor/psy/psysh/src/Input/CodeArgument.php | 4 +- vendor/psy/psysh/src/Input/FilterOptions.php | 42 +- vendor/psy/psysh/src/Input/ShellInput.php | 39 +- vendor/psy/psysh/src/Input/SilentInput.php | 6 +- vendor/psy/psysh/src/Output/OutputPager.php | 2 +- vendor/psy/psysh/src/Output/PassthruPager.php | 2 +- .../psy/psysh/src/Output/ProcOutputPager.php | 14 +- vendor/psy/psysh/src/Output/ShellOutput.php | 78 +- vendor/psy/psysh/src/Output/Theme.php | 285 ++ vendor/psy/psysh/src/ParserFactory.php | 47 +- vendor/psy/psysh/src/Readline/GNUReadline.php | 52 +- .../psysh/src/Readline/Hoa/Autocompleter.php | 57 + .../Readline/Hoa/AutocompleterAggregate.php | 118 + .../src/Readline/Hoa/AutocompleterPath.php | 194 + .../src/Readline/Hoa/AutocompleterWord.php | 119 + vendor/psy/psysh/src/Readline/Hoa/Console.php | 347 ++ .../psysh/src/Readline/Hoa/ConsoleCursor.php | 695 ++++ .../src/Readline/Hoa/ConsoleException.php | 46 + .../psysh/src/Readline/Hoa/ConsoleInput.php | 168 + .../psysh/src/Readline/Hoa/ConsoleOutput.php | 208 + .../src/Readline/Hoa/ConsoleProcessus.php | 892 +++++ .../psysh/src/Readline/Hoa/ConsoleTput.php | 841 ++++ .../psysh/src/Readline/Hoa/ConsoleWindow.php | 529 +++ vendor/psy/psysh/src/Readline/Hoa/Event.php | 193 + .../psysh/src/Readline/Hoa/EventBucket.php | 109 + .../psysh/src/Readline/Hoa/EventException.php | 44 + .../src/Readline/Hoa/EventListenable.php | 48 + .../psysh/src/Readline/Hoa/EventListener.php | 137 + .../psysh/src/Readline/Hoa/EventListens.php | 83 + .../psysh/src/Readline/Hoa/EventSource.php | 44 + .../psy/psysh/src/Readline/Hoa/Exception.php | 79 + .../psysh/src/Readline/Hoa/ExceptionIdle.php | 267 ++ vendor/psy/psysh/src/Readline/Hoa/File.php | 278 ++ .../psysh/src/Readline/Hoa/FileDirectory.php | 221 ++ .../Hoa/FileDoesNotExistException.php | 48 + .../psysh/src/Readline/Hoa/FileException.php | 48 + .../psy/psysh/src/Readline/Hoa/FileFinder.php | 658 +++ .../psysh/src/Readline/Hoa/FileGeneric.php | 487 +++ .../psy/psysh/src/Readline/Hoa/FileLink.php | 149 + .../psysh/src/Readline/Hoa/FileLinkRead.php | 231 ++ .../src/Readline/Hoa/FileLinkReadWrite.php | 279 ++ .../psy/psysh/src/Readline/Hoa/FileRead.php | 177 + .../psysh/src/Readline/Hoa/FileReadWrite.php | 279 ++ vendor/psy/psysh/src/Readline/Hoa/IStream.php | 50 + .../src/Readline/Hoa/IteratorFileSystem.php | 86 + .../Hoa/IteratorRecursiveDirectory.php | 126 + .../src/Readline/Hoa/IteratorSplFileInfo.php | 122 + .../psy/psysh/src/Readline/Hoa/Protocol.php | 223 ++ .../src/Readline/Hoa/ProtocolException.php | 44 + .../psysh/src/Readline/Hoa/ProtocolNode.php | 323 ++ .../src/Readline/Hoa/ProtocolNodeLibrary.php | 90 + .../src/Readline/Hoa/ProtocolWrapper.php | 473 +++ .../psy/psysh/src/Readline/Hoa/Readline.php | 1032 +++++ vendor/psy/psysh/src/Readline/Hoa/Stream.php | 571 +++ .../src/Readline/Hoa/StreamBufferable.php | 73 + .../psysh/src/Readline/Hoa/StreamContext.php | 141 + .../src/Readline/Hoa/StreamException.php | 46 + .../psy/psysh/src/Readline/Hoa/StreamIn.php | 102 + .../psysh/src/Readline/Hoa/StreamLockable.php | 85 + .../psy/psysh/src/Readline/Hoa/StreamOut.php | 95 + .../psysh/src/Readline/Hoa/StreamPathable.php | 55 + .../src/Readline/Hoa/StreamPointable.php | 75 + .../psysh/src/Readline/Hoa/StreamStatable.php | 115 + .../src/Readline/Hoa/StreamTouchable.php | 110 + .../src/Readline/Hoa/Terminfo/77/windows-ansi | Bin 0 -> 1481 bytes .../psysh/src/Readline/Hoa/Terminfo/78/xterm | Bin 0 -> 3258 bytes .../Readline/Hoa/Terminfo/78/xterm-256color | Bin 0 -> 3322 bytes vendor/psy/psysh/src/Readline/Hoa/Ustring.php | 143 + .../psy/psysh/src/Readline/Hoa/Xcallable.php | 256 ++ vendor/psy/psysh/src/Readline/HoaConsole.php | 94 +- vendor/psy/psysh/src/Readline/Libedit.php | 51 +- vendor/psy/psysh/src/Readline/Readline.php | 32 +- vendor/psy/psysh/src/Readline/Transient.php | 30 +- vendor/psy/psysh/src/Readline/Userland.php | 168 + .../Reflection/ReflectionClassConstant.php | 36 +- .../src/Reflection/ReflectionConstant.php | 4 +- .../src/Reflection/ReflectionConstant_.php | 22 +- .../ReflectionLanguageConstruct.php | 23 +- .../ReflectionLanguageConstructParameter.php | 24 +- .../src/Reflection/ReflectionNamespace.php | 60 + vendor/psy/psysh/src/Shell.php | 629 ++- vendor/psy/psysh/src/Sudo.php | 98 +- vendor/psy/psysh/src/Sudo/SudoVisitor.php | 56 +- vendor/psy/psysh/src/SuperglobalsEnv.php | 32 + .../psysh/src/TabCompletion/AutoCompleter.php | 10 +- .../Matcher/AbstractContextAwareMatcher.php | 6 +- .../AbstractDefaultParametersMatcher.php | 14 +- .../TabCompletion/Matcher/AbstractMatcher.php | 29 +- .../Matcher/ClassAttributesMatcher.php | 12 +- .../ClassMethodDefaultParametersMatcher.php | 10 +- .../Matcher/ClassMethodsMatcher.php | 10 +- .../Matcher/ClassNamesMatcher.php | 20 +- .../TabCompletion/Matcher/CommandsMatcher.php | 10 +- .../Matcher/ConstantsMatcher.php | 8 +- .../FunctionDefaultParametersMatcher.php | 6 +- .../Matcher/FunctionsMatcher.php | 10 +- .../TabCompletion/Matcher/KeywordsMatcher.php | 12 +- .../Matcher/MongoClientMatcher.php | 12 +- .../Matcher/MongoDatabaseMatcher.php | 12 +- .../Matcher/ObjectAttributesMatcher.php | 8 +- .../ObjectMethodDefaultParametersMatcher.php | 10 +- .../Matcher/ObjectMethodsMatcher.php | 8 +- .../Matcher/VariablesMatcher.php | 6 +- vendor/psy/psysh/src/Util/Docblock.php | 34 +- vendor/psy/psysh/src/Util/Json.php | 6 +- vendor/psy/psysh/src/Util/Mirror.php | 83 +- vendor/psy/psysh/src/Util/Str.php | 6 +- vendor/psy/psysh/src/VarDumper/Cloner.php | 7 +- vendor/psy/psysh/src/VarDumper/Dumper.php | 10 +- vendor/psy/psysh/src/VarDumper/Presenter.php | 26 +- .../psysh/src/VarDumper/PresenterAware.php | 2 +- .../psy/psysh/src/VersionUpdater/Checker.php | 14 +- .../psysh/src/VersionUpdater/Downloader.php | 47 + .../Downloader/CurlDownloader.php | 84 + .../src/VersionUpdater/Downloader/Factory.php | 33 + .../Downloader/FileDownloader.php | 56 + .../src/VersionUpdater/GitHubChecker.php | 18 +- .../psysh/src/VersionUpdater/Installer.php | 159 + .../src/VersionUpdater/IntervalChecker.php | 13 +- .../psysh/src/VersionUpdater/NoopChecker.php | 8 +- .../psysh/src/VersionUpdater/SelfUpdate.php | 192 + vendor/psy/psysh/src/functions.php | 262 +- vendor/psy/psysh/test/ClassWithSecrets.php | 37 - .../CodeCleaner/AbstractClassPassTest.php | 57 - .../AssignThisVariablePassTest.php | 58 - .../CallTimePassByReferencePassTest.php | 59 - .../test/CodeCleaner/CalledClassPassTest.php | 90 - .../test/CodeCleaner/CodeCleanerTestCase.php | 41 - .../psysh/test/CodeCleaner/ExitPassTest.php | 59 - .../test/CodeCleaner/FinalClassPassTest.php | 65 - .../Fixtures/ClassWithCallStatic.php | 20 - .../CodeCleaner/Fixtures/ClassWithStatic.php | 20 - .../CodeCleaner/Fixtures/TraitWithStatic.php | 20 - .../CodeCleaner/FunctionContextPassTest.php | 56 - .../FunctionReturnInWriteContextPassTest.php | 91 - .../CodeCleaner/ImplicitReturnPassTest.php | 112 - .../test/CodeCleaner/InstanceOfPassTest.php | 72 - .../CodeCleaner/LeavePsyshAlonePassTest.php | 69 - .../test/CodeCleaner/LegacyEmptyPassTest.php | 76 - .../psysh/test/CodeCleaner/ListPassTest.php | 115 - .../test/CodeCleaner/LoopContextPassTest.php | 108 - .../CodeCleaner/MagicConstantsPassTest.php | 39 - .../test/CodeCleaner/NamespacePassTest.php | 59 - .../test/CodeCleaner/NoReturnValueTest.php | 32 - .../PassableByReferencePassTest.php | 104 - .../test/CodeCleaner/RequirePassTest.php | 93 - .../test/CodeCleaner/StrictTypesPassTest.php | 52 - .../test/CodeCleaner/UseStatementPassTest.php | 102 - .../CodeCleaner/ValidClassNamePassTest.php | 325 -- .../CodeCleaner/ValidConstantPassTest.php | 65 - .../CodeCleaner/ValidConstructorPassTest.php | 93 - .../CodeCleaner/ValidFunctionNamePassTest.php | 180 - vendor/psy/psysh/test/CodeCleanerTest.php | 131 - .../psysh/test/Command/ExitCommandTest.php | 29 - .../psysh/test/Command/ThrowUpCommandTest.php | 89 - .../TimeitCommand/TimeitVisitorTest.php | 52 - vendor/psy/psysh/test/ConfigurationTest.php | 256 -- .../psysh/test/ConsoleColorFactoryTest.php | 51 - vendor/psy/psysh/test/ContextTest.php | 325 -- .../test/Exception/BreakExceptionTest.php | 42 - .../test/Exception/ErrorExceptionTest.php | 125 - .../Exception/FatalErrorExceptionTest.php | 51 - .../Exception/ParseErrorExceptionTest.php | 42 - .../test/Exception/RuntimeExceptionTest.php | 30 - .../test/Exception/ThrowUpExceptionTest.php | 66 - .../test/Exception/TypeErrorExceptionTest.php | 52 - vendor/psy/psysh/test/FakeShell.php | 29 - .../test/Formatter/CodeFormatterTest.php | 129 - .../test/Formatter/DocblockFormatterTest.php | 63 - .../test/Formatter/Fixtures/BoringTrait.php | 20 - .../test/Formatter/Fixtures/SomeClass.php | 30 - .../test/Formatter/SignatureFormatterTest.php | 95 - .../psy/psysh/test/Input/CodeArgumentTest.php | 52 - .../psysh/test/Input/FilterOptionsTest.php | 105 - .../psy/psysh/test/Input/ShellInputTest.php | 254 -- vendor/psy/psysh/test/ParserTestCase.php | 97 - .../psysh/test/Readline/GNUReadlineTest.php | 80 - .../psysh/test/Readline/HoaConsoleTest.php | 31 - .../psy/psysh/test/Readline/LibeditTest.php | 128 - .../psy/psysh/test/Readline/TransientTest.php | 76 - .../ReflectionClassConstantTest.php | 81 - .../Reflection/ReflectionConstantBCTest.php | 26 - .../Reflection/ReflectionConstantTest.php | 114 - ...flectionLanguageConstructParameterTest.php | 64 - .../ReflectionLanguageConstructTest.php | 102 - vendor/psy/psysh/test/ShellTest.php | 442 --- .../psy/psysh/test/Sudo/SudoVisitorTest.php | 142 - vendor/psy/psysh/test/SudoTest.php | 80 - .../test/TabCompletion/AutoCompleterTest.php | 145 - .../psysh/test/TabCompletion/StaticSample.php | 27 - vendor/psy/psysh/test/Util/DocblockTest.php | 100 - vendor/psy/psysh/test/Util/MirrorTest.php | 86 - vendor/psy/psysh/test/Util/StrTest.php | 31 - .../test/VersionUpdater/GitHubCheckerTest.php | 82 - .../test/VersionUpdater/NoopCheckerTest.php | 25 - vendor/psy/psysh/test/fixtures/config.php | 20 - .../fixtures/default/.config/psysh/config.php | 1 - .../default/.config/psysh/psysh_history | 0 .../.local/share/psysh/php_manual.sqlite | 0 vendor/psy/psysh/test/fixtures/empty.php | 12 - .../psysh/test/fixtures/legacy/.psysh/history | 0 .../fixtures/legacy/.psysh/php_manual.sqlite | 0 .../psysh/test/fixtures/legacy/.psysh/rc.php | 1 - .../test/fixtures/mixed/.psysh/config.php | 1 - .../test/fixtures/mixed/.psysh/psysh_history | 0 .../psysh/test/fixtures/mixed/.psysh/rc.php | 1 - .../psysh/test/fixtures/project/.psysh.php | 17 - .../psysh/test/fixtures/unvis_fixtures.json | 1 - .../psysh/test/tools/gen_unvis_fixtures.py | 94 - vendor/psy/psysh/test/tools/vis.py | 126 - vendor/psy/psysh/vendor-bin/box/composer.json | 7 - vendor/psy/psysh/vendor-bin/box/composer.lock | 2524 ------------ vendor/ramsey/collection/LICENSE | 19 + vendor/ramsey/collection/README.md | 82 + vendor/ramsey/collection/SECURITY.md | 113 + vendor/ramsey/collection/composer.json | 102 + .../ramsey/collection/src/AbstractArray.php | 209 + .../collection/src/AbstractCollection.php | 318 ++ vendor/ramsey/collection/src/AbstractSet.php | 50 + .../ramsey/collection/src/ArrayInterface.php | 51 + vendor/ramsey/collection/src/Collection.php | 106 + .../collection/src/CollectionInterface.php | 205 + .../collection/src/DoubleEndedQueue.php | 187 + .../src/DoubleEndedQueueInterface.php | 316 ++ .../Exception/CollectionMismatchException.php | 22 + .../Exception/InvalidArgumentException.php | 22 + .../Exception/InvalidSortOrderException.php | 22 + .../src/Exception/NoSuchElementException.php | 22 + .../src/Exception/OutOfBoundsException.php | 22 + .../UnsupportedOperationException.php | 22 + .../Exception/ValueExtractionException.php | 22 + vendor/ramsey/collection/src/GenericArray.php | 24 + .../ramsey/collection/src/Map/AbstractMap.php | 162 + .../collection/src/Map/AbstractTypedMap.php | 69 + .../src/Map/AssociativeArrayMap.php | 25 + .../collection/src/Map/MapInterface.php | 149 + .../collection/src/Map/NamedParameterMap.php | 120 + vendor/ramsey/collection/src/Map/TypedMap.php | 137 + .../collection/src/Map/TypedMapInterface.php | 35 + vendor/ramsey/collection/src/Queue.php | 169 + .../ramsey/collection/src/QueueInterface.php | 203 + vendor/ramsey/collection/src/Set.php | 69 + .../ramsey/collection/src/Tool/TypeTrait.php | 73 + .../src/Tool/ValueExtractorTrait.php | 58 + .../src/Tool/ValueToStringTrait.php | 94 + vendor/ramsey/uuid/LICENSE | 2 - vendor/ramsey/uuid/README.md | 196 +- vendor/ramsey/uuid/composer.json | 134 +- vendor/ramsey/uuid/src/BinaryUtils.php | 54 +- .../uuid/src/Builder/BuilderCollection.php | 80 + .../uuid/src/Builder/DefaultUuidBuilder.php | 44 +- .../uuid/src/Builder/DegradedUuidBuilder.php | 59 +- .../uuid/src/Builder/FallbackBuilder.php | 74 + .../uuid/src/Builder/UuidBuilderInterface.php | 23 +- .../ramsey/uuid/src/Codec/CodecInterface.php | 57 +- .../ramsey/uuid/src/Codec/GuidStringCodec.php | 88 +- .../uuid/src/Codec/OrderedTimeCodec.php | 125 +- vendor/ramsey/uuid/src/Codec/StringCodec.php | 154 +- .../src/Codec/TimestampFirstCombCodec.php | 129 +- .../uuid/src/Codec/TimestampLastCombCodec.php | 39 +- .../Converter/Number/BigNumberConverter.php | 51 +- .../Number/DegradedNumberConverter.php | 49 +- .../Number/GenericNumberConverter.php | 63 + .../Converter/NumberConverterInterface.php | 47 +- .../Converter/Time/BigNumberTimeConverter.php | 58 +- .../Converter/Time/DegradedTimeConverter.php | 33 +- .../Converter/Time/GenericTimeConverter.php | 124 + .../src/Converter/Time/PhpTimeConverter.php | 170 +- .../src/Converter/TimeConverterInterface.php | 51 +- vendor/ramsey/uuid/src/DegradedUuid.php | 103 +- .../uuid/src/DeprecatedUuidInterface.php | 147 + .../uuid/src/DeprecatedUuidMethodsTrait.php | 370 ++ .../Exception/BuilderNotFoundException.php | 24 + .../uuid/src/Exception/DateTimeException.php | 24 + .../src/Exception/DceSecurityException.php | 25 + .../Exception/InvalidArgumentException.php | 24 + .../src/Exception/InvalidBytesException.php | 24 + .../Exception/InvalidUuidStringException.php | 15 +- .../uuid/src/Exception/NameException.php | 25 + .../uuid/src/Exception/NodeException.php | 24 + .../src/Exception/RandomSourceException.php | 27 + .../src/Exception/TimeSourceException.php | 24 + .../Exception/UnableToBuildUuidException.php | 24 + .../UnsatisfiedDependencyException.php | 25 - .../UnsupportedOperationException.php | 12 +- .../src/Exception/UuidExceptionInterface.php | 21 + vendor/ramsey/uuid/src/FeatureSet.php | 382 +- .../uuid/src/Fields/FieldsInterface.php | 32 + .../src/Fields/SerializableFieldsTrait.php | 86 + .../uuid/src/Generator/CombGenerator.php | 102 +- .../src/Generator/DceSecurityGenerator.php | 160 + .../DceSecurityGeneratorInterface.php | 53 + .../src/Generator/DefaultNameGenerator.php | 48 + .../src/Generator/DefaultTimeGenerator.php | 130 +- .../uuid/src/Generator/MtRandGenerator.php | 45 - .../src/Generator/NameGeneratorFactory.php | 30 + .../src/Generator/NameGeneratorInterface.php | 38 + .../uuid/src/Generator/OpenSslGenerator.php | 43 - .../src/Generator/PeclUuidNameGenerator.php | 54 + .../src/Generator/PeclUuidRandomGenerator.php | 24 +- .../src/Generator/PeclUuidTimeGenerator.php | 25 +- .../src/Generator/RandomBytesGenerator.php | 34 +- .../src/Generator/RandomGeneratorFactory.php | 13 +- .../Generator/RandomGeneratorInterface.php | 23 +- .../uuid/src/Generator/RandomLibAdapter.php | 39 +- .../src/Generator/SodiumRandomGenerator.php | 41 - .../src/Generator/TimeGeneratorFactory.php | 21 +- .../src/Generator/TimeGeneratorInterface.php | 35 +- vendor/ramsey/uuid/src/Guid/Fields.php | 194 + vendor/ramsey/uuid/src/Guid/Guid.php | 61 + vendor/ramsey/uuid/src/Guid/GuidBuilder.php | 89 + .../uuid/src/Lazy/LazyUuidFromString.php | 575 +++ .../uuid/src/Math/BrickMathCalculator.php | 144 + .../uuid/src/Math/CalculatorInterface.php | 106 + vendor/ramsey/uuid/src/Math/RoundingMode.php | 146 + vendor/ramsey/uuid/src/Nonstandard/Fields.php | 133 + vendor/ramsey/uuid/src/Nonstandard/Uuid.php | 37 + .../uuid/src/Nonstandard/UuidBuilder.php | 88 + vendor/ramsey/uuid/src/Nonstandard/UuidV6.php | 133 + .../Dce/SystemDceSecurityProvider.php | 234 ++ .../Provider/DceSecurityProviderInterface.php | 41 + .../Provider/Node/FallbackNodeProvider.php | 47 +- .../Provider/Node/NodeProviderCollection.php | 61 + .../src/Provider/Node/RandomNodeProvider.php | 44 +- .../src/Provider/Node/StaticNodeProvider.php | 76 + .../src/Provider/Node/SystemNodeProvider.php | 131 +- .../src/Provider/NodeProviderInterface.php | 18 +- .../src/Provider/Time/FixedTimeProvider.php | 54 +- .../src/Provider/Time/SystemTimeProvider.php | 22 +- .../src/Provider/TimeProviderInterface.php | 17 +- vendor/ramsey/uuid/src/Rfc4122/Fields.php | 194 + .../uuid/src/Rfc4122/FieldsInterface.php | 126 + vendor/ramsey/uuid/src/Rfc4122/NilTrait.php | 41 + vendor/ramsey/uuid/src/Rfc4122/NilUuid.php | 27 + .../ramsey/uuid/src/Rfc4122/UuidBuilder.php | 111 + .../ramsey/uuid/src/Rfc4122/UuidInterface.php | 36 + vendor/ramsey/uuid/src/Rfc4122/UuidV1.php | 92 + vendor/ramsey/uuid/src/Rfc4122/UuidV2.php | 143 + vendor/ramsey/uuid/src/Rfc4122/UuidV3.php | 58 + vendor/ramsey/uuid/src/Rfc4122/UuidV4.php | 58 + vendor/ramsey/uuid/src/Rfc4122/UuidV5.php | 58 + vendor/ramsey/uuid/src/Rfc4122/Validator.php | 49 + .../ramsey/uuid/src/Rfc4122/VariantTrait.php | 90 + .../ramsey/uuid/src/Rfc4122/VersionTrait.php | 57 + vendor/ramsey/uuid/src/Type/Decimal.php | 137 + vendor/ramsey/uuid/src/Type/Hexadecimal.php | 116 + vendor/ramsey/uuid/src/Type/Integer.php | 153 + .../ramsey/uuid/src/Type/NumberInterface.php | 28 + vendor/ramsey/uuid/src/Type/Time.php | 139 + vendor/ramsey/uuid/src/Type/TypeInterface.php | 30 + vendor/ramsey/uuid/src/Uuid.php | 953 ++--- vendor/ramsey/uuid/src/UuidFactory.php | 428 +- .../ramsey/uuid/src/UuidFactoryInterface.php | 190 +- vendor/ramsey/uuid/src/UuidInterface.php | 257 +- .../uuid/src/Validator/GenericValidator.php | 50 + .../uuid/src/Validator/ValidatorInterface.php | 41 + vendor/ramsey/uuid/src/functions.php | 115 +- .../highlight.php/.php-cs-fixer.dist.php | 40 - vendor/scrivo/highlight.php/AUTHORS.txt | 306 -- vendor/scrivo/highlight.php/CONTRIBUTING.md | 112 - .../highlight.php/Highlight/Autoloader.php | 73 - .../Highlight/HighlightResult.php | 60 - .../highlight.php/Highlight/Highlighter.php | 1031 ----- .../highlight.php/Highlight/JsonRef.php | 177 - .../highlight.php/Highlight/Language.php | 413 -- .../scrivo/highlight.php/Highlight/Mode.php | 195 - .../Highlight/ModeDeprecations.php | 50 - .../scrivo/highlight.php/Highlight/RegEx.php | 108 - .../highlight.php/Highlight/RegExMatch.php | 120 - .../highlight.php/Highlight/RegExUtils.php | 61 - .../highlight.php/Highlight/Terminators.php | 244 -- .../highlight.php/Highlight/languages/1c.json | 130 - .../Highlight/languages/abnf.json | 58 - .../Highlight/languages/accesslog.json | 55 - .../Highlight/languages/actionscript.json | 148 - .../Highlight/languages/ada.json | 118 - .../Highlight/languages/angelscript.json | 138 - .../Highlight/languages/apache.json | 78 - .../Highlight/languages/applescript.json | 116 - .../Highlight/languages/arcade.json | 250 -- .../Highlight/languages/arduino.json | 334 -- .../Highlight/languages/armasm.json | 107 - .../Highlight/languages/asciidoc.json | 186 - .../Highlight/languages/aspectj.json | 219 - .../Highlight/languages/autohotkey.json | 96 - .../Highlight/languages/autoit.json | 197 - .../Highlight/languages/avrasm.json | 87 - .../Highlight/languages/awk.json | 120 - .../Highlight/languages/axapta.json | 85 - .../Highlight/languages/bash.json | 92 - .../Highlight/languages/basic.json | 72 - .../Highlight/languages/bnf.json | 74 - .../Highlight/languages/brainfuck.json | 47 - .../Highlight/languages/cal.json | 126 - .../Highlight/languages/capnproto.json | 87 - .../Highlight/languages/ceylon.json | 90 - .../Highlight/languages/clean.json | 75 - .../Highlight/languages/clojure-repl.json | 12 - .../Highlight/languages/clojure.json | 139 - .../Highlight/languages/cmake.json | 48 - .../Highlight/languages/coffeescript.json | 267 -- .../Highlight/languages/coq.json | 49 - .../Highlight/languages/cos.json | 105 - .../Highlight/languages/cpp.json | 334 -- .../Highlight/languages/crmsh.json | 101 - .../Highlight/languages/crystal.json | 482 --- .../highlight.php/Highlight/languages/cs.json | 364 -- .../Highlight/languages/csp.json | 20 - .../Highlight/languages/css.json | 185 - .../highlight.php/Highlight/languages/d.json | 121 - .../Highlight/languages/dart.json | 208 - .../Highlight/languages/delphi.json | 156 - .../Highlight/languages/diff.json | 65 - .../Highlight/languages/django.json | 101 - .../Highlight/languages/dns.json | 44 - .../Highlight/languages/dockerfile.json | 60 - .../Highlight/languages/dos.json | 54 - .../Highlight/languages/dsconfig.json | 63 - .../Highlight/languages/dts.json | 193 - .../Highlight/languages/dust.json | 46 - .../Highlight/languages/ebnf.json | 69 - .../Highlight/languages/elixir.json | 256 -- .../Highlight/languages/elm.json | 161 - .../Highlight/languages/erb.json | 27 - .../Highlight/languages/erlang-repl.json | 76 - .../Highlight/languages/erlang.json | 222 -- .../Highlight/languages/excel.json | 70 - .../Highlight/languages/fix.json | 28 - .../Highlight/languages/flix.json | 68 - .../Highlight/languages/fortran.json | 78 - .../Highlight/languages/fsharp.json | 114 - .../Highlight/languages/gams.json | 286 -- .../Highlight/languages/gauss.json | 281 -- .../Highlight/languages/gcode.json | 123 - .../Highlight/languages/gherkin.json | 64 - .../Highlight/languages/glsl.json | 51 - .../Highlight/languages/gml.json | 73 - .../highlight.php/Highlight/languages/go.json | 114 - .../Highlight/languages/golo.json | 44 - .../Highlight/languages/gradle.json | 87 - .../Highlight/languages/groovy.json | 160 - .../Highlight/languages/haml.json | 136 - .../Highlight/languages/handlebars.json | 131 - .../Highlight/languages/haskell.json | 225 -- .../Highlight/languages/haxe.json | 197 - .../Highlight/languages/hsp.json | 131 - .../Highlight/languages/htmlbars.json | 88 - .../Highlight/languages/http.json | 57 - .../highlight.php/Highlight/languages/hy.json | 149 - .../Highlight/languages/inform7.json | 47 - .../Highlight/languages/ini.json | 128 - .../Highlight/languages/irpf90.json | 90 - .../Highlight/languages/isbl.json | 137 - .../Highlight/languages/java.json | 166 - .../Highlight/languages/javascript.json | 398 -- .../Highlight/languages/jboss-cli.json | 71 - .../Highlight/languages/json.json | 109 - .../Highlight/languages/julia-repl.json | 16 - .../Highlight/languages/julia.json | 111 - .../Highlight/languages/kotlin.json | 316 -- .../Highlight/languages/lasso.json | 253 -- .../Highlight/languages/ldif.json | 45 - .../Highlight/languages/leaf.json | 38 - .../Highlight/languages/less.json | 314 -- .../Highlight/languages/lisp.json | 190 - .../Highlight/languages/livecodeserver.json | 220 - .../Highlight/languages/livescript.json | 267 -- .../Highlight/languages/llvm.json | 90 - .../Highlight/languages/lsl.json | 98 - .../Highlight/languages/lua.json | 118 - .../Highlight/languages/makefile.json | 90 - .../Highlight/languages/markdown.json | 121 - .../Highlight/languages/mathematica.json | 43 - .../Highlight/languages/matlab.json | 126 - .../Highlight/languages/maxima.json | 51 - .../Highlight/languages/mel.json | 77 - .../Highlight/languages/mercury.json | 122 - .../Highlight/languages/mipsasm.json | 101 - .../Highlight/languages/mizar.json | 20 - .../Highlight/languages/mojolicious.json | 21 - .../Highlight/languages/monkey.json | 119 - .../Highlight/languages/moonscript.json | 187 - .../Highlight/languages/n1ql.json | 74 - .../Highlight/languages/nginx.json | 147 - .../Highlight/languages/nimrod.json | 83 - .../Highlight/languages/nix.json | 84 - .../Highlight/languages/nsis.json | 127 - .../Highlight/languages/objectivec.json | 147 - .../Highlight/languages/ocaml.json | 84 - .../Highlight/languages/openscad.json | 108 - .../Highlight/languages/oxygene.json | 133 - .../Highlight/languages/parser3.json | 79 - .../Highlight/languages/perl.json | 208 - .../highlight.php/Highlight/languages/pf.json | 54 - .../Highlight/languages/pgsql.json | 330 -- .../Highlight/languages/php.json | 261 -- .../Highlight/languages/plaintext.json | 3 - .../Highlight/languages/pony.json | 81 - .../Highlight/languages/powershell.json | 270 -- .../Highlight/languages/processing.json | 68 - .../Highlight/languages/profile.json | 61 - .../Highlight/languages/prolog.json | 150 - .../Highlight/languages/properties.json | 68 - .../Highlight/languages/protobuf.json | 70 - .../Highlight/languages/puppet.json | 123 - .../Highlight/languages/purebasic.json | 58 - .../Highlight/languages/python.json | 268 -- .../highlight.php/Highlight/languages/q.json | 47 - .../Highlight/languages/qml.json | 228 -- .../highlight.php/Highlight/languages/r.json | 77 - .../Highlight/languages/reasonml.json | 344 -- .../Highlight/languages/rib.json | 49 - .../Highlight/languages/roboconf.json | 82 - .../Highlight/languages/routeros.json | 174 - .../Highlight/languages/rsl.json | 81 - .../Highlight/languages/ruby.json | 385 -- .../Highlight/languages/ruleslanguage.json | 78 - .../Highlight/languages/rust.json | 152 - .../Highlight/languages/sas.json | 96 - .../Highlight/languages/scala.json | 163 - .../Highlight/languages/scheme.json | 190 - .../Highlight/languages/scilab.json | 83 - .../Highlight/languages/scss.json | 154 - .../Highlight/languages/shell.json | 15 - .../Highlight/languages/smali.json | 72 - .../Highlight/languages/smalltalk.json | 86 - .../Highlight/languages/sml.json | 83 - .../Highlight/languages/sqf.json | 114 - .../Highlight/languages/sql.json | 103 - .../Highlight/languages/stan.json | 102 - .../Highlight/languages/stata.json | 82 - .../Highlight/languages/step21.json | 112 - .../Highlight/languages/stylus.json | 168 - .../Highlight/languages/subunit.json | 36 - .../Highlight/languages/swift.json | 173 - .../Highlight/languages/taggerscript.json | 37 - .../Highlight/languages/tap.json | 52 - .../Highlight/languages/tcl.json | 102 - .../Highlight/languages/tex.json | 87 - .../Highlight/languages/thrift.json | 81 - .../highlight.php/Highlight/languages/tp.json | 130 - .../Highlight/languages/twig.json | 79 - .../Highlight/languages/typescript.json | 334 -- .../Highlight/languages/vala.json | 93 - .../Highlight/languages/vbnet.json | 73 - .../Highlight/languages/vbscript-html.json | 10 - .../Highlight/languages/vbscript.json | 46 - .../Highlight/languages/verilog.json | 99 - .../Highlight/languages/vhdl.json | 76 - .../Highlight/languages/vim.json | 66 - .../Highlight/languages/x86asm.json | 98 - .../highlight.php/Highlight/languages/xl.json | 100 - .../Highlight/languages/xml.json | 260 -- .../Highlight/languages/xquery.json | 133 - .../Highlight/languages/yaml.json | 123 - .../Highlight/languages/zephir.json | 224 -- .../HighlightUtilities/_internals.php | 46 - .../HighlightUtilities/_themeColors.php | 479 --- .../HighlightUtilities/functions.php | 254 -- vendor/scrivo/highlight.php/LICENSE.md | 30 - vendor/scrivo/highlight.php/README.md | 146 - vendor/scrivo/highlight.php/composer.json | 61 - .../scrivo/highlight.php/styles/a11y-dark.css | 99 - .../highlight.php/styles/a11y-light.css | 99 - vendor/scrivo/highlight.php/styles/agate.css | 108 - .../highlight.php/styles/an-old-hope.css | 89 - .../highlight.php/styles/androidstudio.css | 66 - .../highlight.php/styles/arduino-light.css | 87 - vendor/scrivo/highlight.php/styles/arta.css | 73 - .../scrivo/highlight.php/styles/ascetic.css | 45 - .../styles/atelier-cave-dark.css | 83 - .../styles/atelier-cave-light.css | 85 - .../styles/atelier-dune-dark.css | 69 - .../styles/atelier-dune-light.css | 69 - .../styles/atelier-estuary-dark.css | 84 - .../styles/atelier-estuary-light.css | 84 - .../styles/atelier-forest-dark.css | 69 - .../styles/atelier-forest-light.css | 69 - .../styles/atelier-heath-dark.css | 69 - .../styles/atelier-heath-light.css | 69 - .../styles/atelier-lakeside-dark.css | 69 - .../styles/atelier-lakeside-light.css | 69 - .../styles/atelier-plateau-dark.css | 84 - .../styles/atelier-plateau-light.css | 84 - .../styles/atelier-savanna-dark.css | 84 - .../styles/atelier-savanna-light.css | 84 - .../styles/atelier-seaside-dark.css | 69 - .../styles/atelier-seaside-light.css | 69 - .../styles/atelier-sulphurpool-dark.css | 69 - .../styles/atelier-sulphurpool-light.css | 69 - .../styles/atom-one-dark-reasonable.css | 75 - .../highlight.php/styles/atom-one-dark.css | 96 - .../highlight.php/styles/atom-one-light.css | 96 - .../highlight.php/styles/brown-paper.css | 64 - .../highlight.php/styles/brown-papersq.png | Bin 18198 -> 0 bytes .../highlight.php/styles/codepen-embed.css | 60 - .../highlight.php/styles/color-brewer.css | 71 - .../scrivo/highlight.php/styles/darcula.css | 74 - vendor/scrivo/highlight.php/styles/dark.css | 63 - .../scrivo/highlight.php/styles/darkula.css | 6 - .../scrivo/highlight.php/styles/default.css | 99 - vendor/scrivo/highlight.php/styles/docco.css | 97 - .../scrivo/highlight.php/styles/dracula.css | 76 - vendor/scrivo/highlight.php/styles/far.css | 71 - .../highlight.php/styles/foundation.css | 89 - .../highlight.php/styles/github-gist.css | 79 - vendor/scrivo/highlight.php/styles/github.css | 99 - vendor/scrivo/highlight.php/styles/gml.css | 78 - .../highlight.php/styles/googlecode.css | 89 - .../highlight.php/styles/gradient-dark.css | 122 - .../scrivo/highlight.php/styles/grayscale.css | 101 - .../highlight.php/styles/gruvbox-dark.css | 108 - .../highlight.php/styles/gruvbox-light.css | 108 - .../scrivo/highlight.php/styles/hopscotch.css | 84 - vendor/scrivo/highlight.php/styles/hybrid.css | 102 - vendor/scrivo/highlight.php/styles/idea.css | 97 - .../scrivo/highlight.php/styles/ir-black.css | 73 - .../highlight.php/styles/isbl-editor-dark.css | 112 - .../styles/isbl-editor-light.css | 111 - .../highlight.php/styles/kimbie.dark.css | 74 - .../highlight.php/styles/kimbie.light.css | 74 - .../scrivo/highlight.php/styles/lightfair.css | 88 - vendor/scrivo/highlight.php/styles/magula.css | 70 - .../scrivo/highlight.php/styles/mono-blue.css | 56 - .../highlight.php/styles/monokai-sublime.css | 83 - .../scrivo/highlight.php/styles/monokai.css | 71 - .../scrivo/highlight.php/styles/night-owl.css | 182 - vendor/scrivo/highlight.php/styles/nord.css | 309 -- .../scrivo/highlight.php/styles/obsidian.css | 88 - vendor/scrivo/highlight.php/styles/ocean.css | 74 - .../highlight.php/styles/paraiso-dark.css | 72 - .../highlight.php/styles/paraiso-light.css | 72 - .../scrivo/highlight.php/styles/pojoaque.css | 83 - .../scrivo/highlight.php/styles/pojoaque.jpg | Bin 1186 -> 0 bytes .../scrivo/highlight.php/styles/purebasic.css | 96 - .../highlight.php/styles/qtcreator_dark.css | 83 - .../highlight.php/styles/qtcreator_light.css | 83 - .../highlight.php/styles/railscasts.css | 106 - .../scrivo/highlight.php/styles/rainbow.css | 85 - .../scrivo/highlight.php/styles/routeros.css | 108 - .../highlight.php/styles/school-book.css | 69 - .../highlight.php/styles/school-book.png | Bin 486 -> 0 bytes .../highlight.php/styles/shades-of-purple.css | 96 - .../highlight.php/styles/solarized-dark.css | 84 - .../highlight.php/styles/solarized-light.css | 84 - .../scrivo/highlight.php/styles/sunburst.css | 102 - .../styles/tomorrow-night-blue.css | 75 - .../styles/tomorrow-night-bright.css | 74 - .../styles/tomorrow-night-eighties.css | 74 - .../highlight.php/styles/tomorrow-night.css | 75 - .../scrivo/highlight.php/styles/tomorrow.css | 72 - vendor/scrivo/highlight.php/styles/vs.css | 68 - vendor/scrivo/highlight.php/styles/vs2015.css | 115 - vendor/scrivo/highlight.php/styles/xcode.css | 104 - vendor/scrivo/highlight.php/styles/xt256.css | 92 - .../scrivo/highlight.php/styles/zenburn.css | 80 - vendor/sebastian/cli-parser/ChangeLog.md | 15 + vendor/sebastian/cli-parser/LICENSE | 33 + vendor/sebastian/cli-parser/README.md | 17 + vendor/sebastian/cli-parser/composer.json | 41 + vendor/sebastian/cli-parser/infection.json | 12 + vendor/sebastian/cli-parser/src/Parser.php | 204 + .../exceptions/AmbiguousOptionException.php | 26 + .../cli-parser/src/exceptions/Exception.php | 16 + .../OptionDoesNotAllowArgumentException.php | 26 + ...RequiredOptionArgumentMissingException.php | 26 + .../src/exceptions/UnknownOptionException.php | 26 + .../code-unit-reverse-lookup/.gitignore | 4 - .../code-unit-reverse-lookup/.php_cs | 67 - .../code-unit-reverse-lookup/.travis.yml | 25 - .../code-unit-reverse-lookup/ChangeLog.md | 29 +- .../code-unit-reverse-lookup/LICENSE | 2 +- .../code-unit-reverse-lookup/README.md | 14 +- .../code-unit-reverse-lookup/build.xml | 22 - .../code-unit-reverse-lookup/composer.json | 14 +- .../code-unit-reverse-lookup/phpunit.xml | 21 - .../code-unit-reverse-lookup/src/Wizard.php | 46 +- .../tests/WizardTest.php | 45 - .../sebastian/code-unit/.psalm/baseline.xml | 23 + vendor/sebastian/code-unit/.psalm/config.xml | 16 + vendor/sebastian/code-unit/ChangeLog.md | 65 + vendor/sebastian/code-unit/LICENSE | 33 + vendor/sebastian/code-unit/README.md | 17 + vendor/sebastian/code-unit/composer.json | 50 + .../code-unit/src/ClassMethodUnit.php | 24 + vendor/sebastian/code-unit/src/ClassUnit.php | 24 + vendor/sebastian/code-unit/src/CodeUnit.php | 445 +++ .../code-unit/src/CodeUnitCollection.php | 84 + .../src/CodeUnitCollectionIterator.php | 55 + .../sebastian/code-unit/src/FunctionUnit.php | 24 + .../code-unit/src/InterfaceMethodUnit.php | 24 + .../sebastian/code-unit/src/InterfaceUnit.php | 24 + vendor/sebastian/code-unit/src/Mapper.php | 414 ++ .../code-unit/src/TraitMethodUnit.php | 24 + vendor/sebastian/code-unit/src/TraitUnit.php | 24 + .../code-unit/src/exceptions/Exception.php | 16 + .../exceptions/InvalidCodeUnitException.php | 16 + .../src/exceptions/NoTraitException.php | 16 + .../src/exceptions/ReflectionException.php | 16 + vendor/sebastian/comparator/ChangeLog.md | 63 + vendor/sebastian/comparator/LICENSE | 2 +- vendor/sebastian/comparator/README.md | 14 +- vendor/sebastian/comparator/composer.json | 13 +- .../comparator/src/ArrayComparator.php | 39 +- .../sebastian/comparator/src/Comparator.php | 4 +- .../comparator/src/ComparisonFailure.php | 9 +- .../comparator/src/DOMNodeComparator.php | 17 +- .../comparator/src/DateTimeComparator.php | 37 +- .../comparator/src/DoubleComparator.php | 11 +- .../comparator/src/ExceptionComparator.php | 6 +- vendor/sebastian/comparator/src/Factory.php | 20 +- .../comparator/src/MockObjectComparator.php | 9 +- .../comparator/src/NumericComparator.php | 38 +- .../comparator/src/ObjectComparator.php | 26 +- .../comparator/src/ResourceComparator.php | 8 +- .../comparator/src/ScalarComparator.php | 30 +- .../src/SplObjectStorageComparator.php | 8 +- .../comparator/src/TypeComparator.php | 13 +- .../comparator/src/exceptions/Exception.php | 16 + .../src/exceptions/RuntimeException.php | 14 + .../sebastian/complexity/.psalm/baseline.xml | 2 + vendor/sebastian/complexity/.psalm/config.xml | 16 + vendor/sebastian/complexity/ChangeLog.md | 30 + vendor/sebastian/complexity/LICENSE | 33 + vendor/sebastian/complexity/README.md | 22 + vendor/sebastian/complexity/composer.json | 41 + .../sebastian/complexity/src/Calculator.php | 88 + .../complexity/src/Complexity/Complexity.php | 42 + .../src/Complexity/ComplexityCollection.php | 72 + .../ComplexityCollectionIterator.php | 55 + .../complexity/src/Exception/Exception.php | 16 + .../src/Exception/RuntimeException.php | 14 + .../Visitor/ComplexityCalculatingVisitor.php | 109 + ...CyclomaticComplexityCalculatingVisitor.php | 59 + vendor/sebastian/diff/.github/stale.yml | 40 - vendor/sebastian/diff/.gitignore | 6 - vendor/sebastian/diff/.php_cs.dist | 168 - vendor/sebastian/diff/.travis.yml | 26 - vendor/sebastian/diff/ChangeLog.md | 40 +- vendor/sebastian/diff/LICENSE | 2 +- vendor/sebastian/diff/README.md | 15 +- vendor/sebastian/diff/build.xml | 22 - vendor/sebastian/diff/composer.json | 16 +- vendor/sebastian/diff/phpunit.xml | 21 - vendor/sebastian/diff/src/Chunk.php | 1 - vendor/sebastian/diff/src/Diff.php | 3 - vendor/sebastian/diff/src/Differ.php | 125 +- .../src/Exception/ConfigurationException.php | 20 +- .../diff/src/Exception/Exception.php | 5 +- .../Exception/InvalidArgumentException.php | 1 - vendor/sebastian/diff/src/Line.php | 3 +- .../LongestCommonSubsequenceCalculator.php | 6 - ...ientLongestCommonSubsequenceCalculator.php | 35 +- .../src/Output/AbstractChunkOutputBuilder.php | 10 +- .../diff/src/Output/DiffOnlyOutputBuilder.php | 28 +- .../src/Output/DiffOutputBuilderInterface.php | 1 - .../Output/StrictUnifiedDiffOutputBuilder.php | 114 +- .../src/Output/UnifiedDiffOutputBuilder.php | 80 +- vendor/sebastian/diff/src/Parser.php | 38 +- ...ientLongestCommonSubsequenceCalculator.php | 16 +- vendor/sebastian/diff/tests/ChunkTest.php | 73 - vendor/sebastian/diff/tests/DiffTest.php | 55 - vendor/sebastian/diff/tests/DifferTest.php | 444 --- .../Exception/ConfigurationExceptionTest.php | 41 - .../InvalidArgumentExceptionTest.php | 33 - vendor/sebastian/diff/tests/LineTest.php | 44 - .../tests/LongestCommonSubsequenceTest.php | 201 - .../MemoryEfficientImplementationTest.php | 22 - .../Output/AbstractChunkOutputBuilderTest.php | 152 - .../Output/DiffOnlyOutputBuilderTest.php | 76 - ...nifiedDiffOutputBuilderIntegrationTest.php | 299 -- ...nifiedDiffOutputBuilderIntegrationTest.php | 163 - ...ctUnifiedDiffOutputBuilderDataProvider.php | 189 - .../StrictUnifiedDiffOutputBuilderTest.php | 684 ---- .../UnifiedDiffOutputBuilderDataProvider.php | 396 -- .../Output/UnifiedDiffOutputBuilderTest.php | 90 - vendor/sebastian/diff/tests/ParserTest.php | 170 - .../tests/TimeEfficientImplementationTest.php | 22 - .../sebastian/diff/tests/Utils/FileUtils.php | 31 - .../tests/Utils/UnifiedDiffAssertTrait.php | 277 -- .../UnifiedDiffAssertTraitIntegrationTest.php | 129 - .../Utils/UnifiedDiffAssertTraitTest.php | 434 -- .../diff/tests/fixtures/.editorconfig | 1 - .../1_a.txt | 1 - .../1_b.txt | 0 .../2_a.txt | 35 - .../2_b.txt | 18 - .../diff/tests/fixtures/out/.editorconfig | 1 - .../diff/tests/fixtures/out/.gitignore | 2 - .../sebastian/diff/tests/fixtures/patch.txt | 9 - .../sebastian/diff/tests/fixtures/patch2.txt | 21 - .../diff/tests/fixtures/serialized_diff.bin | Bin 4143 -> 0 bytes .../sebastian/environment/.github/FUNDING.yml | 1 - vendor/sebastian/environment/.gitignore | 6 - vendor/sebastian/environment/.php_cs.dist | 199 - vendor/sebastian/environment/.travis.yml | 28 - vendor/sebastian/environment/ChangeLog.md | 107 +- vendor/sebastian/environment/LICENSE | 2 +- vendor/sebastian/environment/README.md | 16 +- vendor/sebastian/environment/build.xml | 19 - vendor/sebastian/environment/composer.json | 9 +- vendor/sebastian/environment/phpunit.xml | 20 - vendor/sebastian/environment/src/Console.php | 83 +- .../environment/src/OperatingSystem.php | 13 +- vendor/sebastian/environment/src/Runtime.php | 138 +- .../environment/tests/ConsoleTest.php | 64 - .../environment/tests/OperatingSystemTest.php | 60 - .../environment/tests/RuntimeTest.php | 165 - vendor/sebastian/exporter/ChangeLog.md | 42 + vendor/sebastian/exporter/README.md | 31 +- vendor/sebastian/exporter/composer.json | 13 +- vendor/sebastian/exporter/src/Exporter.php | 184 +- .../sebastian/global-state/.github/stale.yml | 40 - vendor/sebastian/global-state/.gitignore | 6 - vendor/sebastian/global-state/.php_cs.dist | 197 - vendor/sebastian/global-state/.travis.yml | 24 - vendor/sebastian/global-state/ChangeLog.md | 49 + vendor/sebastian/global-state/README.md | 16 +- vendor/sebastian/global-state/build.xml | 19 - vendor/sebastian/global-state/composer.json | 13 +- vendor/sebastian/global-state/phpunit.xml | 27 - .../sebastian/global-state/src/Blacklist.php | 118 - .../global-state/src/CodeExporter.php | 40 +- .../global-state/src/ExcludeList.php | 119 + .../sebastian/global-state/src/Restorer.php | 41 +- .../sebastian/global-state/src/Snapshot.php | 114 +- .../global-state/src/exceptions/Exception.php | 4 +- .../global-state/tests/BlacklistTest.php | 117 - .../global-state/tests/CodeExporterTest.php | 35 - .../global-state/tests/RestorerTest.php | 68 - .../global-state/tests/SnapshotTest.php | 120 - .../tests/_fixture/BlacklistedChildClass.php | 14 - .../tests/_fixture/BlacklistedClass.php | 15 - .../tests/_fixture/BlacklistedImplementor.php | 15 - .../tests/_fixture/BlacklistedInterface.php | 14 - .../tests/_fixture/SnapshotClass.php | 35 - .../tests/_fixture/SnapshotDomDocument.php | 16 - .../tests/_fixture/SnapshotFunctions.php | 14 - .../tests/_fixture/SnapshotTrait.php | 14 - .../lines-of-code/.psalm/baseline.xml | 2 + .../sebastian/lines-of-code/.psalm/config.xml | 16 + vendor/sebastian/lines-of-code/ChangeLog.md | 34 + vendor/sebastian/lines-of-code/LICENSE | 33 + vendor/sebastian/lines-of-code/README.md | 22 + vendor/sebastian/lines-of-code/composer.json | 42 + .../sebastian/lines-of-code/src/Counter.php | 91 + .../lines-of-code/src/Exception/Exception.php | 16 + .../Exception/IllogicalValuesException.php | 16 + .../src/Exception/NegativeValueException.php | 16 + .../src/Exception/RuntimeException.php | 14 + .../lines-of-code/src/LineCountingVisitor.php | 82 + .../lines-of-code/src/LinesOfCode.php | 98 + vendor/sebastian/object-enumerator/.gitignore | 8 - vendor/sebastian/object-enumerator/.php_cs | 67 - .../object-enumerator/.psalm/baseline.xml | 9 + .../object-enumerator/.psalm/config.xml | 16 + .../sebastian/object-enumerator/.travis.yml | 26 - .../sebastian/object-enumerator/ChangeLog.md | 34 +- vendor/sebastian/object-enumerator/LICENSE | 2 +- vendor/sebastian/object-enumerator/README.md | 14 +- vendor/sebastian/object-enumerator/build.xml | 22 - .../sebastian/object-enumerator/composer.json | 18 +- .../sebastian/object-enumerator/phpunit.xml | 24 +- .../object-enumerator/src/Enumerator.php | 9 +- .../object-enumerator/src/Exception.php | 9 +- .../src/InvalidArgumentException.php | 5 +- .../tests/EnumeratorTest.php | 139 - .../tests/_fixture/ExceptionThrower.php | 28 - vendor/sebastian/object-reflector/.gitignore | 4 - vendor/sebastian/object-reflector/.php_cs | 79 - .../object-reflector/.psalm/baseline.xml | 8 + .../object-reflector/.psalm/config.xml | 16 + vendor/sebastian/object-reflector/.travis.yml | 26 - .../sebastian/object-reflector/ChangeLog.md | 44 +- vendor/sebastian/object-reflector/LICENSE | 2 +- vendor/sebastian/object-reflector/README.md | 14 +- vendor/sebastian/object-reflector/build.xml | 22 - .../sebastian/object-reflector/composer.json | 14 +- vendor/sebastian/object-reflector/phpunit.xml | 19 - .../object-reflector/src/Exception.php | 11 +- .../src/InvalidArgumentException.php | 7 +- .../object-reflector/src/ObjectReflector.php | 14 +- .../tests/ObjectReflectorTest.php | 70 - .../tests/_fixture/ChildClass.php | 25 - .../ClassWithIntegerAttributeName.php | 22 - .../tests/_fixture/ParentClass.php | 20 - vendor/sebastian/recursion-context/.gitignore | 3 - .../recursion-context/.psalm/baseline.xml | 8 + .../recursion-context/.psalm/config.xml | 16 + .../sebastian/recursion-context/.travis.yml | 23 - .../sebastian/recursion-context/ChangeLog.md | 33 + vendor/sebastian/recursion-context/LICENSE | 2 +- vendor/sebastian/recursion-context/README.md | 14 +- vendor/sebastian/recursion-context/build.xml | 21 - .../sebastian/recursion-context/composer.json | 14 +- .../sebastian/recursion-context/phpunit.xml | 19 - .../recursion-context/src/Context.php | 85 +- .../recursion-context/src/Exception.php | 9 +- .../src/InvalidArgumentException.php | 5 +- .../recursion-context/tests/ContextTest.php | 142 - .../resource-operations/.gitattributes | 7 + .../resource-operations/.github/stale.yml | 40 - .../sebastian/resource-operations/.gitignore | 1 + .../resource-operations/.php_cs.dist | 191 - .../resource-operations/ChangeLog.md | 31 +- vendor/sebastian/resource-operations/LICENSE | 2 +- .../sebastian/resource-operations/build.xml | 38 - .../resource-operations/composer.json | 10 +- .../tests/ResourceOperationsTest.php | 26 - vendor/sebastian/type/.gitattributes | 2 - vendor/sebastian/type/.github/FUNDING.yml | 1 - vendor/sebastian/type/.gitignore | 72 - .../inspectionProfiles/Project_Default.xml | 499 --- vendor/sebastian/type/.idea/misc.xml | 6 - vendor/sebastian/type/.idea/modules.xml | 8 - .../.idea/php-inspections-ea-ultimate.xml | 20 - vendor/sebastian/type/.idea/php.xml | 42 - vendor/sebastian/type/.idea/type.iml | 40 - vendor/sebastian/type/.idea/vcs.xml | 6 - vendor/sebastian/type/.php_cs.dist | 200 - vendor/sebastian/type/.travis.yml | 53 - vendor/sebastian/type/ChangeLog.md | 123 +- vendor/sebastian/type/LICENSE | 2 +- vendor/sebastian/type/README.md | 3 + vendor/sebastian/type/build.xml | 31 - vendor/sebastian/type/composer.json | 11 +- vendor/sebastian/type/phive.xml | 5 - vendor/sebastian/type/phpunit.xml | 23 - vendor/sebastian/type/psalm.xml | 53 - vendor/sebastian/type/src/CallableType.php | 182 - vendor/sebastian/type/src/IterableType.php | 67 - vendor/sebastian/type/src/NullType.php | 28 - vendor/sebastian/type/src/ObjectType.php | 63 - vendor/sebastian/type/src/Parameter.php | 42 + .../sebastian/type/src/ReflectionMapper.php | 184 + vendor/sebastian/type/src/Type.php | 75 - vendor/sebastian/type/src/TypeName.php | 22 +- vendor/sebastian/type/src/UnknownType.php | 28 - vendor/sebastian/type/src/VoidType.php | 28 - .../type/src/exception/Exception.php | 4 +- .../sebastian/type/src/type/CallableType.php | 204 + vendor/sebastian/type/src/type/FalseType.php | 42 + .../type/src/{ => type}/GenericObjectType.php | 12 +- .../type/src/type/IntersectionType.php | 126 + .../sebastian/type/src/type/IterableType.php | 84 + vendor/sebastian/type/src/type/MixedType.php | 41 + vendor/sebastian/type/src/type/NeverType.php | 36 + vendor/sebastian/type/src/type/NullType.php | 41 + vendor/sebastian/type/src/type/ObjectType.php | 74 + .../type/src/{ => type}/SimpleType.php | 24 +- vendor/sebastian/type/src/type/StaticType.php | 68 + vendor/sebastian/type/src/type/TrueType.php | 42 + vendor/sebastian/type/src/type/Type.php | 226 ++ vendor/sebastian/type/src/type/UnionType.php | 138 + .../sebastian/type/src/type/UnknownType.php | 41 + vendor/sebastian/type/src/type/VoidType.php | 36 + .../type/tests/_fixture/ChildClass.php | 14 - .../_fixture/ClassWithCallbackMethods.php | 21 - .../tests/_fixture/ClassWithInvokeMethod.php | 17 - .../type/tests/_fixture/Iterator.php | 33 - .../type/tests/_fixture/ParentClass.php | 17 - .../type/tests/_fixture/callback_function.php | 14 - .../type/tests/unit/CallableTypeTest.php | 150 - .../type/tests/unit/GenericObjectTypeTest.php | 86 - .../type/tests/unit/IterableTypeTest.php | 97 - .../type/tests/unit/NullTypeTest.php | 72 - .../type/tests/unit/ObjectTypeTest.php | 140 - .../type/tests/unit/SimpleTypeTest.php | 162 - .../type/tests/unit/TypeNameTest.php | 59 - vendor/sebastian/type/tests/unit/TypeTest.php | 85 - .../type/tests/unit/UnknownTypeTest.php | 58 - .../type/tests/unit/VoidTypeTest.php | 70 - vendor/sebastian/version/.gitattributes | 3 + vendor/sebastian/version/.gitignore | 1 + vendor/sebastian/version/.php_cs | 66 - vendor/sebastian/version/ChangeLog.md | 25 + vendor/sebastian/version/LICENSE | 2 +- vendor/sebastian/version/composer.json | 12 +- vendor/sebastian/version/src/Version.php | 44 +- vendor/symfony/console/Application.php | 329 +- .../symfony/console/Attribute/AsCommand.php | 39 + vendor/symfony/console/CHANGELOG.md | 55 + .../console/CI/GithubActionReporter.php | 99 + vendor/symfony/console/Color.php | 180 + vendor/symfony/console/Command/Command.php | 195 +- .../console/Command/CompleteCommand.php | 205 + .../console/Command/DumpCompletionCommand.php | 139 + .../symfony/console/Command/HelpCommand.php | 22 +- .../symfony/console/Command/LazyCommand.php | 218 + .../symfony/console/Command/ListCommand.php | 46 +- .../symfony/console/Command/LockableTrait.php | 4 +- .../Command/SignalableCommandInterface.php | 30 + .../CommandLoader/CommandLoaderInterface.php | 10 +- .../CommandLoader/ContainerCommandLoader.php | 4 +- .../CommandLoader/FactoryCommandLoader.php | 4 +- .../console/Completion/CompletionInput.php | 249 ++ .../Completion/CompletionSuggestions.php | 99 + .../Output/BashCompletionOutput.php | 33 + .../Output/CompletionOutputInterface.php | 25 + .../symfony/console/Completion/Suggestion.php | 37 + vendor/symfony/console/ConsoleEvents.php | 25 + vendor/symfony/console/Cursor.php | 207 + .../AddConsoleCommandPass.php | 60 +- .../Descriptor/ApplicationDescription.php | 4 +- .../symfony/console/Descriptor/Descriptor.php | 9 +- .../Descriptor/DescriptorInterface.php | 7 +- .../console/Descriptor/JsonDescriptor.php | 51 +- .../console/Descriptor/MarkdownDescriptor.php | 44 +- .../console/Descriptor/TextDescriptor.php | 29 +- .../console/Descriptor/XmlDescriptor.php | 48 +- .../console/Event/ConsoleCommandEvent.php | 19 +- vendor/symfony/console/Event/ConsoleEvent.php | 8 +- .../console/Event/ConsoleSignalEvent.php | 35 + .../console/Event/ConsoleTerminateEvent.php | 20 +- .../Exception/CommandNotFoundException.php | 2 +- .../console/Formatter/NullOutputFormatter.php | 69 + .../Formatter/NullOutputFormatterStyle.php | 66 + .../console/Formatter/OutputFormatter.php | 26 +- .../Formatter/OutputFormatterInterface.php | 26 +- .../Formatter/OutputFormatterStyle.php | 125 +- .../OutputFormatterStyleInterface.php | 20 +- .../WrappableOutputFormatterInterface.php | 2 +- .../console/Helper/DebugFormatterHelper.php | 27 +- .../console/Helper/DescriptorHelper.php | 13 +- .../console/Helper/FormatterHelper.php | 28 +- vendor/symfony/console/Helper/Helper.php | 72 +- .../console/Helper/HelperInterface.php | 4 +- vendor/symfony/console/Helper/HelperSet.php | 38 +- .../symfony/console/Helper/ProcessHelper.php | 28 +- vendor/symfony/console/Helper/ProgressBar.php | 110 +- .../console/Helper/ProgressIndicator.php | 69 +- .../symfony/console/Helper/QuestionHelper.php | 116 +- .../console/Helper/SymfonyQuestionHelper.php | 13 + vendor/symfony/console/Helper/Table.php | 106 +- vendor/symfony/console/Helper/TableCell.php | 10 + .../symfony/console/Helper/TableCellStyle.php | 89 + vendor/symfony/console/Helper/TableRows.php | 6 +- vendor/symfony/console/Helper/TableStyle.php | 114 +- vendor/symfony/console/Input/ArgvInput.php | 68 +- vendor/symfony/console/Input/ArrayInput.php | 13 +- vendor/symfony/console/Input/Input.php | 42 +- .../symfony/console/Input/InputArgument.php | 4 +- .../symfony/console/Input/InputDefinition.php | 112 +- .../symfony/console/Input/InputInterface.php | 44 +- vendor/symfony/console/Input/InputOption.php | 32 +- .../symfony/console/Output/BufferedOutput.php | 2 +- .../symfony/console/Output/ConsoleOutput.php | 4 +- .../console/Output/ConsoleOutputInterface.php | 4 +- .../console/Output/ConsoleSectionOutput.php | 6 +- vendor/symfony/console/Output/NullOutput.php | 17 +- vendor/symfony/console/Output/Output.php | 19 +- .../console/Output/OutputInterface.php | 24 +- .../symfony/console/Output/StreamOutput.php | 16 +- .../console/Output/TrimmedBufferOutput.php | 2 +- .../console/Question/ChoiceQuestion.php | 15 +- vendor/symfony/console/Question/Question.php | 59 +- vendor/symfony/console/README.md | 16 + .../symfony/console/Resources/completion.bash | 84 + .../console/SignalRegistry/SignalRegistry.php | 65 + .../console/SingleCommandApplication.php | 72 + vendor/symfony/console/Style/OutputStyle.php | 14 +- .../symfony/console/Style/StyleInterface.php | 39 +- vendor/symfony/console/Style/SymfonyStyle.php | 114 +- vendor/symfony/console/Terminal.php | 4 +- .../console/Tester/ApplicationTester.php | 7 +- .../Tester/CommandCompletionTester.php | 56 + .../symfony/console/Tester/CommandTester.php | 2 - .../Tester/Constraint/CommandIsSuccessful.php | 55 + vendor/symfony/console/Tester/TesterTrait.php | 31 +- vendor/symfony/console/composer.json | 29 +- .../css-selector/CssSelectorConverter.php | 14 +- .../Exception/SyntaxErrorException.php | 13 +- .../css-selector/Parser/TokenStream.php | 8 +- .../Parser/Tokenizer/TokenizerPatterns.php | 8 +- .../symfony/css-selector/XPath/Translator.php | 2 +- .../symfony/css-selector/XPath/XPathExpr.php | 9 + vendor/symfony/css-selector/composer.json | 2 +- vendor/symfony/debug/BufferingLogger.php | 44 - vendor/symfony/debug/CHANGELOG.md | 83 - vendor/symfony/debug/Debug.php | 64 - vendor/symfony/debug/DebugClassLoader.php | 538 --- vendor/symfony/debug/ErrorHandler.php | 709 ---- .../Exception/ClassNotFoundException.php | 40 - .../debug/Exception/FatalErrorException.php | 80 - .../debug/Exception/FatalThrowableError.php | 55 - .../debug/Exception/FlattenException.php | 367 -- .../debug/Exception/OutOfMemoryException.php | 25 - .../debug/Exception/SilencedErrorContext.php | 71 - .../Exception/UndefinedFunctionException.php | 40 - .../Exception/UndefinedMethodException.php | 40 - vendor/symfony/debug/ExceptionHandler.php | 470 --- .../ClassNotFoundFatalErrorHandler.php | 183 - .../FatalErrorHandlerInterface.php | 35 - .../UndefinedFunctionFatalErrorHandler.php | 88 - .../UndefinedMethodFatalErrorHandler.php | 70 - vendor/symfony/debug/LICENSE | 19 - vendor/symfony/debug/README.md | 30 - vendor/symfony/debug/composer.json | 35 - .../dom-crawler/AbstractUriElement.php | 81 +- vendor/symfony/dom-crawler/CHANGELOG.md | 24 + vendor/symfony/dom-crawler/Crawler.php | 223 +- .../dom-crawler/Field/ChoiceFormField.php | 17 +- .../dom-crawler/Field/FileFormField.php | 14 +- .../symfony/dom-crawler/Field/FormField.php | 12 +- vendor/symfony/dom-crawler/Form.php | 44 +- .../symfony/dom-crawler/FormFieldRegistry.php | 10 +- vendor/symfony/dom-crawler/UriResolver.php | 136 + vendor/symfony/dom-crawler/composer.json | 5 +- vendor/symfony/error-handler/CHANGELOG.md | 16 + .../error-handler/DebugClassLoader.php | 546 ++- .../ClassNotFoundErrorEnhancer.php | 14 +- vendor/symfony/error-handler/ErrorHandler.php | 31 +- .../ErrorRenderer/HtmlErrorRenderer.php | 43 +- .../ErrorRenderer/SerializerErrorRenderer.php | 15 +- .../Exception/FlattenException.php | 55 +- .../error-handler/Internal/TentativeTypes.php | 1643 ++++++++ vendor/symfony/error-handler/README.md | 3 + .../Resources/assets/css/exception.css | 59 +- .../Resources/assets/images/icon-copy.svg | 1 + .../Resources/assets/js/exception.js | 17 + .../bin/extract-tentative-return-types.php | 84 + .../Resources/bin/patch-type-declarations | 98 + .../Resources/views/exception_full.html.php | 6 + .../Resources/views/logs.html.php | 2 +- .../Resources/views/trace.html.php | 3 + .../Resources/views/traces.html.php | 31 +- .../Resources/views/traces_text.html.php | 4 +- vendor/symfony/error-handler/composer.json | 13 +- .../CHANGELOG.md | 0 .../event-dispatcher-contracts/Event.php | 100 +- .../EventDispatcherInterface.php | 53 +- .../event-dispatcher-contracts/composer.json | 6 +- .../Attribute/AsEventListener.php | 29 + vendor/symfony/event-dispatcher/CHANGELOG.md | 24 + .../Debug/TraceableEventDispatcher.php | 97 +- .../TraceableEventDispatcherInterface.php | 42 - .../Debug/WrappedListener.php | 29 +- .../AddEventAliasesPass.php | 4 + .../RegisterListenersPass.php | 80 +- vendor/symfony/event-dispatcher/Event.php | 38 - .../event-dispatcher/EventDispatcher.php | 54 +- .../EventDispatcherInterface.php | 32 +- .../EventSubscriberInterface.php | 2 +- .../symfony/event-dispatcher/GenericEvent.php | 26 +- .../ImmutableEventDispatcher.php | 25 +- .../LegacyEventDispatcherProxy.php | 132 +- .../event-dispatcher/LegacyEventProxy.php | 62 - vendor/symfony/event-dispatcher/composer.json | 23 +- vendor/symfony/finder/CHANGELOG.md | 13 + .../symfony/finder/Comparator/Comparator.php | 57 +- .../finder/Comparator/DateComparator.php | 3 +- .../finder/Comparator/NumberComparator.php | 3 +- vendor/symfony/finder/Finder.php | 49 +- vendor/symfony/finder/Gitignore.php | 14 +- vendor/symfony/finder/Glob.php | 9 +- .../finder/Iterator/CustomFilterIterator.php | 8 +- .../Iterator/DateRangeFilterIterator.php | 8 +- .../Iterator/DepthRangeFilterIterator.php | 13 +- .../ExcludeDirectoryFilterIterator.php | 5 +- .../Iterator/FileTypeFilterIterator.php | 4 +- .../Iterator/FilecontentFilterIterator.php | 8 +- .../Iterator/FilenameFilterIterator.php | 8 +- .../Iterator/MultiplePcreFilterIterator.php | 25 +- .../finder/Iterator/PathFilterIterator.php | 8 +- .../Iterator/RecursiveDirectoryIterator.php | 37 +- .../Iterator/SizeRangeFilterIterator.php | 8 +- .../finder/Iterator/SortableIterator.php | 21 +- .../Iterator/VcsIgnoredFilterIterator.php | 151 + vendor/symfony/finder/SplFileInfo.php | 13 +- vendor/symfony/finder/composer.json | 3 +- .../symfony/http-client-contracts/.gitignore | 3 - .../http-client-contracts/ChunkInterface.php | 71 - .../Exception/ClientExceptionInterface.php | 21 - .../Exception/DecodingExceptionInterface.php | 21 - .../Exception/ExceptionInterface.php | 21 - .../Exception/HttpExceptionInterface.php | 24 - .../RedirectionExceptionInterface.php | 21 - .../Exception/ServerExceptionInterface.php | 21 - .../Exception/TimeoutExceptionInterface.php | 21 - .../Exception/TransportExceptionInterface.php | 21 - .../HttpClientInterface.php | 95 - vendor/symfony/http-client-contracts/LICENSE | 19 - .../symfony/http-client-contracts/README.md | 9 - .../ResponseInterface.php | 109 - .../ResponseStreamInterface.php | 26 - .../Test/Fixtures/web/index.php | 192 - .../Test/HttpClientTestCase.php | 1137 ------ .../Test/TestHttpServer.php | 46 - .../http-client-contracts/composer.json | 37 - .../symfony/http-foundation/AcceptHeader.php | 18 +- .../http-foundation/AcceptHeaderItem.php | 34 +- .../symfony/http-foundation/ApacheRequest.php | 47 - .../http-foundation/BinaryFileResponse.php | 31 +- vendor/symfony/http-foundation/CHANGELOG.md | 59 + vendor/symfony/http-foundation/Cookie.php | 157 +- .../Exception/BadRequestException.php | 19 + .../Exception/JsonException.php | 21 + .../Exception/SessionNotFoundException.php | 27 + .../Exception/UnexpectedTypeException.php | 2 +- vendor/symfony/http-foundation/File/File.php | 43 +- .../File/MimeType/ExtensionGuesser.php | 102 - .../MimeType/ExtensionGuesserInterface.php | 31 - .../MimeType/FileBinaryMimeTypeGuesser.php | 104 - .../File/MimeType/FileinfoMimeTypeGuesser.php | 80 - .../MimeType/MimeTypeExtensionGuesser.php | 826 ---- .../File/MimeType/MimeTypeGuesser.php | 138 - .../MimeType/MimeTypeGuesserInterface.php | 38 - .../http-foundation/File/UploadedFile.php | 66 +- vendor/symfony/http-foundation/FileBag.php | 8 +- vendor/symfony/http-foundation/HeaderBag.php | 90 +- .../symfony/http-foundation/HeaderUtils.php | 60 +- vendor/symfony/http-foundation/InputBag.php | 113 + vendor/symfony/http-foundation/IpUtils.php | 45 +- .../symfony/http-foundation/JsonResponse.php | 20 +- .../symfony/http-foundation/ParameterBag.php | 97 +- vendor/symfony/http-foundation/README.md | 14 + .../AbstractRequestRateLimiter.php | 71 + .../RequestRateLimiterInterface.php | 30 + .../http-foundation/RedirectResponse.php | 25 +- vendor/symfony/http-foundation/Request.php | 298 +- .../http-foundation/RequestMatcher.php | 23 +- .../RequestMatcherInterface.php | 2 +- .../symfony/http-foundation/RequestStack.php | 41 +- vendor/symfony/http-foundation/Response.php | 133 +- .../http-foundation/ResponseHeaderBag.php | 45 +- .../Session/Attribute/AttributeBag.php | 16 +- .../Attribute/AttributeBagInterface.php | 22 +- .../Attribute/NamespacedAttributeBag.php | 18 +- .../Session/Flash/AutoExpireFlashBag.php | 12 +- .../Session/Flash/FlashBag.php | 12 +- .../Session/Flash/FlashBagInterface.php | 19 +- .../http-foundation/Session/Session.php | 34 +- .../Session/SessionBagProxy.php | 14 +- .../Session/SessionFactory.php | 40 + .../Session/SessionFactoryInterface.php | 20 + .../Session/SessionInterface.php | 34 +- .../Handler/AbstractSessionHandler.php | 13 +- .../Storage/Handler/IdentityMarshaller.php | 42 + .../Handler/MarshallingSessionHandler.php | 108 + .../Handler/MemcachedSessionHandler.php | 29 +- .../Handler/MigratingSessionHandler.php | 7 + .../Storage/Handler/MongoDbSessionHandler.php | 33 +- .../Storage/Handler/NullSessionHandler.php | 6 +- .../Storage/Handler/PdoSessionHandler.php | 81 +- .../Storage/Handler/RedisSessionHandler.php | 22 +- .../Storage/Handler/SessionHandlerFactory.php | 12 +- .../Storage/Handler/StrictSessionHandler.php | 8 +- .../Session/Storage/MetadataBag.php | 7 +- .../Storage/MockArraySessionStorage.php | 8 +- .../Storage/MockFileSessionStorage.php | 5 +- .../Storage/MockFileSessionStorageFactory.php | 42 + .../Session/Storage/NativeSessionStorage.php | 22 +- .../Storage/NativeSessionStorageFactory.php | 49 + .../PhpBridgeSessionStorageFactory.php | 47 + .../Session/Storage/Proxy/AbstractProxy.php | 8 +- .../Session/Storage/ServiceSessionFactory.php | 38 + .../SessionStorageFactoryInterface.php | 25 + .../Storage/SessionStorageInterface.php | 24 +- .../http-foundation/StreamedResponse.php | 15 +- .../Test/Constraint/ResponseFormatSame.php | 71 + .../Constraint/ResponseIsUnprocessable.php | 56 + vendor/symfony/http-foundation/UrlHelper.php | 4 +- vendor/symfony/http-foundation/composer.json | 14 +- .../Attribute/ArgumentInterface.php | 23 + .../http-kernel/Attribute/AsController.php | 23 + vendor/symfony/http-kernel/Bundle/Bundle.php | 4 +- .../http-kernel/Bundle/BundleInterface.php | 8 +- vendor/symfony/http-kernel/CHANGELOG.md | 76 + .../CacheClearer/CacheClearerInterface.php | 4 +- .../CacheClearer/ChainCacheClearer.php | 5 +- .../CacheClearer/Psr6CacheClearer.php | 26 +- .../http-kernel/CacheWarmer/CacheWarmer.php | 2 +- .../CacheWarmer/CacheWarmerAggregate.php | 20 +- .../CacheWarmer/CacheWarmerInterface.php | 2 +- .../CacheWarmer/WarmableInterface.php | 4 +- vendor/symfony/http-kernel/Client.php | 201 - .../http-kernel/Config/FileLocator.php | 58 +- .../Controller/ArgumentResolver.php | 14 +- .../VariadicValueResolver.php | 2 +- .../Controller/ArgumentResolverInterface.php | 6 +- .../ContainerControllerResolver.php | 8 +- .../Controller/ControllerResolver.php | 20 +- .../Controller/TraceableArgumentResolver.php | 2 +- .../ControllerMetadata/ArgumentMetadata.php | 58 +- .../ArgumentMetadataFactory.php | 13 +- .../DataCollector/AjaxDataCollector.php | 13 +- .../DataCollector/ConfigDataCollector.php | 123 +- .../DataCollector/DataCollector.php | 48 +- .../DataCollector/DataCollectorInterface.php | 6 +- .../DataCollector/DumpDataCollector.php | 17 +- .../DataCollector/EventDataCollector.php | 43 +- .../DataCollector/ExceptionDataCollector.php | 49 +- .../DataCollector/LoggerDataCollector.php | 94 +- .../DataCollector/MemoryDataCollector.php | 24 +- .../DataCollector/RequestDataCollector.php | 119 +- .../DataCollector/RouterDataCollector.php | 18 +- .../DataCollector/TimeDataCollector.php | 40 +- .../http-kernel/Debug/FileLinkFormatter.php | 20 +- .../Debug/TraceableEventDispatcher.php | 4 +- .../AddAnnotatedClassesToCachePass.php | 6 +- .../ControllerArgumentValueResolverPass.php | 4 + .../DependencyInjection/Extension.php | 2 +- .../FragmentRendererPass.php | 4 + .../LazyLoadingFragmentHandler.php | 6 +- .../MergeExtensionConfigurationPass.php | 3 + ...RegisterControllerArgumentLocatorsPass.php | 33 +- .../RegisterLocaleAwareServicesPass.php | 4 + ...oveEmptyControllerArgumentLocatorsPass.php | 11 +- .../ResettableServicePass.php | 8 + .../DependencyInjection/ServicesResetter.php | 8 + .../Event/ControllerArgumentsEvent.php | 37 +- .../http-kernel/Event/ControllerEvent.php | 25 +- .../http-kernel/Event/ExceptionEvent.php | 51 +- .../Event/FilterControllerArgumentsEvent.php | 43 - .../Event/FilterControllerEvent.php | 45 - .../http-kernel/Event/FilterResponseEvent.php | 49 - .../http-kernel/Event/FinishRequestEvent.php | 4 +- .../http-kernel/Event/GetResponseEvent.php | 52 - .../GetResponseForControllerResultEvent.php | 55 - .../Event/GetResponseForExceptionEvent.php | 91 - .../symfony/http-kernel/Event/KernelEvent.php | 22 +- .../http-kernel/Event/PostResponseEvent.php | 41 - .../http-kernel/Event/RequestEvent.php | 35 +- .../http-kernel/Event/ResponseEvent.php | 26 +- .../http-kernel/Event/TerminateEvent.php | 25 +- .../symfony/http-kernel/Event/ViewEvent.php | 40 +- .../EventListener/AbstractSessionListener.php | 220 +- .../AbstractTestSessionListener.php | 30 +- .../AddRequestFormatsListener.php | 8 +- .../EventListener/DebugHandlersListener.php | 122 +- .../EventListener/ErrorListener.php | 71 +- .../EventListener/ExceptionListener.php | 136 - .../EventListener/FragmentListener.php | 13 +- .../EventListener/LocaleAwareListener.php | 2 +- .../EventListener/LocaleListener.php | 17 +- .../EventListener/ProfilerListener.php | 42 +- .../EventListener/ResponseListener.php | 22 +- .../EventListener/RouterListener.php | 23 +- .../EventListener/SaveSessionListener.php | 46 - .../EventListener/SessionListener.php | 28 +- .../StreamedResponseListener.php | 10 +- .../EventListener/SurrogateListener.php | 10 +- .../EventListener/TestSessionListener.php | 10 +- .../EventListener/TranslatorListener.php | 80 - .../EventListener/ValidateRequestListener.php | 10 +- .../Exception/AccessDeniedHttpException.php | 6 + .../Exception/BadRequestHttpException.php | 6 + .../Exception/ConflictHttpException.php | 6 + .../Exception/GoneHttpException.php | 6 + .../http-kernel/Exception/HttpException.php | 11 + .../Exception/HttpExceptionInterface.php | 4 +- .../Exception/InvalidMetadataException.php | 16 + .../Exception/LengthRequiredHttpException.php | 6 + .../MethodNotAllowedHttpException.php | 11 + .../Exception/NotAcceptableHttpException.php | 6 + .../Exception/NotFoundHttpException.php | 6 + .../PreconditionFailedHttpException.php | 6 + .../PreconditionRequiredHttpException.php | 6 + .../ServiceUnavailableHttpException.php | 11 + .../TooManyRequestsHttpException.php | 11 + .../Exception/UnauthorizedHttpException.php | 11 + .../UnexpectedSessionUsageException.php | 19 + .../UnprocessableEntityHttpException.php | 6 + .../UnsupportedMediaTypeHttpException.php | 6 + .../AbstractSurrogateFragmentRenderer.php | 9 +- .../http-kernel/Fragment/FragmentHandler.php | 13 +- .../Fragment/FragmentRendererInterface.php | 4 +- .../Fragment/FragmentUriGenerator.php | 93 + .../FragmentUriGeneratorInterface.php | 32 + .../Fragment/HIncludeFragmentRenderer.php | 80 +- .../Fragment/InlineFragmentRenderer.php | 5 +- .../Fragment/RoutableFragmentRenderer.php | 52 +- .../HttpCache/AbstractSurrogate.php | 4 +- vendor/symfony/http-kernel/HttpCache/Esi.php | 2 +- .../http-kernel/HttpCache/HttpCache.php | 52 +- .../HttpCache/ResponseCacheStrategy.php | 2 +- vendor/symfony/http-kernel/HttpCache/Ssi.php | 2 +- .../symfony/http-kernel/HttpCache/Store.php | 37 +- .../http-kernel/HttpCache/StoreInterface.php | 6 +- .../HttpCache/SubRequestHandler.php | 5 +- .../HttpCache/SurrogateInterface.php | 20 +- .../symfony/http-kernel/HttpClientKernel.php | 2 +- vendor/symfony/http-kernel/HttpKernel.php | 20 +- .../symfony/http-kernel/HttpKernelBrowser.php | 189 +- .../http-kernel/HttpKernelInterface.php | 14 +- vendor/symfony/http-kernel/Kernel.php | 311 +- vendor/symfony/http-kernel/KernelEvents.php | 59 +- .../symfony/http-kernel/KernelInterface.php | 55 +- .../http-kernel/Log/DebugLoggerInterface.php | 12 +- vendor/symfony/http-kernel/Log/Logger.php | 5 + .../Profiler/FileProfilerStorage.php | 16 +- .../symfony/http-kernel/Profiler/Profile.php | 59 +- .../symfony/http-kernel/Profiler/Profiler.php | 46 +- .../Profiler/ProfilerStorageInterface.php | 23 +- vendor/symfony/http-kernel/README.md | 16 + .../http-kernel/RebootableInterface.php | 8 +- vendor/symfony/http-kernel/UriSigner.php | 22 +- vendor/symfony/http-kernel/composer.json | 60 +- .../polyfill-intl-grapheme/Grapheme.php | 247 ++ vendor/symfony/polyfill-intl-grapheme/LICENSE | 19 + .../symfony/polyfill-intl-grapheme/README.md | 31 + .../polyfill-intl-grapheme/bootstrap.php | 58 + .../polyfill-intl-grapheme/bootstrap80.php | 50 + .../polyfill-intl-grapheme/composer.json | 38 + vendor/symfony/polyfill-php81/LICENSE | 19 + vendor/symfony/polyfill-php81/Php81.php | 37 + vendor/symfony/polyfill-php81/README.md | 17 + .../Resources/stubs/ReturnTypeWillChange.php | 20 + vendor/symfony/polyfill-php81/bootstrap.php | 28 + vendor/symfony/polyfill-php81/composer.json | 36 + vendor/symfony/process/CHANGELOG.md | 20 + vendor/symfony/process/ExecutableFinder.php | 8 +- vendor/symfony/process/InputStream.php | 4 +- .../symfony/process/PhpExecutableFinder.php | 8 +- vendor/symfony/process/PhpProcess.php | 12 - .../symfony/process/Pipes/AbstractPipes.php | 2 +- vendor/symfony/process/Pipes/UnixPipes.php | 5 +- vendor/symfony/process/Pipes/WindowsPipes.php | 5 +- vendor/symfony/process/Process.php | 180 +- vendor/symfony/process/ProcessUtils.php | 4 +- vendor/symfony/process/README.md | 15 + vendor/symfony/process/composer.json | 2 +- vendor/symfony/routing/Alias.php | 96 + vendor/symfony/routing/Annotation/Route.php | 113 +- vendor/symfony/routing/CHANGELOG.md | 37 + vendor/symfony/routing/CompiledRoute.php | 28 +- .../RoutingResolverPass.php | 4 + .../Exception/InvalidArgumentException.php | 16 + .../Exception/MethodNotAllowedException.php | 6 + .../RouteCircularReferenceException.php | 20 + .../routing/Exception/RuntimeException.php | 16 + .../Generator/CompiledUrlGenerator.php | 8 +- .../ConfigurableRequirementsInterface.php | 4 +- .../Dumper/CompiledUrlGeneratorDumper.php | 51 + .../Dumper/GeneratorDumperInterface.php | 4 +- .../Generator/Dumper/PhpGeneratorDumper.php | 143 - .../routing/Generator/UrlGenerator.php | 24 +- .../Generator/UrlGeneratorInterface.php | 8 +- .../routing/Loader/AnnotationClassLoader.php | 126 +- .../Loader/AnnotationDirectoryLoader.php | 6 +- .../routing/Loader/AnnotationFileLoader.php | 12 +- .../symfony/routing/Loader/ClosureLoader.php | 8 +- .../Loader/Configurator/AliasConfigurator.php | 43 + .../Configurator/CollectionConfigurator.php | 19 + .../Configurator/ImportConfigurator.php | 52 +- .../Loader/Configurator/RouteConfigurator.php | 19 +- .../Configurator/RoutingConfigurator.php | 23 +- .../Loader/Configurator/Traits/AddTrait.php | 66 +- .../Loader/Configurator/Traits/HostTrait.php | 49 + .../Traits/LocalizedRouteTrait.php | 76 + .../Configurator/Traits/PrefixTrait.php | 62 + .../Loader/Configurator/Traits/RouteTrait.php | 14 +- .../routing/Loader/ContainerLoader.php | 5 +- .../ServiceRouterLoader.php | 43 - .../routing/Loader/DirectoryLoader.php | 4 +- .../symfony/routing/Loader/GlobFileLoader.php | 4 +- .../symfony/routing/Loader/ObjectLoader.php | 19 +- .../routing/Loader/ObjectRouteLoader.php | 52 - .../symfony/routing/Loader/PhpFileLoader.php | 20 +- .../symfony/routing/Loader/XmlFileLoader.php | 192 +- .../symfony/routing/Loader/YamlFileLoader.php | 174 +- .../Loader/schema/routing/routing-1.0.xsd | 24 + .../Dumper/CompiledUrlMatcherTrait.php | 10 +- .../Matcher/Dumper/MatcherDumperInterface.php | 4 +- .../Matcher/Dumper/PhpMatcherDumper.php | 75 - .../Matcher/Dumper/StaticPrefixCollection.php | 57 +- .../Matcher/ExpressionLanguageProvider.php | 58 + .../Matcher/RedirectableUrlMatcher.php | 2 +- .../RedirectableUrlMatcherInterface.php | 6 +- .../Matcher/RequestMatcherInterface.php | 4 +- .../routing/Matcher/TraceableUrlMatcher.php | 4 +- vendor/symfony/routing/Matcher/UrlMatcher.php | 25 +- .../routing/Matcher/UrlMatcherInterface.php | 6 +- vendor/symfony/routing/RequestContext.php | 97 +- .../routing/RequestContextAwareInterface.php | 2 +- vendor/symfony/routing/Route.php | 166 +- vendor/symfony/routing/RouteCollection.php | 165 +- .../routing/RouteCollectionBuilder.php | 48 +- vendor/symfony/routing/RouteCompiler.php | 19 +- .../routing/RouteCompilerInterface.php | 2 +- vendor/symfony/routing/Router.php | 103 +- vendor/symfony/routing/RouterInterface.php | 2 +- vendor/symfony/routing/composer.json | 25 +- vendor/symfony/string/AbstractString.php | 795 ++++ .../symfony/string/AbstractUnicodeString.php | 623 +++ vendor/symfony/string/ByteString.php | 509 +++ vendor/symfony/string/CHANGELOG.md | 35 + vendor/symfony/string/CodePointString.php | 270 ++ .../string/Exception/ExceptionInterface.php | 16 + .../Exception/InvalidArgumentException.php | 16 + .../string/Exception/RuntimeException.php | 16 + .../string/Inflector/EnglishInflector.php | 511 +++ .../string/Inflector/FrenchInflector.php | 157 + .../string/Inflector/InflectorInterface.php | 33 + vendor/symfony/string/LICENSE | 19 + vendor/symfony/string/LazyString.php | 164 + vendor/symfony/string/README.md | 14 + .../Resources/data/wcswidth_table_wide.php | 1143 ++++++ .../Resources/data/wcswidth_table_zero.php | 1415 +++++++ vendor/symfony/string/Resources/functions.php | 38 + .../symfony/string/Slugger/AsciiSlugger.php | 183 + .../string/Slugger/SluggerInterface.php | 27 + vendor/symfony/string/UnicodeString.php | 377 ++ vendor/symfony/string/composer.json | 43 + vendor/symfony/translation/CHANGELOG.md | 43 + .../Catalogue/AbstractOperation.php | 68 +- .../translation/Catalogue/MergeOperation.php | 2 +- .../Catalogue/OperationInterface.php | 12 +- .../translation/Catalogue/TargetOperation.php | 2 +- .../Command/TranslationPullCommand.php | 188 + .../Command/TranslationPushCommand.php | 189 + .../translation/Command/TranslationTrait.php | 77 + .../translation/Command/XliffLintCommand.php | 41 +- .../TranslationDataCollector.php | 25 +- .../translation/DataCollectorTranslator.php | 65 +- .../TranslationDumperPass.php | 4 + .../TranslationExtractorPass.php | 4 + .../DependencyInjection/TranslatorPass.php | 8 +- .../TranslatorPathsPass.php | 20 +- .../translation/Dumper/CsvFileDumper.php | 7 +- .../translation/Dumper/DumperInterface.php | 2 +- .../symfony/translation/Dumper/FileDumper.php | 28 +- .../translation/Dumper/IcuResFileDumper.php | 2 +- .../translation/Dumper/IniFileDumper.php | 2 +- .../translation/Dumper/JsonFileDumper.php | 2 +- .../translation/Dumper/MoFileDumper.php | 2 +- .../translation/Dumper/PhpFileDumper.php | 2 +- .../translation/Dumper/PoFileDumper.php | 2 +- .../translation/Dumper/QtFileDumper.php | 2 +- .../translation/Dumper/XliffFileDumper.php | 2 +- .../translation/Dumper/YamlFileDumper.php | 2 +- .../Exception/IncompleteDsnException.php | 24 + .../MissingRequiredOptionException.php | 25 + .../Exception/ProviderException.php | 41 + .../Exception/ProviderExceptionInterface.php | 23 + .../Exception/UnsupportedSchemeException.php | 54 + .../Extractor/AbstractFileExtractor.php | 10 +- .../translation/Extractor/ChainExtractor.php | 6 +- .../Extractor/ExtractorInterface.php | 4 +- .../translation/Extractor/PhpExtractor.php | 96 +- .../Extractor/PhpStringTokenParser.php | 12 +- .../ChoiceMessageFormatterInterface.php | 32 - .../Formatter/MessageFormatter.php | 32 +- .../Formatter/MessageFormatterInterface.php | 2 +- .../translation/IdentityTranslator.php | 57 +- vendor/symfony/translation/Interval.php | 112 - .../translation/Loader/ArrayLoader.php | 2 +- .../translation/Loader/CsvFileLoader.php | 8 +- .../symfony/translation/Loader/FileLoader.php | 6 +- .../translation/Loader/IcuDatFileLoader.php | 2 +- .../translation/Loader/IcuResFileLoader.php | 6 +- .../translation/Loader/IniFileLoader.php | 2 +- .../translation/Loader/JsonFileLoader.php | 2 +- .../translation/Loader/LoaderInterface.php | 4 +- .../translation/Loader/MoFileLoader.php | 2 +- .../translation/Loader/PhpFileLoader.php | 2 +- .../translation/Loader/PoFileLoader.php | 2 +- .../translation/Loader/QtFileLoader.php | 7 +- .../translation/Loader/XliffFileLoader.php | 62 +- .../translation/Loader/YamlFileLoader.php | 2 +- .../symfony/translation/LoggingTranslator.php | 59 +- .../symfony/translation/MessageCatalogue.php | 26 +- .../translation/MessageCatalogueInterface.php | 30 +- .../symfony/translation/MessageSelector.php | 98 - .../translation/MetadataAwareInterface.php | 16 +- .../translation/PluralizationRules.php | 221 -- .../Provider/AbstractProviderFactory.php | 45 + vendor/symfony/translation/Provider/Dsn.php | 110 + .../Provider/FilteringProvider.php | 65 + .../translation/Provider/NullProvider.php | 39 + .../Provider/NullProviderFactory.php | 34 + .../Provider/ProviderFactoryInterface.php | 26 + .../Provider/ProviderInterface.php | 32 + .../TranslationProviderCollection.php | 57 + .../TranslationProviderCollectionFactory.php | 57 + .../PseudoLocalizationTranslator.php | 368 ++ vendor/symfony/translation/README.md | 15 + .../translation/Reader/TranslationReader.php | 6 +- .../Reader/TranslationReaderInterface.php | 4 +- .../translation/Resources/functions.php | 22 + .../Test/ProviderFactoryTestCase.php | 147 + .../translation/Test/ProviderTestCase.php | 76 + .../translation/TranslatableMessage.php | 62 + vendor/symfony/translation/Translator.php | 125 +- vendor/symfony/translation/TranslatorBag.php | 108 + .../translation/TranslatorBagInterface.php | 4 +- .../translation/TranslatorInterface.php | 70 - .../translation/Util/ArrayConverter.php | 4 +- .../translation/Writer/TranslationWriter.php | 25 +- .../Writer/TranslationWriterInterface.php | 2 +- vendor/symfony/translation/composer.json | 36 +- vendor/symfony/var-dumper/CHANGELOG.md | 19 + .../symfony/var-dumper/Caster/AmqpCaster.php | 12 +- vendor/symfony/var-dumper/Caster/Caster.php | 13 +- .../symfony/var-dumper/Caster/DOMCaster.php | 38 +- .../symfony/var-dumper/Caster/DateCaster.php | 30 +- .../var-dumper/Caster/DoctrineCaster.php | 8 +- vendor/symfony/var-dumper/Caster/DsCaster.php | 2 +- .../var-dumper/Caster/ExceptionCaster.php | 20 +- .../symfony/var-dumper/Caster/FiberCaster.php | 43 + .../symfony/var-dumper/Caster/GmpCaster.php | 4 +- vendor/symfony/var-dumper/Caster/ImgStub.php | 2 +- .../symfony/var-dumper/Caster/IntlCaster.php | 14 +- vendor/symfony/var-dumper/Caster/LinkStub.php | 6 +- .../var-dumper/Caster/MemcachedCaster.php | 4 +- .../symfony/var-dumper/Caster/PdoCaster.php | 6 +- .../symfony/var-dumper/Caster/PgSqlCaster.php | 8 +- .../var-dumper/Caster/ProxyManagerCaster.php | 4 +- .../var-dumper/Caster/RdKafkaCaster.php | 186 + .../symfony/var-dumper/Caster/RedisCaster.php | 8 +- .../var-dumper/Caster/ReflectionCaster.php | 69 +- .../var-dumper/Caster/ResourceCaster.php | 20 +- .../symfony/var-dumper/Caster/SplCaster.php | 20 +- .../symfony/var-dumper/Caster/StubCaster.php | 10 +- .../var-dumper/Caster/SymfonyCaster.php | 36 +- .../var-dumper/Caster/XmlReaderCaster.php | 4 +- .../var-dumper/Caster/XmlResourceCaster.php | 4 +- .../var-dumper/Cloner/AbstractCloner.php | 61 +- .../var-dumper/Cloner/ClonerInterface.php | 2 +- vendor/symfony/var-dumper/Cloner/Data.php | 28 +- .../var-dumper/Cloner/DumperInterface.php | 8 +- .../symfony/var-dumper/Cloner/VarCloner.php | 89 +- .../Command/Descriptor/CliDescriptor.php | 11 +- .../var-dumper/Command/ServerDumpCommand.php | 21 +- .../var-dumper/Dumper/AbstractDumper.php | 20 +- .../symfony/var-dumper/Dumper/CliDumper.php | 57 +- .../ContextProviderInterface.php | 3 - .../symfony/var-dumper/Dumper/HtmlDumper.php | 50 +- .../var-dumper/Resources/functions/dump.php | 7 + .../symfony/var-dumper/Server/Connection.php | 4 + .../symfony/var-dumper/Server/DumpServer.php | 10 +- .../var-dumper/Test/VarDumperTestTrait.php | 9 +- vendor/symfony/var-dumper/VarDumper.php | 77 +- vendor/symfony/var-dumper/composer.json | 14 +- vendor/symfony/yaml/CHANGELOG.md | 41 + vendor/symfony/yaml/Command/LintCommand.php | 60 +- vendor/symfony/yaml/Dumper.php | 28 +- vendor/symfony/yaml/Escaper.php | 8 - .../symfony/yaml/Exception/ParseException.php | 18 +- vendor/symfony/yaml/Inline.php | 50 +- vendor/symfony/yaml/Parser.php | 58 +- vendor/symfony/yaml/Resources/bin/yaml-lint | 49 + vendor/symfony/yaml/Unescaper.php | 6 - vendor/symfony/yaml/Yaml.php | 6 +- vendor/symfony/yaml/composer.json | 12 +- .../laravel-ckeditor/.github/ISSUE_TEMPLATE | 1 - vendor/unisharp/laravel-ckeditor/CHANGES.md | 1332 ------- vendor/unisharp/laravel-ckeditor/LICENSE.md | 1420 ------- vendor/unisharp/laravel-ckeditor/README.md | 53 - .../laravel-ckeditor/ServiceProvider.php | 29 - .../laravel-ckeditor/adapters/jquery.js | 10 - vendor/unisharp/laravel-ckeditor/bower.json | 10 - vendor/unisharp/laravel-ckeditor/ckeditor.js | 1076 ----- .../unisharp/laravel-ckeditor/composer.json | 40 - vendor/unisharp/laravel-ckeditor/config.js | 38 - vendor/unisharp/laravel-ckeditor/contents.css | 208 - .../lang/_translationstatus.txt | 63 - vendor/unisharp/laravel-ckeditor/lang/af.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ar.js | 5 - vendor/unisharp/laravel-ckeditor/lang/az.js | 5 - vendor/unisharp/laravel-ckeditor/lang/bg.js | 5 - vendor/unisharp/laravel-ckeditor/lang/bn.js | 5 - vendor/unisharp/laravel-ckeditor/lang/bs.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ca.js | 5 - vendor/unisharp/laravel-ckeditor/lang/cs.js | 5 - vendor/unisharp/laravel-ckeditor/lang/cy.js | 5 - vendor/unisharp/laravel-ckeditor/lang/da.js | 5 - .../unisharp/laravel-ckeditor/lang/de-ch.js | 5 - vendor/unisharp/laravel-ckeditor/lang/de.js | 5 - vendor/unisharp/laravel-ckeditor/lang/el.js | 5 - .../unisharp/laravel-ckeditor/lang/en-au.js | 5 - .../unisharp/laravel-ckeditor/lang/en-ca.js | 5 - .../unisharp/laravel-ckeditor/lang/en-gb.js | 5 - vendor/unisharp/laravel-ckeditor/lang/en.js | 5 - vendor/unisharp/laravel-ckeditor/lang/eo.js | 5 - .../unisharp/laravel-ckeditor/lang/es-mx.js | 5 - vendor/unisharp/laravel-ckeditor/lang/es.js | 5 - vendor/unisharp/laravel-ckeditor/lang/et.js | 5 - vendor/unisharp/laravel-ckeditor/lang/eu.js | 5 - vendor/unisharp/laravel-ckeditor/lang/fa.js | 5 - vendor/unisharp/laravel-ckeditor/lang/fi.js | 5 - vendor/unisharp/laravel-ckeditor/lang/fo.js | 5 - .../unisharp/laravel-ckeditor/lang/fr-ca.js | 5 - vendor/unisharp/laravel-ckeditor/lang/fr.js | 5 - vendor/unisharp/laravel-ckeditor/lang/gl.js | 5 - vendor/unisharp/laravel-ckeditor/lang/gu.js | 5 - vendor/unisharp/laravel-ckeditor/lang/he.js | 5 - vendor/unisharp/laravel-ckeditor/lang/hi.js | 5 - vendor/unisharp/laravel-ckeditor/lang/hr.js | 5 - vendor/unisharp/laravel-ckeditor/lang/hu.js | 5 - vendor/unisharp/laravel-ckeditor/lang/id.js | 5 - vendor/unisharp/laravel-ckeditor/lang/is.js | 5 - vendor/unisharp/laravel-ckeditor/lang/it.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ja.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ka.js | 5 - vendor/unisharp/laravel-ckeditor/lang/km.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ko.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ku.js | 5 - vendor/unisharp/laravel-ckeditor/lang/lt.js | 5 - vendor/unisharp/laravel-ckeditor/lang/lv.js | 5 - vendor/unisharp/laravel-ckeditor/lang/mk.js | 5 - vendor/unisharp/laravel-ckeditor/lang/mn.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ms.js | 5 - vendor/unisharp/laravel-ckeditor/lang/nb.js | 5 - vendor/unisharp/laravel-ckeditor/lang/nl.js | 5 - vendor/unisharp/laravel-ckeditor/lang/no.js | 5 - vendor/unisharp/laravel-ckeditor/lang/oc.js | 5 - vendor/unisharp/laravel-ckeditor/lang/pl.js | 5 - .../unisharp/laravel-ckeditor/lang/pt-br.js | 5 - vendor/unisharp/laravel-ckeditor/lang/pt.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ro.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ru.js | 5 - vendor/unisharp/laravel-ckeditor/lang/si.js | 5 - vendor/unisharp/laravel-ckeditor/lang/sk.js | 5 - vendor/unisharp/laravel-ckeditor/lang/sl.js | 5 - vendor/unisharp/laravel-ckeditor/lang/sq.js | 5 - .../unisharp/laravel-ckeditor/lang/sr-latn.js | 5 - vendor/unisharp/laravel-ckeditor/lang/sr.js | 5 - vendor/unisharp/laravel-ckeditor/lang/sv.js | 5 - vendor/unisharp/laravel-ckeditor/lang/th.js | 5 - vendor/unisharp/laravel-ckeditor/lang/tr.js | 5 - vendor/unisharp/laravel-ckeditor/lang/tt.js | 5 - vendor/unisharp/laravel-ckeditor/lang/ug.js | 5 - vendor/unisharp/laravel-ckeditor/lang/uk.js | 5 - vendor/unisharp/laravel-ckeditor/lang/vi.js | 5 - .../unisharp/laravel-ckeditor/lang/zh-cn.js | 5 - vendor/unisharp/laravel-ckeditor/lang/zh.js | 5 - vendor/unisharp/laravel-ckeditor/package.json | 26 - .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 - .../dialogs/lang/_translationstatus.txt | 25 - .../plugins/a11yhelp/dialogs/lang/af.js | 11 - .../plugins/a11yhelp/dialogs/lang/ar.js | 11 - .../plugins/a11yhelp/dialogs/lang/az.js | 11 - .../plugins/a11yhelp/dialogs/lang/bg.js | 11 - .../plugins/a11yhelp/dialogs/lang/ca.js | 13 - .../plugins/a11yhelp/dialogs/lang/cs.js | 12 - .../plugins/a11yhelp/dialogs/lang/cy.js | 11 - .../plugins/a11yhelp/dialogs/lang/da.js | 11 - .../plugins/a11yhelp/dialogs/lang/de-ch.js | 12 - .../plugins/a11yhelp/dialogs/lang/de.js | 13 - .../plugins/a11yhelp/dialogs/lang/el.js | 12 - .../plugins/a11yhelp/dialogs/lang/en-gb.js | 11 - .../plugins/a11yhelp/dialogs/lang/en.js | 11 - .../plugins/a11yhelp/dialogs/lang/eo.js | 12 - .../plugins/a11yhelp/dialogs/lang/es-mx.js | 13 - .../plugins/a11yhelp/dialogs/lang/es.js | 13 - .../plugins/a11yhelp/dialogs/lang/et.js | 11 - .../plugins/a11yhelp/dialogs/lang/eu.js | 12 - .../plugins/a11yhelp/dialogs/lang/fa.js | 11 - .../plugins/a11yhelp/dialogs/lang/fi.js | 11 - .../plugins/a11yhelp/dialogs/lang/fo.js | 11 - .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 11 - .../plugins/a11yhelp/dialogs/lang/fr.js | 13 - .../plugins/a11yhelp/dialogs/lang/gl.js | 12 - .../plugins/a11yhelp/dialogs/lang/gu.js | 11 - .../plugins/a11yhelp/dialogs/lang/he.js | 11 - .../plugins/a11yhelp/dialogs/lang/hi.js | 11 - .../plugins/a11yhelp/dialogs/lang/hr.js | 11 - .../plugins/a11yhelp/dialogs/lang/hu.js | 12 - .../plugins/a11yhelp/dialogs/lang/id.js | 11 - .../plugins/a11yhelp/dialogs/lang/it.js | 13 - .../plugins/a11yhelp/dialogs/lang/ja.js | 9 - .../plugins/a11yhelp/dialogs/lang/km.js | 11 - .../plugins/a11yhelp/dialogs/lang/ko.js | 10 - .../plugins/a11yhelp/dialogs/lang/ku.js | 11 - .../plugins/a11yhelp/dialogs/lang/lt.js | 11 - .../plugins/a11yhelp/dialogs/lang/lv.js | 12 - .../plugins/a11yhelp/dialogs/lang/mk.js | 11 - .../plugins/a11yhelp/dialogs/lang/mn.js | 11 - .../plugins/a11yhelp/dialogs/lang/nb.js | 12 - .../plugins/a11yhelp/dialogs/lang/nl.js | 12 - .../plugins/a11yhelp/dialogs/lang/no.js | 11 - .../plugins/a11yhelp/dialogs/lang/oc.js | 12 - .../plugins/a11yhelp/dialogs/lang/pl.js | 13 - .../plugins/a11yhelp/dialogs/lang/pt-br.js | 13 - .../plugins/a11yhelp/dialogs/lang/pt.js | 12 - .../plugins/a11yhelp/dialogs/lang/ro.js | 11 - .../plugins/a11yhelp/dialogs/lang/ru.js | 11 - .../plugins/a11yhelp/dialogs/lang/si.js | 10 - .../plugins/a11yhelp/dialogs/lang/sk.js | 11 - .../plugins/a11yhelp/dialogs/lang/sl.js | 11 - .../plugins/a11yhelp/dialogs/lang/sq.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr.js | 11 - .../plugins/a11yhelp/dialogs/lang/sv.js | 11 - .../plugins/a11yhelp/dialogs/lang/th.js | 11 - .../plugins/a11yhelp/dialogs/lang/tr.js | 12 - .../plugins/a11yhelp/dialogs/lang/tt.js | 11 - .../plugins/a11yhelp/dialogs/lang/ug.js | 12 - .../plugins/a11yhelp/dialogs/lang/uk.js | 12 - .../plugins/a11yhelp/dialogs/lang/vi.js | 11 - .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 - .../plugins/a11yhelp/dialogs/lang/zh.js | 9 - .../plugins/about/dialogs/about.js | 8 - .../about/dialogs/hidpi/logo_ckeditor.png | Bin 13339 -> 0 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 6757 -> 0 bytes .../plugins/adobeair/plugin.js | 9 - .../laravel-ckeditor/plugins/ajax/plugin.js | 7 - .../plugins/autoembed/lang/az.js | 1 - .../plugins/autoembed/lang/ca.js | 1 - .../plugins/autoembed/lang/cs.js | 1 - .../plugins/autoembed/lang/de-ch.js | 1 - .../plugins/autoembed/lang/de.js | 1 - .../plugins/autoembed/lang/en.js | 1 - .../plugins/autoembed/lang/eo.js | 1 - .../plugins/autoembed/lang/es-mx.js | 1 - .../plugins/autoembed/lang/es.js | 1 - .../plugins/autoembed/lang/eu.js | 1 - .../plugins/autoembed/lang/fr.js | 1 - .../plugins/autoembed/lang/gl.js | 1 - .../plugins/autoembed/lang/hr.js | 1 - .../plugins/autoembed/lang/hu.js | 1 - .../plugins/autoembed/lang/it.js | 1 - .../plugins/autoembed/lang/ja.js | 1 - .../plugins/autoembed/lang/km.js | 1 - .../plugins/autoembed/lang/ko.js | 1 - .../plugins/autoembed/lang/ku.js | 1 - .../plugins/autoembed/lang/mk.js | 1 - .../plugins/autoembed/lang/nb.js | 1 - .../plugins/autoembed/lang/nl.js | 1 - .../plugins/autoembed/lang/oc.js | 1 - .../plugins/autoembed/lang/pl.js | 1 - .../plugins/autoembed/lang/pt-br.js | 1 - .../plugins/autoembed/lang/pt.js | 1 - .../plugins/autoembed/lang/ru.js | 1 - .../plugins/autoembed/lang/sk.js | 1 - .../plugins/autoembed/lang/sv.js | 1 - .../plugins/autoembed/lang/tr.js | 1 - .../plugins/autoembed/lang/ug.js | 1 - .../plugins/autoembed/lang/uk.js | 1 - .../plugins/autoembed/lang/zh-cn.js | 1 - .../plugins/autoembed/lang/zh.js | 1 - .../plugins/autoembed/plugin.js | 9 - .../plugins/autogrow/plugin.js | 8 - .../plugins/autolink/plugin.js | 5 - .../plugins/balloonpanel/plugin.js | 19 - .../balloonpanel/skins/kama/balloonpanel.css | 220 - .../skins/moono-lisa/balloonpanel.css | 223 -- .../skins/moono-lisa/images/close.png | Bin 615 -> 0 bytes .../skins/moono-lisa/images/hidpi/close.png | Bin 1259 -> 0 bytes .../balloonpanel/skins/moono/balloonpanel.css | 237 -- .../balloonpanel/skins/moono/images/close.png | Bin 824 -> 0 bytes .../skins/moono/images/hidpi/close.png | Bin 1271 -> 0 bytes .../laravel-ckeditor/plugins/bbcode/plugin.js | 22 - .../plugins/bidi/icons/bidiltr.png | Bin 471 -> 0 bytes .../plugins/bidi/icons/bidirtl.png | Bin 474 -> 0 bytes .../plugins/bidi/icons/hidpi/bidiltr.png | Bin 872 -> 0 bytes .../plugins/bidi/icons/hidpi/bidirtl.png | Bin 945 -> 0 bytes .../laravel-ckeditor/plugins/bidi/lang/af.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ar.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/az.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/bg.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/bn.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/bs.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ca.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/cs.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/cy.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/da.js | 1 - .../plugins/bidi/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/de.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/el.js | 1 - .../plugins/bidi/lang/en-au.js | 1 - .../plugins/bidi/lang/en-ca.js | 1 - .../plugins/bidi/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/en.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/eo.js | 1 - .../plugins/bidi/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/es.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/et.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/eu.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/fa.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/fi.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/fo.js | 1 - .../plugins/bidi/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/fr.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/gl.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/gu.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/he.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/hi.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/hr.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/hu.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/id.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/is.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/it.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ja.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ka.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/km.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ko.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ku.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/lt.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/lv.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/mk.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/mn.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ms.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/nb.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/nl.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/no.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/oc.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/pl.js | 1 - .../plugins/bidi/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/pt.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ro.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ru.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/si.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/sk.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/sl.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/sq.js | 1 - .../plugins/bidi/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/sr.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/sv.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/th.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/tr.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/tt.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/ug.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/uk.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/vi.js | 1 - .../plugins/bidi/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/bidi/lang/zh.js | 1 - .../laravel-ckeditor/plugins/bidi/plugin.js | 13 - .../codesnippet/dialogs/codesnippet.js | 6 - .../plugins/codesnippet/icons/codesnippet.png | Bin 532 -> 0 bytes .../codesnippet/icons/hidpi/codesnippet.png | Bin 1046 -> 0 bytes .../plugins/codesnippet/lang/ar.js | 5 - .../plugins/codesnippet/lang/az.js | 5 - .../plugins/codesnippet/lang/bg.js | 5 - .../plugins/codesnippet/lang/ca.js | 5 - .../plugins/codesnippet/lang/cs.js | 5 - .../plugins/codesnippet/lang/da.js | 5 - .../plugins/codesnippet/lang/de-ch.js | 5 - .../plugins/codesnippet/lang/de.js | 5 - .../plugins/codesnippet/lang/el.js | 5 - .../plugins/codesnippet/lang/en-gb.js | 5 - .../plugins/codesnippet/lang/en.js | 5 - .../plugins/codesnippet/lang/eo.js | 5 - .../plugins/codesnippet/lang/es-mx.js | 5 - .../plugins/codesnippet/lang/es.js | 5 - .../plugins/codesnippet/lang/et.js | 5 - .../plugins/codesnippet/lang/eu.js | 5 - .../plugins/codesnippet/lang/fa.js | 5 - .../plugins/codesnippet/lang/fi.js | 5 - .../plugins/codesnippet/lang/fr-ca.js | 5 - .../plugins/codesnippet/lang/fr.js | 5 - .../plugins/codesnippet/lang/gl.js | 5 - .../plugins/codesnippet/lang/he.js | 5 - .../plugins/codesnippet/lang/hr.js | 5 - .../plugins/codesnippet/lang/hu.js | 5 - .../plugins/codesnippet/lang/id.js | 5 - .../plugins/codesnippet/lang/it.js | 5 - .../plugins/codesnippet/lang/ja.js | 5 - .../plugins/codesnippet/lang/km.js | 5 - .../plugins/codesnippet/lang/ko.js | 5 - .../plugins/codesnippet/lang/ku.js | 5 - .../plugins/codesnippet/lang/lt.js | 5 - .../plugins/codesnippet/lang/lv.js | 5 - .../plugins/codesnippet/lang/nb.js | 5 - .../plugins/codesnippet/lang/nl.js | 5 - .../plugins/codesnippet/lang/no.js | 5 - .../plugins/codesnippet/lang/oc.js | 5 - .../plugins/codesnippet/lang/pl.js | 5 - .../plugins/codesnippet/lang/pt-br.js | 5 - .../plugins/codesnippet/lang/pt.js | 5 - .../plugins/codesnippet/lang/ro.js | 5 - .../plugins/codesnippet/lang/ru.js | 5 - .../plugins/codesnippet/lang/sk.js | 5 - .../plugins/codesnippet/lang/sl.js | 5 - .../plugins/codesnippet/lang/sq.js | 5 - .../plugins/codesnippet/lang/sv.js | 5 - .../plugins/codesnippet/lang/th.js | 5 - .../plugins/codesnippet/lang/tr.js | 5 - .../plugins/codesnippet/lang/tt.js | 5 - .../plugins/codesnippet/lang/ug.js | 5 - .../plugins/codesnippet/lang/uk.js | 5 - .../plugins/codesnippet/lang/vi.js | 5 - .../plugins/codesnippet/lang/zh-cn.js | 5 - .../plugins/codesnippet/lang/zh.js | 5 - .../codesnippet/lib/highlight/CHANGES.md | 827 ---- .../plugins/codesnippet/lib/highlight/LICENSE | 24 - .../codesnippet/lib/highlight/README.ru.md | 171 - .../lib/highlight/highlight.pack.js | 1 - .../codesnippet/lib/highlight/styles/arta.css | 160 - .../lib/highlight/styles/ascetic.css | 50 - .../highlight/styles/atelier-dune.dark.css | 93 - .../highlight/styles/atelier-dune.light.css | 93 - .../highlight/styles/atelier-forest.dark.css | 93 - .../highlight/styles/atelier-forest.light.css | 93 - .../highlight/styles/atelier-heath.dark.css | 93 - .../highlight/styles/atelier-heath.light.css | 93 - .../styles/atelier-lakeside.dark.css | 93 - .../styles/atelier-lakeside.light.css | 93 - .../highlight/styles/atelier-seaside.dark.css | 93 - .../styles/atelier-seaside.light.css | 93 - .../lib/highlight/styles/brown_paper.css | 105 - .../lib/highlight/styles/brown_papersq.png | Bin 18198 -> 0 bytes .../codesnippet/lib/highlight/styles/dark.css | 105 - .../lib/highlight/styles/default.css | 153 - .../lib/highlight/styles/docco.css | 132 - .../codesnippet/lib/highlight/styles/far.css | 113 - .../lib/highlight/styles/foundation.css | 133 - .../lib/highlight/styles/github.css | 125 - .../lib/highlight/styles/googlecode.css | 147 - .../codesnippet/lib/highlight/styles/idea.css | 122 - .../lib/highlight/styles/ir_black.css | 105 - .../lib/highlight/styles/magula.css | 122 - .../lib/highlight/styles/mono-blue.css | 62 - .../lib/highlight/styles/monokai.css | 127 - .../lib/highlight/styles/monokai_sublime.css | 149 - .../lib/highlight/styles/obsidian.css | 154 - .../lib/highlight/styles/paraiso.dark.css | 93 - .../lib/highlight/styles/paraiso.light.css | 93 - .../lib/highlight/styles/pojoaque.css | 106 - .../lib/highlight/styles/pojoaque.jpg | Bin 1186 -> 0 bytes .../lib/highlight/styles/railscasts.css | 182 - .../lib/highlight/styles/rainbow.css | 112 - .../lib/highlight/styles/school_book.css | 113 - .../lib/highlight/styles/school_book.png | Bin 486 -> 0 bytes .../lib/highlight/styles/solarized_dark.css | 107 - .../lib/highlight/styles/solarized_light.css | 107 - .../lib/highlight/styles/sunburst.css | 160 - .../highlight/styles/tomorrow-night-blue.css | 93 - .../styles/tomorrow-night-bright.css | 92 - .../styles/tomorrow-night-eighties.css | 92 - .../lib/highlight/styles/tomorrow-night.css | 93 - .../lib/highlight/styles/tomorrow.css | 90 - .../codesnippet/lib/highlight/styles/vs.css | 89 - .../lib/highlight/styles/xcode.css | 158 - .../lib/highlight/styles/zenburn.css | 116 - .../plugins/codesnippet/plugin.js | 12 - .../plugins/codesnippetgeshi/plugin.js | 10 - .../plugins/colorbutton/icons/bgcolor.png | Bin 616 -> 0 bytes .../colorbutton/icons/hidpi/bgcolor.png | Bin 1249 -> 0 bytes .../colorbutton/icons/hidpi/textcolor.png | Bin 1312 -> 0 bytes .../plugins/colorbutton/icons/textcolor.png | Bin 757 -> 0 bytes .../plugins/colorbutton/lang/af.js | 3 - .../plugins/colorbutton/lang/ar.js | 3 - .../plugins/colorbutton/lang/az.js | 3 - .../plugins/colorbutton/lang/bg.js | 3 - .../plugins/colorbutton/lang/bn.js | 3 - .../plugins/colorbutton/lang/bs.js | 3 - .../plugins/colorbutton/lang/ca.js | 3 - .../plugins/colorbutton/lang/cs.js | 3 - .../plugins/colorbutton/lang/cy.js | 3 - .../plugins/colorbutton/lang/da.js | 3 - .../plugins/colorbutton/lang/de-ch.js | 3 - .../plugins/colorbutton/lang/de.js | 3 - .../plugins/colorbutton/lang/el.js | 3 - .../plugins/colorbutton/lang/en-au.js | 3 - .../plugins/colorbutton/lang/en-ca.js | 3 - .../plugins/colorbutton/lang/en-gb.js | 3 - .../plugins/colorbutton/lang/en.js | 3 - .../plugins/colorbutton/lang/eo.js | 3 - .../plugins/colorbutton/lang/es-mx.js | 3 - .../plugins/colorbutton/lang/es.js | 3 - .../plugins/colorbutton/lang/et.js | 3 - .../plugins/colorbutton/lang/eu.js | 3 - .../plugins/colorbutton/lang/fa.js | 3 - .../plugins/colorbutton/lang/fi.js | 3 - .../plugins/colorbutton/lang/fo.js | 3 - .../plugins/colorbutton/lang/fr-ca.js | 3 - .../plugins/colorbutton/lang/fr.js | 3 - .../plugins/colorbutton/lang/gl.js | 3 - .../plugins/colorbutton/lang/gu.js | 3 - .../plugins/colorbutton/lang/he.js | 3 - .../plugins/colorbutton/lang/hi.js | 3 - .../plugins/colorbutton/lang/hr.js | 3 - .../plugins/colorbutton/lang/hu.js | 3 - .../plugins/colorbutton/lang/id.js | 3 - .../plugins/colorbutton/lang/is.js | 3 - .../plugins/colorbutton/lang/it.js | 3 - .../plugins/colorbutton/lang/ja.js | 3 - .../plugins/colorbutton/lang/ka.js | 3 - .../plugins/colorbutton/lang/km.js | 3 - .../plugins/colorbutton/lang/ko.js | 3 - .../plugins/colorbutton/lang/ku.js | 3 - .../plugins/colorbutton/lang/lt.js | 3 - .../plugins/colorbutton/lang/lv.js | 3 - .../plugins/colorbutton/lang/mk.js | 3 - .../plugins/colorbutton/lang/mn.js | 3 - .../plugins/colorbutton/lang/ms.js | 3 - .../plugins/colorbutton/lang/nb.js | 3 - .../plugins/colorbutton/lang/nl.js | 3 - .../plugins/colorbutton/lang/no.js | 3 - .../plugins/colorbutton/lang/oc.js | 3 - .../plugins/colorbutton/lang/pl.js | 3 - .../plugins/colorbutton/lang/pt-br.js | 3 - .../plugins/colorbutton/lang/pt.js | 3 - .../plugins/colorbutton/lang/ro.js | 3 - .../plugins/colorbutton/lang/ru.js | 3 - .../plugins/colorbutton/lang/si.js | 3 - .../plugins/colorbutton/lang/sk.js | 3 - .../plugins/colorbutton/lang/sl.js | 3 - .../plugins/colorbutton/lang/sq.js | 4 - .../plugins/colorbutton/lang/sr-latn.js | 3 - .../plugins/colorbutton/lang/sr.js | 3 - .../plugins/colorbutton/lang/sv.js | 3 - .../plugins/colorbutton/lang/th.js | 3 - .../plugins/colorbutton/lang/tr.js | 3 - .../plugins/colorbutton/lang/tt.js | 3 - .../plugins/colorbutton/lang/ug.js | 3 - .../plugins/colorbutton/lang/uk.js | 3 - .../plugins/colorbutton/lang/vi.js | 3 - .../plugins/colorbutton/lang/zh-cn.js | 2 - .../plugins/colorbutton/lang/zh.js | 2 - .../plugins/colorbutton/plugin.js | 16 - .../colordialog/dialogs/colordialog.css | 20 - .../colordialog/dialogs/colordialog.js | 14 - .../plugins/colordialog/lang/af.js | 1 - .../plugins/colordialog/lang/ar.js | 1 - .../plugins/colordialog/lang/az.js | 1 - .../plugins/colordialog/lang/bg.js | 1 - .../plugins/colordialog/lang/bn.js | 1 - .../plugins/colordialog/lang/bs.js | 1 - .../plugins/colordialog/lang/ca.js | 1 - .../plugins/colordialog/lang/cs.js | 1 - .../plugins/colordialog/lang/cy.js | 1 - .../plugins/colordialog/lang/da.js | 1 - .../plugins/colordialog/lang/de-ch.js | 1 - .../plugins/colordialog/lang/de.js | 1 - .../plugins/colordialog/lang/el.js | 1 - .../plugins/colordialog/lang/en-au.js | 1 - .../plugins/colordialog/lang/en-ca.js | 1 - .../plugins/colordialog/lang/en-gb.js | 1 - .../plugins/colordialog/lang/en.js | 1 - .../plugins/colordialog/lang/eo.js | 1 - .../plugins/colordialog/lang/es-mx.js | 1 - .../plugins/colordialog/lang/es.js | 1 - .../plugins/colordialog/lang/et.js | 1 - .../plugins/colordialog/lang/eu.js | 1 - .../plugins/colordialog/lang/fa.js | 1 - .../plugins/colordialog/lang/fi.js | 1 - .../plugins/colordialog/lang/fo.js | 1 - .../plugins/colordialog/lang/fr-ca.js | 1 - .../plugins/colordialog/lang/fr.js | 1 - .../plugins/colordialog/lang/gl.js | 1 - .../plugins/colordialog/lang/gu.js | 1 - .../plugins/colordialog/lang/he.js | 1 - .../plugins/colordialog/lang/hi.js | 1 - .../plugins/colordialog/lang/hr.js | 1 - .../plugins/colordialog/lang/hu.js | 1 - .../plugins/colordialog/lang/id.js | 1 - .../plugins/colordialog/lang/is.js | 1 - .../plugins/colordialog/lang/it.js | 1 - .../plugins/colordialog/lang/ja.js | 1 - .../plugins/colordialog/lang/ka.js | 1 - .../plugins/colordialog/lang/km.js | 1 - .../plugins/colordialog/lang/ko.js | 1 - .../plugins/colordialog/lang/ku.js | 1 - .../plugins/colordialog/lang/lt.js | 1 - .../plugins/colordialog/lang/lv.js | 1 - .../plugins/colordialog/lang/mk.js | 1 - .../plugins/colordialog/lang/mn.js | 1 - .../plugins/colordialog/lang/ms.js | 1 - .../plugins/colordialog/lang/nb.js | 1 - .../plugins/colordialog/lang/nl.js | 1 - .../plugins/colordialog/lang/no.js | 1 - .../plugins/colordialog/lang/oc.js | 1 - .../plugins/colordialog/lang/pl.js | 1 - .../plugins/colordialog/lang/pt-br.js | 1 - .../plugins/colordialog/lang/pt.js | 1 - .../plugins/colordialog/lang/ro.js | 1 - .../plugins/colordialog/lang/ru.js | 1 - .../plugins/colordialog/lang/si.js | 1 - .../plugins/colordialog/lang/sk.js | 1 - .../plugins/colordialog/lang/sl.js | 1 - .../plugins/colordialog/lang/sq.js | 1 - .../plugins/colordialog/lang/sr-latn.js | 1 - .../plugins/colordialog/lang/sr.js | 1 - .../plugins/colordialog/lang/sv.js | 1 - .../plugins/colordialog/lang/th.js | 1 - .../plugins/colordialog/lang/tr.js | 1 - .../plugins/colordialog/lang/tt.js | 1 - .../plugins/colordialog/lang/ug.js | 1 - .../plugins/colordialog/lang/uk.js | 1 - .../plugins/colordialog/lang/vi.js | 1 - .../plugins/colordialog/lang/zh-cn.js | 1 - .../plugins/colordialog/lang/zh.js | 1 - .../plugins/colordialog/plugin.js | 7 - .../cursors/cursor-disabled.svg | 25 - .../plugins/copyformatting/cursors/cursor.svg | 14 - .../copyformatting/icons/copyformatting.png | Bin 707 -> 0 bytes .../icons/hidpi/copyformatting.png | Bin 1245 -> 0 bytes .../plugins/copyformatting/lang/az.js | 1 - .../plugins/copyformatting/lang/de.js | 1 - .../plugins/copyformatting/lang/en.js | 1 - .../plugins/copyformatting/lang/it.js | 1 - .../plugins/copyformatting/lang/ja.js | 1 - .../plugins/copyformatting/lang/nb.js | 1 - .../plugins/copyformatting/lang/nl.js | 1 - .../plugins/copyformatting/lang/oc.js | 1 - .../plugins/copyformatting/lang/pl.js | 1 - .../plugins/copyformatting/lang/pt-br.js | 1 - .../plugins/copyformatting/lang/ru.js | 1 - .../plugins/copyformatting/lang/sv.js | 1 - .../plugins/copyformatting/lang/tr.js | 1 - .../plugins/copyformatting/lang/zh-cn.js | 1 - .../plugins/copyformatting/lang/zh.js | 1 - .../plugins/copyformatting/plugin.js | 28 - .../copyformatting/styles/copyformatting.css | 45 - .../devtools/lang/_translationstatus.txt | 27 - .../plugins/devtools/lang/ar.js | 5 - .../plugins/devtools/lang/az.js | 5 - .../plugins/devtools/lang/bg.js | 5 - .../plugins/devtools/lang/ca.js | 5 - .../plugins/devtools/lang/cs.js | 5 - .../plugins/devtools/lang/cy.js | 5 - .../plugins/devtools/lang/da.js | 5 - .../plugins/devtools/lang/de-ch.js | 5 - .../plugins/devtools/lang/de.js | 5 - .../plugins/devtools/lang/el.js | 5 - .../plugins/devtools/lang/en-gb.js | 5 - .../plugins/devtools/lang/en.js | 5 - .../plugins/devtools/lang/eo.js | 5 - .../plugins/devtools/lang/es-mx.js | 5 - .../plugins/devtools/lang/es.js | 5 - .../plugins/devtools/lang/et.js | 5 - .../plugins/devtools/lang/eu.js | 5 - .../plugins/devtools/lang/fa.js | 5 - .../plugins/devtools/lang/fi.js | 5 - .../plugins/devtools/lang/fr-ca.js | 5 - .../plugins/devtools/lang/fr.js | 5 - .../plugins/devtools/lang/gl.js | 5 - .../plugins/devtools/lang/gu.js | 5 - .../plugins/devtools/lang/he.js | 5 - .../plugins/devtools/lang/hr.js | 5 - .../plugins/devtools/lang/hu.js | 5 - .../plugins/devtools/lang/id.js | 5 - .../plugins/devtools/lang/it.js | 5 - .../plugins/devtools/lang/ja.js | 5 - .../plugins/devtools/lang/km.js | 5 - .../plugins/devtools/lang/ko.js | 5 - .../plugins/devtools/lang/ku.js | 5 - .../plugins/devtools/lang/lt.js | 5 - .../plugins/devtools/lang/lv.js | 5 - .../plugins/devtools/lang/nb.js | 5 - .../plugins/devtools/lang/nl.js | 5 - .../plugins/devtools/lang/no.js | 5 - .../plugins/devtools/lang/oc.js | 5 - .../plugins/devtools/lang/pl.js | 5 - .../plugins/devtools/lang/pt-br.js | 5 - .../plugins/devtools/lang/pt.js | 5 - .../plugins/devtools/lang/ro.js | 5 - .../plugins/devtools/lang/ru.js | 5 - .../plugins/devtools/lang/si.js | 5 - .../plugins/devtools/lang/sk.js | 5 - .../plugins/devtools/lang/sl.js | 5 - .../plugins/devtools/lang/sq.js | 5 - .../plugins/devtools/lang/sv.js | 5 - .../plugins/devtools/lang/tr.js | 5 - .../plugins/devtools/lang/tt.js | 5 - .../plugins/devtools/lang/ug.js | 5 - .../plugins/devtools/lang/uk.js | 5 - .../plugins/devtools/lang/vi.js | 5 - .../plugins/devtools/lang/zh-cn.js | 5 - .../plugins/devtools/lang/zh.js | 5 - .../plugins/devtools/plugin.js | 9 - .../plugins/dialog/dialogDefinition.js | 4 - .../plugins/dialogadvtab/plugin.js | 9 - .../plugins/div/dialogs/div.js | 9 - .../plugins/div/icons/creatediv.png | Bin 569 -> 0 bytes .../plugins/div/icons/hidpi/creatediv.png | Bin 1678 -> 0 bytes .../laravel-ckeditor/plugins/div/lang/af.js | 1 - .../laravel-ckeditor/plugins/div/lang/ar.js | 1 - .../laravel-ckeditor/plugins/div/lang/az.js | 1 - .../laravel-ckeditor/plugins/div/lang/bg.js | 1 - .../laravel-ckeditor/plugins/div/lang/bn.js | 1 - .../laravel-ckeditor/plugins/div/lang/bs.js | 1 - .../laravel-ckeditor/plugins/div/lang/ca.js | 1 - .../laravel-ckeditor/plugins/div/lang/cs.js | 1 - .../laravel-ckeditor/plugins/div/lang/cy.js | 1 - .../laravel-ckeditor/plugins/div/lang/da.js | 1 - .../plugins/div/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/div/lang/de.js | 1 - .../laravel-ckeditor/plugins/div/lang/el.js | 1 - .../plugins/div/lang/en-au.js | 1 - .../plugins/div/lang/en-ca.js | 1 - .../plugins/div/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/div/lang/en.js | 1 - .../laravel-ckeditor/plugins/div/lang/eo.js | 1 - .../plugins/div/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/div/lang/es.js | 1 - .../laravel-ckeditor/plugins/div/lang/et.js | 1 - .../laravel-ckeditor/plugins/div/lang/eu.js | 1 - .../laravel-ckeditor/plugins/div/lang/fa.js | 1 - .../laravel-ckeditor/plugins/div/lang/fi.js | 1 - .../laravel-ckeditor/plugins/div/lang/fo.js | 1 - .../plugins/div/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/div/lang/fr.js | 1 - .../laravel-ckeditor/plugins/div/lang/gl.js | 1 - .../laravel-ckeditor/plugins/div/lang/gu.js | 1 - .../laravel-ckeditor/plugins/div/lang/he.js | 1 - .../laravel-ckeditor/plugins/div/lang/hi.js | 1 - .../laravel-ckeditor/plugins/div/lang/hr.js | 1 - .../laravel-ckeditor/plugins/div/lang/hu.js | 1 - .../laravel-ckeditor/plugins/div/lang/id.js | 1 - .../laravel-ckeditor/plugins/div/lang/is.js | 1 - .../laravel-ckeditor/plugins/div/lang/it.js | 1 - .../laravel-ckeditor/plugins/div/lang/ja.js | 1 - .../laravel-ckeditor/plugins/div/lang/ka.js | 1 - .../laravel-ckeditor/plugins/div/lang/km.js | 1 - .../laravel-ckeditor/plugins/div/lang/ko.js | 1 - .../laravel-ckeditor/plugins/div/lang/ku.js | 1 - .../laravel-ckeditor/plugins/div/lang/lt.js | 1 - .../laravel-ckeditor/plugins/div/lang/lv.js | 1 - .../laravel-ckeditor/plugins/div/lang/mk.js | 1 - .../laravel-ckeditor/plugins/div/lang/mn.js | 1 - .../laravel-ckeditor/plugins/div/lang/ms.js | 1 - .../laravel-ckeditor/plugins/div/lang/nb.js | 1 - .../laravel-ckeditor/plugins/div/lang/nl.js | 1 - .../laravel-ckeditor/plugins/div/lang/no.js | 1 - .../laravel-ckeditor/plugins/div/lang/oc.js | 1 - .../laravel-ckeditor/plugins/div/lang/pl.js | 1 - .../plugins/div/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/div/lang/pt.js | 1 - .../laravel-ckeditor/plugins/div/lang/ro.js | 1 - .../laravel-ckeditor/plugins/div/lang/ru.js | 1 - .../laravel-ckeditor/plugins/div/lang/si.js | 1 - .../laravel-ckeditor/plugins/div/lang/sk.js | 1 - .../laravel-ckeditor/plugins/div/lang/sl.js | 1 - .../laravel-ckeditor/plugins/div/lang/sq.js | 1 - .../plugins/div/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/div/lang/sr.js | 1 - .../laravel-ckeditor/plugins/div/lang/sv.js | 1 - .../laravel-ckeditor/plugins/div/lang/th.js | 1 - .../laravel-ckeditor/plugins/div/lang/tr.js | 1 - .../laravel-ckeditor/plugins/div/lang/tt.js | 1 - .../laravel-ckeditor/plugins/div/lang/ug.js | 1 - .../laravel-ckeditor/plugins/div/lang/uk.js | 1 - .../laravel-ckeditor/plugins/div/lang/vi.js | 1 - .../plugins/div/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/div/lang/zh.js | 1 - .../laravel-ckeditor/plugins/div/plugin.js | 9 - .../plugins/divarea/plugin.js | 5 - .../plugins/docprops/dialogs/docprops.js | 25 - .../plugins/docprops/icons/docprops-rtl.png | Bin 543 -> 0 bytes .../plugins/docprops/icons/docprops.png | Bin 549 -> 0 bytes .../docprops/icons/hidpi/docprops-rtl.png | Bin 1060 -> 0 bytes .../plugins/docprops/icons/hidpi/docprops.png | Bin 1017 -> 0 bytes .../plugins/docprops/lang/af.js | 3 - .../plugins/docprops/lang/ar.js | 3 - .../plugins/docprops/lang/az.js | 3 - .../plugins/docprops/lang/bg.js | 3 - .../plugins/docprops/lang/bn.js | 3 - .../plugins/docprops/lang/bs.js | 3 - .../plugins/docprops/lang/ca.js | 3 - .../plugins/docprops/lang/cs.js | 3 - .../plugins/docprops/lang/cy.js | 3 - .../plugins/docprops/lang/da.js | 3 - .../plugins/docprops/lang/de-ch.js | 3 - .../plugins/docprops/lang/de.js | 3 - .../plugins/docprops/lang/el.js | 3 - .../plugins/docprops/lang/en-au.js | 3 - .../plugins/docprops/lang/en-ca.js | 3 - .../plugins/docprops/lang/en-gb.js | 3 - .../plugins/docprops/lang/en.js | 3 - .../plugins/docprops/lang/eo.js | 3 - .../plugins/docprops/lang/es-mx.js | 3 - .../plugins/docprops/lang/es.js | 3 - .../plugins/docprops/lang/et.js | 3 - .../plugins/docprops/lang/eu.js | 3 - .../plugins/docprops/lang/fa.js | 3 - .../plugins/docprops/lang/fi.js | 3 - .../plugins/docprops/lang/fo.js | 3 - .../plugins/docprops/lang/fr-ca.js | 3 - .../plugins/docprops/lang/fr.js | 3 - .../plugins/docprops/lang/gl.js | 3 - .../plugins/docprops/lang/gu.js | 3 - .../plugins/docprops/lang/he.js | 2 - .../plugins/docprops/lang/hi.js | 3 - .../plugins/docprops/lang/hr.js | 3 - .../plugins/docprops/lang/hu.js | 3 - .../plugins/docprops/lang/id.js | 3 - .../plugins/docprops/lang/is.js | 3 - .../plugins/docprops/lang/it.js | 3 - .../plugins/docprops/lang/ja.js | 2 - .../plugins/docprops/lang/ka.js | 3 - .../plugins/docprops/lang/km.js | 3 - .../plugins/docprops/lang/ko.js | 2 - .../plugins/docprops/lang/ku.js | 3 - .../plugins/docprops/lang/lt.js | 3 - .../plugins/docprops/lang/lv.js | 3 - .../plugins/docprops/lang/mk.js | 3 - .../plugins/docprops/lang/mn.js | 3 - .../plugins/docprops/lang/ms.js | 3 - .../plugins/docprops/lang/nb.js | 3 - .../plugins/docprops/lang/nl.js | 3 - .../plugins/docprops/lang/no.js | 3 - .../plugins/docprops/lang/oc.js | 3 - .../plugins/docprops/lang/pl.js | 3 - .../plugins/docprops/lang/pt-br.js | 3 - .../plugins/docprops/lang/pt.js | 3 - .../plugins/docprops/lang/ro.js | 3 - .../plugins/docprops/lang/ru.js | 3 - .../plugins/docprops/lang/si.js | 3 - .../plugins/docprops/lang/sk.js | 3 - .../plugins/docprops/lang/sl.js | 3 - .../plugins/docprops/lang/sq.js | 3 - .../plugins/docprops/lang/sr-latn.js | 3 - .../plugins/docprops/lang/sr.js | 3 - .../plugins/docprops/lang/sv.js | 3 - .../plugins/docprops/lang/th.js | 3 - .../plugins/docprops/lang/tr.js | 3 - .../plugins/docprops/lang/tt.js | 3 - .../plugins/docprops/lang/ug.js | 3 - .../plugins/docprops/lang/uk.js | 3 - .../plugins/docprops/lang/vi.js | 3 - .../plugins/docprops/lang/zh-cn.js | 2 - .../plugins/docprops/lang/zh.js | 2 - .../plugins/docprops/plugin.js | 6 - .../plugins/embed/icons/embed.png | Bin 389 -> 0 bytes .../plugins/embed/icons/hidpi/embed.png | Bin 728 -> 0 bytes .../laravel-ckeditor/plugins/embed/plugin.js | 6 - .../plugins/embedbase/dialogs/embedbase.js | 6 - .../plugins/embedbase/lang/az.js | 1 - .../plugins/embedbase/lang/ca.js | 1 - .../plugins/embedbase/lang/cs.js | 1 - .../plugins/embedbase/lang/da.js | 1 - .../plugins/embedbase/lang/de-ch.js | 1 - .../plugins/embedbase/lang/de.js | 1 - .../plugins/embedbase/lang/en.js | 1 - .../plugins/embedbase/lang/eo.js | 1 - .../plugins/embedbase/lang/es-mx.js | 1 - .../plugins/embedbase/lang/es.js | 1 - .../plugins/embedbase/lang/eu.js | 1 - .../plugins/embedbase/lang/fr.js | 1 - .../plugins/embedbase/lang/gl.js | 1 - .../plugins/embedbase/lang/hr.js | 1 - .../plugins/embedbase/lang/hu.js | 1 - .../plugins/embedbase/lang/id.js | 1 - .../plugins/embedbase/lang/it.js | 1 - .../plugins/embedbase/lang/ja.js | 1 - .../plugins/embedbase/lang/ko.js | 1 - .../plugins/embedbase/lang/ku.js | 1 - .../plugins/embedbase/lang/nb.js | 1 - .../plugins/embedbase/lang/nl.js | 1 - .../plugins/embedbase/lang/oc.js | 1 - .../plugins/embedbase/lang/pl.js | 1 - .../plugins/embedbase/lang/pt-br.js | 1 - .../plugins/embedbase/lang/pt.js | 1 - .../plugins/embedbase/lang/ru.js | 1 - .../plugins/embedbase/lang/sk.js | 1 - .../plugins/embedbase/lang/sv.js | 1 - .../plugins/embedbase/lang/tr.js | 1 - .../plugins/embedbase/lang/ug.js | 1 - .../plugins/embedbase/lang/uk.js | 1 - .../plugins/embedbase/lang/zh-cn.js | 1 - .../plugins/embedbase/lang/zh.js | 1 - .../plugins/embedbase/plugin.js | 11 - .../embedsemantic/icons/embedsemantic.png | Bin 389 -> 0 bytes .../icons/hidpi/embedsemantic.png | Bin 728 -> 0 bytes .../plugins/embedsemantic/plugin.js | 7 - .../plugins/filetools/lang/az.js | 5 - .../plugins/filetools/lang/ca.js | 6 - .../plugins/filetools/lang/cs.js | 5 - .../plugins/filetools/lang/da.js | 5 - .../plugins/filetools/lang/de-ch.js | 6 - .../plugins/filetools/lang/de.js | 6 - .../plugins/filetools/lang/en.js | 5 - .../plugins/filetools/lang/eo.js | 5 - .../plugins/filetools/lang/es-mx.js | 6 - .../plugins/filetools/lang/es.js | 5 - .../plugins/filetools/lang/eu.js | 5 - .../plugins/filetools/lang/fr.js | 6 - .../plugins/filetools/lang/gl.js | 5 - .../plugins/filetools/lang/hr.js | 5 - .../plugins/filetools/lang/hu.js | 5 - .../plugins/filetools/lang/id.js | 5 - .../plugins/filetools/lang/it.js | 6 - .../plugins/filetools/lang/ja.js | 5 - .../plugins/filetools/lang/km.js | 5 - .../plugins/filetools/lang/ko.js | 5 - .../plugins/filetools/lang/ku.js | 5 - .../plugins/filetools/lang/nb.js | 5 - .../plugins/filetools/lang/nl.js | 5 - .../plugins/filetools/lang/oc.js | 6 - .../plugins/filetools/lang/pl.js | 5 - .../plugins/filetools/lang/pt-br.js | 5 - .../plugins/filetools/lang/pt.js | 5 - .../plugins/filetools/lang/ru.js | 5 - .../plugins/filetools/lang/sk.js | 5 - .../plugins/filetools/lang/sv.js | 5 - .../plugins/filetools/lang/tr.js | 5 - .../plugins/filetools/lang/ug.js | 5 - .../plugins/filetools/lang/uk.js | 5 - .../plugins/filetools/lang/zh-cn.js | 5 - .../plugins/filetools/lang/zh.js | 5 - .../plugins/filetools/plugin.js | 14 - .../plugins/find/dialogs/find.js | 25 - .../plugins/find/icons/find-rtl.png | Bin 696 -> 0 bytes .../plugins/find/icons/find.png | Bin 696 -> 0 bytes .../plugins/find/icons/hidpi/find-rtl.png | Bin 1384 -> 0 bytes .../plugins/find/icons/hidpi/find.png | Bin 1384 -> 0 bytes .../plugins/find/icons/hidpi/replace.png | Bin 1402 -> 0 bytes .../plugins/find/icons/replace.png | Bin 549 -> 0 bytes .../laravel-ckeditor/plugins/find/lang/af.js | 1 - .../laravel-ckeditor/plugins/find/lang/ar.js | 1 - .../laravel-ckeditor/plugins/find/lang/az.js | 1 - .../laravel-ckeditor/plugins/find/lang/bg.js | 1 - .../laravel-ckeditor/plugins/find/lang/bn.js | 1 - .../laravel-ckeditor/plugins/find/lang/bs.js | 1 - .../laravel-ckeditor/plugins/find/lang/ca.js | 1 - .../laravel-ckeditor/plugins/find/lang/cs.js | 1 - .../laravel-ckeditor/plugins/find/lang/cy.js | 1 - .../laravel-ckeditor/plugins/find/lang/da.js | 1 - .../plugins/find/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/find/lang/de.js | 1 - .../laravel-ckeditor/plugins/find/lang/el.js | 1 - .../plugins/find/lang/en-au.js | 1 - .../plugins/find/lang/en-ca.js | 1 - .../plugins/find/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/find/lang/en.js | 1 - .../laravel-ckeditor/plugins/find/lang/eo.js | 1 - .../plugins/find/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/find/lang/es.js | 1 - .../laravel-ckeditor/plugins/find/lang/et.js | 1 - .../laravel-ckeditor/plugins/find/lang/eu.js | 1 - .../laravel-ckeditor/plugins/find/lang/fa.js | 1 - .../laravel-ckeditor/plugins/find/lang/fi.js | 1 - .../laravel-ckeditor/plugins/find/lang/fo.js | 1 - .../plugins/find/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/find/lang/fr.js | 1 - .../laravel-ckeditor/plugins/find/lang/gl.js | 1 - .../laravel-ckeditor/plugins/find/lang/gu.js | 1 - .../laravel-ckeditor/plugins/find/lang/he.js | 1 - .../laravel-ckeditor/plugins/find/lang/hi.js | 1 - .../laravel-ckeditor/plugins/find/lang/hr.js | 1 - .../laravel-ckeditor/plugins/find/lang/hu.js | 1 - .../laravel-ckeditor/plugins/find/lang/id.js | 1 - .../laravel-ckeditor/plugins/find/lang/is.js | 1 - .../laravel-ckeditor/plugins/find/lang/it.js | 1 - .../laravel-ckeditor/plugins/find/lang/ja.js | 1 - .../laravel-ckeditor/plugins/find/lang/ka.js | 1 - .../laravel-ckeditor/plugins/find/lang/km.js | 1 - .../laravel-ckeditor/plugins/find/lang/ko.js | 1 - .../laravel-ckeditor/plugins/find/lang/ku.js | 1 - .../laravel-ckeditor/plugins/find/lang/lt.js | 1 - .../laravel-ckeditor/plugins/find/lang/lv.js | 1 - .../laravel-ckeditor/plugins/find/lang/mk.js | 1 - .../laravel-ckeditor/plugins/find/lang/mn.js | 1 - .../laravel-ckeditor/plugins/find/lang/ms.js | 1 - .../laravel-ckeditor/plugins/find/lang/nb.js | 1 - .../laravel-ckeditor/plugins/find/lang/nl.js | 1 - .../laravel-ckeditor/plugins/find/lang/no.js | 1 - .../laravel-ckeditor/plugins/find/lang/oc.js | 1 - .../laravel-ckeditor/plugins/find/lang/pl.js | 1 - .../plugins/find/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/find/lang/pt.js | 1 - .../laravel-ckeditor/plugins/find/lang/ro.js | 1 - .../laravel-ckeditor/plugins/find/lang/ru.js | 1 - .../laravel-ckeditor/plugins/find/lang/si.js | 1 - .../laravel-ckeditor/plugins/find/lang/sk.js | 1 - .../laravel-ckeditor/plugins/find/lang/sl.js | 1 - .../laravel-ckeditor/plugins/find/lang/sq.js | 1 - .../plugins/find/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/find/lang/sr.js | 1 - .../laravel-ckeditor/plugins/find/lang/sv.js | 1 - .../laravel-ckeditor/plugins/find/lang/th.js | 1 - .../laravel-ckeditor/plugins/find/lang/tr.js | 1 - .../laravel-ckeditor/plugins/find/lang/tt.js | 1 - .../laravel-ckeditor/plugins/find/lang/ug.js | 1 - .../laravel-ckeditor/plugins/find/lang/uk.js | 1 - .../laravel-ckeditor/plugins/find/lang/vi.js | 1 - .../plugins/find/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/find/lang/zh.js | 1 - .../laravel-ckeditor/plugins/find/plugin.js | 6 - .../plugins/flash/dialogs/flash.js | 24 - .../plugins/flash/icons/flash.png | Bin 633 -> 0 bytes .../plugins/flash/icons/hidpi/flash.png | Bin 1385 -> 0 bytes .../plugins/flash/images/placeholder.png | Bin 256 -> 0 bytes .../laravel-ckeditor/plugins/flash/lang/af.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ar.js | 2 - .../laravel-ckeditor/plugins/flash/lang/az.js | 3 - .../laravel-ckeditor/plugins/flash/lang/bg.js | 3 - .../laravel-ckeditor/plugins/flash/lang/bn.js | 2 - .../laravel-ckeditor/plugins/flash/lang/bs.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ca.js | 3 - .../laravel-ckeditor/plugins/flash/lang/cs.js | 3 - .../laravel-ckeditor/plugins/flash/lang/cy.js | 2 - .../laravel-ckeditor/plugins/flash/lang/da.js | 3 - .../plugins/flash/lang/de-ch.js | 3 - .../laravel-ckeditor/plugins/flash/lang/de.js | 3 - .../laravel-ckeditor/plugins/flash/lang/el.js | 3 - .../plugins/flash/lang/en-au.js | 2 - .../plugins/flash/lang/en-ca.js | 2 - .../plugins/flash/lang/en-gb.js | 2 - .../laravel-ckeditor/plugins/flash/lang/en.js | 2 - .../laravel-ckeditor/plugins/flash/lang/eo.js | 3 - .../plugins/flash/lang/es-mx.js | 3 - .../laravel-ckeditor/plugins/flash/lang/es.js | 2 - .../laravel-ckeditor/plugins/flash/lang/et.js | 3 - .../laravel-ckeditor/plugins/flash/lang/eu.js | 3 - .../laravel-ckeditor/plugins/flash/lang/fa.js | 2 - .../laravel-ckeditor/plugins/flash/lang/fi.js | 3 - .../laravel-ckeditor/plugins/flash/lang/fo.js | 3 - .../plugins/flash/lang/fr-ca.js | 3 - .../laravel-ckeditor/plugins/flash/lang/fr.js | 3 - .../laravel-ckeditor/plugins/flash/lang/gl.js | 3 - .../laravel-ckeditor/plugins/flash/lang/gu.js | 2 - .../laravel-ckeditor/plugins/flash/lang/he.js | 2 - .../laravel-ckeditor/plugins/flash/lang/hi.js | 2 - .../laravel-ckeditor/plugins/flash/lang/hr.js | 2 - .../laravel-ckeditor/plugins/flash/lang/hu.js | 3 - .../laravel-ckeditor/plugins/flash/lang/id.js | 2 - .../laravel-ckeditor/plugins/flash/lang/is.js | 2 - .../laravel-ckeditor/plugins/flash/lang/it.js | 3 - .../laravel-ckeditor/plugins/flash/lang/ja.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ka.js | 3 - .../laravel-ckeditor/plugins/flash/lang/km.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ko.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ku.js | 3 - .../laravel-ckeditor/plugins/flash/lang/lt.js | 3 - .../laravel-ckeditor/plugins/flash/lang/lv.js | 3 - .../laravel-ckeditor/plugins/flash/lang/mk.js | 2 - .../laravel-ckeditor/plugins/flash/lang/mn.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ms.js | 2 - .../laravel-ckeditor/plugins/flash/lang/nb.js | 2 - .../laravel-ckeditor/plugins/flash/lang/nl.js | 3 - .../laravel-ckeditor/plugins/flash/lang/no.js | 2 - .../laravel-ckeditor/plugins/flash/lang/oc.js | 3 - .../laravel-ckeditor/plugins/flash/lang/pl.js | 3 - .../plugins/flash/lang/pt-br.js | 3 - .../laravel-ckeditor/plugins/flash/lang/pt.js | 3 - .../laravel-ckeditor/plugins/flash/lang/ro.js | 3 - .../laravel-ckeditor/plugins/flash/lang/ru.js | 3 - .../laravel-ckeditor/plugins/flash/lang/si.js | 2 - .../laravel-ckeditor/plugins/flash/lang/sk.js | 3 - .../laravel-ckeditor/plugins/flash/lang/sl.js | 3 - .../laravel-ckeditor/plugins/flash/lang/sq.js | 3 - .../plugins/flash/lang/sr-latn.js | 2 - .../laravel-ckeditor/plugins/flash/lang/sr.js | 2 - .../laravel-ckeditor/plugins/flash/lang/sv.js | 3 - .../laravel-ckeditor/plugins/flash/lang/th.js | 3 - .../laravel-ckeditor/plugins/flash/lang/tr.js | 2 - .../laravel-ckeditor/plugins/flash/lang/tt.js | 2 - .../laravel-ckeditor/plugins/flash/lang/ug.js | 3 - .../laravel-ckeditor/plugins/flash/lang/uk.js | 3 - .../laravel-ckeditor/plugins/flash/lang/vi.js | 3 - .../plugins/flash/lang/zh-cn.js | 2 - .../laravel-ckeditor/plugins/flash/lang/zh.js | 2 - .../laravel-ckeditor/plugins/flash/plugin.js | 9 - .../laravel-ckeditor/plugins/font/lang/af.js | 1 - .../laravel-ckeditor/plugins/font/lang/ar.js | 1 - .../laravel-ckeditor/plugins/font/lang/az.js | 1 - .../laravel-ckeditor/plugins/font/lang/bg.js | 1 - .../laravel-ckeditor/plugins/font/lang/bn.js | 1 - .../laravel-ckeditor/plugins/font/lang/bs.js | 1 - .../laravel-ckeditor/plugins/font/lang/ca.js | 1 - .../laravel-ckeditor/plugins/font/lang/cs.js | 1 - .../laravel-ckeditor/plugins/font/lang/cy.js | 1 - .../laravel-ckeditor/plugins/font/lang/da.js | 1 - .../plugins/font/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/font/lang/de.js | 1 - .../laravel-ckeditor/plugins/font/lang/el.js | 1 - .../plugins/font/lang/en-au.js | 1 - .../plugins/font/lang/en-ca.js | 1 - .../plugins/font/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/font/lang/en.js | 1 - .../laravel-ckeditor/plugins/font/lang/eo.js | 1 - .../plugins/font/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/font/lang/es.js | 1 - .../laravel-ckeditor/plugins/font/lang/et.js | 1 - .../laravel-ckeditor/plugins/font/lang/eu.js | 1 - .../laravel-ckeditor/plugins/font/lang/fa.js | 1 - .../laravel-ckeditor/plugins/font/lang/fi.js | 1 - .../laravel-ckeditor/plugins/font/lang/fo.js | 1 - .../plugins/font/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/font/lang/fr.js | 1 - .../laravel-ckeditor/plugins/font/lang/gl.js | 1 - .../laravel-ckeditor/plugins/font/lang/gu.js | 1 - .../laravel-ckeditor/plugins/font/lang/he.js | 1 - .../laravel-ckeditor/plugins/font/lang/hi.js | 1 - .../laravel-ckeditor/plugins/font/lang/hr.js | 1 - .../laravel-ckeditor/plugins/font/lang/hu.js | 1 - .../laravel-ckeditor/plugins/font/lang/id.js | 1 - .../laravel-ckeditor/plugins/font/lang/is.js | 1 - .../laravel-ckeditor/plugins/font/lang/it.js | 1 - .../laravel-ckeditor/plugins/font/lang/ja.js | 1 - .../laravel-ckeditor/plugins/font/lang/ka.js | 1 - .../laravel-ckeditor/plugins/font/lang/km.js | 1 - .../laravel-ckeditor/plugins/font/lang/ko.js | 1 - .../laravel-ckeditor/plugins/font/lang/ku.js | 1 - .../laravel-ckeditor/plugins/font/lang/lt.js | 1 - .../laravel-ckeditor/plugins/font/lang/lv.js | 1 - .../laravel-ckeditor/plugins/font/lang/mk.js | 1 - .../laravel-ckeditor/plugins/font/lang/mn.js | 1 - .../laravel-ckeditor/plugins/font/lang/ms.js | 1 - .../laravel-ckeditor/plugins/font/lang/nb.js | 1 - .../laravel-ckeditor/plugins/font/lang/nl.js | 1 - .../laravel-ckeditor/plugins/font/lang/no.js | 1 - .../laravel-ckeditor/plugins/font/lang/oc.js | 1 - .../laravel-ckeditor/plugins/font/lang/pl.js | 1 - .../plugins/font/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/font/lang/pt.js | 1 - .../laravel-ckeditor/plugins/font/lang/ro.js | 1 - .../laravel-ckeditor/plugins/font/lang/ru.js | 1 - .../laravel-ckeditor/plugins/font/lang/si.js | 1 - .../laravel-ckeditor/plugins/font/lang/sk.js | 1 - .../laravel-ckeditor/plugins/font/lang/sl.js | 1 - .../laravel-ckeditor/plugins/font/lang/sq.js | 1 - .../plugins/font/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/font/lang/sr.js | 1 - .../laravel-ckeditor/plugins/font/lang/sv.js | 1 - .../laravel-ckeditor/plugins/font/lang/th.js | 1 - .../laravel-ckeditor/plugins/font/lang/tr.js | 1 - .../laravel-ckeditor/plugins/font/lang/tt.js | 1 - .../laravel-ckeditor/plugins/font/lang/ug.js | 1 - .../laravel-ckeditor/plugins/font/lang/uk.js | 1 - .../laravel-ckeditor/plugins/font/lang/vi.js | 1 - .../plugins/font/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/font/lang/zh.js | 1 - .../laravel-ckeditor/plugins/font/plugin.js | 11 - .../plugins/forms/dialogs/button.js | 8 - .../plugins/forms/dialogs/checkbox.js | 9 - .../plugins/forms/dialogs/form.js | 8 - .../plugins/forms/dialogs/hiddenfield.js | 7 - .../plugins/forms/dialogs/radio.js | 9 - .../plugins/forms/dialogs/select.js | 20 - .../plugins/forms/dialogs/textarea.js | 8 - .../plugins/forms/dialogs/textfield.js | 11 - .../plugins/forms/icons/button.png | Bin 493 -> 0 bytes .../plugins/forms/icons/checkbox.png | Bin 544 -> 0 bytes .../plugins/forms/icons/form.png | Bin 380 -> 0 bytes .../plugins/forms/icons/hiddenfield.png | Bin 613 -> 0 bytes .../plugins/forms/icons/hidpi/button.png | Bin 833 -> 0 bytes .../plugins/forms/icons/hidpi/checkbox.png | Bin 1024 -> 0 bytes .../plugins/forms/icons/hidpi/form.png | Bin 660 -> 0 bytes .../plugins/forms/icons/hidpi/hiddenfield.png | Bin 1129 -> 0 bytes .../plugins/forms/icons/hidpi/imagebutton.png | Bin 1345 -> 0 bytes .../plugins/forms/icons/hidpi/radio.png | Bin 1426 -> 0 bytes .../plugins/forms/icons/hidpi/select-rtl.png | Bin 920 -> 0 bytes .../plugins/forms/icons/hidpi/select.png | Bin 905 -> 0 bytes .../forms/icons/hidpi/textarea-rtl.png | Bin 1081 -> 0 bytes .../plugins/forms/icons/hidpi/textarea.png | Bin 1048 -> 0 bytes .../forms/icons/hidpi/textfield-rtl.png | Bin 805 -> 0 bytes .../plugins/forms/icons/hidpi/textfield.png | Bin 805 -> 0 bytes .../plugins/forms/icons/imagebutton.png | Bin 755 -> 0 bytes .../plugins/forms/icons/radio.png | Bin 655 -> 0 bytes .../plugins/forms/icons/select-rtl.png | Bin 455 -> 0 bytes .../plugins/forms/icons/select.png | Bin 451 -> 0 bytes .../plugins/forms/icons/textarea-rtl.png | Bin 568 -> 0 bytes .../plugins/forms/icons/textarea.png | Bin 524 -> 0 bytes .../plugins/forms/icons/textfield-rtl.png | Bin 419 -> 0 bytes .../plugins/forms/icons/textfield.png | Bin 419 -> 0 bytes .../plugins/forms/images/hiddenfield.gif | Bin 178 -> 0 bytes .../laravel-ckeditor/plugins/forms/lang/af.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ar.js | 3 - .../laravel-ckeditor/plugins/forms/lang/az.js | 3 - .../laravel-ckeditor/plugins/forms/lang/bg.js | 3 - .../laravel-ckeditor/plugins/forms/lang/bn.js | 3 - .../laravel-ckeditor/plugins/forms/lang/bs.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ca.js | 3 - .../laravel-ckeditor/plugins/forms/lang/cs.js | 3 - .../laravel-ckeditor/plugins/forms/lang/cy.js | 3 - .../laravel-ckeditor/plugins/forms/lang/da.js | 3 - .../plugins/forms/lang/de-ch.js | 3 - .../laravel-ckeditor/plugins/forms/lang/de.js | 3 - .../laravel-ckeditor/plugins/forms/lang/el.js | 3 - .../plugins/forms/lang/en-au.js | 3 - .../plugins/forms/lang/en-ca.js | 3 - .../plugins/forms/lang/en-gb.js | 3 - .../laravel-ckeditor/plugins/forms/lang/en.js | 3 - .../laravel-ckeditor/plugins/forms/lang/eo.js | 3 - .../plugins/forms/lang/es-mx.js | 3 - .../laravel-ckeditor/plugins/forms/lang/es.js | 3 - .../laravel-ckeditor/plugins/forms/lang/et.js | 3 - .../laravel-ckeditor/plugins/forms/lang/eu.js | 3 - .../laravel-ckeditor/plugins/forms/lang/fa.js | 3 - .../laravel-ckeditor/plugins/forms/lang/fi.js | 3 - .../laravel-ckeditor/plugins/forms/lang/fo.js | 3 - .../plugins/forms/lang/fr-ca.js | 3 - .../laravel-ckeditor/plugins/forms/lang/fr.js | 3 - .../laravel-ckeditor/plugins/forms/lang/gl.js | 3 - .../laravel-ckeditor/plugins/forms/lang/gu.js | 3 - .../laravel-ckeditor/plugins/forms/lang/he.js | 3 - .../laravel-ckeditor/plugins/forms/lang/hi.js | 3 - .../laravel-ckeditor/plugins/forms/lang/hr.js | 3 - .../laravel-ckeditor/plugins/forms/lang/hu.js | 3 - .../laravel-ckeditor/plugins/forms/lang/id.js | 3 - .../laravel-ckeditor/plugins/forms/lang/is.js | 3 - .../laravel-ckeditor/plugins/forms/lang/it.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ja.js | 2 - .../laravel-ckeditor/plugins/forms/lang/ka.js | 3 - .../laravel-ckeditor/plugins/forms/lang/km.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ko.js | 2 - .../laravel-ckeditor/plugins/forms/lang/ku.js | 3 - .../laravel-ckeditor/plugins/forms/lang/lt.js | 3 - .../laravel-ckeditor/plugins/forms/lang/lv.js | 3 - .../laravel-ckeditor/plugins/forms/lang/mk.js | 3 - .../laravel-ckeditor/plugins/forms/lang/mn.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ms.js | 3 - .../laravel-ckeditor/plugins/forms/lang/nb.js | 3 - .../laravel-ckeditor/plugins/forms/lang/nl.js | 3 - .../laravel-ckeditor/plugins/forms/lang/no.js | 3 - .../laravel-ckeditor/plugins/forms/lang/oc.js | 3 - .../laravel-ckeditor/plugins/forms/lang/pl.js | 3 - .../plugins/forms/lang/pt-br.js | 3 - .../laravel-ckeditor/plugins/forms/lang/pt.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ro.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ru.js | 3 - .../laravel-ckeditor/plugins/forms/lang/si.js | 3 - .../laravel-ckeditor/plugins/forms/lang/sk.js | 3 - .../laravel-ckeditor/plugins/forms/lang/sl.js | 3 - .../laravel-ckeditor/plugins/forms/lang/sq.js | 3 - .../plugins/forms/lang/sr-latn.js | 3 - .../laravel-ckeditor/plugins/forms/lang/sr.js | 3 - .../laravel-ckeditor/plugins/forms/lang/sv.js | 3 - .../laravel-ckeditor/plugins/forms/lang/th.js | 3 - .../laravel-ckeditor/plugins/forms/lang/tr.js | 3 - .../laravel-ckeditor/plugins/forms/lang/tt.js | 3 - .../laravel-ckeditor/plugins/forms/lang/ug.js | 3 - .../laravel-ckeditor/plugins/forms/lang/uk.js | 3 - .../laravel-ckeditor/plugins/forms/lang/vi.js | 3 - .../plugins/forms/lang/zh-cn.js | 2 - .../laravel-ckeditor/plugins/forms/lang/zh.js | 2 - .../laravel-ckeditor/plugins/forms/plugin.js | 14 - .../laravel-ckeditor/plugins/icons.png | Bin 9391 -> 0 bytes .../laravel-ckeditor/plugins/icons_hidpi.png | Bin 31549 -> 0 bytes .../plugins/iframe/dialogs/iframe.js | 10 - .../plugins/iframe/icons/hidpi/iframe.png | Bin 1837 -> 0 bytes .../plugins/iframe/icons/iframe.png | Bin 816 -> 0 bytes .../plugins/iframe/images/placeholder.png | Bin 265 -> 0 bytes .../plugins/iframe/lang/af.js | 1 - .../plugins/iframe/lang/ar.js | 1 - .../plugins/iframe/lang/az.js | 1 - .../plugins/iframe/lang/bg.js | 1 - .../plugins/iframe/lang/bn.js | 1 - .../plugins/iframe/lang/bs.js | 1 - .../plugins/iframe/lang/ca.js | 1 - .../plugins/iframe/lang/cs.js | 1 - .../plugins/iframe/lang/cy.js | 1 - .../plugins/iframe/lang/da.js | 1 - .../plugins/iframe/lang/de-ch.js | 1 - .../plugins/iframe/lang/de.js | 1 - .../plugins/iframe/lang/el.js | 1 - .../plugins/iframe/lang/en-au.js | 1 - .../plugins/iframe/lang/en-ca.js | 1 - .../plugins/iframe/lang/en-gb.js | 1 - .../plugins/iframe/lang/en.js | 1 - .../plugins/iframe/lang/eo.js | 1 - .../plugins/iframe/lang/es-mx.js | 1 - .../plugins/iframe/lang/es.js | 1 - .../plugins/iframe/lang/et.js | 1 - .../plugins/iframe/lang/eu.js | 1 - .../plugins/iframe/lang/fa.js | 1 - .../plugins/iframe/lang/fi.js | 1 - .../plugins/iframe/lang/fo.js | 1 - .../plugins/iframe/lang/fr-ca.js | 1 - .../plugins/iframe/lang/fr.js | 1 - .../plugins/iframe/lang/gl.js | 1 - .../plugins/iframe/lang/gu.js | 1 - .../plugins/iframe/lang/he.js | 1 - .../plugins/iframe/lang/hi.js | 1 - .../plugins/iframe/lang/hr.js | 1 - .../plugins/iframe/lang/hu.js | 1 - .../plugins/iframe/lang/id.js | 1 - .../plugins/iframe/lang/is.js | 1 - .../plugins/iframe/lang/it.js | 1 - .../plugins/iframe/lang/ja.js | 1 - .../plugins/iframe/lang/ka.js | 1 - .../plugins/iframe/lang/km.js | 1 - .../plugins/iframe/lang/ko.js | 1 - .../plugins/iframe/lang/ku.js | 1 - .../plugins/iframe/lang/lt.js | 1 - .../plugins/iframe/lang/lv.js | 1 - .../plugins/iframe/lang/mk.js | 1 - .../plugins/iframe/lang/mn.js | 1 - .../plugins/iframe/lang/ms.js | 1 - .../plugins/iframe/lang/nb.js | 1 - .../plugins/iframe/lang/nl.js | 1 - .../plugins/iframe/lang/no.js | 1 - .../plugins/iframe/lang/oc.js | 1 - .../plugins/iframe/lang/pl.js | 1 - .../plugins/iframe/lang/pt-br.js | 1 - .../plugins/iframe/lang/pt.js | 1 - .../plugins/iframe/lang/ro.js | 1 - .../plugins/iframe/lang/ru.js | 1 - .../plugins/iframe/lang/si.js | 1 - .../plugins/iframe/lang/sk.js | 1 - .../plugins/iframe/lang/sl.js | 1 - .../plugins/iframe/lang/sq.js | 1 - .../plugins/iframe/lang/sr-latn.js | 1 - .../plugins/iframe/lang/sr.js | 1 - .../plugins/iframe/lang/sv.js | 1 - .../plugins/iframe/lang/th.js | 1 - .../plugins/iframe/lang/tr.js | 1 - .../plugins/iframe/lang/tt.js | 1 - .../plugins/iframe/lang/ug.js | 1 - .../plugins/iframe/lang/uk.js | 1 - .../plugins/iframe/lang/vi.js | 1 - .../plugins/iframe/lang/zh-cn.js | 1 - .../plugins/iframe/lang/zh.js | 1 - .../laravel-ckeditor/plugins/iframe/plugin.js | 8 - .../plugins/iframedialog/plugin.js | 8 - .../plugins/image/dialogs/image.js | 44 - .../plugins/image/images/noimage.png | Bin 1610 -> 0 bytes .../plugins/image2/dialogs/image2.js | 15 - .../plugins/image2/icons/hidpi/image.png | Bin 905 -> 0 bytes .../plugins/image2/icons/image.png | Bin 498 -> 0 bytes .../plugins/image2/lang/af.js | 1 - .../plugins/image2/lang/ar.js | 1 - .../plugins/image2/lang/az.js | 1 - .../plugins/image2/lang/bg.js | 1 - .../plugins/image2/lang/bn.js | 1 - .../plugins/image2/lang/bs.js | 1 - .../plugins/image2/lang/ca.js | 1 - .../plugins/image2/lang/cs.js | 1 - .../plugins/image2/lang/cy.js | 1 - .../plugins/image2/lang/da.js | 1 - .../plugins/image2/lang/de-ch.js | 1 - .../plugins/image2/lang/de.js | 1 - .../plugins/image2/lang/el.js | 1 - .../plugins/image2/lang/en-au.js | 1 - .../plugins/image2/lang/en-ca.js | 1 - .../plugins/image2/lang/en-gb.js | 1 - .../plugins/image2/lang/en.js | 1 - .../plugins/image2/lang/eo.js | 1 - .../plugins/image2/lang/es-mx.js | 1 - .../plugins/image2/lang/es.js | 1 - .../plugins/image2/lang/et.js | 1 - .../plugins/image2/lang/eu.js | 1 - .../plugins/image2/lang/fa.js | 1 - .../plugins/image2/lang/fi.js | 1 - .../plugins/image2/lang/fo.js | 1 - .../plugins/image2/lang/fr-ca.js | 1 - .../plugins/image2/lang/fr.js | 1 - .../plugins/image2/lang/gl.js | 1 - .../plugins/image2/lang/gu.js | 1 - .../plugins/image2/lang/he.js | 1 - .../plugins/image2/lang/hi.js | 1 - .../plugins/image2/lang/hr.js | 1 - .../plugins/image2/lang/hu.js | 1 - .../plugins/image2/lang/id.js | 1 - .../plugins/image2/lang/is.js | 1 - .../plugins/image2/lang/it.js | 1 - .../plugins/image2/lang/ja.js | 1 - .../plugins/image2/lang/ka.js | 1 - .../plugins/image2/lang/km.js | 1 - .../plugins/image2/lang/ko.js | 1 - .../plugins/image2/lang/ku.js | 1 - .../plugins/image2/lang/lt.js | 1 - .../plugins/image2/lang/lv.js | 1 - .../plugins/image2/lang/mk.js | 1 - .../plugins/image2/lang/mn.js | 1 - .../plugins/image2/lang/ms.js | 1 - .../plugins/image2/lang/nb.js | 1 - .../plugins/image2/lang/nl.js | 2 - .../plugins/image2/lang/no.js | 1 - .../plugins/image2/lang/oc.js | 1 - .../plugins/image2/lang/pl.js | 1 - .../plugins/image2/lang/pt-br.js | 1 - .../plugins/image2/lang/pt.js | 1 - .../plugins/image2/lang/ro.js | 1 - .../plugins/image2/lang/ru.js | 1 - .../plugins/image2/lang/si.js | 1 - .../plugins/image2/lang/sk.js | 1 - .../plugins/image2/lang/sl.js | 1 - .../plugins/image2/lang/sq.js | 1 - .../plugins/image2/lang/sr-latn.js | 1 - .../plugins/image2/lang/sr.js | 1 - .../plugins/image2/lang/sv.js | 1 - .../plugins/image2/lang/th.js | 1 - .../plugins/image2/lang/tr.js | 1 - .../plugins/image2/lang/tt.js | 1 - .../plugins/image2/lang/ug.js | 1 - .../plugins/image2/lang/uk.js | 1 - .../plugins/image2/lang/vi.js | 1 - .../plugins/image2/lang/zh-cn.js | 1 - .../plugins/image2/lang/zh.js | 1 - .../laravel-ckeditor/plugins/image2/plugin.js | 31 - .../plugins/indentblock/plugin.js | 10 - .../justify/icons/hidpi/justifyblock.png | Bin 533 -> 0 bytes .../justify/icons/hidpi/justifycenter.png | Bin 576 -> 0 bytes .../justify/icons/hidpi/justifyleft.png | Bin 569 -> 0 bytes .../justify/icons/hidpi/justifyright.png | Bin 549 -> 0 bytes .../plugins/justify/icons/justifyblock.png | Bin 315 -> 0 bytes .../plugins/justify/icons/justifycenter.png | Bin 564 -> 0 bytes .../plugins/justify/icons/justifyleft.png | Bin 342 -> 0 bytes .../plugins/justify/icons/justifyright.png | Bin 348 -> 0 bytes .../plugins/justify/lang/af.js | 1 - .../plugins/justify/lang/ar.js | 1 - .../plugins/justify/lang/az.js | 1 - .../plugins/justify/lang/bg.js | 1 - .../plugins/justify/lang/bn.js | 1 - .../plugins/justify/lang/bs.js | 1 - .../plugins/justify/lang/ca.js | 1 - .../plugins/justify/lang/cs.js | 1 - .../plugins/justify/lang/cy.js | 1 - .../plugins/justify/lang/da.js | 1 - .../plugins/justify/lang/de-ch.js | 1 - .../plugins/justify/lang/de.js | 1 - .../plugins/justify/lang/el.js | 1 - .../plugins/justify/lang/en-au.js | 1 - .../plugins/justify/lang/en-ca.js | 1 - .../plugins/justify/lang/en-gb.js | 1 - .../plugins/justify/lang/en.js | 1 - .../plugins/justify/lang/eo.js | 1 - .../plugins/justify/lang/es-mx.js | 1 - .../plugins/justify/lang/es.js | 1 - .../plugins/justify/lang/et.js | 1 - .../plugins/justify/lang/eu.js | 1 - .../plugins/justify/lang/fa.js | 1 - .../plugins/justify/lang/fi.js | 1 - .../plugins/justify/lang/fo.js | 1 - .../plugins/justify/lang/fr-ca.js | 1 - .../plugins/justify/lang/fr.js | 1 - .../plugins/justify/lang/gl.js | 1 - .../plugins/justify/lang/gu.js | 1 - .../plugins/justify/lang/he.js | 1 - .../plugins/justify/lang/hi.js | 1 - .../plugins/justify/lang/hr.js | 1 - .../plugins/justify/lang/hu.js | 1 - .../plugins/justify/lang/id.js | 1 - .../plugins/justify/lang/is.js | 1 - .../plugins/justify/lang/it.js | 1 - .../plugins/justify/lang/ja.js | 1 - .../plugins/justify/lang/ka.js | 1 - .../plugins/justify/lang/km.js | 1 - .../plugins/justify/lang/ko.js | 1 - .../plugins/justify/lang/ku.js | 1 - .../plugins/justify/lang/lt.js | 1 - .../plugins/justify/lang/lv.js | 1 - .../plugins/justify/lang/mk.js | 1 - .../plugins/justify/lang/mn.js | 1 - .../plugins/justify/lang/ms.js | 1 - .../plugins/justify/lang/nb.js | 1 - .../plugins/justify/lang/nl.js | 1 - .../plugins/justify/lang/no.js | 1 - .../plugins/justify/lang/oc.js | 1 - .../plugins/justify/lang/pl.js | 1 - .../plugins/justify/lang/pt-br.js | 1 - .../plugins/justify/lang/pt.js | 1 - .../plugins/justify/lang/ro.js | 1 - .../plugins/justify/lang/ru.js | 1 - .../plugins/justify/lang/si.js | 1 - .../plugins/justify/lang/sk.js | 1 - .../plugins/justify/lang/sl.js | 1 - .../plugins/justify/lang/sq.js | 1 - .../plugins/justify/lang/sr-latn.js | 1 - .../plugins/justify/lang/sr.js | 1 - .../plugins/justify/lang/sv.js | 1 - .../plugins/justify/lang/th.js | 1 - .../plugins/justify/lang/tr.js | 1 - .../plugins/justify/lang/tt.js | 1 - .../plugins/justify/lang/ug.js | 1 - .../plugins/justify/lang/uk.js | 1 - .../plugins/justify/lang/vi.js | 1 - .../plugins/justify/lang/zh-cn.js | 1 - .../plugins/justify/lang/zh.js | 1 - .../plugins/justify/plugin.js | 12 - .../plugins/language/icons/hidpi/language.png | Bin 795 -> 0 bytes .../plugins/language/icons/language.png | Bin 433 -> 0 bytes .../plugins/language/lang/ar.js | 5 - .../plugins/language/lang/az.js | 5 - .../plugins/language/lang/bg.js | 5 - .../plugins/language/lang/ca.js | 5 - .../plugins/language/lang/cs.js | 5 - .../plugins/language/lang/cy.js | 5 - .../plugins/language/lang/da.js | 5 - .../plugins/language/lang/de-ch.js | 5 - .../plugins/language/lang/de.js | 5 - .../plugins/language/lang/el.js | 5 - .../plugins/language/lang/en-gb.js | 5 - .../plugins/language/lang/en.js | 5 - .../plugins/language/lang/eo.js | 5 - .../plugins/language/lang/es-mx.js | 5 - .../plugins/language/lang/es.js | 5 - .../plugins/language/lang/eu.js | 5 - .../plugins/language/lang/fa.js | 5 - .../plugins/language/lang/fi.js | 5 - .../plugins/language/lang/fo.js | 5 - .../plugins/language/lang/fr.js | 5 - .../plugins/language/lang/gl.js | 5 - .../plugins/language/lang/he.js | 5 - .../plugins/language/lang/hr.js | 5 - .../plugins/language/lang/hu.js | 5 - .../plugins/language/lang/id.js | 5 - .../plugins/language/lang/it.js | 5 - .../plugins/language/lang/ja.js | 5 - .../plugins/language/lang/km.js | 5 - .../plugins/language/lang/ko.js | 5 - .../plugins/language/lang/ku.js | 5 - .../plugins/language/lang/nb.js | 5 - .../plugins/language/lang/nl.js | 5 - .../plugins/language/lang/no.js | 5 - .../plugins/language/lang/oc.js | 5 - .../plugins/language/lang/pl.js | 5 - .../plugins/language/lang/pt-br.js | 5 - .../plugins/language/lang/pt.js | 5 - .../plugins/language/lang/ru.js | 5 - .../plugins/language/lang/sk.js | 5 - .../plugins/language/lang/sl.js | 5 - .../plugins/language/lang/sq.js | 5 - .../plugins/language/lang/sv.js | 5 - .../plugins/language/lang/tr.js | 5 - .../plugins/language/lang/tt.js | 5 - .../plugins/language/lang/ug.js | 5 - .../plugins/language/lang/uk.js | 5 - .../plugins/language/lang/vi.js | 5 - .../plugins/language/lang/zh-cn.js | 5 - .../plugins/language/lang/zh.js | 5 - .../plugins/language/plugin.js | 8 - .../plugins/lineutils/plugin.js | 22 - .../plugins/link/dialogs/anchor.js | 8 - .../plugins/link/dialogs/link.js | 28 - .../plugins/link/images/anchor.png | Bin 752 -> 0 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1109 -> 0 bytes .../plugins/liststyle/dialogs/liststyle.js | 10 - .../plugins/liststyle/lang/af.js | 2 - .../plugins/liststyle/lang/ar.js | 2 - .../plugins/liststyle/lang/az.js | 2 - .../plugins/liststyle/lang/bg.js | 2 - .../plugins/liststyle/lang/bn.js | 2 - .../plugins/liststyle/lang/bs.js | 2 - .../plugins/liststyle/lang/ca.js | 2 - .../plugins/liststyle/lang/cs.js | 2 - .../plugins/liststyle/lang/cy.js | 2 - .../plugins/liststyle/lang/da.js | 2 - .../plugins/liststyle/lang/de-ch.js | 2 - .../plugins/liststyle/lang/de.js | 2 - .../plugins/liststyle/lang/el.js | 2 - .../plugins/liststyle/lang/en-au.js | 2 - .../plugins/liststyle/lang/en-ca.js | 2 - .../plugins/liststyle/lang/en-gb.js | 2 - .../plugins/liststyle/lang/en.js | 2 - .../plugins/liststyle/lang/eo.js | 2 - .../plugins/liststyle/lang/es-mx.js | 2 - .../plugins/liststyle/lang/es.js | 2 - .../plugins/liststyle/lang/et.js | 2 - .../plugins/liststyle/lang/eu.js | 2 - .../plugins/liststyle/lang/fa.js | 2 - .../plugins/liststyle/lang/fi.js | 2 - .../plugins/liststyle/lang/fo.js | 2 - .../plugins/liststyle/lang/fr-ca.js | 2 - .../plugins/liststyle/lang/fr.js | 2 - .../plugins/liststyle/lang/gl.js | 2 - .../plugins/liststyle/lang/gu.js | 2 - .../plugins/liststyle/lang/he.js | 2 - .../plugins/liststyle/lang/hi.js | 2 - .../plugins/liststyle/lang/hr.js | 2 - .../plugins/liststyle/lang/hu.js | 2 - .../plugins/liststyle/lang/id.js | 2 - .../plugins/liststyle/lang/is.js | 2 - .../plugins/liststyle/lang/it.js | 2 - .../plugins/liststyle/lang/ja.js | 2 - .../plugins/liststyle/lang/ka.js | 2 - .../plugins/liststyle/lang/km.js | 2 - .../plugins/liststyle/lang/ko.js | 2 - .../plugins/liststyle/lang/ku.js | 2 - .../plugins/liststyle/lang/lt.js | 2 - .../plugins/liststyle/lang/lv.js | 2 - .../plugins/liststyle/lang/mk.js | 2 - .../plugins/liststyle/lang/mn.js | 2 - .../plugins/liststyle/lang/ms.js | 2 - .../plugins/liststyle/lang/nb.js | 2 - .../plugins/liststyle/lang/nl.js | 2 - .../plugins/liststyle/lang/no.js | 2 - .../plugins/liststyle/lang/oc.js | 2 - .../plugins/liststyle/lang/pl.js | 2 - .../plugins/liststyle/lang/pt-br.js | 2 - .../plugins/liststyle/lang/pt.js | 2 - .../plugins/liststyle/lang/ro.js | 2 - .../plugins/liststyle/lang/ru.js | 2 - .../plugins/liststyle/lang/si.js | 2 - .../plugins/liststyle/lang/sk.js | 2 - .../plugins/liststyle/lang/sl.js | 2 - .../plugins/liststyle/lang/sq.js | 2 - .../plugins/liststyle/lang/sr-latn.js | 2 - .../plugins/liststyle/lang/sr.js | 2 - .../plugins/liststyle/lang/sv.js | 2 - .../plugins/liststyle/lang/th.js | 2 - .../plugins/liststyle/lang/tr.js | 2 - .../plugins/liststyle/lang/tt.js | 2 - .../plugins/liststyle/lang/ug.js | 2 - .../plugins/liststyle/lang/uk.js | 2 - .../plugins/liststyle/lang/vi.js | 2 - .../plugins/liststyle/lang/zh-cn.js | 2 - .../plugins/liststyle/lang/zh.js | 2 - .../plugins/liststyle/plugin.js | 7 - .../magicline/images/hidpi/icon-rtl.png | Bin 176 -> 0 bytes .../plugins/magicline/images/hidpi/icon.png | Bin 199 -> 0 bytes .../plugins/magicline/images/icon-rtl.png | Bin 138 -> 0 bytes .../plugins/magicline/images/icon.png | Bin 133 -> 0 bytes .../plugins/mathjax/dialogs/mathjax.js | 7 - .../plugins/mathjax/icons/hidpi/mathjax.png | Bin 1437 -> 0 bytes .../plugins/mathjax/icons/mathjax.png | Bin 703 -> 0 bytes .../plugins/mathjax/images/loader.gif | Bin 784 -> 0 bytes .../plugins/mathjax/lang/af.js | 1 - .../plugins/mathjax/lang/ar.js | 1 - .../plugins/mathjax/lang/az.js | 1 - .../plugins/mathjax/lang/bg.js | 1 - .../plugins/mathjax/lang/ca.js | 1 - .../plugins/mathjax/lang/cs.js | 1 - .../plugins/mathjax/lang/cy.js | 1 - .../plugins/mathjax/lang/da.js | 1 - .../plugins/mathjax/lang/de-ch.js | 1 - .../plugins/mathjax/lang/de.js | 1 - .../plugins/mathjax/lang/el.js | 1 - .../plugins/mathjax/lang/en-gb.js | 1 - .../plugins/mathjax/lang/en.js | 1 - .../plugins/mathjax/lang/eo.js | 1 - .../plugins/mathjax/lang/es-mx.js | 1 - .../plugins/mathjax/lang/es.js | 1 - .../plugins/mathjax/lang/eu.js | 1 - .../plugins/mathjax/lang/fa.js | 1 - .../plugins/mathjax/lang/fi.js | 1 - .../plugins/mathjax/lang/fr.js | 1 - .../plugins/mathjax/lang/gl.js | 1 - .../plugins/mathjax/lang/he.js | 1 - .../plugins/mathjax/lang/hr.js | 1 - .../plugins/mathjax/lang/hu.js | 1 - .../plugins/mathjax/lang/id.js | 1 - .../plugins/mathjax/lang/it.js | 1 - .../plugins/mathjax/lang/ja.js | 1 - .../plugins/mathjax/lang/km.js | 1 - .../plugins/mathjax/lang/ko.js | 1 - .../plugins/mathjax/lang/ku.js | 1 - .../plugins/mathjax/lang/lt.js | 1 - .../plugins/mathjax/lang/nb.js | 1 - .../plugins/mathjax/lang/nl.js | 1 - .../plugins/mathjax/lang/no.js | 1 - .../plugins/mathjax/lang/oc.js | 1 - .../plugins/mathjax/lang/pl.js | 1 - .../plugins/mathjax/lang/pt-br.js | 1 - .../plugins/mathjax/lang/pt.js | 1 - .../plugins/mathjax/lang/ro.js | 1 - .../plugins/mathjax/lang/ru.js | 1 - .../plugins/mathjax/lang/sk.js | 1 - .../plugins/mathjax/lang/sl.js | 1 - .../plugins/mathjax/lang/sq.js | 1 - .../plugins/mathjax/lang/sv.js | 1 - .../plugins/mathjax/lang/tr.js | 1 - .../plugins/mathjax/lang/tt.js | 1 - .../plugins/mathjax/lang/ug.js | 1 - .../plugins/mathjax/lang/uk.js | 1 - .../plugins/mathjax/lang/vi.js | 1 - .../plugins/mathjax/lang/zh-cn.js | 1 - .../plugins/mathjax/lang/zh.js | 1 - .../plugins/mathjax/plugin.js | 15 - .../newpage/icons/hidpi/newpage-rtl.png | Bin 653 -> 0 bytes .../plugins/newpage/icons/hidpi/newpage.png | Bin 675 -> 0 bytes .../plugins/newpage/icons/newpage-rtl.png | Bin 440 -> 0 bytes .../plugins/newpage/icons/newpage.png | Bin 444 -> 0 bytes .../plugins/newpage/lang/af.js | 1 - .../plugins/newpage/lang/ar.js | 1 - .../plugins/newpage/lang/az.js | 1 - .../plugins/newpage/lang/bg.js | 1 - .../plugins/newpage/lang/bn.js | 1 - .../plugins/newpage/lang/bs.js | 1 - .../plugins/newpage/lang/ca.js | 1 - .../plugins/newpage/lang/cs.js | 1 - .../plugins/newpage/lang/cy.js | 1 - .../plugins/newpage/lang/da.js | 1 - .../plugins/newpage/lang/de-ch.js | 1 - .../plugins/newpage/lang/de.js | 1 - .../plugins/newpage/lang/el.js | 1 - .../plugins/newpage/lang/en-au.js | 1 - .../plugins/newpage/lang/en-ca.js | 1 - .../plugins/newpage/lang/en-gb.js | 1 - .../plugins/newpage/lang/en.js | 1 - .../plugins/newpage/lang/eo.js | 1 - .../plugins/newpage/lang/es-mx.js | 1 - .../plugins/newpage/lang/es.js | 1 - .../plugins/newpage/lang/et.js | 1 - .../plugins/newpage/lang/eu.js | 1 - .../plugins/newpage/lang/fa.js | 1 - .../plugins/newpage/lang/fi.js | 1 - .../plugins/newpage/lang/fo.js | 1 - .../plugins/newpage/lang/fr-ca.js | 1 - .../plugins/newpage/lang/fr.js | 1 - .../plugins/newpage/lang/gl.js | 1 - .../plugins/newpage/lang/gu.js | 1 - .../plugins/newpage/lang/he.js | 1 - .../plugins/newpage/lang/hi.js | 1 - .../plugins/newpage/lang/hr.js | 1 - .../plugins/newpage/lang/hu.js | 1 - .../plugins/newpage/lang/id.js | 1 - .../plugins/newpage/lang/is.js | 1 - .../plugins/newpage/lang/it.js | 1 - .../plugins/newpage/lang/ja.js | 1 - .../plugins/newpage/lang/ka.js | 1 - .../plugins/newpage/lang/km.js | 1 - .../plugins/newpage/lang/ko.js | 1 - .../plugins/newpage/lang/ku.js | 1 - .../plugins/newpage/lang/lt.js | 1 - .../plugins/newpage/lang/lv.js | 1 - .../plugins/newpage/lang/mk.js | 1 - .../plugins/newpage/lang/mn.js | 1 - .../plugins/newpage/lang/ms.js | 1 - .../plugins/newpage/lang/nb.js | 1 - .../plugins/newpage/lang/nl.js | 1 - .../plugins/newpage/lang/no.js | 1 - .../plugins/newpage/lang/oc.js | 1 - .../plugins/newpage/lang/pl.js | 1 - .../plugins/newpage/lang/pt-br.js | 1 - .../plugins/newpage/lang/pt.js | 1 - .../plugins/newpage/lang/ro.js | 1 - .../plugins/newpage/lang/ru.js | 1 - .../plugins/newpage/lang/si.js | 1 - .../plugins/newpage/lang/sk.js | 1 - .../plugins/newpage/lang/sl.js | 1 - .../plugins/newpage/lang/sq.js | 1 - .../plugins/newpage/lang/sr-latn.js | 1 - .../plugins/newpage/lang/sr.js | 1 - .../plugins/newpage/lang/sv.js | 1 - .../plugins/newpage/lang/th.js | 1 - .../plugins/newpage/lang/tr.js | 1 - .../plugins/newpage/lang/tt.js | 1 - .../plugins/newpage/lang/ug.js | 1 - .../plugins/newpage/lang/uk.js | 1 - .../plugins/newpage/lang/vi.js | 1 - .../plugins/newpage/lang/zh-cn.js | 1 - .../plugins/newpage/lang/zh.js | 1 - .../plugins/newpage/plugin.js | 6 - .../plugins/notificationaggregator/plugin.js | 9 - .../pagebreak/icons/hidpi/pagebreak-rtl.png | Bin 807 -> 0 bytes .../pagebreak/icons/hidpi/pagebreak.png | Bin 809 -> 0 bytes .../plugins/pagebreak/icons/pagebreak-rtl.png | Bin 468 -> 0 bytes .../plugins/pagebreak/icons/pagebreak.png | Bin 459 -> 0 bytes .../plugins/pagebreak/images/pagebreak.gif | Bin 99 -> 0 bytes .../plugins/pagebreak/lang/af.js | 1 - .../plugins/pagebreak/lang/ar.js | 1 - .../plugins/pagebreak/lang/az.js | 1 - .../plugins/pagebreak/lang/bg.js | 1 - .../plugins/pagebreak/lang/bn.js | 1 - .../plugins/pagebreak/lang/bs.js | 1 - .../plugins/pagebreak/lang/ca.js | 1 - .../plugins/pagebreak/lang/cs.js | 1 - .../plugins/pagebreak/lang/cy.js | 1 - .../plugins/pagebreak/lang/da.js | 1 - .../plugins/pagebreak/lang/de-ch.js | 1 - .../plugins/pagebreak/lang/de.js | 1 - .../plugins/pagebreak/lang/el.js | 1 - .../plugins/pagebreak/lang/en-au.js | 1 - .../plugins/pagebreak/lang/en-ca.js | 1 - .../plugins/pagebreak/lang/en-gb.js | 1 - .../plugins/pagebreak/lang/en.js | 1 - .../plugins/pagebreak/lang/eo.js | 1 - .../plugins/pagebreak/lang/es-mx.js | 1 - .../plugins/pagebreak/lang/es.js | 1 - .../plugins/pagebreak/lang/et.js | 1 - .../plugins/pagebreak/lang/eu.js | 1 - .../plugins/pagebreak/lang/fa.js | 1 - .../plugins/pagebreak/lang/fi.js | 1 - .../plugins/pagebreak/lang/fo.js | 1 - .../plugins/pagebreak/lang/fr-ca.js | 1 - .../plugins/pagebreak/lang/fr.js | 1 - .../plugins/pagebreak/lang/gl.js | 1 - .../plugins/pagebreak/lang/gu.js | 1 - .../plugins/pagebreak/lang/he.js | 1 - .../plugins/pagebreak/lang/hi.js | 1 - .../plugins/pagebreak/lang/hr.js | 1 - .../plugins/pagebreak/lang/hu.js | 1 - .../plugins/pagebreak/lang/id.js | 1 - .../plugins/pagebreak/lang/is.js | 1 - .../plugins/pagebreak/lang/it.js | 1 - .../plugins/pagebreak/lang/ja.js | 1 - .../plugins/pagebreak/lang/ka.js | 1 - .../plugins/pagebreak/lang/km.js | 1 - .../plugins/pagebreak/lang/ko.js | 1 - .../plugins/pagebreak/lang/ku.js | 1 - .../plugins/pagebreak/lang/lt.js | 1 - .../plugins/pagebreak/lang/lv.js | 1 - .../plugins/pagebreak/lang/mk.js | 1 - .../plugins/pagebreak/lang/mn.js | 1 - .../plugins/pagebreak/lang/ms.js | 1 - .../plugins/pagebreak/lang/nb.js | 1 - .../plugins/pagebreak/lang/nl.js | 1 - .../plugins/pagebreak/lang/no.js | 1 - .../plugins/pagebreak/lang/oc.js | 1 - .../plugins/pagebreak/lang/pl.js | 1 - .../plugins/pagebreak/lang/pt-br.js | 1 - .../plugins/pagebreak/lang/pt.js | 1 - .../plugins/pagebreak/lang/ro.js | 1 - .../plugins/pagebreak/lang/ru.js | 1 - .../plugins/pagebreak/lang/si.js | 1 - .../plugins/pagebreak/lang/sk.js | 1 - .../plugins/pagebreak/lang/sl.js | 1 - .../plugins/pagebreak/lang/sq.js | 1 - .../plugins/pagebreak/lang/sr-latn.js | 1 - .../plugins/pagebreak/lang/sr.js | 1 - .../plugins/pagebreak/lang/sv.js | 1 - .../plugins/pagebreak/lang/th.js | 1 - .../plugins/pagebreak/lang/tr.js | 1 - .../plugins/pagebreak/lang/tt.js | 1 - .../plugins/pagebreak/lang/ug.js | 1 - .../plugins/pagebreak/lang/uk.js | 1 - .../plugins/pagebreak/lang/vi.js | 1 - .../plugins/pagebreak/lang/zh-cn.js | 1 - .../plugins/pagebreak/lang/zh.js | 1 - .../plugins/pagebreak/plugin.js | 9 - .../plugins/panelbutton/plugin.js | 8 - .../plugins/pastefromword/filter/default.js | 52 - .../placeholder/dialogs/placeholder.js | 5 - .../placeholder/icons/hidpi/placeholder.png | Bin 1576 -> 0 bytes .../plugins/placeholder/icons/placeholder.png | Bin 835 -> 0 bytes .../plugins/placeholder/lang/af.js | 5 - .../plugins/placeholder/lang/ar.js | 5 - .../plugins/placeholder/lang/az.js | 5 - .../plugins/placeholder/lang/bg.js | 5 - .../plugins/placeholder/lang/ca.js | 5 - .../plugins/placeholder/lang/cs.js | 5 - .../plugins/placeholder/lang/cy.js | 5 - .../plugins/placeholder/lang/da.js | 5 - .../plugins/placeholder/lang/de-ch.js | 5 - .../plugins/placeholder/lang/de.js | 5 - .../plugins/placeholder/lang/el.js | 5 - .../plugins/placeholder/lang/en-gb.js | 5 - .../plugins/placeholder/lang/en.js | 5 - .../plugins/placeholder/lang/eo.js | 5 - .../plugins/placeholder/lang/es-mx.js | 5 - .../plugins/placeholder/lang/es.js | 5 - .../plugins/placeholder/lang/et.js | 5 - .../plugins/placeholder/lang/eu.js | 5 - .../plugins/placeholder/lang/fa.js | 5 - .../plugins/placeholder/lang/fi.js | 5 - .../plugins/placeholder/lang/fr-ca.js | 5 - .../plugins/placeholder/lang/fr.js | 5 - .../plugins/placeholder/lang/gl.js | 5 - .../plugins/placeholder/lang/he.js | 5 - .../plugins/placeholder/lang/hr.js | 5 - .../plugins/placeholder/lang/hu.js | 5 - .../plugins/placeholder/lang/id.js | 5 - .../plugins/placeholder/lang/it.js | 5 - .../plugins/placeholder/lang/ja.js | 5 - .../plugins/placeholder/lang/km.js | 5 - .../plugins/placeholder/lang/ko.js | 5 - .../plugins/placeholder/lang/ku.js | 5 - .../plugins/placeholder/lang/lv.js | 5 - .../plugins/placeholder/lang/nb.js | 5 - .../plugins/placeholder/lang/nl.js | 5 - .../plugins/placeholder/lang/no.js | 5 - .../plugins/placeholder/lang/oc.js | 5 - .../plugins/placeholder/lang/pl.js | 5 - .../plugins/placeholder/lang/pt-br.js | 5 - .../plugins/placeholder/lang/pt.js | 5 - .../plugins/placeholder/lang/ru.js | 5 - .../plugins/placeholder/lang/si.js | 5 - .../plugins/placeholder/lang/sk.js | 5 - .../plugins/placeholder/lang/sl.js | 5 - .../plugins/placeholder/lang/sq.js | 5 - .../plugins/placeholder/lang/sv.js | 5 - .../plugins/placeholder/lang/th.js | 5 - .../plugins/placeholder/lang/tr.js | 5 - .../plugins/placeholder/lang/tt.js | 5 - .../plugins/placeholder/lang/ug.js | 5 - .../plugins/placeholder/lang/uk.js | 5 - .../plugins/placeholder/lang/vi.js | 5 - .../plugins/placeholder/lang/zh-cn.js | 5 - .../plugins/placeholder/lang/zh.js | 5 - .../plugins/placeholder/plugin.js | 7 - .../preview/icons/hidpi/preview-rtl.png | Bin 1241 -> 0 bytes .../plugins/preview/icons/hidpi/preview.png | Bin 1254 -> 0 bytes .../plugins/preview/icons/preview-rtl.png | Bin 625 -> 0 bytes .../plugins/preview/icons/preview.png | Bin 632 -> 0 bytes .../plugins/preview/lang/af.js | 1 - .../plugins/preview/lang/ar.js | 1 - .../plugins/preview/lang/az.js | 1 - .../plugins/preview/lang/bg.js | 1 - .../plugins/preview/lang/bn.js | 1 - .../plugins/preview/lang/bs.js | 1 - .../plugins/preview/lang/ca.js | 1 - .../plugins/preview/lang/cs.js | 1 - .../plugins/preview/lang/cy.js | 1 - .../plugins/preview/lang/da.js | 1 - .../plugins/preview/lang/de-ch.js | 1 - .../plugins/preview/lang/de.js | 1 - .../plugins/preview/lang/el.js | 1 - .../plugins/preview/lang/en-au.js | 1 - .../plugins/preview/lang/en-ca.js | 1 - .../plugins/preview/lang/en-gb.js | 1 - .../plugins/preview/lang/en.js | 1 - .../plugins/preview/lang/eo.js | 1 - .../plugins/preview/lang/es-mx.js | 1 - .../plugins/preview/lang/es.js | 1 - .../plugins/preview/lang/et.js | 1 - .../plugins/preview/lang/eu.js | 1 - .../plugins/preview/lang/fa.js | 1 - .../plugins/preview/lang/fi.js | 1 - .../plugins/preview/lang/fo.js | 1 - .../plugins/preview/lang/fr-ca.js | 1 - .../plugins/preview/lang/fr.js | 1 - .../plugins/preview/lang/gl.js | 1 - .../plugins/preview/lang/gu.js | 1 - .../plugins/preview/lang/he.js | 1 - .../plugins/preview/lang/hi.js | 1 - .../plugins/preview/lang/hr.js | 1 - .../plugins/preview/lang/hu.js | 1 - .../plugins/preview/lang/id.js | 1 - .../plugins/preview/lang/is.js | 1 - .../plugins/preview/lang/it.js | 1 - .../plugins/preview/lang/ja.js | 1 - .../plugins/preview/lang/ka.js | 1 - .../plugins/preview/lang/km.js | 1 - .../plugins/preview/lang/ko.js | 1 - .../plugins/preview/lang/ku.js | 1 - .../plugins/preview/lang/lt.js | 1 - .../plugins/preview/lang/lv.js | 1 - .../plugins/preview/lang/mk.js | 1 - .../plugins/preview/lang/mn.js | 1 - .../plugins/preview/lang/ms.js | 1 - .../plugins/preview/lang/nb.js | 1 - .../plugins/preview/lang/nl.js | 1 - .../plugins/preview/lang/no.js | 1 - .../plugins/preview/lang/oc.js | 1 - .../plugins/preview/lang/pl.js | 1 - .../plugins/preview/lang/pt-br.js | 1 - .../plugins/preview/lang/pt.js | 1 - .../plugins/preview/lang/ro.js | 1 - .../plugins/preview/lang/ru.js | 1 - .../plugins/preview/lang/si.js | 1 - .../plugins/preview/lang/sk.js | 1 - .../plugins/preview/lang/sl.js | 1 - .../plugins/preview/lang/sq.js | 1 - .../plugins/preview/lang/sr-latn.js | 1 - .../plugins/preview/lang/sr.js | 1 - .../plugins/preview/lang/sv.js | 1 - .../plugins/preview/lang/th.js | 1 - .../plugins/preview/lang/tr.js | 1 - .../plugins/preview/lang/tt.js | 1 - .../plugins/preview/lang/ug.js | 1 - .../plugins/preview/lang/uk.js | 1 - .../plugins/preview/lang/vi.js | 1 - .../plugins/preview/lang/zh-cn.js | 1 - .../plugins/preview/lang/zh.js | 1 - .../plugins/preview/plugin.js | 9 - .../plugins/preview/preview.html | 13 - .../plugins/print/icons/hidpi/print.png | Bin 928 -> 0 bytes .../plugins/print/icons/print.png | Bin 439 -> 0 bytes .../laravel-ckeditor/plugins/print/lang/af.js | 1 - .../laravel-ckeditor/plugins/print/lang/ar.js | 1 - .../laravel-ckeditor/plugins/print/lang/az.js | 1 - .../laravel-ckeditor/plugins/print/lang/bg.js | 1 - .../laravel-ckeditor/plugins/print/lang/bn.js | 1 - .../laravel-ckeditor/plugins/print/lang/bs.js | 1 - .../laravel-ckeditor/plugins/print/lang/ca.js | 1 - .../laravel-ckeditor/plugins/print/lang/cs.js | 1 - .../laravel-ckeditor/plugins/print/lang/cy.js | 1 - .../laravel-ckeditor/plugins/print/lang/da.js | 1 - .../plugins/print/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/print/lang/de.js | 1 - .../laravel-ckeditor/plugins/print/lang/el.js | 1 - .../plugins/print/lang/en-au.js | 1 - .../plugins/print/lang/en-ca.js | 1 - .../plugins/print/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/print/lang/en.js | 1 - .../laravel-ckeditor/plugins/print/lang/eo.js | 1 - .../plugins/print/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/print/lang/es.js | 1 - .../laravel-ckeditor/plugins/print/lang/et.js | 1 - .../laravel-ckeditor/plugins/print/lang/eu.js | 1 - .../laravel-ckeditor/plugins/print/lang/fa.js | 1 - .../laravel-ckeditor/plugins/print/lang/fi.js | 1 - .../laravel-ckeditor/plugins/print/lang/fo.js | 1 - .../plugins/print/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/print/lang/fr.js | 1 - .../laravel-ckeditor/plugins/print/lang/gl.js | 1 - .../laravel-ckeditor/plugins/print/lang/gu.js | 1 - .../laravel-ckeditor/plugins/print/lang/he.js | 1 - .../laravel-ckeditor/plugins/print/lang/hi.js | 1 - .../laravel-ckeditor/plugins/print/lang/hr.js | 1 - .../laravel-ckeditor/plugins/print/lang/hu.js | 1 - .../laravel-ckeditor/plugins/print/lang/id.js | 1 - .../laravel-ckeditor/plugins/print/lang/is.js | 1 - .../laravel-ckeditor/plugins/print/lang/it.js | 1 - .../laravel-ckeditor/plugins/print/lang/ja.js | 1 - .../laravel-ckeditor/plugins/print/lang/ka.js | 1 - .../laravel-ckeditor/plugins/print/lang/km.js | 1 - .../laravel-ckeditor/plugins/print/lang/ko.js | 1 - .../laravel-ckeditor/plugins/print/lang/ku.js | 1 - .../laravel-ckeditor/plugins/print/lang/lt.js | 1 - .../laravel-ckeditor/plugins/print/lang/lv.js | 1 - .../laravel-ckeditor/plugins/print/lang/mk.js | 1 - .../laravel-ckeditor/plugins/print/lang/mn.js | 1 - .../laravel-ckeditor/plugins/print/lang/ms.js | 1 - .../laravel-ckeditor/plugins/print/lang/nb.js | 1 - .../laravel-ckeditor/plugins/print/lang/nl.js | 1 - .../laravel-ckeditor/plugins/print/lang/no.js | 1 - .../laravel-ckeditor/plugins/print/lang/oc.js | 1 - .../laravel-ckeditor/plugins/print/lang/pl.js | 1 - .../plugins/print/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/print/lang/pt.js | 1 - .../laravel-ckeditor/plugins/print/lang/ro.js | 1 - .../laravel-ckeditor/plugins/print/lang/ru.js | 1 - .../laravel-ckeditor/plugins/print/lang/si.js | 1 - .../laravel-ckeditor/plugins/print/lang/sk.js | 1 - .../laravel-ckeditor/plugins/print/lang/sl.js | 1 - .../laravel-ckeditor/plugins/print/lang/sq.js | 1 - .../plugins/print/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/print/lang/sr.js | 1 - .../laravel-ckeditor/plugins/print/lang/sv.js | 1 - .../laravel-ckeditor/plugins/print/lang/th.js | 1 - .../laravel-ckeditor/plugins/print/lang/tr.js | 1 - .../laravel-ckeditor/plugins/print/lang/tt.js | 1 - .../laravel-ckeditor/plugins/print/lang/ug.js | 1 - .../laravel-ckeditor/plugins/print/lang/uk.js | 1 - .../laravel-ckeditor/plugins/print/lang/vi.js | 1 - .../plugins/print/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/print/lang/zh.js | 1 - .../laravel-ckeditor/plugins/print/plugin.js | 6 - .../plugins/save/icons/hidpi/save.png | Bin 809 -> 0 bytes .../plugins/save/icons/save.png | Bin 430 -> 0 bytes .../laravel-ckeditor/plugins/save/lang/af.js | 1 - .../laravel-ckeditor/plugins/save/lang/ar.js | 1 - .../laravel-ckeditor/plugins/save/lang/az.js | 1 - .../laravel-ckeditor/plugins/save/lang/bg.js | 1 - .../laravel-ckeditor/plugins/save/lang/bn.js | 1 - .../laravel-ckeditor/plugins/save/lang/bs.js | 1 - .../laravel-ckeditor/plugins/save/lang/ca.js | 1 - .../laravel-ckeditor/plugins/save/lang/cs.js | 1 - .../laravel-ckeditor/plugins/save/lang/cy.js | 1 - .../laravel-ckeditor/plugins/save/lang/da.js | 1 - .../plugins/save/lang/de-ch.js | 1 - .../laravel-ckeditor/plugins/save/lang/de.js | 1 - .../laravel-ckeditor/plugins/save/lang/el.js | 1 - .../plugins/save/lang/en-au.js | 1 - .../plugins/save/lang/en-ca.js | 1 - .../plugins/save/lang/en-gb.js | 1 - .../laravel-ckeditor/plugins/save/lang/en.js | 1 - .../laravel-ckeditor/plugins/save/lang/eo.js | 1 - .../plugins/save/lang/es-mx.js | 1 - .../laravel-ckeditor/plugins/save/lang/es.js | 1 - .../laravel-ckeditor/plugins/save/lang/et.js | 1 - .../laravel-ckeditor/plugins/save/lang/eu.js | 1 - .../laravel-ckeditor/plugins/save/lang/fa.js | 1 - .../laravel-ckeditor/plugins/save/lang/fi.js | 1 - .../laravel-ckeditor/plugins/save/lang/fo.js | 1 - .../plugins/save/lang/fr-ca.js | 1 - .../laravel-ckeditor/plugins/save/lang/fr.js | 1 - .../laravel-ckeditor/plugins/save/lang/gl.js | 1 - .../laravel-ckeditor/plugins/save/lang/gu.js | 1 - .../laravel-ckeditor/plugins/save/lang/he.js | 1 - .../laravel-ckeditor/plugins/save/lang/hi.js | 1 - .../laravel-ckeditor/plugins/save/lang/hr.js | 1 - .../laravel-ckeditor/plugins/save/lang/hu.js | 1 - .../laravel-ckeditor/plugins/save/lang/id.js | 1 - .../laravel-ckeditor/plugins/save/lang/is.js | 1 - .../laravel-ckeditor/plugins/save/lang/it.js | 1 - .../laravel-ckeditor/plugins/save/lang/ja.js | 1 - .../laravel-ckeditor/plugins/save/lang/ka.js | 1 - .../laravel-ckeditor/plugins/save/lang/km.js | 1 - .../laravel-ckeditor/plugins/save/lang/ko.js | 1 - .../laravel-ckeditor/plugins/save/lang/ku.js | 1 - .../laravel-ckeditor/plugins/save/lang/lt.js | 1 - .../laravel-ckeditor/plugins/save/lang/lv.js | 1 - .../laravel-ckeditor/plugins/save/lang/mk.js | 1 - .../laravel-ckeditor/plugins/save/lang/mn.js | 1 - .../laravel-ckeditor/plugins/save/lang/ms.js | 1 - .../laravel-ckeditor/plugins/save/lang/nb.js | 1 - .../laravel-ckeditor/plugins/save/lang/nl.js | 1 - .../laravel-ckeditor/plugins/save/lang/no.js | 1 - .../laravel-ckeditor/plugins/save/lang/oc.js | 1 - .../laravel-ckeditor/plugins/save/lang/pl.js | 1 - .../plugins/save/lang/pt-br.js | 1 - .../laravel-ckeditor/plugins/save/lang/pt.js | 1 - .../laravel-ckeditor/plugins/save/lang/ro.js | 1 - .../laravel-ckeditor/plugins/save/lang/ru.js | 1 - .../laravel-ckeditor/plugins/save/lang/si.js | 1 - .../laravel-ckeditor/plugins/save/lang/sk.js | 1 - .../laravel-ckeditor/plugins/save/lang/sl.js | 1 - .../laravel-ckeditor/plugins/save/lang/sq.js | 1 - .../plugins/save/lang/sr-latn.js | 1 - .../laravel-ckeditor/plugins/save/lang/sr.js | 1 - .../laravel-ckeditor/plugins/save/lang/sv.js | 1 - .../laravel-ckeditor/plugins/save/lang/th.js | 1 - .../laravel-ckeditor/plugins/save/lang/tr.js | 1 - .../laravel-ckeditor/plugins/save/lang/tt.js | 1 - .../laravel-ckeditor/plugins/save/lang/ug.js | 1 - .../laravel-ckeditor/plugins/save/lang/uk.js | 1 - .../laravel-ckeditor/plugins/save/lang/vi.js | 1 - .../plugins/save/lang/zh-cn.js | 1 - .../laravel-ckeditor/plugins/save/lang/zh.js | 1 - .../laravel-ckeditor/plugins/save/plugin.js | 6 - .../plugins/scayt/CHANGELOG.md | 20 - .../laravel-ckeditor/plugins/scayt/LICENSE.md | 28 - .../plugins/scayt/dialogs/dialog.css | 23 - .../plugins/scayt/dialogs/options.js | 33 - .../plugins/scayt/dialogs/toolbar.css | 71 - .../plugins/scayt/skins/moono-lisa/scayt.css | 25 - .../selectall/icons/hidpi/selectall.png | Bin 1117 -> 0 bytes .../plugins/selectall/icons/selectall.png | Bin 747 -> 0 bytes .../plugins/selectall/lang/af.js | 1 - .../plugins/selectall/lang/ar.js | 1 - .../plugins/selectall/lang/az.js | 1 - .../plugins/selectall/lang/bg.js | 1 - .../plugins/selectall/lang/bn.js | 1 - .../plugins/selectall/lang/bs.js | 1 - .../plugins/selectall/lang/ca.js | 1 - .../plugins/selectall/lang/cs.js | 1 - .../plugins/selectall/lang/cy.js | 1 - .../plugins/selectall/lang/da.js | 1 - .../plugins/selectall/lang/de-ch.js | 1 - .../plugins/selectall/lang/de.js | 1 - .../plugins/selectall/lang/el.js | 1 - .../plugins/selectall/lang/en-au.js | 1 - .../plugins/selectall/lang/en-ca.js | 1 - .../plugins/selectall/lang/en-gb.js | 1 - .../plugins/selectall/lang/en.js | 1 - .../plugins/selectall/lang/eo.js | 1 - .../plugins/selectall/lang/es-mx.js | 1 - .../plugins/selectall/lang/es.js | 1 - .../plugins/selectall/lang/et.js | 1 - .../plugins/selectall/lang/eu.js | 1 - .../plugins/selectall/lang/fa.js | 1 - .../plugins/selectall/lang/fi.js | 1 - .../plugins/selectall/lang/fo.js | 1 - .../plugins/selectall/lang/fr-ca.js | 1 - .../plugins/selectall/lang/fr.js | 1 - .../plugins/selectall/lang/gl.js | 1 - .../plugins/selectall/lang/gu.js | 1 - .../plugins/selectall/lang/he.js | 1 - .../plugins/selectall/lang/hi.js | 1 - .../plugins/selectall/lang/hr.js | 1 - .../plugins/selectall/lang/hu.js | 1 - .../plugins/selectall/lang/id.js | 1 - .../plugins/selectall/lang/is.js | 1 - .../plugins/selectall/lang/it.js | 1 - .../plugins/selectall/lang/ja.js | 1 - .../plugins/selectall/lang/ka.js | 1 - .../plugins/selectall/lang/km.js | 1 - .../plugins/selectall/lang/ko.js | 1 - .../plugins/selectall/lang/ku.js | 1 - .../plugins/selectall/lang/lt.js | 1 - .../plugins/selectall/lang/lv.js | 1 - .../plugins/selectall/lang/mk.js | 1 - .../plugins/selectall/lang/mn.js | 1 - .../plugins/selectall/lang/ms.js | 1 - .../plugins/selectall/lang/nb.js | 1 - .../plugins/selectall/lang/nl.js | 1 - .../plugins/selectall/lang/no.js | 1 - .../plugins/selectall/lang/oc.js | 1 - .../plugins/selectall/lang/pl.js | 1 - .../plugins/selectall/lang/pt-br.js | 1 - .../plugins/selectall/lang/pt.js | 1 - .../plugins/selectall/lang/ro.js | 1 - .../plugins/selectall/lang/ru.js | 1 - .../plugins/selectall/lang/si.js | 1 - .../plugins/selectall/lang/sk.js | 1 - .../plugins/selectall/lang/sl.js | 1 - .../plugins/selectall/lang/sq.js | 1 - .../plugins/selectall/lang/sr-latn.js | 1 - .../plugins/selectall/lang/sr.js | 1 - .../plugins/selectall/lang/sv.js | 1 - .../plugins/selectall/lang/th.js | 1 - .../plugins/selectall/lang/tr.js | 1 - .../plugins/selectall/lang/tt.js | 1 - .../plugins/selectall/lang/ug.js | 1 - .../plugins/selectall/lang/uk.js | 1 - .../plugins/selectall/lang/vi.js | 1 - .../plugins/selectall/lang/zh-cn.js | 1 - .../plugins/selectall/lang/zh.js | 1 - .../plugins/selectall/plugin.js | 6 - .../plugins/sharedspace/plugin.js | 7 - .../showblocks/icons/hidpi/showblocks-rtl.png | Bin 910 -> 0 bytes .../showblocks/icons/hidpi/showblocks.png | Bin 918 -> 0 bytes .../showblocks/icons/showblocks-rtl.png | Bin 490 -> 0 bytes .../plugins/showblocks/icons/showblocks.png | Bin 483 -> 0 bytes .../showblocks/images/block_address.png | Bin 152 -> 0 bytes .../showblocks/images/block_blockquote.png | Bin 154 -> 0 bytes .../plugins/showblocks/images/block_div.png | Bin 127 -> 0 bytes .../plugins/showblocks/images/block_h1.png | Bin 120 -> 0 bytes .../plugins/showblocks/images/block_h2.png | Bin 127 -> 0 bytes .../plugins/showblocks/images/block_h3.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_h4.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_h5.png | Bin 126 -> 0 bytes .../plugins/showblocks/images/block_h6.png | Bin 123 -> 0 bytes .../plugins/showblocks/images/block_p.png | Bin 115 -> 0 bytes .../plugins/showblocks/images/block_pre.png | Bin 128 -> 0 bytes .../plugins/showblocks/lang/af.js | 1 - .../plugins/showblocks/lang/ar.js | 1 - .../plugins/showblocks/lang/az.js | 1 - .../plugins/showblocks/lang/bg.js | 1 - .../plugins/showblocks/lang/bn.js | 1 - .../plugins/showblocks/lang/bs.js | 1 - .../plugins/showblocks/lang/ca.js | 1 - .../plugins/showblocks/lang/cs.js | 1 - .../plugins/showblocks/lang/cy.js | 1 - .../plugins/showblocks/lang/da.js | 1 - .../plugins/showblocks/lang/de-ch.js | 1 - .../plugins/showblocks/lang/de.js | 1 - .../plugins/showblocks/lang/el.js | 1 - .../plugins/showblocks/lang/en-au.js | 1 - .../plugins/showblocks/lang/en-ca.js | 1 - .../plugins/showblocks/lang/en-gb.js | 1 - .../plugins/showblocks/lang/en.js | 1 - .../plugins/showblocks/lang/eo.js | 1 - .../plugins/showblocks/lang/es-mx.js | 1 - .../plugins/showblocks/lang/es.js | 1 - .../plugins/showblocks/lang/et.js | 1 - .../plugins/showblocks/lang/eu.js | 1 - .../plugins/showblocks/lang/fa.js | 1 - .../plugins/showblocks/lang/fi.js | 1 - .../plugins/showblocks/lang/fo.js | 1 - .../plugins/showblocks/lang/fr-ca.js | 1 - .../plugins/showblocks/lang/fr.js | 1 - .../plugins/showblocks/lang/gl.js | 1 - .../plugins/showblocks/lang/gu.js | 1 - .../plugins/showblocks/lang/he.js | 1 - .../plugins/showblocks/lang/hi.js | 1 - .../plugins/showblocks/lang/hr.js | 1 - .../plugins/showblocks/lang/hu.js | 1 - .../plugins/showblocks/lang/id.js | 1 - .../plugins/showblocks/lang/is.js | 1 - .../plugins/showblocks/lang/it.js | 1 - .../plugins/showblocks/lang/ja.js | 1 - .../plugins/showblocks/lang/ka.js | 1 - .../plugins/showblocks/lang/km.js | 1 - .../plugins/showblocks/lang/ko.js | 1 - .../plugins/showblocks/lang/ku.js | 1 - .../plugins/showblocks/lang/lt.js | 1 - .../plugins/showblocks/lang/lv.js | 1 - .../plugins/showblocks/lang/mk.js | 1 - .../plugins/showblocks/lang/mn.js | 1 - .../plugins/showblocks/lang/ms.js | 1 - .../plugins/showblocks/lang/nb.js | 1 - .../plugins/showblocks/lang/nl.js | 1 - .../plugins/showblocks/lang/no.js | 1 - .../plugins/showblocks/lang/oc.js | 1 - .../plugins/showblocks/lang/pl.js | 1 - .../plugins/showblocks/lang/pt-br.js | 1 - .../plugins/showblocks/lang/pt.js | 1 - .../plugins/showblocks/lang/ro.js | 1 - .../plugins/showblocks/lang/ru.js | 1 - .../plugins/showblocks/lang/si.js | 1 - .../plugins/showblocks/lang/sk.js | 1 - .../plugins/showblocks/lang/sl.js | 1 - .../plugins/showblocks/lang/sq.js | 1 - .../plugins/showblocks/lang/sr-latn.js | 1 - .../plugins/showblocks/lang/sr.js | 1 - .../plugins/showblocks/lang/sv.js | 1 - .../plugins/showblocks/lang/th.js | 1 - .../plugins/showblocks/lang/tr.js | 1 - .../plugins/showblocks/lang/tt.js | 1 - .../plugins/showblocks/lang/ug.js | 1 - .../plugins/showblocks/lang/uk.js | 1 - .../plugins/showblocks/lang/vi.js | 1 - .../plugins/showblocks/lang/zh-cn.js | 1 - .../plugins/showblocks/lang/zh.js | 1 - .../plugins/showblocks/plugin.js | 9 - .../plugins/smiley/dialogs/smiley.js | 11 - .../plugins/smiley/icons/hidpi/smiley.png | Bin 1708 -> 0 bytes .../plugins/smiley/icons/smiley.png | Bin 783 -> 0 bytes .../plugins/smiley/images/angel_smile.gif | Bin 1245 -> 0 bytes .../plugins/smiley/images/angel_smile.png | Bin 1172 -> 0 bytes .../plugins/smiley/images/angry_smile.gif | Bin 1219 -> 0 bytes .../plugins/smiley/images/angry_smile.png | Bin 1220 -> 0 bytes .../plugins/smiley/images/broken_heart.gif | Bin 732 -> 0 bytes .../plugins/smiley/images/broken_heart.png | Bin 1139 -> 0 bytes .../plugins/smiley/images/confused_smile.gif | Bin 1202 -> 0 bytes .../plugins/smiley/images/confused_smile.png | Bin 1101 -> 0 bytes .../plugins/smiley/images/cry_smile.gif | Bin 795 -> 0 bytes .../plugins/smiley/images/cry_smile.png | Bin 1214 -> 0 bytes .../plugins/smiley/images/devil_smile.gif | Bin 1239 -> 0 bytes .../plugins/smiley/images/devil_smile.png | Bin 1220 -> 0 bytes .../smiley/images/embaressed_smile.gif | Bin 786 -> 0 bytes .../smiley/images/embarrassed_smile.gif | Bin 786 -> 0 bytes .../smiley/images/embarrassed_smile.png | Bin 1145 -> 0 bytes .../plugins/smiley/images/envelope.gif | Bin 506 -> 0 bytes .../plugins/smiley/images/envelope.png | Bin 760 -> 0 bytes .../plugins/smiley/images/heart.gif | Bin 692 -> 0 bytes .../plugins/smiley/images/heart.png | Bin 999 -> 0 bytes .../plugins/smiley/images/kiss.gif | Bin 683 -> 0 bytes .../plugins/smiley/images/kiss.png | Bin 1003 -> 0 bytes .../plugins/smiley/images/lightbulb.gif | Bin 660 -> 0 bytes .../plugins/smiley/images/lightbulb.png | Bin 919 -> 0 bytes .../plugins/smiley/images/omg_smile.gif | Bin 820 -> 0 bytes .../plugins/smiley/images/omg_smile.png | Bin 1122 -> 0 bytes .../plugins/smiley/images/regular_smile.gif | Bin 1209 -> 0 bytes .../plugins/smiley/images/regular_smile.png | Bin 1084 -> 0 bytes .../plugins/smiley/images/sad_smile.gif | Bin 782 -> 0 bytes .../plugins/smiley/images/sad_smile.png | Bin 1115 -> 0 bytes .../plugins/smiley/images/shades_smile.gif | Bin 1231 -> 0 bytes .../plugins/smiley/images/shades_smile.png | Bin 1204 -> 0 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 1201 -> 0 bytes .../plugins/smiley/images/teeth_smile.png | Bin 1183 -> 0 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 715 -> 0 bytes .../plugins/smiley/images/thumbs_down.png | Bin 985 -> 0 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 714 -> 0 bytes .../plugins/smiley/images/thumbs_up.png | Bin 959 -> 0 bytes .../plugins/smiley/images/tongue_smile.gif | Bin 1210 -> 0 bytes .../plugins/smiley/images/tongue_smile.png | Bin 1132 -> 0 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 1210 -> 0 bytes .../images/whatchutalkingabout_smile.gif | Bin 775 -> 0 bytes .../images/whatchutalkingabout_smile.png | Bin 1039 -> 0 bytes .../plugins/smiley/images/wink_smile.gif | Bin 1202 -> 0 bytes .../plugins/smiley/images/wink_smile.png | Bin 1114 -> 0 bytes .../plugins/smiley/lang/af.js | 1 - .../plugins/smiley/lang/ar.js | 1 - .../plugins/smiley/lang/az.js | 1 - .../plugins/smiley/lang/bg.js | 1 - .../plugins/smiley/lang/bn.js | 1 - .../plugins/smiley/lang/bs.js | 1 - .../plugins/smiley/lang/ca.js | 1 - .../plugins/smiley/lang/cs.js | 1 - .../plugins/smiley/lang/cy.js | 1 - .../plugins/smiley/lang/da.js | 1 - .../plugins/smiley/lang/de-ch.js | 1 - .../plugins/smiley/lang/de.js | 1 - .../plugins/smiley/lang/el.js | 1 - .../plugins/smiley/lang/en-au.js | 1 - .../plugins/smiley/lang/en-ca.js | 1 - .../plugins/smiley/lang/en-gb.js | 1 - .../plugins/smiley/lang/en.js | 1 - .../plugins/smiley/lang/eo.js | 1 - .../plugins/smiley/lang/es-mx.js | 1 - .../plugins/smiley/lang/es.js | 1 - .../plugins/smiley/lang/et.js | 1 - .../plugins/smiley/lang/eu.js | 1 - .../plugins/smiley/lang/fa.js | 1 - .../plugins/smiley/lang/fi.js | 1 - .../plugins/smiley/lang/fo.js | 1 - .../plugins/smiley/lang/fr-ca.js | 1 - .../plugins/smiley/lang/fr.js | 1 - .../plugins/smiley/lang/gl.js | 1 - .../plugins/smiley/lang/gu.js | 1 - .../plugins/smiley/lang/he.js | 1 - .../plugins/smiley/lang/hi.js | 1 - .../plugins/smiley/lang/hr.js | 1 - .../plugins/smiley/lang/hu.js | 1 - .../plugins/smiley/lang/id.js | 1 - .../plugins/smiley/lang/is.js | 1 - .../plugins/smiley/lang/it.js | 1 - .../plugins/smiley/lang/ja.js | 1 - .../plugins/smiley/lang/ka.js | 1 - .../plugins/smiley/lang/km.js | 1 - .../plugins/smiley/lang/ko.js | 1 - .../plugins/smiley/lang/ku.js | 1 - .../plugins/smiley/lang/lt.js | 1 - .../plugins/smiley/lang/lv.js | 1 - .../plugins/smiley/lang/mk.js | 1 - .../plugins/smiley/lang/mn.js | 1 - .../plugins/smiley/lang/ms.js | 1 - .../plugins/smiley/lang/nb.js | 1 - .../plugins/smiley/lang/nl.js | 1 - .../plugins/smiley/lang/no.js | 1 - .../plugins/smiley/lang/oc.js | 1 - .../plugins/smiley/lang/pl.js | 1 - .../plugins/smiley/lang/pt-br.js | 1 - .../plugins/smiley/lang/pt.js | 1 - .../plugins/smiley/lang/ro.js | 1 - .../plugins/smiley/lang/ru.js | 1 - .../plugins/smiley/lang/si.js | 1 - .../plugins/smiley/lang/sk.js | 1 - .../plugins/smiley/lang/sl.js | 1 - .../plugins/smiley/lang/sq.js | 1 - .../plugins/smiley/lang/sr-latn.js | 1 - .../plugins/smiley/lang/sr.js | 1 - .../plugins/smiley/lang/sv.js | 1 - .../plugins/smiley/lang/th.js | 1 - .../plugins/smiley/lang/tr.js | 1 - .../plugins/smiley/lang/tt.js | 1 - .../plugins/smiley/lang/ug.js | 1 - .../plugins/smiley/lang/uk.js | 1 - .../plugins/smiley/lang/vi.js | 1 - .../plugins/smiley/lang/zh-cn.js | 1 - .../plugins/smiley/lang/zh.js | 1 - .../laravel-ckeditor/plugins/smiley/plugin.js | 7 - .../sourcedialog/dialogs/sourcedialog.js | 6 - .../icons/hidpi/sourcedialog-rtl.png | Bin 1018 -> 0 bytes .../sourcedialog/icons/hidpi/sourcedialog.png | Bin 1041 -> 0 bytes .../sourcedialog/icons/sourcedialog-rtl.png | Bin 565 -> 0 bytes .../sourcedialog/icons/sourcedialog.png | Bin 571 -> 0 bytes .../plugins/sourcedialog/lang/af.js | 1 - .../plugins/sourcedialog/lang/ar.js | 1 - .../plugins/sourcedialog/lang/az.js | 1 - .../plugins/sourcedialog/lang/bg.js | 1 - .../plugins/sourcedialog/lang/bn.js | 1 - .../plugins/sourcedialog/lang/bs.js | 1 - .../plugins/sourcedialog/lang/ca.js | 1 - .../plugins/sourcedialog/lang/cs.js | 1 - .../plugins/sourcedialog/lang/cy.js | 1 - .../plugins/sourcedialog/lang/da.js | 1 - .../plugins/sourcedialog/lang/de-ch.js | 1 - .../plugins/sourcedialog/lang/de.js | 1 - .../plugins/sourcedialog/lang/el.js | 1 - .../plugins/sourcedialog/lang/en-au.js | 1 - .../plugins/sourcedialog/lang/en-ca.js | 1 - .../plugins/sourcedialog/lang/en-gb.js | 1 - .../plugins/sourcedialog/lang/en.js | 1 - .../plugins/sourcedialog/lang/eo.js | 1 - .../plugins/sourcedialog/lang/es-mx.js | 1 - .../plugins/sourcedialog/lang/es.js | 1 - .../plugins/sourcedialog/lang/et.js | 1 - .../plugins/sourcedialog/lang/eu.js | 1 - .../plugins/sourcedialog/lang/fa.js | 1 - .../plugins/sourcedialog/lang/fi.js | 1 - .../plugins/sourcedialog/lang/fo.js | 1 - .../plugins/sourcedialog/lang/fr-ca.js | 1 - .../plugins/sourcedialog/lang/fr.js | 1 - .../plugins/sourcedialog/lang/gl.js | 1 - .../plugins/sourcedialog/lang/gu.js | 1 - .../plugins/sourcedialog/lang/he.js | 1 - .../plugins/sourcedialog/lang/hi.js | 1 - .../plugins/sourcedialog/lang/hr.js | 1 - .../plugins/sourcedialog/lang/hu.js | 1 - .../plugins/sourcedialog/lang/id.js | 1 - .../plugins/sourcedialog/lang/is.js | 1 - .../plugins/sourcedialog/lang/it.js | 1 - .../plugins/sourcedialog/lang/ja.js | 1 - .../plugins/sourcedialog/lang/ka.js | 1 - .../plugins/sourcedialog/lang/km.js | 1 - .../plugins/sourcedialog/lang/ko.js | 1 - .../plugins/sourcedialog/lang/ku.js | 1 - .../plugins/sourcedialog/lang/lt.js | 1 - .../plugins/sourcedialog/lang/lv.js | 1 - .../plugins/sourcedialog/lang/mn.js | 1 - .../plugins/sourcedialog/lang/ms.js | 1 - .../plugins/sourcedialog/lang/nb.js | 1 - .../plugins/sourcedialog/lang/nl.js | 1 - .../plugins/sourcedialog/lang/no.js | 1 - .../plugins/sourcedialog/lang/oc.js | 1 - .../plugins/sourcedialog/lang/pl.js | 1 - .../plugins/sourcedialog/lang/pt-br.js | 1 - .../plugins/sourcedialog/lang/pt.js | 1 - .../plugins/sourcedialog/lang/ro.js | 1 - .../plugins/sourcedialog/lang/ru.js | 1 - .../plugins/sourcedialog/lang/si.js | 1 - .../plugins/sourcedialog/lang/sk.js | 1 - .../plugins/sourcedialog/lang/sl.js | 1 - .../plugins/sourcedialog/lang/sq.js | 1 - .../plugins/sourcedialog/lang/sr-latn.js | 1 - .../plugins/sourcedialog/lang/sr.js | 1 - .../plugins/sourcedialog/lang/sv.js | 1 - .../plugins/sourcedialog/lang/th.js | 1 - .../plugins/sourcedialog/lang/tr.js | 1 - .../plugins/sourcedialog/lang/tt.js | 1 - .../plugins/sourcedialog/lang/ug.js | 1 - .../plugins/sourcedialog/lang/uk.js | 1 - .../plugins/sourcedialog/lang/vi.js | 1 - .../plugins/sourcedialog/lang/zh-cn.js | 1 - .../plugins/sourcedialog/lang/zh.js | 1 - .../plugins/sourcedialog/plugin.js | 6 - .../dialogs/lang/_translationstatus.txt | 20 - .../plugins/specialchar/dialogs/lang/af.js | 13 - .../plugins/specialchar/dialogs/lang/ar.js | 13 - .../plugins/specialchar/dialogs/lang/az.js | 10 - .../plugins/specialchar/dialogs/lang/bg.js | 13 - .../plugins/specialchar/dialogs/lang/ca.js | 14 - .../plugins/specialchar/dialogs/lang/cs.js | 13 - .../plugins/specialchar/dialogs/lang/cy.js | 14 - .../plugins/specialchar/dialogs/lang/da.js | 11 - .../plugins/specialchar/dialogs/lang/de-ch.js | 13 - .../plugins/specialchar/dialogs/lang/de.js | 13 - .../plugins/specialchar/dialogs/lang/el.js | 13 - .../plugins/specialchar/dialogs/lang/en-au.js | 13 - .../plugins/specialchar/dialogs/lang/en-ca.js | 13 - .../plugins/specialchar/dialogs/lang/en-gb.js | 13 - .../plugins/specialchar/dialogs/lang/en.js | 13 - .../plugins/specialchar/dialogs/lang/eo.js | 12 - .../plugins/specialchar/dialogs/lang/es-mx.js | 13 - .../plugins/specialchar/dialogs/lang/es.js | 13 - .../plugins/specialchar/dialogs/lang/et.js | 13 - .../plugins/specialchar/dialogs/lang/eu.js | 13 - .../plugins/specialchar/dialogs/lang/fa.js | 12 - .../plugins/specialchar/dialogs/lang/fi.js | 13 - .../plugins/specialchar/dialogs/lang/fr-ca.js | 10 - .../plugins/specialchar/dialogs/lang/fr.js | 12 - .../plugins/specialchar/dialogs/lang/gl.js | 13 - .../plugins/specialchar/dialogs/lang/he.js | 12 - .../plugins/specialchar/dialogs/lang/hr.js | 13 - .../plugins/specialchar/dialogs/lang/hu.js | 12 - .../plugins/specialchar/dialogs/lang/id.js | 13 - .../plugins/specialchar/dialogs/lang/it.js | 14 - .../plugins/specialchar/dialogs/lang/ja.js | 9 - .../plugins/specialchar/dialogs/lang/km.js | 13 - .../plugins/specialchar/dialogs/lang/ko.js | 10 - .../plugins/specialchar/dialogs/lang/ku.js | 13 - .../plugins/specialchar/dialogs/lang/lt.js | 13 - .../plugins/specialchar/dialogs/lang/lv.js | 13 - .../plugins/specialchar/dialogs/lang/nb.js | 11 - .../plugins/specialchar/dialogs/lang/nl.js | 13 - .../plugins/specialchar/dialogs/lang/no.js | 11 - .../plugins/specialchar/dialogs/lang/oc.js | 12 - .../plugins/specialchar/dialogs/lang/pl.js | 12 - .../plugins/specialchar/dialogs/lang/pt-br.js | 11 - .../plugins/specialchar/dialogs/lang/pt.js | 13 - .../plugins/specialchar/dialogs/lang/ru.js | 13 - .../plugins/specialchar/dialogs/lang/si.js | 13 - .../plugins/specialchar/dialogs/lang/sk.js | 13 - .../plugins/specialchar/dialogs/lang/sl.js | 12 - .../plugins/specialchar/dialogs/lang/sq.js | 13 - .../plugins/specialchar/dialogs/lang/sv.js | 11 - .../plugins/specialchar/dialogs/lang/th.js | 13 - .../plugins/specialchar/dialogs/lang/tr.js | 12 - .../plugins/specialchar/dialogs/lang/tt.js | 13 - .../plugins/specialchar/dialogs/lang/ug.js | 13 - .../plugins/specialchar/dialogs/lang/uk.js | 12 - .../plugins/specialchar/dialogs/lang/vi.js | 14 - .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 - .../plugins/specialchar/dialogs/lang/zh.js | 9 - .../specialchar/dialogs/specialchar.js | 14 - .../plugins/stylesheetparser/plugin.js | 7 - .../plugins/table/dialogs/table.js | 21 - .../plugins/tableresize/plugin.js | 13 - .../tableselection/styles/tableselection.css | 32 - .../plugins/tabletools/dialogs/tableCell.js | 17 - .../plugins/templates/dialogs/templates.css | 84 - .../plugins/templates/dialogs/templates.js | 10 - .../templates/icons/hidpi/templates-rtl.png | Bin 796 -> 0 bytes .../templates/icons/hidpi/templates.png | Bin 796 -> 0 bytes .../plugins/templates/icons/templates-rtl.png | Bin 442 -> 0 bytes .../plugins/templates/icons/templates.png | Bin 442 -> 0 bytes .../plugins/templates/lang/af.js | 1 - .../plugins/templates/lang/ar.js | 1 - .../plugins/templates/lang/az.js | 1 - .../plugins/templates/lang/bg.js | 1 - .../plugins/templates/lang/bn.js | 1 - .../plugins/templates/lang/bs.js | 1 - .../plugins/templates/lang/ca.js | 1 - .../plugins/templates/lang/cs.js | 1 - .../plugins/templates/lang/cy.js | 1 - .../plugins/templates/lang/da.js | 1 - .../plugins/templates/lang/de-ch.js | 1 - .../plugins/templates/lang/de.js | 1 - .../plugins/templates/lang/el.js | 1 - .../plugins/templates/lang/en-au.js | 1 - .../plugins/templates/lang/en-ca.js | 1 - .../plugins/templates/lang/en-gb.js | 1 - .../plugins/templates/lang/en.js | 1 - .../plugins/templates/lang/eo.js | 1 - .../plugins/templates/lang/es-mx.js | 1 - .../plugins/templates/lang/es.js | 1 - .../plugins/templates/lang/et.js | 1 - .../plugins/templates/lang/eu.js | 1 - .../plugins/templates/lang/fa.js | 1 - .../plugins/templates/lang/fi.js | 1 - .../plugins/templates/lang/fo.js | 1 - .../plugins/templates/lang/fr-ca.js | 1 - .../plugins/templates/lang/fr.js | 1 - .../plugins/templates/lang/gl.js | 1 - .../plugins/templates/lang/gu.js | 1 - .../plugins/templates/lang/he.js | 1 - .../plugins/templates/lang/hi.js | 1 - .../plugins/templates/lang/hr.js | 1 - .../plugins/templates/lang/hu.js | 1 - .../plugins/templates/lang/id.js | 1 - .../plugins/templates/lang/is.js | 1 - .../plugins/templates/lang/it.js | 1 - .../plugins/templates/lang/ja.js | 1 - .../plugins/templates/lang/ka.js | 1 - .../plugins/templates/lang/km.js | 1 - .../plugins/templates/lang/ko.js | 1 - .../plugins/templates/lang/ku.js | 1 - .../plugins/templates/lang/lt.js | 1 - .../plugins/templates/lang/lv.js | 1 - .../plugins/templates/lang/mk.js | 1 - .../plugins/templates/lang/mn.js | 1 - .../plugins/templates/lang/ms.js | 1 - .../plugins/templates/lang/nb.js | 1 - .../plugins/templates/lang/nl.js | 1 - .../plugins/templates/lang/no.js | 1 - .../plugins/templates/lang/oc.js | 1 - .../plugins/templates/lang/pl.js | 1 - .../plugins/templates/lang/pt-br.js | 1 - .../plugins/templates/lang/pt.js | 1 - .../plugins/templates/lang/ro.js | 1 - .../plugins/templates/lang/ru.js | 1 - .../plugins/templates/lang/si.js | 1 - .../plugins/templates/lang/sk.js | 1 - .../plugins/templates/lang/sl.js | 1 - .../plugins/templates/lang/sq.js | 1 - .../plugins/templates/lang/sr-latn.js | 1 - .../plugins/templates/lang/sr.js | 1 - .../plugins/templates/lang/sv.js | 1 - .../plugins/templates/lang/th.js | 1 - .../plugins/templates/lang/tr.js | 1 - .../plugins/templates/lang/tt.js | 1 - .../plugins/templates/lang/ug.js | 1 - .../plugins/templates/lang/uk.js | 1 - .../plugins/templates/lang/vi.js | 1 - .../plugins/templates/lang/zh-cn.js | 1 - .../plugins/templates/lang/zh.js | 1 - .../plugins/templates/plugin.js | 7 - .../plugins/templates/templates/default.js | 7 - .../templates/templates/images/template1.gif | Bin 539 -> 0 bytes .../templates/templates/images/template2.gif | Bin 497 -> 0 bytes .../templates/templates/images/template3.gif | Bin 557 -> 0 bytes .../plugins/uicolor/dialogs/uicolor.css | 20 - .../plugins/uicolor/dialogs/uicolor.js | 17 - .../plugins/uicolor/icons/hidpi/uicolor.png | Bin 1817 -> 0 bytes .../plugins/uicolor/icons/uicolor.png | Bin 954 -> 0 bytes .../uicolor/lang/_translationstatus.txt | 27 - .../plugins/uicolor/lang/af.js | 5 - .../plugins/uicolor/lang/ar.js | 5 - .../plugins/uicolor/lang/az.js | 5 - .../plugins/uicolor/lang/bg.js | 5 - .../plugins/uicolor/lang/ca.js | 5 - .../plugins/uicolor/lang/cs.js | 5 - .../plugins/uicolor/lang/cy.js | 5 - .../plugins/uicolor/lang/da.js | 5 - .../plugins/uicolor/lang/de-ch.js | 5 - .../plugins/uicolor/lang/de.js | 5 - .../plugins/uicolor/lang/el.js | 5 - .../plugins/uicolor/lang/en-gb.js | 5 - .../plugins/uicolor/lang/en.js | 5 - .../plugins/uicolor/lang/eo.js | 5 - .../plugins/uicolor/lang/es-mx.js | 5 - .../plugins/uicolor/lang/es.js | 5 - .../plugins/uicolor/lang/et.js | 5 - .../plugins/uicolor/lang/eu.js | 5 - .../plugins/uicolor/lang/fa.js | 5 - .../plugins/uicolor/lang/fi.js | 5 - .../plugins/uicolor/lang/fr-ca.js | 5 - .../plugins/uicolor/lang/fr.js | 5 - .../plugins/uicolor/lang/gl.js | 5 - .../plugins/uicolor/lang/he.js | 5 - .../plugins/uicolor/lang/hr.js | 5 - .../plugins/uicolor/lang/hu.js | 5 - .../plugins/uicolor/lang/id.js | 5 - .../plugins/uicolor/lang/it.js | 5 - .../plugins/uicolor/lang/ja.js | 5 - .../plugins/uicolor/lang/km.js | 5 - .../plugins/uicolor/lang/ko.js | 5 - .../plugins/uicolor/lang/ku.js | 5 - .../plugins/uicolor/lang/lv.js | 5 - .../plugins/uicolor/lang/mk.js | 5 - .../plugins/uicolor/lang/nb.js | 5 - .../plugins/uicolor/lang/nl.js | 5 - .../plugins/uicolor/lang/no.js | 5 - .../plugins/uicolor/lang/oc.js | 5 - .../plugins/uicolor/lang/pl.js | 5 - .../plugins/uicolor/lang/pt-br.js | 5 - .../plugins/uicolor/lang/pt.js | 5 - .../plugins/uicolor/lang/ru.js | 5 - .../plugins/uicolor/lang/si.js | 5 - .../plugins/uicolor/lang/sk.js | 5 - .../plugins/uicolor/lang/sl.js | 5 - .../plugins/uicolor/lang/sq.js | 5 - .../plugins/uicolor/lang/sv.js | 5 - .../plugins/uicolor/lang/tr.js | 5 - .../plugins/uicolor/lang/tt.js | 5 - .../plugins/uicolor/lang/ug.js | 5 - .../plugins/uicolor/lang/uk.js | 5 - .../plugins/uicolor/lang/vi.js | 5 - .../plugins/uicolor/lang/zh-cn.js | 5 - .../plugins/uicolor/lang/zh.js | 5 - .../plugins/uicolor/plugin.js | 6 - .../plugins/uploadfile/plugin.js | 5 - .../plugins/uploadimage/plugin.js | 7 - .../plugins/uploadwidget/lang/az.js | 5 - .../plugins/uploadwidget/lang/ca.js | 5 - .../plugins/uploadwidget/lang/cs.js | 5 - .../plugins/uploadwidget/lang/da.js | 5 - .../plugins/uploadwidget/lang/de-ch.js | 5 - .../plugins/uploadwidget/lang/de.js | 5 - .../plugins/uploadwidget/lang/el.js | 5 - .../plugins/uploadwidget/lang/en.js | 5 - .../plugins/uploadwidget/lang/eo.js | 5 - .../plugins/uploadwidget/lang/es-mx.js | 5 - .../plugins/uploadwidget/lang/es.js | 5 - .../plugins/uploadwidget/lang/eu.js | 5 - .../plugins/uploadwidget/lang/fr.js | 5 - .../plugins/uploadwidget/lang/gl.js | 5 - .../plugins/uploadwidget/lang/hr.js | 5 - .../plugins/uploadwidget/lang/hu.js | 5 - .../plugins/uploadwidget/lang/id.js | 5 - .../plugins/uploadwidget/lang/it.js | 5 - .../plugins/uploadwidget/lang/ja.js | 5 - .../plugins/uploadwidget/lang/km.js | 5 - .../plugins/uploadwidget/lang/ko.js | 5 - .../plugins/uploadwidget/lang/ku.js | 5 - .../plugins/uploadwidget/lang/nb.js | 5 - .../plugins/uploadwidget/lang/nl.js | 5 - .../plugins/uploadwidget/lang/no.js | 5 - .../plugins/uploadwidget/lang/oc.js | 5 - .../plugins/uploadwidget/lang/pl.js | 5 - .../plugins/uploadwidget/lang/pt-br.js | 5 - .../plugins/uploadwidget/lang/pt.js | 5 - .../plugins/uploadwidget/lang/ru.js | 5 - .../plugins/uploadwidget/lang/sk.js | 5 - .../plugins/uploadwidget/lang/sv.js | 5 - .../plugins/uploadwidget/lang/tr.js | 5 - .../plugins/uploadwidget/lang/ug.js | 5 - .../plugins/uploadwidget/lang/uk.js | 5 - .../plugins/uploadwidget/lang/zh-cn.js | 5 - .../plugins/uploadwidget/lang/zh.js | 5 - .../plugins/uploadwidget/plugin.js | 10 - .../plugins/widget/images/handle.png | Bin 220 -> 0 bytes .../plugins/widget/lang/af.js | 5 - .../plugins/widget/lang/ar.js | 5 - .../plugins/widget/lang/az.js | 5 - .../plugins/widget/lang/bg.js | 5 - .../plugins/widget/lang/ca.js | 5 - .../plugins/widget/lang/cs.js | 5 - .../plugins/widget/lang/cy.js | 5 - .../plugins/widget/lang/da.js | 5 - .../plugins/widget/lang/de-ch.js | 5 - .../plugins/widget/lang/de.js | 5 - .../plugins/widget/lang/el.js | 5 - .../plugins/widget/lang/en-gb.js | 5 - .../plugins/widget/lang/en.js | 5 - .../plugins/widget/lang/eo.js | 5 - .../plugins/widget/lang/es-mx.js | 5 - .../plugins/widget/lang/es.js | 5 - .../plugins/widget/lang/eu.js | 5 - .../plugins/widget/lang/fa.js | 5 - .../plugins/widget/lang/fi.js | 5 - .../plugins/widget/lang/fr.js | 5 - .../plugins/widget/lang/gl.js | 5 - .../plugins/widget/lang/he.js | 5 - .../plugins/widget/lang/hr.js | 5 - .../plugins/widget/lang/hu.js | 5 - .../plugins/widget/lang/id.js | 5 - .../plugins/widget/lang/it.js | 5 - .../plugins/widget/lang/ja.js | 5 - .../plugins/widget/lang/km.js | 5 - .../plugins/widget/lang/ko.js | 5 - .../plugins/widget/lang/ku.js | 5 - .../plugins/widget/lang/lv.js | 5 - .../plugins/widget/lang/nb.js | 5 - .../plugins/widget/lang/nl.js | 5 - .../plugins/widget/lang/no.js | 5 - .../plugins/widget/lang/oc.js | 5 - .../plugins/widget/lang/pl.js | 5 - .../plugins/widget/lang/pt-br.js | 5 - .../plugins/widget/lang/pt.js | 5 - .../plugins/widget/lang/ru.js | 5 - .../plugins/widget/lang/sk.js | 5 - .../plugins/widget/lang/sl.js | 5 - .../plugins/widget/lang/sq.js | 5 - .../plugins/widget/lang/sv.js | 5 - .../plugins/widget/lang/tr.js | 5 - .../plugins/widget/lang/tt.js | 5 - .../plugins/widget/lang/ug.js | 5 - .../plugins/widget/lang/uk.js | 5 - .../plugins/widget/lang/vi.js | 5 - .../plugins/widget/lang/zh-cn.js | 5 - .../plugins/widget/lang/zh.js | 5 - .../laravel-ckeditor/plugins/widget/plugin.js | 62 - .../plugins/widgetselection/plugin.js | 12 - .../laravel-ckeditor/plugins/wsc/LICENSE.md | 28 - .../plugins/wsc/dialogs/ciframe.html | 66 - .../plugins/wsc/dialogs/tmpFrameset.html | 52 - .../plugins/wsc/dialogs/wsc.css | 82 - .../plugins/wsc/dialogs/wsc.js | 92 - .../plugins/wsc/dialogs/wsc_ie.js | 11 - .../plugins/wsc/skins/moono-lisa/wsc.css | 43 - .../laravel-ckeditor/plugins/xml/plugin.js | 7 - .../laravel-ckeditor/samples/css/samples.css | 1632 -------- .../samples/img/github-top.png | Bin 383 -> 0 bytes .../samples/img/header-bg.png | Bin 13086 -> 0 bytes .../samples/img/header-separator.png | Bin 123 -> 0 bytes .../laravel-ckeditor/samples/img/logo.png | Bin 5891 -> 0 bytes .../samples/img/navigation-tip.png | Bin 12029 -> 0 bytes .../laravel-ckeditor/samples/index.html | 128 - .../laravel-ckeditor/samples/js/sample.js | 53 - .../laravel-ckeditor/samples/js/sf.js | 17 - .../laravel-ckeditor/samples/old/ajax.html | 85 - .../laravel-ckeditor/samples/old/api.html | 210 - .../samples/old/appendto.html | 59 - .../samples/old/assets/inlineall/logo.png | Bin 4283 -> 0 bytes .../old/assets/outputxhtml/outputxhtml.css | 204 - .../samples/old/assets/posteddata.php | 59 - .../samples/old/assets/sample.jpg | Bin 14449 -> 0 bytes .../old/assets/uilanguages/languages.js | 7 - .../samples/old/autogrow/autogrow.html | 102 - .../samples/old/bbcode/bbcode.html | 114 - .../samples/old/codesnippet/codesnippet.html | 236 -- .../samples/old/datafiltering.html | 508 --- .../samples/old/devtools/devtools.html | 86 - .../samples/old/dialog/assets/my_dialog.js | 48 - .../samples/old/dialog/dialog.html | 190 - .../samples/old/divarea/divarea.html | 64 - .../samples/old/divreplace.html | 144 - .../samples/old/docprops/docprops.html | 81 - .../samples/old/enterkey/enterkey.html | 106 - .../assets/outputforflash/outputforflash.fla | Bin 85504 -> 0 bytes .../assets/outputforflash/outputforflash.swf | Bin 15571 -> 0 bytes .../assets/outputforflash/swfobject.js | 19 - .../old/htmlwriter/outputforflash.html | 283 -- .../samples/old/htmlwriter/outputhtml.html | 224 -- .../samples/old/image2/assets/image1.jpg | Bin 33171 -> 0 bytes .../samples/old/image2/assets/image2.jpg | Bin 26238 -> 0 bytes .../samples/old/image2/image2.html | 68 - .../laravel-ckeditor/samples/old/index.html | 173 - .../samples/old/inlineall.html | 314 -- .../samples/old/inlinebycode.html | 124 - .../samples/old/inlinetextarea.html | 113 - .../laravel-ckeditor/samples/old/jquery.html | 103 - .../samples/old/magicline/magicline.html | 209 - .../samples/old/mathjax/mathjax.html | 38 - .../samples/old/placeholder/placeholder.html | 75 - .../samples/old/readonly.html | 76 - .../samples/old/replacebyclass.html | 60 - .../samples/old/replacebycode.html | 59 - .../laravel-ckeditor/samples/old/sample.css | 357 -- .../laravel-ckeditor/samples/old/sample.js | 50 - .../samples/old/sample_posteddata.php | 16 - .../samples/old/sharedspace/sharedspace.html | 122 - .../old/sourcedialog/sourcedialog.html | 121 - .../old/stylesheetparser/assets/sample.css | 70 - .../stylesheetparser/stylesheetparser.html | 85 - .../samples/old/tabindex.html | 78 - .../samples/old/tableresize/tableresize.html | 107 - .../samples/old/toolbar/toolbar.html | 235 -- .../laravel-ckeditor/samples/old/uicolor.html | 72 - .../samples/old/uicolor/uicolor.html | 106 - .../samples/old/uilanguages.html | 122 - .../samples/old/wysiwygarea/fullpage.html | 80 - .../samples/old/xhtmlstyle.html | 234 -- .../toolbarconfigurator/css/fontello.css | 55 - .../toolbarconfigurator/font/LICENSE.txt | 10 - .../toolbarconfigurator/font/config.json | 28 - .../toolbarconfigurator/font/fontello.eot | Bin 4988 -> 0 bytes .../toolbarconfigurator/font/fontello.svg | 14 - .../toolbarconfigurator/font/fontello.ttf | Bin 4820 -> 0 bytes .../toolbarconfigurator/font/fontello.woff | Bin 2904 -> 0 bytes .../samples/toolbarconfigurator/index.html | 446 --- .../js/abstracttoolbarmodifier.js | 13 - .../js/fulltoolbareditor.js | 9 - .../toolbarconfigurator/js/toolbarmodifier.js | 33 - .../js/toolbartextmodifier.js | 14 - .../lib/codemirror/LICENSE | 19 - .../lib/codemirror/codemirror.css | 325 -- .../lib/codemirror/codemirror.js | 288 -- .../lib/codemirror/javascript.js | 25 - .../lib/codemirror/neo.css | 36 - .../lib/codemirror/show-hint.css | 38 - .../lib/codemirror/show-hint.js | 16 - .../laravel-ckeditor/skins/kama/dialog.css | 5 - .../laravel-ckeditor/skins/kama/dialog_ie.css | 5 - .../skins/kama/dialog_ie7.css | 5 - .../skins/kama/dialog_ie8.css | 5 - .../skins/kama/dialog_iequirks.css | 5 - .../laravel-ckeditor/skins/kama/editor.css | 5 - .../laravel-ckeditor/skins/kama/editor_ie.css | 5 - .../skins/kama/editor_ie7.css | 5 - .../skins/kama/editor_ie8.css | 5 - .../skins/kama/editor_iequirks.css | 5 - .../laravel-ckeditor/skins/kama/icons.png | Bin 9344 -> 0 bytes .../skins/kama/icons_hidpi.png | Bin 14073 -> 0 bytes .../skins/kama/images/dialog_sides.gif | Bin 47 -> 0 bytes .../skins/kama/images/dialog_sides.png | Bin 125 -> 0 bytes .../skins/kama/images/dialog_sides_rtl.png | Bin 128 -> 0 bytes .../skins/kama/images/mini.gif | Bin 181 -> 0 bytes .../skins/kama/images/spinner.gif | Bin 2984 -> 0 bytes .../skins/kama/images/sprites.png | Bin 6117 -> 0 bytes .../skins/kama/images/sprites_ie6.png | Bin 2658 -> 0 bytes .../skins/kama/images/toolbar_start.gif | Bin 102 -> 0 bytes .../laravel-ckeditor/skins/kama/readme.md | 38 - .../laravel-ckeditor/skins/kama/skin.js | 8 - .../skins/moono-lisa/dialog.css | 5 - .../skins/moono-lisa/dialog_ie.css | 5 - .../skins/moono-lisa/dialog_ie8.css | 5 - .../skins/moono-lisa/dialog_iequirks.css | 5 - .../skins/moono-lisa/editor.css | 5 - .../skins/moono-lisa/editor_gecko.css | 5 - .../skins/moono-lisa/editor_ie.css | 5 - .../skins/moono-lisa/editor_ie8.css | 5 - .../skins/moono-lisa/editor_iequirks.css | 5 - .../skins/moono-lisa/icons.png | Bin 9391 -> 0 bytes .../skins/moono-lisa/icons_hidpi.png | Bin 31549 -> 0 bytes .../skins/moono-lisa/images/arrow.png | Bin 191 -> 0 bytes .../skins/moono-lisa/images/close.png | Bin 615 -> 0 bytes .../skins/moono-lisa/images/hidpi/close.png | Bin 1238 -> 0 bytes .../moono-lisa/images/hidpi/lock-open.png | Bin 1071 -> 0 bytes .../skins/moono-lisa/images/hidpi/lock.png | Bin 1062 -> 0 bytes .../skins/moono-lisa/images/hidpi/refresh.png | Bin 1623 -> 0 bytes .../skins/moono-lisa/images/lock-open.png | Bin 511 -> 0 bytes .../skins/moono-lisa/images/lock.png | Bin 506 -> 0 bytes .../skins/moono-lisa/images/refresh.png | Bin 757 -> 0 bytes .../skins/moono-lisa/images/spinner.gif | Bin 2984 -> 0 bytes .../skins/moono-lisa/readme.md | 46 - .../laravel-ckeditor/skins/moono/dialog.css | 5 - .../skins/moono/dialog_ie.css | 5 - .../skins/moono/dialog_ie7.css | 5 - .../skins/moono/dialog_ie8.css | 5 - .../skins/moono/dialog_iequirks.css | 5 - .../laravel-ckeditor/skins/moono/editor.css | 5 - .../skins/moono/editor_gecko.css | 5 - .../skins/moono/editor_ie.css | 5 - .../skins/moono/editor_ie7.css | 5 - .../skins/moono/editor_ie8.css | 5 - .../skins/moono/editor_iequirks.css | 5 - .../laravel-ckeditor/skins/moono/icons.png | Bin 18207 -> 0 bytes .../skins/moono/icons_hidpi.png | Bin 54159 -> 0 bytes .../skins/moono/images/anchor.png | Bin 929 -> 0 bytes .../skins/moono/images/arrow.png | Bin 191 -> 0 bytes .../skins/moono/images/close.png | Bin 869 -> 0 bytes .../skins/moono/images/hidpi/anchor.png | Bin 1510 -> 0 bytes .../skins/moono/images/hidpi/close.png | Bin 1732 -> 0 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 1582 -> 0 bytes .../skins/moono/images/hidpi/lock.png | Bin 1644 -> 0 bytes .../skins/moono/images/hidpi/refresh.png | Bin 2311 -> 0 bytes .../skins/moono/images/lock-open.png | Bin 801 -> 0 bytes .../skins/moono/images/lock.png | Bin 849 -> 0 bytes .../skins/moono/images/refresh.png | Bin 1050 -> 0 bytes .../skins/moono/images/spinner.gif | Bin 2984 -> 0 bytes .../laravel-ckeditor/skins/moono/readme.md | 49 - .../laravel-ckeditor/skins/moono/skin.js | 10 - vendor/unisharp/laravel-ckeditor/styles.js | 137 - vendor/vlucas/phpdotenv/composer.json | 21 +- vendor/vlucas/phpdotenv/src/Dotenv.php | 191 +- .../src/Environment/AbstractVariables.php | 195 - .../Environment/Adapter/AdapterInterface.php | 41 - .../src/Environment/Adapter/ApacheAdapter.php | 64 - .../src/Environment/Adapter/ArrayAdapter.php | 67 - .../Environment/Adapter/EnvConstAdapter.php | 60 - .../src/Environment/Adapter/PutenvAdapter.php | 55 - .../Adapter/ServerConstAdapter.php | 60 - .../src/Environment/DotenvFactory.php | 58 - .../src/Environment/DotenvVariables.php | 78 - .../src/Environment/FactoryInterface.php | 26 - .../src/Environment/VariablesInterface.php | 61 - .../src/Exception/ExceptionInterface.php | 3 - .../src/Exception/InvalidFileException.php | 3 - .../src/Exception/InvalidPathException.php | 3 - .../src/Exception/ValidationException.php | 3 - vendor/vlucas/phpdotenv/src/Loader.php | 255 -- .../phpdotenv/src/{ => Loader}/Lines.php | 13 +- vendor/vlucas/phpdotenv/src/Loader/Loader.php | 122 + .../phpdotenv/src/Loader/LoaderInterface.php | 20 + vendor/vlucas/phpdotenv/src/Loader/Parser.php | 249 ++ vendor/vlucas/phpdotenv/src/Loader/Value.php | 83 + vendor/vlucas/phpdotenv/src/Parser.php | 185 - vendor/vlucas/phpdotenv/src/Regex/Error.php | 82 - vendor/vlucas/phpdotenv/src/Regex/Regex.php | 56 +- vendor/vlucas/phpdotenv/src/Regex/Result.php | 58 - vendor/vlucas/phpdotenv/src/Regex/Success.php | 82 - .../src/Repository/AbstractRepository.php | 180 + .../src/Repository/Adapter/ApacheAdapter.php | 66 + .../src/Repository/Adapter/ArrayAdapter.php | 67 + .../Adapter/AvailabilityInterface.php | 13 + .../Repository/Adapter/EnvConstAdapter.php | 72 + .../src/Repository/Adapter/PutenvAdapter.php | 56 + .../Repository/Adapter/ReaderInterface.php | 15 + .../Repository/Adapter/ServerConstAdapter.php | 72 + .../Repository/Adapter/WriterInterface.php | 25 + .../src/Repository/AdapterRepository.php | 86 + .../src/Repository/RepositoryBuilder.php | 144 + .../src/Repository/RepositoryInterface.php | 54 + vendor/vlucas/phpdotenv/src/Result/Error.php | 94 + vendor/vlucas/phpdotenv/src/Result/Result.php | 70 + .../vlucas/phpdotenv/src/Result/Success.php | 94 + .../vlucas/phpdotenv/src/Store/File/Paths.php | 27 + .../phpdotenv/src/Store/File/Reader.php | 52 + .../vlucas/phpdotenv/src/Store/FileStore.php | 61 + .../phpdotenv/src/Store/StoreBuilder.php | 102 + .../phpdotenv/src/Store/StoreInterface.php | 15 + .../phpdotenv/src/Store/StringStore.php | 35 + vendor/vlucas/phpdotenv/src/Validator.php | 32 +- vendor/voku/portable-ascii/.whitesource | 12 + vendor/voku/portable-ascii/CHANGELOG.md | 191 + vendor/voku/portable-ascii/LICENSE.txt | 19 + vendor/voku/portable-ascii/README.md | 428 ++ .../voku/portable-ascii/build/composer.json | 5 + vendor/voku/portable-ascii/build/docs/base.md | 127 + .../portable-ascii/build/generate_docs.php | 26 + .../build/generate_max_key_length.php | 20 + vendor/voku/portable-ascii/composer.json | 37 + .../portable-ascii/src/voku/helper/ASCII.php | 1500 +++++++ .../voku/helper/data/ascii_by_languages.php | 2929 ++++++++++++++ .../helper/data/ascii_extras_by_languages.php | 759 ++++ .../helper/data/ascii_language_max_key.php | 65 + .../src/voku/helper/data/ascii_ord.php | 1 + .../src/voku/helper/data/x000.php | 16 + .../src/voku/helper/data/x001.php | 1 + .../src/voku/helper/data/x002.php | 1 + .../src/voku/helper/data/x003.php | 1 + .../src/voku/helper/data/x004.php | 1 + .../src/voku/helper/data/x005.php | 1 + .../src/voku/helper/data/x006.php | 1 + .../src/voku/helper/data/x007.php | 1 + .../src/voku/helper/data/x009.php | 1 + .../src/voku/helper/data/x00a.php | 1 + .../src/voku/helper/data/x00b.php | 1 + .../src/voku/helper/data/x00c.php | 1 + .../src/voku/helper/data/x00d.php | 1 + .../src/voku/helper/data/x00e.php | 1 + .../src/voku/helper/data/x00f.php | 1 + .../src/voku/helper/data/x010.php | 1 + .../src/voku/helper/data/x011.php | 1 + .../src/voku/helper/data/x012.php | 1 + .../src/voku/helper/data/x013.php | 1 + .../src/voku/helper/data/x014.php | 1 + .../src/voku/helper/data/x015.php | 1 + .../src/voku/helper/data/x016.php | 1 + .../src/voku/helper/data/x017.php | 1 + .../src/voku/helper/data/x018.php | 1 + .../src/voku/helper/data/x01d.php | 1 + .../src/voku/helper/data/x01e.php | 1 + .../src/voku/helper/data/x01f.php | 1 + .../src/voku/helper/data/x020.php | 4 + .../src/voku/helper/data/x021.php | 1 + .../src/voku/helper/data/x022.php | 1 + .../src/voku/helper/data/x023.php | 1 + .../src/voku/helper/data/x024.php | 1 + .../src/voku/helper/data/x025.php | 1 + .../src/voku/helper/data/x026.php | 1 + .../src/voku/helper/data/x027.php | 1 + .../src/voku/helper/data/x028.php | 1 + .../src/voku/helper/data/x029.php | 1 + .../src/voku/helper/data/x02a.php | 1 + .../src/voku/helper/data/x02c.php | 1 + .../src/voku/helper/data/x02e.php | 1 + .../src/voku/helper/data/x02f.php | 1 + .../src/voku/helper/data/x030.php | 9 + .../src/voku/helper/data/x031.php | 1 + .../src/voku/helper/data/x032.php | 1 + .../src/voku/helper/data/x033.php | 1 + .../src/voku/helper/data/x04d.php | 1 + .../src/voku/helper/data/x04e.php | 1 + .../src/voku/helper/data/x04f.php | 1 + .../src/voku/helper/data/x050.php | 1 + .../src/voku/helper/data/x051.php | 1 + .../src/voku/helper/data/x052.php | 1 + .../src/voku/helper/data/x053.php | 1 + .../src/voku/helper/data/x054.php | 1 + .../src/voku/helper/data/x055.php | 1 + .../src/voku/helper/data/x056.php | 1 + .../src/voku/helper/data/x057.php | 1 + .../src/voku/helper/data/x058.php | 1 + .../src/voku/helper/data/x059.php | 1 + .../src/voku/helper/data/x05a.php | 1 + .../src/voku/helper/data/x05b.php | 1 + .../src/voku/helper/data/x05c.php | 1 + .../src/voku/helper/data/x05d.php | 1 + .../src/voku/helper/data/x05e.php | 1 + .../src/voku/helper/data/x05f.php | 1 + .../src/voku/helper/data/x060.php | 1 + .../src/voku/helper/data/x061.php | 1 + .../src/voku/helper/data/x062.php | 1 + .../src/voku/helper/data/x063.php | 1 + .../src/voku/helper/data/x064.php | 1 + .../src/voku/helper/data/x065.php | 1 + .../src/voku/helper/data/x066.php | 1 + .../src/voku/helper/data/x067.php | 1 + .../src/voku/helper/data/x068.php | 1 + .../src/voku/helper/data/x069.php | 1 + .../src/voku/helper/data/x06a.php | 1 + .../src/voku/helper/data/x06b.php | 1 + .../src/voku/helper/data/x06c.php | 1 + .../src/voku/helper/data/x06d.php | 1 + .../src/voku/helper/data/x06e.php | 1 + .../src/voku/helper/data/x06f.php | 1 + .../src/voku/helper/data/x070.php | 1 + .../src/voku/helper/data/x071.php | 1 + .../src/voku/helper/data/x072.php | 1 + .../src/voku/helper/data/x073.php | 1 + .../src/voku/helper/data/x074.php | 1 + .../src/voku/helper/data/x075.php | 1 + .../src/voku/helper/data/x076.php | 1 + .../src/voku/helper/data/x077.php | 1 + .../src/voku/helper/data/x078.php | 1 + .../src/voku/helper/data/x079.php | 1 + .../src/voku/helper/data/x07a.php | 1 + .../src/voku/helper/data/x07b.php | 1 + .../src/voku/helper/data/x07c.php | 1 + .../src/voku/helper/data/x07d.php | 1 + .../src/voku/helper/data/x07e.php | 1 + .../src/voku/helper/data/x07f.php | 1 + .../src/voku/helper/data/x080.php | 1 + .../src/voku/helper/data/x081.php | 1 + .../src/voku/helper/data/x082.php | 1 + .../src/voku/helper/data/x083.php | 1 + .../src/voku/helper/data/x084.php | 1 + .../src/voku/helper/data/x085.php | 1 + .../src/voku/helper/data/x086.php | 1 + .../src/voku/helper/data/x087.php | 1 + .../src/voku/helper/data/x088.php | 1 + .../src/voku/helper/data/x089.php | 1 + .../src/voku/helper/data/x08a.php | 1 + .../src/voku/helper/data/x08b.php | 1 + .../src/voku/helper/data/x08c.php | 1 + .../src/voku/helper/data/x08d.php | 1 + .../src/voku/helper/data/x08e.php | 1 + .../src/voku/helper/data/x08f.php | 1 + .../src/voku/helper/data/x090.php | 1 + .../src/voku/helper/data/x091.php | 1 + .../src/voku/helper/data/x092.php | 1 + .../src/voku/helper/data/x093.php | 1 + .../src/voku/helper/data/x094.php | 1 + .../src/voku/helper/data/x095.php | 1 + .../src/voku/helper/data/x096.php | 1 + .../src/voku/helper/data/x097.php | 1 + .../src/voku/helper/data/x098.php | 1 + .../src/voku/helper/data/x099.php | 1 + .../src/voku/helper/data/x09a.php | 1 + .../src/voku/helper/data/x09b.php | 1 + .../src/voku/helper/data/x09c.php | 1 + .../src/voku/helper/data/x09d.php | 1 + .../src/voku/helper/data/x09e.php | 1 + .../src/voku/helper/data/x09f.php | 1 + .../src/voku/helper/data/x0a0.php | 1 + .../src/voku/helper/data/x0a1.php | 1 + .../src/voku/helper/data/x0a2.php | 1 + .../src/voku/helper/data/x0a3.php | 1 + .../src/voku/helper/data/x0a4.php | 1 + .../src/voku/helper/data/x0ac.php | 1 + .../src/voku/helper/data/x0ad.php | 1 + .../src/voku/helper/data/x0ae.php | 1 + .../src/voku/helper/data/x0af.php | 1 + .../src/voku/helper/data/x0b0.php | 1 + .../src/voku/helper/data/x0b1.php | 1 + .../src/voku/helper/data/x0b2.php | 1 + .../src/voku/helper/data/x0b3.php | 1 + .../src/voku/helper/data/x0b4.php | 1 + .../src/voku/helper/data/x0b5.php | 1 + .../src/voku/helper/data/x0b6.php | 1 + .../src/voku/helper/data/x0b7.php | 1 + .../src/voku/helper/data/x0b8.php | 1 + .../src/voku/helper/data/x0b9.php | 1 + .../src/voku/helper/data/x0ba.php | 1 + .../src/voku/helper/data/x0bb.php | 1 + .../src/voku/helper/data/x0bc.php | 1 + .../src/voku/helper/data/x0bd.php | 1 + .../src/voku/helper/data/x0be.php | 1 + .../src/voku/helper/data/x0bf.php | 1 + .../src/voku/helper/data/x0c0.php | 1 + .../src/voku/helper/data/x0c1.php | 1 + .../src/voku/helper/data/x0c2.php | 1 + .../src/voku/helper/data/x0c3.php | 1 + .../src/voku/helper/data/x0c4.php | 1 + .../src/voku/helper/data/x0c5.php | 1 + .../src/voku/helper/data/x0c6.php | 1 + .../src/voku/helper/data/x0c7.php | 1 + .../src/voku/helper/data/x0c8.php | 1 + .../src/voku/helper/data/x0c9.php | 1 + .../src/voku/helper/data/x0ca.php | 1 + .../src/voku/helper/data/x0cb.php | 1 + .../src/voku/helper/data/x0cc.php | 1 + .../src/voku/helper/data/x0cd.php | 1 + .../src/voku/helper/data/x0ce.php | 1 + .../src/voku/helper/data/x0cf.php | 1 + .../src/voku/helper/data/x0d0.php | 1 + .../src/voku/helper/data/x0d1.php | 1 + .../src/voku/helper/data/x0d2.php | 1 + .../src/voku/helper/data/x0d3.php | 1 + .../src/voku/helper/data/x0d4.php | 1 + .../src/voku/helper/data/x0d5.php | 1 + .../src/voku/helper/data/x0d6.php | 1 + .../src/voku/helper/data/x0d7.php | 1 + .../src/voku/helper/data/x0f9.php | 1 + .../src/voku/helper/data/x0fa.php | 1 + .../src/voku/helper/data/x0fb.php | 1 + .../src/voku/helper/data/x0fc.php | 1 + .../src/voku/helper/data/x0fd.php | 1 + .../src/voku/helper/data/x0fe.php | 1 + .../src/voku/helper/data/x0ff.php | 1 + .../src/voku/helper/data/x1d4.php | 1 + .../src/voku/helper/data/x1d5.php | 4 + .../src/voku/helper/data/x1d6.php | 1 + .../src/voku/helper/data/x1d7.php | 1 + .../src/voku/helper/data/x1f1.php | 2 + 6895 files changed, 133617 insertions(+), 178680 deletions(-) create mode 100644 vendor/asm89/stack-cors/LICENSE create mode 100644 vendor/asm89/stack-cors/README.md create mode 100644 vendor/asm89/stack-cors/composer.json create mode 100644 vendor/asm89/stack-cors/src/Cors.php create mode 100644 vendor/asm89/stack-cors/src/CorsService.php create mode 100755 vendor/bin/patch-type-declarations create mode 100755 vendor/bin/yaml-lint create mode 100644 vendor/brick/math/CHANGELOG.md create mode 100644 vendor/brick/math/LICENSE create mode 100644 vendor/brick/math/SECURITY.md create mode 100644 vendor/brick/math/composer.json create mode 100644 vendor/brick/math/src/BigDecimal.php create mode 100644 vendor/brick/math/src/BigInteger.php create mode 100644 vendor/brick/math/src/BigNumber.php create mode 100644 vendor/brick/math/src/BigRational.php create mode 100644 vendor/brick/math/src/Exception/DivisionByZeroException.php create mode 100644 vendor/brick/math/src/Exception/IntegerOverflowException.php create mode 100644 vendor/brick/math/src/Exception/MathException.php create mode 100644 vendor/brick/math/src/Exception/NegativeNumberException.php create mode 100644 vendor/brick/math/src/Exception/NumberFormatException.php create mode 100644 vendor/brick/math/src/Exception/RoundingNecessaryException.php create mode 100644 vendor/brick/math/src/Internal/Calculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/GmpCalculator.php create mode 100644 vendor/brick/math/src/Internal/Calculator/NativeCalculator.php create mode 100644 vendor/brick/math/src/RoundingMode.php delete mode 100644 vendor/brozot/laravel-fcm/.gitignore delete mode 100644 vendor/brozot/laravel-fcm/.travis.yml delete mode 100644 vendor/brozot/laravel-fcm/LICENSE delete mode 100644 vendor/brozot/laravel-fcm/README.md delete mode 100644 vendor/brozot/laravel-fcm/composer.json delete mode 100644 vendor/brozot/laravel-fcm/composer.lock delete mode 100644 vendor/brozot/laravel-fcm/config/fcm.php delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-InvalidOptionsException.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-NoTopicProvidedException.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Options.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsBuilder.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsPriorities.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadData.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadDataBuilder.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotification.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotificationBuilder.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Topics.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-BaseResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponseContract.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-InvalidRequestException.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-ServerResponseException.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-UnauthorizedRequestException.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponseContract.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponseContract.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-BaseSender.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMGroup.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMSender.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockDownstreamResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockGroupResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockTopicResponse.md delete mode 100644 vendor/brozot/laravel-fcm/doc/Readme.md delete mode 100644 vendor/brozot/laravel-fcm/phpunit.xml delete mode 100644 vendor/brozot/laravel-fcm/src/FCMManager.php delete mode 100644 vendor/brozot/laravel-fcm/src/FCMServiceProvider.php delete mode 100644 vendor/brozot/laravel-fcm/src/Facades/FCM.php delete mode 100644 vendor/brozot/laravel-fcm/src/Facades/FCMGroup.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/Exceptions/InvalidOptionsException.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/Exceptions/NoTopicProvidedException.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/Options.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/OptionsBuilder.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/PayloadData.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/PayloadDataBuilder.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/PayloadNotification.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/PayloadNotificationBuilder.php delete mode 100644 vendor/brozot/laravel-fcm/src/Message/Topics.php delete mode 100644 vendor/brozot/laravel-fcm/src/Request/BaseRequest.php delete mode 100644 vendor/brozot/laravel-fcm/src/Request/GroupRequest.php delete mode 100644 vendor/brozot/laravel-fcm/src/Request/Request.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/BaseResponse.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/DownstreamResponse.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/DownstreamResponseContract.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/Exceptions/InvalidRequestException.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/Exceptions/ServerResponseException.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/Exceptions/UnauthorizedRequestException.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/GroupResponse.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/GroupResponseContract.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/TopicResponse.php delete mode 100644 vendor/brozot/laravel-fcm/src/Response/TopicResponseContract.php delete mode 100644 vendor/brozot/laravel-fcm/src/Sender/FCMGroup.php delete mode 100644 vendor/brozot/laravel-fcm/src/Sender/FCMSender.php delete mode 100644 vendor/brozot/laravel-fcm/src/Sender/HTTPSender.php delete mode 100644 vendor/brozot/laravel-fcm/tests/DownstreamResponseTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/DownstreamTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/FCMTestCase.php delete mode 100644 vendor/brozot/laravel-fcm/tests/GroupResponseTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/MessageTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/TopicResponseTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/TopicsTest.php delete mode 100644 vendor/brozot/laravel-fcm/tests/mocks/MockDownstreamResponse.php delete mode 100644 vendor/brozot/laravel-fcm/tests/mocks/MockGroupResponse.php delete mode 100644 vendor/brozot/laravel-fcm/tests/mocks/MockTopicResponse.php delete mode 100644 vendor/dnoegel/php-xdg-base-dir/LICENSE delete mode 100644 vendor/dnoegel/php-xdg-base-dir/README.md delete mode 100644 vendor/dnoegel/php-xdg-base-dir/composer.json delete mode 100644 vendor/dnoegel/php-xdg-base-dir/src/Xdg.php delete mode 100644 vendor/facade/ignition/.babelrc delete mode 100644 vendor/facade/ignition/.github/workflows/run-tests.yml create mode 100644 vendor/facade/ignition/.php_cs.php delete mode 100644 vendor/facade/ignition/.prettierignore delete mode 100644 vendor/facade/ignition/.prettierrc delete mode 100644 vendor/facade/ignition/.styleci.yml create mode 100644 vendor/facade/ignition/SECURITY.md delete mode 100644 vendor/facade/ignition/postcss.config.js create mode 100644 vendor/facade/ignition/psalm-baseline.xml create mode 100644 vendor/facade/ignition/psalm.xml create mode 100644 vendor/facade/ignition/src/Commands/SolutionProviderMakeCommand.php create mode 100644 vendor/facade/ignition/src/Commands/stubs/solution-provider.stub create mode 100644 vendor/facade/ignition/src/Context/LivewireRequestContext.php create mode 100644 vendor/facade/ignition/src/ErrorPage/IgnitionExceptionRenderer.php create mode 100644 vendor/facade/ignition/src/JobRecorder/JobRecorder.php create mode 100644 vendor/facade/ignition/src/Middleware/AddExceptionInformation.php create mode 100644 vendor/facade/ignition/src/Middleware/AddJobInformation.php delete mode 100644 vendor/facade/ignition/src/Middleware/CustomizeGrouping.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/LazyLoadingViolationSolutionProvider.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/MissingLivewireComponentSolutionProvider.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/MissingMixManifestSolutionProvider.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/UndefinedLivewireMethodSolutionProvider.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/UndefinedLivewirePropertySolutionProvider.php create mode 100644 vendor/facade/ignition/src/SolutionProviders/UndefinedPropertySolutionProvider.php create mode 100644 vendor/facade/ignition/src/Solutions/LivewireDiscoverSolution.php create mode 100644 vendor/facade/ignition/src/Solutions/SuggestLivewireMethodNameSolution.php create mode 100644 vendor/facade/ignition/src/Solutions/SuggestLivewirePropertyNameSolution.php create mode 100644 vendor/facade/ignition/src/Support/LaravelVersion.php create mode 100644 vendor/facade/ignition/src/Support/LivewireComponentParser.php create mode 100644 vendor/facade/ignition/src/Support/SentReports.php delete mode 100644 vendor/facade/ignition/tailwind.config.js delete mode 100644 vendor/facade/ignition/tsconfig.json delete mode 100644 vendor/facade/ignition/webpack.config.js create mode 100644 vendor/fruitcake/laravel-cors/.editorconfig create mode 100644 vendor/fruitcake/laravel-cors/LICENSE create mode 100644 vendor/fruitcake/laravel-cors/changelog.md create mode 100644 vendor/fruitcake/laravel-cors/composer.json create mode 100644 vendor/fruitcake/laravel-cors/config/cors.php create mode 100644 vendor/fruitcake/laravel-cors/readme.md create mode 100644 vendor/fruitcake/laravel-cors/src/CorsServiceProvider.php create mode 100644 vendor/fruitcake/laravel-cors/src/HandleCors.php delete mode 100644 vendor/guzzlehttp/guzzle/.php_cs delete mode 100644 vendor/guzzlehttp/guzzle/Dockerfile create mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizer.php create mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/ClientTrait.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/SeekException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php create mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/UriTemplate.php delete mode 100644 vendor/guzzlehttp/psr7/.github/FUNDING.yml delete mode 100644 vendor/guzzlehttp/psr7/.github/stale.yml delete mode 100644 vendor/guzzlehttp/psr7/.github/workflows/ci.yml delete mode 100644 vendor/guzzlehttp/psr7/.github/workflows/integration.yml delete mode 100644 vendor/guzzlehttp/psr7/.github/workflows/static.yml delete mode 100644 vendor/guzzlehttp/psr7/.php_cs.dist create mode 100644 vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php create mode 100644 vendor/guzzlehttp/psr7/src/HttpFactory.php delete mode 100644 vendor/guzzlehttp/psr7/src/functions.php delete mode 100644 vendor/guzzlehttp/psr7/src/functions_include.php create mode 100644 vendor/laravel/framework/src/Illuminate/Cache/DatabaseLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/DetectsApplicationNamespace.php create mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFailed.php create mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheAware.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Middleware/AuthenticatesRequests.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Castable.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsAttributes.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsInboundAttributes.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/CachesConfiguration.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/CachesRoutes.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/Factory.php create mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferringDisplayableValue.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/blank.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/create.stub create mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.create.stub create mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.stub create mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.update.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/update.stub create mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/ForeignIdColumnDefinition.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/VerifiesEmails.php create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/CastMakeCommand.php create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ComponentMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/PresetCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/Bootstrap.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/None.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/bootstrap-stubs/app.scss delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/app.js delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/bootstrap.js delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/none-stubs/webpack.mix.js delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/Example.js delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/react-stubs/webpack.mix.js delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Presets/vue-stubs/webpack.mix.js create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/StubPublishCommand.php create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/cast.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/job-queued.stub create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/job.queued.stub create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/model.pivot.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/pivot.model.stub create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/test.unit.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/unit-test.stub create mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/view-component.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Assert.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Constraints/ArraySubset.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/ConnectionException.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Factory.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/HttpClientException.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Request.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/RequestException.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Response.php create mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/ResponseSequence.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/Resource.php create mode 100644 vendor/laravel/framework/src/Illuminate/Mail/MailManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/promotion.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/promotion/button.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/promotion.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/promotion/button.blade.php create mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/simple-tailwind.blade.php create mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/tailwind.blade.php create mode 100644 vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php create mode 100644 vendor/laravel/framework/src/Illuminate/Routing/CompiledRouteCollection.php create mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteCollectionInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteCompiler.php create mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteUri.php create mode 100644 vendor/laravel/framework/src/Illuminate/Session/ArraySessionHandler.php create mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php create mode 100644 vendor/laravel/framework/src/Illuminate/Support/HigherOrderWhenProxy.php create mode 100644 vendor/laravel/framework/src/Illuminate/Support/Stringable.php create mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/ReflectsClosures.php create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Assert.php create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/ArraySubset.php create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/CountInDatabase.php rename vendor/laravel/framework/src/Illuminate/{Foundation => }/Testing/Constraints/HasInDatabase.php (98%) rename vendor/laravel/framework/src/Illuminate/{Foundation => }/Testing/Constraints/SeeInOrder.php (97%) rename vendor/laravel/framework/src/Illuminate/{Foundation => }/Testing/Constraints/SoftDeletedInDatabase.php (98%) create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/LICENSE.md create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php rename vendor/laravel/framework/src/Illuminate/{Foundation => }/Testing/TestResponse.php (93%) create mode 100644 vendor/laravel/framework/src/Illuminate/Testing/composer.json create mode 100755 vendor/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifierInterface.php create mode 100644 vendor/laravel/framework/src/Illuminate/View/AnonymousComponent.php create mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/ComponentTagCompiler.php create mode 100644 vendor/laravel/framework/src/Illuminate/View/Component.php create mode 100644 vendor/laravel/framework/src/Illuminate/View/ComponentAttributeBag.php create mode 100644 vendor/laravel/framework/src/Illuminate/View/InvokableComponentVariable.php delete mode 100644 vendor/laravel/tinker/.styleci.yml create mode 100644 vendor/laravel/ui/CHANGELOG.md create mode 100644 vendor/laravel/ui/LICENSE.md create mode 100644 vendor/laravel/ui/README.md rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/AuthenticatesUsers.php (86%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/ConfirmsPasswords.php (86%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/RedirectsUsers.php (100%) create mode 100644 vendor/laravel/ui/auth-backend/RegistersUsers.php rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/ResetsPasswords.php (93%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/SendsPasswordResetEmails.php (82%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Auth => ui/auth-backend}/ThrottlesLogins.php (100%) create mode 100644 vendor/laravel/ui/auth-backend/VerifiesEmails.php create mode 100644 vendor/laravel/ui/composer.json create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/email.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/verify.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/home.stub create mode 100644 vendor/laravel/ui/src/Auth/bootstrap-stubs/layouts/app.stub create mode 100644 vendor/laravel/ui/src/Auth/stubs/controllers/HomeController.stub create mode 100644 vendor/laravel/ui/src/Auth/stubs/routes.stub create mode 100644 vendor/laravel/ui/src/AuthCommand.php create mode 100644 vendor/laravel/ui/src/AuthRouteMethods.php create mode 100644 vendor/laravel/ui/src/ControllersCommand.php create mode 100644 vendor/laravel/ui/src/Presets/Bootstrap.php rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/Preset.php (94%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/React.php (97%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/Vue.php (84%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/bootstrap-stubs/_variables.scss (100%) create mode 100644 vendor/laravel/ui/src/Presets/bootstrap-stubs/app.scss create mode 100644 vendor/laravel/ui/src/Presets/bootstrap-stubs/bootstrap.js create mode 100644 vendor/laravel/ui/src/Presets/bootstrap-stubs/webpack.mix.js create mode 100644 vendor/laravel/ui/src/Presets/react-stubs/Example.js rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/react-stubs/app.js (100%) create mode 100644 vendor/laravel/ui/src/Presets/react-stubs/webpack.mix.js rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/vue-stubs/ExampleComponent.vue (100%) rename vendor/laravel/{framework/src/Illuminate/Foundation/Console => ui/src}/Presets/vue-stubs/app.js (100%) create mode 100644 vendor/laravel/ui/src/Presets/vue-stubs/webpack.mix.js create mode 100644 vendor/laravel/ui/src/UiCommand.php create mode 100644 vendor/laravel/ui/src/UiServiceProvider.php create mode 100644 vendor/laravel/ui/stubs/Auth/ConfirmPasswordController.stub create mode 100644 vendor/laravel/ui/stubs/Auth/ForgotPasswordController.stub create mode 100644 vendor/laravel/ui/stubs/Auth/LoginController.stub create mode 100644 vendor/laravel/ui/stubs/Auth/RegisterController.stub create mode 100644 vendor/laravel/ui/stubs/Auth/ResetPasswordController.stub create mode 100644 vendor/laravel/ui/stubs/Auth/VerificationController.stub create mode 100644 vendor/laravel/ui/stubs/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 vendor/nunomaduro/collision/.github/FUNDING.yml delete mode 100644 vendor/nunomaduro/collision/.github/workflows/tests.yml create mode 100644 vendor/nunomaduro/collision/.php_cs create mode 100644 vendor/nunomaduro/collision/phpstan.neon.dist create mode 100644 vendor/nunomaduro/collision/src/Adapters/Laravel/Commands/TestCommand.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Laravel/IgnitionSolutionsRepository.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/ConfigureIO.php delete mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/Listener.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/Printer.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/PrinterContents.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/State.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/Style.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/TestResult.php create mode 100644 vendor/nunomaduro/collision/src/Adapters/Phpunit/Timer.php create mode 100644 vendor/nunomaduro/collision/src/ConsoleColor.php create mode 100644 vendor/nunomaduro/collision/src/Contracts/Adapters/Phpunit/HasPrintableTestCaseName.php create mode 100644 vendor/nunomaduro/collision/src/Contracts/SolutionsRepository.php create mode 100644 vendor/nunomaduro/collision/src/Exceptions/ShouldNotHappen.php create mode 100644 vendor/nunomaduro/collision/src/SolutionsRepositories/NullSolutionsRepository.php delete mode 100644 vendor/paragonie/random_compat/LICENSE delete mode 100755 vendor/paragonie/random_compat/build-phar.sh delete mode 100644 vendor/paragonie/random_compat/composer.json delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc delete mode 100644 vendor/paragonie/random_compat/lib/random.php delete mode 100644 vendor/paragonie/random_compat/other/build_phar.php delete mode 100644 vendor/paragonie/random_compat/psalm-autoload.php delete mode 100644 vendor/paragonie/random_compat/psalm.xml delete mode 100644 vendor/php-parallel-lint/php-console-color/CHANGELOG.md delete mode 100644 vendor/php-parallel-lint/php-console-color/LICENSE delete mode 100644 vendor/php-parallel-lint/php-console-color/README.md delete mode 100644 vendor/php-parallel-lint/php-console-color/composer.json delete mode 100644 vendor/php-parallel-lint/php-console-color/example.php delete mode 100644 vendor/php-parallel-lint/php-console-color/src/ConsoleColor.php delete mode 100644 vendor/php-parallel-lint/php-console-color/src/InvalidStyleException.php delete mode 100644 vendor/php-parallel-lint/php-console-highlighter/CHANGELOG.md delete mode 100644 vendor/php-parallel-lint/php-console-highlighter/LICENSE delete mode 100644 vendor/php-parallel-lint/php-console-highlighter/README.md delete mode 100644 vendor/php-parallel-lint/php-console-highlighter/composer.json delete mode 100644 vendor/php-parallel-lint/php-console-highlighter/src/Highlighter.php delete mode 100644 vendor/phpspec/phpspec/.gitattributes delete mode 100644 vendor/phpspec/phpspec/.gitignore delete mode 100644 vendor/phpspec/phpspec/.scrutinizer.yml delete mode 100644 vendor/phpspec/phpspec/.travis.yml delete mode 100644 vendor/phpspec/phpspec/CHANGES-v2.md delete mode 100644 vendor/phpspec/phpspec/CHANGES-v3.md delete mode 100644 vendor/phpspec/phpspec/CHANGES-v4.md delete mode 100644 vendor/phpspec/phpspec/CHANGES-v5.md delete mode 120000 vendor/phpspec/phpspec/CHANGES.md delete mode 100644 vendor/phpspec/phpspec/CONTRIBUTING.md delete mode 100644 vendor/phpspec/phpspec/appveyor.yml delete mode 100644 vendor/phpspec/phpspec/behat.yml.dist delete mode 100644 vendor/phpspec/phpspec/box.json delete mode 100755 vendor/phpspec/phpspec/check-release.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/ApplicationContext.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/Fake/Prompter.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/Fake/ReRunner.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/FilesystemContext.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/IsolatedProcessContext.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/autoloader/autoload.php delete mode 100644 vendor/phpspec/phpspec/features/bootstrap/autoloader/fake_autoload.php delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_class.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_collaborator.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_collaborator_from_use_group.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_collaborator_method.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_method.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_named_constructor.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_return_constant.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_generates_spec.feature delete mode 100644 vendor/phpspec/phpspec/features/code_generation/developer_reruns_features.feature delete mode 100644 vendor/phpspec/phpspec/features/config/developer_can_use_composer_to_create_suites.feature delete mode 100644 vendor/phpspec/phpspec/features/config/developer_can_use_config_dir_in_paths.feature delete mode 100644 vendor/phpspec/phpspec/features/configuration/developer_adds_extensions.feature delete mode 100644 vendor/phpspec/phpspec/features/construction/developer_specifies_object_construction.feature delete mode 100644 vendor/phpspec/phpspec/features/exception_handling/developer_defines_supporting_spec.feature delete mode 100644 vendor/phpspec/phpspec/features/exception_handling/developer_is_shown_a_parse_error.feature delete mode 100644 vendor/phpspec/phpspec/features/exception_handling/developer_is_shown_runtime_errors.feature delete mode 100644 vendor/phpspec/phpspec/features/exception_handling/developer_specifies_exceptions.feature delete mode 100644 vendor/phpspec/phpspec/features/extensions/developer_uses_bootstrap_config_key_in_any_place.feature delete mode 100644 vendor/phpspec/phpspec/features/extensions/developer_uses_extension.feature delete mode 100644 vendor/phpspec/phpspec/features/formatter/developer_is_shown_diffs.feature delete mode 100644 vendor/phpspec/phpspec/features/formatter/use_the_junit_formatter.feature delete mode 100644 vendor/phpspec/phpspec/features/formatter/use_the_tap_formatter.feature delete mode 100644 vendor/phpspec/phpspec/features/invalid_usage/developer_uses_unsupported_collaborator_type_hinting.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_approximately_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_array_contain_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_array_count_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_array_key_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_array_key_value_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_comparison_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_custom_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_identity_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_inline_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_iterate_as_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_iterate_like_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_object_state_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_scalar_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_start_iterating_as_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_string_contain_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_string_end_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_string_regex_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_string_start_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_throw_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_traversable_contain_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_traversable_count_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_traversable_key_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_traversable_key_value_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_trigger_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/matchers/developer_uses_type_matcher.feature delete mode 100644 vendor/phpspec/phpspec/features/options/developer_chooses_no_code_generation.feature delete mode 100644 vendor/phpspec/phpspec/features/options/developer_chooses_stop_on_failure.feature delete mode 100644 vendor/phpspec/phpspec/features/options/developer_chooses_verbose_output.feature delete mode 100644 vendor/phpspec/phpspec/features/runner/developer_is_told_about_pending_specs.feature delete mode 100644 vendor/phpspec/phpspec/features/runner/developer_runs_specs.feature delete mode 100644 vendor/phpspec/phpspec/features/runner/developer_runs_specs_with_bootstrap.feature delete mode 100644 vendor/phpspec/phpspec/features/runner/developer_runs_specs_with_spec_path.feature delete mode 100644 vendor/phpspec/phpspec/features/runner/developer_skips_specs.feature delete mode 100644 vendor/phpspec/phpspec/integration/PhpSpec/Console/Prompter/QuestionTest.php delete mode 100644 vendor/phpspec/phpspec/integration/PhpSpec/Loader/StreamWrapperTest.php delete mode 100644 vendor/phpspec/phpspec/integration/PhpSpec/Loader/examples/ExampleSpec.php delete mode 100644 vendor/phpspec/phpspec/phpunit.xml delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeAnalysis/MagicAwareAccessInspectorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeAnalysis/StaticRejectingNamespaceResolverSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeAnalysis/TokenizedNamespaceResolverSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeAnalysis/TokenizedTypeHintRewriterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeAnalysis/VisibilityAccessInspectorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/ClassGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/ConfirmingGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/MethodGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/NamedConstructorGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/NewFileNotifyingGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/OneTimeGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/ReturnConstantGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/SpecificationGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Generator/ValidateClassNameSpecificationGeneratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/GeneratorManagerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/TemplateRendererSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/CodeGenerator/Writer/TokenizedCodeWriterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Config/OptionsConfigSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Console/ApplicationSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Console/ConsoleIOSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Console/Provider/NamespacesAutocompleteProviderSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Console/ResultConverterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/ExampleEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/ExpectationEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/FileCreationEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/MethodCallEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/SpecificationEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Event/SuiteEventSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/ErrorExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Example/NotEqualExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Example/StopOnFailureExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/ExceptionFactorySpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/ExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/ClassNotFoundExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/InterfaceNotImplementedExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/MethodNotFoundExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/MethodNotVisibleExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/NamedConstructorNotFoundExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Fracture/PropertyNotFoundExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Exception/Wrapper/InvalidCollaboratorTypeExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/BasicFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/DotFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/HtmlIOSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/ReportFailedItemSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/ReportItemFactorySpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/ReportPassedItemSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/ReportPendingItemSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Html/TemplateSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/HtmlFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/JUnitFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Differ/ArrayEngineSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Differ/DifferSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Differ/ObjectEngineSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Differ/StringEngineSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/CallArgumentsPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/GenericPhpSpecExceptionPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/HtmlPhpSpecExceptionPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/SimpleExceptionElementPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/SimpleExceptionPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Exception/TaggingExceptionElementPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/SimplePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/TaggingPresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/ArrayTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/BaseExceptionTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/BooleanTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/CallableTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/ComposedValuePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/NullTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/ObjectTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/QuotingStringTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/Presenter/Value/TruncatingStringTypePresenterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/ProgressFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Formatter/TapFormatterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/ClassNotFoundListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/CollaboratorMethodNotFoundListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/CollaboratorNotFoundListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/CurrentExampleListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/MethodNotFoundListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/MethodReturnedNullListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/NamedConstructorNotFoundListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/RerunListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/StatisticsCollectorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Listener/StopOnFailureListenerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Loader/Node/ExampleNodeSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Loader/Node/SpecificationNodeSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Loader/SuiteSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Loader/Transformer/InMemoryTypeHintIndexSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Loader/Transformer/TypeHintRewriterSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Locator/PSR0/PSR0LocatorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Locator/PSR0/PSR0ResourceSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Locator/PrioritizedResourceManagerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ApproximatelyMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ArrayContainMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ArrayCountMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ArrayKeyMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ArrayKeyValueMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/CallbackMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ComparisonMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/IdentityMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/Iterate/IterablesMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/Iterate/SubjectElementDoesNotMatchExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/Iterate/SubjectHasFewerElementsExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/Iterate/SubjectHasMoreElementsExceptionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/IterateAsMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/IterateLikeMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ObjectStateMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ScalarMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/StartIteratingAsMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/StringContainMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/StringEndMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/StringRegexMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/StringStartMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/ThrowMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TraversableContainMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TraversableCountMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TraversableKeyMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TraversableKeyValueMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TriggerMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Matcher/TypeMatcherSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Message/CurrentExampleTrackerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/NamespaceProvider/ComposerPsrNamespaceProviderSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/Context/JsonExecutionContextSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/Prerequisites/SuitePrerequisitesSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/ReRunner/CompositeReRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/ReRunner/OptionalReRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/ReRunner/PcntlReRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/ReRunner/ProcOpenReRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/ReRunner/WindowsPassthruRerunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/Shutdown/ShutdownSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Process/Shutdown/UpdateConsoleActionSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/CollaboratorManagerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/ExampleRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/Maintainer/ErrorMaintainerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/Maintainer/MatchersMaintainerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/MatcherManagerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/SpecificationRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Runner/SuiteRunnerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/ServiceContainer/IndexedServiceContainerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Specification/ErrorSpecificationSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/ClassFileAnalyserSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/ClassNameCheckerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/ExampleObjectUsingTrait.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/ExampleTrait.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/InstantiatorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/MethodAnalyserSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Util/ReservedWordsMethodNameCheckerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/CallerSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/Expectation/ConstructorDecoratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/Expectation/DecoratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/Expectation/DispatcherDecoratorSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/Expectation/NegativeSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/Expectation/PositiveSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/ExpectationFactorySpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/Subject/WrappedObjectSpec.php delete mode 100644 vendor/phpspec/phpspec/spec/PhpSpec/Wrapper/SubjectSpec.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/CodeAnalysis/DisallowedUnionTypehintException.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Event/BaseEvent.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Event/ResourceEvent.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Exception/Example/MethodFailureException.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Exception/Generator/GenerationFailed.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Factory/ObjectFactory.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Formatter/JsonFormatter.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Formatter/TeamCityFormatter.php create mode 100644 vendor/phpspec/phpspec/src/PhpSpec/Util/DispatchTrait.php delete mode 100644 vendor/phpunit/php-code-coverage/.gitattributes delete mode 100644 vendor/phpunit/php-code-coverage/.github/CONTRIBUTING.md delete mode 100644 vendor/phpunit/php-code-coverage/.github/FUNDING.yml delete mode 100644 vendor/phpunit/php-code-coverage/.github/ISSUE_TEMPLATE.md delete mode 100644 vendor/phpunit/php-code-coverage/.gitignore delete mode 100644 vendor/phpunit/php-code-coverage/.php_cs.dist delete mode 100644 vendor/phpunit/php-code-coverage/.travis.yml delete mode 100644 vendor/phpunit/php-code-coverage/build.xml delete mode 100644 vendor/phpunit/php-code-coverage/phive.xml delete mode 100644 vendor/phpunit/php-code-coverage/phpunit.xml delete mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PCOV.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PcovDriver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Selector.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/ParserException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/ReflectionException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/XmlException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php create mode 100644 vendor/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php create mode 100644 vendor/phpunit/php-code-coverage/src/RawCodeCoverageData.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Cobertura.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/branches.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php create mode 100644 vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php delete mode 100644 vendor/phpunit/php-code-coverage/src/Util.php create mode 100644 vendor/phpunit/php-code-coverage/src/Util/Filesystem.php create mode 100644 vendor/phpunit/php-code-coverage/src/Util/Percentage.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/TestCase.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesWhitespaceTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodOneLineAnnotationTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Crash.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassExtendedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/BankAccount.php.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/dashboard.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/index.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/dashboard.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/index.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/dashboard.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/index.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/source_with_ignore.php.html delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/BankAccount.php.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/index.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/index.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/index.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/source_with_ignore.php.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_ignore.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_namespace.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_oneline_annotations.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_use_statements.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_namespace.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/bootstrap.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/BuilderTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/Exception/UnintentionallyCoveredCodeExceptionTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/TextTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php delete mode 100644 vendor/phpunit/php-code-coverage/tests/tests/XmlTest.php delete mode 100644 vendor/phpunit/php-file-iterator/.gitattributes delete mode 100644 vendor/phpunit/php-file-iterator/.github/stale.yml delete mode 100644 vendor/phpunit/php-file-iterator/.gitignore delete mode 100644 vendor/phpunit/php-file-iterator/.php_cs.dist create mode 100644 vendor/phpunit/php-file-iterator/.psalm/baseline.xml create mode 100644 vendor/phpunit/php-file-iterator/.psalm/config.xml delete mode 100644 vendor/phpunit/php-file-iterator/.travis.yml delete mode 100644 vendor/phpunit/php-file-iterator/phpunit.xml delete mode 100644 vendor/phpunit/php-file-iterator/tests/FactoryTest.php create mode 100644 vendor/phpunit/php-invoker/ChangeLog.md create mode 100644 vendor/phpunit/php-invoker/LICENSE create mode 100644 vendor/phpunit/php-invoker/README.md create mode 100644 vendor/phpunit/php-invoker/composer.json create mode 100644 vendor/phpunit/php-invoker/src/Invoker.php create mode 100644 vendor/phpunit/php-invoker/src/exceptions/Exception.php create mode 100644 vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php create mode 100644 vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php delete mode 100644 vendor/phpunit/php-text-template/.gitattributes delete mode 100644 vendor/phpunit/php-text-template/.gitignore create mode 100644 vendor/phpunit/php-text-template/.psalm/baseline.xml create mode 100644 vendor/phpunit/php-text-template/.psalm/config.xml create mode 100644 vendor/phpunit/php-text-template/ChangeLog.md create mode 100644 vendor/phpunit/php-text-template/src/exceptions/Exception.php create mode 100644 vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php create mode 100644 vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php delete mode 100644 vendor/phpunit/php-timer/.gitattributes delete mode 100644 vendor/phpunit/php-timer/.github/FUNDING.yml delete mode 100644 vendor/phpunit/php-timer/.github/stale.yml delete mode 100644 vendor/phpunit/php-timer/.gitignore delete mode 100644 vendor/phpunit/php-timer/.php_cs.dist create mode 100644 vendor/phpunit/php-timer/.psalm/baseline.xml create mode 100644 vendor/phpunit/php-timer/.psalm/config.xml delete mode 100644 vendor/phpunit/php-timer/.travis.yml delete mode 100644 vendor/phpunit/php-timer/build.xml delete mode 100644 vendor/phpunit/php-timer/phpunit.xml create mode 100644 vendor/phpunit/php-timer/src/Duration.php delete mode 100644 vendor/phpunit/php-timer/src/Exception.php create mode 100644 vendor/phpunit/php-timer/src/ResourceUsageFormatter.php delete mode 100644 vendor/phpunit/php-timer/src/RuntimeException.php create mode 100644 vendor/phpunit/php-timer/src/exceptions/Exception.php create mode 100644 vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php create mode 100644 vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php delete mode 100644 vendor/phpunit/php-timer/tests/TimerTest.php delete mode 100644 vendor/phpunit/php-token-stream/.gitattributes delete mode 100644 vendor/phpunit/php-token-stream/.gitignore delete mode 100644 vendor/phpunit/php-token-stream/ChangeLog.md delete mode 100644 vendor/phpunit/php-token-stream/LICENSE delete mode 100644 vendor/phpunit/php-token-stream/README.md delete mode 100644 vendor/phpunit/php-token-stream/composer.json delete mode 100644 vendor/phpunit/php-token-stream/src/Abstract.php delete mode 100644 vendor/phpunit/php-token-stream/src/Ampersand.php delete mode 100644 vendor/phpunit/php-token-stream/src/AndEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Array.php delete mode 100644 vendor/phpunit/php-token-stream/src/ArrayCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/As.php delete mode 100644 vendor/phpunit/php-token-stream/src/At.php delete mode 100644 vendor/phpunit/php-token-stream/src/Backtick.php delete mode 100644 vendor/phpunit/php-token-stream/src/BadCharacter.php delete mode 100644 vendor/phpunit/php-token-stream/src/BoolCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/BooleanAnd.php delete mode 100644 vendor/phpunit/php-token-stream/src/BooleanOr.php delete mode 100644 vendor/phpunit/php-token-stream/src/CachingFactory.php delete mode 100644 vendor/phpunit/php-token-stream/src/Callable.php delete mode 100644 vendor/phpunit/php-token-stream/src/Caret.php delete mode 100644 vendor/phpunit/php-token-stream/src/Case.php delete mode 100644 vendor/phpunit/php-token-stream/src/Catch.php delete mode 100644 vendor/phpunit/php-token-stream/src/Character.php delete mode 100644 vendor/phpunit/php-token-stream/src/Class.php delete mode 100644 vendor/phpunit/php-token-stream/src/ClassC.php delete mode 100644 vendor/phpunit/php-token-stream/src/ClassNameConstant.php delete mode 100644 vendor/phpunit/php-token-stream/src/Clone.php delete mode 100644 vendor/phpunit/php-token-stream/src/CloseBracket.php delete mode 100644 vendor/phpunit/php-token-stream/src/CloseCurly.php delete mode 100644 vendor/phpunit/php-token-stream/src/CloseSquare.php delete mode 100644 vendor/phpunit/php-token-stream/src/CloseTag.php delete mode 100644 vendor/phpunit/php-token-stream/src/Coalesce.php delete mode 100644 vendor/phpunit/php-token-stream/src/CoalesceEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Colon.php delete mode 100644 vendor/phpunit/php-token-stream/src/Comma.php delete mode 100644 vendor/phpunit/php-token-stream/src/Comment.php delete mode 100644 vendor/phpunit/php-token-stream/src/ConcatEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Const.php delete mode 100644 vendor/phpunit/php-token-stream/src/ConstantEncapsedString.php delete mode 100644 vendor/phpunit/php-token-stream/src/Continue.php delete mode 100644 vendor/phpunit/php-token-stream/src/CurlyOpen.php delete mode 100644 vendor/phpunit/php-token-stream/src/DNumber.php delete mode 100644 vendor/phpunit/php-token-stream/src/Dec.php delete mode 100644 vendor/phpunit/php-token-stream/src/Declare.php delete mode 100644 vendor/phpunit/php-token-stream/src/Default.php delete mode 100644 vendor/phpunit/php-token-stream/src/Dir.php delete mode 100644 vendor/phpunit/php-token-stream/src/Div.php delete mode 100644 vendor/phpunit/php-token-stream/src/DivEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Do.php delete mode 100644 vendor/phpunit/php-token-stream/src/DocComment.php delete mode 100644 vendor/phpunit/php-token-stream/src/Dollar.php delete mode 100644 vendor/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php delete mode 100644 vendor/phpunit/php-token-stream/src/Dot.php delete mode 100644 vendor/phpunit/php-token-stream/src/DoubleArrow.php delete mode 100644 vendor/phpunit/php-token-stream/src/DoubleCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/DoubleColon.php delete mode 100644 vendor/phpunit/php-token-stream/src/DoubleQuotes.php delete mode 100644 vendor/phpunit/php-token-stream/src/Echo.php delete mode 100644 vendor/phpunit/php-token-stream/src/Ellipsis.php delete mode 100644 vendor/phpunit/php-token-stream/src/Else.php delete mode 100644 vendor/phpunit/php-token-stream/src/Elseif.php delete mode 100644 vendor/phpunit/php-token-stream/src/Empty.php delete mode 100644 vendor/phpunit/php-token-stream/src/EncapsedAndWhitespace.php delete mode 100644 vendor/phpunit/php-token-stream/src/EndHeredoc.php delete mode 100644 vendor/phpunit/php-token-stream/src/Enddeclare.php delete mode 100644 vendor/phpunit/php-token-stream/src/Endfor.php delete mode 100644 vendor/phpunit/php-token-stream/src/Endforeach.php delete mode 100644 vendor/phpunit/php-token-stream/src/Endif.php delete mode 100644 vendor/phpunit/php-token-stream/src/Endswitch.php delete mode 100644 vendor/phpunit/php-token-stream/src/Endwhile.php delete mode 100644 vendor/phpunit/php-token-stream/src/Equal.php delete mode 100644 vendor/phpunit/php-token-stream/src/Eval.php delete mode 100644 vendor/phpunit/php-token-stream/src/ExclamationMark.php delete mode 100644 vendor/phpunit/php-token-stream/src/Exit.php delete mode 100644 vendor/phpunit/php-token-stream/src/Extends.php delete mode 100644 vendor/phpunit/php-token-stream/src/File.php delete mode 100644 vendor/phpunit/php-token-stream/src/Final.php delete mode 100644 vendor/phpunit/php-token-stream/src/Finally.php delete mode 100644 vendor/phpunit/php-token-stream/src/Fn.php delete mode 100644 vendor/phpunit/php-token-stream/src/For.php delete mode 100644 vendor/phpunit/php-token-stream/src/Foreach.php delete mode 100644 vendor/phpunit/php-token-stream/src/FuncC.php delete mode 100644 vendor/phpunit/php-token-stream/src/Function.php delete mode 100644 vendor/phpunit/php-token-stream/src/Global.php delete mode 100644 vendor/phpunit/php-token-stream/src/Goto.php delete mode 100644 vendor/phpunit/php-token-stream/src/Gt.php delete mode 100644 vendor/phpunit/php-token-stream/src/HaltCompiler.php delete mode 100644 vendor/phpunit/php-token-stream/src/If.php delete mode 100644 vendor/phpunit/php-token-stream/src/Implements.php delete mode 100644 vendor/phpunit/php-token-stream/src/Inc.php delete mode 100644 vendor/phpunit/php-token-stream/src/Include.php delete mode 100644 vendor/phpunit/php-token-stream/src/IncludeOnce.php delete mode 100644 vendor/phpunit/php-token-stream/src/Includes.php delete mode 100644 vendor/phpunit/php-token-stream/src/InlineHtml.php delete mode 100644 vendor/phpunit/php-token-stream/src/Instanceof.php delete mode 100644 vendor/phpunit/php-token-stream/src/Insteadof.php delete mode 100644 vendor/phpunit/php-token-stream/src/IntCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/Interface.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsGreaterOrEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsIdentical.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsNotEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsNotIdentical.php delete mode 100644 vendor/phpunit/php-token-stream/src/IsSmallerOrEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Isset.php delete mode 100644 vendor/phpunit/php-token-stream/src/Line.php delete mode 100644 vendor/phpunit/php-token-stream/src/List.php delete mode 100644 vendor/phpunit/php-token-stream/src/Lnumber.php delete mode 100644 vendor/phpunit/php-token-stream/src/LogicalAnd.php delete mode 100644 vendor/phpunit/php-token-stream/src/LogicalOr.php delete mode 100644 vendor/phpunit/php-token-stream/src/LogicalXor.php delete mode 100644 vendor/phpunit/php-token-stream/src/Lt.php delete mode 100644 vendor/phpunit/php-token-stream/src/MethodC.php delete mode 100644 vendor/phpunit/php-token-stream/src/Minus.php delete mode 100644 vendor/phpunit/php-token-stream/src/MinusEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/ModEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/MulEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Mult.php delete mode 100644 vendor/phpunit/php-token-stream/src/NameFullyQualified.php delete mode 100644 vendor/phpunit/php-token-stream/src/NameQualified.php delete mode 100644 vendor/phpunit/php-token-stream/src/NameRelative.php delete mode 100644 vendor/phpunit/php-token-stream/src/Namespace.php delete mode 100644 vendor/phpunit/php-token-stream/src/New.php delete mode 100644 vendor/phpunit/php-token-stream/src/NsC.php delete mode 100644 vendor/phpunit/php-token-stream/src/NsSeparator.php delete mode 100644 vendor/phpunit/php-token-stream/src/NumString.php delete mode 100644 vendor/phpunit/php-token-stream/src/ObjectCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/ObjectOperator.php delete mode 100644 vendor/phpunit/php-token-stream/src/OpenBracket.php delete mode 100644 vendor/phpunit/php-token-stream/src/OpenCurly.php delete mode 100644 vendor/phpunit/php-token-stream/src/OpenSquare.php delete mode 100644 vendor/phpunit/php-token-stream/src/OpenTag.php delete mode 100644 vendor/phpunit/php-token-stream/src/OpenTagWithEcho.php delete mode 100644 vendor/phpunit/php-token-stream/src/OrEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/PaamayimNekudotayim.php delete mode 100644 vendor/phpunit/php-token-stream/src/Percent.php delete mode 100644 vendor/phpunit/php-token-stream/src/Pipe.php delete mode 100644 vendor/phpunit/php-token-stream/src/Plus.php delete mode 100644 vendor/phpunit/php-token-stream/src/PlusEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Pow.php delete mode 100644 vendor/phpunit/php-token-stream/src/PowEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Print.php delete mode 100644 vendor/phpunit/php-token-stream/src/Private.php delete mode 100644 vendor/phpunit/php-token-stream/src/Protected.php delete mode 100644 vendor/phpunit/php-token-stream/src/Public.php delete mode 100644 vendor/phpunit/php-token-stream/src/QuestionMark.php delete mode 100644 vendor/phpunit/php-token-stream/src/Require.php delete mode 100644 vendor/phpunit/php-token-stream/src/RequireOnce.php delete mode 100644 vendor/phpunit/php-token-stream/src/Return.php delete mode 100644 vendor/phpunit/php-token-stream/src/Semicolon.php delete mode 100644 vendor/phpunit/php-token-stream/src/Sl.php delete mode 100644 vendor/phpunit/php-token-stream/src/SlEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Spaceship.php delete mode 100644 vendor/phpunit/php-token-stream/src/Sr.php delete mode 100644 vendor/phpunit/php-token-stream/src/SrEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/StartHeredoc.php delete mode 100644 vendor/phpunit/php-token-stream/src/Static.php delete mode 100644 vendor/phpunit/php-token-stream/src/Stream.php delete mode 100644 vendor/phpunit/php-token-stream/src/String.php delete mode 100644 vendor/phpunit/php-token-stream/src/StringCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/StringVarname.php delete mode 100644 vendor/phpunit/php-token-stream/src/Switch.php delete mode 100644 vendor/phpunit/php-token-stream/src/Throw.php delete mode 100644 vendor/phpunit/php-token-stream/src/Tilde.php delete mode 100644 vendor/phpunit/php-token-stream/src/Token.php delete mode 100644 vendor/phpunit/php-token-stream/src/TokenWithScope.php delete mode 100644 vendor/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php delete mode 100644 vendor/phpunit/php-token-stream/src/Trait.php delete mode 100644 vendor/phpunit/php-token-stream/src/TraitC.php delete mode 100644 vendor/phpunit/php-token-stream/src/Try.php delete mode 100644 vendor/phpunit/php-token-stream/src/Unset.php delete mode 100644 vendor/phpunit/php-token-stream/src/UnsetCast.php delete mode 100644 vendor/phpunit/php-token-stream/src/Use.php delete mode 100644 vendor/phpunit/php-token-stream/src/UseFunction.php delete mode 100644 vendor/phpunit/php-token-stream/src/Util.php delete mode 100644 vendor/phpunit/php-token-stream/src/Var.php delete mode 100644 vendor/phpunit/php-token-stream/src/Variable.php delete mode 100644 vendor/phpunit/php-token-stream/src/While.php delete mode 100644 vendor/phpunit/php-token-stream/src/Whitespace.php delete mode 100644 vendor/phpunit/php-token-stream/src/XorEqual.php delete mode 100644 vendor/phpunit/php-token-stream/src/Yield.php delete mode 100644 vendor/phpunit/php-token-stream/src/YieldFrom.php delete mode 100644 vendor/phpunit/php-token-stream/src/break.php create mode 100644 vendor/phpunit/phpunit/ChangeLog-9.5.md create mode 100644 vendor/phpunit/phpunit/schema/8.5.xsd create mode 100644 vendor/phpunit/phpunit/schema/9.2.xsd delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Boolean}/IsFalse.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Boolean}/IsTrue.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Cardinality}/Count.php (84%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Cardinality}/GreaterThan.php (91%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Cardinality}/IsEmpty.php (94%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Cardinality}/LessThan.php (91%) create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Exception}/ExceptionCode.php (93%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Exception}/ExceptionMessage.php (94%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Exception}/ExceptionMessageRegularExpression.php (94%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Filesystem}/DirectoryExists.php (89%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Filesystem}/FileExists.php (90%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Filesystem}/IsReadable.php (89%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Filesystem}/IsWritable.php (89%) delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Math}/IsFinite.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Math}/IsInfinite.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Math}/IsNan.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Object}/ClassHasAttribute.php (92%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Object}/ClassHasStaticAttribute.php (88%) create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Object}/ObjectHasAttribute.php (83%) create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => String}/IsJson.php (90%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => String}/RegularExpression.php (78%) create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => String}/StringEndsWith.php (90%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => String}/StringMatchesFormatDescription.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => String}/StringStartsWith.php (92%) delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Traversable}/ArrayHasKey.php (88%) create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Traversable}/TraversableContainsOnly.php (90%) delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Type}/IsInstanceOf.php (92%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Type}/IsNull.php (88%) rename vendor/phpunit/phpunit/src/Framework/Constraint/{ => Type}/IsType.php (76%) create mode 100644 vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception/Error.php create mode 100644 vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php delete mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Generator/intersection.tpl create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_never_or_void.tpl delete mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl create mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_never_or_void.tpl delete mode 100644 vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl create mode 100644 vendor/phpunit/phpunit/src/Framework/Reorderable.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php delete mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php create mode 100644 vendor/phpunit/phpunit/src/Util/Cloner.php delete mode 100644 vendor/phpunit/phpunit/src/Util/Configuration.php delete mode 100644 vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php create mode 100644 vendor/phpunit/phpunit/src/Util/ExcludeList.php delete mode 100644 vendor/phpunit/phpunit/src/Util/Getopt.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/Loader.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml/Validator.php create mode 100644 vendor/psr/event-dispatcher/.editorconfig create mode 100644 vendor/psr/event-dispatcher/.gitignore create mode 100644 vendor/psr/event-dispatcher/LICENSE create mode 100644 vendor/psr/event-dispatcher/README.md create mode 100644 vendor/psr/event-dispatcher/composer.json create mode 100644 vendor/psr/event-dispatcher/src/EventDispatcherInterface.php create mode 100644 vendor/psr/event-dispatcher/src/ListenerProviderInterface.php create mode 100644 vendor/psr/event-dispatcher/src/StoppableEventInterface.php delete mode 100644 vendor/psy/psysh/.editorconfig delete mode 100644 vendor/psy/psysh/.github/CONTRIBUTING.md delete mode 100644 vendor/psy/psysh/.gitignore delete mode 100644 vendor/psy/psysh/.phan/config.php delete mode 100644 vendor/psy/psysh/.php_cs delete mode 100644 vendor/psy/psysh/.styleci.yml delete mode 100644 vendor/psy/psysh/.travis.yml delete mode 100644 vendor/psy/psysh/Makefile delete mode 100755 vendor/psy/psysh/bin/build-stub delete mode 100644 vendor/psy/psysh/box.json.dist delete mode 100644 vendor/psy/psysh/phpunit.xml.dist create mode 100644 vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php create mode 100644 vendor/psy/psysh/src/CodeCleaner/IssetPass.php create mode 100644 vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php delete mode 100644 vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php create mode 100644 vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php delete mode 100644 vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php delete mode 100644 vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php delete mode 100644 vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php delete mode 100644 vendor/psy/psysh/src/ConsoleColorFactory.php create mode 100644 vendor/psy/psysh/src/EnvInterface.php create mode 100644 vendor/psy/psysh/src/Exception/UnexpectedTargetException.php delete mode 100644 vendor/psy/psysh/src/ExecutionLoop.php create mode 100644 vendor/psy/psysh/src/Formatter/ReflectorFormatter.php create mode 100644 vendor/psy/psysh/src/Formatter/TraceFormatter.php create mode 100644 vendor/psy/psysh/src/Output/Theme.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Autocompleter.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/AutocompleterAggregate.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/AutocompleterWord.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Console.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleCursor.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleInput.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleTput.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ConsoleWindow.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Event.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventBucket.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventListenable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventListener.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventListens.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/EventSource.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Exception.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/File.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileFinder.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileLink.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileRead.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/IStream.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Protocol.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ProtocolException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Readline.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Stream.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamContext.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamException.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamIn.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamLockable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamOut.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamPathable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamPointable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamStatable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/StreamTouchable.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Terminfo/77/windows-ansi create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm-256color create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Ustring.php create mode 100644 vendor/psy/psysh/src/Readline/Hoa/Xcallable.php create mode 100644 vendor/psy/psysh/src/Readline/Userland.php create mode 100644 vendor/psy/psysh/src/Reflection/ReflectionNamespace.php create mode 100644 vendor/psy/psysh/src/SuperglobalsEnv.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/Downloader.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/Downloader/Factory.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/Installer.php create mode 100644 vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php delete mode 100644 vendor/psy/psysh/test/ClassWithSecrets.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ListPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php delete mode 100644 vendor/psy/psysh/test/CodeCleanerTest.php delete mode 100644 vendor/psy/psysh/test/Command/ExitCommandTest.php delete mode 100644 vendor/psy/psysh/test/Command/ThrowUpCommandTest.php delete mode 100644 vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php delete mode 100644 vendor/psy/psysh/test/ConfigurationTest.php delete mode 100644 vendor/psy/psysh/test/ConsoleColorFactoryTest.php delete mode 100644 vendor/psy/psysh/test/ContextTest.php delete mode 100644 vendor/psy/psysh/test/Exception/BreakExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/ErrorExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php delete mode 100644 vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php delete mode 100644 vendor/psy/psysh/test/FakeShell.php delete mode 100644 vendor/psy/psysh/test/Formatter/CodeFormatterTest.php delete mode 100644 vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php delete mode 100644 vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php delete mode 100644 vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php delete mode 100644 vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php delete mode 100644 vendor/psy/psysh/test/Input/CodeArgumentTest.php delete mode 100644 vendor/psy/psysh/test/Input/FilterOptionsTest.php delete mode 100644 vendor/psy/psysh/test/Input/ShellInputTest.php delete mode 100644 vendor/psy/psysh/test/ParserTestCase.php delete mode 100644 vendor/psy/psysh/test/Readline/GNUReadlineTest.php delete mode 100644 vendor/psy/psysh/test/Readline/HoaConsoleTest.php delete mode 100644 vendor/psy/psysh/test/Readline/LibeditTest.php delete mode 100644 vendor/psy/psysh/test/Readline/TransientTest.php delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php delete mode 100644 vendor/psy/psysh/test/ShellTest.php delete mode 100644 vendor/psy/psysh/test/Sudo/SudoVisitorTest.php delete mode 100644 vendor/psy/psysh/test/SudoTest.php delete mode 100644 vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php delete mode 100644 vendor/psy/psysh/test/TabCompletion/StaticSample.php delete mode 100644 vendor/psy/psysh/test/Util/DocblockTest.php delete mode 100644 vendor/psy/psysh/test/Util/MirrorTest.php delete mode 100644 vendor/psy/psysh/test/Util/StrTest.php delete mode 100644 vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php delete mode 100644 vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php delete mode 100644 vendor/psy/psysh/test/fixtures/config.php delete mode 100644 vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php delete mode 100644 vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history delete mode 100644 vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite delete mode 100644 vendor/psy/psysh/test/fixtures/empty.php delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/history delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php delete mode 100644 vendor/psy/psysh/test/fixtures/project/.psysh.php delete mode 100644 vendor/psy/psysh/test/fixtures/unvis_fixtures.json delete mode 100755 vendor/psy/psysh/test/tools/gen_unvis_fixtures.py delete mode 100755 vendor/psy/psysh/test/tools/vis.py delete mode 100644 vendor/psy/psysh/vendor-bin/box/composer.json delete mode 100644 vendor/psy/psysh/vendor-bin/box/composer.lock create mode 100644 vendor/ramsey/collection/LICENSE create mode 100644 vendor/ramsey/collection/README.md create mode 100644 vendor/ramsey/collection/SECURITY.md create mode 100644 vendor/ramsey/collection/composer.json create mode 100644 vendor/ramsey/collection/src/AbstractArray.php create mode 100644 vendor/ramsey/collection/src/AbstractCollection.php create mode 100644 vendor/ramsey/collection/src/AbstractSet.php create mode 100644 vendor/ramsey/collection/src/ArrayInterface.php create mode 100644 vendor/ramsey/collection/src/Collection.php create mode 100644 vendor/ramsey/collection/src/CollectionInterface.php create mode 100644 vendor/ramsey/collection/src/DoubleEndedQueue.php create mode 100644 vendor/ramsey/collection/src/DoubleEndedQueueInterface.php create mode 100644 vendor/ramsey/collection/src/Exception/CollectionMismatchException.php create mode 100644 vendor/ramsey/collection/src/Exception/InvalidArgumentException.php create mode 100644 vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php create mode 100644 vendor/ramsey/collection/src/Exception/NoSuchElementException.php create mode 100644 vendor/ramsey/collection/src/Exception/OutOfBoundsException.php create mode 100644 vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php create mode 100644 vendor/ramsey/collection/src/Exception/ValueExtractionException.php create mode 100644 vendor/ramsey/collection/src/GenericArray.php create mode 100644 vendor/ramsey/collection/src/Map/AbstractMap.php create mode 100644 vendor/ramsey/collection/src/Map/AbstractTypedMap.php create mode 100644 vendor/ramsey/collection/src/Map/AssociativeArrayMap.php create mode 100644 vendor/ramsey/collection/src/Map/MapInterface.php create mode 100644 vendor/ramsey/collection/src/Map/NamedParameterMap.php create mode 100644 vendor/ramsey/collection/src/Map/TypedMap.php create mode 100644 vendor/ramsey/collection/src/Map/TypedMapInterface.php create mode 100644 vendor/ramsey/collection/src/Queue.php create mode 100644 vendor/ramsey/collection/src/QueueInterface.php create mode 100644 vendor/ramsey/collection/src/Set.php create mode 100644 vendor/ramsey/collection/src/Tool/TypeTrait.php create mode 100644 vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php create mode 100644 vendor/ramsey/collection/src/Tool/ValueToStringTrait.php create mode 100644 vendor/ramsey/uuid/src/Builder/BuilderCollection.php create mode 100644 vendor/ramsey/uuid/src/Builder/FallbackBuilder.php create mode 100644 vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php create mode 100644 vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php create mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidInterface.php create mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php create mode 100644 vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php create mode 100644 vendor/ramsey/uuid/src/Exception/DateTimeException.php create mode 100644 vendor/ramsey/uuid/src/Exception/DceSecurityException.php create mode 100644 vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php create mode 100644 vendor/ramsey/uuid/src/Exception/InvalidBytesException.php create mode 100644 vendor/ramsey/uuid/src/Exception/NameException.php create mode 100644 vendor/ramsey/uuid/src/Exception/NodeException.php create mode 100644 vendor/ramsey/uuid/src/Exception/RandomSourceException.php create mode 100644 vendor/ramsey/uuid/src/Exception/TimeSourceException.php create mode 100644 vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/UnsatisfiedDependencyException.php create mode 100644 vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php create mode 100644 vendor/ramsey/uuid/src/Fields/FieldsInterface.php create mode 100644 vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php create mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php create mode 100644 vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/MtRandGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php create mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Generator/OpenSslGenerator.php create mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/SodiumRandomGenerator.php create mode 100644 vendor/ramsey/uuid/src/Guid/Fields.php create mode 100644 vendor/ramsey/uuid/src/Guid/Guid.php create mode 100644 vendor/ramsey/uuid/src/Guid/GuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php create mode 100644 vendor/ramsey/uuid/src/Math/BrickMathCalculator.php create mode 100644 vendor/ramsey/uuid/src/Math/CalculatorInterface.php create mode 100644 vendor/ramsey/uuid/src/Math/RoundingMode.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/Fields.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/Uuid.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidV6.php create mode 100644 vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php create mode 100644 vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php create mode 100644 vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/Fields.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilTrait.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilUuid.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV1.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV2.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV3.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV4.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV5.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/Validator.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php create mode 100644 vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php create mode 100644 vendor/ramsey/uuid/src/Type/Decimal.php create mode 100644 vendor/ramsey/uuid/src/Type/Hexadecimal.php create mode 100644 vendor/ramsey/uuid/src/Type/Integer.php create mode 100644 vendor/ramsey/uuid/src/Type/NumberInterface.php create mode 100644 vendor/ramsey/uuid/src/Type/Time.php create mode 100644 vendor/ramsey/uuid/src/Type/TypeInterface.php create mode 100644 vendor/ramsey/uuid/src/Validator/GenericValidator.php create mode 100644 vendor/ramsey/uuid/src/Validator/ValidatorInterface.php delete mode 100644 vendor/scrivo/highlight.php/.php-cs-fixer.dist.php delete mode 100644 vendor/scrivo/highlight.php/AUTHORS.txt delete mode 100644 vendor/scrivo/highlight.php/CONTRIBUTING.md delete mode 100644 vendor/scrivo/highlight.php/Highlight/Autoloader.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/HighlightResult.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/Highlighter.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/JsonRef.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/Language.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/Mode.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/ModeDeprecations.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/RegEx.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/RegExMatch.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/RegExUtils.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/Terminators.php delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/1c.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/abnf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/accesslog.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/actionscript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ada.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/angelscript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/apache.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/applescript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/arcade.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/arduino.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/armasm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/asciidoc.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/aspectj.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/autohotkey.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/autoit.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/avrasm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/awk.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/axapta.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/bash.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/basic.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/bnf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/brainfuck.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/cal.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/capnproto.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ceylon.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/clean.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/clojure-repl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/clojure.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/cmake.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/coffeescript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/coq.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/cos.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/cpp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/crmsh.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/crystal.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/cs.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/csp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/css.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/d.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dart.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/delphi.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/diff.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/django.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dns.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dockerfile.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dos.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dsconfig.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dts.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/dust.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ebnf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/elixir.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/elm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/erb.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/erlang-repl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/erlang.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/excel.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/fix.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/flix.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/fortran.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/fsharp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gams.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gauss.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gcode.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gherkin.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/glsl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/go.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/golo.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/gradle.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/groovy.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/haml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/handlebars.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/haskell.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/haxe.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/hsp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/htmlbars.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/http.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/hy.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/inform7.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ini.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/irpf90.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/isbl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/java.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/javascript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/jboss-cli.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/json.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/julia-repl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/julia.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/kotlin.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/lasso.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ldif.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/leaf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/less.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/lisp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/livecodeserver.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/livescript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/llvm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/lsl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/lua.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/makefile.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/markdown.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mathematica.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/matlab.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/maxima.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mel.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mercury.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mipsasm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mizar.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/mojolicious.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/monkey.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/moonscript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/n1ql.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/nginx.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/nimrod.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/nix.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/nsis.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/objectivec.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ocaml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/openscad.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/oxygene.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/parser3.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/perl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/pf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/pgsql.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/php.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/plaintext.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/pony.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/powershell.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/processing.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/profile.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/prolog.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/properties.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/protobuf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/puppet.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/purebasic.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/python.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/q.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/qml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/r.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/reasonml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/rib.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/roboconf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/routeros.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/rsl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ruby.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/ruleslanguage.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/rust.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/sas.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/scala.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/scheme.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/scilab.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/scss.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/shell.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/smali.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/smalltalk.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/sml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/sqf.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/sql.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/stan.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/stata.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/step21.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/stylus.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/subunit.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/swift.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/taggerscript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/tap.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/tcl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/tex.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/thrift.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/tp.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/twig.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/typescript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vala.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vbnet.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vbscript-html.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vbscript.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/verilog.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vhdl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/vim.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/x86asm.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/xl.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/xml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/xquery.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/yaml.json delete mode 100644 vendor/scrivo/highlight.php/Highlight/languages/zephir.json delete mode 100644 vendor/scrivo/highlight.php/HighlightUtilities/_internals.php delete mode 100644 vendor/scrivo/highlight.php/HighlightUtilities/_themeColors.php delete mode 100644 vendor/scrivo/highlight.php/HighlightUtilities/functions.php delete mode 100644 vendor/scrivo/highlight.php/LICENSE.md delete mode 100644 vendor/scrivo/highlight.php/README.md delete mode 100644 vendor/scrivo/highlight.php/composer.json delete mode 100644 vendor/scrivo/highlight.php/styles/a11y-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/a11y-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/agate.css delete mode 100644 vendor/scrivo/highlight.php/styles/an-old-hope.css delete mode 100644 vendor/scrivo/highlight.php/styles/androidstudio.css delete mode 100644 vendor/scrivo/highlight.php/styles/arduino-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/arta.css delete mode 100644 vendor/scrivo/highlight.php/styles/ascetic.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-cave-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-cave-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-dune-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-dune-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-estuary-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-estuary-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-forest-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-forest-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-heath-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-heath-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-lakeside-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-lakeside-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-plateau-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-plateau-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-savanna-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-savanna-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-seaside-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-seaside-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-sulphurpool-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atelier-sulphurpool-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/atom-one-dark-reasonable.css delete mode 100644 vendor/scrivo/highlight.php/styles/atom-one-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/atom-one-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/brown-paper.css delete mode 100644 vendor/scrivo/highlight.php/styles/brown-papersq.png delete mode 100644 vendor/scrivo/highlight.php/styles/codepen-embed.css delete mode 100644 vendor/scrivo/highlight.php/styles/color-brewer.css delete mode 100644 vendor/scrivo/highlight.php/styles/darcula.css delete mode 100644 vendor/scrivo/highlight.php/styles/dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/darkula.css delete mode 100644 vendor/scrivo/highlight.php/styles/default.css delete mode 100644 vendor/scrivo/highlight.php/styles/docco.css delete mode 100644 vendor/scrivo/highlight.php/styles/dracula.css delete mode 100644 vendor/scrivo/highlight.php/styles/far.css delete mode 100644 vendor/scrivo/highlight.php/styles/foundation.css delete mode 100644 vendor/scrivo/highlight.php/styles/github-gist.css delete mode 100644 vendor/scrivo/highlight.php/styles/github.css delete mode 100644 vendor/scrivo/highlight.php/styles/gml.css delete mode 100644 vendor/scrivo/highlight.php/styles/googlecode.css delete mode 100644 vendor/scrivo/highlight.php/styles/gradient-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/grayscale.css delete mode 100644 vendor/scrivo/highlight.php/styles/gruvbox-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/gruvbox-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/hopscotch.css delete mode 100644 vendor/scrivo/highlight.php/styles/hybrid.css delete mode 100644 vendor/scrivo/highlight.php/styles/idea.css delete mode 100644 vendor/scrivo/highlight.php/styles/ir-black.css delete mode 100644 vendor/scrivo/highlight.php/styles/isbl-editor-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/isbl-editor-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/kimbie.dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/kimbie.light.css delete mode 100644 vendor/scrivo/highlight.php/styles/lightfair.css delete mode 100644 vendor/scrivo/highlight.php/styles/magula.css delete mode 100644 vendor/scrivo/highlight.php/styles/mono-blue.css delete mode 100644 vendor/scrivo/highlight.php/styles/monokai-sublime.css delete mode 100644 vendor/scrivo/highlight.php/styles/monokai.css delete mode 100644 vendor/scrivo/highlight.php/styles/night-owl.css delete mode 100644 vendor/scrivo/highlight.php/styles/nord.css delete mode 100644 vendor/scrivo/highlight.php/styles/obsidian.css delete mode 100644 vendor/scrivo/highlight.php/styles/ocean.css delete mode 100644 vendor/scrivo/highlight.php/styles/paraiso-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/paraiso-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/pojoaque.css delete mode 100644 vendor/scrivo/highlight.php/styles/pojoaque.jpg delete mode 100644 vendor/scrivo/highlight.php/styles/purebasic.css delete mode 100644 vendor/scrivo/highlight.php/styles/qtcreator_dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/qtcreator_light.css delete mode 100644 vendor/scrivo/highlight.php/styles/railscasts.css delete mode 100644 vendor/scrivo/highlight.php/styles/rainbow.css delete mode 100644 vendor/scrivo/highlight.php/styles/routeros.css delete mode 100644 vendor/scrivo/highlight.php/styles/school-book.css delete mode 100644 vendor/scrivo/highlight.php/styles/school-book.png delete mode 100644 vendor/scrivo/highlight.php/styles/shades-of-purple.css delete mode 100644 vendor/scrivo/highlight.php/styles/solarized-dark.css delete mode 100644 vendor/scrivo/highlight.php/styles/solarized-light.css delete mode 100644 vendor/scrivo/highlight.php/styles/sunburst.css delete mode 100644 vendor/scrivo/highlight.php/styles/tomorrow-night-blue.css delete mode 100644 vendor/scrivo/highlight.php/styles/tomorrow-night-bright.css delete mode 100644 vendor/scrivo/highlight.php/styles/tomorrow-night-eighties.css delete mode 100644 vendor/scrivo/highlight.php/styles/tomorrow-night.css delete mode 100644 vendor/scrivo/highlight.php/styles/tomorrow.css delete mode 100644 vendor/scrivo/highlight.php/styles/vs.css delete mode 100644 vendor/scrivo/highlight.php/styles/vs2015.css delete mode 100644 vendor/scrivo/highlight.php/styles/xcode.css delete mode 100644 vendor/scrivo/highlight.php/styles/xt256.css delete mode 100644 vendor/scrivo/highlight.php/styles/zenburn.css create mode 100644 vendor/sebastian/cli-parser/ChangeLog.md create mode 100644 vendor/sebastian/cli-parser/LICENSE create mode 100644 vendor/sebastian/cli-parser/README.md create mode 100644 vendor/sebastian/cli-parser/composer.json create mode 100644 vendor/sebastian/cli-parser/infection.json create mode 100644 vendor/sebastian/cli-parser/src/Parser.php create mode 100644 vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php create mode 100644 vendor/sebastian/cli-parser/src/exceptions/Exception.php create mode 100644 vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php create mode 100644 vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php create mode 100644 vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/.gitignore delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/.php_cs delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/.travis.yml delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/build.xml delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/phpunit.xml delete mode 100644 vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php create mode 100644 vendor/sebastian/code-unit/.psalm/baseline.xml create mode 100644 vendor/sebastian/code-unit/.psalm/config.xml create mode 100644 vendor/sebastian/code-unit/ChangeLog.md create mode 100644 vendor/sebastian/code-unit/LICENSE create mode 100644 vendor/sebastian/code-unit/README.md create mode 100644 vendor/sebastian/code-unit/composer.json create mode 100644 vendor/sebastian/code-unit/src/ClassMethodUnit.php create mode 100644 vendor/sebastian/code-unit/src/ClassUnit.php create mode 100644 vendor/sebastian/code-unit/src/CodeUnit.php create mode 100644 vendor/sebastian/code-unit/src/CodeUnitCollection.php create mode 100644 vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php create mode 100644 vendor/sebastian/code-unit/src/FunctionUnit.php create mode 100644 vendor/sebastian/code-unit/src/InterfaceMethodUnit.php create mode 100644 vendor/sebastian/code-unit/src/InterfaceUnit.php create mode 100644 vendor/sebastian/code-unit/src/Mapper.php create mode 100644 vendor/sebastian/code-unit/src/TraitMethodUnit.php create mode 100644 vendor/sebastian/code-unit/src/TraitUnit.php create mode 100644 vendor/sebastian/code-unit/src/exceptions/Exception.php create mode 100644 vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php create mode 100644 vendor/sebastian/code-unit/src/exceptions/NoTraitException.php create mode 100644 vendor/sebastian/code-unit/src/exceptions/ReflectionException.php create mode 100644 vendor/sebastian/comparator/src/exceptions/Exception.php create mode 100644 vendor/sebastian/comparator/src/exceptions/RuntimeException.php create mode 100644 vendor/sebastian/complexity/.psalm/baseline.xml create mode 100644 vendor/sebastian/complexity/.psalm/config.xml create mode 100644 vendor/sebastian/complexity/ChangeLog.md create mode 100644 vendor/sebastian/complexity/LICENSE create mode 100644 vendor/sebastian/complexity/README.md create mode 100644 vendor/sebastian/complexity/composer.json create mode 100644 vendor/sebastian/complexity/src/Calculator.php create mode 100644 vendor/sebastian/complexity/src/Complexity/Complexity.php create mode 100644 vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php create mode 100644 vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php create mode 100644 vendor/sebastian/complexity/src/Exception/Exception.php create mode 100644 vendor/sebastian/complexity/src/Exception/RuntimeException.php create mode 100644 vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php create mode 100644 vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php delete mode 100644 vendor/sebastian/diff/.github/stale.yml delete mode 100644 vendor/sebastian/diff/.gitignore delete mode 100644 vendor/sebastian/diff/.php_cs.dist delete mode 100644 vendor/sebastian/diff/.travis.yml delete mode 100644 vendor/sebastian/diff/build.xml delete mode 100644 vendor/sebastian/diff/phpunit.xml delete mode 100644 vendor/sebastian/diff/tests/ChunkTest.php delete mode 100644 vendor/sebastian/diff/tests/DiffTest.php delete mode 100644 vendor/sebastian/diff/tests/DifferTest.php delete mode 100644 vendor/sebastian/diff/tests/Exception/ConfigurationExceptionTest.php delete mode 100644 vendor/sebastian/diff/tests/Exception/InvalidArgumentExceptionTest.php delete mode 100644 vendor/sebastian/diff/tests/LineTest.php delete mode 100644 vendor/sebastian/diff/tests/LongestCommonSubsequenceTest.php delete mode 100644 vendor/sebastian/diff/tests/MemoryEfficientImplementationTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/AbstractChunkOutputBuilderTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/DiffOnlyOutputBuilderTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/Integration/UnifiedDiffOutputBuilderIntegrationTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderDataProvider.php delete mode 100644 vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderTest.php delete mode 100644 vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderDataProvider.php delete mode 100644 vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderTest.php delete mode 100644 vendor/sebastian/diff/tests/ParserTest.php delete mode 100644 vendor/sebastian/diff/tests/TimeEfficientImplementationTest.php delete mode 100644 vendor/sebastian/diff/tests/Utils/FileUtils.php delete mode 100644 vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTrait.php delete mode 100644 vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitIntegrationTest.php delete mode 100644 vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitTest.php delete mode 100644 vendor/sebastian/diff/tests/fixtures/.editorconfig delete mode 100644 vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_a.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_b.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_a.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_b.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/out/.editorconfig delete mode 100644 vendor/sebastian/diff/tests/fixtures/out/.gitignore delete mode 100644 vendor/sebastian/diff/tests/fixtures/patch.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/patch2.txt delete mode 100644 vendor/sebastian/diff/tests/fixtures/serialized_diff.bin delete mode 100644 vendor/sebastian/environment/.github/FUNDING.yml delete mode 100644 vendor/sebastian/environment/.gitignore delete mode 100644 vendor/sebastian/environment/.php_cs.dist delete mode 100644 vendor/sebastian/environment/.travis.yml delete mode 100644 vendor/sebastian/environment/build.xml delete mode 100644 vendor/sebastian/environment/phpunit.xml delete mode 100644 vendor/sebastian/environment/tests/ConsoleTest.php delete mode 100644 vendor/sebastian/environment/tests/OperatingSystemTest.php delete mode 100644 vendor/sebastian/environment/tests/RuntimeTest.php delete mode 100644 vendor/sebastian/global-state/.github/stale.yml delete mode 100644 vendor/sebastian/global-state/.gitignore delete mode 100644 vendor/sebastian/global-state/.php_cs.dist delete mode 100644 vendor/sebastian/global-state/.travis.yml delete mode 100644 vendor/sebastian/global-state/build.xml delete mode 100644 vendor/sebastian/global-state/phpunit.xml delete mode 100644 vendor/sebastian/global-state/src/Blacklist.php create mode 100644 vendor/sebastian/global-state/src/ExcludeList.php delete mode 100644 vendor/sebastian/global-state/tests/BlacklistTest.php delete mode 100644 vendor/sebastian/global-state/tests/CodeExporterTest.php delete mode 100644 vendor/sebastian/global-state/tests/RestorerTest.php delete mode 100644 vendor/sebastian/global-state/tests/SnapshotTest.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php delete mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php create mode 100644 vendor/sebastian/lines-of-code/.psalm/baseline.xml create mode 100644 vendor/sebastian/lines-of-code/.psalm/config.xml create mode 100644 vendor/sebastian/lines-of-code/ChangeLog.md create mode 100644 vendor/sebastian/lines-of-code/LICENSE create mode 100644 vendor/sebastian/lines-of-code/README.md create mode 100644 vendor/sebastian/lines-of-code/composer.json create mode 100644 vendor/sebastian/lines-of-code/src/Counter.php create mode 100644 vendor/sebastian/lines-of-code/src/Exception/Exception.php create mode 100644 vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php create mode 100644 vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php create mode 100644 vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php create mode 100644 vendor/sebastian/lines-of-code/src/LineCountingVisitor.php create mode 100644 vendor/sebastian/lines-of-code/src/LinesOfCode.php delete mode 100644 vendor/sebastian/object-enumerator/.gitignore delete mode 100644 vendor/sebastian/object-enumerator/.php_cs create mode 100644 vendor/sebastian/object-enumerator/.psalm/baseline.xml create mode 100644 vendor/sebastian/object-enumerator/.psalm/config.xml delete mode 100644 vendor/sebastian/object-enumerator/.travis.yml delete mode 100644 vendor/sebastian/object-enumerator/build.xml delete mode 100644 vendor/sebastian/object-enumerator/tests/EnumeratorTest.php delete mode 100644 vendor/sebastian/object-enumerator/tests/_fixture/ExceptionThrower.php delete mode 100644 vendor/sebastian/object-reflector/.gitignore delete mode 100644 vendor/sebastian/object-reflector/.php_cs create mode 100644 vendor/sebastian/object-reflector/.psalm/baseline.xml create mode 100644 vendor/sebastian/object-reflector/.psalm/config.xml delete mode 100644 vendor/sebastian/object-reflector/.travis.yml delete mode 100644 vendor/sebastian/object-reflector/build.xml delete mode 100644 vendor/sebastian/object-reflector/phpunit.xml delete mode 100644 vendor/sebastian/object-reflector/tests/ObjectReflectorTest.php delete mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ChildClass.php delete mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ClassWithIntegerAttributeName.php delete mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ParentClass.php delete mode 100644 vendor/sebastian/recursion-context/.gitignore create mode 100644 vendor/sebastian/recursion-context/.psalm/baseline.xml create mode 100644 vendor/sebastian/recursion-context/.psalm/config.xml delete mode 100644 vendor/sebastian/recursion-context/.travis.yml create mode 100644 vendor/sebastian/recursion-context/ChangeLog.md delete mode 100644 vendor/sebastian/recursion-context/build.xml delete mode 100644 vendor/sebastian/recursion-context/phpunit.xml delete mode 100644 vendor/sebastian/recursion-context/tests/ContextTest.php create mode 100644 vendor/sebastian/resource-operations/.gitattributes delete mode 100644 vendor/sebastian/resource-operations/.github/stale.yml delete mode 100644 vendor/sebastian/resource-operations/.php_cs.dist delete mode 100644 vendor/sebastian/resource-operations/build.xml delete mode 100644 vendor/sebastian/resource-operations/tests/ResourceOperationsTest.php delete mode 100644 vendor/sebastian/type/.gitattributes delete mode 100644 vendor/sebastian/type/.github/FUNDING.yml delete mode 100644 vendor/sebastian/type/.gitignore delete mode 100644 vendor/sebastian/type/.idea/inspectionProfiles/Project_Default.xml delete mode 100644 vendor/sebastian/type/.idea/misc.xml delete mode 100644 vendor/sebastian/type/.idea/modules.xml delete mode 100644 vendor/sebastian/type/.idea/php-inspections-ea-ultimate.xml delete mode 100644 vendor/sebastian/type/.idea/php.xml delete mode 100644 vendor/sebastian/type/.idea/type.iml delete mode 100644 vendor/sebastian/type/.idea/vcs.xml delete mode 100644 vendor/sebastian/type/.php_cs.dist delete mode 100644 vendor/sebastian/type/.travis.yml delete mode 100644 vendor/sebastian/type/build.xml delete mode 100644 vendor/sebastian/type/phive.xml delete mode 100644 vendor/sebastian/type/phpunit.xml delete mode 100644 vendor/sebastian/type/psalm.xml delete mode 100644 vendor/sebastian/type/src/CallableType.php delete mode 100644 vendor/sebastian/type/src/IterableType.php delete mode 100644 vendor/sebastian/type/src/NullType.php delete mode 100644 vendor/sebastian/type/src/ObjectType.php create mode 100644 vendor/sebastian/type/src/Parameter.php create mode 100644 vendor/sebastian/type/src/ReflectionMapper.php delete mode 100644 vendor/sebastian/type/src/Type.php delete mode 100644 vendor/sebastian/type/src/UnknownType.php delete mode 100644 vendor/sebastian/type/src/VoidType.php create mode 100644 vendor/sebastian/type/src/type/CallableType.php create mode 100644 vendor/sebastian/type/src/type/FalseType.php rename vendor/sebastian/type/src/{ => type}/GenericObjectType.php (80%) create mode 100644 vendor/sebastian/type/src/type/IntersectionType.php create mode 100644 vendor/sebastian/type/src/type/IterableType.php create mode 100644 vendor/sebastian/type/src/type/MixedType.php create mode 100644 vendor/sebastian/type/src/type/NeverType.php create mode 100644 vendor/sebastian/type/src/type/NullType.php create mode 100644 vendor/sebastian/type/src/type/ObjectType.php rename vendor/sebastian/type/src/{ => type}/SimpleType.php (77%) create mode 100644 vendor/sebastian/type/src/type/StaticType.php create mode 100644 vendor/sebastian/type/src/type/TrueType.php create mode 100644 vendor/sebastian/type/src/type/Type.php create mode 100644 vendor/sebastian/type/src/type/UnionType.php create mode 100644 vendor/sebastian/type/src/type/UnknownType.php create mode 100644 vendor/sebastian/type/src/type/VoidType.php delete mode 100644 vendor/sebastian/type/tests/_fixture/ChildClass.php delete mode 100644 vendor/sebastian/type/tests/_fixture/ClassWithCallbackMethods.php delete mode 100644 vendor/sebastian/type/tests/_fixture/ClassWithInvokeMethod.php delete mode 100644 vendor/sebastian/type/tests/_fixture/Iterator.php delete mode 100644 vendor/sebastian/type/tests/_fixture/ParentClass.php delete mode 100644 vendor/sebastian/type/tests/_fixture/callback_function.php delete mode 100644 vendor/sebastian/type/tests/unit/CallableTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/GenericObjectTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/IterableTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/NullTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/ObjectTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/SimpleTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/TypeNameTest.php delete mode 100644 vendor/sebastian/type/tests/unit/TypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/UnknownTypeTest.php delete mode 100644 vendor/sebastian/type/tests/unit/VoidTypeTest.php delete mode 100644 vendor/sebastian/version/.php_cs create mode 100644 vendor/sebastian/version/ChangeLog.md create mode 100644 vendor/symfony/console/Attribute/AsCommand.php create mode 100644 vendor/symfony/console/CI/GithubActionReporter.php create mode 100644 vendor/symfony/console/Color.php create mode 100644 vendor/symfony/console/Command/CompleteCommand.php create mode 100644 vendor/symfony/console/Command/DumpCompletionCommand.php create mode 100644 vendor/symfony/console/Command/LazyCommand.php create mode 100644 vendor/symfony/console/Command/SignalableCommandInterface.php create mode 100644 vendor/symfony/console/Completion/CompletionInput.php create mode 100644 vendor/symfony/console/Completion/CompletionSuggestions.php create mode 100644 vendor/symfony/console/Completion/Output/BashCompletionOutput.php create mode 100644 vendor/symfony/console/Completion/Output/CompletionOutputInterface.php create mode 100644 vendor/symfony/console/Completion/Suggestion.php create mode 100644 vendor/symfony/console/Cursor.php create mode 100644 vendor/symfony/console/Event/ConsoleSignalEvent.php create mode 100644 vendor/symfony/console/Formatter/NullOutputFormatter.php create mode 100644 vendor/symfony/console/Formatter/NullOutputFormatterStyle.php create mode 100644 vendor/symfony/console/Helper/TableCellStyle.php create mode 100644 vendor/symfony/console/Resources/completion.bash create mode 100644 vendor/symfony/console/SignalRegistry/SignalRegistry.php create mode 100644 vendor/symfony/console/SingleCommandApplication.php create mode 100644 vendor/symfony/console/Tester/CommandCompletionTester.php create mode 100644 vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php delete mode 100644 vendor/symfony/debug/BufferingLogger.php delete mode 100644 vendor/symfony/debug/CHANGELOG.md delete mode 100644 vendor/symfony/debug/Debug.php delete mode 100644 vendor/symfony/debug/DebugClassLoader.php delete mode 100644 vendor/symfony/debug/ErrorHandler.php delete mode 100644 vendor/symfony/debug/Exception/ClassNotFoundException.php delete mode 100644 vendor/symfony/debug/Exception/FatalErrorException.php delete mode 100644 vendor/symfony/debug/Exception/FatalThrowableError.php delete mode 100644 vendor/symfony/debug/Exception/FlattenException.php delete mode 100644 vendor/symfony/debug/Exception/OutOfMemoryException.php delete mode 100644 vendor/symfony/debug/Exception/SilencedErrorContext.php delete mode 100644 vendor/symfony/debug/Exception/UndefinedFunctionException.php delete mode 100644 vendor/symfony/debug/Exception/UndefinedMethodException.php delete mode 100644 vendor/symfony/debug/ExceptionHandler.php delete mode 100644 vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php delete mode 100644 vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php delete mode 100644 vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php delete mode 100644 vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php delete mode 100644 vendor/symfony/debug/LICENSE delete mode 100644 vendor/symfony/debug/README.md delete mode 100644 vendor/symfony/debug/composer.json create mode 100644 vendor/symfony/dom-crawler/UriResolver.php create mode 100644 vendor/symfony/error-handler/Internal/TentativeTypes.php create mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg create mode 100755 vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php create mode 100755 vendor/symfony/error-handler/Resources/bin/patch-type-declarations rename vendor/symfony/{http-client-contracts => event-dispatcher-contracts}/CHANGELOG.md (100%) create mode 100644 vendor/symfony/event-dispatcher/Attribute/AsEventListener.php delete mode 100644 vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php delete mode 100644 vendor/symfony/event-dispatcher/Event.php delete mode 100644 vendor/symfony/event-dispatcher/LegacyEventProxy.php create mode 100644 vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php delete mode 100644 vendor/symfony/http-client-contracts/.gitignore delete mode 100644 vendor/symfony/http-client-contracts/ChunkInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php delete mode 100644 vendor/symfony/http-client-contracts/HttpClientInterface.php delete mode 100644 vendor/symfony/http-client-contracts/LICENSE delete mode 100644 vendor/symfony/http-client-contracts/README.md delete mode 100644 vendor/symfony/http-client-contracts/ResponseInterface.php delete mode 100644 vendor/symfony/http-client-contracts/ResponseStreamInterface.php delete mode 100644 vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php delete mode 100644 vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php delete mode 100644 vendor/symfony/http-client-contracts/Test/TestHttpServer.php delete mode 100644 vendor/symfony/http-client-contracts/composer.json delete mode 100644 vendor/symfony/http-foundation/ApacheRequest.php create mode 100644 vendor/symfony/http-foundation/Exception/BadRequestException.php create mode 100644 vendor/symfony/http-foundation/Exception/JsonException.php create mode 100644 vendor/symfony/http-foundation/Exception/SessionNotFoundException.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php delete mode 100644 vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php create mode 100644 vendor/symfony/http-foundation/InputBag.php create mode 100644 vendor/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php create mode 100644 vendor/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php create mode 100644 vendor/symfony/http-foundation/Session/SessionFactory.php create mode 100644 vendor/symfony/http-foundation/Session/SessionFactoryInterface.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/ServiceSessionFactory.php create mode 100644 vendor/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php create mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php create mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php create mode 100644 vendor/symfony/http-kernel/Attribute/ArgumentInterface.php create mode 100644 vendor/symfony/http-kernel/Attribute/AsController.php delete mode 100644 vendor/symfony/http-kernel/Client.php delete mode 100644 vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/FilterControllerEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/FilterResponseEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/GetResponseEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/PostResponseEvent.php delete mode 100644 vendor/symfony/http-kernel/EventListener/ExceptionListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/SaveSessionListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/TranslatorListener.php create mode 100644 vendor/symfony/http-kernel/Exception/InvalidMetadataException.php create mode 100644 vendor/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php create mode 100644 vendor/symfony/http-kernel/Fragment/FragmentUriGenerator.php create mode 100644 vendor/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php create mode 100644 vendor/symfony/polyfill-intl-grapheme/Grapheme.php create mode 100644 vendor/symfony/polyfill-intl-grapheme/LICENSE create mode 100644 vendor/symfony/polyfill-intl-grapheme/README.md create mode 100644 vendor/symfony/polyfill-intl-grapheme/bootstrap.php create mode 100644 vendor/symfony/polyfill-intl-grapheme/bootstrap80.php create mode 100644 vendor/symfony/polyfill-intl-grapheme/composer.json create mode 100644 vendor/symfony/polyfill-php81/LICENSE create mode 100644 vendor/symfony/polyfill-php81/Php81.php create mode 100644 vendor/symfony/polyfill-php81/README.md create mode 100644 vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php create mode 100644 vendor/symfony/polyfill-php81/bootstrap.php create mode 100644 vendor/symfony/polyfill-php81/composer.json create mode 100644 vendor/symfony/routing/Alias.php create mode 100644 vendor/symfony/routing/Exception/InvalidArgumentException.php create mode 100644 vendor/symfony/routing/Exception/RouteCircularReferenceException.php create mode 100644 vendor/symfony/routing/Exception/RuntimeException.php delete mode 100644 vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php create mode 100644 vendor/symfony/routing/Loader/Configurator/AliasConfigurator.php create mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php create mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php create mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php delete mode 100644 vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php delete mode 100644 vendor/symfony/routing/Loader/ObjectRouteLoader.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php create mode 100644 vendor/symfony/routing/Matcher/ExpressionLanguageProvider.php create mode 100644 vendor/symfony/string/AbstractString.php create mode 100644 vendor/symfony/string/AbstractUnicodeString.php create mode 100644 vendor/symfony/string/ByteString.php create mode 100644 vendor/symfony/string/CHANGELOG.md create mode 100644 vendor/symfony/string/CodePointString.php create mode 100644 vendor/symfony/string/Exception/ExceptionInterface.php create mode 100644 vendor/symfony/string/Exception/InvalidArgumentException.php create mode 100644 vendor/symfony/string/Exception/RuntimeException.php create mode 100644 vendor/symfony/string/Inflector/EnglishInflector.php create mode 100644 vendor/symfony/string/Inflector/FrenchInflector.php create mode 100644 vendor/symfony/string/Inflector/InflectorInterface.php create mode 100644 vendor/symfony/string/LICENSE create mode 100644 vendor/symfony/string/LazyString.php create mode 100644 vendor/symfony/string/README.md create mode 100644 vendor/symfony/string/Resources/data/wcswidth_table_wide.php create mode 100644 vendor/symfony/string/Resources/data/wcswidth_table_zero.php create mode 100644 vendor/symfony/string/Resources/functions.php create mode 100644 vendor/symfony/string/Slugger/AsciiSlugger.php create mode 100644 vendor/symfony/string/Slugger/SluggerInterface.php create mode 100644 vendor/symfony/string/UnicodeString.php create mode 100644 vendor/symfony/string/composer.json create mode 100644 vendor/symfony/translation/Command/TranslationPullCommand.php create mode 100644 vendor/symfony/translation/Command/TranslationPushCommand.php create mode 100644 vendor/symfony/translation/Command/TranslationTrait.php create mode 100644 vendor/symfony/translation/Exception/IncompleteDsnException.php create mode 100644 vendor/symfony/translation/Exception/MissingRequiredOptionException.php create mode 100644 vendor/symfony/translation/Exception/ProviderException.php create mode 100644 vendor/symfony/translation/Exception/ProviderExceptionInterface.php create mode 100644 vendor/symfony/translation/Exception/UnsupportedSchemeException.php delete mode 100644 vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php delete mode 100644 vendor/symfony/translation/Interval.php delete mode 100644 vendor/symfony/translation/MessageSelector.php delete mode 100644 vendor/symfony/translation/PluralizationRules.php create mode 100644 vendor/symfony/translation/Provider/AbstractProviderFactory.php create mode 100644 vendor/symfony/translation/Provider/Dsn.php create mode 100644 vendor/symfony/translation/Provider/FilteringProvider.php create mode 100644 vendor/symfony/translation/Provider/NullProvider.php create mode 100644 vendor/symfony/translation/Provider/NullProviderFactory.php create mode 100644 vendor/symfony/translation/Provider/ProviderFactoryInterface.php create mode 100644 vendor/symfony/translation/Provider/ProviderInterface.php create mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollection.php create mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php create mode 100644 vendor/symfony/translation/PseudoLocalizationTranslator.php create mode 100644 vendor/symfony/translation/Resources/functions.php create mode 100644 vendor/symfony/translation/Test/ProviderFactoryTestCase.php create mode 100644 vendor/symfony/translation/Test/ProviderTestCase.php create mode 100644 vendor/symfony/translation/TranslatableMessage.php create mode 100644 vendor/symfony/translation/TranslatorBag.php delete mode 100644 vendor/symfony/translation/TranslatorInterface.php create mode 100644 vendor/symfony/var-dumper/Caster/FiberCaster.php create mode 100644 vendor/symfony/var-dumper/Caster/RdKafkaCaster.php create mode 100755 vendor/symfony/yaml/Resources/bin/yaml-lint delete mode 100644 vendor/unisharp/laravel-ckeditor/.github/ISSUE_TEMPLATE delete mode 100644 vendor/unisharp/laravel-ckeditor/CHANGES.md delete mode 100644 vendor/unisharp/laravel-ckeditor/LICENSE.md delete mode 100644 vendor/unisharp/laravel-ckeditor/README.md delete mode 100644 vendor/unisharp/laravel-ckeditor/ServiceProvider.php delete mode 100644 vendor/unisharp/laravel-ckeditor/adapters/jquery.js delete mode 100644 vendor/unisharp/laravel-ckeditor/bower.json delete mode 100644 vendor/unisharp/laravel-ckeditor/ckeditor.js delete mode 100644 vendor/unisharp/laravel-ckeditor/composer.json delete mode 100644 vendor/unisharp/laravel-ckeditor/config.js delete mode 100644 vendor/unisharp/laravel-ckeditor/contents.css delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/_translationstatus.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/package.json delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/about.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/logo_ckeditor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/adobeair/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/ajax/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autoembed/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autogrow/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/autolink/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bbcode/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidiltr.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidirtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidiltr.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidirtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/bidi/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/dialogs/codesnippet.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/codesnippet.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/hidpi/codesnippet.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/LICENSE delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/README.ru.md delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/default.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/far.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/github.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippet/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/codesnippetgeshi/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/bgcolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/textcolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colorbutton/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/colordialog/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor.svg delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/copyformatting.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/copyformatting/styles/copyformatting.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/_translationstatus.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/devtools/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/dialog/dialogDefinition.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/dialogadvtab/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/dialogs/div.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/icons/creatediv.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/icons/hidpi/creatediv.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/div/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/divarea/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/dialogs/docprops.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/docprops-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/docprops.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/docprops/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embed/icons/embed.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embed/icons/hidpi/embed.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embed/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/dialogs/embedbase.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedbase/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedsemantic/icons/embedsemantic.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedsemantic/icons/hidpi/embedsemantic.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/embedsemantic/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/filetools/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/dialogs/find.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/find-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/find.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/hidpi/find-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/hidpi/find.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/hidpi/replace.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/icons/replace.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/find/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/dialogs/flash.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/icons/flash.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/icons/hidpi/flash.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/images/placeholder.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/flash/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/font/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/button.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/checkbox.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/form.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/hiddenfield.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/radio.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/select.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/textarea.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/dialogs/textfield.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/button.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/checkbox.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/form.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hiddenfield.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/button.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/checkbox.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/form.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/hiddenfield.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/imagebutton.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/radio.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/select-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/select.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/textarea-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/textarea.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/textfield-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/hidpi/textfield.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/imagebutton.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/radio.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/select-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/select.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/textarea-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/textarea.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/textfield-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/icons/textfield.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/images/hiddenfield.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/forms/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/icons.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/icons_hidpi.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/dialogs/iframe.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/icons/hidpi/iframe.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/icons/iframe.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/images/placeholder.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframe/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/iframedialog/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image/dialogs/image.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image/images/noimage.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/dialogs/image2.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/icons/hidpi/image.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/icons/image.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/image2/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/indentblock/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/hidpi/justifyblock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/hidpi/justifycenter.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/hidpi/justifyleft.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/hidpi/justifyright.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/justifyblock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/justifycenter.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/justifyleft.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/icons/justifyright.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/justify/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/icons/hidpi/language.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/icons/language.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/language/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/lineutils/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/link/dialogs/anchor.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/link/dialogs/link.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/link/images/anchor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/link/images/hidpi/anchor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/dialogs/liststyle.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/liststyle/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/magicline/images/hidpi/icon-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/magicline/images/hidpi/icon.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/magicline/images/icon-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/magicline/images/icon.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/dialogs/mathjax.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/icons/hidpi/mathjax.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/icons/mathjax.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/images/loader.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/mathjax/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/icons/hidpi/newpage-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/icons/hidpi/newpage.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/icons/newpage-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/icons/newpage.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/newpage/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/notificationaggregator/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/icons/hidpi/pagebreak-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/icons/hidpi/pagebreak.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/icons/pagebreak-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/icons/pagebreak.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/images/pagebreak.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pagebreak/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/panelbutton/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/pastefromword/filter/default.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/dialogs/placeholder.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/icons/hidpi/placeholder.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/icons/placeholder.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/placeholder/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/icons/hidpi/preview-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/icons/hidpi/preview.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/icons/preview-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/icons/preview.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/preview/preview.html delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/icons/hidpi/print.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/icons/print.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/print/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/icons/hidpi/save.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/icons/save.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/save/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/CHANGELOG.md delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/LICENSE.md delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/dialogs/dialog.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/dialogs/options.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/dialogs/toolbar.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/scayt/skins/moono-lisa/scayt.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/icons/hidpi/selectall.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/icons/selectall.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/selectall/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sharedspace/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/icons/hidpi/showblocks.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/icons/showblocks-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/icons/showblocks.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_address.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_blockquote.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_div.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h1.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h2.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h3.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h4.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h5.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_h6.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_p.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/images/block_pre.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/showblocks/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/dialogs/smiley.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/icons/hidpi/smiley.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/icons/smiley.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/angel_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/angel_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/angry_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/angry_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/broken_heart.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/broken_heart.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/confused_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/confused_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/cry_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/cry_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/devil_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/devil_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/embaressed_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/embarrassed_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/embarrassed_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/envelope.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/envelope.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/heart.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/heart.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/kiss.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/kiss.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/lightbulb.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/lightbulb.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/omg_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/omg_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/regular_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/regular_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/sad_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/sad_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/shades_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/shades_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/teeth_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/teeth_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/thumbs_down.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/thumbs_down.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/thumbs_up.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/thumbs_up.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/tongue_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/tongue_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/tounge_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/wink_smile.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/images/wink_smile.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/smiley/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/icons/sourcedialog.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/sourcedialog/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/specialchar/dialogs/specialchar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/stylesheetparser/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/table/dialogs/table.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/tableresize/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/tableselection/styles/tableselection.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/tabletools/dialogs/tableCell.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/dialogs/templates.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/dialogs/templates.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/icons/hidpi/templates-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/icons/hidpi/templates.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/icons/templates-rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/icons/templates.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/bn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/bs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/en-au.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/en-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/fo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/gu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/hi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/is.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ka.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/lt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/mn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ms.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ro.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sr-latn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/th.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/templates/default.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/templates/images/template1.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/templates/images/template2.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/templates/templates/images/template3.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/dialogs/uicolor.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/dialogs/uicolor.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/icons/hidpi/uicolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/icons/uicolor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/_translationstatus.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/et.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/fr-ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/mk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/si.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uicolor/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadfile/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadimage/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/uploadwidget/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/images/handle.png delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/af.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ar.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/az.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/bg.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ca.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/cs.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/cy.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/da.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/de-ch.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/de.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/el.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/en-gb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/en.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/eo.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/es-mx.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/es.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/eu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/fa.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/fi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/fr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/gl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/he.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/hr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/hu.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/id.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/it.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ja.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/km.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ko.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ku.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/lv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/nb.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/nl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/no.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/oc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/pl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/pt-br.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/pt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ru.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/sk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/sl.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/sq.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/sv.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/tr.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/tt.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/ug.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/uk.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/vi.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/zh-cn.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/lang/zh.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widget/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/widgetselection/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/LICENSE.md delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/dialogs/ciframe.html delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/dialogs/tmpFrameset.html delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/dialogs/wsc.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/dialogs/wsc.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/dialogs/wsc_ie.js delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/wsc/skins/moono-lisa/wsc.css delete mode 100644 vendor/unisharp/laravel-ckeditor/plugins/xml/plugin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/css/samples.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/img/github-top.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/img/header-bg.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/img/header-separator.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/img/logo.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/img/navigation-tip.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/index.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/js/sample.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/js/sf.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/ajax.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/api.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/appendto.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/assets/inlineall/logo.png delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/assets/outputxhtml/outputxhtml.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/assets/posteddata.php delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/assets/sample.jpg delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/assets/uilanguages/languages.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/autogrow/autogrow.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/bbcode/bbcode.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/codesnippet/codesnippet.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/datafiltering.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/devtools/devtools.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/dialog/assets/my_dialog.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/dialog/dialog.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/divarea/divarea.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/divreplace.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/docprops/docprops.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/enterkey/enterkey.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/htmlwriter/assets/outputforflash/swfobject.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/htmlwriter/outputforflash.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/htmlwriter/outputhtml.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/image2/assets/image1.jpg delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/image2/assets/image2.jpg delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/image2/image2.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/index.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/inlineall.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/inlinebycode.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/inlinetextarea.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/jquery.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/magicline/magicline.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/mathjax/mathjax.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/placeholder/placeholder.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/readonly.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/replacebyclass.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/replacebycode.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/sample.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/sample.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/sample_posteddata.php delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/sharedspace/sharedspace.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/sourcedialog/sourcedialog.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/stylesheetparser/assets/sample.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/stylesheetparser/stylesheetparser.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/tabindex.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/tableresize/tableresize.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/toolbar/toolbar.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/uicolor.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/uicolor/uicolor.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/uilanguages.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/wysiwygarea/fullpage.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/old/xhtmlstyle.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/css/fontello.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/LICENSE.txt delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/config.json delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/fontello.eot delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/fontello.svg delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/fontello.ttf delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/font/fontello.woff delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/index.html delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css delete mode 100644 vendor/unisharp/laravel-ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/dialog.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/dialog_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/dialog_ie7.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/dialog_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/dialog_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/editor.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/editor_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/editor_ie7.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/editor_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/editor_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/icons.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/icons_hidpi.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/dialog_sides.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/dialog_sides.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/dialog_sides_rtl.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/mini.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/spinner.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/sprites.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/sprites_ie6.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/images/toolbar_start.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/readme.md delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/kama/skin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/dialog.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/dialog_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/dialog_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/dialog_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/editor.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/editor_gecko.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/editor_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/editor_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/editor_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/icons.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/icons_hidpi.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/arrow.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/hidpi/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/hidpi/lock-open.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/hidpi/lock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/hidpi/refresh.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/lock-open.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/lock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/refresh.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/images/spinner.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono-lisa/readme.md delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/dialog.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/dialog_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/dialog_ie7.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/dialog_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/dialog_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor_gecko.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor_ie.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor_ie7.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor_ie8.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/editor_iequirks.css delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/icons.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/icons_hidpi.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/anchor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/arrow.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/hidpi/anchor.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/hidpi/close.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/hidpi/lock-open.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/hidpi/lock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/hidpi/refresh.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/lock-open.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/lock.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/refresh.png delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/images/spinner.gif delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/readme.md delete mode 100644 vendor/unisharp/laravel-ckeditor/skins/moono/skin.js delete mode 100644 vendor/unisharp/laravel-ckeditor/styles.js delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/AbstractVariables.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/AdapterInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/ApacheAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/ArrayAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/EnvConstAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/PutenvAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/Adapter/ServerConstAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/DotenvFactory.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/DotenvVariables.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/FactoryInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Environment/VariablesInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Loader.php rename vendor/vlucas/phpdotenv/src/{ => Loader}/Lines.php (88%) create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Loader.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Parser.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Value.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser.php delete mode 100644 vendor/vlucas/phpdotenv/src/Regex/Error.php delete mode 100644 vendor/vlucas/phpdotenv/src/Regex/Result.php delete mode 100644 vendor/vlucas/phpdotenv/src/Regex/Success.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/AbstractRepository.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/AvailabilityInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Result/Error.php create mode 100644 vendor/vlucas/phpdotenv/src/Result/Result.php create mode 100644 vendor/vlucas/phpdotenv/src/Result/Success.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Paths.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Reader.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/FileStore.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StringStore.php create mode 100644 vendor/voku/portable-ascii/.whitesource create mode 100644 vendor/voku/portable-ascii/CHANGELOG.md create mode 100644 vendor/voku/portable-ascii/LICENSE.txt create mode 100644 vendor/voku/portable-ascii/README.md create mode 100644 vendor/voku/portable-ascii/build/composer.json create mode 100644 vendor/voku/portable-ascii/build/docs/base.md create mode 100644 vendor/voku/portable-ascii/build/generate_docs.php create mode 100644 vendor/voku/portable-ascii/build/generate_max_key_length.php create mode 100644 vendor/voku/portable-ascii/composer.json create mode 100644 vendor/voku/portable-ascii/src/voku/helper/ASCII.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_by_languages.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_extras_by_languages.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_language_max_key.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_ord.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x000.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x001.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x002.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x003.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x004.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x005.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x006.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x007.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x009.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x010.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x011.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x012.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x013.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x014.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x015.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x016.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x017.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x018.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x020.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x021.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x022.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x023.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x024.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x025.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x026.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x027.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x028.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x029.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x030.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x031.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x032.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x033.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x050.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x051.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x052.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x053.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x054.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x055.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x056.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x057.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x058.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x059.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x060.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x061.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x062.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x063.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x064.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x065.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x066.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x067.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x068.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x069.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x070.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x071.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x072.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x073.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x074.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x075.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x076.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x077.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x078.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x079.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x080.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x081.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x082.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x083.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x084.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x085.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x086.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x087.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x088.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x089.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x090.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x091.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x092.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x093.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x094.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x095.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x096.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x097.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x098.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x099.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09a.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09b.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09c.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09d.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09e.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09f.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a0.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a1.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a2.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a3.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a4.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ac.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ad.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ae.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0af.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b0.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b1.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b2.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b3.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b4.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b5.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b6.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b7.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b8.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b9.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ba.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bb.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bc.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bd.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0be.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bf.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c0.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c1.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c2.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c3.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c4.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c5.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c6.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c7.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c8.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c9.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ca.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cb.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cc.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cd.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ce.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cf.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d0.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d1.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d2.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d3.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d4.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d5.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d6.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d7.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0f9.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fa.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fb.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fc.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fd.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fe.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ff.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d4.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d5.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d6.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d7.php create mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1f1.php diff --git a/.idea/community.iml b/.idea/community.iml index c571a1480..d74b1107d 100644 --- a/.idea/community.iml +++ b/.idea/community.iml @@ -5,125 +5,137 @@ - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - + - - - + - - - + + + + - + + - - - - - - - - - - - + - + + + - - - - - - - - - - - + - - - + - - - + - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138,25 +150,18 @@ - - - - + - + + + + + + - - - - - - - - - diff --git a/.idea/php.xml b/.idea/php.xml index 898c11c35..00774a86b 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -2,125 +2,137 @@ - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - + - - - + - - - + + + + - + + - - - - - - - - - - - + - + + + - - - - - - - - - - - + - - - + - - - + - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135,25 +147,18 @@ - - - - + - + + + + + + - - - - - - - - - diff --git a/composer.json b/composer.json index 3355750eb..6dcbd0f52 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,6 @@ "nicolaslopezj/searchable": "^1.13", "tymon/jwt-auth": "1.0.2", "davejamesmiller/laravel-breadcrumbs": "^5.3", - "brozot/laravel-fcm": "^1.3", "aws/aws-sdk-php": "^3.18", "predis/predis": "~1.0", "mremi/url-shortener": "^1.0", @@ -27,7 +26,6 @@ "laravel/socialite": "^4.2", "tedivm/fetch": "0.6.*", "unisharp/laravel-filemanager": "^2.0", - "unisharp/laravel-ckeditor": "dev-master", "torann/geoip": "^1.2", "yajra/laravel-datatables-oracle": "9.10.0", "flowjs/flow-php-server": "^1.0", @@ -40,11 +38,10 @@ }, "require-dev": { "phpunit/phpunit": "^8.5.8|^9.3.3", - "phpspec/phpspec": "^4.0", + "phpspec/phpspec": "^7.2.0", "symfony/dom-crawler": "^5.0", "symfony/css-selector": "^5.0", "laravel/dusk": "^5.5", - "laravel/tinker": "^1.0", "codacy/coverage": "dev-master", "nunomaduro/collision": "^4.3", "mockery/mockery": "^1.3.1", diff --git a/composer.lock b/composer.lock index 8b080c724..bff6ccb94 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,64 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a4e9e75d60f25ab648e6cecaa91aef85", + "content-hash": "10c14da42034189b9ee4d339988a2b39", "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, { "name": "aws/aws-crt-php", "version": "v1.0.2", @@ -151,74 +207,64 @@ "time": "2023-01-06T19:22:07+00:00" }, { - "name": "brozot/laravel-fcm", - "version": "1.3.1", + "name": "brick/math", + "version": "0.9.3", "source": { "type": "git", - "url": "https://github.com/brozot/Laravel-FCM.git", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668" + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brozot/Laravel-FCM/zipball/1b5c64c5ea829f46c7e5f274971c587a8c3f0668", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "~6.0", - "illuminate/support": "5.*|^6", - "monolog/monolog": "^1.12|^2.0", - "php": ">=5.5.9" + "ext-json": "*", + "php": "^7.1 || ^8.0" }, "require-dev": { - "laravel/laravel": "5.2.*", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "4.7.*", - "satooshi/php-coveralls": "dev-master" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" }, "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelFCM\\FCMServiceProvider" - ], - "aliases": { - "FCM": "LaravelFCM\\Facades\\FCM", - "FCMGroup": "LaravelFCM\\Facades\\FCMGroup" - } - } - }, "autoload": { "psr-4": { - "LaravelFCM\\": "src/", - "LaravelFCM\\Mocks\\": "tests/mocks" + "Brick\\Math\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Brosy", - "email": "nicolas.brosy@gmail.com" - } - ], - "description": "Laravel / Lumen package for Firebase Cloud Messaging ", + "description": "Arbitrary-precision arithmetic library", "keywords": [ - "FCM", - "Firebase Cloud Messaging", - "firebase", - "laravel", - "lumen", - "notification", - "push" + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" ], "support": { - "issues": "https://github.com/brozot/Laravel-FCM/issues", - "source": "https://github.com/brozot/Laravel-FCM/tree/master" + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" }, - "time": "2019-11-26T16:14:39+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" }, { "name": "bugsnag/bugsnag", @@ -547,43 +593,6 @@ "abandoned": "diglactic/laravel-breadcrumbs", "time": "2019-12-30T22:50:51+00:00" }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, { "name": "doctrine/cache", "version": "2.2.0", @@ -1498,6 +1507,85 @@ }, "time": "2022-08-26T15:50:37+00:00" }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-23T14:25:13+00:00" + }, { "name": "giggsey/libphonenumber-for-php", "version": "8.13.3", @@ -1723,37 +1811,49 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -1806,19 +1906,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { @@ -1834,7 +1935,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { "name": "guzzlehttp/promises", @@ -1922,43 +2023,47 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.9.0", + "version": "2.4.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "2.4-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -1997,6 +2102,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -2012,7 +2122,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.0" + "source": "https://github.com/guzzle/psr7/tree/2.4.3" }, "funding": [ { @@ -2028,7 +2138,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:03+00:00" + "time": "2022-10-26T14:07:24+00:00" }, { "name": "intervention/image", @@ -2116,16 +2226,16 @@ }, { "name": "laravel/framework", - "version": "v6.20.44", + "version": "v7.30.6", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0" + "reference": "ecdafad1dda3c790af186a6d18479ea4757ef9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0", - "reference": "505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0", + "url": "https://api.github.com/repos/laravel/framework/zipball/ecdafad1dda3c790af186a6d18479ea4757ef9ee", + "reference": "ecdafad1dda3c790af186a6d18479ea4757ef9ee", "shasum": "" }, "require": { @@ -2137,29 +2247,34 @@ "ext-openssl": "*", "league/commonmark": "^1.3", "league/flysystem": "^1.1", - "monolog/monolog": "^1.12|^2.0", + "monolog/monolog": "^2.0", "nesbot/carbon": "^2.31", "opis/closure": "^3.6", "php": "^7.2.5|^8.0", "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", + "ramsey/uuid": "^3.7|^4.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.3.4", - "symfony/debug": "^4.3.4", - "symfony/finder": "^4.3.4", - "symfony/http-foundation": "^4.3.4", - "symfony/http-kernel": "^4.3.4", + "symfony/console": "^5.0", + "symfony/error-handler": "^5.0", + "symfony/finder": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/http-kernel": "^5.0", + "symfony/mime": "^5.0", "symfony/polyfill-php73": "^1.17", - "symfony/process": "^4.3.4", - "symfony/routing": "^4.3.4", - "symfony/var-dumper": "^4.3.4", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^3.3" + "symfony/process": "^5.0", + "symfony/routing": "^5.0", + "symfony/var-dumper": "^5.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^4.0", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", @@ -2186,6 +2301,7 @@ "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" @@ -2198,11 +2314,11 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "~1.3.3|^1.4.2", "moontoast/math": "^1.1", - "orchestra/testbench-core": "^4.8", + "orchestra/testbench-core": "^5.8", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5.15|^8.4|^9.3.3", + "phpunit/phpunit": "^8.4|^9.3.3", "predis/predis": "^1.1.1", - "symfony/cache": "^4.3.4" + "symfony/cache": "^5.0" }, "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).", @@ -2215,25 +2331,28 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.8).", - "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0.1).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0.1).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (~1.3.3|^1.4.2).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.3.3).", "predis/predis": "Required to use the predis connector (^1.1.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", + "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { @@ -2265,7 +2384,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-01-12T16:12:12+00:00" + "time": "2021-12-07T14:56:47+00:00" }, { "name": "laravel/socialite", @@ -2338,36 +2457,37 @@ }, { "name": "laravel/tinker", - "version": "v1.0.10", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + "reference": "5062061b4924af3392225dd482ca7b4d85d8b8ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5062061b4924af3392225dd482ca7b4d85d8b8ef", + "reference": "5062061b4924af3392225dd482ca7b4d85d8b8ef", "shasum": "" }, "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "mockery/mockery": "~1.3.3|^1.4.2", + "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -2399,9 +2519,64 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v1.0.10" + "source": "https://github.com/laravel/tinker/tree/v2.7.3" }, - "time": "2019-08-07T15:10:45+00:00" + "time": "2022-11-09T15:11:38+00:00" + }, + { + "name": "laravel/ui", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "d01a705763c243b07be795e9d1bb47f89260f73d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/d01a705763c243b07be795e9d1bb47f89260f73d", + "reference": "d01a705763c243b07be795e9d1bb47f89260f73d", + "shasum": "" + }, + "require": { + "illuminate/console": "^7.0", + "illuminate/filesystem": "^7.0", + "illuminate/support": "^7.0", + "php": "^7.2.5|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "issues": "https://github.com/laravel/ui/issues", + "source": "https://github.com/laravel/ui/tree/v2.5.0" + }, + "time": "2020-11-03T19:45:19+00:00" }, { "name": "laravelcollective/html", @@ -3897,56 +4072,6 @@ }, "time": "2022-01-27T09:35:39+00:00" }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" - }, { "name": "phenx/php-font-lib", "version": "0.2.2", @@ -3985,108 +4110,6 @@ }, "time": "2014-02-01T15:22:28+00:00" }, - { - "name": "php-parallel-lint/php-console-color", - "version": "v0.3", - "source": { - "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Console-Color.git", - "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Color/zipball/b6af326b2088f1ad3b264696c9fd590ec395b49e", - "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "replace": { - "jakub-onderka/php-console-color": "*" - }, - "require-dev": { - "php-parallel-lint/php-code-style": "1.0", - "php-parallel-lint/php-parallel-lint": "1.0", - "php-parallel-lint/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Console-Color/issues", - "source": "https://github.com/php-parallel-lint/PHP-Console-Color/tree/master" - }, - "time": "2020-05-14T05:47:14+00:00" - }, - { - "name": "php-parallel-lint/php-console-highlighter", - "version": "v0.5", - "source": { - "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Console-Highlighter.git", - "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Highlighter/zipball/21bf002f077b177f056d8cb455c5ed573adfdbb8", - "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.4.0", - "php-parallel-lint/php-console-color": "~0.2" - }, - "replace": { - "jakub-onderka/php-console-highlighter": "*" - }, - "require-dev": { - "php-parallel-lint/php-code-style": "~1.0", - "php-parallel-lint/php-parallel-lint": "~1.0", - "php-parallel-lint/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues", - "source": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/tree/master" - }, - "time": "2020-05-13T07:37:49+00:00" - }, { "name": "phpoffice/phpspreadsheet", "version": "1.16.0", @@ -4442,6 +4465,56 @@ }, "time": "2021-03-05T17:36:06+00:00" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, { "name": "psr/http-client", "version": "1.0.1", @@ -4705,39 +4778,37 @@ }, { "name": "psy/psysh", - "version": "v0.9.12", + "version": "v0.11.10", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e9eadffbed9c9deb5426fd107faae0452bf20a36", + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, "bin": [ "bin/psysh" @@ -4745,7 +4816,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -4777,9 +4848,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.9.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.10" }, - "time": "2019-12-06T14:19:43+00:00" + "time": "2022-12-23T17:47:18+00:00" }, { "name": "ralouphie/getallheaders", @@ -4826,53 +4897,148 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.9.7", + "name": "ramsey/collection", + "version": "1.2.2", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178" + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/dc75aa439eb4c1b77f5379fd958b3dc0e6014178", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", "shasum": "" }, "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-10-10T03:01:02+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7.0 | ^8.0", - "symfony/polyfill-ctype": "^1.8" + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2", - "mockery/mockery": "^0.9.11 | ^1", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", - "nikic/php-parser": "<=4.5.0", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.5", - "yoast/phpunit-polyfills": "^1.0" + "vimeo/psalm": "^4.9" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, "autoload": { "files": [ "src/functions.php" @@ -4885,23 +5051,7 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", @@ -4909,9 +5059,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" + "source": "https://github.com/ramsey/uuid/tree/4.2.3" }, "funding": [ { @@ -4923,7 +5071,7 @@ "type": "tidelift" } ], - "time": "2022-12-19T21:55:10+00:00" + "time": "2021-09-25T23:10:38+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -5003,43 +5151,46 @@ }, { "name": "symfony/console", - "version": "v4.4.49", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -5072,8 +5223,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/console/tree/v5.4.17" }, "funding": [ { @@ -5089,24 +5246,24 @@ "type": "tidelift" } ], - "time": "2022-11-05T17:10:16+00:00" + "time": "2022-12-28T14:15:31+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.44", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/052ef49b660f9ad2a3adb311c555c9bc11ba61f4", + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -5139,7 +5296,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v5.4.17" }, "funding": [ { @@ -5155,76 +5312,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.44", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2022-12-23T11:40:44+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5295,28 +5383,31 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.44", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "reference": "b900446552833ad2f91ca7dd52aa8ffe78f66cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b900446552833ad2f91ca7dd52aa8ffe78f66cb2", + "reference": "b900446552833ad2f91ca7dd52aa8ffe78f66cb2", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -5343,7 +5434,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/error-handler/tree/v5.4.17" }, "funding": [ { @@ -5359,43 +5450,44 @@ "type": "tidelift" } ], - "time": "2022-07-28T16:29:46+00:00" + "time": "2022-12-13T09:43:00+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -5427,7 +5519,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.17" }, "funding": [ { @@ -5443,33 +5535,33 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2022-12-12T15:54:21+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5506,7 +5598,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -5522,24 +5614,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/finder", - "version": "v4.4.44", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + "reference": "40c08632019838dfb3350f18cf5563b8080055fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "url": "https://api.github.com/repos/symfony/finder/zipball/40c08632019838dfb3350f18cf5563b8080055fc", + "reference": "40c08632019838dfb3350f18cf5563b8080055fc", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -5568,7 +5661,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v5.4.17" }, "funding": [ { @@ -5584,109 +5677,39 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:35:46+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.49", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173" + "reference": "b64a0e2df212d5849e4584cabff0cf09c5d6866a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/191413c7b832c015bb38eae963f2e57498c3c173", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b64a0e2df212d5849e4584cabff0cf09c5d6866a", + "reference": "b64a0e2df212d5849e4584cabff0cf09c5d6866a", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { @@ -5714,7 +5737,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.49" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.17" }, "funding": [ { @@ -5730,61 +5753,69 @@ "type": "tidelift" } ], - "time": "2022-11-04T16:17:57+00:00" + "time": "2022-12-14T08:23:03+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.49", + "version": "v5.4.18", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4e36db8103062c62b3882b1bd297b02de6b021c4" + "reference": "5da6f57a13e5d7d77197443cf55697cdf65f1352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4e36db8103062c62b3882b1bd297b02de6b021c4", - "reference": "4e36db8103062c62b3882b1bd297b02de6b021c4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5da6f57a13e5d7d77197443cf55697cdf65f1352", + "reference": "5da6f57a13e5d7d77197443cf55697cdf65f1352", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -5818,7 +5849,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.49" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.18" }, "funding": [ { @@ -5834,7 +5865,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T17:58:43+00:00" + "time": "2022-12-29T18:54:08+00:00" }, { "name": "symfony/mime", @@ -6085,6 +6116,87 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-intl-idn", "version": "v1.27.0", @@ -6646,21 +6758,100 @@ "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/process", - "version": "v4.4.44", + "name": "symfony/polyfill-php81", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -6689,7 +6880,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { @@ -6705,42 +6896,43 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/routing", - "version": "v4.4.44", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/routing/zipball/4ce2df9a469c19ba45ca6aca04fec1c358a6e791", + "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", @@ -6778,7 +6970,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v5.4.17" }, "funding": [ { @@ -6794,7 +6986,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2022-12-20T11:10:57+00:00" }, { "name": "symfony/service-contracts", @@ -6880,44 +7072,135 @@ "time": "2022-05-30T19:17:29+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.47", + "name": "symfony/string", + "version": "v5.4.17", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94" + "url": "https://github.com/symfony/string.git", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/45036b1d53accc48fe9bab71ccd86d57eba0dd94", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/polyfill-php80": "~1.15" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.17" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-12-12T15:54:21+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.4.14", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab", + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -6926,6 +7209,9 @@ }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -6950,7 +7236,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.47" + "source": "https://github.com/symfony/translation/tree/v5.4.14" }, "funding": [ { @@ -6966,7 +7252,7 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2022-10-07T08:01:20+00:00" }, { "name": "symfony/translation-contracts", @@ -7048,33 +7334,33 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.47", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + "reference": "ad74890513d07060255df2575703daf971de92c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad74890513d07060255df2575703daf971de92c7", + "reference": "ad74890513d07060255df2575703daf971de92c7", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -7117,7 +7403,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.47" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.17" }, "funding": [ { @@ -7133,7 +7419,7 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "tedivm/fetch", @@ -7531,74 +7817,6 @@ ], "time": "2020-11-27T12:32:42+00:00" }, - { - "name": "unisharp/laravel-ckeditor", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/UniSharp/laravel-ckeditor.git", - "reference": "e404f291734aef3ef049809e7be203de286920d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/UniSharp/laravel-ckeditor/zipball/e404f291734aef3ef049809e7be203de286920d2", - "reference": "e404f291734aef3ef049809e7be203de286920d2", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0|^6.0" - }, - "default-branch": true, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Unisharp\\Ckeditor\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Unisharp\\Ckeditor\\": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0+", - "LGPL-2.1+", - "MPL-1.1+" - ], - "authors": [ - { - "name": "CKSource", - "homepage": "http://cksource.com" - }, - { - "name": "UniSharp Ltd. (Composer Package Maintainer)", - "homepage": "http://www.unisharp.com" - } - ], - "description": "JavaScript WYSIWYG web text editor (for laravel).", - "homepage": "http://ckeditor.com", - "keywords": [ - "CKEditor", - "editor", - "fckeditor", - "html", - "javascript", - "laravel", - "richtext", - "text", - "wysiwyg" - ], - "support": { - "forum": "http://ckeditor.com/forums", - "issues": "http://dev.ckeditor.com", - "source": "http://github.com/ckeditor/ckeditor-dev", - "wiki": "http://docs.ckeditor.com" - }, - "time": "2020-01-21T09:57:24+00:00" - }, { "name": "unisharp/laravel-filemanager", "version": "v2.5.1", @@ -7680,27 +7898,28 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.10", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e" + "reference": "67a491df68208bef8c37092db11fa3885008efcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/5b547cdb25825f10251370f57ba5d9d924e6f68e", - "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/67a491df68208bef8c37092db11fa3885008efcf", + "reference": "67a491df68208bef8c37092db11fa3885008efcf", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.5.2", + "php": "^5.5.9 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.7.3", "symfony/polyfill-ctype": "^1.17" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", "ext-pcre": "*", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.21" + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.30" }, "suggest": { "ext-filter": "Required to use the boolean validator.", @@ -7708,8 +7927,12 @@ }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -7741,7 +7964,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v3.6.10" + "source": "https://github.com/vlucas/phpdotenv/tree/v4.3.0" }, "funding": [ { @@ -7753,7 +7976,81 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:02:06+00:00" + "time": "2022-10-16T00:51:09+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" }, { "name": "vsmoraes/laravel-pdf", @@ -8080,42 +8377,44 @@ }, { "name": "facade/ignition", - "version": "1.18.1", + "version": "2.17.6", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf" + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf", - "reference": "d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", "shasum": "" }, "require": { + "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "facade/flare-client-php": "^1.3", - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.4", - "illuminate/support": "~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0", - "monolog/monolog": "^1.12 || ^2.0", - "php": "^7.1|^8.0", - "scrivo/highlight.php": "^9.15", - "symfony/console": "^3.4 || ^4.0", - "symfony/var-dumper": "^3.4 || ^4.0" + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" }, "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "orchestra/testbench": "^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0" + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" }, "suggest": { - "laravel/telescope": "^2.0" + "laravel/telescope": "^3.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -8152,7 +8451,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2022-02-23T20:20:52+00:00" + "time": "2022-06-30T18:26:59+00:00" }, { "name": "fakerphp/faker", @@ -8623,27 +8922,35 @@ }, { "name": "nunomaduro/collision", - "version": "v3.2.0", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f7c45764dfe4ba5f2618d265a6f1f9c72732e01d" + "reference": "7c125dc2463f3e144ddc7e05e63077109508c94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f7c45764dfe4ba5f2618d265a6f1f9c72732e01d", - "reference": "f7c45764dfe4ba5f2618d265a6f1f9c72732e01d", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/7c125dc2463f3e144ddc7e05e63077109508c94e", + "reference": "7c125dc2463f3e144ddc7e05e63077109508c94e", "shasum": "" }, "require": { - "filp/whoops": "^2.1.4", + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.4", "php": "^7.2.5 || ^8.0", - "php-parallel-lint/php-console-highlighter": "0.5.*", - "symfony/console": "~2.8|~3.3|~4.0" + "symfony/console": "^5.0" }, "require-dev": { - "laravel/framework": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "facade/ignition": "^2.0", + "fideloper/proxy": "^4.2", + "friendsofphp/php-cs-fixer": "^2.16", + "fruitcake/laravel-cors": "^1.0", + "laravel/framework": "^7.0", + "laravel/tinker": "^2.0", + "nunomaduro/larastan": "^0.6", + "orchestra/testbench": "^5.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^8.5.1 || ^9.0" }, "type": "library", "extra": { @@ -8699,7 +9006,7 @@ "type": "patreon" } ], - "time": "2021-02-11T09:01:42+00:00" + "time": "2020-10-29T15:12:23+00:00" }, { "name": "phar-io/manifest", @@ -9080,35 +9387,39 @@ }, { "name": "phpspec/phpspec", - "version": "4.3.3", + "version": "7.3.0", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "9812b081a11c309128efa092ae5f128733170776" + "reference": "7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/9812b081a11c309128efa092ae5f128733170776", - "reference": "9812b081a11c309128efa092ae5f128733170776", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133", + "reference": "7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.5", "ext-tokenizer": "*", - "php": "^7.1, <7.4", + "php": "^7.3 || 8.0.* || 8.1.* || 8.2.*", "phpspec/php-diff": "^1.0.0", - "phpspec/prophecy": "^1.7", - "sebastian/exporter": "^1.0 || ^2.0 || ^3.0", - "symfony/console": "^3.4 || ^4.0", - "symfony/event-dispatcher": "^3.4 || ^4.0", - "symfony/finder": "^3.4 || ^4.0", - "symfony/process": "^3.4 || ^4.0", - "symfony/yaml": "^3.4 || ^4.0" + "phpspec/prophecy": "^1.9", + "sebastian/exporter": "^3.0 || ^4.0", + "symfony/console": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/yaml": "^3.4 || ^4.4 || ^5.0 || ^6.0" + }, + "conflict": { + "sebastian/comparator": "<1.2.4" }, "require-dev": { "behat/behat": "^3.3", - "phpunit/phpunit": "^5.7 || ^6.0", - "symfony/filesystem": "^3.4 || ^4.0" + "phpunit/phpunit": "^8.0 || ^9.0", + "symfony/filesystem": "^3.4 || ^4.0 || ^5.0 || ^6.0", + "vimeo/psalm": "^4.3" }, "suggest": { "phpspec/nyan-formatters": "Adds Nyan formatters" @@ -9119,7 +9430,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1.x-dev" + "dev-main": "7.3.x-dev" } }, "autoload": { @@ -9159,9 +9470,9 @@ ], "support": { "issues": "https://github.com/phpspec/phpspec/issues", - "source": "https://github.com/phpspec/phpspec/tree/4.3.3" + "source": "https://github.com/phpspec/phpspec/tree/7.3.0" }, - "time": "2019-08-05T08:53:27+00:00" + "time": "2022-12-14T16:15:59+00:00" }, { "name": "phpspec/prophecy", @@ -9232,40 +9543,44 @@ }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "version": "9.2.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": ">=7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.3 || ^4.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.14", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -9293,7 +9608,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" }, "funding": [ { @@ -9301,32 +9616,32 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2022-12-28T12:41:10+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -9353,7 +9668,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -9361,26 +9676,97 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -9404,34 +9790,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -9457,7 +9849,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -9465,80 +9857,20 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "time": "2020-08-04T08:28:15+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "8.5.31", + "version": "9.5.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e" + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33c126b09a42de5c99e5e8032b54e8221264a74e", - "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", "shasum": "" }, "require": { @@ -9549,28 +9881,30 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", + "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -9578,10 +9912,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -9606,7 +9943,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.31" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" }, "funding": [ { @@ -9622,110 +9959,144 @@ "type": "tidelift" } ], - "time": "2022-10-28T05:57:37+00:00" + "time": "2022-12-09T07:31:23+00:00" }, { - "name": "scrivo/highlight.php", - "version": "v9.18.1.10", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/scrivo/highlight.php.git", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=5.4" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.7", - "sabberworm/php-css-parser": "^8.3", - "symfony/finder": "^2.8|^3.4|^5.4", - "symfony/var-dumper": "^2.8|^3.4|^5.4" - }, - "suggest": { - "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords" + "phpunit/phpunit": "^9.3" }, "type": "library", - "autoload": { - "files": [ - "HighlightUtilities/functions.php" - ], - "psr-0": { - "Highlight\\": "", - "HighlightUtilities\\": "" + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Geert Bergman", - "homepage": "http://www.scrivo.org/", - "role": "Project Author" - }, - { - "name": "Vladimir Jimenez", - "homepage": "https://allejo.io", - "role": "Maintainer" - }, - { - "name": "Martin Folkers", - "homepage": "https://twobrain.io", - "role": "Contributor" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", - "keywords": [ - "code", - "highlight", - "highlight.js", - "highlight.php", - "syntax" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/scrivo/highlight.php/issues", - "source": "https://github.com/scrivo/highlight.php" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { - "url": "https://github.com/allejo", + "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2022-12-17T21:53:22+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -9747,7 +10118,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -9755,34 +10126,34 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.5", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -9821,7 +10192,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -9829,33 +10200,90 @@ "type": "github" } ], - "time": "2022-09-14T12:31:48+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.3", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -9887,7 +10315,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -9895,27 +10323,27 @@ "type": "github" } ], - "time": "2020-11-30T07:59:04+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -9923,7 +10351,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -9950,7 +10378,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -9958,34 +10386,34 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -10020,14 +10448,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -10035,30 +10463,30 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.2", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -10066,7 +10494,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -10091,7 +10519,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -10099,34 +10527,91 @@ "type": "github" } ], - "time": "2022-02-10T06:55:38+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -10148,7 +10633,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -10156,32 +10641,32 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -10203,7 +10688,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -10211,32 +10696,32 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -10266,7 +10751,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { @@ -10274,29 +10759,32 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -10318,7 +10806,7 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -10326,32 +10814,32 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", - "version": "1.1.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -10374,7 +10862,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -10382,29 +10870,29 @@ "type": "github" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -10427,26 +10915,33 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.45", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5" + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4b8daf6c56801e6d664224261cb100b73edc78a5", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -10456,7 +10951,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -10487,7 +10982,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.45" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.17" }, "funding": [ { @@ -10503,35 +10998,39 @@ "type": "tidelift" } ], - "time": "2022-08-03T12:57:57+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.45", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" + "reference": "edcdc11498108f8967fe95118a7ec8624b94760e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/edcdc11498108f8967fe95118a7ec8624b94760e", + "reference": "edcdc11498108f8967fe95118a7ec8624b94760e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -10558,7 +11057,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.45" + "source": "https://github.com/symfony/yaml/tree/v5.4.17" }, "funding": [ { @@ -10574,7 +11073,7 @@ "type": "tidelift" } ], - "time": "2022-08-02T15:47:23+00:00" + "time": "2022-12-13T09:57:04+00:00" }, { "name": "theseer/tokenizer", @@ -10690,13 +11189,12 @@ "stability-flags": { "neitanod/forceutf8": 20, "maatwebsite/excel": 20, - "unisharp/laravel-ckeditor": 20, "codacy/coverage": 20 }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.2" + "php": "^7.2.5|^8.0" }, "platform-dev": [], "plugin-api-version": "2.3.0" diff --git a/config/app.php b/config/app.php index f6869b888..78dfc1ad3 100644 --- a/config/app.php +++ b/config/app.php @@ -53,7 +53,7 @@ return [ | your application so that it is used when running Artisan tasks. | */ - 'url' => env('APP_URL'), + 'url' => env('APP_URL', 'http://localhost'), /* |-------------------------------------------------------------------------- | Application Timezone @@ -173,8 +173,6 @@ return [ \Torann\GeoIP\GeoIPServiceProvider::class, Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider::class, Intervention\Image\ImageServiceProvider::class, - Unisharp\Ckeditor\ServiceProvider::class, - LaravelFCM\FCMServiceProvider::class, //Collective\Bus\BusServiceProvider::class, Maatwebsite\Excel\ExcelServiceProvider::class, Laravel\Socialite\SocialiteServiceProvider::class, diff --git a/vendor/asm89/stack-cors/LICENSE b/vendor/asm89/stack-cors/LICENSE new file mode 100644 index 000000000..d9f2067d6 --- /dev/null +++ b/vendor/asm89/stack-cors/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013-2017 Alexander + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/asm89/stack-cors/README.md b/vendor/asm89/stack-cors/README.md new file mode 100644 index 000000000..ee5f2957e --- /dev/null +++ b/vendor/asm89/stack-cors/README.md @@ -0,0 +1,83 @@ +# Stack/Cors + +Library and middleware enabling cross-origin resource sharing for your +http-{foundation,kernel} using application. It attempts to implement the +[W3C Recommendation] for cross-origin resource sharing. + +[W3C Recommendation]: http://www.w3.org/TR/cors/ + +Build status: ![.github/workflows/run-tests.yml](https://github.com/asm89/stack-cors/workflows/.github/workflows/run-tests.yml/badge.svg) + +## Installation + +Require `asm89/stack-cors` using composer. + +## Usage + +This package can be used as a library or as [stack middleware]. + +[stack middleware]: http://stackphp.com/ + +### Options + +| Option | Description | Default value | +|------------------------|------------------------------------------------------------|---------------| +| allowedMethods | Matches the request method. | `[]` | +| allowedOrigins | Matches the request origin. | `[]` | +| allowedOriginsPatterns | Matches the request origin with `preg_match`. | `[]` | +| allowedHeaders | Sets the Access-Control-Allow-Headers response header. | `[]` | +| exposedHeaders | Sets the Access-Control-Expose-Headers response header. | `false` | +| maxAge | Sets the Access-Control-Max-Age response header. | `false` | +| supportsCredentials | Sets the Access-Control-Allow-Credentials header. | `false` | + +The _allowedMethods_ and _allowedHeaders_ options are case-insensitive. + +You don't need to provide both _allowedOrigins_ and _allowedOriginsPatterns_. If one of the strings passed matches, it is considered a valid origin. + +If `['*']` is provided to _allowedMethods_, _allowedOrigins_ or _allowedHeaders_ all methods / origins / headers are allowed. + +### Example: using the library + +```php + ['x-allowed-header', 'x-other-allowed-header'], + 'allowedMethods' => ['DELETE', 'GET', 'POST', 'PUT'], + 'allowedOrigins' => ['http://localhost'], + 'allowedOriginsPatterns' => ['/localhost:\d/'], + 'exposedHeaders' => false, + 'maxAge' => false, + 'supportsCredentials' => false, +]); + +$cors->addActualRequestHeaders(Response $response, $origin); +$cors->handlePreflightRequest(Request $request); +$cors->isActualRequestAllowed(Request $request); +$cors->isCorsRequest(Request $request); +$cors->isPreflightRequest(Request $request); +``` + +## Example: using the stack middleware + +```php + ['x-allowed-header', 'x-other-allowed-header'], + // you can use ['*'] to allow any methods + 'allowedMethods' => ['DELETE', 'GET', 'POST', 'PUT'], + // you can use ['*'] to allow requests from any origin + 'allowedOrigins' => ['localhost'], + // you can enter regexes that are matched to the origin request header + 'allowedOriginsPatterns' => ['/localhost:\d/'], + 'exposedHeaders' => false, + 'maxAge' => false, + 'supportsCredentials' => false, +]); +``` diff --git a/vendor/asm89/stack-cors/composer.json b/vendor/asm89/stack-cors/composer.json new file mode 100644 index 000000000..5292e6e5d --- /dev/null +++ b/vendor/asm89/stack-cors/composer.json @@ -0,0 +1,43 @@ +{ + "name": "asm89/stack-cors", + "description": "Cross-origin resource sharing library and stack middleware", + "keywords": ["stack", "cors"], + "homepage": "https://github.com/asm89/stack-cors", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Asm89\\Stack\\Tests\\": "tests/" + } + }, + "scripts": { + "test": "phpunit", + "check-style": "phpcs -p --standard=PSR12 --exclude=Generic.Files.LineLength --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src", + "fix-style": "phpcbf -p --standard=PSR12 --exclude=Generic.Files.LineLength --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src" + }, + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + } +} diff --git a/vendor/asm89/stack-cors/src/Cors.php b/vendor/asm89/stack-cors/src/Cors.php new file mode 100644 index 000000000..ded903e5b --- /dev/null +++ b/vendor/asm89/stack-cors/src/Cors.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Asm89\Stack; + +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; + +class Cors implements HttpKernelInterface +{ + /** + * @var \Symfony\Component\HttpKernel\HttpKernelInterface + */ + private $app; + + /** + * @var \Asm89\Stack\CorsService + */ + private $cors; + + private $defaultOptions = [ + 'allowedHeaders' => [], + 'allowedMethods' => [], + 'allowedOrigins' => [], + 'allowedOriginsPatterns' => [], + 'exposedHeaders' => [], + 'maxAge' => 0, + 'supportsCredentials' => false, + ]; + + public function __construct(HttpKernelInterface $app, array $options = []) + { + $this->app = $app; + $this->cors = new CorsService(array_merge($this->defaultOptions, $options)); + } + + public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): Response + { + if ($this->cors->isPreflightRequest($request)) { + $response = $this->cors->handlePreflightRequest($request); + return $this->cors->varyHeader($response, 'Access-Control-Request-Method'); + } + + $response = $this->app->handle($request, $type, $catch); + + if ($request->getMethod() === 'OPTIONS') { + $this->cors->varyHeader($response, 'Access-Control-Request-Method'); + } + + return $this->cors->addActualRequestHeaders($response, $request); + } +} diff --git a/vendor/asm89/stack-cors/src/CorsService.php b/vendor/asm89/stack-cors/src/CorsService.php new file mode 100644 index 000000000..b8c3de9d7 --- /dev/null +++ b/vendor/asm89/stack-cors/src/CorsService.php @@ -0,0 +1,225 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Asm89\Stack; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +class CorsService +{ + private $options; + + public function __construct(array $options = []) + { + $this->options = $this->normalizeOptions($options); + } + + private function normalizeOptions(array $options = []): array + { + $options += [ + 'allowedOrigins' => [], + 'allowedOriginsPatterns' => [], + 'supportsCredentials' => false, + 'allowedHeaders' => [], + 'exposedHeaders' => [], + 'allowedMethods' => [], + 'maxAge' => 0, + ]; + + // normalize array('*') to true + if (in_array('*', $options['allowedOrigins'])) { + $options['allowedOrigins'] = true; + } + if (in_array('*', $options['allowedHeaders'])) { + $options['allowedHeaders'] = true; + } else { + $options['allowedHeaders'] = array_map('strtolower', $options['allowedHeaders']); + } + + if (in_array('*', $options['allowedMethods'])) { + $options['allowedMethods'] = true; + } else { + $options['allowedMethods'] = array_map('strtoupper', $options['allowedMethods']); + } + + return $options; + } + + /** + * @deprecated use isOriginAllowed + */ + public function isActualRequestAllowed(Request $request): bool + { + return $this->isOriginAllowed($request); + } + + public function isCorsRequest(Request $request): bool + { + return $request->headers->has('Origin'); + } + + public function isPreflightRequest(Request $request): bool + { + return $request->getMethod() === 'OPTIONS' && $request->headers->has('Access-Control-Request-Method'); + } + + public function handlePreflightRequest(Request $request): Response + { + $response = new Response(); + + $response->setStatusCode(204); + + return $this->addPreflightRequestHeaders($response, $request); + } + + public function addPreflightRequestHeaders(Response $response, Request $request): Response + { + $this->configureAllowedOrigin($response, $request); + + if ($response->headers->has('Access-Control-Allow-Origin')) { + $this->configureAllowCredentials($response, $request); + + $this->configureAllowedMethods($response, $request); + + $this->configureAllowedHeaders($response, $request); + + $this->configureMaxAge($response, $request); + } + + return $response; + } + + public function isOriginAllowed(Request $request): bool + { + if ($this->options['allowedOrigins'] === true) { + return true; + } + + if (!$request->headers->has('Origin')) { + return false; + } + + $origin = $request->headers->get('Origin'); + + if (in_array($origin, $this->options['allowedOrigins'])) { + return true; + } + + foreach ($this->options['allowedOriginsPatterns'] as $pattern) { + if (preg_match($pattern, $origin)) { + return true; + } + } + + return false; + } + + public function addActualRequestHeaders(Response $response, Request $request): Response + { + $this->configureAllowedOrigin($response, $request); + + if ($response->headers->has('Access-Control-Allow-Origin')) { + $this->configureAllowCredentials($response, $request); + + $this->configureExposedHeaders($response, $request); + } + + return $response; + } + + private function configureAllowedOrigin(Response $response, Request $request) + { + if ($this->options['allowedOrigins'] === true && !$this->options['supportsCredentials']) { + // Safe+cacheable, allow everything + $response->headers->set('Access-Control-Allow-Origin', '*'); + } elseif ($this->isSingleOriginAllowed()) { + // Single origins can be safely set + $response->headers->set('Access-Control-Allow-Origin', array_values($this->options['allowedOrigins'])[0]); + } else { + // For dynamic headers, set the requested Origin header when set and allowed + if ($this->isCorsRequest($request) && $this->isOriginAllowed($request)) { + $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); + } + + $this->varyHeader($response, 'Origin'); + } + } + + private function isSingleOriginAllowed(): bool + { + if ($this->options['allowedOrigins'] === true || !empty($this->options['allowedOriginsPatterns'])) { + return false; + } + + return count($this->options['allowedOrigins']) === 1; + } + + private function configureAllowedMethods(Response $response, Request $request) + { + if ($this->options['allowedMethods'] === true) { + $allowMethods = strtoupper($request->headers->get('Access-Control-Request-Method')); + $this->varyHeader($response, 'Access-Control-Request-Method'); + } else { + $allowMethods = implode(', ', $this->options['allowedMethods']); + } + + $response->headers->set('Access-Control-Allow-Methods', $allowMethods); + } + + private function configureAllowedHeaders(Response $response, Request $request) + { + if ($this->options['allowedHeaders'] === true) { + $allowHeaders = $request->headers->get('Access-Control-Request-Headers'); + $this->varyHeader($response, 'Access-Control-Request-Headers'); + } else { + $allowHeaders = implode(', ', $this->options['allowedHeaders']); + } + $response->headers->set('Access-Control-Allow-Headers', $allowHeaders); + } + + private function configureAllowCredentials(Response $response, Request $request) + { + if ($this->options['supportsCredentials']) { + $response->headers->set('Access-Control-Allow-Credentials', 'true'); + } + } + + private function configureExposedHeaders(Response $response, Request $request) + { + if ($this->options['exposedHeaders']) { + $response->headers->set('Access-Control-Expose-Headers', implode(', ', $this->options['exposedHeaders'])); + } + } + + private function configureMaxAge(Response $response, Request $request) + { + if ($this->options['maxAge'] !== null) { + $response->headers->set('Access-Control-Max-Age', (int) $this->options['maxAge']); + } + } + + public function varyHeader(Response $response, $header): Response + { + if (!$response->headers->has('Vary')) { + $response->headers->set('Vary', $header); + } elseif (!in_array($header, explode(', ', $response->headers->get('Vary')))) { + $response->headers->set('Vary', $response->headers->get('Vary') . ', ' . $header); + } + + return $response; + } + + private function isSameHost(Request $request): bool + { + return $request->headers->get('Origin') === $request->getSchemeAndHttpHost(); + } +} diff --git a/vendor/autoload.php b/vendor/autoload.php index 9d318e847..fcaa5cdd8 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a::getLoader(); +return ComposerAutoloaderInit9da6744efcb5435630815fb416a6752c::getLoader(); diff --git a/vendor/bin/patch-type-declarations b/vendor/bin/patch-type-declarations new file mode 100755 index 000000000..36cc892e4 --- /dev/null +++ b/vendor/bin/patch-type-declarations @@ -0,0 +1,117 @@ +#!/usr/bin/env php +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations'); + exit(0); + } +} + +include __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations'; diff --git a/vendor/bin/yaml-lint b/vendor/bin/yaml-lint new file mode 100755 index 000000000..9e7a09c9a --- /dev/null +++ b/vendor/bin/yaml-lint @@ -0,0 +1,117 @@ +#!/usr/bin/env php +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/yaml/Resources/bin/yaml-lint'); + exit(0); + } +} + +include __DIR__ . '/..'.'/symfony/yaml/Resources/bin/yaml-lint'; diff --git a/vendor/brick/math/CHANGELOG.md b/vendor/brick/math/CHANGELOG.md new file mode 100644 index 000000000..03c3d824d --- /dev/null +++ b/vendor/brick/math/CHANGELOG.md @@ -0,0 +1,415 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [0.9.3](https://github.com/brick/math/releases/tag/0.9.3) - 2021-08-15 + +🚀 **Compatibility with PHP 8.1** + +- Support for custom object serialization; this removes a warning on PHP 8.1 due to the `Serializable` interface being deprecated (thanks @TRowbotham) + +## [0.9.2](https://github.com/brick/math/releases/tag/0.9.2) - 2021-01-20 + +🐛 **Bug fix** + +- Incorrect results could be returned when using the BCMath calculator, with a default scale set with `bcscale()`, on PHP >= 7.2 (#55). + +## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19 + +✨ New features + +- `BigInteger::not()` returns the bitwise `NOT` value + +🐛 **Bug fixes** + +- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers +- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available + +## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18 + +👌 **Improvements** + +- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal` + +💥 **Breaking changes** + +- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead +- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead + +## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19 + +🐛 **Bug fix** + +- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers +- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available + +## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18 + +🚑 **Critical fix** + +- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle. + +✨ **New features** + +- `BigInteger::modInverse()` calculates a modular multiplicative inverse +- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string +- `BigInteger::toBytes()` converts a `BigInteger` to a byte string +- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length +- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds + +💩 **Deprecations** + +- `BigInteger::powerMod()` is now deprecated in favour of `modPow()` + +## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15 + +🐛 **Fixes** + +- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable` + +⚡️ **Optimizations** + +- additional optimization in `BigInteger::remainder()` + +## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18 + +✨ **New features** + +- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit + +## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16 + +✨ **New features** + +- `BigInteger::isEven()` tests whether the number is even +- `BigInteger::isOdd()` tests whether the number is odd +- `BigInteger::testBit()` tests if a bit is set +- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number + +## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03 + +🛠️ **Maintenance release** + +Classes are now annotated for better static analysis with [psalm](https://psalm.dev/). + +This is a maintenance release: no bug fixes, no new features, no breaking changes. + +## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23 + +✨ **New feature** + +`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto. + +## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21 + +✨ **New feature** + +`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different. + +## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08 + +⚡️ **Performance improvements** + +A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24. + +## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25 + +🐛 **Bug fixes** + +- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected) + +✨ **New features** + +- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet +- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number + +These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation. + +💩 **Deprecations** + +- `BigInteger::parse()` is now deprecated in favour of `fromBase()` + +`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences: + +- the `$base` parameter is required, it does not default to `10` +- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed + +## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20 + +**Improvements** + +- Safer conversion from `float` when using custom locales +- **Much faster** `NativeCalculator` implementation 🚀 + +You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before. + +## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11 + +**New method** + +`BigNumber::sum()` returns the sum of one or more numbers. + +## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12 + +**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20). + +Thanks @manowark 👍 + +## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07 + +**New method** + +`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale. + +## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06 + +**New method** + +`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k). + +**New exception** + +`NegativeNumberException` is thrown when calling `sqrt()` on a negative number. + +## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08 + +**Performance update** + +- Further improvement of `toInt()` performance +- `NativeCalculator` can now perform some multiplications more efficiently + +## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07 + +Performance optimization of `toInt()` methods. + +## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13 + +**Breaking changes** + +The following deprecated methods have been removed. Use the new method name instead: + +| Method removed | Replacement method | +| --- | --- | +| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` | +| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` | + +--- + +**New features** + +`BigInteger` has been augmented with 5 new methods for bitwise operations: + +| New method | Description | +| --- | --- | +| `and()` | performs a bitwise `AND` operation on two numbers | +| `or()` | performs a bitwise `OR` operation on two numbers | +| `xor()` | performs a bitwise `XOR` operation on two numbers | +| `shiftedLeft()` | returns the number shifted left by a number of bits | +| `shiftedRight()` | returns the number shifted right by a number of bits | + +Thanks to @DASPRiD 👍 + +## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20 + +**New method:** `BigDecimal::hasNonZeroFractionalPart()` + +**Renamed/deprecated methods:** + +- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated +- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated + +## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21 + +**Performance update** + +`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available. + +## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01 + +This is a maintenance release, no code has been changed. + +- When installed with `--no-dev`, the autoloader does not autoload tests anymore +- Tests and other files unnecessary for production are excluded from the dist package + +This will help make installations more compact. + +## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02 + +Methods renamed: + +- `BigNumber:sign()` has been renamed to `getSign()` +- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()` +- `BigDecimal::scale()` has been renamed to `getScale()` +- `BigDecimal::integral()` has been renamed to `getIntegral()` +- `BigDecimal::fraction()` has been renamed to `getFraction()` +- `BigRational::numerator()` has been renamed to `getNumerator()` +- `BigRational::denominator()` has been renamed to `getDenominator()` + +Classes renamed: + +- `ArithmeticException` has been renamed to `MathException` + +## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02 + +The base class for all exceptions is now `MathException`. +`ArithmeticException` has been deprecated, and will be removed in 0.7.0. + +## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02 + +A number of methods have been renamed: + +- `BigNumber:sign()` is deprecated; use `getSign()` instead +- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead +- `BigDecimal::scale()` is deprecated; use `getScale()` instead +- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead +- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead +- `BigRational::numerator()` is deprecated; use `getNumerator()` instead +- `BigRational::denominator()` is deprecated; use `getDenominator()` instead + +The old methods will be removed in version 0.7.0. + +## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25 + +- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5` +- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead +- Method `BigNumber::toInteger()` has been renamed to `toInt()` + +## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17 + +`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php). +The JSON output is always a string. + +## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31 + +This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. + +## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06 + +The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again. + +## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05 + +**New method: `BigNumber::toScale()`** + +This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary. + +## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04 + +**New features** +- Common `BigNumber` interface for all classes, with the following methods: + - `sign()` and derived methods (`isZero()`, `isPositive()`, ...) + - `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types + - `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods + - `toInteger()` and `toFloat()` conversion methods to native types +- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type +- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits +- New methods: `BigRational::quotient()` and `remainder()` +- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException` +- Factory methods `zero()`, `one()` and `ten()` available in all classes +- Rounding mode reintroduced in `BigInteger::dividedBy()` + +This release also comes with many performance improvements. + +--- + +**Breaking changes** +- `BigInteger`: + - `getSign()` is renamed to `sign()` + - `toString()` is renamed to `toBase()` + - `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour +- `BigDecimal`: + - `getSign()` is renamed to `sign()` + - `getUnscaledValue()` is renamed to `unscaledValue()` + - `getScale()` is renamed to `scale()` + - `getIntegral()` is renamed to `integral()` + - `getFraction()` is renamed to `fraction()` + - `divideAndRemainder()` is renamed to `quotientAndRemainder()` + - `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode + - `toBigInteger()` does not accept a `$roundingMode` parameter any more + - `toBigRational()` does not simplify the fraction any more; explicitly add `->simplified()` to get the previous behaviour +- `BigRational`: + - `getSign()` is renamed to `sign()` + - `getNumerator()` is renamed to `numerator()` + - `getDenominator()` is renamed to `denominator()` + - `of()` is renamed to `nd()`, while `parse()` is renamed to `of()` +- Miscellaneous: + - `ArithmeticException` is moved to an `Exception\` sub-namespace + - `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException` + +## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31 + +Backport of two bug fixes from the 0.5 branch: +- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected +- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. + +## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16 + +New method: `BigDecimal::stripTrailingZeros()` + +## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12 + +Introducing a `BigRational` class, to perform calculations on fractions of any size. + +## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12 + +Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`. + +`BigInteger::dividedBy()` now always returns the quotient of the division. + +## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31 + +Backport of two bug fixes from the 0.5 branch: + +- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected +- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. + +## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11 + +New methods: +- `BigInteger::remainder()` returns the remainder of a division only +- `BigInteger::gcd()` returns the greatest common divisor of two numbers + +## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07 + +Fix `toString()` not handling negative numbers. + +## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07 + +`BigInteger` and `BigDecimal` now have a `getSign()` method that returns: +- `-1` if the number is negative +- `0` if the number is zero +- `1` if the number is positive + +## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05 + +Minor performance improvements + +## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04 + +The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`. + +## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04 + +Stronger immutability guarantee for `BigInteger` and `BigDecimal`. + +So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that. + +## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02 + +Added `BigDecimal::divideAndRemainder()` + +## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22 + +- `min()` and `max()` do not accept an `array` any more, but a variable number of parameters +- **minimum PHP version is now 5.6** +- continuous integration with PHP 7 + +## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01 + +- Added `BigInteger::power()` +- Added HHVM support + +## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31 + +First beta release. + diff --git a/vendor/brick/math/LICENSE b/vendor/brick/math/LICENSE new file mode 100644 index 000000000..f9b724f00 --- /dev/null +++ b/vendor/brick/math/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-present Benjamin Morel + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/brick/math/SECURITY.md b/vendor/brick/math/SECURITY.md new file mode 100644 index 000000000..cc8289bb5 --- /dev/null +++ b/vendor/brick/math/SECURITY.md @@ -0,0 +1,17 @@ +# Security Policy + +## Supported Versions + +Only the last two release streams are supported. + +| Version | Supported | +| ------- | ------------------ | +| 0.9.x | :white_check_mark: | +| 0.8.x | :white_check_mark: | +| < 0.8 | :x: | + +## Reporting a Vulnerability + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. diff --git a/vendor/brick/math/composer.json b/vendor/brick/math/composer.json new file mode 100644 index 000000000..ec196632f --- /dev/null +++ b/vendor/brick/math/composer.json @@ -0,0 +1,35 @@ +{ + "name": "brick/math", + "description": "Arbitrary-precision arithmetic library", + "type": "library", + "keywords": [ + "Brick", + "Math", + "Arbitrary-precision", + "Arithmetic", + "BigInteger", + "BigDecimal", + "BigRational", + "Bignum" + ], + "license": "MIT", + "require": { + "php": "^7.1 || ^8.0", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "php-coveralls/php-coveralls": "^2.2", + "vimeo/psalm": "4.9.2" + }, + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Brick\\Math\\Tests\\": "tests/" + } + } +} diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php new file mode 100644 index 000000000..78246500c --- /dev/null +++ b/vendor/brick/math/src/BigDecimal.php @@ -0,0 +1,895 @@ +value = $value; + $this->scale = $scale; + } + + /** + * Creates a BigDecimal of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigDecimal + * + * @throws MathException If the value cannot be converted to a BigDecimal. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigDecimal(); + } + + /** + * Creates a BigDecimal from an unscaled value and a scale. + * + * Example: `(12345, 3)` will result in the BigDecimal `12.345`. + * + * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger. + * @param int $scale The scale of the number, positive or zero. + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale is negative. + * + * @psalm-pure + */ + public static function ofUnscaledValue($value, int $scale = 0) : BigDecimal + { + if ($scale < 0) { + throw new \InvalidArgumentException('The scale cannot be negative.'); + } + + return new BigDecimal((string) BigInteger::of($value), $scale); + } + + /** + * Returns a BigDecimal representing zero, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function zero() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigDecimal('0'); + } + + return $zero; + } + + /** + * Returns a BigDecimal representing one, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function one() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $one + */ + static $one; + + if ($one === null) { + $one = new BigDecimal('1'); + } + + return $one; + } + + /** + * Returns a BigDecimal representing ten, with a scale of zero. + * + * @return BigDecimal + * + * @psalm-pure + */ + public static function ten() : BigDecimal + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigDecimal|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigDecimal('10'); + } + + return $ten; + } + + /** + * Returns the sum of this number and the given one. + * + * The result has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. + */ + public function plus($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0' && $that->scale <= $this->scale) { + return $this; + } + + if ($this->value === '0' && $this->scale <= $that->scale) { + return $that; + } + + [$a, $b] = $this->scaleValues($this, $that); + + $value = Calculator::get()->add($a, $b); + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the difference of this number and the given one. + * + * The result has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. + */ + public function minus($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0' && $that->scale <= $this->scale) { + return $this; + } + + [$a, $b] = $this->scaleValues($this, $that); + + $value = Calculator::get()->sub($a, $b); + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the product of this number and the given one. + * + * The result has a scale of `$this->scale + $that->scale`. + * + * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal. + */ + public function multipliedBy($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '1' && $that->scale === 0) { + return $this; + } + + if ($this->value === '1' && $this->scale === 0) { + return $that; + } + + $value = Calculator::get()->mul($this->value, $that->value); + $scale = $this->scale + $that->scale; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the result of the division of this number by the given one, at the given scale. + * + * @param BigNumber|int|float|string $that The divisor. + * @param int|null $scale The desired scale, or null to use the scale of this number. + * @param int $roundingMode An optional rounding mode. + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale or rounding mode is invalid. + * @throws MathException If the number is invalid, is zero, or rounding was necessary. + */ + public function dividedBy($that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + if ($scale === null) { + $scale = $this->scale; + } elseif ($scale < 0) { + throw new \InvalidArgumentException('Scale cannot be negative.'); + } + + if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) { + return $this; + } + + $p = $this->valueWithMinScale($that->scale + $scale); + $q = $that->valueWithMinScale($this->scale - $scale); + + $result = Calculator::get()->divRound($p, $q, $roundingMode); + + return new BigDecimal($result, $scale); + } + + /** + * Returns the exact result of the division of this number by the given one. + * + * The scale of the result is automatically calculated to fit all the fraction digits. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The result. + * + * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero, + * or the result yields an infinite number of digits. + */ + public function exactlyDividedBy($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + [, $b] = $this->scaleValues($this, $that); + + $d = \rtrim($b, '0'); + $scale = \strlen($b) - \strlen($d); + + $calculator = Calculator::get(); + + foreach ([5, 2] as $prime) { + for (;;) { + $lastDigit = (int) $d[-1]; + + if ($lastDigit % $prime !== 0) { + break; + } + + $d = $calculator->divQ($d, (string) $prime); + $scale++; + } + } + + return $this->dividedBy($that, $scale)->stripTrailingZeros(); + } + + /** + * Returns this number exponentiated to the given value. + * + * The result has a scale of `$this->scale * $exponent`. + * + * @param int $exponent The exponent. + * + * @return BigDecimal The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigDecimal + { + if ($exponent === 0) { + return BigDecimal::one(); + } + + if ($exponent === 1) { + return $this; + } + + if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { + throw new \InvalidArgumentException(\sprintf( + 'The exponent %d is not in the range 0 to %d.', + $exponent, + Calculator::MAX_POWER + )); + } + + return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent); + } + + /** + * Returns the quotient of the division of this number by this given one. + * + * The quotient has a scale of `0`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The quotient. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function quotient($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + $quotient = Calculator::get()->divQ($p, $q); + + return new BigDecimal($quotient, 0); + } + + /** + * Returns the remainder of the division of this number by this given one. + * + * The remainder has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal The remainder. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function remainder($that) : BigDecimal + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + $remainder = Calculator::get()->divR($p, $q); + + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + return new BigDecimal($remainder, $scale); + } + + /** + * Returns the quotient and remainder of the division of this number by the given one. + * + * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. + * + * @return BigDecimal[] An array containing the quotient and the remainder. + * + * @throws MathException If the divisor is not a valid decimal number, or is zero. + */ + public function quotientAndRemainder($that) : array + { + $that = BigDecimal::of($that); + + if ($that->isZero()) { + throw DivisionByZeroException::divisionByZero(); + } + + $p = $this->valueWithMinScale($that->scale); + $q = $that->valueWithMinScale($this->scale); + + [$quotient, $remainder] = Calculator::get()->divQR($p, $q); + + $scale = $this->scale > $that->scale ? $this->scale : $that->scale; + + $quotient = new BigDecimal($quotient, 0); + $remainder = new BigDecimal($remainder, $scale); + + return [$quotient, $remainder]; + } + + /** + * Returns the square root of this number, rounded down to the given number of decimals. + * + * @param int $scale + * + * @return BigDecimal + * + * @throws \InvalidArgumentException If the scale is negative. + * @throws NegativeNumberException If this number is negative. + */ + public function sqrt(int $scale) : BigDecimal + { + if ($scale < 0) { + throw new \InvalidArgumentException('Scale cannot be negative.'); + } + + if ($this->value === '0') { + return new BigDecimal('0', $scale); + } + + if ($this->value[0] === '-') { + throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); + } + + $value = $this->value; + $addDigits = 2 * $scale - $this->scale; + + if ($addDigits > 0) { + // add zeros + $value .= \str_repeat('0', $addDigits); + } elseif ($addDigits < 0) { + // trim digits + if (-$addDigits >= \strlen($this->value)) { + // requesting a scale too low, will always yield a zero result + return new BigDecimal('0', $scale); + } + + $value = \substr($value, 0, $addDigits); + } + + $value = Calculator::get()->sqrt($value); + + return new BigDecimal($value, $scale); + } + + /** + * Returns a copy of this BigDecimal with the decimal point moved $n places to the left. + * + * @param int $n + * + * @return BigDecimal + */ + public function withPointMovedLeft(int $n) : BigDecimal + { + if ($n === 0) { + return $this; + } + + if ($n < 0) { + return $this->withPointMovedRight(-$n); + } + + return new BigDecimal($this->value, $this->scale + $n); + } + + /** + * Returns a copy of this BigDecimal with the decimal point moved $n places to the right. + * + * @param int $n + * + * @return BigDecimal + */ + public function withPointMovedRight(int $n) : BigDecimal + { + if ($n === 0) { + return $this; + } + + if ($n < 0) { + return $this->withPointMovedLeft(-$n); + } + + $value = $this->value; + $scale = $this->scale - $n; + + if ($scale < 0) { + if ($value !== '0') { + $value .= \str_repeat('0', -$scale); + } + $scale = 0; + } + + return new BigDecimal($value, $scale); + } + + /** + * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part. + * + * @return BigDecimal + */ + public function stripTrailingZeros() : BigDecimal + { + if ($this->scale === 0) { + return $this; + } + + $trimmedValue = \rtrim($this->value, '0'); + + if ($trimmedValue === '') { + return BigDecimal::zero(); + } + + $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue); + + if ($trimmableZeros === 0) { + return $this; + } + + if ($trimmableZeros > $this->scale) { + $trimmableZeros = $this->scale; + } + + $value = \substr($this->value, 0, -$trimmableZeros); + $scale = $this->scale - $trimmableZeros; + + return new BigDecimal($value, $scale); + } + + /** + * Returns the absolute value of this number. + * + * @return BigDecimal + */ + public function abs() : BigDecimal + { + return $this->isNegative() ? $this->negated() : $this; + } + + /** + * Returns the negated value of this number. + * + * @return BigDecimal + */ + public function negated() : BigDecimal + { + return new BigDecimal(Calculator::get()->neg($this->value), $this->scale); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + $that = BigNumber::of($that); + + if ($that instanceof BigInteger) { + $that = $that->toBigDecimal(); + } + + if ($that instanceof BigDecimal) { + [$a, $b] = $this->scaleValues($this, $that); + + return Calculator::get()->cmp($a, $b); + } + + return - $that->compareTo($this); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); + } + + /** + * @return BigInteger + */ + public function getUnscaledValue() : BigInteger + { + return BigInteger::create($this->value); + } + + /** + * @return int + */ + public function getScale() : int + { + return $this->scale; + } + + /** + * Returns a string representing the integral part of this decimal number. + * + * Example: `-123.456` => `-123`. + * + * @return string + */ + public function getIntegralPart() : string + { + if ($this->scale === 0) { + return $this->value; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, 0, -$this->scale); + } + + /** + * Returns a string representing the fractional part of this decimal number. + * + * If the scale is zero, an empty string is returned. + * + * Examples: `-123.456` => '456', `123` => ''. + * + * @return string + */ + public function getFractionalPart() : string + { + if ($this->scale === 0) { + return ''; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, -$this->scale); + } + + /** + * Returns whether this decimal number has a non-zero fractional part. + * + * @return bool + */ + public function hasNonZeroFractionalPart() : bool + { + return $this->getFractionalPart() !== \str_repeat('0', $this->scale); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0); + + return BigInteger::create($zeroScaleDecimal->value); + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + $numerator = BigInteger::create($this->value); + $denominator = BigInteger::create('1' . \str_repeat('0', $this->scale)); + + return BigRational::create($numerator, $denominator, false); + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + if ($scale === $this->scale) { + return $this; + } + + return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + return $this->toBigInteger()->toInt(); + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return (float) (string) $this; + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + if ($this->scale === 0) { + return $this->value; + } + + $value = $this->getUnscaledValueWithLeadingZeros(); + + return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale); + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{value: string, scale: int} + */ + public function __serialize(): array + { + return ['value' => $this->value, 'scale' => $this->scale]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{value: string, scale: int} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->value)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $data['value']; + $this->scale = $data['scale']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->value . ':' . $this->scale; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->value)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + [$value, $scale] = \explode(':', $value); + + $this->value = $value; + $this->scale = (int) $scale; + } + + /** + * Puts the internal values of the given decimal numbers on the same scale. + * + * @param BigDecimal $x The first decimal number. + * @param BigDecimal $y The second decimal number. + * + * @return array{string, string} The scaled integer values of $x and $y. + */ + private function scaleValues(BigDecimal $x, BigDecimal $y) : array + { + $a = $x->value; + $b = $y->value; + + if ($b !== '0' && $x->scale > $y->scale) { + $b .= \str_repeat('0', $x->scale - $y->scale); + } elseif ($a !== '0' && $x->scale < $y->scale) { + $a .= \str_repeat('0', $y->scale - $x->scale); + } + + return [$a, $b]; + } + + /** + * @param int $scale + * + * @return string + */ + private function valueWithMinScale(int $scale) : string + { + $value = $this->value; + + if ($this->value !== '0' && $scale > $this->scale) { + $value .= \str_repeat('0', $scale - $this->scale); + } + + return $value; + } + + /** + * Adds leading zeros if necessary to the unscaled value to represent the full decimal number. + * + * @return string + */ + private function getUnscaledValueWithLeadingZeros() : string + { + $value = $this->value; + $targetLength = $this->scale + 1; + $negative = ($value[0] === '-'); + $length = \strlen($value); + + if ($negative) { + $length--; + } + + if ($length >= $targetLength) { + return $this->value; + } + + if ($negative) { + $value = \substr($value, 1); + } + + $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT); + + if ($negative) { + $value = '-' . $value; + } + + return $value; + } +} diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php new file mode 100644 index 000000000..f213fbedb --- /dev/null +++ b/vendor/brick/math/src/BigInteger.php @@ -0,0 +1,1184 @@ +value = $value; + } + + /** + * Creates a BigInteger of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigInteger + * + * @throws MathException If the value cannot be converted to a BigInteger. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigInteger(); + } + + /** + * Creates a number from a string in a given base. + * + * The string can optionally be prefixed with the `+` or `-` sign. + * + * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase + * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not + * differentiate lowercase and uppercase characters, which are considered equal. + * + * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method. + * + * @param string $number The number to convert, in the given base. + * @param int $base The base of the number, between 2 and 36. + * + * @return BigInteger + * + * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base. + * @throws \InvalidArgumentException If the base is out of range. + * + * @psalm-pure + */ + public static function fromBase(string $number, int $base) : BigInteger + { + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + if ($base < 2 || $base > 36) { + throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base)); + } + + if ($number[0] === '-') { + $sign = '-'; + $number = \substr($number, 1); + } elseif ($number[0] === '+') { + $sign = ''; + $number = \substr($number, 1); + } else { + $sign = ''; + } + + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + $number = \ltrim($number, '0'); + + if ($number === '') { + // The result will be the same in any base, avoid further calculation. + return BigInteger::zero(); + } + + if ($number === '1') { + // The result will be the same in any base, avoid further calculation. + return new BigInteger($sign . '1'); + } + + $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/'; + + if (\preg_match($pattern, \strtolower($number), $matches) === 1) { + throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base)); + } + + if ($base === 10) { + // The number is usable as is, avoid further calculation. + return new BigInteger($sign . $number); + } + + $result = Calculator::get()->fromBase($number, $base); + + return new BigInteger($sign . $result); + } + + /** + * Parses a string containing an integer in an arbitrary base, using a custom alphabet. + * + * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers. + * + * @param string $number The number to parse. + * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. + * + * @return BigInteger + * + * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet. + * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars. + * + * @psalm-pure + */ + public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger + { + if ($number === '') { + throw new NumberFormatException('The number cannot be empty.'); + } + + $base = \strlen($alphabet); + + if ($base < 2) { + throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); + } + + $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/'; + + if (\preg_match($pattern, $number, $matches) === 1) { + throw NumberFormatException::charNotInAlphabet($matches[0]); + } + + $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base); + + return new BigInteger($number); + } + + /** + * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger. + * + * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element. + * + * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is + * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the + * resulting BigInteger will always be positive or zero. + * + * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match. + * + * @param string $value The byte string. + * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading + * sign bit. + * + * @return BigInteger + * + * @throws NumberFormatException If the string is empty. + */ + public static function fromBytes(string $value, bool $signed = true) : BigInteger + { + if ($value === '') { + throw new NumberFormatException('The byte string must not be empty.'); + } + + $twosComplement = false; + + if ($signed) { + $x = \ord($value[0]); + + if (($twosComplement = ($x >= 0x80))) { + $value = ~$value; + } + } + + $number = self::fromBase(\bin2hex($value), 16); + + if ($twosComplement) { + return $number->plus(1)->negated(); + } + + return $number; + } + + /** + * Generates a pseudo-random number in the range 0 to 2^numBits - 1. + * + * Using the default random bytes generator, this method is suitable for cryptographic use. + * + * @psalm-param callable(int): string $randomBytesGenerator + * + * @param int $numBits The number of bits. + * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a + * string of random bytes of the given length. Defaults to the + * `random_bytes()` function. + * + * @return BigInteger + * + * @throws \InvalidArgumentException If $numBits is negative. + */ + public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger + { + if ($numBits < 0) { + throw new \InvalidArgumentException('The number of bits cannot be negative.'); + } + + if ($numBits === 0) { + return BigInteger::zero(); + } + + if ($randomBytesGenerator === null) { + $randomBytesGenerator = 'random_bytes'; + } + + $byteLength = \intdiv($numBits - 1, 8) + 1; + + $extraBits = ($byteLength * 8 - $numBits); + $bitmask = \chr(0xFF >> $extraBits); + + $randomBytes = $randomBytesGenerator($byteLength); + $randomBytes[0] = $randomBytes[0] & $bitmask; + + return self::fromBytes($randomBytes, false); + } + + /** + * Generates a pseudo-random number between `$min` and `$max`. + * + * Using the default random bytes generator, this method is suitable for cryptographic use. + * + * @psalm-param (callable(int): string)|null $randomBytesGenerator + * + * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger. + * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger. + * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, + * and returns a string of random bytes of the given length. + * Defaults to the `random_bytes()` function. + * + * @return BigInteger + * + * @throws MathException If one of the parameters cannot be converted to a BigInteger, + * or `$min` is greater than `$max`. + */ + public static function randomRange($min, $max, ?callable $randomBytesGenerator = null) : BigInteger + { + $min = BigInteger::of($min); + $max = BigInteger::of($max); + + if ($min->isGreaterThan($max)) { + throw new MathException('$min cannot be greater than $max.'); + } + + if ($min->isEqualTo($max)) { + return $min; + } + + $diff = $max->minus($min); + $bitLength = $diff->getBitLength(); + + // try until the number is in range (50% to 100% chance of success) + do { + $randomNumber = self::randomBits($bitLength, $randomBytesGenerator); + } while ($randomNumber->isGreaterThan($diff)); + + return $randomNumber->plus($min); + } + + /** + * Returns a BigInteger representing zero. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function zero() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigInteger('0'); + } + + return $zero; + } + + /** + * Returns a BigInteger representing one. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function one() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $one + */ + static $one; + + if ($one === null) { + $one = new BigInteger('1'); + } + + return $one; + } + + /** + * Returns a BigInteger representing ten. + * + * @return BigInteger + * + * @psalm-pure + */ + public static function ten() : BigInteger + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigInteger|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigInteger('10'); + } + + return $ten; + } + + /** + * Returns the sum of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigInteger. + */ + public function plus($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + return $this; + } + + if ($this->value === '0') { + return $that; + } + + $value = Calculator::get()->add($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the difference of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the number is not valid, or is not convertible to a BigInteger. + */ + public function minus($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + return $this; + } + + $value = Calculator::get()->sub($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the product of this number and the given one. + * + * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger. + * + * @return BigInteger The result. + * + * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger. + */ + public function multipliedBy($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($this->value === '1') { + return $that; + } + + $value = Calculator::get()->mul($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the result of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * @param int $roundingMode An optional rounding mode. + * + * @return BigInteger The result. + * + * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero, + * or RoundingMode::UNNECESSARY is used and the remainder is not zero. + */ + public function dividedBy($that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode); + + return new BigInteger($result); + } + + /** + * Returns this number exponentiated to the given value. + * + * @param int $exponent The exponent. + * + * @return BigInteger The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigInteger + { + if ($exponent === 0) { + return BigInteger::one(); + } + + if ($exponent === 1) { + return $this; + } + + if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { + throw new \InvalidArgumentException(\sprintf( + 'The exponent %d is not in the range 0 to %d.', + $exponent, + Calculator::MAX_POWER + )); + } + + return new BigInteger(Calculator::get()->pow($this->value, $exponent)); + } + + /** + * Returns the quotient of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function quotient($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return $this; + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $quotient = Calculator::get()->divQ($this->value, $that->value); + + return new BigInteger($quotient); + } + + /** + * Returns the remainder of the division of this number by the given one. + * + * The remainder, when non-zero, has the same sign as the dividend. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function remainder($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '1') { + return BigInteger::zero(); + } + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + $remainder = Calculator::get()->divR($this->value, $that->value); + + return new BigInteger($remainder); + } + + /** + * Returns the quotient and remainder of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger[] An array containing the quotient and the remainder. + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function quotientAndRemainder($that) : array + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::divisionByZero(); + } + + [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value); + + return [ + new BigInteger($quotient), + new BigInteger($remainder) + ]; + } + + /** + * Returns the modulo of this number and the given one. + * + * The modulo operation yields the same result as the remainder operation when both operands are of the same sign, + * and may differ when signs are different. + * + * The result of the modulo operation, when non-zero, has the same sign as the divisor. + * + * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. + * + * @return BigInteger + * + * @throws DivisionByZeroException If the divisor is zero. + */ + public function mod($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0') { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + $value = Calculator::get()->mod($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the modular multiplicative inverse of this BigInteger modulo $m. + * + * @param BigInteger $m + * + * @return BigInteger + * + * @throws DivisionByZeroException If $m is zero. + * @throws NegativeNumberException If $m is negative. + * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger + * is not relatively prime to m). + */ + public function modInverse(BigInteger $m) : BigInteger + { + if ($m->value === '0') { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + if ($m->isNegative()) { + throw new NegativeNumberException('Modulus must not be negative.'); + } + + if ($m->value === '1') { + return BigInteger::zero(); + } + + $value = Calculator::get()->modInverse($this->value, $m->value); + + if ($value === null) { + throw new MathException('Unable to compute the modInverse for the given modulus.'); + } + + return new BigInteger($value); + } + + /** + * Returns this number raised into power with modulo. + * + * This operation only works on positive numbers. + * + * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero. + * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive. + * + * @return BigInteger + * + * @throws NegativeNumberException If any of the operands is negative. + * @throws DivisionByZeroException If the modulus is zero. + */ + public function modPow($exp, $mod) : BigInteger + { + $exp = BigInteger::of($exp); + $mod = BigInteger::of($mod); + + if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) { + throw new NegativeNumberException('The operands cannot be negative.'); + } + + if ($mod->isZero()) { + throw DivisionByZeroException::modulusMustNotBeZero(); + } + + $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value); + + return new BigInteger($result); + } + + /** + * Returns the greatest common divisor of this number and the given one. + * + * The GCD is always positive, unless both operands are zero, in which case it is zero. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function gcd($that) : BigInteger + { + $that = BigInteger::of($that); + + if ($that->value === '0' && $this->value[0] !== '-') { + return $this; + } + + if ($this->value === '0' && $that->value[0] !== '-') { + return $that; + } + + $value = Calculator::get()->gcd($this->value, $that->value); + + return new BigInteger($value); + } + + /** + * Returns the integer square root number of this number, rounded down. + * + * The result is the largest x such that x² ≤ n. + * + * @return BigInteger + * + * @throws NegativeNumberException If this number is negative. + */ + public function sqrt() : BigInteger + { + if ($this->value[0] === '-') { + throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); + } + + $value = Calculator::get()->sqrt($this->value); + + return new BigInteger($value); + } + + /** + * Returns the absolute value of this number. + * + * @return BigInteger + */ + public function abs() : BigInteger + { + return $this->isNegative() ? $this->negated() : $this; + } + + /** + * Returns the inverse of this number. + * + * @return BigInteger + */ + public function negated() : BigInteger + { + return new BigInteger(Calculator::get()->neg($this->value)); + } + + /** + * Returns the integer bitwise-and combined with another integer. + * + * This method returns a negative BigInteger if and only if both operands are negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function and($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->and($this->value, $that->value)); + } + + /** + * Returns the integer bitwise-or combined with another integer. + * + * This method returns a negative BigInteger if and only if either of the operands is negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function or($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->or($this->value, $that->value)); + } + + /** + * Returns the integer bitwise-xor combined with another integer. + * + * This method returns a negative BigInteger if and only if exactly one of the operands is negative. + * + * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. + * + * @return BigInteger + */ + public function xor($that) : BigInteger + { + $that = BigInteger::of($that); + + return new BigInteger(Calculator::get()->xor($this->value, $that->value)); + } + + /** + * Returns the bitwise-not of this BigInteger. + * + * @return BigInteger + */ + public function not() : BigInteger + { + return $this->negated()->minus(1); + } + + /** + * Returns the integer left shifted by a given number of bits. + * + * @param int $distance The distance to shift. + * + * @return BigInteger + */ + public function shiftedLeft(int $distance) : BigInteger + { + if ($distance === 0) { + return $this; + } + + if ($distance < 0) { + return $this->shiftedRight(- $distance); + } + + return $this->multipliedBy(BigInteger::of(2)->power($distance)); + } + + /** + * Returns the integer right shifted by a given number of bits. + * + * @param int $distance The distance to shift. + * + * @return BigInteger + */ + public function shiftedRight(int $distance) : BigInteger + { + if ($distance === 0) { + return $this; + } + + if ($distance < 0) { + return $this->shiftedLeft(- $distance); + } + + $operand = BigInteger::of(2)->power($distance); + + if ($this->isPositiveOrZero()) { + return $this->quotient($operand); + } + + return $this->dividedBy($operand, RoundingMode::UP); + } + + /** + * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit. + * + * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation. + * Computes (ceil(log2(this < 0 ? -this : this+1))). + * + * @return int + */ + public function getBitLength() : int + { + if ($this->value === '0') { + return 0; + } + + if ($this->isNegative()) { + return $this->abs()->minus(1)->getBitLength(); + } + + return \strlen($this->toBase(2)); + } + + /** + * Returns the index of the rightmost (lowest-order) one bit in this BigInteger. + * + * Returns -1 if this BigInteger contains no one bits. + * + * @return int + */ + public function getLowestSetBit() : int + { + $n = $this; + $bitLength = $this->getBitLength(); + + for ($i = 0; $i <= $bitLength; $i++) { + if ($n->isOdd()) { + return $i; + } + + $n = $n->shiftedRight(1); + } + + return -1; + } + + /** + * Returns whether this number is even. + * + * @return bool + */ + public function isEven() : bool + { + return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true); + } + + /** + * Returns whether this number is odd. + * + * @return bool + */ + public function isOdd() : bool + { + return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true); + } + + /** + * Returns true if and only if the designated bit is set. + * + * Computes ((this & (1<shiftedRight($n)->isOdd(); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + $that = BigNumber::of($that); + + if ($that instanceof BigInteger) { + return Calculator::get()->cmp($this->value, $that->value); + } + + return - $that->compareTo($this); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return BigDecimal::create($this->value); + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + return BigRational::create($this, BigInteger::one(), false); + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + return $this->toBigDecimal()->toScale($scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + $intValue = (int) $this->value; + + if ($this->value !== (string) $intValue) { + throw IntegerOverflowException::toIntOverflow($this); + } + + return $intValue; + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return (float) $this->value; + } + + /** + * Returns a string representation of this number in the given base. + * + * The output will always be lowercase for bases greater than 10. + * + * @param int $base + * + * @return string + * + * @throws \InvalidArgumentException If the base is out of range. + */ + public function toBase(int $base) : string + { + if ($base === 10) { + return $this->value; + } + + if ($base < 2 || $base > 36) { + throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base)); + } + + return Calculator::get()->toBase($this->value, $base); + } + + /** + * Returns a string representation of this number in an arbitrary base with a custom alphabet. + * + * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers; + * a NegativeNumberException will be thrown when attempting to call this method on a negative number. + * + * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. + * + * @return string + * + * @throws NegativeNumberException If this number is negative. + * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars. + */ + public function toArbitraryBase(string $alphabet) : string + { + $base = \strlen($alphabet); + + if ($base < 2) { + throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); + } + + if ($this->value[0] === '-') { + throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.'); + } + + return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base); + } + + /** + * Returns a string of bytes containing the binary representation of this BigInteger. + * + * The string is in big-endian byte-order: the most significant byte is in the zeroth element. + * + * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to + * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the + * number is negative. + * + * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit + * if `$signed` is true. + * + * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match. + * + * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit. + * + * @return string + * + * @throws NegativeNumberException If $signed is false, and the number is negative. + */ + public function toBytes(bool $signed = true) : string + { + if (! $signed && $this->isNegative()) { + throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.'); + } + + $hex = $this->abs()->toBase(16); + + if (\strlen($hex) % 2 !== 0) { + $hex = '0' . $hex; + } + + $baseHexLength = \strlen($hex); + + if ($signed) { + if ($this->isNegative()) { + $bin = \hex2bin($hex); + assert($bin !== false); + + $hex = \bin2hex(~$bin); + $hex = self::fromBase($hex, 16)->plus(1)->toBase(16); + + $hexLength = \strlen($hex); + + if ($hexLength < $baseHexLength) { + $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex; + } + + if ($hex[0] < '8') { + $hex = 'FF' . $hex; + } + } else { + if ($hex[0] >= '8') { + $hex = '00' . $hex; + } + } + } + + return \hex2bin($hex); + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + return $this->value; + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{value: string} + */ + public function __serialize(): array + { + return ['value' => $this->value]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{value: string} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->value)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $data['value']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->value; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->value)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + $this->value = $value; + } +} diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php new file mode 100644 index 000000000..38c8c554e --- /dev/null +++ b/vendor/brick/math/src/BigNumber.php @@ -0,0 +1,572 @@ +[\-\+])?' . + '(?:' . + '(?:' . + '(?[0-9]+)?' . + '(?\.)?' . + '(?[0-9]+)?' . + '(?:[eE](?[\-\+]?[0-9]+))?' . + ')|(?:' . + '(?[0-9]+)' . + '\/?' . + '(?[0-9]+)' . + ')' . + ')' . + '$/'; + + /** + * Creates a BigNumber of the given value. + * + * The concrete return type is dependent on the given value, with the following rules: + * + * - BigNumber instances are returned as is + * - integer numbers are returned as BigInteger + * - floating point numbers are converted to a string then parsed as such + * - strings containing a `/` character are returned as BigRational + * - strings containing a `.` character or using an exponential notation are returned as BigDecimal + * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger + * + * @param BigNumber|int|float|string $value + * + * @return BigNumber + * + * @throws NumberFormatException If the format of the number is not valid. + * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + if ($value instanceof BigNumber) { + return $value; + } + + if (\is_int($value)) { + return new BigInteger((string) $value); + } + + /** @psalm-suppress RedundantCastGivenDocblockType We cannot trust the untyped $value here! */ + $value = \is_float($value) ? self::floatToString($value) : (string) $value; + + $throw = static function() use ($value) : void { + throw new NumberFormatException(\sprintf( + 'The given value "%s" does not represent a valid number.', + $value + )); + }; + + if (\preg_match(self::PARSE_REGEXP, $value, $matches) !== 1) { + $throw(); + } + + $getMatch = static function(string $value) use ($matches) : ?string { + return isset($matches[$value]) && $matches[$value] !== '' ? $matches[$value] : null; + }; + + $sign = $getMatch('sign'); + $numerator = $getMatch('numerator'); + $denominator = $getMatch('denominator'); + + if ($numerator !== null) { + assert($denominator !== null); + + if ($sign !== null) { + $numerator = $sign . $numerator; + } + + $numerator = self::cleanUp($numerator); + $denominator = self::cleanUp($denominator); + + if ($denominator === '0') { + throw DivisionByZeroException::denominatorMustNotBeZero(); + } + + return new BigRational( + new BigInteger($numerator), + new BigInteger($denominator), + false + ); + } + + $point = $getMatch('point'); + $integral = $getMatch('integral'); + $fractional = $getMatch('fractional'); + $exponent = $getMatch('exponent'); + + if ($integral === null && $fractional === null) { + $throw(); + } + + if ($integral === null) { + $integral = '0'; + } + + if ($point !== null || $exponent !== null) { + $fractional = ($fractional ?? ''); + $exponent = ($exponent !== null) ? (int) $exponent : 0; + + if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) { + throw new NumberFormatException('Exponent too large.'); + } + + $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional); + + $scale = \strlen($fractional) - $exponent; + + if ($scale < 0) { + if ($unscaledValue !== '0') { + $unscaledValue .= \str_repeat('0', - $scale); + } + $scale = 0; + } + + return new BigDecimal($unscaledValue, $scale); + } + + $integral = self::cleanUp(($sign ?? '') . $integral); + + return new BigInteger($integral); + } + + /** + * Safely converts float to string, avoiding locale-dependent issues. + * + * @see https://github.com/brick/math/pull/20 + * + * @param float $float + * + * @return string + * + * @psalm-pure + * @psalm-suppress ImpureFunctionCall + */ + private static function floatToString(float $float) : string + { + $currentLocale = \setlocale(LC_NUMERIC, '0'); + \setlocale(LC_NUMERIC, 'C'); + + $result = (string) $float; + + \setlocale(LC_NUMERIC, $currentLocale); + + return $result; + } + + /** + * Proxy method to access protected constructors from sibling classes. + * + * @internal + * + * @param mixed ...$args The arguments to the constructor. + * + * @return static + * + * @psalm-pure + * @psalm-suppress TooManyArguments + * @psalm-suppress UnsafeInstantiation + */ + protected static function create(... $args) : BigNumber + { + return new static(... $args); + } + + /** + * Returns the minimum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The minimum value. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function min(...$values) : BigNumber + { + $min = null; + + foreach ($values as $value) { + $value = static::of($value); + + if ($min === null || $value->isLessThan($min)) { + $min = $value; + } + } + + if ($min === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $min; + } + + /** + * Returns the maximum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The maximum value. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function max(...$values) : BigNumber + { + $max = null; + + foreach ($values as $value) { + $value = static::of($value); + + if ($max === null || $value->isGreaterThan($max)) { + $max = $value; + } + } + + if ($max === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $max; + } + + /** + * Returns the sum of the given values. + * + * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible + * to an instance of the class this method is called on. + * + * @return static The sum. + * + * @throws \InvalidArgumentException If no values are given. + * @throws MathException If an argument is not valid. + * + * @psalm-suppress LessSpecificReturnStatement + * @psalm-suppress MoreSpecificReturnType + * @psalm-pure + */ + public static function sum(...$values) : BigNumber + { + /** @var BigNumber|null $sum */ + $sum = null; + + foreach ($values as $value) { + $value = static::of($value); + + $sum = $sum === null ? $value : self::add($sum, $value); + } + + if ($sum === null) { + throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); + } + + return $sum; + } + + /** + * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException. + * + * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to + * concrete classes the responsibility to perform the addition themselves or delegate it to the given number, + * depending on their ability to perform the operation. This will also require a version bump because we're + * potentially breaking custom BigNumber implementations (if any...) + * + * @param BigNumber $a + * @param BigNumber $b + * + * @return BigNumber + * + * @psalm-pure + */ + private static function add(BigNumber $a, BigNumber $b) : BigNumber + { + if ($a instanceof BigRational) { + return $a->plus($b); + } + + if ($b instanceof BigRational) { + return $b->plus($a); + } + + if ($a instanceof BigDecimal) { + return $a->plus($b); + } + + if ($b instanceof BigDecimal) { + return $b->plus($a); + } + + /** @var BigInteger $a */ + + return $a->plus($b); + } + + /** + * Removes optional leading zeros and + sign from the given number. + * + * @param string $number The number, validated as a non-empty string of digits with optional leading sign. + * + * @return string + * + * @psalm-pure + */ + private static function cleanUp(string $number) : string + { + $firstChar = $number[0]; + + if ($firstChar === '+' || $firstChar === '-') { + $number = \substr($number, 1); + } + + $number = \ltrim($number, '0'); + + if ($number === '') { + return '0'; + } + + if ($firstChar === '-') { + return '-' . $number; + } + + return $number; + } + + /** + * Checks if this number is equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isEqualTo($that) : bool + { + return $this->compareTo($that) === 0; + } + + /** + * Checks if this number is strictly lower than the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isLessThan($that) : bool + { + return $this->compareTo($that) < 0; + } + + /** + * Checks if this number is lower than or equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isLessThanOrEqualTo($that) : bool + { + return $this->compareTo($that) <= 0; + } + + /** + * Checks if this number is strictly greater than the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isGreaterThan($that) : bool + { + return $this->compareTo($that) > 0; + } + + /** + * Checks if this number is greater than or equal to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return bool + */ + public function isGreaterThanOrEqualTo($that) : bool + { + return $this->compareTo($that) >= 0; + } + + /** + * Checks if this number equals zero. + * + * @return bool + */ + public function isZero() : bool + { + return $this->getSign() === 0; + } + + /** + * Checks if this number is strictly negative. + * + * @return bool + */ + public function isNegative() : bool + { + return $this->getSign() < 0; + } + + /** + * Checks if this number is negative or zero. + * + * @return bool + */ + public function isNegativeOrZero() : bool + { + return $this->getSign() <= 0; + } + + /** + * Checks if this number is strictly positive. + * + * @return bool + */ + public function isPositive() : bool + { + return $this->getSign() > 0; + } + + /** + * Checks if this number is positive or zero. + * + * @return bool + */ + public function isPositiveOrZero() : bool + { + return $this->getSign() >= 0; + } + + /** + * Returns the sign of this number. + * + * @return int -1 if the number is negative, 0 if zero, 1 if positive. + */ + abstract public function getSign() : int; + + /** + * Compares this number to the given one. + * + * @param BigNumber|int|float|string $that + * + * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`. + * + * @throws MathException If the number is not valid. + */ + abstract public function compareTo($that) : int; + + /** + * Converts this number to a BigInteger. + * + * @return BigInteger The converted number. + * + * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding. + */ + abstract public function toBigInteger() : BigInteger; + + /** + * Converts this number to a BigDecimal. + * + * @return BigDecimal The converted number. + * + * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding. + */ + abstract public function toBigDecimal() : BigDecimal; + + /** + * Converts this number to a BigRational. + * + * @return BigRational The converted number. + */ + abstract public function toBigRational() : BigRational; + + /** + * Converts this number to a BigDecimal with the given scale, using rounding if necessary. + * + * @param int $scale The scale of the resulting `BigDecimal`. + * @param int $roundingMode A `RoundingMode` constant. + * + * @return BigDecimal + * + * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding. + * This only applies when RoundingMode::UNNECESSARY is used. + */ + abstract public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal; + + /** + * Returns the exact value of this number as a native integer. + * + * If this number cannot be converted to a native integer without losing precision, an exception is thrown. + * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit. + * + * @return int The converted value. + * + * @throws MathException If this number cannot be exactly converted to a native integer. + */ + abstract public function toInt() : int; + + /** + * Returns an approximation of this number as a floating-point value. + * + * Note that this method can discard information as the precision of a floating-point value + * is inherently limited. + * + * If the number is greater than the largest representable floating point number, positive infinity is returned. + * If the number is less than the smallest representable floating point number, negative infinity is returned. + * + * @return float The converted value. + */ + abstract public function toFloat() : float; + + /** + * Returns a string representation of this number. + * + * The output of this method can be parsed by the `of()` factory method; + * this will yield an object equal to this one, without any information loss. + * + * @return string + */ + abstract public function __toString() : string; + + /** + * {@inheritdoc} + */ + public function jsonSerialize() : string + { + return $this->__toString(); + } +} diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php new file mode 100644 index 000000000..bee094f73 --- /dev/null +++ b/vendor/brick/math/src/BigRational.php @@ -0,0 +1,523 @@ +isZero()) { + throw DivisionByZeroException::denominatorMustNotBeZero(); + } + + if ($denominator->isNegative()) { + $numerator = $numerator->negated(); + $denominator = $denominator->negated(); + } + } + + $this->numerator = $numerator; + $this->denominator = $denominator; + } + + /** + * Creates a BigRational of the given value. + * + * @param BigNumber|int|float|string $value + * + * @return BigRational + * + * @throws MathException If the value cannot be converted to a BigRational. + * + * @psalm-pure + */ + public static function of($value) : BigNumber + { + return parent::of($value)->toBigRational(); + } + + /** + * Creates a BigRational out of a numerator and a denominator. + * + * If the denominator is negative, the signs of both the numerator and the denominator + * will be inverted to ensure that the denominator is always positive. + * + * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger. + * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger. + * + * @return BigRational + * + * @throws NumberFormatException If an argument does not represent a valid number. + * @throws RoundingNecessaryException If an argument represents a non-integer number. + * @throws DivisionByZeroException If the denominator is zero. + * + * @psalm-pure + */ + public static function nd($numerator, $denominator) : BigRational + { + $numerator = BigInteger::of($numerator); + $denominator = BigInteger::of($denominator); + + return new BigRational($numerator, $denominator, true); + } + + /** + * Returns a BigRational representing zero. + * + * @return BigRational + * + * @psalm-pure + */ + public static function zero() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $zero + */ + static $zero; + + if ($zero === null) { + $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false); + } + + return $zero; + } + + /** + * Returns a BigRational representing one. + * + * @return BigRational + * + * @psalm-pure + */ + public static function one() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $one + */ + static $one; + + if ($one === null) { + $one = new BigRational(BigInteger::one(), BigInteger::one(), false); + } + + return $one; + } + + /** + * Returns a BigRational representing ten. + * + * @return BigRational + * + * @psalm-pure + */ + public static function ten() : BigRational + { + /** + * @psalm-suppress ImpureStaticVariable + * @var BigRational|null $ten + */ + static $ten; + + if ($ten === null) { + $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false); + } + + return $ten; + } + + /** + * @return BigInteger + */ + public function getNumerator() : BigInteger + { + return $this->numerator; + } + + /** + * @return BigInteger + */ + public function getDenominator() : BigInteger + { + return $this->denominator; + } + + /** + * Returns the quotient of the division of the numerator by the denominator. + * + * @return BigInteger + */ + public function quotient() : BigInteger + { + return $this->numerator->quotient($this->denominator); + } + + /** + * Returns the remainder of the division of the numerator by the denominator. + * + * @return BigInteger + */ + public function remainder() : BigInteger + { + return $this->numerator->remainder($this->denominator); + } + + /** + * Returns the quotient and remainder of the division of the numerator by the denominator. + * + * @return BigInteger[] + */ + public function quotientAndRemainder() : array + { + return $this->numerator->quotientAndRemainder($this->denominator); + } + + /** + * Returns the sum of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to add. + * + * @return BigRational The result. + * + * @throws MathException If the number is not valid. + */ + public function plus($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator)); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the difference of this number and the given one. + * + * @param BigNumber|int|float|string $that The number to subtract. + * + * @return BigRational The result. + * + * @throws MathException If the number is not valid. + */ + public function minus($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator)); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the product of this number and the given one. + * + * @param BigNumber|int|float|string $that The multiplier. + * + * @return BigRational The result. + * + * @throws MathException If the multiplier is not a valid number. + */ + public function multipliedBy($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->numerator); + $denominator = $this->denominator->multipliedBy($that->denominator); + + return new BigRational($numerator, $denominator, false); + } + + /** + * Returns the result of the division of this number by the given one. + * + * @param BigNumber|int|float|string $that The divisor. + * + * @return BigRational The result. + * + * @throws MathException If the divisor is not a valid number, or is zero. + */ + public function dividedBy($that) : BigRational + { + $that = BigRational::of($that); + + $numerator = $this->numerator->multipliedBy($that->denominator); + $denominator = $this->denominator->multipliedBy($that->numerator); + + return new BigRational($numerator, $denominator, true); + } + + /** + * Returns this number exponentiated to the given value. + * + * @param int $exponent The exponent. + * + * @return BigRational The result. + * + * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. + */ + public function power(int $exponent) : BigRational + { + if ($exponent === 0) { + $one = BigInteger::one(); + + return new BigRational($one, $one, false); + } + + if ($exponent === 1) { + return $this; + } + + return new BigRational( + $this->numerator->power($exponent), + $this->denominator->power($exponent), + false + ); + } + + /** + * Returns the reciprocal of this BigRational. + * + * The reciprocal has the numerator and denominator swapped. + * + * @return BigRational + * + * @throws DivisionByZeroException If the numerator is zero. + */ + public function reciprocal() : BigRational + { + return new BigRational($this->denominator, $this->numerator, true); + } + + /** + * Returns the absolute value of this BigRational. + * + * @return BigRational + */ + public function abs() : BigRational + { + return new BigRational($this->numerator->abs(), $this->denominator, false); + } + + /** + * Returns the negated value of this BigRational. + * + * @return BigRational + */ + public function negated() : BigRational + { + return new BigRational($this->numerator->negated(), $this->denominator, false); + } + + /** + * Returns the simplified value of this BigRational. + * + * @return BigRational + */ + public function simplified() : BigRational + { + $gcd = $this->numerator->gcd($this->denominator); + + $numerator = $this->numerator->quotient($gcd); + $denominator = $this->denominator->quotient($gcd); + + return new BigRational($numerator, $denominator, false); + } + + /** + * {@inheritdoc} + */ + public function compareTo($that) : int + { + return $this->minus($that)->getSign(); + } + + /** + * {@inheritdoc} + */ + public function getSign() : int + { + return $this->numerator->getSign(); + } + + /** + * {@inheritdoc} + */ + public function toBigInteger() : BigInteger + { + $simplified = $this->simplified(); + + if (! $simplified->denominator->isEqualTo(1)) { + throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.'); + } + + return $simplified->numerator; + } + + /** + * {@inheritdoc} + */ + public function toBigDecimal() : BigDecimal + { + return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator); + } + + /** + * {@inheritdoc} + */ + public function toBigRational() : BigRational + { + return $this; + } + + /** + * {@inheritdoc} + */ + public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal + { + return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode); + } + + /** + * {@inheritdoc} + */ + public function toInt() : int + { + return $this->toBigInteger()->toInt(); + } + + /** + * {@inheritdoc} + */ + public function toFloat() : float + { + return $this->numerator->toFloat() / $this->denominator->toFloat(); + } + + /** + * {@inheritdoc} + */ + public function __toString() : string + { + $numerator = (string) $this->numerator; + $denominator = (string) $this->denominator; + + if ($denominator === '1') { + return $numerator; + } + + return $this->numerator . '/' . $this->denominator; + } + + /** + * This method is required for serializing the object and SHOULD NOT be accessed directly. + * + * @internal + * + * @return array{numerator: BigInteger, denominator: BigInteger} + */ + public function __serialize(): array + { + return ['numerator' => $this->numerator, 'denominator' => $this->denominator]; + } + + /** + * This method is only here to allow unserializing the object and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param array{numerator: BigInteger, denominator: BigInteger} $data + * + * @return void + * + * @throws \LogicException + */ + public function __unserialize(array $data): void + { + if (isset($this->numerator)) { + throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); + } + + $this->numerator = $data['numerator']; + $this->denominator = $data['denominator']; + } + + /** + * This method is required by interface Serializable and SHOULD NOT be accessed directly. + * + * @internal + * + * @return string + */ + public function serialize() : string + { + return $this->numerator . '/' . $this->denominator; + } + + /** + * This method is only here to implement interface Serializable and cannot be accessed directly. + * + * @internal + * @psalm-suppress RedundantPropertyInitializationCheck + * + * @param string $value + * + * @return void + * + * @throws \LogicException + */ + public function unserialize($value) : void + { + if (isset($this->numerator)) { + throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); + } + + [$numerator, $denominator] = \explode('/', $value); + + $this->numerator = BigInteger::of($numerator); + $this->denominator = BigInteger::of($denominator); + } +} diff --git a/vendor/brick/math/src/Exception/DivisionByZeroException.php b/vendor/brick/math/src/Exception/DivisionByZeroException.php new file mode 100644 index 000000000..a4e443176 --- /dev/null +++ b/vendor/brick/math/src/Exception/DivisionByZeroException.php @@ -0,0 +1,41 @@ + 126) { + $char = \strtoupper(\dechex($ord)); + + if ($ord < 10) { + $char = '0' . $char; + } + } else { + $char = '"' . $char . '"'; + } + + return new self(sprintf('Char %s is not a valid character in the given alphabet.', $char)); + } +} diff --git a/vendor/brick/math/src/Exception/RoundingNecessaryException.php b/vendor/brick/math/src/Exception/RoundingNecessaryException.php new file mode 100644 index 000000000..1c6100563 --- /dev/null +++ b/vendor/brick/math/src/Exception/RoundingNecessaryException.php @@ -0,0 +1,21 @@ +init($a, $b); + + if ($aNeg && ! $bNeg) { + return -1; + } + + if ($bNeg && ! $aNeg) { + return 1; + } + + $aLen = \strlen($aDig); + $bLen = \strlen($bDig); + + if ($aLen < $bLen) { + $result = -1; + } elseif ($aLen > $bLen) { + $result = 1; + } else { + $result = $aDig <=> $bDig; + } + + return $aNeg ? -$result : $result; + } + + /** + * Adds two numbers. + * + * @param string $a The augend. + * @param string $b The addend. + * + * @return string The sum. + */ + abstract public function add(string $a, string $b) : string; + + /** + * Subtracts two numbers. + * + * @param string $a The minuend. + * @param string $b The subtrahend. + * + * @return string The difference. + */ + abstract public function sub(string $a, string $b) : string; + + /** + * Multiplies two numbers. + * + * @param string $a The multiplicand. + * @param string $b The multiplier. + * + * @return string The product. + */ + abstract public function mul(string $a, string $b) : string; + + /** + * Returns the quotient of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string The quotient. + */ + abstract public function divQ(string $a, string $b) : string; + + /** + * Returns the remainder of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string The remainder. + */ + abstract public function divR(string $a, string $b) : string; + + /** + * Returns the quotient and remainder of the division of two numbers. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * + * @return string[] An array containing the quotient and remainder. + */ + abstract public function divQR(string $a, string $b) : array; + + /** + * Exponentiates a number. + * + * @param string $a The base number. + * @param int $e The exponent, validated as an integer between 0 and MAX_POWER. + * + * @return string The power. + */ + abstract public function pow(string $a, int $e) : string; + + /** + * @param string $a + * @param string $b The modulus; must not be zero. + * + * @return string + */ + public function mod(string $a, string $b) : string + { + return $this->divR($this->add($this->divR($a, $b), $b), $b); + } + + /** + * Returns the modular multiplicative inverse of $x modulo $m. + * + * If $x has no multiplicative inverse mod m, this method must return null. + * + * This method can be overridden by the concrete implementation if the underlying library has built-in support. + * + * @param string $x + * @param string $m The modulus; must not be negative or zero. + * + * @return string|null + */ + public function modInverse(string $x, string $m) : ?string + { + if ($m === '1') { + return '0'; + } + + $modVal = $x; + + if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) { + $modVal = $this->mod($x, $m); + } + + $x = '0'; + $y = '0'; + $g = $this->gcdExtended($modVal, $m, $x, $y); + + if ($g !== '1') { + return null; + } + + return $this->mod($this->add($this->mod($x, $m), $m), $m); + } + + /** + * Raises a number into power with modulo. + * + * @param string $base The base number; must be positive or zero. + * @param string $exp The exponent; must be positive or zero. + * @param string $mod The modulus; must be strictly positive. + * + * @return string The power. + */ + abstract public function modPow(string $base, string $exp, string $mod) : string; + + /** + * Returns the greatest common divisor of the two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for GCD calculations. + * + * @param string $a The first number. + * @param string $b The second number. + * + * @return string The GCD, always positive, or zero if both arguments are zero. + */ + public function gcd(string $a, string $b) : string + { + if ($a === '0') { + return $this->abs($b); + } + + if ($b === '0') { + return $this->abs($a); + } + + return $this->gcd($b, $this->divR($a, $b)); + } + + private function gcdExtended(string $a, string $b, string &$x, string &$y) : string + { + if ($a === '0') { + $x = '0'; + $y = '1'; + + return $b; + } + + $x1 = '0'; + $y1 = '0'; + + $gcd = $this->gcdExtended($this->mod($b, $a), $a, $x1, $y1); + + $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1)); + $y = $x1; + + return $gcd; + } + + /** + * Returns the square root of the given number, rounded down. + * + * The result is the largest x such that x² ≤ n. + * The input MUST NOT be negative. + * + * @param string $n The number. + * + * @return string The square root. + */ + abstract public function sqrt(string $n) : string; + + /** + * Converts a number from an arbitrary base. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for base conversion. + * + * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base. + * @param int $base The base of the number, validated from 2 to 36. + * + * @return string The converted number, following the Calculator conventions. + */ + public function fromBase(string $number, int $base) : string + { + return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base); + } + + /** + * Converts a number to an arbitrary base. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for base conversion. + * + * @param string $number The number to convert, following the Calculator conventions. + * @param int $base The base to convert to, validated from 2 to 36. + * + * @return string The converted number, lowercase. + */ + public function toBase(string $number, int $base) : string + { + $negative = ($number[0] === '-'); + + if ($negative) { + $number = \substr($number, 1); + } + + $number = $this->toArbitraryBase($number, self::ALPHABET, $base); + + if ($negative) { + return '-' . $number; + } + + return $number; + } + + /** + * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10. + * + * @param string $number The number to convert, validated as a non-empty string, + * containing only chars in the given alphabet/base. + * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. + * @param int $base The base of the number, validated from 2 to alphabet length. + * + * @return string The number in base 10, following the Calculator conventions. + */ + final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string + { + // remove leading "zeros" + $number = \ltrim($number, $alphabet[0]); + + if ($number === '') { + return '0'; + } + + // optimize for "one" + if ($number === $alphabet[1]) { + return '1'; + } + + $result = '0'; + $power = '1'; + + $base = (string) $base; + + for ($i = \strlen($number) - 1; $i >= 0; $i--) { + $index = \strpos($alphabet, $number[$i]); + + if ($index !== 0) { + $result = $this->add($result, ($index === 1) + ? $power + : $this->mul($power, (string) $index) + ); + } + + if ($i !== 0) { + $power = $this->mul($power, $base); + } + } + + return $result; + } + + /** + * Converts a non-negative number to an arbitrary base using a custom alphabet. + * + * @param string $number The number to convert, positive or zero, following the Calculator conventions. + * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. + * @param int $base The base to convert to, validated from 2 to alphabet length. + * + * @return string The converted number in the given alphabet. + */ + final public function toArbitraryBase(string $number, string $alphabet, int $base) : string + { + if ($number === '0') { + return $alphabet[0]; + } + + $base = (string) $base; + $result = ''; + + while ($number !== '0') { + [$number, $remainder] = $this->divQR($number, $base); + $remainder = (int) $remainder; + + $result .= $alphabet[$remainder]; + } + + return \strrev($result); + } + + /** + * Performs a rounded division. + * + * Rounding is performed when the remainder of the division is not zero. + * + * @param string $a The dividend. + * @param string $b The divisor, must not be zero. + * @param int $roundingMode The rounding mode. + * + * @return string + * + * @throws \InvalidArgumentException If the rounding mode is invalid. + * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary. + */ + final public function divRound(string $a, string $b, int $roundingMode) : string + { + [$quotient, $remainder] = $this->divQR($a, $b); + + $hasDiscardedFraction = ($remainder !== '0'); + $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-'); + + $discardedFractionSign = function() use ($remainder, $b) : int { + $r = $this->abs($this->mul($remainder, '2')); + $b = $this->abs($b); + + return $this->cmp($r, $b); + }; + + $increment = false; + + switch ($roundingMode) { + case RoundingMode::UNNECESSARY: + if ($hasDiscardedFraction) { + throw RoundingNecessaryException::roundingNecessary(); + } + break; + + case RoundingMode::UP: + $increment = $hasDiscardedFraction; + break; + + case RoundingMode::DOWN: + break; + + case RoundingMode::CEILING: + $increment = $hasDiscardedFraction && $isPositiveOrZero; + break; + + case RoundingMode::FLOOR: + $increment = $hasDiscardedFraction && ! $isPositiveOrZero; + break; + + case RoundingMode::HALF_UP: + $increment = $discardedFractionSign() >= 0; + break; + + case RoundingMode::HALF_DOWN: + $increment = $discardedFractionSign() > 0; + break; + + case RoundingMode::HALF_CEILING: + $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0; + break; + + case RoundingMode::HALF_FLOOR: + $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; + break; + + case RoundingMode::HALF_EVEN: + $lastDigit = (int) $quotient[-1]; + $lastDigitIsEven = ($lastDigit % 2 === 0); + $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; + break; + + default: + throw new \InvalidArgumentException('Invalid rounding mode.'); + } + + if ($increment) { + return $this->add($quotient, $isPositiveOrZero ? '1' : '-1'); + } + + return $quotient; + } + + /** + * Calculates bitwise AND of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function and(string $a, string $b) : string + { + return $this->bitwise('and', $a, $b); + } + + /** + * Calculates bitwise OR of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function or(string $a, string $b) : string + { + return $this->bitwise('or', $a, $b); + } + + /** + * Calculates bitwise XOR of two numbers. + * + * This method can be overridden by the concrete implementation if the underlying library + * has built-in support for bitwise operations. + * + * @param string $a + * @param string $b + * + * @return string + */ + public function xor(string $a, string $b) : string + { + return $this->bitwise('xor', $a, $b); + } + + /** + * Performs a bitwise operation on a decimal number. + * + * @param string $operator The operator to use, must be "and", "or" or "xor". + * @param string $a The left operand. + * @param string $b The right operand. + * + * @return string + */ + private function bitwise(string $operator, string $a, string $b) : string + { + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $aBin = $this->toBinary($aDig); + $bBin = $this->toBinary($bDig); + + $aLen = \strlen($aBin); + $bLen = \strlen($bBin); + + if ($aLen > $bLen) { + $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin; + } elseif ($bLen > $aLen) { + $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin; + } + + if ($aNeg) { + $aBin = $this->twosComplement($aBin); + } + if ($bNeg) { + $bBin = $this->twosComplement($bBin); + } + + switch ($operator) { + case 'and': + $value = $aBin & $bBin; + $negative = ($aNeg and $bNeg); + break; + + case 'or': + $value = $aBin | $bBin; + $negative = ($aNeg or $bNeg); + break; + + case 'xor': + $value = $aBin ^ $bBin; + $negative = ($aNeg xor $bNeg); + break; + + // @codeCoverageIgnoreStart + default: + throw new \InvalidArgumentException('Invalid bitwise operator.'); + // @codeCoverageIgnoreEnd + } + + if ($negative) { + $value = $this->twosComplement($value); + } + + $result = $this->toDecimal($value); + + return $negative ? $this->neg($result) : $result; + } + + /** + * @param string $number A positive, binary number. + * + * @return string + */ + private function twosComplement(string $number) : string + { + $xor = \str_repeat("\xff", \strlen($number)); + + $number ^= $xor; + + for ($i = \strlen($number) - 1; $i >= 0; $i--) { + $byte = \ord($number[$i]); + + if (++$byte !== 256) { + $number[$i] = \chr($byte); + break; + } + + $number[$i] = "\x00"; + + if ($i === 0) { + $number = "\x01" . $number; + } + } + + return $number; + } + + /** + * Converts a decimal number to a binary string. + * + * @param string $number The number to convert, positive or zero, only digits. + * + * @return string + */ + private function toBinary(string $number) : string + { + $result = ''; + + while ($number !== '0') { + [$number, $remainder] = $this->divQR($number, '256'); + $result .= \chr((int) $remainder); + } + + return \strrev($result); + } + + /** + * Returns the positive decimal representation of a binary number. + * + * @param string $bytes The bytes representing the number. + * + * @return string + */ + private function toDecimal(string $bytes) : string + { + $result = '0'; + $power = '1'; + + for ($i = \strlen($bytes) - 1; $i >= 0; $i--) { + $index = \ord($bytes[$i]); + + if ($index !== 0) { + $result = $this->add($result, ($index === 1) + ? $power + : $this->mul($power, (string) $index) + ); + } + + if ($i !== 0) { + $power = $this->mul($power, '256'); + } + } + + return $result; + } +} diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php new file mode 100644 index 000000000..6632b378a --- /dev/null +++ b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php @@ -0,0 +1,116 @@ += 0) { + return \bcmod($a, $b, 0); + } + + return \bcmod($a, $b); + } + + /** + * {@inheritdoc} + */ + public function divQR(string $a, string $b) : array + { + $q = \bcdiv($a, $b, 0); + + if (version_compare(PHP_VERSION, '7.2') >= 0) { + $r = \bcmod($a, $b, 0); + } else { + $r = \bcmod($a, $b); + } + + assert($q !== null); + assert($r !== null); + + return [$q, $r]; + } + + /** + * {@inheritdoc} + */ + public function pow(string $a, int $e) : string + { + return \bcpow($a, (string) $e, 0); + } + + /** + * {@inheritdoc} + * + * @psalm-suppress InvalidNullableReturnType + * @psalm-suppress NullableReturnStatement + */ + public function modPow(string $base, string $exp, string $mod) : string + { + return \bcpowmod($base, $exp, $mod, 0); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress NullableReturnStatement + * @psalm-suppress InvalidNullableReturnType + */ + public function sqrt(string $n) : string + { + return \bcsqrt($n, 0); + } +} diff --git a/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php b/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php new file mode 100644 index 000000000..52d18800a --- /dev/null +++ b/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php @@ -0,0 +1,156 @@ +maxDigits = 9; + break; + + case 8: + $this->maxDigits = 18; + break; + + default: + throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.'); + } + } + + /** + * {@inheritdoc} + */ + public function add(string $a, string $b) : string + { + /** + * @psalm-var numeric-string $a + * @psalm-var numeric-string $b + */ + $result = $a + $b; + + if (is_int($result)) { + return (string) $result; + } + + if ($a === '0') { + return $b; + } + + if ($b === '0') { + return $a; + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig); + + if ($aNeg) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * {@inheritdoc} + */ + public function sub(string $a, string $b) : string + { + return $this->add($a, $this->neg($b)); + } + + /** + * {@inheritdoc} + */ + public function mul(string $a, string $b) : string + { + /** + * @psalm-var numeric-string $a + * @psalm-var numeric-string $b + */ + $result = $a * $b; + + if (is_int($result)) { + return (string) $result; + } + + if ($a === '0' || $b === '0') { + return '0'; + } + + if ($a === '1') { + return $b; + } + + if ($b === '1') { + return $a; + } + + if ($a === '-1') { + return $this->neg($b); + } + + if ($b === '-1') { + return $this->neg($a); + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + $result = $this->doMul($aDig, $bDig); + + if ($aNeg !== $bNeg) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * {@inheritdoc} + */ + public function divQ(string $a, string $b) : string + { + return $this->divQR($a, $b)[0]; + } + + /** + * {@inheritdoc} + */ + public function divR(string $a, string $b): string + { + return $this->divQR($a, $b)[1]; + } + + /** + * {@inheritdoc} + */ + public function divQR(string $a, string $b) : array + { + if ($a === '0') { + return ['0', '0']; + } + + if ($a === $b) { + return ['1', '0']; + } + + if ($b === '1') { + return [$a, '0']; + } + + if ($b === '-1') { + return [$this->neg($a), '0']; + } + + /** @psalm-var numeric-string $a */ + $na = $a * 1; // cast to number + + if (is_int($na)) { + /** @psalm-var numeric-string $b */ + $nb = $b * 1; + + if (is_int($nb)) { + // the only division that may overflow is PHP_INT_MIN / -1, + // which cannot happen here as we've already handled a divisor of -1 above. + $r = $na % $nb; + $q = ($na - $r) / $nb; + + assert(is_int($q)); + + return [ + (string) $q, + (string) $r + ]; + } + } + + [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); + + [$q, $r] = $this->doDiv($aDig, $bDig); + + if ($aNeg !== $bNeg) { + $q = $this->neg($q); + } + + if ($aNeg) { + $r = $this->neg($r); + } + + return [$q, $r]; + } + + /** + * {@inheritdoc} + */ + public function pow(string $a, int $e) : string + { + if ($e === 0) { + return '1'; + } + + if ($e === 1) { + return $a; + } + + $odd = $e % 2; + $e -= $odd; + + $aa = $this->mul($a, $a); + + /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */ + $result = $this->pow($aa, $e / 2); + + if ($odd === 1) { + $result = $this->mul($result, $a); + } + + return $result; + } + + /** + * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/ + * + * {@inheritdoc} + */ + public function modPow(string $base, string $exp, string $mod) : string + { + // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0) + if ($base === '0' && $exp === '0' && $mod === '1') { + return '0'; + } + + // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0) + if ($exp === '0' && $mod === '1') { + return '0'; + } + + $x = $base; + + $res = '1'; + + // numbers are positive, so we can use remainder instead of modulo + $x = $this->divR($x, $mod); + + while ($exp !== '0') { + if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd + $res = $this->divR($this->mul($res, $x), $mod); + } + + $exp = $this->divQ($exp, '2'); + $x = $this->divR($this->mul($x, $x), $mod); + } + + return $res; + } + + /** + * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html + * + * {@inheritDoc} + */ + public function sqrt(string $n) : string + { + if ($n === '0') { + return '0'; + } + + // initial approximation + $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1); + + $decreased = false; + + for (;;) { + $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2'); + + if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) { + break; + } + + $decreased = $this->cmp($nx, $x) < 0; + $x = $nx; + } + + return $x; + } + + /** + * Performs the addition of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doAdd(string $a, string $b) : string + { + [$a, $b, $length] = $this->pad($a, $b); + + $carry = 0; + $result = ''; + + for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { + $blockLength = $this->maxDigits; + + if ($i < 0) { + $blockLength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + /** @psalm-var numeric-string $blockA */ + $blockA = \substr($a, $i, $blockLength); + + /** @psalm-var numeric-string $blockB */ + $blockB = \substr($b, $i, $blockLength); + + $sum = (string) ($blockA + $blockB + $carry); + $sumLength = \strlen($sum); + + if ($sumLength > $blockLength) { + $sum = \substr($sum, 1); + $carry = 1; + } else { + if ($sumLength < $blockLength) { + $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; + } + $carry = 0; + } + + $result = $sum . $result; + + if ($i === 0) { + break; + } + } + + if ($carry === 1) { + $result = '1' . $result; + } + + return $result; + } + + /** + * Performs the subtraction of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doSub(string $a, string $b) : string + { + if ($a === $b) { + return '0'; + } + + // Ensure that we always subtract to a positive result: biggest minus smallest. + $cmp = $this->doCmp($a, $b); + + $invert = ($cmp === -1); + + if ($invert) { + $c = $a; + $a = $b; + $b = $c; + } + + [$a, $b, $length] = $this->pad($a, $b); + + $carry = 0; + $result = ''; + + $complement = 10 ** $this->maxDigits; + + for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { + $blockLength = $this->maxDigits; + + if ($i < 0) { + $blockLength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + /** @psalm-var numeric-string $blockA */ + $blockA = \substr($a, $i, $blockLength); + + /** @psalm-var numeric-string $blockB */ + $blockB = \substr($b, $i, $blockLength); + + $sum = $blockA - $blockB - $carry; + + if ($sum < 0) { + $sum += $complement; + $carry = 1; + } else { + $carry = 0; + } + + $sum = (string) $sum; + $sumLength = \strlen($sum); + + if ($sumLength < $blockLength) { + $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; + } + + $result = $sum . $result; + + if ($i === 0) { + break; + } + } + + // Carry cannot be 1 when the loop ends, as a > b + assert($carry === 0); + + $result = \ltrim($result, '0'); + + if ($invert) { + $result = $this->neg($result); + } + + return $result; + } + + /** + * Performs the multiplication of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string + */ + private function doMul(string $a, string $b) : string + { + $x = \strlen($a); + $y = \strlen($b); + + $maxDigits = \intdiv($this->maxDigits, 2); + $complement = 10 ** $maxDigits; + + $result = '0'; + + for ($i = $x - $maxDigits;; $i -= $maxDigits) { + $blockALength = $maxDigits; + + if ($i < 0) { + $blockALength += $i; + /** @psalm-suppress LoopInvalidation */ + $i = 0; + } + + $blockA = (int) \substr($a, $i, $blockALength); + + $line = ''; + $carry = 0; + + for ($j = $y - $maxDigits;; $j -= $maxDigits) { + $blockBLength = $maxDigits; + + if ($j < 0) { + $blockBLength += $j; + /** @psalm-suppress LoopInvalidation */ + $j = 0; + } + + $blockB = (int) \substr($b, $j, $blockBLength); + + $mul = $blockA * $blockB + $carry; + $value = $mul % $complement; + $carry = ($mul - $value) / $complement; + + $value = (string) $value; + $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT); + + $line = $value . $line; + + if ($j === 0) { + break; + } + } + + if ($carry !== 0) { + $line = $carry . $line; + } + + $line = \ltrim($line, '0'); + + if ($line !== '') { + $line .= \str_repeat('0', $x - $blockALength - $i); + $result = $this->add($result, $line); + } + + if ($i === 0) { + break; + } + } + + return $result; + } + + /** + * Performs the division of two non-signed large integers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return string[] The quotient and remainder. + */ + private function doDiv(string $a, string $b) : array + { + $cmp = $this->doCmp($a, $b); + + if ($cmp === -1) { + return ['0', $a]; + } + + $x = \strlen($a); + $y = \strlen($b); + + // we now know that a >= b && x >= y + + $q = '0'; // quotient + $r = $a; // remainder + $z = $y; // focus length, always $y or $y+1 + + for (;;) { + $focus = \substr($a, 0, $z); + + $cmp = $this->doCmp($focus, $b); + + if ($cmp === -1) { + if ($z === $x) { // remainder < dividend + break; + } + + $z++; + } + + $zeros = \str_repeat('0', $x - $z); + + $q = $this->add($q, '1' . $zeros); + $a = $this->sub($a, $b . $zeros); + + $r = $a; + + if ($r === '0') { // remainder == 0 + break; + } + + $x = \strlen($a); + + if ($x < $y) { // remainder < dividend + break; + } + + $z = $y; + } + + return [$q, $r]; + } + + /** + * Compares two non-signed large numbers. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return int [-1, 0, 1] + */ + private function doCmp(string $a, string $b) : int + { + $x = \strlen($a); + $y = \strlen($b); + + $cmp = $x <=> $y; + + if ($cmp !== 0) { + return $cmp; + } + + return \strcmp($a, $b) <=> 0; // enforce [-1, 0, 1] + } + + /** + * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length. + * + * The numbers must only consist of digits, without leading minus sign. + * + * @param string $a The first operand. + * @param string $b The second operand. + * + * @return array{string, string, int} + */ + private function pad(string $a, string $b) : array + { + $x = \strlen($a); + $y = \strlen($b); + + if ($x > $y) { + $b = \str_repeat('0', $x - $y) . $b; + + return [$a, $b, $x]; + } + + if ($x < $y) { + $a = \str_repeat('0', $y - $x) . $a; + + return [$a, $b, $y]; + } + + return [$a, $b, $x]; + } +} diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php new file mode 100644 index 000000000..06936d8db --- /dev/null +++ b/vendor/brick/math/src/RoundingMode.php @@ -0,0 +1,107 @@ += 0.5; otherwise, behaves as for DOWN. + * Note that this is the rounding mode commonly taught at school. + */ + public const HALF_UP = 5; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. + * + * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN. + */ + public const HALF_DOWN = 6; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity. + * + * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN. + */ + public const HALF_CEILING = 7; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity. + * + * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP. + */ + public const HALF_FLOOR = 8; + + /** + * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor. + * + * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd; + * behaves as for HALF_DOWN if it's even. + * + * Note that this is the rounding mode that statistically minimizes + * cumulative error when applied repeatedly over a sequence of calculations. + * It is sometimes known as "Banker's rounding", and is chiefly used in the USA. + */ + public const HALF_EVEN = 9; +} diff --git a/vendor/brozot/laravel-fcm/.gitignore b/vendor/brozot/laravel-fcm/.gitignore deleted file mode 100644 index 0e14b296b..000000000 --- a/vendor/brozot/laravel-fcm/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# General -.DS_Store -Thumbs.db - -# Project -.env -composer.phar -vendor -build -node_modules -resources/assets/bower -Homestead.yaml -Homestead.json -storage/debugbar -doc/generated/* -generatedoc.sh -phpdoc.xml -build/* - -# Editors -.sublime-workspace -.idea -.idea/* -.idea/workspace.xml -*.iml -_ide_helper.php diff --git a/vendor/brozot/laravel-fcm/.travis.yml b/vendor/brozot/laravel-fcm/.travis.yml deleted file mode 100644 index 606cc2f0b..000000000 --- a/vendor/brozot/laravel-fcm/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: php - -php: - - 5.6 - -before_script: - - composer self-update - - composer install --no-interaction - -script: - - phpunit --coverage-clover build/logs/clover.xml - -after_success: - - travis_retry php vendor/bin/coveralls \ No newline at end of file diff --git a/vendor/brozot/laravel-fcm/LICENSE b/vendor/brozot/laravel-fcm/LICENSE deleted file mode 100644 index 23a061a27..000000000 --- a/vendor/brozot/laravel-fcm/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Nicolas Brosy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/brozot/laravel-fcm/README.md b/vendor/brozot/laravel-fcm/README.md deleted file mode 100644 index 82df14d07..000000000 --- a/vendor/brozot/laravel-fcm/README.md +++ /dev/null @@ -1,446 +0,0 @@ -# Laravel-FCM - -[![Build Status](https://travis-ci.org/brozot/Laravel-FCM.svg?branch=master)](https://travis-ci.org/brozot/Laravel-FCM) [![Coverage Status](https://coveralls.io/repos/github/brozot/Laravel-FCM/badge.svg?branch=master)](https://coveralls.io/github/brozot/Laravel-FCM?branch=master) [![Latest Stable Version](https://poser.pugx.org/brozot/laravel-fcm/v/stable)](https://packagist.org/packages/brozot/laravel-fcm) [![Total Downloads](https://poser.pugx.org/brozot/laravel-fcm/downloads)](https://packagist.org/packages/brozot/laravel-fcm) -[![License](https://poser.pugx.org/brozot/laravel-fcm/license)](https://packagist.org/packages/brozot/laravel-fcm) - -## Introduction - -Laravel-FCM is an easy to use package working with both Laravel and Lumen for sending push notification with [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/) (FCM). - -It currently **only supports HTTP protocol** for : - -- sending a downstream message to one or multiple devices -- managing groups and sending message to a group -- sending topics messages - -> Note: The XMPP protocol is not currently supported. - - -## Installation - -To get the latest version of Laravel-FCM on your project, require it from "composer": - - - $ composer require brozot/laravel-fcm - - -Or you can add it directly in your composer.json file: - -```json -{ - "require": { - "brozot/laravel-fcm": "1.3.*" - } -} -``` - - -### Laravel - -Register the provider directly in your app configuration file config/app.php `config/app.php`: - -Laravel >= 5.5 provides package auto-discovery, thanks to rasmuscnielsen and luiztessadri who help to implement this feature in Laravel-FCM, the registration of the provider and the facades should not be necessary anymore. - -```php -'providers' => [ - // ... - - LaravelFCM\FCMServiceProvider::class, -] -``` - -Add the facade aliases in the same file: - -```php -'aliases' => [ - ... - 'FCM' => LaravelFCM\Facades\FCM::class, - 'FCMGroup' => LaravelFCM\Facades\FCMGroup::class, // Optional -] -``` - -> Note: The `FCMGroup` facade is needed only if you want to manage groups messages in your application. - -Publish the package config file using the following command: - - - $ php artisan vendor:publish --provider="LaravelFCM\FCMServiceProvider" - - -### Lumen - -Register the provider in your bootstrap app file ```boostrap/app.php``` - -Add the following line in the "Register Service Providers" section at the bottom of the file. - -```php -$app->register(LaravelFCM\FCMServiceProvider::class); -``` - -For facades, add the following lines in the section "Create The Application" . FCMGroup facade is only necessary if you want to use groups message in your application. - -```php -class_alias(\LaravelFCM\Facades\FCM::class, 'FCM'); -class_alias(\LaravelFCM\Facades\FCMGroup::class, 'FCMGroup'); -``` - -Copy the config file ```fcm.php``` manually from the directory ```/vendor/brozot/laravel-fcm/config``` to the directory ```/config ``` (you may need to create this directory). - - -### Package Configuration - -In your `.env` file, add the server key and the secret key for the Firebase Cloud Messaging: - -```php -FCM_SERVER_KEY=my_secret_server_key -FCM_SENDER_ID=my_secret_sender_id -``` - -To get these keys, you must create a new application on the [firebase cloud messaging console](https://console.firebase.google.com/). - -After the creation of your application on Firebase, you can find keys in `project settings -> cloud messaging`. - - -## Basic Usage - -Two types of messages can be sent using Laravel-FCM: - -- Notification messages, sometimes thought of as "display messages" -- Data messages, which are handled by the client app - -More information is available in the [official documentation](https://firebase.google.com/docs/cloud-messaging/concept-options). - - -### Downstream Messages - -A downstream message is a notification message, a data message, or both, that you send to a target device or to multiple target devices using its registration_Ids. - -The following use statements are required for the examples below: - -```php -use LaravelFCM\Message\OptionsBuilder; -use LaravelFCM\Message\PayloadDataBuilder; -use LaravelFCM\Message\PayloadNotificationBuilder; -use FCM; -``` - -#### Sending a Downstream Message to a Device - -```php -$optionBuilder = new OptionsBuilder(); -$optionBuilder->setTimeToLive(60*20); - -$notificationBuilder = new PayloadNotificationBuilder('my title'); -$notificationBuilder->setBody('Hello world') - ->setSound('default'); - -$dataBuilder = new PayloadDataBuilder(); -$dataBuilder->addData(['a_data' => 'my_data']); - -$option = $optionBuilder->build(); -$notification = $notificationBuilder->build(); -$data = $dataBuilder->build(); - -$token = "a_registration_from_your_database"; - -$downstreamResponse = FCM::sendTo($token, $option, $notification, $data); - -$downstreamResponse->numberSuccess(); -$downstreamResponse->numberFailure(); -$downstreamResponse->numberModification(); - -// return Array - you must remove all this tokens in your database -$downstreamResponse->tokensToDelete(); - -// return Array (key : oldToken, value : new token - you must change the token in your database) -$downstreamResponse->tokensToModify(); - -// return Array - you should try to resend the message to the tokens in the array -$downstreamResponse->tokensToRetry(); - -// return Array (key:token, value:error) - in production you should remove from your database the tokens -$downstreamResponse->tokensWithError(); -``` - -#### Sending a Downstream Message to Multiple Devices - -```php -$optionBuilder = new OptionsBuilder(); -$optionBuilder->setTimeToLive(60*20); - -$notificationBuilder = new PayloadNotificationBuilder('my title'); -$notificationBuilder->setBody('Hello world') - ->setSound('default'); - -$dataBuilder = new PayloadDataBuilder(); -$dataBuilder->addData(['a_data' => 'my_data']); - -$option = $optionBuilder->build(); -$notification = $notificationBuilder->build(); -$data = $dataBuilder->build(); - -// You must change it to get your tokens -$tokens = MYDATABASE::pluck('fcm_token')->toArray(); - -$downstreamResponse = FCM::sendTo($tokens, $option, $notification, $data); - -$downstreamResponse->numberSuccess(); -$downstreamResponse->numberFailure(); -$downstreamResponse->numberModification(); - -// return Array - you must remove all this tokens in your database -$downstreamResponse->tokensToDelete(); - -// return Array (key : oldToken, value : new token - you must change the token in your database) -$downstreamResponse->tokensToModify(); - -// return Array - you should try to resend the message to the tokens in the array -$downstreamResponse->tokensToRetry(); - -// return Array (key:token, value:error) - in production you should remove from your database the tokens present in this array -$downstreamResponse->tokensWithError(); -``` - -> Kindly refer [Downstream message error response codes](https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes) documentation for more information. - -### Topics Messages - -A topics message is a notification message, data message, or both, that you send to all the devices registered to this topic. - -> Note: Topic names must be managed by your app and known by your server. The Laravel-FCM package or fcm doesn't provide an easy way to do that. - -The following use statement is required for the examples below: - -```php -use LaravelFCM\Message\Topics; -``` - -#### Sending a Message to a Topic - -```php -$notificationBuilder = new PayloadNotificationBuilder('my title'); -$notificationBuilder->setBody('Hello world') - ->setSound('default'); - -$notification = $notificationBuilder->build(); - -$topic = new Topics(); -$topic->topic('news'); - -$topicResponse = FCM::sendToTopic($topic, null, $notification, null); - -$topicResponse->isSuccess(); -$topicResponse->shouldRetry(); -$topicResponse->error(); -``` - -#### Sending a Message to Multiple Topics - -It sends notification to devices registered at the following topics: - -- news and economic -- news and cultural - -> Note : Conditions for topics support two operators per expression - -```php -$notificationBuilder = new PayloadNotificationBuilder('my title'); -$notificationBuilder->setBody('Hello world') - ->setSound('default'); - -$notification = $notificationBuilder->build(); - -$topic = new Topics(); -$topic->topic('news')->andTopic(function($condition) { - - $condition->topic('economic')->orTopic('cultural'); - -}); - -$topicResponse = FCM::sendToTopic($topic, null, $notification, null); - -$topicResponse->isSuccess(); -$topicResponse->shouldRetry(); -$topicResponse->error()); - -``` - -### Group Messages - -#### Sending a Notification to a Group - -```php -$notificationKey = ['a_notification_key']; - - -$notificationBuilder = new PayloadNotificationBuilder('my title'); -$notificationBuilder->setBody('Hello world') - ->setSound('default'); - -$notification = $notificationBuilder->build(); - - -$groupResponse = FCM::sendToGroup($notificationKey, null, $notification, null); - -$groupResponse->numberSuccess(); -$groupResponse->numberFailure(); -$groupResponse->tokensFailed(); -``` - - -#### Creating a Group - -```php -$tokens = ['a_registration_id_at_add_to_group']; -$groupName = "a_group"; -$notificationKey - -// Save notification key in your database you must use it to send messages or for managing this group -$notification_key = FCMGroup::createGroup($groupName, $tokens); -``` - -#### Adding Devices to a Group - -```php -$tokens = ['a_registration_id_at_add_to_the_new_group']; -$groupName = "a_group"; -$notificationKey = "notification_key_received_when_group_was_created"; - -$key = FCMGroup::addToGroup($groupName, $notificationKey, $tokens); -``` - -#### Deleting Devices from a Group - -> Note if all devices are removed from the group, the group is automatically removed in "fcm". - -```php -$tokens = ['a_registration_id_at_remove_from_the_group']; -$groupName = "a_group"; -$notificationKey = "notification_key_received_when_group_was_created"; - -$key = FCMGroup::removeFromGroup($groupName, $notificationKey, $tokens); -``` - - -## Options - -Laravel-FCM supports options based on the options of Firebase Cloud Messaging. These options can help you to define the specificity of your notification. - -You can construct an option as follows: - -```php -$optionsBuilder = new OptionsBuilder(); - -$optionsBuilder->setTimeToLive(42*60) - ->setCollapseKey('a_collapse_key'); - -$options = $optionsBuilder->build(); -``` - -## Notification Messages - -Notification payload is used to send a notification, the behaviour is defined by the App State and the OS of the receptor device. - -**Notification messages are delivered to the notification tray when the app is in the background.** For apps in the foreground, messages are handled by these callbacks: - -- didReceiveRemoteNotification: on iOS -- onMessageReceived() on Android. The notification key in the data bundle contains the notification. - -See the [official documentation](https://firebase.google.com/docs/cloud-messaging/concept-options#notifications). - - -```php -$notificationBuilder = new PayloadNotificationBuilder(); -$notificationBuilder->setTitle('title') - ->setBody('body') - ->setSound('sound') - ->setBadge('badge'); - -$notification = $notificationBuilder->build(); -``` - -## Data Messages - -Set the data key with your custom key-value pairs to send a data payload to the client app. Data messages can have a 4KB maximum payload. - -- **iOS**, FCM stores the message and delivers it **only when the app is in the foreground** and has established a FCM connection. -- **Android**, a client app receives a data message in onMessageReceived() and can handle the key-value pairs accordingly. - -See the [official documentation](https://firebase.google.com/docs/cloud-messaging/concept-options#data_messages). - - -```php -$dataBuilder = new PayloadDataBuilder(); -$dataBuilder->addData([ - 'data_1' => 'first_data' -]); - -$data = $dataBuilder->build(); -``` - -## Notification & Data Messages - -App behavior when receiving messages that include both notification and data payloads depends on whether the app is in the background or the foreground—essentially, whether or not it is active at the time of receipt ([source](https://firebase.google.com/docs/cloud-messaging/concept-options#messages-with-both-notification-and-data-payloads)). - -- **Background**, apps receive notification payload in the notification tray, and only handle the data payload when the user taps on the notification. -- **Foreground**, your app receives a message object with both payloads available. - - -## Topics - -For topics message, Laravel-FCM offers an easy to use api which abstract firebase conditions. To make the condition given for example in the firebase official documentation it must be done with Laravel-FCM like below: - -**Official documentation condition** - -``` -'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics) -``` - -```php -$topics = new Topics(); - -$topics->topic('TopicA') - ->andTopic(function($condition) { - $condition->topic('TopicB')->orTopic('TopicC'); - }); -``` - - -## Testing - -For integration testing, you can mock the responses with mockery and Mocks provided by the package. - -There are 3 kinds of "MockResponse" given by the package: - -- MockDownstreamResponse -- MockGroupResponse -- MockTopicResponse - -You can mock the FCM call as in the following example: - -```php -$numberSucess = 2; -$mockResponse = new \LaravelFCM\Mocks\MockDownstreamResponse(numberSucess); - -$mockResponse->addTokenToDelete('token_to_delete'); -$mockResponse->addTokenToModify('token_to_modify', 'token_modified'); -$mockResponse->setMissingToken(true); - -$sender = Mockery::mock(\LaravelFCM\Sender\FCMSender::class); -$sender->shouldReceive('sendTo')->once()->andReturn($mockResponse); - -$this->app->singleton('fcm.sender', function($app) use($sender) { - return $sender; -}); -``` - -## API Documentation - -You can find more documentation about the API in the [API reference](./doc/Readme.md). - - -## Licence - -This library is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT). - -Some of this documentation is coming from the official documentation. You can find it completely on the [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/) Website. diff --git a/vendor/brozot/laravel-fcm/composer.json b/vendor/brozot/laravel-fcm/composer.json deleted file mode 100644 index c89e71668..000000000 --- a/vendor/brozot/laravel-fcm/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "brozot/laravel-fcm", - "description": "Laravel / Lumen package for Firebase Cloud Messaging ", - "keywords": ["laravel", "lumen", "firebase", "notification", "push", "fcm", "firebase cloud messaging"], - "type": "library", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Brosy", - "email": "nicolas.brosy@gmail.com" - } - ], - "require": { - "php": ">=5.5.9", - "illuminate/support": "5.*|^6", - "guzzlehttp/guzzle": "~6.0", - "monolog/monolog": "^1.12|^2.0" - }, - "require-dev": { - "mockery/mockery" : "0.9.*", - "phpunit/phpunit" : "4.7.*", - "satooshi/php-coveralls": "dev-master", - "laravel/laravel": "5.2.*" - }, - "autoload": { - "psr-4": { - "LaravelFCM\\": "src/", - "LaravelFCM\\Mocks\\": "tests/mocks" - } - }, - "autoload-dev": { - "classmap": [ - "tests/" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "laravel": { - "providers": [ - "LaravelFCM\\FCMServiceProvider" - ], - "aliases": { - "FCM": "LaravelFCM\\Facades\\FCM", - "FCMGroup": "LaravelFCM\\Facades\\FCMGroup" - } - } - } -} diff --git a/vendor/brozot/laravel-fcm/composer.lock b/vendor/brozot/laravel-fcm/composer.lock deleted file mode 100644 index fbf470dab..000000000 --- a/vendor/brozot/laravel-fcm/composer.lock +++ /dev/null @@ -1,3528 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "fc4f086475f0b161f447749715476cfe", - "content-hash": "8cefb3f22d2008e34cabe7192dec90c2", - "packages": [ - { - "name": "classpreloader/classpreloader", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/ClassPreloader/ClassPreloader.git", - "reference": "bc7206aa892b5a33f4680421b69b191efd32b096" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/bc7206aa892b5a33f4680421b69b191efd32b096", - "reference": "bc7206aa892b5a33f4680421b69b191efd32b096", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.0|^2.0|^3.0", - "php": ">=5.5.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "ClassPreloader\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", - "keywords": [ - "autoload", - "class", - "preload" - ], - "time": "2016-09-16 12:50:15" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "@stable" - }, - "type": "project", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24 07:27:01" - }, - { - "name": "doctrine/inflector", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "4.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2015-11-06 14:35:42" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.2.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8d6c6cc55186db87b7dc5009827429ba4e9dc006", - "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.0", - "psr/log": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2017-02-28 22:50:30" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20 10:07:11" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2017-03-20 17:10:46" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "0.*", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "3.7.*", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleColor": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com", - "homepage": "http://www.acci.cz" - } - ], - "time": "2014-04-08 15:00:19" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "shasum": "" - }, - "require": { - "jakub-onderka/php-console-color": "~0.1", - "php": ">=5.3.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~0.5", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleHighlighter": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "time": "2015-04-20 18:58:01" - }, - { - "name": "jeremeamia/SuperClosure", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "443c3df3207f176a1b41576ee2a66968a507b3db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/443c3df3207f176a1b41576ee2a66968a507b3db", - "reference": "443c3df3207f176a1b41576ee2a66968a507b3db", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2016-12-07 09:37:55" - }, - { - "name": "laravel/framework", - "version": "v5.2.45", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2a79f920d5584ec6df7cf996d922a742d11095d1", - "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1", - "shasum": "" - }, - "require": { - "classpreloader/classpreloader": "~3.0", - "doctrine/inflector": "~1.0", - "ext-mbstring": "*", - "ext-openssl": "*", - "jeremeamia/superclosure": "~2.2", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.4", - "php": ">=5.5.9", - "psy/psysh": "0.7.*", - "swiftmailer/swiftmailer": "~5.1", - "symfony/console": "2.8.*|3.0.*", - "symfony/debug": "2.8.*|3.0.*", - "symfony/finder": "2.8.*|3.0.*", - "symfony/http-foundation": "2.8.*|3.0.*", - "symfony/http-kernel": "2.8.*|3.0.*", - "symfony/polyfill-php56": "~1.0", - "symfony/process": "2.8.*|3.0.*", - "symfony/routing": "2.8.*|3.0.*", - "symfony/translation": "2.8.*|3.0.*", - "symfony/var-dumper": "2.8.*|3.0.*", - "vlucas/phpdotenv": "~2.2" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/exception": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/mail": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "self.version" - }, - "require-dev": { - "aws/aws-sdk-php": "~3.0", - "mockery/mockery": "~0.9.4", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~4.1", - "predis/predis": "~1.0", - "symfony/css-selector": "2.8.*|3.0.*", - "symfony/dom-crawler": "2.8.*|3.0.*" - }, - "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).", - "symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/Illuminate/Queue/IlluminateQueueClosure.php" - ], - "files": [ - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "http://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "time": "2016-08-26 11:44:52" - }, - { - "name": "league/flysystem", - "version": "1.0.37", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "78b5cc4feb61a882302df4fbaf63b7662e5e4ccd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/78b5cc4feb61a882302df4fbaf63b7662e5e4ccd", - "reference": "78b5cc4feb61a882302df4fbaf63b7662e5e4ccd", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "ext-fileinfo": "*", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^2.2", - "phpunit/phpunit": "~4.8" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-copy": "Allows you to use Copy.com storage", - "league/flysystem-dropbox": "Allows you to use Dropbox storage", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "time": "2017-03-22 15:43:14" - }, - { - "name": "monolog/monolog", - "version": "1.22.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1e044bc4b34e91743943479f1be7a1d5eb93add0", - "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "~5.3" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2017-03-13 07:08:03" - }, - { - "name": "mtdowling/cron-expression", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2017-01-23 04:29:33" - }, - { - "name": "nesbot/carbon", - "version": "1.22.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6 || ~3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "~4.0 || ~5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.23-dev" - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - } - ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2017-01-16 07:55:07" - }, - { - "name": "nikic/php-parser", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0", - "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.4" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2016-09-16 12:04:44" - }, - { - "name": "paragonie/random_compat", - "version": "v1.4.2", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/965cdeb01fdcab7653253aa81d40441d261f1e66", - "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2017-03-13 16:22:52" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06 14:39:51" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10 12:19:37" - }, - { - "name": "psy/psysh", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280", - "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1", - "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "^1.2.1|~2.0", - "php": ">=5.3.9", - "symfony/console": "~2.3.10|^2.4.2|~3.0", - "symfony/var-dumper": "~2.7|~3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "~1.5", - "phpunit/phpunit": "~3.7|~4.0|~5.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/finder": "~2.1|~3.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/Psy/functions.php" - ], - "psr-4": { - "Psy\\": "src/Psy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "time": "2016-03-09 05:03:14" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.6", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e", - "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2017-02-13 07:52:53" - }, - { - "name": "symfony/console", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "926061e74229e935d3c5b4e9ba87237316c6693f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/926061e74229e935d3c5b4e9ba87237316c6693f", - "reference": "926061e74229e935d3c5b4e9ba87237316c6693f", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2016-07-30 07:22:48" - }, - { - "name": "symfony/debug", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2016-07-30 07:22:48" - }, - { - "name": "symfony/event-dispatcher", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", - "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2017-02-21 09:12:04" - }, - { - "name": "symfony/finder", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9", - "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2016-06-29 05:40:00" - }, - { - "name": "symfony/http-foundation", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82", - "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "symfony/expression-language": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2016-07-17 13:54:30" - }, - { - "name": "symfony/http-kernel", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d97ba4425e36e79c794e7d14ff36f00f081b37b3", - "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "symfony/browser-kit": "~2.8|~3.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0", - "symfony/routing": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/var-dumper": "~2.8|~3.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2016-07-30 09:10:37" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14 01:06:16" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/1dd42b9b89556f18092f3d1ada22cb05ac85383c", - "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14 01:06:16" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/746bce0fca664ac0a575e465f65c6643faddf7fb", - "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2016-11-14 01:06:16" - }, - { - "name": "symfony/process", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "768debc5996f599c4372b322d9061dba2a4bf505" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/768debc5996f599c4372b322d9061dba2a4bf505", - "reference": "768debc5996f599c4372b322d9061dba2a4bf505", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2016-07-28 11:13:34" - }, - { - "name": "symfony/routing", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "9038984bd9c05ab07280121e9e10f61a7231457b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b", - "reference": "9038984bd9c05ab07280121e9e10f61a7231457b", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2016-06-29 05:40:00" - }, - { - "name": "symfony/translation", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2016-07-30 07:22:48" - }, - { - "name": "symfony/var-dumper", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1f7e071aafc6676fcb6e3f0497f87c2397247377", - "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "twig/twig": "~1.20|~2.0" - }, - "suggest": { - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2016-07-26 08:03:56" - }, - { - "name": "vlucas/phpdotenv", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause-Attribution" - ], - "authors": [ - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2016-09-01 10:05:43" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14 21:17:01" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" - }, - "type": "library", - "autoload": { - "classmap": [ - "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "time": "2015-05-11 14:41:42" - }, - { - "name": "laravel/laravel", - "version": "v5.2.31", - "source": { - "type": "git", - "url": "https://github.com/laravel/laravel.git", - "reference": "76b8ef720400b0c0bf4cdab39c354e8addef7dd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/laravel/zipball/76b8ef720400b0c0bf4cdab39c354e8addef7dd9", - "reference": "76b8ef720400b0c0bf4cdab39c354e8addef7dd9", - "shasum": "" - }, - "require": { - "laravel/framework": "5.2.*", - "php": ">=5.5.9" - }, - "require-dev": { - "fzaninotto/faker": "~1.4", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0", - "symfony/css-selector": "2.8.*|3.0.*", - "symfony/dom-crawler": "2.8.*|3.0.*" - }, - "type": "project", - "autoload": { - "classmap": [ - "database" - ], - "psr-4": { - "App\\": "app/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Laravel Framework.", - "keywords": [ - "framework", - "laravel" - ], - "time": "2016-04-27 13:01:12" - }, - { - "name": "mockery/mockery", - "version": "0.9.9", - "source": { - "type": "git", - "url": "https://github.com/padraic/mockery.git", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/padraic/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "~1.1", - "lib-pcre": ">=7.0", - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.9.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "time": "2017-02-28 12:52:32" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2015-12-27 11:43:31" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2016-11-25 06:54:22" - }, - { - "name": "phpspec/prophecy", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1|^2.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2017-03-02 20:05:34" - }, - { - "name": "phpunit/php-code-coverage", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" - }, - "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "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": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2015-10-06 15:47:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "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": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2016-10-03 07:40:28" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21 13:50:34" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26 11:10:40" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.4.11", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-02-27 10:12:30" - }, - { - "name": "phpunit/phpunit", - "version": "4.7.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9b97f9d807b862c2de2a36e86690000801c85724" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b97f9d807b862c2de2a36e86690000801c85724", - "reference": "9b97f9d807b862c2de2a36e86690000801c85724", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "~1.3,>=1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": ">=1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.2", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2015-07-13 11:28:34" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "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": [ - "mock", - "xunit" - ], - "time": "2015-10-02 06:51:40" - }, - { - "name": "satooshi/php-coveralls", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/satooshi/php-coveralls.git", - "reference": "d5124af8bd6464144d550906cce46bd0df78f428" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/d5124af8bd6464144d550906cce46bd0df78f428", - "reference": "d5124af8bd6464144d550906cce46bd0df78f428", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.0", - "php": "^5.5 || ^7.0", - "psr/log": "^1.0", - "symfony/config": "^2.1 || ^3.0", - "symfony/console": "^2.1 || ^3.0", - "symfony/stopwatch": "^2.0 || ^3.0", - "symfony/yaml": "^2.0 || ^3.0" - }, - "suggest": { - "symfony/http-kernel": "Allows Symfony integration" - }, - "bin": [ - "bin/coveralls" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Satooshi\\": "src/Satooshi/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kitamura Satoshi", - "email": "with.no.parachute@gmail.com", - "homepage": "https://www.facebook.com/satooshi.jp" - } - ], - "description": "PHP client library for Coveralls API", - "homepage": "https://github.com/satooshi/php-coveralls", - "keywords": [ - "ci", - "coverage", - "github", - "test" - ], - "time": "2017-02-25 12:14:18" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29 09:50:25" - }, - { - "name": "sebastian/diff", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2015-12-08 07:14:41" - }, - { - "name": "sebastian/environment", - "version": "1.3.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-08-18 05:49:44" - }, - { - "name": "sebastian/exporter", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-06-17 09:04:28" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12 03:26:01" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03 07:41:43" - }, - { - "name": "sebastian/version", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" - }, - { - "name": "symfony/config", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/741d6d4cd1414d67d48eb71aba6072b46ba740c2", - "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/filesystem": "~2.8|~3.0" - }, - "require-dev": { - "symfony/yaml": "~3.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2017-03-01 18:18:25" - }, - { - "name": "symfony/filesystem", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/bc0f17bed914df2cceb989972c3b996043c4da4a", - "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2017-03-06 19:30:27" - }, - { - "name": "symfony/stopwatch", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c5ee0f8650c84b4d36a5f76b3b504233feaabf75", - "reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2017-02-18 17:28:00" - }, - { - "name": "symfony/yaml", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a", - "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-03-07 16:47:02" - }, - { - "name": "webmozart/assert", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23 20:04:58" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": { - "satooshi/php-coveralls": 20 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=5.5.9" - }, - "platform-dev": [] -} diff --git a/vendor/brozot/laravel-fcm/config/fcm.php b/vendor/brozot/laravel-fcm/config/fcm.php deleted file mode 100644 index a2ea487ea..000000000 --- a/vendor/brozot/laravel-fcm/config/fcm.php +++ /dev/null @@ -1,14 +0,0 @@ - env('FCM_PROTOCOL', 'http'), - 'log_enabled' => false, - - 'http' => [ - 'server_key' => env('FCM_SERVER_KEY', 'Your FCM server key'), - 'sender_id' => env('FCM_SENDER_ID', 'Your sender id'), - 'server_send_url' => 'https://fcm.googleapis.com/fcm/send', - 'server_group_url' => 'https://android.googleapis.com/gcm/notification', - 'timeout' => 30.0, // in second - ], -]; diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-InvalidOptionsException.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-InvalidOptionsException.md deleted file mode 100644 index 6e557077e..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-InvalidOptionsException.md +++ /dev/null @@ -1,19 +0,0 @@ -LaravelFCM\Message\Exceptions\InvalidOptionsException -=============== - -Class InvalidOptionsException - - - - -* Class name: InvalidOptionsException -* Namespace: LaravelFCM\Message\Exceptions -* Parent class: Exception - - - - - - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-NoTopicProvidedException.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-NoTopicProvidedException.md deleted file mode 100644 index c1ce367c2..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Exceptions-NoTopicProvidedException.md +++ /dev/null @@ -1,19 +0,0 @@ -LaravelFCM\Message\Exceptions\NoTopicProvidedException -=============== - -Class NoTopicProvidedException - - - - -* Class name: NoTopicProvidedException -* Namespace: LaravelFCM\Message\Exceptions -* Parent class: Exception - - - - - - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Options.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Options.md deleted file mode 100644 index ca784257a..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Options.md +++ /dev/null @@ -1,49 +0,0 @@ -LaravelFCM\Message\Options -=============== - -Class Options - - - - -* Class name: Options -* Namespace: LaravelFCM\Message -* This class implements: Illuminate\Contracts\Support\Arrayable - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Message\Options::__construct(\LaravelFCM\Message\OptionsBuilder $builder) - -Options constructor. - - - -* Visibility: **public** - - -#### Arguments -* $builder **[LaravelFCM\Message\OptionsBuilder](LaravelFCM-Message-OptionsBuilder.md)** - - - -### toArray - - array LaravelFCM\Message\Options::toArray() - -Transform Option to array - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsBuilder.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsBuilder.md deleted file mode 100644 index 5f74e7cb6..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsBuilder.md +++ /dev/null @@ -1,241 +0,0 @@ -LaravelFCM\Message\OptionsBuilder -=============== - -Builder for creation of options used by FCM - -Class OptionsBuilder - - -* Class name: OptionsBuilder -* Namespace: LaravelFCM\Message - - - - - - - -Methods -------- - - -### setCollapseKey - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setCollapseKey(String $collapseKey) - -This parameter identifies a group of messages -A maximum of 4 different collapse keys is allowed at any given time. - - - -* Visibility: **public** - - -#### Arguments -* $collapseKey **String** - - - -### setPriority - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setPriority(String $priority) - -Sets the priority of the message. Valid values are "normal" and "high." -By default, messages are sent with normal priority - - - -* Visibility: **public** - - -#### Arguments -* $priority **String** - - - -### setContentAvailable - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setContentAvailable(boolean $contentAvailable) - -support only Android and Ios - -An inactive client app is awoken. -On iOS, use this field to represent content-available in the APNS payload. -On Android, data messages wake the app by default. -On Chrome, currently not supported. - -* Visibility: **public** - - -#### Arguments -* $contentAvailable **boolean** - - - -### setDelayWhileIdle - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setDelayWhileIdle(boolean $delayWhileIdle) - -When this parameter is set to true, it indicates that the message should not be sent until the device becomes active. - - - -* Visibility: **public** - - -#### Arguments -* $delayWhileIdle **boolean** - - - -### setTimeToLive - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setTimeToLive(integer $timeToLive) - -This parameter specifies how long the message should be kept in FCM storage if the device is offline - - - -* Visibility: **public** - - -#### Arguments -* $timeToLive **integer** - <p>(in second) min:0 max:2419200</p> - - - -### setRestrictedPackageName - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setRestrictedPackageName(string $restrictedPackageName) - -This parameter specifies the package name of the application where the registration tokens must match in order to receive the message. - - - -* Visibility: **public** - - -#### Arguments -* $restrictedPackageName **string** - - - -### setDryRun - - \LaravelFCM\Message\OptionsBuilder LaravelFCM\Message\OptionsBuilder::setDryRun(boolean $isDryRun) - -This parameter, when set to true, allows developers to test a request without actually sending a message. - -It should only be used for the development - -* Visibility: **public** - - -#### Arguments -* $isDryRun **boolean** - - - -### getCollapseKey - - null|string LaravelFCM\Message\OptionsBuilder::getCollapseKey() - -Get the collapseKey - - - -* Visibility: **public** - - - - -### getPriority - - null|string LaravelFCM\Message\OptionsBuilder::getPriority() - -Get the priority - - - -* Visibility: **public** - - - - -### isContentAvailable - - boolean LaravelFCM\Message\OptionsBuilder::isContentAvailable() - -is content available - - - -* Visibility: **public** - - - - -### isDelayWhileIdle - - boolean LaravelFCM\Message\OptionsBuilder::isDelayWhileIdle() - -is delay white idle - - - -* Visibility: **public** - - - - -### getTimeToLive - - null|integer LaravelFCM\Message\OptionsBuilder::getTimeToLive() - -get time to live - - - -* Visibility: **public** - - - - -### getRestrictedPackageName - - null|string LaravelFCM\Message\OptionsBuilder::getRestrictedPackageName() - -get restricted package name - - - -* Visibility: **public** - - - - -### isDryRun - - boolean LaravelFCM\Message\OptionsBuilder::isDryRun() - -is dry run - - - -* Visibility: **public** - - - - -### build - - \LaravelFCM\Message\Options LaravelFCM\Message\OptionsBuilder::build() - -build an instance of Options - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsPriorities.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsPriorities.md deleted file mode 100644 index 0dc8aaa43..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-OptionsPriorities.md +++ /dev/null @@ -1,69 +0,0 @@ -LaravelFCM\Message\OptionsPriorities -=============== - -Class OptionsPriorities - - - - -* Class name: OptionsPriorities -* Namespace: LaravelFCM\Message - - - -Constants ----------- - - -### high - - const high = "high" - - - - - -### normal - - const normal = "normal" - - - - - - - -Methods -------- - - -### getPriorities - - array LaravelFCM\Message\OptionsPriorities::getPriorities() - - - - - -* Visibility: **public** -* This method is **static**. - - - - -### isValid - - boolean LaravelFCM\Message\OptionsPriorities::isValid($priority) - -check if this priority is supported by fcm - - - -* Visibility: **public** -* This method is **static**. - - -#### Arguments -* $priority **mixed** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadData.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadData.md deleted file mode 100644 index 7c3238673..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadData.md +++ /dev/null @@ -1,49 +0,0 @@ -LaravelFCM\Message\PayloadData -=============== - -Class PayloadData - - - - -* Class name: PayloadData -* Namespace: LaravelFCM\Message -* This class implements: Illuminate\Contracts\Support\Arrayable - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Message\PayloadData::__construct(\LaravelFCM\Message\PayloadDataBuilder $builder) - -PayloadData constructor. - - - -* Visibility: **public** - - -#### Arguments -* $builder **[LaravelFCM\Message\PayloadDataBuilder](LaravelFCM-Message-PayloadDataBuilder.md)** - - - -### toArray - - array LaravelFCM\Message\PayloadData::toArray() - -Transform payloadData to array - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadDataBuilder.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadDataBuilder.md deleted file mode 100644 index ef565b2c1..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadDataBuilder.md +++ /dev/null @@ -1,91 +0,0 @@ -LaravelFCM\Message\PayloadDataBuilder -=============== - -Class PayloadDataBuilder - -Official google documentation : - - -* Class name: PayloadDataBuilder -* Namespace: LaravelFCM\Message - - - - - - - -Methods -------- - - -### addData - - \LaravelFCM\Message\PayloadDataBuilder LaravelFCM\Message\PayloadDataBuilder::addData(array $data) - -add data to existing data - - - -* Visibility: **public** - - -#### Arguments -* $data **array** - - - -### setData - - \LaravelFCM\Message\PayloadDataBuilder LaravelFCM\Message\PayloadDataBuilder::setData(array $data) - -erase data with new data - - - -* Visibility: **public** - - -#### Arguments -* $data **array** - - - -### removeAllData - - mixed LaravelFCM\Message\PayloadDataBuilder::removeAllData() - -Remove all data - - - -* Visibility: **public** - - - - -### getData - - array LaravelFCM\Message\PayloadDataBuilder::getData() - -return data - - - -* Visibility: **public** - - - - -### build - - \LaravelFCM\Message\PayloadData LaravelFCM\Message\PayloadDataBuilder::build() - -generate a PayloadData - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotification.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotification.md deleted file mode 100644 index 863071fb8..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotification.md +++ /dev/null @@ -1,49 +0,0 @@ -LaravelFCM\Message\PayloadNotification -=============== - -Class PayloadNotification - - - - -* Class name: PayloadNotification -* Namespace: LaravelFCM\Message -* This class implements: Illuminate\Contracts\Support\Arrayable - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Message\PayloadNotification::__construct(\LaravelFCM\Message\PayloadNotificationBuilder $builder) - -PayloadNotification constructor. - - - -* Visibility: **public** - - -#### Arguments -* $builder **[LaravelFCM\Message\PayloadNotificationBuilder](LaravelFCM-Message-PayloadNotificationBuilder.md)** - - - -### toArray - - array LaravelFCM\Message\PayloadNotification::toArray() - -convert PayloadNotification to array - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotificationBuilder.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotificationBuilder.md deleted file mode 100644 index 1cd38e031..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-PayloadNotificationBuilder.md +++ /dev/null @@ -1,400 +0,0 @@ -LaravelFCM\Message\PayloadNotificationBuilder -=============== - -Class PayloadNotificationBuilder - -Official google documentation : - - -* Class name: PayloadNotificationBuilder -* Namespace: LaravelFCM\Message - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Message\PayloadNotificationBuilder::__construct(String $title) - -Title must be present on android notification and ios (watch) notification - - - -* Visibility: **public** - - -#### Arguments -* $title **String** - - - -### setTitle - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setTitle(String $title) - -Indicates notification title. This field is not visible on iOS phones and tablets. - -but it is required for android - -* Visibility: **public** - - -#### Arguments -* $title **String** - - - -### setBody - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setBody(String $body) - -Indicates notification body text. - - - -* Visibility: **public** - - -#### Arguments -* $body **String** - - - -### setIcon - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setIcon(String $icon) - -Supported Android -Indicates notification icon. example : Sets value to myicon for drawable resource myicon. - - - -* Visibility: **public** - - -#### Arguments -* $icon **String** - - - -### setSound - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setSound(String $sound) - -Indicates a sound to play when the device receives a notification. - -Supports default or the filename of a sound resource bundled in the app. - -* Visibility: **public** - - -#### Arguments -* $sound **String** - - - -### setBadge - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setBadge(String $badge) - -Supported Ios - -Indicates the badge on the client app home icon. - -* Visibility: **public** - - -#### Arguments -* $badge **String** - - - -### setTag - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setTag(String $tag) - -Supported Android - -Indicates whether each notification results in a new entry in the notification drawer on Android. -If not set, each request creates a new notification. -If set, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. - -* Visibility: **public** - - -#### Arguments -* $tag **String** - - - -### setColor - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setColor(String $color) - -Supported Android - -Indicates color of the icon, expressed in #rrggbb format - -* Visibility: **public** - - -#### Arguments -* $color **String** - - - -### setClickAction - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setClickAction(String $action) - -Indicates the action associated with a user click on the notification - - - -* Visibility: **public** - - -#### Arguments -* $action **String** - - - -### setTitleLocationKey - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setTitleLocationKey(String $titleKey) - -Indicates the key to the title string for localization. - - - -* Visibility: **public** - - -#### Arguments -* $titleKey **String** - - - -### setTitleLocationArgs - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setTitleLocationArgs(mixed $titleArgs) - -Indicates the string value to replace format specifiers in the title string for localization. - - - -* Visibility: **public** - - -#### Arguments -* $titleArgs **mixed** - - - -### setBodyLocationKey - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setBodyLocationKey(String $bodyKey) - -Indicates the key to the body string for localization. - - - -* Visibility: **public** - - -#### Arguments -* $bodyKey **String** - - - -### setBodyLocationArgs - - \LaravelFCM\Message\PayloadNotificationBuilder LaravelFCM\Message\PayloadNotificationBuilder::setBodyLocationArgs(mixed $bodyArgs) - -Indicates the string value to replace format specifiers in the body string for localization. - - - -* Visibility: **public** - - -#### Arguments -* $bodyArgs **mixed** - - - -### getTitle - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getTitle() - -Get title - - - -* Visibility: **public** - - - - -### getBody - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getBody() - -Get body - - - -* Visibility: **public** - - - - -### getIcon - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getIcon() - -Get Icon - - - -* Visibility: **public** - - - - -### getSound - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getSound() - -Get Sound - - - -* Visibility: **public** - - - - -### getBadge - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getBadge() - -Get Badge - - - -* Visibility: **public** - - - - -### getTag - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getTag() - -Get Tag - - - -* Visibility: **public** - - - - -### getColor - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getColor() - -Get Color - - - -* Visibility: **public** - - - - -### getClickAction - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getClickAction() - -Get ClickAction - - - -* Visibility: **public** - - - - -### getBodyLocationKey - - null|String LaravelFCM\Message\PayloadNotificationBuilder::getBodyLocationKey() - -Get BodyLocationKey - - - -* Visibility: **public** - - - - -### getBodyLocationArgs - - null|String|array LaravelFCM\Message\PayloadNotificationBuilder::getBodyLocationArgs() - -Get BodyLocationArgs - - - -* Visibility: **public** - - - - -### getTitleLocationKey - - string LaravelFCM\Message\PayloadNotificationBuilder::getTitleLocationKey() - -Get TitleLocationKey - - - -* Visibility: **public** - - - - -### getTitleLocationArgs - - null|String|array LaravelFCM\Message\PayloadNotificationBuilder::getTitleLocationArgs() - -GetTitleLocationArgs - - - -* Visibility: **public** - - - - -### build - - \LaravelFCM\Message\PayloadNotification LaravelFCM\Message\PayloadNotificationBuilder::build() - -Build an PayloadNotification - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Topics.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Topics.md deleted file mode 100644 index 094635120..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Message-Topics.md +++ /dev/null @@ -1,134 +0,0 @@ -LaravelFCM\Message\Topics -=============== - -Class Topics - -Create topic or a topic condition - - -* Class name: Topics -* Namespace: LaravelFCM\Message - - - - - - - -Methods -------- - - -### topic - - \LaravelFCM\Message\Topics LaravelFCM\Message\Topics::topic(string $first) - -Add a topic, this method should be called before any conditional topic - - - -* Visibility: **public** - - -#### Arguments -* $first **string** - <p>topicName</p> - - - -### orTopic - - \LaravelFCM\Message\Topics LaravelFCM\Message\Topics::orTopic(string|\Closure $first) - -Add a or condition to the precedent topic set - -Parenthesis is a closure - -Equivalent of this: **'TopicA' in topic' || 'TopicB' in topics** - -``` - $topic = new Topics(); - $topic->topic('TopicA') - ->orTopic('TopicB'); -``` - -Equivalent of this: **'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)** - -``` - $topic = new Topics(); - $topic->topic('TopicA') - ->andTopic(function($condition) { - $condition->topic('TopicB')->orTopic('TopicC'); - }); -``` - -> Note: Only two operators per expression are supported by fcm - -* Visibility: **public** - - -#### Arguments -* $first **string|Closure** - <p>topicName or closure</p> - - - -### andTopic - - \LaravelFCM\Message\Topics LaravelFCM\Message\Topics::andTopic(string|\Closure $first) - -Add a and condition to the precedent topic set - -Parenthesis is a closure - -Equivalent of this: **'TopicA' in topic' && 'TopicB' in topics** - -``` - $topic = new Topics(); - $topic->topic('TopicA') - ->anTopic('TopicB'); -``` - -Equivalent of this: **'TopicA' in topics || ('TopicB' in topics && 'TopicC' in topics)** - -``` - $topic = new Topics(); - $topic->topic('TopicA') - ->orTopic(function($condition) { - $condition->topic('TopicB')->AndTopic('TopicC'); - }); -``` - -> Note: Only two operators per expression are supported by fcm - -* Visibility: **public** - - -#### Arguments -* $first **string|Closure** - <p>topicName or closure</p> - - - -### build - - array|string LaravelFCM\Message\Topics::build() - -Transform to array - - - -* Visibility: **public** - - - - -### hasOnlyOneTopic - - boolean LaravelFCM\Message\Topics::hasOnlyOneTopic() - -Check if only one topic was set - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-BaseResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-BaseResponse.md deleted file mode 100644 index 8fb5fa4bf..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-BaseResponse.md +++ /dev/null @@ -1,118 +0,0 @@ -LaravelFCM\Response\BaseResponse -=============== - -Class BaseResponse - - - - -* Class name: BaseResponse -* Namespace: LaravelFCM\Response -* This is an **abstract** class - - - -Constants ----------- - - -### SUCCESS - - const SUCCESS = 'success' - - - - - -### FAILURE - - const FAILURE = 'failure' - - - - - -### ERROR - - const ERROR = "error" - - - - - -### MESSAGE_ID - - const MESSAGE_ID = "message_id" - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\BaseResponse::__construct(\GuzzleHttp\Psr7\Response $response) - -BaseResponse constructor. - - - -* Visibility: **public** - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### isJsonResponse - - mixed LaravelFCM\Response\BaseResponse::isJsonResponse(\GuzzleHttp\Psr7\Response $response) - -Check if the response given by fcm is parsable - - - -* Visibility: **private** - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### parseResponse - - mixed LaravelFCM\Response\BaseResponse::parseResponse(array $responseInJson) - -parse the response - - - -* Visibility: **protected** -* This method is **abstract**. - - -#### Arguments -* $responseInJson **array** - - - -### logResponse - - mixed LaravelFCM\Response\BaseResponse::logResponse() - -Log the response - - - -* Visibility: **protected** -* This method is **abstract**. - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponse.md deleted file mode 100644 index f9edf1eee..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponse.md +++ /dev/null @@ -1,338 +0,0 @@ -LaravelFCM\Response\DownstreamResponse -=============== - -Class DownstreamResponse - - - - -* Class name: DownstreamResponse -* Namespace: LaravelFCM\Response -* Parent class: [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) -* This class implements: [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - -Constants ----------- - - -### MULTICAST_ID - - const MULTICAST_ID = 'multicast_id' - - - - - -### CANONICAL_IDS - - const CANONICAL_IDS = "canonical_ids" - - - - - -### RESULTS - - const RESULTS = "results" - - - - - -### MISSING_REGISTRATION - - const MISSING_REGISTRATION = "MissingRegistration" - - - - - -### MESSAGE_ID - - const MESSAGE_ID = "message_id" - - - - - -### REGISTRATION_ID - - const REGISTRATION_ID = "registration_id" - - - - - -### NOT_REGISTERED - - const NOT_REGISTERED = "NotRegistered" - - - - - -### INVALID_REGISTRATION - - const INVALID_REGISTRATION = "InvalidRegistration" - - - - - -### UNAVAILABLE - - const UNAVAILABLE = "Unavailable" - - - - - -### DEVICE_MESSAGE_RATE_EXCEEDED - - const DEVICE_MESSAGE_RATE_EXCEEDED = "DeviceMessageRateExceeded" - - - - - -### INTERNAL_SERVER_ERROR - - const INTERNAL_SERVER_ERROR = "InternalServerError" - - - - - -### SUCCESS - - const SUCCESS = 'success' - - - - - -### FAILURE - - const FAILURE = 'failure' - - - - - -### ERROR - - const ERROR = "error" - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\BaseResponse::__construct(\GuzzleHttp\Psr7\Response $response) - -BaseResponse constructor. - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### parseResponse - - mixed LaravelFCM\Response\BaseResponse::parseResponse(array $responseInJson) - -parse the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $responseInJson **array** - - - -### merge - - mixed LaravelFCM\Response\DownstreamResponseContract::merge(\LaravelFCM\Response\DownstreamResponse $response) - -Merge two response - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - -#### Arguments -* $response **[LaravelFCM\Response\DownstreamResponse](LaravelFCM-Response-DownstreamResponse.md)** - - - -### numberSuccess - - integer LaravelFCM\Response\DownstreamResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### numberFailure - - integer LaravelFCM\Response\DownstreamResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### numberModification - - integer LaravelFCM\Response\DownstreamResponseContract::numberModification() - -Get the number of device that you need to modify their token - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### tokensToDelete - - array LaravelFCM\Response\DownstreamResponseContract::tokensToDelete() - -get token to delete - -remove all tokens returned by this method in your database - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### tokensToModify - - array LaravelFCM\Response\DownstreamResponseContract::tokensToModify() - -get token to modify - -key: oldToken -value: new token - -find the old token in your database and replace it with the new one - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### tokensToRetry - - array LaravelFCM\Response\DownstreamResponseContract::tokensToRetry() - -Get tokens that you should resend using exponential backoof - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### tokensWithError - - array LaravelFCM\Response\DownstreamResponseContract::tokensWithError() - -Get tokens that thrown an error - -key : token -value : error - -In production, remove these tokens from you database - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### hasMissingToken - - boolean LaravelFCM\Response\DownstreamResponseContract::hasMissingToken() - -check if missing tokens was given to the request -If true, remove all the empty token in your database - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### isJsonResponse - - mixed LaravelFCM\Response\BaseResponse::isJsonResponse(\GuzzleHttp\Psr7\Response $response) - -Check if the response given by fcm is parsable - - - -* Visibility: **private** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### logResponse - - mixed LaravelFCM\Response\BaseResponse::logResponse() - -Log the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponseContract.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponseContract.md deleted file mode 100644 index ac46072a0..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-DownstreamResponseContract.md +++ /dev/null @@ -1,147 +0,0 @@ -LaravelFCM\Response\DownstreamResponseContract -=============== - -Interface DownstreamResponseContract - - - - -* Interface name: DownstreamResponseContract -* Namespace: LaravelFCM\Response -* This is an **interface** - - - - - - -Methods -------- - - -### merge - - mixed LaravelFCM\Response\DownstreamResponseContract::merge(\LaravelFCM\Response\DownstreamResponse $response) - -Merge two response - - - -* Visibility: **public** - - -#### Arguments -* $response **[LaravelFCM\Response\DownstreamResponse](LaravelFCM-Response-DownstreamResponse.md)** - - - -### numberSuccess - - integer LaravelFCM\Response\DownstreamResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** - - - - -### numberFailure - - integer LaravelFCM\Response\DownstreamResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** - - - - -### numberModification - - integer LaravelFCM\Response\DownstreamResponseContract::numberModification() - -Get the number of device that you need to modify their token - - - -* Visibility: **public** - - - - -### tokensToDelete - - array LaravelFCM\Response\DownstreamResponseContract::tokensToDelete() - -get token to delete - -remove all tokens returned by this method in your database - -* Visibility: **public** - - - - -### tokensToModify - - array LaravelFCM\Response\DownstreamResponseContract::tokensToModify() - -get token to modify - -key: oldToken -value: new token - -find the old token in your database and replace it with the new one - -* Visibility: **public** - - - - -### tokensToRetry - - array LaravelFCM\Response\DownstreamResponseContract::tokensToRetry() - -Get tokens that you should resend using exponential backoof - - - -* Visibility: **public** - - - - -### tokensWithError - - array LaravelFCM\Response\DownstreamResponseContract::tokensWithError() - -Get tokens that thrown an error - -key : token -value : error - -In production, remove these tokens from you database - -* Visibility: **public** - - - - -### hasMissingToken - - boolean LaravelFCM\Response\DownstreamResponseContract::hasMissingToken() - -check if missing tokens was given to the request -If true, remove all the empty token in your database - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-InvalidRequestException.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-InvalidRequestException.md deleted file mode 100644 index 4d7e63103..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-InvalidRequestException.md +++ /dev/null @@ -1,37 +0,0 @@ -LaravelFCM\Response\Exceptions\InvalidRequestException -=============== - -Class InvalidRequestException - - - - -* Class name: InvalidRequestException -* Namespace: LaravelFCM\Response\Exceptions -* Parent class: Exception - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\Exceptions\InvalidRequestException::__construct(\GuzzleHttp\Psr7\Response $response) - -InvalidRequestException constructor. - - - -* Visibility: **public** - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-ServerResponseException.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-ServerResponseException.md deleted file mode 100644 index 1eac3a9f5..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-ServerResponseException.md +++ /dev/null @@ -1,50 +0,0 @@ -LaravelFCM\Response\Exceptions\ServerResponseException -=============== - -Class ServerResponseException - - - - -* Class name: ServerResponseException -* Namespace: LaravelFCM\Response\Exceptions -* Parent class: Exception - - - - - -Properties ----------- - - -### $retryAfter - - public integer $retryAfter - -retry after - - - -* Visibility: **public** - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\Exceptions\ServerResponseException::__construct(\GuzzleHttp\Psr7\Response $response) - -ServerResponseException constructor. - - - -* Visibility: **public** - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-UnauthorizedRequestException.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-UnauthorizedRequestException.md deleted file mode 100644 index 2583f23f7..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-Exceptions-UnauthorizedRequestException.md +++ /dev/null @@ -1,37 +0,0 @@ -LaravelFCM\Response\Exceptions\UnauthorizedRequestException -=============== - -Class UnauthorizedRequestException - - - - -* Class name: UnauthorizedRequestException -* Namespace: LaravelFCM\Response\Exceptions -* Parent class: Exception - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\Exceptions\UnauthorizedRequestException::__construct(\GuzzleHttp\Psr7\Response $response) - -UnauthorizedRequestException constructor. - - - -* Visibility: **public** - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponse.md deleted file mode 100644 index e99cc1ed6..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponse.md +++ /dev/null @@ -1,172 +0,0 @@ -LaravelFCM\Response\GroupResponse -=============== - -Class GroupResponse - - - - -* Class name: GroupResponse -* Namespace: LaravelFCM\Response -* Parent class: [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) -* This class implements: [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - -Constants ----------- - - -### FAILED_REGISTRATION_IDS - - const FAILED_REGISTRATION_IDS = "failed_registration_ids" - - - - - -### SUCCESS - - const SUCCESS = 'success' - - - - - -### FAILURE - - const FAILURE = 'failure' - - - - - -### ERROR - - const ERROR = "error" - - - - - -### MESSAGE_ID - - const MESSAGE_ID = "message_id" - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\BaseResponse::__construct(\GuzzleHttp\Psr7\Response $response) - -BaseResponse constructor. - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### parseResponse - - mixed LaravelFCM\Response\BaseResponse::parseResponse(array $responseInJson) - -parse the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $responseInJson **array** - - - -### logResponse - - mixed LaravelFCM\Response\BaseResponse::logResponse() - -Log the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - - - -### numberSuccess - - integer LaravelFCM\Response\GroupResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - -### numberFailure - - integer LaravelFCM\Response\GroupResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - -### tokensFailed - - array LaravelFCM\Response\GroupResponseContract::tokensFailed() - -Get all token in group that fcm cannot reach - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - -### isJsonResponse - - mixed LaravelFCM\Response\BaseResponse::isJsonResponse(\GuzzleHttp\Psr7\Response $response) - -Check if the response given by fcm is parsable - - - -* Visibility: **private** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponseContract.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponseContract.md deleted file mode 100644 index dc399d1b4..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-GroupResponseContract.md +++ /dev/null @@ -1,59 +0,0 @@ -LaravelFCM\Response\GroupResponseContract -=============== - -Interface GroupResponseContract - - - - -* Interface name: GroupResponseContract -* Namespace: LaravelFCM\Response -* This is an **interface** - - - - - - -Methods -------- - - -### numberSuccess - - integer LaravelFCM\Response\GroupResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** - - - - -### numberFailure - - integer LaravelFCM\Response\GroupResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** - - - - -### tokensFailed - - array LaravelFCM\Response\GroupResponseContract::tokensFailed() - -Get all token in group that fcm cannot reach - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponse.md deleted file mode 100644 index 5f9227ba0..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponse.md +++ /dev/null @@ -1,173 +0,0 @@ -LaravelFCM\Response\TopicResponse -=============== - -Class TopicResponse - - - - -* Class name: TopicResponse -* Namespace: LaravelFCM\Response -* Parent class: [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) -* This class implements: [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - -Constants ----------- - - -### LIMIT_RATE_TOPICS_EXCEEDED - - const LIMIT_RATE_TOPICS_EXCEEDED = "TopicsMessageRateExceeded" - - - - - -### SUCCESS - - const SUCCESS = 'success' - - - - - -### FAILURE - - const FAILURE = 'failure' - - - - - -### ERROR - - const ERROR = "error" - - - - - -### MESSAGE_ID - - const MESSAGE_ID = "message_id" - - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Response\BaseResponse::__construct(\GuzzleHttp\Psr7\Response $response) - -BaseResponse constructor. - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - - -### parseResponse - - mixed LaravelFCM\Response\BaseResponse::parseResponse(array $responseInJson) - -parse the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $responseInJson **array** - - - -### logResponse - - mixed LaravelFCM\Response\BaseResponse::logResponse() - -Log the response - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - - - -### isSuccess - - boolean LaravelFCM\Response\TopicResponseContract::isSuccess() - -true if topic sent with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - -### error - - string LaravelFCM\Response\TopicResponseContract::error() - -return error message -you should test if it's necessary to resent it - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - -### shouldRetry - - boolean LaravelFCM\Response\TopicResponseContract::shouldRetry() - -return true if it's necessary resent it using exponential backoff - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - -### isJsonResponse - - mixed LaravelFCM\Response\BaseResponse::isJsonResponse(\GuzzleHttp\Psr7\Response $response) - -Check if the response given by fcm is parsable - - - -* Visibility: **private** -* This method is defined by [LaravelFCM\Response\BaseResponse](LaravelFCM-Response-BaseResponse.md) - - -#### Arguments -* $response **GuzzleHttp\Psr7\Response** - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponseContract.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponseContract.md deleted file mode 100644 index 42f330246..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Response-TopicResponseContract.md +++ /dev/null @@ -1,60 +0,0 @@ -LaravelFCM\Response\TopicResponseContract -=============== - -Interface TopicResponseContract - - - - -* Interface name: TopicResponseContract -* Namespace: LaravelFCM\Response -* This is an **interface** - - - - - - -Methods -------- - - -### isSuccess - - boolean LaravelFCM\Response\TopicResponseContract::isSuccess() - -true if topic sent with success - - - -* Visibility: **public** - - - - -### error - - string LaravelFCM\Response\TopicResponseContract::error() - -return error message -you should test if it's necessary to resent it - - - -* Visibility: **public** - - - - -### shouldRetry - - boolean LaravelFCM\Response\TopicResponseContract::shouldRetry() - -return true if it's necessary resent it using exponential backoff - - - -* Visibility: **public** - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-BaseSender.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-BaseSender.md deleted file mode 100644 index ce4b7afe7..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-BaseSender.md +++ /dev/null @@ -1,83 +0,0 @@ -LaravelFCM\Sender\BaseSender -=============== - -Class BaseSender - - - - -* Class name: BaseSender -* Namespace: LaravelFCM\Sender -* This is an **abstract** class - - - - - -Properties ----------- - - -### $client - - protected \Illuminate\Foundation\Application $client - -Guzzle Client - - - -* Visibility: **protected** - - -### $config - - protected array $config - -configuration - - - -* Visibility: **protected** - - -### $url - - protected mixed $url - -url - - - -* Visibility: **protected** - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Sender\BaseSender::__construct() - -BaseSender constructor. - - - -* Visibility: **public** - - - - -### getUrl - - string LaravelFCM\Sender\BaseSender::getUrl() - -get the url - - - -* Visibility: **protected** -* This method is **abstract**. - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMGroup.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMGroup.md deleted file mode 100644 index 98dbd4fc5..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMGroup.md +++ /dev/null @@ -1,164 +0,0 @@ -LaravelFCM\Sender\FCMGroup -=============== - -Class FCMGroup - - - - -* Class name: FCMGroup -* Namespace: LaravelFCM\Sender -* Parent class: [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - -Constants ----------- - - -### CREATE - - const CREATE = "create" - - - - - -### ADD - - const ADD = "add" - - - - - -### REMOVE - - const REMOVE = "remove" - - - - - -Properties ----------- - - -### $client - - protected \Illuminate\Foundation\Application $client - -Guzzle Client - - - -* Visibility: **protected** - - -### $config - - protected array $config - -configuration - - - -* Visibility: **protected** - - -### $url - - protected mixed $url - -url - - - -* Visibility: **protected** - - -Methods -------- - - -### createGroup - - null LaravelFCM\Sender\FCMGroup::createGroup($notificationKeyName, array $registrationIds) - -Create a group - - - -* Visibility: **public** - - -#### Arguments -* $notificationKeyName **mixed** -* $registrationIds **array** - - - -### addToGroup - - null LaravelFCM\Sender\FCMGroup::addToGroup($notificationKeyName, $notificationKey, array $registrationIds) - -add registrationId to a existing group - - - -* Visibility: **public** - - -#### Arguments -* $notificationKeyName **mixed** -* $notificationKey **mixed** -* $registrationIds **array** - <p>registrationIds to add</p> - - - -### removeFromGroup - - null LaravelFCM\Sender\FCMGroup::removeFromGroup($notificationKeyName, $notificationKey, array $registeredIds) - -remove registrationId to a existing group - ->Note: if you remove all registrationIds the group is automatically deleted - -* Visibility: **public** - - -#### Arguments -* $notificationKeyName **mixed** -* $notificationKey **mixed** -* $registeredIds **array** - <p>registrationIds to remove</p> - - - -### getUrl - - string LaravelFCM\Sender\BaseSender::getUrl() - -get the url - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - - -### __construct - - mixed LaravelFCM\Sender\BaseSender::__construct() - -BaseSender constructor. - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMSender.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMSender.md deleted file mode 100644 index 626042277..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Sender-FCMSender.md +++ /dev/null @@ -1,153 +0,0 @@ -LaravelFCM\Sender\FCMSender -=============== - -Class FCMSender - - - - -* Class name: FCMSender -* Namespace: LaravelFCM\Sender -* Parent class: [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - -Constants ----------- - - -### MAX_TOKEN_PER_REQUEST - - const MAX_TOKEN_PER_REQUEST = 1000 - - - - - -Properties ----------- - - -### $client - - protected \Illuminate\Foundation\Application $client - -Guzzle Client - - - -* Visibility: **protected** - - -### $config - - protected array $config - -configuration - - - -* Visibility: **protected** - - -### $url - - protected mixed $url - -url - - - -* Visibility: **protected** - - -Methods -------- - - -### sendTo - - \LaravelFCM\Response\DownstreamResponse|null LaravelFCM\Sender\FCMSender::sendTo(String|array $to, \LaravelFCM\Message\Options|null $options, \LaravelFCM\Message\PayloadNotification|null $notification, \LaravelFCM\Message\PayloadData|null $data) - -send a downstream message to - -- a unique device with is registration Token -- or to multiples devices with an array of registrationIds - -* Visibility: **public** - - -#### Arguments -* $to **String|array** -* $options **[LaravelFCM\Message\Options](LaravelFCM-Message-Options.md)|null** -* $notification **[LaravelFCM\Message\PayloadNotification](LaravelFCM-Message-PayloadNotification.md)|null** -* $data **[LaravelFCM\Message\PayloadData](LaravelFCM-Message-PayloadData.md)|null** - - - -### sendToGroup - - \LaravelFCM\Response\GroupResponse LaravelFCM\Sender\FCMSender::sendToGroup($notificationKey, \LaravelFCM\Message\Options|null $options, \LaravelFCM\Message\PayloadNotification|null $notification, \LaravelFCM\Message\PayloadData|null $data) - -Send a message to a group of devices identified with them notification key - - - -* Visibility: **public** - - -#### Arguments -* $notificationKey **mixed** -* $options **[LaravelFCM\Message\Options](LaravelFCM-Message-Options.md)|null** -* $notification **[LaravelFCM\Message\PayloadNotification](LaravelFCM-Message-PayloadNotification.md)|null** -* $data **[LaravelFCM\Message\PayloadData](LaravelFCM-Message-PayloadData.md)|null** - - - -### sendToTopic - - \LaravelFCM\Response\TopicResponse LaravelFCM\Sender\FCMSender::sendToTopic(\LaravelFCM\Message\Topics $topics, \LaravelFCM\Message\Options|null $options, \LaravelFCM\Message\PayloadNotification|null $notification, \LaravelFCM\Message\PayloadData|null $data) - -Send message devices registered at a or more topics - - - -* Visibility: **public** - - -#### Arguments -* $topics **[LaravelFCM\Message\Topics](LaravelFCM-Message-Topics.md)** -* $options **[LaravelFCM\Message\Options](LaravelFCM-Message-Options.md)|null** -* $notification **[LaravelFCM\Message\PayloadNotification](LaravelFCM-Message-PayloadNotification.md)|null** -* $data **[LaravelFCM\Message\PayloadData](LaravelFCM-Message-PayloadData.md)|null** - - - -### getUrl - - string LaravelFCM\Sender\BaseSender::getUrl() - -get the url - - - -* Visibility: **protected** -* This method is **abstract**. -* This method is defined by [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - - -### __construct - - mixed LaravelFCM\Sender\BaseSender::__construct() - -BaseSender constructor. - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Sender\BaseSender](LaravelFCM-Sender-BaseSender.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockDownstreamResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockDownstreamResponse.md deleted file mode 100644 index f679f38eb..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockDownstreamResponse.md +++ /dev/null @@ -1,254 +0,0 @@ -LaravelFCM\Test\Mocks\MockDownstreamResponse -=============== - -Class MockDownstreamResponse **Only use it for testing** - - - - -* Class name: MockDownstreamResponse -* Namespace: LaravelFCM\Test\Mocks -* This class implements: [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - - - -Methods -------- - - -### __construct - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::__construct($numberSuccess) - -DownstreamResponse constructor. - - - -* Visibility: **public** - - -#### Arguments -* $numberSuccess **mixed** - - - -### merge - - mixed LaravelFCM\Response\DownstreamResponseContract::merge(\LaravelFCM\Response\DownstreamResponse $response) - -Merge two response - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - -#### Arguments -* $response **[LaravelFCM\Response\DownstreamResponse](LaravelFCM-Response-DownstreamResponse.md)** - - - -### numberSuccess - - integer LaravelFCM\Response\DownstreamResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### numberFailure - - integer LaravelFCM\Response\DownstreamResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### numberModification - - integer LaravelFCM\Response\DownstreamResponseContract::numberModification() - -Get the number of device that you need to modify their token - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### addTokenToDelete - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::addTokenToDelete($token) - -Add a token to delete - - - -* Visibility: **public** - - -#### Arguments -* $token **mixed** - - - -### tokensToDelete - - array LaravelFCM\Response\DownstreamResponseContract::tokensToDelete() - -get token to delete - -remove all tokens returned by this method in your database - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### addTokenToModify - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::addTokenToModify($oldToken, $newToken) - -Add a token to modify - - - -* Visibility: **public** - - -#### Arguments -* $oldToken **mixed** -* $newToken **mixed** - - - -### tokensToModify - - array LaravelFCM\Response\DownstreamResponseContract::tokensToModify() - -get token to modify - -key: oldToken -value: new token - -find the old token in your database and replace it with the new one - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### addTokenToRetry - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::addTokenToRetry($token) - -Add a token to retry - - - -* Visibility: **public** - - -#### Arguments -* $token **mixed** - - - -### tokensToRetry - - array LaravelFCM\Response\DownstreamResponseContract::tokensToRetry() - -Get tokens that you should resend using exponential backoof - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### addTokenWithError - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::addTokenWithError($token, $message) - -Add a token to errors - - - -* Visibility: **public** - - -#### Arguments -* $token **mixed** -* $message **mixed** - - - -### tokensWithError - - array LaravelFCM\Response\DownstreamResponseContract::tokensWithError() - -Get tokens that thrown an error - -key : token -value : error - -In production, remove these tokens from you database - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - - -### setMissingToken - - mixed LaravelFCM\Test\Mocks\MockDownstreamResponse::setMissingToken($hasMissingToken) - -change missing token state - - - -* Visibility: **public** - - -#### Arguments -* $hasMissingToken **mixed** - - - -### hasMissingToken - - boolean LaravelFCM\Response\DownstreamResponseContract::hasMissingToken() - -check if missing tokens was given to the request -If true, remove all the empty token in your database - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockGroupResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockGroupResponse.md deleted file mode 100644 index 25cd719a7..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockGroupResponse.md +++ /dev/null @@ -1,110 +0,0 @@ -LaravelFCM\Test\Mocks\MockGroupResponse -=============== - -Class MockGroupResponse **Only use it for testing** - - - - -* Class name: MockGroupResponse -* Namespace: LaravelFCM\Test\Mocks -* This class implements: [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - - - -Methods -------- - - -### setNumberSuccess - - mixed LaravelFCM\Test\Mocks\MockGroupResponse::setNumberSuccess($numberSuccess) - -set number of success - - - -* Visibility: **public** - - -#### Arguments -* $numberSuccess **mixed** - - - -### numberSuccess - - integer LaravelFCM\Response\GroupResponseContract::numberSuccess() - -Get the number of device reached with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - -### setNumberFailure - - mixed LaravelFCM\Test\Mocks\MockGroupResponse::setNumberFailure($numberFailures) - -set number of failures - - - -* Visibility: **public** - - -#### Arguments -* $numberFailures **mixed** - - - -### numberFailure - - integer LaravelFCM\Response\GroupResponseContract::numberFailure() - -Get the number of device which thrown an error - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - - -### addTokenFailed - - mixed LaravelFCM\Test\Mocks\MockGroupResponse::addTokenFailed($tokenFailed) - -add a token to the failed list - - - -* Visibility: **public** - - -#### Arguments -* $tokenFailed **mixed** - - - -### tokensFailed - - array LaravelFCM\Response\GroupResponseContract::tokensFailed() - -Get all token in group that fcm cannot reach - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockTopicResponse.md b/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockTopicResponse.md deleted file mode 100644 index 8a686db40..000000000 --- a/vendor/brozot/laravel-fcm/doc/LaravelFCM-Test-Mocks-MockTopicResponse.md +++ /dev/null @@ -1,95 +0,0 @@ -LaravelFCM\Test\Mocks\MockTopicResponse -=============== - -Class MockTopicResponse **Only use it for testing** - - - - -* Class name: MockTopicResponse -* Namespace: LaravelFCM\Test\Mocks -* This class implements: [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - - - -Methods -------- - - -### setSuccess - - mixed LaravelFCM\Test\Mocks\MockTopicResponse::setSuccess($messageId) - -if success set a message id - - - -* Visibility: **public** - - -#### Arguments -* $messageId **mixed** - - - -### isSuccess - - boolean LaravelFCM\Response\TopicResponseContract::isSuccess() - -true if topic sent with success - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - -### setError - - mixed LaravelFCM\Test\Mocks\MockTopicResponse::setError($error) - -set error - - - -* Visibility: **public** - - -#### Arguments -* $error **mixed** - - - -### error - - string LaravelFCM\Response\TopicResponseContract::error() - -return error message -you should test if it's necessary to resent it - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - - -### shouldRetry - - boolean LaravelFCM\Response\TopicResponseContract::shouldRetry() - -return true if it's necessary resent it using exponential backoff - - - -* Visibility: **public** -* This method is defined by [LaravelFCM\Response\TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - - - diff --git a/vendor/brozot/laravel-fcm/doc/Readme.md b/vendor/brozot/laravel-fcm/doc/Readme.md deleted file mode 100644 index 1d3d6ab72..000000000 --- a/vendor/brozot/laravel-fcm/doc/Readme.md +++ /dev/null @@ -1,38 +0,0 @@ -API Index -========= - -* LaravelFCM - * LaravelFCM\Message - * LaravelFCM\Message\Exceptions - * [InvalidOptionsException](LaravelFCM-Message-Exceptions-InvalidOptionsException.md) - * [NoTopicProvidedException](LaravelFCM-Message-Exceptions-NoTopicProvidedException.md) - * [Options](LaravelFCM-Message-Options.md) - * [OptionsBuilder](LaravelFCM-Message-OptionsBuilder.md) - * [OptionsPriorities](LaravelFCM-Message-OptionsPriorities.md) - * [PayloadData](LaravelFCM-Message-PayloadData.md) - * [PayloadDataBuilder](LaravelFCM-Message-PayloadDataBuilder.md) - * [PayloadNotification](LaravelFCM-Message-PayloadNotification.md) - * [PayloadNotificationBuilder](LaravelFCM-Message-PayloadNotificationBuilder.md) - * [Topics](LaravelFCM-Message-Topics.md) - * LaravelFCM\Sender - * [BaseSender](LaravelFCM-Sender-BaseSender.md) - * [FCMGroup](LaravelFCM-Sender-FCMGroup.md) - * [FCMSender](LaravelFCM-Sender-FCMSender.md) - * LaravelFCM\Response - * [BaseResponse](LaravelFCM-Response-BaseResponse.md) - * [DownstreamResponse](LaravelFCM-Response-DownstreamResponse.md) - * [DownstreamResponseContract](LaravelFCM-Response-DownstreamResponseContract.md) - * LaravelFCM\Response\Exceptions - * [InvalidRequestException](LaravelFCM-Response-Exceptions-InvalidRequestException.md) - * [ServerResponseException](LaravelFCM-Response-Exceptions-ServerResponseException.md) - * [UnauthorizedRequestException](LaravelFCM-Response-Exceptions-UnauthorizedRequestException.md) - * [GroupResponse](LaravelFCM-Response-GroupResponse.md) - * [GroupResponseContract](LaravelFCM-Response-GroupResponseContract.md) - * [TopicResponse](LaravelFCM-Response-TopicResponse.md) - * [TopicResponseContract](LaravelFCM-Response-TopicResponseContract.md) - * LaravelFCM\Test - * LaravelFCM\Test\Mocks - * [MockDownstreamResponse](LaravelFCM-Test-Mocks-MockDownstreamResponse.md) - * [MockGroupResponse](LaravelFCM-Test-Mocks-MockGroupResponse.md) - * [MockTopicResponse](LaravelFCM-Test-Mocks-MockTopicResponse.md) - diff --git a/vendor/brozot/laravel-fcm/phpunit.xml b/vendor/brozot/laravel-fcm/phpunit.xml deleted file mode 100644 index 8d8b1bb4a..000000000 --- a/vendor/brozot/laravel-fcm/phpunit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - ./tests - - - diff --git a/vendor/brozot/laravel-fcm/src/FCMManager.php b/vendor/brozot/laravel-fcm/src/FCMManager.php deleted file mode 100644 index 6a2402722..000000000 --- a/vendor/brozot/laravel-fcm/src/FCMManager.php +++ /dev/null @@ -1,21 +0,0 @@ -app[ 'config' ][ 'fcm.driver' ]; - } - - protected function createHttpDriver() - { - $config = $this->app[ 'config' ]->get('fcm.http', []); - - return new Client(['timeout' => $config[ 'timeout' ]]); - } -} diff --git a/vendor/brozot/laravel-fcm/src/FCMServiceProvider.php b/vendor/brozot/laravel-fcm/src/FCMServiceProvider.php deleted file mode 100644 index bab6cf6da..000000000 --- a/vendor/brozot/laravel-fcm/src/FCMServiceProvider.php +++ /dev/null @@ -1,54 +0,0 @@ -app->version(), 'Lumen')) { - $this->app->configure('fcm'); - } else { - $this->publishes([ - __DIR__.'/../config/fcm.php' => config_path('fcm.php'), - ]); - } - } - - public function register() - { - if (!Str::contains($this->app->version(), 'Lumen')) { - $this->mergeConfigFrom(__DIR__.'/../config/fcm.php', 'fcm'); - } - - $this->app->singleton('fcm.client', function ($app) { - return (new FCMManager($app))->driver(); - }); - - $this->app->bind('fcm.group', function ($app) { - $client = $app[ 'fcm.client' ]; - $url = $app[ 'config' ]->get('fcm.http.server_group_url'); - - return new FCMGroup($client, $url); - }); - - $this->app->bind('fcm.sender', function ($app) { - $client = $app[ 'fcm.client' ]; - $url = $app[ 'config' ]->get('fcm.http.server_send_url'); - - return new FCMSender($client, $url); - }); - } - - public function provides() - { - return ['fcm.client', 'fcm.group', 'fcm.sender']; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Facades/FCM.php b/vendor/brozot/laravel-fcm/src/Facades/FCM.php deleted file mode 100644 index 25e083008..000000000 --- a/vendor/brozot/laravel-fcm/src/Facades/FCM.php +++ /dev/null @@ -1,13 +0,0 @@ -collapseKey = $builder->getCollapseKey(); - $this->priority = $builder->getPriority(); - $this->contentAvailable = $builder->isContentAvailable(); - $this->isMutableContent = $builder->isMutableContent(); - $this->delayWhileIdle = $builder->isDelayWhileIdle(); - $this->timeToLive = $builder->getTimeToLive(); - $this->restrictedPackageName = $builder->getRestrictedPackageName(); - $this->isDryRun = $builder->isDryRun(); - } - - /** - * Transform Option to array. - * - * @return array - */ - public function toArray() - { - $contentAvailable = $this->contentAvailable ? true : null; - $mutableContent = $this->isMutableContent ? true : null; - $delayWhileIdle = $this->delayWhileIdle ? true : null; - $dryRun = $this->isDryRun ? true : null; - - $options = [ - 'collapse_key' => $this->collapseKey, - 'priority' => $this->priority, - 'content_available' => $contentAvailable, - 'mutable_content' => $mutableContent, - 'delay_while_idle' => $delayWhileIdle, - 'time_to_live' => $this->timeToLive, - 'restricted_package_name' => $this->restrictedPackageName, - 'dry_run' => $dryRun, - ]; - - return array_filter($options); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/OptionsBuilder.php b/vendor/brozot/laravel-fcm/src/Message/OptionsBuilder.php deleted file mode 100644 index 1b5941d22..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/OptionsBuilder.php +++ /dev/null @@ -1,336 +0,0 @@ -collapseKey = $collapseKey; - - return $this; - } - - /** - * Sets the priority of the message. Valid values are "normal" and "high." - * By default, messages are sent with normal priority. - * - * @param string $priority - * - * @return \LaravelFCM\Message\OptionsBuilder - * - * @throws InvalidOptionsException - * @throws \ReflectionException - */ - public function setPriority($priority) - { - if (!OptionsPriorities::isValid($priority)) { - throw new InvalidOptionsException('priority is not valid, please refer to the documentation or use the constants of the class "OptionsPriorities"'); - } - $this->priority = $priority; - - return $this; - } - - /** - * support only Android and Ios. - * - * An inactive client app is awoken. - * On iOS, use this field to represent content-available in the APNS payload. - * On Android, data messages wake the app by default. - * On Chrome, currently not supported. - * - * @param bool $contentAvailable - * - * @return \LaravelFCM\Message\OptionsBuilder - */ - public function setContentAvailable($contentAvailable) - { - $this->contentAvailable = $contentAvailable; - - return $this; - } - - /** - * support iOS 10+ - * - * When a notification is sent and this is set to true, - * the content of the notification can be modified before it is displayed. - * - * @param String $isMutableContent - * @return OptionsBuilder - */ - public function setMutableContent($isMutableContent) - { - $this->mutableContent = $isMutableContent; - - return $this; - } - - /** - * When this parameter is set to true, it indicates that the message should not be sent until the device becomes active. - * - * @param bool $delayWhileIdle - * - * @return \LaravelFCM\Message\OptionsBuilder - */ - public function setDelayWhileIdle($delayWhileIdle) - { - $this->delayWhileIdle = $delayWhileIdle; - - return $this; - } - - /** - * This parameter specifies how long the message should be kept in FCM storage if the device is offline. - * - * @param int $timeToLive (in second) min:0 max:2419200 - * - * @return \LaravelFCM\Message\OptionsBuilder - * - * @throws InvalidOptionsException - */ - public function setTimeToLive($timeToLive) - { - if ($timeToLive < 0 || $timeToLive > 2419200) { - throw new InvalidOptionsException("time to live must be between 0 and 2419200, current value is: {$timeToLive}"); - } - $this->timeToLive = $timeToLive; - - return $this; - } - - /** - * This parameter specifies the package name of the application where the registration tokens must match in order to receive the message. - * - * @param string $restrictedPackageName - * - * @return \LaravelFCM\Message\OptionsBuilder - */ - public function setRestrictedPackageName($restrictedPackageName) - { - $this->restrictedPackageName = $restrictedPackageName; - - return $this; - } - - /** - * This parameter, when set to true, allows developers to test a request without actually sending a message. - * It should only be used for the development. - * - * @param bool $isDryRun - * - * @return \LaravelFCM\Message\OptionsBuilder - */ - public function setDryRun($isDryRun) - { - $this->dryRun = $isDryRun; - - return $this; - } - - /** - * Get the collapseKey. - * - * @return null|string - */ - public function getCollapseKey() - { - return $this->collapseKey; - } - - /** - * Get the priority. - * - * @return null|string - */ - public function getPriority() - { - return $this->priority; - } - - /** - * is content available. - * - * @return bool - */ - public function isContentAvailable() - { - return $this->contentAvailable; - } - - /** - * is mutable content - * - * @return bool - */ - public function isMutableContent() - { - return $this->mutableContent; - } - - /** - * is delay white idle. - * - * @return bool - */ - public function isDelayWhileIdle() - { - return $this->delayWhileIdle; - } - - /** - * get time to live. - * - * @return null|int - */ - public function getTimeToLive() - { - return $this->timeToLive; - } - - /** - * get restricted package name. - * - * @return null|string - */ - public function getRestrictedPackageName() - { - return $this->restrictedPackageName; - } - - /** - * is dry run. - * - * @return bool - */ - public function isDryRun() - { - return $this->dryRun; - } - - /** - * build an instance of Options. - * - * @return Options - */ - public function build() - { - return new Options($this); - } -} - -/** - * Class OptionsPriorities. - */ -final class OptionsPriorities -{ - /** - * @const high priority : iOS, these correspond to APNs priorities 10. - */ - const high = 'high'; - - /** - * @const normal priority : iOS, these correspond to APNs priorities 5 - */ - const normal = 'normal'; - - /** - * @return array priorities available in fcm - * - * @throws \ReflectionException - */ - public static function getPriorities() - { - $class = new ReflectionClass(__CLASS__); - - return $class->getConstants(); - } - - /** - * check if this priority is supported by fcm. - * - * @param $priority - * - * @return bool - * - * @throws \ReflectionException - */ - public static function isValid($priority) - { - return in_array($priority, static::getPriorities()); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/PayloadData.php b/vendor/brozot/laravel-fcm/src/Message/PayloadData.php deleted file mode 100644 index 111a49aa5..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/PayloadData.php +++ /dev/null @@ -1,38 +0,0 @@ -data = $builder->getData(); - } - - /** - * Transform payloadData to array. - * - * @return array - */ - public function toArray() - { - return $this->data; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/PayloadDataBuilder.php b/vendor/brozot/laravel-fcm/src/Message/PayloadDataBuilder.php deleted file mode 100644 index 6a46a8947..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/PayloadDataBuilder.php +++ /dev/null @@ -1,78 +0,0 @@ -data = $this->data ?: []; - - $this->data = array_merge($data, $this->data); - - return $this; - } - - /** - * erase data with new data. - * - * @param array $data - * - * @return PayloadDataBuilder - */ - public function setData(array $data) - { - $this->data = $data; - - return $this; - } - - /** - * Remove all data. - */ - public function removeAllData() - { - $this->data = null; - } - - /** - * return data. - * - * @return array - */ - public function getData() - { - return $this->data; - } - - /** - * generate a PayloadData. - * - * @return PayloadData new PayloadData instance - */ - public function build() - { - return new PayloadData($this); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/PayloadNotification.php b/vendor/brozot/laravel-fcm/src/Message/PayloadNotification.php deleted file mode 100644 index 3f0e4945b..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/PayloadNotification.php +++ /dev/null @@ -1,155 +0,0 @@ -title = $builder->getTitle(); - $this->body = $builder->getBody(); - $this->channelId = $builder->getChannelId(); - $this->icon = $builder->getIcon(); - $this->sound = $builder->getSound(); - $this->badge = $builder->getBadge(); - $this->tag = $builder->getTag(); - $this->color = $builder->getColor(); - $this->clickAction = $builder->getClickAction(); - $this->bodyLocationKey = $builder->getBodyLocationKey(); - $this->bodyLocationArgs = $builder->getBodyLocationArgs(); - $this->titleLocationKey = $builder->getTitleLocationKey(); - $this->titleLocationArgs = $builder->getTitleLocationArgs(); - } - - /** - * convert PayloadNotification to array. - * - * @return array - */ - public function toArray() - { - $notification = [ - 'title' => $this->title, - 'body' => $this->body, - 'android_channel_id' => $this->channelId, - 'icon' => $this->icon, - 'sound' => $this->sound, - 'badge' => $this->badge, - 'tag' => $this->tag, - 'color' => $this->color, - 'click_action' => $this->clickAction, - 'body_loc_key' => $this->bodyLocationKey, - 'body_loc_args' => $this->bodyLocationArgs, - 'title_loc_key' => $this->titleLocationKey, - 'title_loc_args' => $this->titleLocationArgs, - ]; - - // remove null values - $notification = array_filter($notification, function($value) { - return $value !== null; - }); - - return $notification; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/PayloadNotificationBuilder.php b/vendor/brozot/laravel-fcm/src/Message/PayloadNotificationBuilder.php deleted file mode 100644 index 5f14653d6..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/PayloadNotificationBuilder.php +++ /dev/null @@ -1,447 +0,0 @@ -title = $title; - } - - /** - * Indicates notification title. This field is not visible on iOS phones and tablets. - * but it is required for android. - * - * @param string $title - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setTitle($title) - { - $this->title = $title; - - return $this; - } - - /** - * Indicates notification body text. - * - * @param string $body - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setBody($body) - { - $this->body = $body; - - return $this; - } - - /** - * Set a channel ID for android API >= 26. - * - * @param string $channelId - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setChannelId($channelId) - { - $this->channelId = $channelId; - - return $this; - } - - /** - * Supported Android - * Indicates notification icon. example : Sets value to myicon for drawable resource myicon. - * - * @param string $icon - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setIcon($icon) - { - $this->icon = $icon; - - return $this; - } - - /** - * Indicates a sound to play when the device receives a notification. - * Supports default or the filename of a sound resource bundled in the app. - * - * @param string $sound - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setSound($sound) - { - $this->sound = $sound; - - return $this; - } - - /** - * Supported Ios. - * - * Indicates the badge on the client app home icon. - * - * @param string $badge - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setBadge($badge) - { - $this->badge = $badge; - - return $this; - } - - /** - * Supported Android. - * - * Indicates whether each notification results in a new entry in the notification drawer on Android. - * If not set, each request creates a new notification. - * If set, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. - * - * @param string $tag - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setTag($tag) - { - $this->tag = $tag; - - return $this; - } - - /** - * Supported Android. - * - * Indicates color of the icon, expressed in #rrggbb format - * - * @param string $color - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setColor($color) - { - $this->color = $color; - - return $this; - } - - /** - * Indicates the action associated with a user click on the notification. - * - * @param string $action - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setClickAction($action) - { - $this->clickAction = $action; - - return $this; - } - - /** - * Indicates the key to the title string for localization. - * - * @param string $titleKey - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setTitleLocationKey($titleKey) - { - $this->titleLocationKey = $titleKey; - - return $this; - } - - /** - * Indicates the string value to replace format specifiers in the title string for localization. - * - * @param mixed $titleArgs - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setTitleLocationArgs($titleArgs) - { - $this->titleLocationArgs = $titleArgs; - - return $this; - } - - /** - * Indicates the key to the body string for localization. - * - * @param string $bodyKey - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setBodyLocationKey($bodyKey) - { - $this->bodyLocationKey = $bodyKey; - - return $this; - } - - /** - * Indicates the string value to replace format specifiers in the body string for localization. - * - * @param mixed $bodyArgs - * - * @return PayloadNotificationBuilder current instance of the builder - */ - public function setBodyLocationArgs($bodyArgs) - { - $this->bodyLocationArgs = $bodyArgs; - - return $this; - } - - /** - * Get title. - * - * @return null|string - */ - public function getTitle() - { - return $this->title; - } - - /** - * Get body. - * - * @return null|string - */ - public function getBody() - { - return $this->body; - } - - /** - * Get channel id for android api >= 26 - * - * @return null|string - */ - public function getChannelId() - { - return $this->channelId; - } - - /** - * Get Icon. - * - * @return null|string - */ - public function getIcon() - { - return $this->icon; - } - - /** - * Get Sound. - * - * @return null|string - */ - public function getSound() - { - return $this->sound; - } - - /** - * Get Badge. - * - * @return null|string - */ - public function getBadge() - { - return $this->badge; - } - - /** - * Get Tag. - * - * @return null|string - */ - public function getTag() - { - return $this->tag; - } - - /** - * Get Color. - * - * @return null|string - */ - public function getColor() - { - return $this->color; - } - - /** - * Get ClickAction. - * - * @return null|string - */ - public function getClickAction() - { - return $this->clickAction; - } - - /** - * Get BodyLocationKey. - * - * @return null|string - */ - public function getBodyLocationKey() - { - return $this->bodyLocationKey; - } - - /** - * Get BodyLocationArgs. - * - * @return null|string|array - */ - public function getBodyLocationArgs() - { - return $this->bodyLocationArgs; - } - - /** - * Get TitleLocationKey. - * - * @return string - */ - public function getTitleLocationKey() - { - return $this->titleLocationKey; - } - - /** - * GetTitleLocationArgs. - * - * @return null|string|array - */ - public function getTitleLocationArgs() - { - return $this->titleLocationArgs; - } - - /** - * Build an PayloadNotification. - * - * @return PayloadNotification - */ - public function build() - { - return new PayloadNotification($this); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Message/Topics.php b/vendor/brozot/laravel-fcm/src/Message/Topics.php deleted file mode 100644 index ba7b33098..000000000 --- a/vendor/brozot/laravel-fcm/src/Message/Topics.php +++ /dev/null @@ -1,226 +0,0 @@ -conditions[] = compact('first'); - - return $this; - } - - /** - * Add a or condition to the precedent topic set. - * - * Parenthesis is a closure - * - * Equivalent of this: **'TopicA' in topic' || 'TopicB' in topics** - * - * ``` - * $topic = new Topics(); - * $topic->topic('TopicA') - * ->orTopic('TopicB'); - * ``` - * - * Equivalent of this: **'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)** - * - * ``` - * $topic = new Topics(); - * $topic->topic('TopicA') - * ->andTopic(function($condition) { - * $condition->topic('TopicB')->orTopic('TopicC'); - * }); - * ``` - * - * > Note: Only two operators per expression are supported by fcm - * - * @param string|Closure $first topicName or closure - * - * @return Topics - */ - public function orTopic($first) - { - return $this->on($first, ' || '); - } - - /** - * Add a and condition to the precedent topic set. - * - * Parenthesis is a closure - * - * Equivalent of this: **'TopicA' in topic' && 'TopicB' in topics** - * - * ``` - * $topic = new Topics(); - * $topic->topic('TopicA') - * ->anTopic('TopicB'); - * ``` - * - * Equivalent of this: **'TopicA' in topics || ('TopicB' in topics && 'TopicC' in topics)** - * - * ``` - * $topic = new Topics(); - * $topic->topic('TopicA') - * ->orTopic(function($condition) { - * $condition->topic('TopicB')->AndTopic('TopicC'); - * }); - * ``` - * - * > Note: Only two operators per expression are supported by fcm - * - * @param string|Closure $first topicName or closure - * - * @return Topics - */ - public function andTopic($first) - { - return $this->on($first, ' && '); - } - - /** - * @internal - * - * @param $first - * @param $condition - * - * @return $this|Topics - */ - private function on($first, $condition) - { - if ($first instanceof Closure) { - return $this->nest($first, $condition); - } - - $this->conditions[] = compact('condition', 'first'); - - return $this; - } - - /** - * @internal - * - * @param Closure $callback - * @param $condition - * - * @return $this - */ - public function nest(Closure $callback, $condition) - { - $topic = new static(); - - $callback($topic); - if (count($topic->conditions)) { - $open_parenthesis = '('; - $topic = $topic->conditions; - $close_parenthesis = ')'; - - $this->conditions[] = compact('condition', 'open_parenthesis', 'topic', 'close_parenthesis'); - } - - return $this; - } - - /** - * Transform to array. - * - * @return array|string - * - * @throws NoTopicProvided - */ - public function build() - { - $this->checkIfOneTopicExist(); - - if ($this->hasOnlyOneTopic()) { - foreach ($this->conditions[0] as $topic) { - return '/topics/'.$topic; - } - } - - return [ - 'condition' => $this->topicsForFcm($this->conditions), - ]; - } - - /** - * @internal - * - * @param $conditions - * - * @return string - */ - private function topicsForFcm($conditions) - { - $condition = ''; - foreach ($conditions as $partial) { - if (array_key_exists('condition', $partial)) { - $condition .= $partial['condition']; - } - - if (array_key_exists('first', $partial)) { - $topic = $partial['first']; - $condition .= "'$topic' in topics"; - } - - if (array_key_exists('open_parenthesis', $partial)) { - $condition .= $partial['open_parenthesis']; - } - - if (array_key_exists('topic', $partial)) { - $condition .= $this->topicsForFcm($partial['topic']); - } - - if (array_key_exists('close_parenthesis', $partial)) { - $condition .= $partial['close_parenthesis']; - } - } - - return $condition; - } - - /** - * Check if only one topic was set. - * - * @return bool - */ - public function hasOnlyOneTopic() - { - return count($this->conditions) == 1; - } - - /** - * @internal - * - * @throws NoTopicProvidedException - */ - private function checkIfOneTopicExist() - { - if (!count($this->conditions)) { - throw new NoTopicProvidedException('At least one topic must be provided'); - } - } -} diff --git a/vendor/brozot/laravel-fcm/src/Request/BaseRequest.php b/vendor/brozot/laravel-fcm/src/Request/BaseRequest.php deleted file mode 100644 index e12643723..000000000 --- a/vendor/brozot/laravel-fcm/src/Request/BaseRequest.php +++ /dev/null @@ -1,65 +0,0 @@ -config = app('config')->get('fcm.http', []); - } - - /** - * Build the header for the request. - * - * @return array - */ - protected function buildRequestHeader() - { - return [ - 'Authorization' => 'key='.$this->config['server_key'], - 'Content-Type' => 'application/json', - 'project_id' => $this->config['sender_id'], - ]; - } - - /** - * Build the body of the request. - * - * @return mixed - */ - abstract protected function buildBody(); - - /** - * Return the request in array form. - * - * @return array - */ - public function build() - { - return [ - 'headers' => $this->buildRequestHeader(), - 'json' => $this->buildBody(), - ]; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Request/GroupRequest.php b/vendor/brozot/laravel-fcm/src/Request/GroupRequest.php deleted file mode 100644 index 1bccf79ab..000000000 --- a/vendor/brozot/laravel-fcm/src/Request/GroupRequest.php +++ /dev/null @@ -1,70 +0,0 @@ -operation = $operation; - $this->notificationKeyName = $notificationKeyName; - $this->notificationKey = $notificationKey; - $this->registrationIds = $registrationIds; - } - - /** - * Build the header for the request. - * - * @return array - */ - protected function buildBody() - { - return [ - 'operation' => $this->operation, - 'notification_key_name' => $this->notificationKeyName, - 'notification_key' => $this->notificationKey, - 'registration_ids' => $this->registrationIds, - ]; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Request/Request.php b/vendor/brozot/laravel-fcm/src/Request/Request.php deleted file mode 100644 index 279b5022a..000000000 --- a/vendor/brozot/laravel-fcm/src/Request/Request.php +++ /dev/null @@ -1,151 +0,0 @@ -to = $to; - $this->options = $options; - $this->notification = $notification; - $this->data = $data; - $this->topic = $topic; - } - - /** - * Build the body for the request. - * - * @return array - */ - protected function buildBody() - { - $message = [ - 'to' => $this->getTo(), - 'registration_ids' => $this->getRegistrationIds(), - 'notification' => $this->getNotification(), - 'data' => $this->getData(), - ]; - - $message = array_merge($message, $this->getOptions()); - - // remove null entries - return array_filter($message); - } - - /** - * get to key transformed. - * - * @return array|null|string - */ - protected function getTo() - { - $to = is_array($this->to) ? null : $this->to; - - if ($this->topic && $this->topic->hasOnlyOneTopic()) { - $to = $this->topic->build(); - } - - return $to; - } - - /** - * get registrationIds transformed. - * - * @return array|null - */ - protected function getRegistrationIds() - { - return is_array($this->to) ? $this->to : null; - } - - /** - * get Options transformed. - * - * @return array - */ - protected function getOptions() - { - $options = $this->options ? $this->options->toArray() : []; - - if ($this->topic && !$this->topic->hasOnlyOneTopic()) { - $options = array_merge($options, $this->topic->build()); - } - - return $options; - } - - /** - * get notification transformed. - * - * @return array|null - */ - protected function getNotification() - { - return $this->notification ? $this->notification->toArray() : null; - } - - /** - * get data transformed. - * - * @return array|null - */ - protected function getData() - { - return $this->data ? $this->data->toArray() : null; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/BaseResponse.php b/vendor/brozot/laravel-fcm/src/Response/BaseResponse.php deleted file mode 100644 index b7433c4b7..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/BaseResponse.php +++ /dev/null @@ -1,75 +0,0 @@ -isJsonResponse($response); - $this->logEnabled = app('config')->get('fcm.log_enabled', false); - $responseInJson = json_decode($response->getBody(), true); - $this->parseResponse($responseInJson); - } - - /** - * Check if the response given by fcm is parsable. - * - * @param \Psr\Http\Message\ResponseInterface $response - * - * @throws InvalidRequestException - * @throws ServerResponseException - * @throws UnauthorizedRequestException - */ - private function isJsonResponse(ResponseInterface $response) - { - if ($response->getStatusCode() == 200) { - return; - } - - if ($response->getStatusCode() == 400) { - throw new InvalidRequestException($response); - } - - if ($response->getStatusCode() == 401) { - throw new UnauthorizedRequestException($response); - } - - throw new ServerResponseException($response); - } - - /** - * parse the response. - * - * @param array $responseInJson - */ - abstract protected function parseResponse($responseInJson); - - /** - * Log the response. - */ - abstract protected function logResponse(); -} diff --git a/vendor/brozot/laravel-fcm/src/Response/DownstreamResponse.php b/vendor/brozot/laravel-fcm/src/Response/DownstreamResponse.php deleted file mode 100644 index 238d60d33..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/DownstreamResponse.php +++ /dev/null @@ -1,413 +0,0 @@ -tokens = is_string($tokens) ? [$tokens] : $tokens; - - parent::__construct($response); - } - - /** - * Parse the response. - * - * @param $responseInJson - */ - protected function parseResponse($responseInJson) - { - $this->parse($responseInJson); - - if ($this->needResultParsing($responseInJson)) { - $this->parseResult($responseInJson); - } - - if ($this->logEnabled) { - $this->logResponse(); - } - } - - /** - * @internal - * - * @param $responseInJson - */ - private function parse($responseInJson) - { - if (array_key_exists(self::MULTICAST_ID, $responseInJson)) { - $this->messageId; - } - - if (array_key_exists(self::SUCCESS, $responseInJson)) { - $this->numberTokensSuccess = $responseInJson[self::SUCCESS]; - } - - if (array_key_exists(self::FAILURE, $responseInJson)) { - $this->numberTokensFailure = $responseInJson[self::FAILURE]; - } - - if (array_key_exists(self::CANONICAL_IDS, $responseInJson)) { - $this->numberTokenModify = $responseInJson[self::CANONICAL_IDS]; - } - } - - /** - * @internal - * - * @param $responseInJson - */ - private function parseResult($responseInJson) - { - foreach ($responseInJson[self::RESULTS] as $index => $result) { - if (!$this->isSent($result)) { - if (!$this->needToBeModify($index, $result)) { - if (!$this->needToBeDeleted($index, $result) && !$this->needToResend($index, $result) && !$this->checkMissingToken($result)) { - $this->needToAddError($index, $result); - } - } - } - } - } - - /** - * @internal - * - * @param $responseInJson - * - * @return bool - */ - private function needResultParsing($responseInJson) - { - return array_key_exists(self::RESULTS, $responseInJson) && ($this->numberTokensFailure > 0 || $this->numberTokenModify > 0); - } - - /** - * @internal - * - * @param $results - * - * @return bool - */ - private function isSent($results) - { - return array_key_exists(self::MESSAGE_ID, $results) && !array_key_exists(self::REGISTRATION_ID, $results); - } - - /** - * @internal - * - * @param $index - * @param $result - * - * @return bool - */ - private function needToBeModify($index, $result) - { - if (array_key_exists(self::MESSAGE_ID, $result) && array_key_exists(self::REGISTRATION_ID, $result)) { - if ($this->tokens[$index]) { - $this->tokensToModify[$this->tokens[$index]] = $result[self::REGISTRATION_ID]; - } - - return true; - } - - return false; - } - - /** - * @internal - * - * @param $index - * @param $result - * - * @return bool - */ - private function needToBeDeleted($index, $result) - { - if (array_key_exists(self::ERROR, $result) && - (in_array(self::NOT_REGISTERED, $result) || in_array(self::INVALID_REGISTRATION, $result))) { - if ($this->tokens[$index]) { - $this->tokensToDelete[] = $this->tokens[$index]; - } - - return true; - } - - return false; - } - - /** - * @internal - * - * @param $index - * @param $result - * - * @return bool - */ - private function needToResend($index, $result) - { - if (array_key_exists(self::ERROR, $result) && (in_array(self::UNAVAILABLE, $result) || in_array(self::DEVICE_MESSAGE_RATE_EXCEEDED, $result) || in_array(self::INTERNAL_SERVER_ERROR, $result))) { - if ($this->tokens[$index]) { - $this->tokensToRetry[] = $this->tokens[$index]; - } - - return true; - } - - return false; - } - - /** - * @internal - * - * @param $result - * - * @return bool - */ - private function checkMissingToken($result) - { - $hasMissingToken = (array_key_exists(self::ERROR, $result) && in_array(self::MISSING_REGISTRATION, $result)); - - $this->hasMissingToken = (bool) ($this->hasMissingToken | $hasMissingToken); - - return $hasMissingToken; - } - - /** - * @internal - * - * @param $index - * @param $result - */ - private function needToAddError($index, $result) - { - if (array_key_exists(self::ERROR, $result)) { - if ($this->tokens[$index]) { - $this->tokensWithError[$this->tokens[$index]] = $result[self::ERROR]; - } - } - } - - /** - * @internal - */ - protected function logResponse() - { - $logger = new Logger('Laravel-FCM'); - $logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log'))); - - $logMessage = 'notification send to '.count($this->tokens).' devices'.PHP_EOL; - $logMessage .= 'success: '.$this->numberTokensSuccess.PHP_EOL; - $logMessage .= 'failures: '.$this->numberTokensFailure.PHP_EOL; - $logMessage .= 'number of modified token : '.$this->numberTokenModify.PHP_EOL; - - $logger->info($logMessage); - } - - /** - * Merge two response. - * - * @param DownstreamResponse $response - */ - public function merge(DownstreamResponse $response) - { - $this->numberTokensSuccess += $response->numberSuccess(); - $this->numberTokensFailure += $response->numberFailure(); - $this->numberTokenModify += $response->numberModification(); - - $this->tokensToDelete = array_merge($this->tokensToDelete, $response->tokensToDelete()); - $this->tokensToModify = array_merge($this->tokensToModify, $response->tokensToModify()); - $this->tokensToRetry = array_merge($this->tokensToRetry, $response->tokensToRetry()); - $this->tokensWithError = array_merge($this->tokensWithError, $response->tokensWithError()); - } - - /** - * Get the number of device reached with success. - * - * @return int - */ - public function numberSuccess() - { - return $this->numberTokensSuccess; - } - - /** - * Get the number of device which thrown an error. - * - * @return int - */ - public function numberFailure() - { - return $this->numberTokensFailure; - } - - /** - * Get the number of device that you need to modify their token. - * - * @return int - */ - public function numberModification() - { - return $this->numberTokenModify; - } - - /** - * get token to delete. - * - * remove all tokens returned by this method in your database - * - * @return array - */ - public function tokensToDelete() - { - return $this->tokensToDelete; - } - - /** - * get token to modify. - * - * key: oldToken - * value: new token - * - * find the old token in your database and replace it with the new one - * - * @return array - */ - public function tokensToModify() - { - return $this->tokensToModify; - } - - /** - * Get tokens that you should resend using exponential backoff. - * - * @return array - */ - public function tokensToRetry() - { - return $this->tokensToRetry; - } - - /** - * Get tokens that thrown an error. - * - * key : token - * value : error - * - * In production, remove these tokens from you database - * - * @return array - */ - public function tokensWithError() - { - return $this->tokensWithError; - } - - /** - * check if missing tokens was given to the request - * If true, remove all the empty token in your database. - * - * @return bool - */ - public function hasMissingToken() - { - return $this->hasMissingToken; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/DownstreamResponseContract.php b/vendor/brozot/laravel-fcm/src/Response/DownstreamResponseContract.php deleted file mode 100644 index 6cf77acee..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/DownstreamResponseContract.php +++ /dev/null @@ -1,85 +0,0 @@ -getStatusCode(); - $responseBody = $response->getBody()->getContents(); - - parent::__construct($responseBody, $code); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/Exceptions/ServerResponseException.php b/vendor/brozot/laravel-fcm/src/Response/Exceptions/ServerResponseException.php deleted file mode 100644 index ccaed73a3..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/Exceptions/ServerResponseException.php +++ /dev/null @@ -1,37 +0,0 @@ -getStatusCode(); - $responseHeader = $response->getHeaders(); - $responseBody = $response->getBody()->getContents(); - - if (array_keys($responseHeader, 'Retry-After')) { - $this->retryAfter = $responseHeader['Retry-After']; - } - - parent::__construct($responseBody, $code); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/Exceptions/UnauthorizedRequestException.php b/vendor/brozot/laravel-fcm/src/Response/Exceptions/UnauthorizedRequestException.php deleted file mode 100644 index 4c8ee9153..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/Exceptions/UnauthorizedRequestException.php +++ /dev/null @@ -1,24 +0,0 @@ -getStatusCode(); - - parent::__construct('FCM_SENDER_ID or FCM_SERVER_KEY are invalid', $code); - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/GroupResponse.php b/vendor/brozot/laravel-fcm/src/Response/GroupResponse.php deleted file mode 100644 index 237cc9b8d..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/GroupResponse.php +++ /dev/null @@ -1,148 +0,0 @@ -to = $to; - parent::__construct($response); - } - - /** - * parse the response. - * - * @param $responseInJson - */ - protected function parseResponse($responseInJson) - { - if ($this->parse($responseInJson)) { - $this->parseFailed($responseInJson); - } - - if ($this->logEnabled) { - $this->logResponse(); - } - } - - /** - * Log the response. - */ - protected function logResponse() - { - $logger = new Logger('Laravel-FCM'); - $logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log'))); - - $logMessage = "notification send to group: $this->to"; - $logMessage .= "with $this->numberTokensSuccess success and $this->numberTokensFailure"; - - $logger->info($logMessage); - } - - /** - * @internal - * - * @param $responseInJson - * - * @return bool - */ - private function parse($responseInJson) - { - if (array_key_exists(self::SUCCESS, $responseInJson)) { - $this->numberTokensSuccess = $responseInJson[self::SUCCESS]; - } - if (array_key_exists(self::FAILURE, $responseInJson)) { - $this->numberTokensFailure = $responseInJson[self::FAILURE]; - } - - return $this->numberTokensFailure > 0; - } - - /** - * @internal - * - * @param $responseInJson - */ - private function parseFailed($responseInJson) - { - if (array_key_exists(self::FAILED_REGISTRATION_IDS, $responseInJson)) { - foreach ($responseInJson[self::FAILED_REGISTRATION_IDS] as $registrationId) { - $this->tokensFailed[] = $registrationId; - } - } - } - - /** - * Get the number of device reached with success. - * - * @return int - */ - public function numberSuccess() - { - return $this->numberTokensSuccess; - } - - /** - * Get the number of device which thrown an error. - * - * @return int - */ - public function numberFailure() - { - return $this->numberTokensFailure; - } - - /** - * Get all token in group that fcm cannot reach. - * - * @return array - */ - public function tokensFailed() - { - return $this->tokensFailed; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/GroupResponseContract.php b/vendor/brozot/laravel-fcm/src/Response/GroupResponseContract.php deleted file mode 100644 index d17c1d521..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/GroupResponseContract.php +++ /dev/null @@ -1,30 +0,0 @@ -topic = $topic; - parent::__construct($response); - } - - /** - * parse the response. - * - * @param $responseInJson - */ - protected function parseResponse($responseInJson) - { - if (!$this->parseSuccess($responseInJson)) { - $this->parseError($responseInJson); - } - - if ($this->logEnabled) { - $this->logResponse(); - } - } - - /** - * @internal - * - * @param $responseInJson - */ - private function parseSuccess($responseInJson) - { - if (array_key_exists(self::MESSAGE_ID, $responseInJson)) { - $this->messageId = $responseInJson[ self::MESSAGE_ID ]; - } - } - - /** - * @internal - * - * @param $responseInJson - */ - private function parseError($responseInJson) - { - if (array_key_exists(self::ERROR, $responseInJson)) { - if (in_array(self::LIMIT_RATE_TOPICS_EXCEEDED, $responseInJson)) { - $this->needRetry = true; - } - - $this->error = $responseInJson[ self::ERROR ]; - } - } - - /** - * Log the response. - */ - protected function logResponse() - { - $logger = new Logger('Laravel-FCM'); - $logger->pushHandler(new StreamHandler(storage_path('logs/laravel-fcm.log'))); - - $topic = $this->topic->build(); - - $logMessage = "notification send to topic: ".json_encode($topic); - if ($this->messageId) { - $logMessage .= "with success (message-id : $this->messageId)"; - } else { - $logMessage .= "with error (error : $this->error)"; - } - - $logger->info($logMessage); - } - - /** - * true if topic sent with success. - * - * @return bool - */ - public function isSuccess() - { - return (bool) $this->messageId; - } - - /** - * return error message - * you should test if it's necessary to resent it. - * - * @return string error - */ - public function error() - { - return $this->error; - } - - /** - * return true if it's necessary resent it using exponential backoff. - * - * @return bool - */ - public function shouldRetry() - { - return $this->needRetry; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Response/TopicResponseContract.php b/vendor/brozot/laravel-fcm/src/Response/TopicResponseContract.php deleted file mode 100644 index aabc24ca3..000000000 --- a/vendor/brozot/laravel-fcm/src/Response/TopicResponseContract.php +++ /dev/null @@ -1,31 +0,0 @@ -client->request('post', $this->url, $request->build()); - - return $this->getNotificationToken($response); - } - - /** - * add registrationId to a existing group. - * - * @param $notificationKeyName - * @param $notificationKey - * @param array $registrationIds registrationIds to add - * @return null|string notification_key - */ - public function addToGroup($notificationKeyName, $notificationKey, array $registrationIds) - { - $request = new GroupRequest(self::ADD, $notificationKeyName, $notificationKey, $registrationIds); - $response = $this->client->request('post', $this->url, $request->build()); - - return $this->getNotificationToken($response); - } - - /** - * remove registrationId to a existing group. - * - * >Note: if you remove all registrationIds the group is automatically deleted - * - * @param $notificationKeyName - * @param $notificationKey - * @param array $registeredIds registrationIds to remove - * @return null|string notification_key - */ - public function removeFromGroup($notificationKeyName, $notificationKey, array $registeredIds) - { - $request = new GroupRequest(self::REMOVE, $notificationKeyName, $notificationKey, $registeredIds); - $response = $this->client->request('post', $this->url, $request->build()); - - return $this->getNotificationToken($response); - } - - /** - * @internal - * - * @param \Psr\Http\Message\ResponseInterface $response - * @return null|string notification_key - */ - private function getNotificationToken(ResponseInterface $response) - { - if (! $this->isValidResponse($response)) { - return null; - } - - $json = json_decode($response->getBody()->getContents(), true); - - return $json['notification_key']; - } - - /** - * @param \Psr\Http\Message\ResponseInterface $response - * - * @return bool - */ - public function isValidResponse(ResponseInterface $response) - { - return $response->getStatusCode() === 200; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Sender/FCMSender.php b/vendor/brozot/laravel-fcm/src/Sender/FCMSender.php deleted file mode 100644 index 136295b14..000000000 --- a/vendor/brozot/laravel-fcm/src/Sender/FCMSender.php +++ /dev/null @@ -1,118 +0,0 @@ -post($request); - - $responsePartial = new DownstreamResponse($responseGuzzle, $tokens); - if (!$response) { - $response = $responsePartial; - } else { - $response->merge($responsePartial); - } - } - } else { - $request = new Request($to, $options, $notification, $data); - $responseGuzzle = $this->post($request); - - $response = new DownstreamResponse($responseGuzzle, $to); - } - - return $response; - } - - /** - * Send a message to a group of devices identified with them notification key. - * - * @param $notificationKey - * @param Options|null $options - * @param PayloadNotification|null $notification - * @param PayloadData|null $data - * - * @return GroupResponse - */ - public function sendToGroup($notificationKey, Options $options = null, PayloadNotification $notification = null, PayloadData $data = null) - { - $request = new Request($notificationKey, $options, $notification, $data); - - $responseGuzzle = $this->post($request); - - return new GroupResponse($responseGuzzle, $notificationKey); - } - - /** - * Send message devices registered at a or more topics. - * - * @param Topics $topics - * @param Options|null $options - * @param PayloadNotification|null $notification - * @param PayloadData|null $data - * - * @return TopicResponse - */ - public function sendToTopic(Topics $topics, Options $options = null, PayloadNotification $notification = null, PayloadData $data = null) - { - $request = new Request(null, $options, $notification, $data, $topics); - - $responseGuzzle = $this->post($request); - - return new TopicResponse($responseGuzzle, $topics); - } - - /** - * @internal - * - * @param \LaravelFCM\Request\Request $request - * - * @return null|\Psr\Http\Message\ResponseInterface - */ - protected function post($request) - { - try { - $responseGuzzle = $this->client->request('post', $this->url, $request->build()); - } catch (ClientException $e) { - $responseGuzzle = $e->getResponse(); - } - - return $responseGuzzle; - } -} diff --git a/vendor/brozot/laravel-fcm/src/Sender/HTTPSender.php b/vendor/brozot/laravel-fcm/src/Sender/HTTPSender.php deleted file mode 100644 index c6e435324..000000000 --- a/vendor/brozot/laravel-fcm/src/Sender/HTTPSender.php +++ /dev/null @@ -1,37 +0,0 @@ -client = $client; - $this->url = $url; - } -} diff --git a/vendor/brozot/laravel-fcm/tests/DownstreamResponseTest.php b/vendor/brozot/laravel-fcm/tests/DownstreamResponseTest.php deleted file mode 100644 index 1ab96c23a..000000000 --- a/vendor/brozot/laravel-fcm/tests/DownstreamResponseTest.php +++ /dev/null @@ -1,460 +0,0 @@ -assertEquals(1, $downstreamResponse->numberSuccess()); - $this->assertEquals(0, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(0, $downstreamResponse->tokensToModify()); - } - - /** - * @test - */ - public function it_construct_a_response_with_multiple_successes() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 108, - "success": 3, - "failure": 0, - "canonical_ids": 0, - "results": [ - { "message_id": "1:01" }, - { "message_id": "1:02" }, - { "message_id": "1:03" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - - $this->assertEquals(3, $downstreamResponse->numberSuccess()); - $this->assertEquals(0, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(0, $downstreamResponse->tokensToModify()); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_failure() - { - $token = 'new_token'; - - $response = new Response(200, [], '{ - "multicast_id": 108, - "success": 0, - "failure": 1, - "canonical_ids": 0, - "results": [ - { "error": "NotRegistered" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $token); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(1, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - $this->assertFalse($downstreamResponse->hasMissingToken()); - - $this->assertCount(1, $downstreamResponse->tokensToDelete()); - $this->assertEquals($token, $downstreamResponse->tokensToDelete()[ 0 ]); - $this->assertCount(0, $downstreamResponse->tokensToModify()); - } - - /** - * @test - */ - public function it_construct_a_response_with_multiple_failures() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - 'fourth_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 108, - "success": 0, - "failure": 3, - "canonical_ids": 0, - "results": [ - { "error": "NotRegistered" }, - { "error": "InvalidRegistration" }, - { "error": "NotRegistered" }, - { "error": "MissingRegistration"} - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(3, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - $this->assertTrue($downstreamResponse->hasMissingToken()); - - $this->assertCount(3, $downstreamResponse->tokensToDelete()); - $this->assertEquals($tokens[ 0 ], $downstreamResponse->tokensToDelete()[ 0 ]); - $this->assertEquals($tokens[ 1 ], $downstreamResponse->tokensToDelete()[ 1 ]); - $this->assertEquals($tokens[ 2 ], $downstreamResponse->tokensToDelete()[ 2 ]); - $this->assertCount(0, $downstreamResponse->tokensToModify()); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_token_to_change() - { - $token = 'new_token'; - - $response = new Response(200, [], '{ - "multicast_id": 108, - "success": 0, - "failure": 0, - "canonical_ids": 1, - "results": [ - { "message_id": "1:2342", "registration_id": "32" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $token); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(0, $downstreamResponse->numberFailure()); - $this->assertEquals(1, $downstreamResponse->numberModification()); - - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(1, $downstreamResponse->tokensToModify()); - - $this->assertTrue(array_key_exists($token, $downstreamResponse->tokensToModify())); - $this->assertEquals('32', $downstreamResponse->tokensToModify()[ $token ]); - } - - /** - * @test - */ - public function it_construct_a_response_with_multiple_tokens_to_change() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 108, - "success": 0, - "failure": 0, - "canonical_ids": 3, - "results": [ - { "message_id": "1:2342", "registration_id": "32" }, - { "message_id": "1:2342", "registration_id": "33" }, - { "message_id": "1:2342", "registration_id": "34" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(0, $downstreamResponse->numberFailure()); - $this->assertEquals(3, $downstreamResponse->numberModification()); - - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(3, $downstreamResponse->tokensToModify()); - - $this->assertTrue(array_key_exists($tokens[ 0 ], $downstreamResponse->tokensToModify())); - $this->assertEquals('32', $downstreamResponse->tokensToModify()[ $tokens[ 0 ] ]); - - $this->assertTrue(array_key_exists($tokens[ 1 ], $downstreamResponse->tokensToModify())); - $this->assertEquals('33', $downstreamResponse->tokensToModify()[ $tokens[ 1 ] ]); - - $this->assertTrue(array_key_exists($tokens[ 2 ], $downstreamResponse->tokensToModify())); - $this->assertEquals('34', $downstreamResponse->tokensToModify()[ $tokens[ 2 ] ]); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_token_unavailable() - { - $token = 'first_token'; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 0, - "failure": 1, - "canonical_ids": 0, - "results": [ - { "error": "Unavailable" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $token); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(1, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted$ - $this->assertCount(0, $downstreamResponse->tokensToModify()); - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(1, $downstreamResponse->tokensToRetry()); - - $this->assertEquals($token, $downstreamResponse->tokensToRetry()[0]); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_token_server_error() - { - $token = 'first_token'; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 0, - "failure": 1, - "canonical_ids": 0, - "results": [ - { "error": "InternalServerError" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $token); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(1, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted$ - $this->assertCount(0, $downstreamResponse->tokensToModify()); - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(1, $downstreamResponse->tokensToRetry()); - - $this->assertEquals($token, $downstreamResponse->tokensToRetry()[0]); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_token_exceeded() - { - $token = 'first_token'; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 0, - "failure": 1, - "canonical_ids": 0, - "results": [ - { "error": "DeviceMessageRateExceeded" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $token); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(1, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted$ - $this->assertCount(0, $downstreamResponse->tokensToModify()); - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(1, $downstreamResponse->tokensToRetry()); - - $this->assertEquals($token, $downstreamResponse->tokensToRetry()[0]); - } - - /** - * @test - */ - public function it_construct_a_response_with_a_mixed_token_to_retry() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - 'fourth_token', - 'fifth_token', - 'sixth_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 0, - "failure": 6, - "canonical_ids": 0, - "results": [ - { "error": "DeviceMessageRateExceeded" }, - { "error": "InternalServerError" }, - { "error": "Unavailable" }, - { "error": "DeviceMessageRateExceeded" }, - { "error": "InternalServerError" }, - { "error": "Unavailable" } - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - - $this->assertEquals(0, $downstreamResponse->numberSuccess()); - $this->assertEquals(6, $downstreamResponse->numberFailure()); - $this->assertEquals(0, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted$ - $this->assertCount(0, $downstreamResponse->tokensToModify()); - $this->assertCount(0, $downstreamResponse->tokensToDelete()); - $this->assertCount(6, $downstreamResponse->tokensToRetry()); - - $this->assertEquals($tokens[ 0 ], $downstreamResponse->tokensToRetry()[ 0 ]); - $this->assertEquals($tokens[ 1 ], $downstreamResponse->tokensToRetry()[ 1 ]); - $this->assertEquals($tokens[ 2 ], $downstreamResponse->tokensToRetry()[ 2 ]); - $this->assertEquals($tokens[ 3 ], $downstreamResponse->tokensToRetry()[ 3 ]); - $this->assertEquals($tokens[ 4 ], $downstreamResponse->tokensToRetry()[ 4 ]); - $this->assertEquals($tokens[ 5 ], $downstreamResponse->tokensToRetry()[ 5 ]); - } - - /** - * @test - */ - public function it_construct_a_response_with_mixed_response() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - 'fourth_token', - 'fifth_token', - 'sixth_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 3, - "failure": 3, - "canonical_ids": 1, - "results": [ - { "message_id": "1:0408" }, - { "error": "Unavailable" }, - { "error": "InvalidRegistration" }, - { "message_id": "1:1516" }, - { "message_id": "1:2342", "registration_id": "32" }, - { "error": "NotRegistered"} - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - - $this->assertEquals(3, $downstreamResponse->numberSuccess()); - $this->assertEquals(3, $downstreamResponse->numberFailure()); - $this->assertEquals(1, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted - $this->assertCount(2, $downstreamResponse->tokensToDelete()); - $this->assertCount(1, $downstreamResponse->tokensToModify()); - - $this->assertEquals($tokens[ 2 ], $downstreamResponse->tokensToDelete()[ 0 ]); - $this->assertEquals($tokens[ 5 ], $downstreamResponse->tokensToDelete()[ 1 ]); - - $this->assertTrue(array_key_exists($tokens[ 4 ], $downstreamResponse->tokensToModify())); - $this->assertEquals('32', $downstreamResponse->tokensToModify()[ $tokens[ 4 ] ]); - } - - /** - * @test - */ - public function it_construct_a_response_with_multiples_response() - { - $tokens = [ - 'first_token', - 'second_token', - 'third_token', - 'fourth_token', - 'fifth_token', - 'sixth_token', - 'seventh_token', - ]; - - $tokens1 = [ - 'first_1_token', - 'second_1_token', - 'third_1_token', - 'fourth_1_token', - 'fifth_1_token', - 'sixth_1_token', - 'seventh_1_token', - ]; - - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 3, - "failure": 3, - "canonical_ids": 1, - "results": [ - { "message_id": "1:0408" }, - { "error": "Unavailable" }, - { "error": "InvalidRegistration" }, - { "message_id": "1:1516" }, - { "message_id": "1:2342", "registration_id": "32" }, - { "error": "NotRegistered"}, - { "error": "MessageTooBig"} - ] - }'); - - $downstreamResponse = new DownstreamResponse($response, $tokens); - $downstreamResponse1 = new DownstreamResponse($response, $tokens1); - - $downstreamResponse->merge($downstreamResponse1); - - $this->assertEquals(6, $downstreamResponse->numberSuccess()); - $this->assertEquals(6, $downstreamResponse->numberFailure()); - $this->assertEquals(2, $downstreamResponse->numberModification()); - - // Unavailable is not an error caused by the token validity. it don't need to be deleted - $this->assertCount(4, $downstreamResponse->tokensToDelete()); - $this->assertCount(2, $downstreamResponse->tokensToModify()); - $this->assertCount(2, $downstreamResponse->tokensWithError()); - - $this->assertEquals($tokens[ 2 ], $downstreamResponse->tokensToDelete()[ 0 ]); - $this->assertEquals($tokens1[ 2 ], $downstreamResponse->tokensToDelete()[ 2 ]); - $this->assertEquals($tokens[ 5 ], $downstreamResponse->tokensToDelete()[ 1 ]); - $this->assertEquals($tokens1[ 5 ], $downstreamResponse->tokensToDelete()[ 3 ]); - - $this->assertCount(2, $downstreamResponse->tokensToRetry()); - - $this->assertEquals('MessageTooBig', $downstreamResponse->tokensWithError()[$tokens[6]]); - $this->assertEquals('MessageTooBig', $downstreamResponse->tokensWithError()[$tokens1[6]]); - } -} diff --git a/vendor/brozot/laravel-fcm/tests/DownstreamTest.php b/vendor/brozot/laravel-fcm/tests/DownstreamTest.php deleted file mode 100644 index fe7b39a44..000000000 --- a/vendor/brozot/laravel-fcm/tests/DownstreamTest.php +++ /dev/null @@ -1,92 +0,0 @@ -shouldReceive('request')->once()->andReturn($response); - - $tokens = 'uniqueToken'; - - $fcm = new FCMSender($client, 'http://test.test'); - $fcm->sendTo($tokens); - } - - /** - * @test - */ - public function it_send_a_notification_to_more_than_1000_devices() - { - $response = new Response(200, [], '{ - "multicast_id": 216, - "success": 3, - "failure": 3, - "canonical_ids": 1, - "results": [ - { "message_id": "1:0408" }, - { "error": "Unavailable" }, - { "error": "InvalidRegistration" }, - { "message_id": "1:1516" }, - { "message_id": "1:2342", "registration_id": "32" }, - { "error": "NotRegistered"} - ] - }'); - - $client = Mockery::mock(Client::class); - $client->shouldReceive('request')->times(10)->andReturn($response); - - $tokens = []; - for ($i = 0; $i < 10000; ++$i) { - $tokens[$i] = 'token_'.$i; - } - - $fcm = new FCMSender($client, 'http://test.test'); - $fcm->sendTo($tokens); - } - - /** - * @test - */ - public function an_empty_array_of_tokens_thrown_an_exception() - { - $response = new Response(400, [], '{ - "multicast_id": 216, - "success": 3, - "failure": 3, - "canonical_ids": 1, - "results": [ - { "message_id": "1:0408" }, - { "error": "Unavailable" }, - { "error": "InvalidRegistration" }, - { "message_id": "1:1516" }, - { "message_id": "1:2342", "registration_id": "32" }, - { "error": "NotRegistered"} - ] - }'); - - $client = Mockery::mock(Client::class); - $client->shouldReceive('request')->once()->andReturn($response); - - $fcm = new FCMSender($client, 'http://test.test'); - $this->setExpectedException(\LaravelFCM\Response\Exceptions\InvalidRequestException::class); - $fcm->sendTo([]); - } -} diff --git a/vendor/brozot/laravel-fcm/tests/FCMTestCase.php b/vendor/brozot/laravel-fcm/tests/FCMTestCase.php deleted file mode 100644 index a8ba7cd74..000000000 --- a/vendor/brozot/laravel-fcm/tests/FCMTestCase.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); - $app->register(LaravelFCM\FCMServiceProvider::class); - - $app['config']['fcm.driver'] = 'http'; - $app['config']['fcm.http.timeout'] = 20; - $app['config']['fcm.http.server_send_url'] = 'http://test.test'; - $app['config']['fcm.http.server_key'] = 'key=myKey'; - $app['config']['fcm.http.sender_id'] = 'SENDER_ID'; - - return $app; - } -} diff --git a/vendor/brozot/laravel-fcm/tests/GroupResponseTest.php b/vendor/brozot/laravel-fcm/tests/GroupResponseTest.php deleted file mode 100644 index 8e97c705d..000000000 --- a/vendor/brozot/laravel-fcm/tests/GroupResponseTest.php +++ /dev/null @@ -1,72 +0,0 @@ -assertEquals(2, $responseGroup->numberSuccess()); - $this->assertEquals(0, $responseGroup->numberFailure()); - $this->assertCount(0, $responseGroup->tokensFailed()); - } - - /** - * @test - */ - public function it_construct_a_response_with_failures() - { - $notificationKey = 'notificationKey'; - - $response = new \GuzzleHttp\Psr7\Response(200, [], '{ - "success": 0, - "failure": 2, - "failed_registration_ids":[ - "regId1", - "regId2" - ]}'); - - $responseGroup = new GroupResponse($response, $notificationKey); - - $this->assertEquals(0, $responseGroup->numberSuccess()); - $this->assertEquals(2, $responseGroup->numberFailure()); - $this->assertCount(2, $responseGroup->tokensFailed()); - - $this->assertEquals('regId1', $responseGroup->tokensFailed()[ 0]); - $this->assertEquals('regId2', $responseGroup->tokensFailed()[ 1]); - } - - /** - * @test - */ - public function it_construct_a_response_with_partials_failures() - { - $notificationKey = 'notificationKey'; - - $response = new \GuzzleHttp\Psr7\Response(200, [], '{ - "success": 1, - "failure": 2, - "failed_registration_ids":[ - "regId1", - "regId2" - ]}'); - - $responseGroup = new GroupResponse($response, $notificationKey); - - $this->assertEquals(1, $responseGroup->numberSuccess()); - $this->assertEquals(2, $responseGroup->numberFailure()); - $this->assertCount(2, $responseGroup->tokensFailed()); - } -} diff --git a/vendor/brozot/laravel-fcm/tests/MessageTest.php b/vendor/brozot/laravel-fcm/tests/MessageTest.php deleted file mode 100644 index 79b9fce17..000000000 --- a/vendor/brozot/laravel-fcm/tests/MessageTest.php +++ /dev/null @@ -1,143 +0,0 @@ -setCollapseKey('collapseKey'); - $optionBuilder->setContentAvailable(true); - - $json = json_encode($optionBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetPartial, $json); - - $optionBuilder->setPriority(OptionsPriorities::high) - ->setDelayWhileIdle(true) - ->setDryRun(true) - ->setRestrictedPackageName('customPackageName') - ->setTimeToLive(200); - - $json = json_encode($optionBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetFull, $json); - } - - /** - * @test - */ - public function it_construct_a_valid_json_with_data() - { - $targetAdd = '{ - "first_data":"first", - "second_data":true - }'; - - $targetSet = ' - { - "third_data":"third", - "fourth_data":4 - }'; - - $dataBuilder = new PayloadDataBuilder(); - - $dataBuilder->addData(['first_data' => 'first']) - ->addData(['second_data' => true]); - - $json = json_encode($dataBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetAdd, $json); - - $dataBuilder->setData(['third_data' => 'third', 'fourth_data' => 4]); - - $json = json_encode($dataBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetSet, $json); - } - - /** - * @test - */ - public function it_construct_a_valid_json_with_notification() - { - $targetPartial = '{ - "title":"test_title", - "body":"test_body", - "badge":"test_badge", - "sound":"test_sound" - }'; - - $targetFull = '{ - "title":"test_title", - "body":"test_body", - "android_channel_id":"test_channel_id", - "badge":"test_badge", - "sound":"test_sound", - "tag":"test_tag", - "color":"test_color", - "click_action":"test_click_action", - "body_loc_key":"test_body_key", - "body_loc_args":"[ body0, body1 ]", - "title_loc_key":"test_title_key", - "title_loc_args":"[ title0, title1 ]", - "icon":"test_icon" - }'; - - $notificationBuilder = new PayloadNotificationBuilder(); - - $notificationBuilder->setTitle('test_title') - ->setBody('test_body') - ->setSound('test_sound') - ->setBadge('test_badge'); - - $json = json_encode($notificationBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetPartial, $json); - - $notificationBuilder - ->setChannelId('test_channel_id') - ->setTag('test_tag') - ->setColor('test_color') - ->setClickAction('test_click_action') - ->setBodyLocationKey('test_body_key') - ->setBodyLocationArgs('[ body0, body1 ]') - ->setTitleLocationKey('test_title_key') - ->setTitleLocationArgs('[ title0, title1 ]') - ->setIcon('test_icon'); - - $json = json_encode($notificationBuilder->build()->toArray()); - $this->assertJsonStringEqualsJsonString($targetFull, $json); - } - - /** - * @test - */ - public function it_throws_an_invalidoptionsexception_if_the_interval_is_too_big() - { - $this->setExpectedException(InvalidOptionsException::class); - - $optionBuilder = new OptionsBuilder(); - $optionBuilder->setTimeToLive(2419200 * 10); - - } -} diff --git a/vendor/brozot/laravel-fcm/tests/TopicResponseTest.php b/vendor/brozot/laravel-fcm/tests/TopicResponseTest.php deleted file mode 100644 index 59d84d40c..000000000 --- a/vendor/brozot/laravel-fcm/tests/TopicResponseTest.php +++ /dev/null @@ -1,64 +0,0 @@ -topic('topicName'); - - $response = new Response(200, [], '{ - "message_id": "1234" - }'); - - $topicResponse = new TopicResponse($response, $topic); - - $this->assertTrue($topicResponse->isSuccess()); - $this->assertFalse($topicResponse->shouldRetry()); - $this->assertNull($topicResponse->error()); - } - - /** - * @test - */ - public function it_construct_a_topic_response_with_error() - { - $topic = new \LaravelFCM\Message\Topics(); - $topic->topic('topicName'); - - $response = new Response(200, [], '{ - "error": "MessageTooBig" - }'); - - $topicResponse = new TopicResponse($response, $topic); - - $this->assertFalse($topicResponse->isSuccess()); - $this->assertFalse($topicResponse->shouldRetry()); - $this->assertEquals('MessageTooBig', $topicResponse->error()); - } - - /** - * @test - */ - public function it_construct_a_topic_response_with_error_and_it_should_retry() - { - $topic = new \LaravelFCM\Message\Topics(); - $topic->topic('topicName'); - - $response = new Response(200, [], '{ - "error": "TopicsMessageRateExceeded" - }'); - - $topicResponse = new TopicResponse($response, $topic); - - $this->assertFalse($topicResponse->isSuccess()); - $this->assertTrue($topicResponse->shouldRetry()); - $this->assertEquals('TopicsMessageRateExceeded', $topicResponse->error()); - } -} diff --git a/vendor/brozot/laravel-fcm/tests/TopicsTest.php b/vendor/brozot/laravel-fcm/tests/TopicsTest.php deleted file mode 100644 index 54f5bd29a..000000000 --- a/vendor/brozot/laravel-fcm/tests/TopicsTest.php +++ /dev/null @@ -1,149 +0,0 @@ -setExpectedException(NoTopicProvidedException::class); - $topics->build(); - } - - /** - * @test - */ - public function it_has_only_one_topic() - { - $target = '/topics/myTopic'; - - $topics = new Topics(); - - $topics->topic('myTopic'); - - $this->assertEquals($target, $topics->build()); - } - - /** - * @test - */ - public function it_has_two_topics_and() - { - $target = [ - 'condition' => "'firstTopic' in topics && 'secondTopic' in topics", - ]; - - $topics = new Topics(); - - $topics->topic('firstTopic')->andTopic('secondTopic'); - - $this->assertEquals($target, $topics->build()); - } - - /** - * @test - */ - public function it_has_two_topics_or() - { - $target = [ - 'condition' => "'firstTopic' in topics || 'secondTopic' in topics", - ]; - - $topics = new Topics(); - - $topics->topic('firstTopic')->orTopic('secondTopic'); - - $this->assertEquals($target, $topics->build()); - } - - /** - * @test - */ - public function it_has_two_topics_or_and_one_and() - { - $target = [ - 'condition' => "'firstTopic' in topics || 'secondTopic' in topics && 'thirdTopic' in topics", - ]; - - $topics = new Topics(); - - $topics->topic('firstTopic')->orTopic('secondTopic')->andTopic('thirdTopic'); - - $this->assertEquals($target, $topics->build()); - } - - /** - * @test - */ - public function it_has_a_complex_topic_condition() - { - $target = [ - 'condition' => "'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics) || ('TopicD' in topics && 'TopicE' in topics)", - ]; - - $topics = new Topics(); - - $topics->topic('TopicA') - ->andTopic(function ($condition) { - $condition->topic('TopicB')->orTopic('TopicC'); - }) - ->orTopic(function ($condition) { - $condition->topic('TopicD')->andTopic('TopicE'); - }); - - $this->assertEquals($target, $topics->build()); - } - - /** - * @test - */ - public function it_send_a_notification_to_a_topic() - { - $response = new Response(200, [], '{"message_id":6177433633397011933}'); - - $client = Mockery::mock(Client::class); - $client->shouldReceive('request')->once()->andReturn($response); - - $fcm = new FCMSender($client, 'http://test.test'); - - $topics = new Topics(); - $topics->topic('test'); - - $response = $fcm->sendToTopic($topics); - - $this->assertTrue($response->isSuccess()); - $this->assertFalse($response->shouldRetry()); - $this->assertNull($response->error()); - } - - /** - * @test - */ - public function it_send_a_notification_to_a_topic_and_return_error() - { - $response = new Response(200, [], '{"error":"TopicsMessageRateExceeded"}'); - - $client = Mockery::mock(Client::class); - $client->shouldReceive('request')->once()->andReturn($response); - - $fcm = new FCMSender($client, 'http://test.test'); - - $topics = new Topics(); - $topics->topic('test'); - - $response = $fcm->sendToTopic($topics); - - $this->assertFalse($response->isSuccess()); - $this->assertTrue($response->shouldRetry()); - $this->assertEquals('TopicsMessageRateExceeded', $response->error()); - } -} diff --git a/vendor/brozot/laravel-fcm/tests/mocks/MockDownstreamResponse.php b/vendor/brozot/laravel-fcm/tests/mocks/MockDownstreamResponse.php deleted file mode 100644 index e6d3879e3..000000000 --- a/vendor/brozot/laravel-fcm/tests/mocks/MockDownstreamResponse.php +++ /dev/null @@ -1,232 +0,0 @@ -numberTokensSuccess = $numberSuccess; - } - - /** - * Not using it. - * - * @param DownstreamResponse $response - * - * @throws \Exception - */ - public function merge(DownstreamResponse $response) - { - throw new \Exception('You cannot use this method for mocking response'); - } - - /** - * Get the number of device reached with success + numberTokenToModify. - * - * @return int - */ - public function numberSuccess() - { - return $this->numberTokensSuccess + count($this->tokensToModify); - } - - /** - * Get the number of device which thrown an error. - * - * @return int - */ - public function numberFailure() - { - return count($this->tokensToDelete()) + count($this->tokensWithError); - } - - /** - * Get the number of device that you need to modify their token. - * - * @return int - */ - public function numberModification() - { - return count($this->tokensToModify()); - } - - /** - * Add a token to delete. - * - * @param $token - * @return MockDownstreamResponse - */ - public function addTokenToDelete($token) - { - $this->tokensToDelete[] = $token; - return $this; - } - - /** - * get token to delete - * remove all tokens returned by this method in your database. - * - * @return array - */ - public function tokensToDelete() - { - return $this->tokensToDelete; - } - - /** - * Add a token to modify. - * - * @param $oldToken - * @param $newToken - * @return MockDownstreamResponse - */ - public function addTokenToModify($oldToken, $newToken) - { - $this->tokensToModify[$oldToken] = $newToken; - return $this; - } - - /** - * get token to modify - * key: oldToken - * value: new token - * find the old token in your database and replace it with the new one. - * - * @return array - */ - public function tokensToModify() - { - return $this->tokensToModify; - } - - /** - * Add a token to retry. - * - * @param $token - * @return MockDownstreamResponse - */ - public function addTokenToRetry($token) - { - $this->tokensToRetry[] = $token; - return $this; - } - - /** - * Get tokens that you should resend using exponential backoof. - * - * @return array - */ - public function tokensToRetry() - { - return $this->tokensToRetry; - } - - /** - * Add a token to errors. - * - * @param $token - * @param $message - * @return MockDownstreamResponse - */ - public function addTokenWithError($token, $message) - { - $this->tokensWithError[$token] = $message; - return $this; - } - - /** - * Get tokens that thrown an error - * key : token - * value : error - * In production, remove these tokens from you database. - * - * @return array - */ - public function tokensWithError() - { - return $this->tokensWithError; - } - - /** - * change missing token state. - * - * @param $hasMissingToken - * @return MockDownstreamResponse - */ - public function setMissingToken($hasMissingToken) - { - $this->hasMissingToken = $hasMissingToken; - return $this; - } - - /** - * check if missing tokens was given to the request - * If true, remove all the empty token in your database. - * - * @return bool - */ - public function hasMissingToken() - { - return $this->hasMissingToken; - } -} diff --git a/vendor/brozot/laravel-fcm/tests/mocks/MockGroupResponse.php b/vendor/brozot/laravel-fcm/tests/mocks/MockGroupResponse.php deleted file mode 100644 index f1bcd3412..000000000 --- a/vendor/brozot/laravel-fcm/tests/mocks/MockGroupResponse.php +++ /dev/null @@ -1,123 +0,0 @@ -numberTokensSuccess = $numberSuccess; - return $this; - } - - /** - * Get the number of device reached with success. - * - * @return int - */ - public function numberSuccess() - { - return $this->numberTokensSuccess; - } - - /** - * set number of failures. - * - * @param $numberFailures - * @return MockGroupResponse - */ - public function setNumberFailure($numberFailures) - { - $this->numberTokensSuccess = $numberFailures; - return $this; - } - - /** - * Get the number of device which thrown an error. - * - * @return int - */ - public function numberFailure() - { - return $this->numberTokensFailure; - } - - /** - * add a token to the failed list. - * - * @param $tokenFailed - * @return MockGroupResponse - */ - public function addTokenFailed($tokenFailed) - { - $this->tokensFailed[] = $tokenFailed; - return $this; - } - - /** - * Get all token in group that fcm cannot reach. - * - * @return array - */ - public function tokensFailed() - { - return $this->tokensFailed; - } - - /** - * @return string - */ - public function getTo() - { - return $this->to; - } - - /** - * @param string $to - * @return MockGroupResponse - */ - public function setTo($to) - { - $this->to = $to; - return $this; - } -} diff --git a/vendor/brozot/laravel-fcm/tests/mocks/MockTopicResponse.php b/vendor/brozot/laravel-fcm/tests/mocks/MockTopicResponse.php deleted file mode 100644 index bf749ee29..000000000 --- a/vendor/brozot/laravel-fcm/tests/mocks/MockTopicResponse.php +++ /dev/null @@ -1,94 +0,0 @@ -messageId = $messageId; - return $this; - } - - /** - * true if topic sent with success. - * - * @return bool - */ - public function isSuccess() - { - return (bool) $this->messageId; - } - - /** - * set error. - * - * @param $error - * @return MockTopicResponse - */ - public function setError($error) - { - $this->error = $error; - return $this; - } - - /** - * return error message - * you should test if it's necessary to resent it. - * - * @return string error - */ - public function error() - { - return $this->error; - } - - /** - * return true if it's necessary resent it using exponential backoff. - * - * @return bool - */ - public function shouldRetry() - { - return (bool) $this->error; - } -} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index ee1fa7f42..9af49c349 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -295,66 +295,79 @@ return array( 'OutboundMailSeeder' => $baseDir . '/database/seeds/OutboundMailSeeder.php', 'PDFLib_Adapter' => $vendorDir . '/dompdf/dompdf/include/pdflib_adapter.cls.php', 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php', 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/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\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php', + 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', + 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.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\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.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\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', + 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', + 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', + 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/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\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', + 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', + 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', + 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/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\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', + 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', + 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', + 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', + 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', + 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', + 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', + 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', + 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/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\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', + 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', + 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', + 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', + 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', + 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', + 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', + 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', + 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', + 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', + 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php', 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', + 'PHPUnit\\Framework\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Error.php', + 'PHPUnit\\Framework\\ErrorTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/ErrorTestCase.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/Exception.php', 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', @@ -369,20 +382,32 @@ return array( 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Match_' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php', 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php', + 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', + 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php', + 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php', + 'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php', + 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php', 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', + 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php', 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php', 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php', + 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', + 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', 'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php', + 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', + 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php', + 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', + 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', 'PHPUnit\\Framework\\MockObject\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php', 'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', @@ -390,6 +415,9 @@ return array( 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', 'PHPUnit\\Framework\\MockObject\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php', 'PHPUnit\\Framework\\MockObject\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockType.php', + 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php', + 'PHPUnit\\Framework\\MockObject\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php', + 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php', 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php', 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php', @@ -403,6 +431,7 @@ return array( 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php', 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php', 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php', 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', @@ -413,10 +442,14 @@ return array( 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php', + 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php', + 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php', + 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php', 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', 'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/OutputError.php', 'PHPUnit\\Framework\\PHPTAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php', + 'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php', 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php', 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', @@ -451,6 +484,8 @@ return array( 'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', 'PHPUnit\\Runner\\DefaultTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php', 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php', + 'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.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', @@ -467,23 +502,111 @@ return array( 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php', + 'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php', + 'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php', + 'PHPUnit\\TextUI\\CliArguments\\Mapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php', 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception.php', + 'PHPUnit\\TextUI\\DefaultResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php', + 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', 'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php', + 'PHPUnit\\TextUI\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php', 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', + 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', + 'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit\\TextUI\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php', 'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php', 'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php', 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php', 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.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\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php', + 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.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\\InvalidDataSetException' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidDataSetException.php', 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php', @@ -509,185 +632,17 @@ return array( 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php', 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', + 'PHPUnit\\Util\\Xml\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Exception.php', + 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php', + 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php', + 'PHPUnit\\Util\\Xml\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php', + 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php', + 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php', + 'PHPUnit\\Util\\Xml\\Validator' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Validator.php', 'PHP_Evaluator' => $vendorDir . '/dompdf/dompdf/include/php_evaluator.cls.php', - 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/TokenWithScope.php', - 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php', - 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Abstract.php', - 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Ampersand.php', - 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/AndEqual.php', - 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Array.php', - 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/ArrayCast.php', - 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/As.php', - 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/At.php', - 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Backtick.php', - 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/BadCharacter.php', - 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/BooleanAnd.php', - 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/BooleanOr.php', - 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/BoolCast.php', - 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/break.php', - 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Callable.php', - 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Caret.php', - 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Case.php', - 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Catch.php', - 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Character.php', - 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Class.php', - 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/ClassC.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/ClassNameConstant.php', - 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Clone.php', - 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/CloseBracket.php', - 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/CloseCurly.php', - 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/CloseSquare.php', - 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/CloseTag.php', - 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Coalesce.php', - 'PHP_Token_COALESCE_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/CoalesceEqual.php', - 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Colon.php', - 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Comma.php', - 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Comment.php', - 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/ConcatEqual.php', - 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Const.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/ConstantEncapsedString.php', - 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Continue.php', - 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/CurlyOpen.php', - 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Dec.php', - 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Declare.php', - 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Default.php', - 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Dir.php', - 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Div.php', - 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/DivEqual.php', - 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/DNumber.php', - 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Do.php', - 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/DocComment.php', - 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Dollar.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php', - 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Dot.php', - 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/DoubleArrow.php', - 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/DoubleCast.php', - 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/DoubleColon.php', - 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/DoubleQuotes.php', - 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Echo.php', - 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Ellipsis.php', - 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Else.php', - 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Elseif.php', - 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Empty.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/EncapsedAndWhitespace.php', - 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Enddeclare.php', - 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Endfor.php', - 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Endforeach.php', - 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Endif.php', - 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Endswitch.php', - 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Endwhile.php', - 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/EndHeredoc.php', - 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Equal.php', - 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Eval.php', - 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/ExclamationMark.php', - 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Exit.php', - 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Extends.php', - 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/File.php', - 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Final.php', - 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Finally.php', - 'PHP_Token_FN' => $vendorDir . '/phpunit/php-token-stream/src/Fn.php', - 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/For.php', - 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Foreach.php', - 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Function.php', - 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/FuncC.php', - 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Global.php', - 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Goto.php', - 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Gt.php', - 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/HaltCompiler.php', - 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/If.php', - 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Implements.php', - 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Inc.php', - 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Include.php', - 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/IncludeOnce.php', - 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/InlineHtml.php', - 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Instanceof.php', - 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Insteadof.php', - 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Interface.php', - 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/IntCast.php', - 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Isset.php', - 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/IsEqual.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/IsGreaterOrEqual.php', - 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/IsIdentical.php', - 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/IsNotEqual.php', - 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/IsNotIdentical.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/IsSmallerOrEqual.php', - 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Includes.php', - 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Line.php', - 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/List.php', - 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Lnumber.php', - 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/LogicalAnd.php', - 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/LogicalOr.php', - 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/LogicalXor.php', - 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Lt.php', - 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/MethodC.php', - 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Minus.php', - 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/MinusEqual.php', - 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/ModEqual.php', - 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Mult.php', - 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/MulEqual.php', - 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Namespace.php', - 'PHP_Token_NAME_FULLY_QUALIFIED' => $vendorDir . '/phpunit/php-token-stream/src/NameFullyQualified.php', - 'PHP_Token_NAME_QUALIFIED' => $vendorDir . '/phpunit/php-token-stream/src/NameQualified.php', - 'PHP_Token_NAME_RELATIVE' => $vendorDir . '/phpunit/php-token-stream/src/NameRelative.php', - 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/New.php', - 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/NsC.php', - 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/NsSeparator.php', - 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/NumString.php', - 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/ObjectCast.php', - 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/ObjectOperator.php', - 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/OpenBracket.php', - 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/OpenCurly.php', - 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/OpenSquare.php', - 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/OpenTag.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/OpenTagWithEcho.php', - 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/OrEqual.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/PaamayimNekudotayim.php', - 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Percent.php', - 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Pipe.php', - 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Plus.php', - 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/PlusEqual.php', - 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Pow.php', - 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/PowEqual.php', - 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Print.php', - 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Private.php', - 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Protected.php', - 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Public.php', - 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/QuestionMark.php', - 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Require.php', - 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/RequireOnce.php', - 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Return.php', - 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Semicolon.php', - 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Sl.php', - 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/SlEqual.php', - 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Spaceship.php', - 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Sr.php', - 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/SrEqual.php', - 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/StartHeredoc.php', - 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Static.php', - 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/String.php', - 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/StringCast.php', - 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/StringVarname.php', - 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Switch.php', - 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Stream.php', - 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/CachingFactory.php', - 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Throw.php', - 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Tilde.php', - 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Trait.php', - 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/TraitC.php', - 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Try.php', - 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Unset.php', - 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/UnsetCast.php', - 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Use.php', - 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/UseFunction.php', - 'PHP_Token_Util' => $vendorDir . '/phpunit/php-token-stream/src/Util.php', - 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Var.php', - 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Variable.php', - 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/While.php', - 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Whitespace.php', - 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/XorEqual.php', - 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Yield.php', - 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/YieldFrom.php', 'Page_Cache' => $vendorDir . '/dompdf/dompdf/include/page_cache.cls.php', 'Page_Frame_Decorator' => $vendorDir . '/dompdf/dompdf/include/page_frame_decorator.cls.php', 'Page_Frame_Reflower' => $vendorDir . '/dompdf/dompdf/include/page_frame_reflower.cls.php', @@ -765,22 +720,48 @@ return array( 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'Positioner' => $vendorDir . '/dompdf/dompdf/include/positioner.cls.php', 'Renderer' => $vendorDir . '/dompdf/dompdf/include/renderer.cls.php', + 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', + 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php', + 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', + 'SebastianBergmann\\CliParser\\Parser' => $vendorDir . '/sebastian/cli-parser/src/Parser.php', + 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', + 'SebastianBergmann\\CliParser\\UnknownOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', + 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.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\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PCOV' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PCOV.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Selector.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => $vendorDir . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\ParserException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ParserException.php', + 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php', + 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php', + 'SebastianBergmann\\CodeCoverage\\ReflectionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', + 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Cobertura.php', 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', @@ -802,26 +783,62 @@ return array( '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\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.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\\Util\\DirectoryCouldNotBeCreatedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', + 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Filesystem.php', + 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php', 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php', + 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php', 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php', + 'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php', + 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php', + 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', + 'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php', + 'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php', + 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php', + 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', + 'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php', + 'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php', + 'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php', + 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php', 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\Exception' => $vendorDir . '/sebastian/comparator/src/exceptions/Exception.php', 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\RuntimeException' => $vendorDir . '/sebastian/comparator/src/exceptions/RuntimeException.php', 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Complexity\\Calculator' => $vendorDir . '/sebastian/complexity/src/Calculator.php', + 'SebastianBergmann\\Complexity\\Complexity' => $vendorDir . '/sebastian/complexity/src/Complexity/Complexity.php', + 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', + 'SebastianBergmann\\Complexity\\ComplexityCollection' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', + 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', + 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', + 'SebastianBergmann\\Complexity\\Exception' => $vendorDir . '/sebastian/complexity/src/Exception/Exception.php', + 'SebastianBergmann\\Complexity\\RuntimeException' => $vendorDir . '/sebastian/complexity/src/Exception/RuntimeException.php', 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', @@ -845,12 +862,23 @@ return array( 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.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\\ExcludeList' => $vendorDir . '/sebastian/global-state/src/ExcludeList.php', 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php', 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\Invoker\\Exception' => $vendorDir . '/phpunit/php-invoker/src/exceptions/Exception.php', + 'SebastianBergmann\\Invoker\\Invoker' => $vendorDir . '/phpunit/php-invoker/src/Invoker.php', + 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', + 'SebastianBergmann\\Invoker\\TimeoutException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', + 'SebastianBergmann\\LinesOfCode\\Counter' => $vendorDir . '/sebastian/lines-of-code/src/Counter.php', + 'SebastianBergmann\\LinesOfCode\\Exception' => $vendorDir . '/sebastian/lines-of-code/src/Exception/Exception.php', + 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', + 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php', + 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php', + 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', + 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.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', @@ -861,21 +889,37 @@ return array( '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\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/Exception.php', - 'SebastianBergmann\\Timer\\RuntimeException' => $vendorDir . '/phpunit/php-timer/src/RuntimeException.php', + 'SebastianBergmann\\Template\\Exception' => $vendorDir . '/phpunit/php-text-template/src/exceptions/Exception.php', + 'SebastianBergmann\\Template\\InvalidArgumentException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', + 'SebastianBergmann\\Template\\RuntimeException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', + 'SebastianBergmann\\Template\\Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', + 'SebastianBergmann\\Timer\\Duration' => $vendorDir . '/phpunit/php-timer/src/Duration.php', + 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/exceptions/Exception.php', + 'SebastianBergmann\\Timer\\NoActiveTimerException' => $vendorDir . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', + 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => $vendorDir . '/phpunit/php-timer/src/ResourceUsageFormatter.php', + 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => $vendorDir . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/CallableType.php', + 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/type/CallableType.php', 'SebastianBergmann\\Type\\Exception' => $vendorDir . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/GenericObjectType.php', - 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/IterableType.php', - 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/ObjectType.php', + 'SebastianBergmann\\Type\\FalseType' => $vendorDir . '/sebastian/type/src/type/FalseType.php', + 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/type/GenericObjectType.php', + 'SebastianBergmann\\Type\\IntersectionType' => $vendorDir . '/sebastian/type/src/type/IntersectionType.php', + 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/type/IterableType.php', + 'SebastianBergmann\\Type\\MixedType' => $vendorDir . '/sebastian/type/src/type/MixedType.php', + 'SebastianBergmann\\Type\\NeverType' => $vendorDir . '/sebastian/type/src/type/NeverType.php', + 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/type/NullType.php', + 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/type/ObjectType.php', + 'SebastianBergmann\\Type\\Parameter' => $vendorDir . '/sebastian/type/src/Parameter.php', + 'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php', 'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/SimpleType.php', - 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/Type.php', + 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/type/SimpleType.php', + 'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/type/StaticType.php', + 'SebastianBergmann\\Type\\TrueType' => $vendorDir . '/sebastian/type/src/type/TrueType.php', + 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/type/Type.php', 'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/UnknownType.php', - 'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/VoidType.php', + 'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/type/UnionType.php', + 'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/type/UnknownType.php', + 'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/type/VoidType.php', 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', 'Stringable' => $vendorDir . '/myclabs/php-enum/stubs/Stringable.php', 'Style' => $vendorDir . '/dompdf/dompdf/include/style.cls.php', @@ -897,7 +941,6 @@ return array( 'Text_Frame_Decorator' => $vendorDir . '/dompdf/dompdf/include/text_frame_decorator.cls.php', 'Text_Frame_Reflower' => $vendorDir . '/dompdf/dompdf/include/text_frame_reflower.cls.php', 'Text_Renderer' => $vendorDir . '/dompdf/dompdf/include/text_renderer.cls.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', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 541e8285c..95826fdbd 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -8,17 +8,20 @@ $baseDir = dirname($vendorDir); return array( 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', - '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', + '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', + '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', + 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', + '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', + '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', 'abede361264e2ae69ec1eee813a101af' => $vendorDir . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => $vendorDir . '/markbaker/complex/classes/src/functions/acos.php', @@ -86,13 +89,13 @@ return array( '2a3c2110e8e0295330dc3d11a4cbc4cb' => $vendorDir . '/php-webdriver/webdriver/lib/Exception/TimeoutException.php', '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', - 'b6ec61354e97f32c0ae683041c78392a' => $vendorDir . '/scrivo/highlight.php/HighlightUtilities/functions.php', '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php', 'ed962a97bd972bc82007176b647d4e36' => $vendorDir . '/facade/ignition/src/helpers.php', 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', 'f18cc91337d49233e5754e93f3ed9ec3' => $vendorDir . '/laravelcollective/html/src/helpers.php', + 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '017b24472353920ed42bb364f7653c43' => $vendorDir . '/propaganistas/laravel-phone/src/helpers.php', '1e298922c3e2134d42dcdb03e6d5f55a' => $vendorDir . '/torann/geoip/src/helpers.php', '0b47d6d4a00ca9112ba3953b49e7c9a4' => $vendorDir . '/yajra/laravel-datatables-oracle/src/helper.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index fdb8de055..beefa81f6 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -10,8 +10,6 @@ return array( 'PhpSpec' => array($vendorDir . '/phpspec/phpspec/src'), 'Mremi\\UrlShortener' => array($vendorDir . '/mremi/url-shortener/src'), 'Mockery' => array($vendorDir . '/mockery/mockery/library'), - 'Highlight\\' => array($vendorDir . '/scrivo/highlight.php'), - 'HighlightUtilities\\' => array($vendorDir . '/scrivo/highlight.php'), 'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'), 'Guzzle\\Tests' => array($vendorDir . '/guzzle/guzzle/tests'), 'Guzzle' => array($vendorDir . '/guzzle/guzzle/src'), diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 89c10a8ad..f268c9dd1 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,15 +6,14 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( + 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'), 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), 'libphonenumber\\' => array($vendorDir . '/giggsey/libphonenumber-for-php/src'), 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), 'Yajra\\DataTables\\' => array($vendorDir . '/yajra/laravel-datatables-oracle/src'), - 'XdgBaseDir\\' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'), 'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), 'Vsmoraes\\Pdf\\' => array($vendorDir . '/vsmoraes/laravel-pdf/src'), - 'Unisharp\\Ckeditor\\' => array($vendorDir . '/unisharp/laravel-ckeditor'), 'UniSharp\\LaravelFilemanager\\' => array($vendorDir . '/unisharp/laravel-filemanager/src'), 'Tymon\\JWTAuth\\' => array($vendorDir . '/tymon/jwt-auth/src'), 'Torann\\GeoIP\\' => array($vendorDir . '/torann/geoip/src'), @@ -22,21 +21,23 @@ return array( 'Thomaswelton\\Tests\\LaravelGravatar\\' => array($vendorDir . '/thomaswelton/laravel-gravatar/tests'), 'Thomaswelton\\LaravelGravatar\\' => array($vendorDir . '/thomaswelton/laravel-gravatar/src'), 'Tests\\' => array($baseDir . '/tests'), + 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), 'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\HttpClient\\' => array($vendorDir . '/symfony/http-client-contracts'), 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'), 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), + 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), 'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'), @@ -46,15 +47,16 @@ return array( 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'), 'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'), - 'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'), 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), + 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), 'Psy\\' => array($vendorDir . '/psy/psysh/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), + 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'), 'Propaganistas\\LaravelPhone\\' => array($vendorDir . '/propaganistas/laravel-phone/src'), @@ -76,21 +78,20 @@ return array( 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), 'Lcobucci\\JWT\\' => array($vendorDir . '/lcobucci/jwt/src'), + 'Laravel\\Ui\\' => array($vendorDir . '/laravel/ui/src'), 'Laravel\\Tinker\\' => array($vendorDir . '/laravel/tinker/src'), 'Laravel\\Socialite\\' => array($vendorDir . '/laravel/socialite/src'), 'Laravel\\Dusk\\' => array($vendorDir . '/laravel/dusk/src'), - 'LaravelFCM\\Mocks\\' => array($vendorDir . '/brozot/laravel-fcm/tests/mocks'), - 'LaravelFCM\\' => array($vendorDir . '/brozot/laravel-fcm/src'), 'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'), - 'JakubOnderka\\PhpConsoleHighlighter\\' => array($vendorDir . '/php-parallel-lint/php-console-highlighter/src'), - 'JakubOnderka\\PhpConsoleColor\\' => array($vendorDir . '/php-parallel-lint/php-console-color/src'), 'Intervention\\Image\\' => array($vendorDir . '/intervention/image/src/Intervention/Image'), + 'Illuminate\\Foundation\\Auth\\' => array($vendorDir . '/laravel/ui/auth-backend'), 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 'Gitonomy\\Git\\' => array($vendorDir . '/gitonomy/gitlib/src/Gitonomy/Git'), 'Giggsey\\Locale\\' => array($vendorDir . '/giggsey/locale/src'), + 'Fruitcake\\Cors\\' => array($vendorDir . '/fruitcake/laravel-cors/src'), 'Fideloper\\Proxy\\' => array($vendorDir . '/fideloper/proxy/src'), 'Faker\\' => array($vendorDir . '/fakerphp/faker/src/Faker'), 'Facebook\\WebDriver\\' => array($vendorDir . '/php-webdriver/webdriver/lib'), @@ -116,6 +117,8 @@ return array( 'Bugsnag\\PsrLogger\\' => array($vendorDir . '/bugsnag/bugsnag-psr-logger/src'), 'Bugsnag\\BugsnagLaravel\\' => array($vendorDir . '/bugsnag/bugsnag-laravel/src'), 'Bugsnag\\' => array($vendorDir . '/bugsnag/bugsnag/src'), + 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'), 'Aws\\' => array($vendorDir . '/aws/aws-sdk-php/src'), + 'Asm89\\Stack\\' => array($vendorDir . '/asm89/stack-cors/src'), 'App\\' => array($baseDir . '/app'), ); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 5c3041de5..813f310a1 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a +class ComposerAutoloaderInit9da6744efcb5435630815fb416a6752c { private static $loader; @@ -24,18 +24,18 @@ class ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit9da6744efcb5435630815fb416a6752c', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit9da6744efcb5435630815fb416a6752c', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInite7140a2ec68f998789fab4fcb333821a::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit9da6744efcb5435630815fb416a6752c::getInitializer($loader)); $loader->register(true); - $includeFiles = \Composer\Autoload\ComposerStaticInite7140a2ec68f998789fab4fcb333821a::$files; + $includeFiles = \Composer\Autoload\ComposerStaticInit9da6744efcb5435630815fb416a6752c::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequiree7140a2ec68f998789fab4fcb333821a($fileIdentifier, $file); + composerRequire9da6744efcb5435630815fb416a6752c($fileIdentifier, $file); } return $loader; @@ -47,7 +47,7 @@ class ComposerAutoloaderInite7140a2ec68f998789fab4fcb333821a * @param string $file * @return void */ -function composerRequiree7140a2ec68f998789fab4fcb333821a($fileIdentifier, $file) +function composerRequire9da6744efcb5435630815fb416a6752c($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 164fd4b10..3cccd1b00 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,22 +4,25 @@ namespace Composer\Autoload; -class ComposerStaticInite7140a2ec68f998789fab4fcb333821a +class ComposerStaticInit9da6744efcb5435630815fb416a6752c { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', + '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', + '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', + 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', + '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', + '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', 'abede361264e2ae69ec1eee813a101af' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acos.php', @@ -87,19 +90,23 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a '2a3c2110e8e0295330dc3d11a4cbc4cb' => __DIR__ . '/..' . '/php-webdriver/webdriver/lib/Exception/TimeoutException.php', '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', - 'b6ec61354e97f32c0ae683041c78392a' => __DIR__ . '/..' . '/scrivo/highlight.php/HighlightUtilities/functions.php', '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', '8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php', 'ed962a97bd972bc82007176b647d4e36' => __DIR__ . '/..' . '/facade/ignition/src/helpers.php', 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', 'f18cc91337d49233e5754e93f3ed9ec3' => __DIR__ . '/..' . '/laravelcollective/html/src/helpers.php', + 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '017b24472353920ed42bb364f7653c43' => __DIR__ . '/..' . '/propaganistas/laravel-phone/src/helpers.php', '1e298922c3e2134d42dcdb03e6d5f55a' => __DIR__ . '/..' . '/torann/geoip/src/helpers.php', '0b47d6d4a00ca9112ba3953b49e7c9a4' => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src/helper.php', ); public static $prefixLengthsPsr4 = array ( + 'v' => + array ( + 'voku\\' => 5, + ), 'p' => array ( 'phpDocumentor\\Reflection\\' => 25, @@ -116,10 +123,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 'Yajra\\DataTables\\' => 17, ), - 'X' => - array ( - 'XdgBaseDir\\' => 11, - ), 'W' => array ( 'Whoops\\' => 7, @@ -131,7 +134,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a ), 'U' => array ( - 'Unisharp\\Ckeditor\\' => 18, 'UniSharp\\LaravelFilemanager\\' => 28, ), 'T' => @@ -145,21 +147,23 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a ), 'S' => array ( + 'Symfony\\Polyfill\\Php81\\' => 23, 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php73\\' => 23, 'Symfony\\Polyfill\\Php72\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, 'Symfony\\Polyfill\\Iconv\\' => 23, 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Contracts\\Translation\\' => 30, 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\HttpClient\\' => 29, 'Symfony\\Contracts\\EventDispatcher\\' => 34, 'Symfony\\Component\\Yaml\\' => 23, 'Symfony\\Component\\VarDumper\\' => 28, 'Symfony\\Component\\Translation\\' => 30, + 'Symfony\\Component\\String\\' => 25, 'Symfony\\Component\\Routing\\' => 26, 'Symfony\\Component\\Process\\' => 26, 'Symfony\\Component\\Mime\\' => 23, @@ -169,13 +173,13 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'Symfony\\Component\\EventDispatcher\\' => 34, 'Symfony\\Component\\ErrorHandler\\' => 31, 'Symfony\\Component\\DomCrawler\\' => 29, - 'Symfony\\Component\\Debug\\' => 24, 'Symfony\\Component\\CssSelector\\' => 30, 'Symfony\\Component\\Console\\' => 26, ), 'R' => array ( 'Ramsey\\Uuid\\' => 12, + 'Ramsey\\Collection\\' => 18, ), 'P' => array ( @@ -184,6 +188,7 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'Psr\\Log\\' => 8, 'Psr\\Http\\Message\\' => 17, 'Psr\\Http\\Client\\' => 16, + 'Psr\\EventDispatcher\\' => 20, 'Psr\\Container\\' => 14, 'Prophecy\\' => 9, 'Propaganistas\\LaravelPhone\\' => 27, @@ -217,21 +222,19 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'League\\Flysystem\\' => 17, 'League\\CommonMark\\' => 18, 'Lcobucci\\JWT\\' => 13, + 'Laravel\\Ui\\' => 11, 'Laravel\\Tinker\\' => 15, 'Laravel\\Socialite\\' => 18, 'Laravel\\Dusk\\' => 13, - 'LaravelFCM\\Mocks\\' => 17, - 'LaravelFCM\\' => 11, ), 'J' => array ( 'JmesPath\\' => 9, - 'JakubOnderka\\PhpConsoleHighlighter\\' => 35, - 'JakubOnderka\\PhpConsoleColor\\' => 29, ), 'I' => array ( 'Intervention\\Image\\' => 19, + 'Illuminate\\Foundation\\Auth\\' => 27, 'Illuminate\\' => 11, ), 'G' => @@ -244,6 +247,7 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a ), 'F' => array ( + 'Fruitcake\\Cors\\' => 15, 'Fideloper\\Proxy\\' => 16, 'Faker\\' => 6, 'Facebook\\WebDriver\\' => 19, @@ -281,15 +285,21 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'Bugsnag\\PsrLogger\\' => 18, 'Bugsnag\\BugsnagLaravel\\' => 23, 'Bugsnag\\' => 8, + 'Brick\\Math\\' => 11, ), 'A' => array ( 'Aws\\' => 4, + 'Asm89\\Stack\\' => 12, 'App\\' => 4, ), ); public static $prefixDirsPsr4 = array ( + 'voku\\' => + array ( + 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', + ), 'phpDocumentor\\Reflection\\' => array ( 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', @@ -308,10 +318,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/yajra/laravel-datatables-oracle/src', ), - 'XdgBaseDir\\' => - array ( - 0 => __DIR__ . '/..' . '/dnoegel/php-xdg-base-dir/src', - ), 'Whoops\\' => array ( 0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops', @@ -324,10 +330,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/vsmoraes/laravel-pdf/src', ), - 'Unisharp\\Ckeditor\\' => - array ( - 0 => __DIR__ . '/..' . '/unisharp/laravel-ckeditor', - ), 'UniSharp\\LaravelFilemanager\\' => array ( 0 => __DIR__ . '/..' . '/unisharp/laravel-filemanager/src', @@ -356,6 +358,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/../..' . '/tests', ), + 'Symfony\\Polyfill\\Php81\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', + ), 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', @@ -380,6 +386,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', ), + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', + ), 'Symfony\\Polyfill\\Iconv\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-iconv', @@ -396,10 +406,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/symfony/service-contracts', ), - 'Symfony\\Contracts\\HttpClient\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-client-contracts', - ), 'Symfony\\Contracts\\EventDispatcher\\' => array ( 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', @@ -416,6 +422,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/symfony/translation', ), + 'Symfony\\Component\\String\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/string', + ), 'Symfony\\Component\\Routing\\' => array ( 0 => __DIR__ . '/..' . '/symfony/routing', @@ -452,10 +462,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/symfony/dom-crawler', ), - 'Symfony\\Component\\Debug\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/debug', - ), 'Symfony\\Component\\CssSelector\\' => array ( 0 => __DIR__ . '/..' . '/symfony/css-selector', @@ -468,6 +474,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/ramsey/uuid/src', ), + 'Ramsey\\Collection\\' => + array ( + 0 => __DIR__ . '/..' . '/ramsey/collection/src', + ), 'Psy\\' => array ( 0 => __DIR__ . '/..' . '/psy/psysh/src', @@ -489,6 +499,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/psr/http-client/src', ), + 'Psr\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', + ), 'Psr\\Container\\' => array ( 0 => __DIR__ . '/..' . '/psr/container/src', @@ -573,6 +587,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/lcobucci/jwt/src', ), + 'Laravel\\Ui\\' => + array ( + 0 => __DIR__ . '/..' . '/laravel/ui/src', + ), 'Laravel\\Tinker\\' => array ( 0 => __DIR__ . '/..' . '/laravel/tinker/src', @@ -585,30 +603,18 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/laravel/dusk/src', ), - 'LaravelFCM\\Mocks\\' => - array ( - 0 => __DIR__ . '/..' . '/brozot/laravel-fcm/tests/mocks', - ), - 'LaravelFCM\\' => - array ( - 0 => __DIR__ . '/..' . '/brozot/laravel-fcm/src', - ), 'JmesPath\\' => array ( 0 => __DIR__ . '/..' . '/mtdowling/jmespath.php/src', ), - 'JakubOnderka\\PhpConsoleHighlighter\\' => - array ( - 0 => __DIR__ . '/..' . '/php-parallel-lint/php-console-highlighter/src', - ), - 'JakubOnderka\\PhpConsoleColor\\' => - array ( - 0 => __DIR__ . '/..' . '/php-parallel-lint/php-console-color/src', - ), 'Intervention\\Image\\' => array ( 0 => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image', ), + 'Illuminate\\Foundation\\Auth\\' => + array ( + 0 => __DIR__ . '/..' . '/laravel/ui/auth-backend', + ), 'Illuminate\\' => array ( 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate', @@ -633,6 +639,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/giggsey/locale/src', ), + 'Fruitcake\\Cors\\' => + array ( + 0 => __DIR__ . '/..' . '/fruitcake/laravel-cors/src', + ), 'Fideloper\\Proxy\\' => array ( 0 => __DIR__ . '/..' . '/fideloper/proxy/src', @@ -733,10 +743,18 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a array ( 0 => __DIR__ . '/..' . '/bugsnag/bugsnag/src', ), + 'Brick\\Math\\' => + array ( + 0 => __DIR__ . '/..' . '/brick/math/src', + ), 'Aws\\' => array ( 0 => __DIR__ . '/..' . '/aws/aws-sdk-php/src', ), + 'Asm89\\Stack\\' => + array ( + 0 => __DIR__ . '/..' . '/asm89/stack-cors/src', + ), 'App\\' => array ( 0 => __DIR__ . '/../..' . '/app', @@ -771,14 +789,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a ), 'H' => array ( - 'Highlight\\' => - array ( - 0 => __DIR__ . '/..' . '/scrivo/highlight.php', - ), - 'HighlightUtilities\\' => - array ( - 0 => __DIR__ . '/..' . '/scrivo/highlight.php', - ), 'HTMLPurifier' => array ( 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library', @@ -1109,66 +1119,79 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'OutboundMailSeeder' => __DIR__ . '/../..' . '/database/seeds/OutboundMailSeeder.php', 'PDFLib_Adapter' => __DIR__ . '/..' . '/dompdf/dompdf/include/pdflib_adapter.cls.php', 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php', 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php', 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/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\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php', + 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php', + 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php', + 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.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\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.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\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php', + 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php', + 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php', + 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php', + 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/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\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php', + 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php', + 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php', + 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php', + 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/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\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php', + 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php', + 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php', + 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php', + 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php', + 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php', + 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php', + 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php', + 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/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\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php', - 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php', + 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php', + 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php', + 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php', + 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php', + 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php', + 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php', + 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php', + 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php', + 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php', + 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php', + 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php', + 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php', + 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php', 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php', 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php', + 'PHPUnit\\Framework\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Error.php', + 'PHPUnit\\Framework\\ErrorTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ErrorTestCase.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/Exception.php', 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php', 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php', 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', @@ -1183,20 +1206,32 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php', 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php', 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php', - 'PHPUnit\\Framework\\MockObject\\Builder\\Match_' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php', 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php', 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php', + 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php', + 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php', + 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php', + 'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php', 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php', + 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php', 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php', 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php', 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php', + 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php', 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php', 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php', + 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php', 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php', + 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php', 'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php', + 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php', + 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php', + 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php', + 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php', 'PHPUnit\\Framework\\MockObject\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php', 'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php', @@ -1204,6 +1239,9 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php', 'PHPUnit\\Framework\\MockObject\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php', 'PHPUnit\\Framework\\MockObject\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockType.php', + 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php', + 'PHPUnit\\Framework\\MockObject\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php', + 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php', 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php', 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php', 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php', @@ -1217,6 +1255,7 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php', 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php', 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php', 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php', 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php', 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php', @@ -1227,10 +1266,14 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php', 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php', 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php', + 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php', + 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php', + 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php', 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php', 'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php', 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/OutputError.php', 'PHPUnit\\Framework\\PHPTAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php', + 'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php', 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php', 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', @@ -1265,6 +1308,8 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php', 'PHPUnit\\Runner\\DefaultTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php', 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php', + 'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.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', @@ -1281,23 +1326,111 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php', 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php', + 'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php', + 'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php', + 'PHPUnit\\TextUI\\CliArguments\\Mapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php', 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception.php', + 'PHPUnit\\TextUI\\DefaultResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php', + 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php', 'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php', + 'PHPUnit\\TextUI\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php', 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php', + 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php', + 'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php', 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit\\TextUI\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php', 'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php', 'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php', 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php', 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.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\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php', + 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.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\\InvalidDataSetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidDataSetException.php', 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php', @@ -1323,185 +1456,17 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php', 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php', 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php', + 'PHPUnit\\Util\\Xml\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Exception.php', + 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php', + 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php', + 'PHPUnit\\Util\\Xml\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php', + 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php', + 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php', + 'PHPUnit\\Util\\Xml\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php', + 'PHPUnit\\Util\\Xml\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Validator.php', 'PHP_Evaluator' => __DIR__ . '/..' . '/dompdf/dompdf/include/php_evaluator.cls.php', - 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/TokenWithScope.php', - 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php', - 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Abstract.php', - 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Ampersand.php', - 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/AndEqual.php', - 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Array.php', - 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ArrayCast.php', - 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/As.php', - 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/At.php', - 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Backtick.php', - 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/BadCharacter.php', - 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/BooleanAnd.php', - 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/BooleanOr.php', - 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/BoolCast.php', - 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/break.php', - 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Callable.php', - 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Caret.php', - 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Case.php', - 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Catch.php', - 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Character.php', - 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Class.php', - 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ClassC.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ClassNameConstant.php', - 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Clone.php', - 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CloseBracket.php', - 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CloseCurly.php', - 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CloseSquare.php', - 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CloseTag.php', - 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Coalesce.php', - 'PHP_Token_COALESCE_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CoalesceEqual.php', - 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Colon.php', - 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Comma.php', - 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Comment.php', - 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ConcatEqual.php', - 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Const.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ConstantEncapsedString.php', - 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Continue.php', - 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CurlyOpen.php', - 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Dec.php', - 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Declare.php', - 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Default.php', - 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Dir.php', - 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Div.php', - 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DivEqual.php', - 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DNumber.php', - 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Do.php', - 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DocComment.php', - 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Dollar.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php', - 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Dot.php', - 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DoubleArrow.php', - 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DoubleCast.php', - 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DoubleColon.php', - 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/DoubleQuotes.php', - 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Echo.php', - 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Ellipsis.php', - 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Else.php', - 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Elseif.php', - 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Empty.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/EncapsedAndWhitespace.php', - 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Enddeclare.php', - 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Endfor.php', - 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Endforeach.php', - 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Endif.php', - 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Endswitch.php', - 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Endwhile.php', - 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/EndHeredoc.php', - 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Equal.php', - 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Eval.php', - 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ExclamationMark.php', - 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Exit.php', - 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Extends.php', - 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/File.php', - 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Final.php', - 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Finally.php', - 'PHP_Token_FN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Fn.php', - 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/For.php', - 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Foreach.php', - 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Function.php', - 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/FuncC.php', - 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Global.php', - 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Goto.php', - 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Gt.php', - 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/HaltCompiler.php', - 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/If.php', - 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Implements.php', - 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Inc.php', - 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Include.php', - 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IncludeOnce.php', - 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/InlineHtml.php', - 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Instanceof.php', - 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Insteadof.php', - 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Interface.php', - 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IntCast.php', - 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Isset.php', - 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsEqual.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsGreaterOrEqual.php', - 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsIdentical.php', - 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsNotEqual.php', - 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsNotIdentical.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/IsSmallerOrEqual.php', - 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Includes.php', - 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Line.php', - 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/List.php', - 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Lnumber.php', - 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/LogicalAnd.php', - 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/LogicalOr.php', - 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/LogicalXor.php', - 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Lt.php', - 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/MethodC.php', - 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Minus.php', - 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/MinusEqual.php', - 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ModEqual.php', - 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Mult.php', - 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/MulEqual.php', - 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Namespace.php', - 'PHP_Token_NAME_FULLY_QUALIFIED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NameFullyQualified.php', - 'PHP_Token_NAME_QUALIFIED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NameQualified.php', - 'PHP_Token_NAME_RELATIVE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NameRelative.php', - 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/New.php', - 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NsC.php', - 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NsSeparator.php', - 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/NumString.php', - 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ObjectCast.php', - 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/ObjectOperator.php', - 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OpenBracket.php', - 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OpenCurly.php', - 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OpenSquare.php', - 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OpenTag.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OpenTagWithEcho.php', - 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/OrEqual.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/PaamayimNekudotayim.php', - 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Percent.php', - 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Pipe.php', - 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Plus.php', - 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/PlusEqual.php', - 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Pow.php', - 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/PowEqual.php', - 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Print.php', - 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Private.php', - 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Protected.php', - 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Public.php', - 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/QuestionMark.php', - 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Require.php', - 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/RequireOnce.php', - 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Return.php', - 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Semicolon.php', - 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Sl.php', - 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/SlEqual.php', - 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Spaceship.php', - 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Sr.php', - 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/SrEqual.php', - 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/StartHeredoc.php', - 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Static.php', - 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/String.php', - 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/StringCast.php', - 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/StringVarname.php', - 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Switch.php', - 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Stream.php', - 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/CachingFactory.php', - 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Throw.php', - 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Tilde.php', - 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Trait.php', - 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/TraitC.php', - 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Try.php', - 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Unset.php', - 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/UnsetCast.php', - 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Use.php', - 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/UseFunction.php', - 'PHP_Token_Util' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Util.php', - 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Var.php', - 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Variable.php', - 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/While.php', - 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Whitespace.php', - 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/XorEqual.php', - 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Yield.php', - 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/YieldFrom.php', 'Page_Cache' => __DIR__ . '/..' . '/dompdf/dompdf/include/page_cache.cls.php', 'Page_Frame_Decorator' => __DIR__ . '/..' . '/dompdf/dompdf/include/page_frame_decorator.cls.php', 'Page_Frame_Reflower' => __DIR__ . '/..' . '/dompdf/dompdf/include/page_frame_reflower.cls.php', @@ -1579,22 +1544,48 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'Positioner' => __DIR__ . '/..' . '/dompdf/dompdf/include/positioner.cls.php', 'Renderer' => __DIR__ . '/..' . '/dompdf/dompdf/include/renderer.cls.php', + 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php', + 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php', + 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php', + 'SebastianBergmann\\CliParser\\Parser' => __DIR__ . '/..' . '/sebastian/cli-parser/src/Parser.php', + 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php', + 'SebastianBergmann\\CliParser\\UnknownOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php', + 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.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\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php', 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PCOV' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PCOV.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', - 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Selector.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php', + 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php', 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/CrapIndex.php', 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\ParserException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ParserException.php', + 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php', + 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php', + 'SebastianBergmann\\CodeCoverage\\ReflectionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php', + 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php', 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Cobertura.php', 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', @@ -1616,26 +1607,62 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a '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\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php', + 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php', + 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.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\\Util\\DirectoryCouldNotBeCreatedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php', + 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Filesystem.php', + 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php', 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php', + 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php', 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php', + 'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php', + 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php', + 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php', + 'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php', + 'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php', + 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php', + 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php', + 'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php', + 'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php', + 'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php', + 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php', + 'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php', 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\Exception' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/Exception.php', 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\RuntimeException' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/RuntimeException.php', 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Complexity\\Calculator' => __DIR__ . '/..' . '/sebastian/complexity/src/Calculator.php', + 'SebastianBergmann\\Complexity\\Complexity' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/Complexity.php', + 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php', + 'SebastianBergmann\\Complexity\\ComplexityCollection' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollection.php', + 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php', + 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php', + 'SebastianBergmann\\Complexity\\Exception' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/Exception.php', + 'SebastianBergmann\\Complexity\\RuntimeException' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/RuntimeException.php', 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', @@ -1659,12 +1686,23 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.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\\ExcludeList' => __DIR__ . '/..' . '/sebastian/global-state/src/ExcludeList.php', 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php', 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\Invoker\\Exception' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/Exception.php', + 'SebastianBergmann\\Invoker\\Invoker' => __DIR__ . '/..' . '/phpunit/php-invoker/src/Invoker.php', + 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php', + 'SebastianBergmann\\Invoker\\TimeoutException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/TimeoutException.php', + 'SebastianBergmann\\LinesOfCode\\Counter' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Counter.php', + 'SebastianBergmann\\LinesOfCode\\Exception' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/Exception.php', + 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php', + 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php', + 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php', + 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php', + 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.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', @@ -1675,21 +1713,37 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a '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\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/Exception.php', - 'SebastianBergmann\\Timer\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-timer/src/RuntimeException.php', + 'SebastianBergmann\\Template\\Exception' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/Exception.php', + 'SebastianBergmann\\Template\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php', + 'SebastianBergmann\\Template\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/RuntimeException.php', + 'SebastianBergmann\\Template\\Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', + 'SebastianBergmann\\Timer\\Duration' => __DIR__ . '/..' . '/phpunit/php-timer/src/Duration.php', + 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/Exception.php', + 'SebastianBergmann\\Timer\\NoActiveTimerException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php', + 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => __DIR__ . '/..' . '/phpunit/php-timer/src/ResourceUsageFormatter.php', + 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php', 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', - 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/CallableType.php', + 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/type/CallableType.php', 'SebastianBergmann\\Type\\Exception' => __DIR__ . '/..' . '/sebastian/type/src/exception/Exception.php', - 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/GenericObjectType.php', - 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/IterableType.php', - 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/NullType.php', - 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/ObjectType.php', + 'SebastianBergmann\\Type\\FalseType' => __DIR__ . '/..' . '/sebastian/type/src/type/FalseType.php', + 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/GenericObjectType.php', + 'SebastianBergmann\\Type\\IntersectionType' => __DIR__ . '/..' . '/sebastian/type/src/type/IntersectionType.php', + 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/type/IterableType.php', + 'SebastianBergmann\\Type\\MixedType' => __DIR__ . '/..' . '/sebastian/type/src/type/MixedType.php', + 'SebastianBergmann\\Type\\NeverType' => __DIR__ . '/..' . '/sebastian/type/src/type/NeverType.php', + 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/type/NullType.php', + 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/ObjectType.php', + 'SebastianBergmann\\Type\\Parameter' => __DIR__ . '/..' . '/sebastian/type/src/Parameter.php', + 'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php', 'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php', - 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/SimpleType.php', - 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/Type.php', + 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/type/SimpleType.php', + 'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/type/StaticType.php', + 'SebastianBergmann\\Type\\TrueType' => __DIR__ . '/..' . '/sebastian/type/src/type/TrueType.php', + 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/type/Type.php', 'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php', - 'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/UnknownType.php', - 'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/VoidType.php', + 'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnionType.php', + 'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnknownType.php', + 'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/type/VoidType.php', 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', 'Stringable' => __DIR__ . '/..' . '/myclabs/php-enum/stubs/Stringable.php', 'Style' => __DIR__ . '/..' . '/dompdf/dompdf/include/style.cls.php', @@ -1711,7 +1765,6 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a 'Text_Frame_Decorator' => __DIR__ . '/..' . '/dompdf/dompdf/include/text_frame_decorator.cls.php', 'Text_Frame_Reflower' => __DIR__ . '/..' . '/dompdf/dompdf/include/text_frame_reflower.cls.php', 'Text_Renderer' => __DIR__ . '/..' . '/dompdf/dompdf/include/text_renderer.cls.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', @@ -1730,10 +1783,10 @@ class ComposerStaticInite7140a2ec68f998789fab4fcb333821a public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInite7140a2ec68f998789fab4fcb333821a::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInite7140a2ec68f998789fab4fcb333821a::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInite7140a2ec68f998789fab4fcb333821a::$prefixesPsr0; - $loader->classMap = ComposerStaticInite7140a2ec68f998789fab4fcb333821a::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit9da6744efcb5435630815fb416a6752c::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit9da6744efcb5435630815fb416a6752c::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit9da6744efcb5435630815fb416a6752c::$prefixesPsr0; + $loader->classMap = ComposerStaticInit9da6744efcb5435630815fb416a6752c::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index f57716e46..e2fcf751e 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,5 +1,64 @@ { "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "version_normalized": "2.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "time": "2022-01-18T09:12:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "install-path": "../asm89/stack-cors" + }, { "name": "aws/aws-crt-php", "version": "v1.0.2", @@ -151,77 +210,67 @@ "install-path": "../aws/aws-sdk-php" }, { - "name": "brozot/laravel-fcm", - "version": "1.3.1", - "version_normalized": "1.3.1.0", + "name": "brick/math", + "version": "0.9.3", + "version_normalized": "0.9.3.0", "source": { "type": "git", - "url": "https://github.com/brozot/Laravel-FCM.git", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668" + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brozot/Laravel-FCM/zipball/1b5c64c5ea829f46c7e5f274971c587a8c3f0668", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "~6.0", - "illuminate/support": "5.*|^6", - "monolog/monolog": "^1.12|^2.0", - "php": ">=5.5.9" + "ext-json": "*", + "php": "^7.1 || ^8.0" }, "require-dev": { - "laravel/laravel": "5.2.*", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "4.7.*", - "satooshi/php-coveralls": "dev-master" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" }, - "time": "2019-11-26T16:14:39+00:00", + "time": "2021-08-15T20:50:18+00:00", "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelFCM\\FCMServiceProvider" - ], - "aliases": { - "FCM": "LaravelFCM\\Facades\\FCM", - "FCMGroup": "LaravelFCM\\Facades\\FCMGroup" - } - } - }, "installation-source": "dist", "autoload": { "psr-4": { - "LaravelFCM\\": "src/", - "LaravelFCM\\Mocks\\": "tests/mocks" + "Brick\\Math\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Brosy", - "email": "nicolas.brosy@gmail.com" - } - ], - "description": "Laravel / Lumen package for Firebase Cloud Messaging ", + "description": "Arbitrary-precision arithmetic library", "keywords": [ - "FCM", - "Firebase Cloud Messaging", - "firebase", - "laravel", - "lumen", - "notification", - "push" + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" ], "support": { - "issues": "https://github.com/brozot/Laravel-FCM/issues", - "source": "https://github.com/brozot/Laravel-FCM/tree/master" + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" }, - "install-path": "../brozot/laravel-fcm" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "install-path": "../brick/math" }, { "name": "bugsnag/bugsnag", @@ -619,46 +668,6 @@ "abandoned": "diglactic/laravel-breadcrumbs", "install-path": "../davejamesmiller/laravel-breadcrumbs" }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "version_normalized": "0.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "time": "2019-12-04T15:06:13+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "install-path": "../dnoegel/php-xdg-base-dir" - }, { "name": "doctrine/cache", "version": "2.2.0", @@ -1574,44 +1583,46 @@ }, { "name": "facade/ignition", - "version": "1.18.1", - "version_normalized": "1.18.1.0", + "version": "2.17.6", + "version_normalized": "2.17.6.0", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf" + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf", - "reference": "d173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", "shasum": "" }, "require": { + "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "facade/flare-client-php": "^1.3", - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.4", - "illuminate/support": "~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0", - "monolog/monolog": "^1.12 || ^2.0", - "php": "^7.1|^8.0", - "scrivo/highlight.php": "^9.15", - "symfony/console": "^3.4 || ^4.0", - "symfony/var-dumper": "^3.4 || ^4.0" + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" }, "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "orchestra/testbench": "^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0" + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" }, "suggest": { - "laravel/telescope": "^2.0" + "laravel/telescope": "^3.1" }, - "time": "2022-02-23T20:20:52+00:00", + "time": "2022-06-30T18:26:59+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -1976,6 +1987,88 @@ }, "install-path": "../flowjs/flow-php-server" }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "version_normalized": "2.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "time": "2022-02-23T14:25:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "install-path": "../fruitcake/laravel-cors" + }, { "name": "giggsey/libphonenumber-for-php", "version": "8.13.3", @@ -2288,39 +2381,51 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", - "version_normalized": "6.5.8.0", + "version": "7.5.0", + "version_normalized": "7.5.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "time": "2022-06-20T22:16:07+00:00", + "time": "2022-08-28T15:39:27+00:00", "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "7.5-dev" } }, "installation-source": "dist", @@ -2374,19 +2479,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { @@ -2493,46 +2599,50 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.9.0", - "version_normalized": "1.9.0.0", + "version": "2.4.3", + "version_normalized": "2.4.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "time": "2022-06-20T21:43:03+00:00", + "time": "2022-10-26T14:07:24+00:00", "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "2.4-dev" } }, "installation-source": "dist", "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -2571,6 +2681,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -2586,7 +2701,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.0" + "source": "https://github.com/guzzle/psr7/tree/2.4.3" }, "funding": [ { @@ -2822,17 +2937,17 @@ }, { "name": "laravel/framework", - "version": "v6.20.44", - "version_normalized": "6.20.44.0", + "version": "v7.30.6", + "version_normalized": "7.30.6.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0" + "reference": "ecdafad1dda3c790af186a6d18479ea4757ef9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0", - "reference": "505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0", + "url": "https://api.github.com/repos/laravel/framework/zipball/ecdafad1dda3c790af186a6d18479ea4757ef9ee", + "reference": "ecdafad1dda3c790af186a6d18479ea4757ef9ee", "shasum": "" }, "require": { @@ -2844,29 +2959,34 @@ "ext-openssl": "*", "league/commonmark": "^1.3", "league/flysystem": "^1.1", - "monolog/monolog": "^1.12|^2.0", + "monolog/monolog": "^2.0", "nesbot/carbon": "^2.31", "opis/closure": "^3.6", "php": "^7.2.5|^8.0", "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", + "ramsey/uuid": "^3.7|^4.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.3.4", - "symfony/debug": "^4.3.4", - "symfony/finder": "^4.3.4", - "symfony/http-foundation": "^4.3.4", - "symfony/http-kernel": "^4.3.4", + "symfony/console": "^5.0", + "symfony/error-handler": "^5.0", + "symfony/finder": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/http-kernel": "^5.0", + "symfony/mime": "^5.0", "symfony/polyfill-php73": "^1.17", - "symfony/process": "^4.3.4", - "symfony/routing": "^4.3.4", - "symfony/var-dumper": "^4.3.4", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^3.3" + "symfony/process": "^5.0", + "symfony/routing": "^5.0", + "symfony/var-dumper": "^5.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^4.0", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", @@ -2893,6 +3013,7 @@ "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" @@ -2905,11 +3026,11 @@ "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "~1.3.3|^1.4.2", "moontoast/math": "^1.1", - "orchestra/testbench-core": "^4.8", + "orchestra/testbench-core": "^5.8", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5.15|^8.4|^9.3.3", + "phpunit/phpunit": "^8.4|^9.3.3", "predis/predis": "^1.1.1", - "symfony/cache": "^4.3.4" + "symfony/cache": "^5.0" }, "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).", @@ -2922,26 +3043,29 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.8).", - "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0.1).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0.1).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (~1.3.3|^1.4.2).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.3.3).", "predis/predis": "Required to use the predis connector (^1.1.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", + "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, - "time": "2022-01-12T16:12:12+00:00", + "time": "2021-12-07T14:56:47+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "installation-source": "dist", @@ -3050,38 +3174,39 @@ }, { "name": "laravel/tinker", - "version": "v1.0.10", - "version_normalized": "1.0.10.0", + "version": "v2.7.3", + "version_normalized": "2.7.3.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + "reference": "5062061b4924af3392225dd482ca7b4d85d8b8ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5062061b4924af3392225dd482ca7b4d85d8b8ef", + "reference": "5062061b4924af3392225dd482ca7b4d85d8b8ef", "shasum": "" }, "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "mockery/mockery": "~1.3.3|^1.4.2", + "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." }, - "time": "2019-08-07T15:10:45+00:00", + "time": "2022-11-09T15:11:38+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -3114,10 +3239,68 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v1.0.10" + "source": "https://github.com/laravel/tinker/tree/v2.7.3" }, "install-path": "../laravel/tinker" }, + { + "name": "laravel/ui", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "d01a705763c243b07be795e9d1bb47f89260f73d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/d01a705763c243b07be795e9d1bb47f89260f73d", + "reference": "d01a705763c243b07be795e9d1bb47f89260f73d", + "shasum": "" + }, + "require": { + "illuminate/console": "^7.0", + "illuminate/filesystem": "^7.0", + "illuminate/support": "^7.0", + "php": "^7.2.5|^8.0" + }, + "time": "2020-11-03T19:45:19+00:00", + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "issues": "https://github.com/laravel/ui/issues", + "source": "https://github.com/laravel/ui/tree/v2.5.0" + }, + "install-path": "../laravel/ui" + }, { "name": "laravelcollective/html", "version": "v6.3.0", @@ -4746,30 +4929,38 @@ }, { "name": "nunomaduro/collision", - "version": "v3.2.0", - "version_normalized": "3.2.0.0", + "version": "v4.3.0", + "version_normalized": "4.3.0.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f7c45764dfe4ba5f2618d265a6f1f9c72732e01d" + "reference": "7c125dc2463f3e144ddc7e05e63077109508c94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f7c45764dfe4ba5f2618d265a6f1f9c72732e01d", - "reference": "f7c45764dfe4ba5f2618d265a6f1f9c72732e01d", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/7c125dc2463f3e144ddc7e05e63077109508c94e", + "reference": "7c125dc2463f3e144ddc7e05e63077109508c94e", "shasum": "" }, "require": { - "filp/whoops": "^2.1.4", + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.4", "php": "^7.2.5 || ^8.0", - "php-parallel-lint/php-console-highlighter": "0.5.*", - "symfony/console": "~2.8|~3.3|~4.0" + "symfony/console": "^5.0" }, "require-dev": { - "laravel/framework": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "facade/ignition": "^2.0", + "fideloper/proxy": "^4.2", + "friendsofphp/php-cs-fixer": "^2.16", + "fruitcake/laravel-cors": "^1.0", + "laravel/framework": "^7.0", + "laravel/tinker": "^2.0", + "nunomaduro/larastan": "^0.6", + "orchestra/testbench": "^5.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^8.5.1 || ^9.0" }, - "time": "2021-02-11T09:01:42+00:00", + "time": "2020-10-29T15:12:23+00:00", "type": "library", "extra": { "laravel": { @@ -4895,59 +5086,6 @@ }, "install-path": "../opis/closure" }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "version_normalized": "9.99.100.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2020-10-15T08:29:30+00:00", - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "install-path": "../paragonie/random_compat" - }, { "name": "phar-io/manifest", "version": "2.0.3", @@ -5106,114 +5244,6 @@ }, "install-path": "../phenx/php-font-lib" }, - { - "name": "php-parallel-lint/php-console-color", - "version": "v0.3", - "version_normalized": "0.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Console-Color.git", - "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Color/zipball/b6af326b2088f1ad3b264696c9fd590ec395b49e", - "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "replace": { - "jakub-onderka/php-console-color": "*" - }, - "require-dev": { - "php-parallel-lint/php-code-style": "1.0", - "php-parallel-lint/php-parallel-lint": "1.0", - "php-parallel-lint/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "time": "2020-05-14T05:47:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Console-Color/issues", - "source": "https://github.com/php-parallel-lint/PHP-Console-Color/tree/master" - }, - "install-path": "../php-parallel-lint/php-console-color" - }, - { - "name": "php-parallel-lint/php-console-highlighter", - "version": "v0.5", - "version_normalized": "0.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Console-Highlighter.git", - "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Highlighter/zipball/21bf002f077b177f056d8cb455c5ed573adfdbb8", - "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.4.0", - "php-parallel-lint/php-console-color": "~0.2" - }, - "replace": { - "jakub-onderka/php-console-highlighter": "*" - }, - "require-dev": { - "php-parallel-lint/php-code-style": "~1.0", - "php-parallel-lint/php-parallel-lint": "~1.0", - "php-parallel-lint/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "time": "2020-05-13T07:37:49+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues", - "source": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/tree/master" - }, - "install-path": "../php-parallel-lint/php-console-highlighter" - }, { "name": "php-webdriver/webdriver", "version": "1.13.1", @@ -5679,48 +5709,52 @@ }, { "name": "phpspec/phpspec", - "version": "4.3.3", - "version_normalized": "4.3.3.0", + "version": "7.3.0", + "version_normalized": "7.3.0.0", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "9812b081a11c309128efa092ae5f128733170776" + "reference": "7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/9812b081a11c309128efa092ae5f128733170776", - "reference": "9812b081a11c309128efa092ae5f128733170776", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133", + "reference": "7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.5", "ext-tokenizer": "*", - "php": "^7.1, <7.4", + "php": "^7.3 || 8.0.* || 8.1.* || 8.2.*", "phpspec/php-diff": "^1.0.0", - "phpspec/prophecy": "^1.7", - "sebastian/exporter": "^1.0 || ^2.0 || ^3.0", - "symfony/console": "^3.4 || ^4.0", - "symfony/event-dispatcher": "^3.4 || ^4.0", - "symfony/finder": "^3.4 || ^4.0", - "symfony/process": "^3.4 || ^4.0", - "symfony/yaml": "^3.4 || ^4.0" + "phpspec/prophecy": "^1.9", + "sebastian/exporter": "^3.0 || ^4.0", + "symfony/console": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/yaml": "^3.4 || ^4.4 || ^5.0 || ^6.0" + }, + "conflict": { + "sebastian/comparator": "<1.2.4" }, "require-dev": { "behat/behat": "^3.3", - "phpunit/phpunit": "^5.7 || ^6.0", - "symfony/filesystem": "^3.4 || ^4.0" + "phpunit/phpunit": "^8.0 || ^9.0", + "symfony/filesystem": "^3.4 || ^4.0 || ^5.0 || ^6.0", + "vimeo/psalm": "^4.3" }, "suggest": { "phpspec/nyan-formatters": "Adds Nyan formatters" }, - "time": "2019-08-05T08:53:27+00:00", + "time": "2022-12-14T16:15:59+00:00", "bin": [ "bin/phpspec" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1.x-dev" + "dev-main": "7.3.x-dev" } }, "installation-source": "dist", @@ -5761,7 +5795,7 @@ ], "support": { "issues": "https://github.com/phpspec/phpspec/issues", - "source": "https://github.com/phpspec/phpspec/tree/4.3.3" + "source": "https://github.com/phpspec/phpspec/tree/7.3.0" }, "install-path": "../phpspec/phpspec" }, @@ -5837,42 +5871,46 @@ }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", - "version_normalized": "7.0.15.0", + "version": "9.2.23", + "version_normalized": "9.2.23.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": ">=7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.3 || ^4.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.14", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, - "time": "2021-07-26T12:20:09+00:00", + "time": "2022-12-28T12:41:10+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.2-dev" } }, "installation-source": "dist", @@ -5901,7 +5939,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" }, "funding": [ { @@ -5913,30 +5951,30 @@ }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", - "version_normalized": "2.0.5.0", + "version": "3.0.6", + "version_normalized": "3.0.6.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, - "time": "2021-12-02T12:42:26+00:00", + "time": "2021-12-02T12:48:52+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "installation-source": "dist", @@ -5964,7 +6002,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -5975,25 +6013,99 @@ "install-path": "../phpunit/php-file-iterator" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "version_normalized": "1.2.1.0", + "name": "phpunit/php-invoker", + "version": "3.1.1", + "version_normalized": "3.1.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" }, - "time": "2015-06-21T13:50:34+00:00", + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "time": "2020-09-28T05:58:55+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "install-path": "../phpunit/php-invoker" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "time": "2020-10-26T05:33:50+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "installation-source": "dist", "autoload": { "classmap": [ @@ -6018,36 +6130,42 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "install-path": "../phpunit/php-text-template" }, { "name": "phpunit/php-timer", - "version": "2.1.3", - "version_normalized": "2.1.3.0", + "version": "5.0.3", + "version_normalized": "5.0.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T08:20:02+00:00", + "time": "2020-10-26T13:16:10+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "installation-source": "dist", @@ -6074,7 +6192,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -6084,82 +6202,19 @@ ], "install-path": "../phpunit/php-timer" }, - { - "name": "phpunit/php-token-stream", - "version": "4.0.4", - "version_normalized": "4.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", - "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "time": "2020-08-04T08:28:15+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "install-path": "../phpunit/php-token-stream" - }, { "name": "phpunit/phpunit", - "version": "8.5.31", - "version_normalized": "8.5.31.0", + "version": "9.5.27", + "version_normalized": "9.5.27.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e" + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33c126b09a42de5c99e5e8032b54e8221264a74e", - "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", "shasum": "" }, "require": { @@ -6170,41 +6225,46 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", + "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, - "time": "2022-10-28T05:57:37+00:00", + "time": "2022-12-09T07:31:23+00:00", "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.5-dev" } }, "installation-source": "dist", "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -6229,7 +6289,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.31" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" }, "funding": [ { @@ -6435,6 +6495,59 @@ }, "install-path": "../psr/container" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "time": "2019-01-08T18:20:26+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "install-path": "../psr/event-dispatcher" + }, { "name": "psr/http-client", "version": "1.0.1", @@ -6713,49 +6826,47 @@ }, { "name": "psy/psysh", - "version": "v0.9.12", - "version_normalized": "0.9.12.0", + "version": "v0.11.10", + "version_normalized": "0.11.10.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e9eadffbed9c9deb5426fd107faae0452bf20a36", + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, - "time": "2019-12-06T14:19:43+00:00", + "time": "2022-12-23T17:47:18+00:00", "bin": [ "bin/psysh" ], "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-main": "0.11.x-dev" } }, "installation-source": "dist", @@ -6788,7 +6899,7 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.9.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.10" }, "install-path": "../psy/psysh" }, @@ -6840,55 +6951,153 @@ "install-path": "../ralouphie/getallheaders" }, { - "name": "ramsey/uuid", - "version": "3.9.7", - "version_normalized": "3.9.7.0", + "name": "ramsey/collection", + "version": "1.2.2", + "version_normalized": "1.2.2.0", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178" + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/dc75aa439eb4c1b77f5379fd958b3dc0e6014178", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", "shasum": "" }, "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "time": "2021-10-10T03:01:02+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "install-path": "../ramsey/collection" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "version_normalized": "4.2.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7.0 | ^8.0", - "symfony/polyfill-ctype": "^1.8" + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2", - "mockery/mockery": "^0.9.11 | ^1", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", - "nikic/php-parser": "<=4.5.0", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.5", - "yoast/phpunit-polyfills": "^1.0" + "vimeo/psalm": "^4.9" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, - "time": "2022-12-19T21:55:10+00:00", + "time": "2021-09-25T23:10:38+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, "installation-source": "dist", "autoload": { "files": [ @@ -6902,23 +7111,7 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", @@ -6926,9 +7119,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" + "source": "https://github.com/ramsey/uuid/tree/4.2.3" }, "funding": [ { @@ -6943,44 +7134,38 @@ "install-path": "../ramsey/uuid" }, { - "name": "scrivo/highlight.php", - "version": "v9.18.1.10", - "version_normalized": "9.18.1.10", + "name": "sebastian/cli-parser", + "version": "1.0.1", + "version_normalized": "1.0.1.0", "source": { "type": "git", - "url": "https://github.com/scrivo/highlight.php.git", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e", - "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=5.4" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.7", - "sabberworm/php-css-parser": "^8.3", - "symfony/finder": "^2.8|^3.4|^5.4", - "symfony/var-dumper": "^2.8|^3.4|^5.4" + "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords" - }, - "time": "2022-12-17T21:53:22+00:00", + "time": "2020-09-28T06:08:49+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "installation-source": "dist", "autoload": { - "files": [ - "HighlightUtilities/functions.php" - ], - "psr-0": { - "Highlight\\": "", - "HighlightUtilities\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6988,67 +7173,110 @@ ], "authors": [ { - "name": "Geert Bergman", - "homepage": "http://www.scrivo.org/", - "role": "Project Author" - }, - { - "name": "Vladimir Jimenez", - "homepage": "https://allejo.io", - "role": "Maintainer" - }, - { - "name": "Martin Folkers", - "homepage": "https://twobrain.io", - "role": "Contributor" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", - "keywords": [ - "code", - "highlight", - "highlight.js", - "highlight.php", - "syntax" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/scrivo/highlight.php/issues", - "source": "https://github.com/scrivo/highlight.php" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { - "url": "https://github.com/allejo", + "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "install-path": "../scrivo/highlight.php" + "install-path": "../sebastian/cli-parser" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", - "version_normalized": "1.0.2.0", + "name": "sebastian/code-unit", + "version": "1.0.8", + "version_normalized": "1.0.8.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T08:15:22+00:00", + "time": "2020-10-26T13:08:54+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "install-path": "../sebastian/code-unit" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "time": "2020-09-28T05:30:19+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "installation-source": "dist", @@ -7071,7 +7299,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -7083,32 +7311,32 @@ }, { "name": "sebastian/comparator", - "version": "3.0.5", - "version_normalized": "3.0.5.0", + "version": "4.0.8", + "version_normalized": "4.0.8.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, - "time": "2022-09-14T12:31:48+00:00", + "time": "2022-09-14T12:41:17+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "installation-source": "dist", @@ -7148,7 +7376,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -7159,32 +7387,92 @@ "install-path": "../sebastian/comparator" }, { - "name": "sebastian/diff", - "version": "3.0.3", - "version_normalized": "3.0.3.0", + "name": "sebastian/complexity", + "version": "2.0.2", + "version_normalized": "2.0.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T07:59:04+00:00", + "time": "2020-10-26T15:52:27+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "install-path": "../sebastian/complexity" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "version_normalized": "4.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "time": "2020-10-26T13:10:38+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "installation-source": "dist", @@ -7217,7 +7505,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -7229,33 +7517,33 @@ }, { "name": "sebastian/environment", - "version": "4.2.4", - "version_normalized": "4.2.4.0", + "version": "5.1.4", + "version_normalized": "5.1.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" }, - "time": "2020-11-30T07:53:42+00:00", + "time": "2022-04-03T09:37:03+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "installation-source": "dist", @@ -7283,7 +7571,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -7295,32 +7583,32 @@ }, { "name": "sebastian/exporter", - "version": "3.1.5", - "version_normalized": "3.1.5.0", + "version": "4.0.5", + "version_normalized": "4.0.5.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, - "time": "2022-09-14T06:00:17+00:00", + "time": "2022-09-14T06:03:37+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "installation-source": "dist", @@ -7356,14 +7644,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -7375,36 +7663,36 @@ }, { "name": "sebastian/global-state", - "version": "3.0.2", - "version_normalized": "3.0.2.0", + "version": "5.0.5", + "version_normalized": "5.0.5.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" }, - "time": "2022-02-10T06:55:38+00:00", + "time": "2022-02-14T08:28:10+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "installation-source": "dist", @@ -7430,7 +7718,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -7441,33 +7729,93 @@ "install-path": "../sebastian/global-state" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", - "version_normalized": "3.0.4.0", + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "version_normalized": "1.0.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T07:40:27+00:00", + "time": "2020-11-28T06:42:11+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "install-path": "../sebastian/lines-of-code" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "version_normalized": "4.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "time": "2020-10-26T13:12:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "installation-source": "dist", @@ -7490,7 +7838,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -7502,30 +7850,30 @@ }, { "name": "sebastian/object-reflector", - "version": "1.1.2", - "version_normalized": "1.1.2.0", + "version": "2.0.4", + "version_normalized": "2.0.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T07:37:18+00:00", + "time": "2020-10-26T13:14:26+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "installation-source": "dist", @@ -7548,7 +7896,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -7560,30 +7908,30 @@ }, { "name": "sebastian/recursion-context", - "version": "3.0.1", - "version_normalized": "3.0.1.0", + "version": "4.0.4", + "version_normalized": "4.0.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, - "time": "2020-11-30T07:34:24+00:00", + "time": "2020-10-26T13:17:30+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "installation-source": "dist", @@ -7614,7 +7962,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { @@ -7626,27 +7974,30 @@ }, { "name": "sebastian/resource-operations", - "version": "2.0.2", - "version_normalized": "2.0.2.0", + "version": "3.0.3", + "version_normalized": "3.0.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, - "time": "2020-11-30T07:30:19+00:00", + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "time": "2020-09-28T06:45:17+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "installation-source": "dist", @@ -7669,7 +8020,7 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -7681,30 +8032,30 @@ }, { "name": "sebastian/type", - "version": "1.1.4", - "version_normalized": "1.1.4.0", + "version": "3.2.0", + "version_normalized": "3.2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.5" }, - "time": "2020-11-30T07:25:11+00:00", + "time": "2022-09-12T14:47:03+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.2-dev" } }, "installation-source": "dist", @@ -7728,7 +8079,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -7740,27 +8091,27 @@ }, { "name": "sebastian/version", - "version": "2.0.1", - "version_normalized": "2.0.1.0", + "version": "3.0.2", + "version_normalized": "3.0.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, - "time": "2016-10-03T07:35:21+00:00", + "time": "2020-09-28T06:39:44+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "installation-source": "dist", @@ -7784,8 +8135,14 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "install-path": "../sebastian/version" }, { @@ -7869,44 +8226,47 @@ }, { "name": "symfony/console", - "version": "v4.4.49", - "version_normalized": "4.4.49.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -7914,7 +8274,7 @@ "symfony/lock": "", "symfony/process": "" }, - "time": "2022-11-05T17:10:16+00:00", + "time": "2022-12-28T14:15:31+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -7941,8 +8301,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/console/tree/v5.4.17" }, "funding": [ { @@ -7962,24 +8328,24 @@ }, { "name": "symfony/css-selector", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/052ef49b660f9ad2a3adb311c555c9bc11ba61f4", + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, - "time": "2022-06-27T13:16:42+00:00", + "time": "2022-12-23T11:40:44+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8011,7 +8377,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v5.4.17" }, "funding": [ { @@ -8029,78 +8395,6 @@ ], "install-path": "../symfony/css-selector" }, - { - "name": "symfony/debug", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "time": "2022-07-28T16:29:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "abandoned": "symfony/error-handler", - "install-path": "../symfony/debug" - }, { "name": "symfony/deprecation-contracts", "version": "v2.5.2", @@ -8173,21 +8467,22 @@ }, { "name": "symfony/dom-crawler", - "version": "v4.4.45", - "version_normalized": "4.4.45.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5" + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4b8daf6c56801e6d664224261cb100b73edc78a5", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -8197,12 +8492,12 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" }, - "time": "2022-08-03T12:57:57+00:00", + "time": "2022-12-22T10:31:03+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8230,7 +8525,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.45" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.17" }, "funding": [ { @@ -8250,30 +8545,33 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "reference": "b900446552833ad2f91ca7dd52aa8ffe78f66cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b900446552833ad2f91ca7dd52aa8ffe78f66cb2", + "reference": "b900446552833ad2f91ca7dd52aa8ffe78f66cb2", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "time": "2022-07-28T16:29:46+00:00", + "time": "2022-12-13T09:43:00+00:00", + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "installation-source": "dist", "autoload": { @@ -8301,7 +8599,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/error-handler/tree/v5.4.17" }, "funding": [ { @@ -8321,46 +8619,47 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", "symfony/http-kernel": "" }, - "time": "2022-07-20T09:59:04+00:00", + "time": "2022-12-12T15:54:21+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8388,7 +8687,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.17" }, "funding": [ { @@ -8408,31 +8707,31 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", - "version_normalized": "1.1.13.0", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, - "time": "2022-01-02T09:41:36+00:00", + "time": "2022-01-02T09:53:40+00:00", "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -8470,7 +8769,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -8490,24 +8789,25 @@ }, { "name": "symfony/finder", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + "reference": "40c08632019838dfb3350f18cf5563b8080055fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "url": "https://api.github.com/repos/symfony/finder/zipball/40c08632019838dfb3350f18cf5563b8080055fc", + "reference": "40c08632019838dfb3350f18cf5563b8080055fc", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, - "time": "2022-07-29T07:35:46+00:00", + "time": "2022-12-22T10:31:03+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8535,7 +8835,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v5.4.17" }, "funding": [ { @@ -8553,113 +8853,40 @@ ], "install-path": "../symfony/finder" }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", - "version_normalized": "2.5.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "time": "2022-04-12T15:48:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-client-contracts" - }, { "name": "symfony/http-foundation", - "version": "v4.4.49", - "version_normalized": "4.4.49.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173" + "reference": "b64a0e2df212d5849e4584cabff0cf09c5d6866a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/191413c7b832c015bb38eae963f2e57498c3c173", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b64a0e2df212d5849e4584cabff0cf09c5d6866a", + "reference": "b64a0e2df212d5849e4584cabff0cf09c5d6866a", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, - "time": "2022-11-04T16:17:57+00:00", + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "time": "2022-12-14T08:23:03+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8687,7 +8914,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.49" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.17" }, "funding": [ { @@ -8707,58 +8934,66 @@ }, { "name": "symfony/http-kernel", - "version": "v4.4.49", - "version_normalized": "4.4.49.0", + "version": "v5.4.18", + "version_normalized": "5.4.18.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4e36db8103062c62b3882b1bd297b02de6b021c4" + "reference": "5da6f57a13e5d7d77197443cf55697cdf65f1352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4e36db8103062c62b3882b1bd297b02de6b021c4", - "reference": "4e36db8103062c62b3882b1bd297b02de6b021c4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5da6f57a13e5d7d77197443cf55697cdf65f1352", + "reference": "5da6f57a13e5d7d77197443cf55697cdf65f1352", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -8766,7 +9001,7 @@ "symfony/console": "", "symfony/dependency-injection": "" }, - "time": "2022-11-28T17:58:43+00:00", + "time": "2022-12-29T18:54:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -8794,7 +9029,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.49" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.18" }, "funding": [ { @@ -9070,6 +9305,90 @@ ], "install-path": "../symfony/polyfill-iconv" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "version_normalized": "1.27.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "time": "2022-11-03T14:55:06+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-intl-grapheme" + }, { "name": "symfony/polyfill-intl-idn", "version": "v1.27.0", @@ -9651,25 +9970,107 @@ "install-path": "../symfony/polyfill-php80" }, { - "name": "symfony/process", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "name": "symfony/polyfill-php81", + "version": "v1.27.0", + "version_normalized": "1.27.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.1" + }, + "time": "2022-11-03T14:55:06+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php81" + }, + { + "name": "symfony/process", + "version": "v5.4.11", + "version_normalized": "5.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, - "time": "2022-06-27T13:16:42+00:00", + "time": "2022-06-27T16:58:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -9697,7 +10098,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { @@ -9717,45 +10118,46 @@ }, { "name": "symfony/routing", - "version": "v4.4.44", - "version_normalized": "4.4.44.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/routing/zipball/4ce2df9a469c19ba45ca6aca04fec1c358a6e791", + "reference": "4ce2df9a469c19ba45ca6aca04fec1c358a6e791", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" }, - "time": "2022-07-20T09:59:04+00:00", + "time": "2022-12-20T11:10:57+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -9789,7 +10191,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v5.4.17" }, "funding": [ { @@ -9894,55 +10296,152 @@ "install-path": "../symfony/service-contracts" }, { - "name": "symfony/translation", - "version": "v4.4.47", - "version_normalized": "4.4.47.0", + "name": "symfony/string", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94" + "url": "https://github.com/symfony/string.git", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/45036b1d53accc48fe9bab71ccd86d57eba0dd94", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/polyfill-php80": "~1.15" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "time": "2022-12-12T15:54:21+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.17" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/string" + }, + { + "name": "symfony/translation", + "version": "v5.4.14", + "version_normalized": "5.4.14.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab", + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, - "time": "2022-10-03T15:15:11+00:00", + "time": "2022-10-07T08:01:20+00:00", "type": "library", "installation-source": "dist", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -9967,7 +10466,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.47" + "source": "https://github.com/symfony/translation/tree/v5.4.14" }, "funding": [ { @@ -10068,41 +10567,41 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.47", - "version_normalized": "4.4.47.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + "reference": "ad74890513d07060255df2575703daf971de92c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad74890513d07060255df2575703daf971de92c7", + "reference": "ad74890513d07060255df2575703daf971de92c7", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", "ext-intl": "To show region name in time zone dump", "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, - "time": "2022-10-03T15:15:11+00:00", + "time": "2022-12-22T10:31:03+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -10140,7 +10639,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.47" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.17" }, "funding": [ { @@ -10160,33 +10659,37 @@ }, { "name": "symfony/yaml", - "version": "v4.4.45", - "version_normalized": "4.4.45.0", + "version": "v5.4.17", + "version_normalized": "5.4.17.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" + "reference": "edcdc11498108f8967fe95118a7ec8624b94760e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/edcdc11498108f8967fe95118a7ec8624b94760e", + "reference": "edcdc11498108f8967fe95118a7ec8624b94760e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, - "time": "2022-08-02T15:47:23+00:00", + "time": "2022-12-13T09:57:04+00:00", + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "installation-source": "dist", "autoload": { @@ -10214,7 +10717,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.45" + "source": "https://github.com/symfony/yaml/tree/v5.4.17" }, "funding": [ { @@ -10699,77 +11202,6 @@ ], "install-path": "../tymon/jwt-auth" }, - { - "name": "unisharp/laravel-ckeditor", - "version": "dev-master", - "version_normalized": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/UniSharp/laravel-ckeditor.git", - "reference": "e404f291734aef3ef049809e7be203de286920d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/UniSharp/laravel-ckeditor/zipball/e404f291734aef3ef049809e7be203de286920d2", - "reference": "e404f291734aef3ef049809e7be203de286920d2", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0|^6.0" - }, - "time": "2020-01-21T09:57:24+00:00", - "default-branch": true, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Unisharp\\Ckeditor\\ServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Unisharp\\Ckeditor\\": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0+", - "LGPL-2.1+", - "MPL-1.1+" - ], - "authors": [ - { - "name": "CKSource", - "homepage": "http://cksource.com" - }, - { - "name": "UniSharp Ltd. (Composer Package Maintainer)", - "homepage": "http://www.unisharp.com" - } - ], - "description": "JavaScript WYSIWYG web text editor (for laravel).", - "homepage": "http://ckeditor.com", - "keywords": [ - "CKEditor", - "editor", - "fckeditor", - "html", - "javascript", - "laravel", - "richtext", - "text", - "wysiwyg" - ], - "support": { - "forum": "http://ckeditor.com/forums", - "issues": "http://dev.ckeditor.com", - "source": "http://github.com/ckeditor/ckeditor-dev", - "wiki": "http://docs.ckeditor.com" - }, - "install-path": "../unisharp/laravel-ckeditor" - }, { "name": "unisharp/laravel-filemanager", "version": "v2.5.1", @@ -10854,38 +11286,43 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.10", - "version_normalized": "3.6.10.0", + "version": "v4.3.0", + "version_normalized": "4.3.0.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e" + "reference": "67a491df68208bef8c37092db11fa3885008efcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/5b547cdb25825f10251370f57ba5d9d924e6f68e", - "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/67a491df68208bef8c37092db11fa3885008efcf", + "reference": "67a491df68208bef8c37092db11fa3885008efcf", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.5.2", + "php": "^5.5.9 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.7.3", "symfony/polyfill-ctype": "^1.17" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", "ext-pcre": "*", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.21" + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.30" }, "suggest": { "ext-filter": "Required to use the boolean validator.", "ext-pcre": "Required to use most of the library." }, - "time": "2021-12-12T23:02:06+00:00", + "time": "2022-10-16T00:51:09+00:00", "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "4.3-dev" } }, "installation-source": "dist", @@ -10918,7 +11355,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v3.6.10" + "source": "https://github.com/vlucas/phpdotenv/tree/v4.3.0" }, "funding": [ { @@ -10932,6 +11369,83 @@ ], "install-path": "../vlucas/phpdotenv" }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "version_normalized": "1.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "time": "2022-01-24T18:55:24+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "install-path": "../voku/portable-ascii" + }, { "name": "vsmoraes/laravel-pdf", "version": "1.0.1", @@ -11160,17 +11674,20 @@ "phpspec/prophecy", "phpunit/php-code-coverage", "phpunit/php-file-iterator", + "phpunit/php-invoker", "phpunit/php-text-template", "phpunit/php-timer", - "phpunit/php-token-stream", "phpunit/phpunit", - "scrivo/highlight.php", + "sebastian/cli-parser", + "sebastian/code-unit", "sebastian/code-unit-reverse-lookup", "sebastian/comparator", + "sebastian/complexity", "sebastian/diff", "sebastian/environment", "sebastian/exporter", "sebastian/global-state", + "sebastian/lines-of-code", "sebastian/object-enumerator", "sebastian/object-reflector", "sebastian/recursion-context", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index fb7900201..007c837f4 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -5,11 +5,20 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '1a5c16ae4b0239e6b90012de1e38f3fdd88fdc0d', + 'reference' => '51056e3aad4cde6c2b824c9965f9ea08610c29ff', 'name' => 'laravel/laravel', 'dev' => true, ), 'versions' => array( + 'asm89/stack-cors' => array( + 'pretty_version' => 'v2.1.1', + 'version' => '2.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../asm89/stack-cors', + 'aliases' => array(), + 'reference' => '73e5b88775c64ccc0b84fb60836b30dc9d92ac4a', + 'dev_requirement' => false, + ), 'aws/aws-crt-php' => array( 'pretty_version' => 'v1.0.2', 'version' => '1.0.2.0', @@ -28,13 +37,13 @@ 'reference' => 'e851af4d7d2d95b131db344430384ae7cc04758e', 'dev_requirement' => false, ), - 'brozot/laravel-fcm' => array( - 'pretty_version' => '1.3.1', - 'version' => '1.3.1.0', + 'brick/math' => array( + 'pretty_version' => '0.9.3', + 'version' => '0.9.3.0', 'type' => 'library', - 'install_path' => __DIR__ . '/../brozot/laravel-fcm', + 'install_path' => __DIR__ . '/../brick/math', 'aliases' => array(), - 'reference' => '1b5c64c5ea829f46c7e5f274971c587a8c3f0668', + 'reference' => 'ca57d18f028f84f777b2168cd1911b0dee2343ae', 'dev_requirement' => false, ), 'bugsnag/bugsnag' => array( @@ -103,15 +112,6 @@ 'reference' => '99f92a706faefb5e1816caa96e877a0184509e5b', 'dev_requirement' => false, ), - 'dnoegel/php-xdg-base-dir' => array( - 'pretty_version' => 'v0.1.1', - 'version' => '0.1.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dnoegel/php-xdg-base-dir', - 'aliases' => array(), - 'reference' => '8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd', - 'dev_requirement' => false, - ), 'doctrine/cache' => array( 'pretty_version' => '2.2.0', 'version' => '2.2.0.0', @@ -221,12 +221,12 @@ 'dev_requirement' => true, ), 'facade/ignition' => array( - 'pretty_version' => '1.18.1', - 'version' => '1.18.1.0', + 'pretty_version' => '2.17.6', + 'version' => '2.17.6.0', 'type' => 'library', 'install_path' => __DIR__ . '/../facade/ignition', 'aliases' => array(), - 'reference' => 'd173a101b3dbbd7a3a7b849ab388a7a7ef6d90bf', + 'reference' => '6acd82e986a2ecee89e2e68adfc30a1936d1ab7c', 'dev_requirement' => true, ), 'facade/ignition-contracts' => array( @@ -280,6 +280,15 @@ 'reference' => 'fe8890c25e835d0b4f58d8bd91331326ab1808ba', 'dev_requirement' => false, ), + 'fruitcake/laravel-cors' => array( + 'pretty_version' => 'v2.2.0', + 'version' => '2.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../fruitcake/laravel-cors', + 'aliases' => array(), + 'reference' => '783a74f5e3431d7b9805be8afb60fd0a8f743534', + 'dev_requirement' => false, + ), 'giggsey/libphonenumber-for-php' => array( 'pretty_version' => '8.13.3', 'version' => '8.13.3.0', @@ -449,12 +458,12 @@ ), ), 'guzzlehttp/guzzle' => array( - 'pretty_version' => '6.5.8', - 'version' => '6.5.8.0', + 'pretty_version' => '7.5.0', + 'version' => '7.5.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), - 'reference' => 'a52f0440530b54fa079ce76e8c5d196a42cad981', + 'reference' => 'b50a2a1251152e43f6a37f0fa053e730a67d25ba', 'dev_requirement' => false, ), 'guzzlehttp/promises' => array( @@ -467,12 +476,12 @@ 'dev_requirement' => false, ), 'guzzlehttp/psr7' => array( - 'pretty_version' => '1.9.0', - 'version' => '1.9.0.0', + 'pretty_version' => '2.4.3', + 'version' => '2.4.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), - 'reference' => 'e98e3e6d4f86621a9b75f623996e6bbdeb4b9318', + 'reference' => '67c26b443f348a51926030c83481b85718457d3d', 'dev_requirement' => false, ), 'hamcrest/hamcrest-php' => array( @@ -487,169 +496,175 @@ 'illuminate/auth' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/broadcasting' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/bus' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/cache' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/config' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/console' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/container' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/contracts' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/cookie' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/database' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/encryption' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/events' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/filesystem' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/hashing' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/http' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/log' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/mail' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/notifications' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/pagination' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/pipeline' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/queue' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/redis' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/routing' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/session' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/support' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', + ), + ), + 'illuminate/testing' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v7.30.6', ), ), 'illuminate/translation' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/validation' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'illuminate/view' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v6.20.44', + 0 => 'v7.30.6', ), ), 'intervention/image' => array( @@ -661,18 +676,6 @@ 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', 'dev_requirement' => false, ), - 'jakub-onderka/php-console-color' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '*', - ), - ), - 'jakub-onderka/php-console-highlighter' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '*', - ), - ), 'kodova/hamcrest-php' => array( 'dev_requirement' => true, 'replaced' => array( @@ -689,12 +692,12 @@ 'dev_requirement' => true, ), 'laravel/framework' => array( - 'pretty_version' => 'v6.20.44', - 'version' => '6.20.44.0', + 'pretty_version' => 'v7.30.6', + 'version' => '7.30.6.0', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/framework', 'aliases' => array(), - 'reference' => '505ebcdeaa9ca56d6d7dbf38ed4f53998c973ed0', + 'reference' => 'ecdafad1dda3c790af186a6d18479ea4757ef9ee', 'dev_requirement' => false, ), 'laravel/laravel' => array( @@ -703,7 +706,7 @@ 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '1a5c16ae4b0239e6b90012de1e38f3fdd88fdc0d', + 'reference' => '51056e3aad4cde6c2b824c9965f9ea08610c29ff', 'dev_requirement' => false, ), 'laravel/socialite' => array( @@ -716,12 +719,21 @@ 'dev_requirement' => false, ), 'laravel/tinker' => array( - 'pretty_version' => 'v1.0.10', - 'version' => '1.0.10.0', + 'pretty_version' => 'v2.7.3', + 'version' => '2.7.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/tinker', 'aliases' => array(), - 'reference' => 'ad571aacbac1539c30d480908f9d0c9614eaf1a7', + 'reference' => '5062061b4924af3392225dd482ca7b4d85d8b8ef', + 'dev_requirement' => false, + ), + 'laravel/ui' => array( + 'pretty_version' => 'v2.5.0', + 'version' => '2.5.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../laravel/ui', + 'aliases' => array(), + 'reference' => 'd01a705763c243b07be795e9d1bb47f89260f73d', 'dev_requirement' => false, ), 'laravelcollective/html' => array( @@ -925,12 +937,12 @@ 'dev_requirement' => false, ), 'nunomaduro/collision' => array( - 'pretty_version' => 'v3.2.0', - 'version' => '3.2.0.0', + 'pretty_version' => 'v4.3.0', + 'version' => '4.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../nunomaduro/collision', 'aliases' => array(), - 'reference' => 'f7c45764dfe4ba5f2618d265a6f1f9c72732e01d', + 'reference' => '7c125dc2463f3e144ddc7e05e63077109508c94e', 'dev_requirement' => true, ), 'opis/closure' => array( @@ -942,15 +954,6 @@ 'reference' => '3d81e4309d2a927abbe66df935f4bb60082805ad', 'dev_requirement' => false, ), - 'paragonie/random_compat' => array( - 'pretty_version' => 'v9.99.100', - 'version' => '9.99.100.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../paragonie/random_compat', - 'aliases' => array(), - 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a', - 'dev_requirement' => false, - ), 'phar-io/manifest' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', @@ -978,24 +981,6 @@ 'reference' => 'c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82', 'dev_requirement' => false, ), - 'php-parallel-lint/php-console-color' => array( - 'pretty_version' => 'v0.3', - 'version' => '0.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../php-parallel-lint/php-console-color', - 'aliases' => array(), - 'reference' => 'b6af326b2088f1ad3b264696c9fd590ec395b49e', - 'dev_requirement' => false, - ), - 'php-parallel-lint/php-console-highlighter' => array( - 'pretty_version' => 'v0.5', - 'version' => '0.5.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../php-parallel-lint/php-console-highlighter', - 'aliases' => array(), - 'reference' => '21bf002f077b177f056d8cb455c5ed573adfdbb8', - 'dev_requirement' => false, - ), 'php-webdriver/webdriver' => array( 'pretty_version' => '1.13.1', 'version' => '1.13.1.0', @@ -1060,12 +1045,12 @@ 'dev_requirement' => true, ), 'phpspec/phpspec' => array( - 'pretty_version' => '4.3.3', - 'version' => '4.3.3.0', + 'pretty_version' => '7.3.0', + 'version' => '7.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpspec/phpspec', 'aliases' => array(), - 'reference' => '9812b081a11c309128efa092ae5f128733170776', + 'reference' => '7e44b188e8e01f9c9a8ca6cb0d7aceaabcea2133', 'dev_requirement' => true, ), 'phpspec/prophecy' => array( @@ -1078,57 +1063,57 @@ 'dev_requirement' => true, ), 'phpunit/php-code-coverage' => array( - 'pretty_version' => '7.0.15', - 'version' => '7.0.15.0', + 'pretty_version' => '9.2.23', + 'version' => '9.2.23.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), - 'reference' => '819f92bba8b001d4363065928088de22f25a3a48', + 'reference' => '9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c', 'dev_requirement' => true, ), 'phpunit/php-file-iterator' => array( - 'pretty_version' => '2.0.5', - 'version' => '2.0.5.0', + 'pretty_version' => '3.0.6', + 'version' => '3.0.6.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), - 'reference' => '42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5', + 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', + 'dev_requirement' => true, + ), + 'phpunit/php-invoker' => array( + 'pretty_version' => '3.1.1', + 'version' => '3.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-invoker', + 'aliases' => array(), + 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'dev_requirement' => true, ), 'phpunit/php-text-template' => array( - 'pretty_version' => '1.2.1', - 'version' => '1.2.1.0', + 'pretty_version' => '2.0.4', + 'version' => '2.0.4.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), - 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686', + 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'dev_requirement' => true, ), 'phpunit/php-timer' => array( - 'pretty_version' => '2.1.3', - 'version' => '2.1.3.0', + 'pretty_version' => '5.0.3', + 'version' => '5.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), - 'reference' => '2454ae1765516d20c4ffe103d85a58a9a3bd5662', - 'dev_requirement' => true, - ), - 'phpunit/php-token-stream' => array( - 'pretty_version' => '4.0.4', - 'version' => '4.0.4.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpunit/php-token-stream', - 'aliases' => array(), - 'reference' => 'a853a0e183b9db7eed023d7933a858fa1c8d25a3', + 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'dev_requirement' => true, ), 'phpunit/phpunit' => array( - 'pretty_version' => '8.5.31', - 'version' => '8.5.31.0', + 'pretty_version' => '9.5.27', + 'version' => '9.5.27.0', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), - 'reference' => '33c126b09a42de5c99e5e8032b54e8221264a74e', + 'reference' => 'a2bc7ffdca99f92d959b3f2270529334030bba38', 'dev_requirement' => true, ), 'predis/predis' => array( @@ -1158,6 +1143,21 @@ 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', 'dev_requirement' => false, ), + 'psr/container-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'psr/event-dispatcher' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/event-dispatcher', + 'aliases' => array(), + 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', + 'dev_requirement' => false, + ), 'psr/event-dispatcher-implementation' => array( 'dev_requirement' => false, 'provided' => array( @@ -1173,6 +1173,12 @@ 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', 'dev_requirement' => false, ), + 'psr/http-client-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), 'psr/http-factory' => array( 'pretty_version' => '1.0.1', 'version' => '1.0.1.0', @@ -1182,6 +1188,12 @@ 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', 'dev_requirement' => false, ), + 'psr/http-factory-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), 'psr/http-message' => array( 'pretty_version' => '1.0.1', 'version' => '1.0.1.0', @@ -1223,12 +1235,12 @@ 'dev_requirement' => false, ), 'psy/psysh' => array( - 'pretty_version' => 'v0.9.12', - 'version' => '0.9.12.0', + 'pretty_version' => 'v0.11.10', + 'version' => '0.11.10.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psy/psysh', 'aliases' => array(), - 'reference' => '90da7f37568aee36b116a030c5f99c915267edd4', + 'reference' => 'e9eadffbed9c9deb5426fd107faae0452bf20a36', 'dev_requirement' => false, ), 'ralouphie/getallheaders' => array( @@ -1240,136 +1252,172 @@ 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => false, ), + 'ramsey/collection' => array( + 'pretty_version' => '1.2.2', + 'version' => '1.2.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ramsey/collection', + 'aliases' => array(), + 'reference' => 'cccc74ee5e328031b15640b51056ee8d3bb66c0a', + 'dev_requirement' => false, + ), 'ramsey/uuid' => array( - 'pretty_version' => '3.9.7', - 'version' => '3.9.7.0', + 'pretty_version' => '4.2.3', + 'version' => '4.2.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ramsey/uuid', 'aliases' => array(), - 'reference' => 'dc75aa439eb4c1b77f5379fd958b3dc0e6014178', + 'reference' => 'fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df', 'dev_requirement' => false, ), 'rhumsaa/uuid' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '3.9.7', + 0 => '4.2.3', ), ), - 'scrivo/highlight.php' => array( - 'pretty_version' => 'v9.18.1.10', - 'version' => '9.18.1.10', + 'sebastian/cli-parser' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', 'type' => 'library', - 'install_path' => __DIR__ . '/../scrivo/highlight.php', + 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), - 'reference' => '850f4b44697a2552e892ffe71490ba2733c2fc6e', + 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', + 'dev_requirement' => true, + ), + 'sebastian/code-unit' => array( + 'pretty_version' => '1.0.8', + 'version' => '1.0.8.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/code-unit', + 'aliases' => array(), + 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'dev_requirement' => true, ), 'sebastian/code-unit-reverse-lookup' => array( - 'pretty_version' => '1.0.2', - 'version' => '1.0.2.0', + 'pretty_version' => '2.0.3', + 'version' => '2.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), - 'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619', + 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'dev_requirement' => true, ), 'sebastian/comparator' => array( - 'pretty_version' => '3.0.5', - 'version' => '3.0.5.0', + 'pretty_version' => '4.0.8', + 'version' => '4.0.8.0', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), - 'reference' => '1dc7ceb4a24aede938c7af2a9ed1de09609ca770', + 'reference' => 'fa0f136dd2334583309d32b62544682ee972b51a', 'dev_requirement' => true, ), - 'sebastian/diff' => array( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/diff', - 'aliases' => array(), - 'reference' => '14f72dd46eaf2f2293cbe79c93cc0bc43161a211', - 'dev_requirement' => true, - ), - 'sebastian/environment' => array( - 'pretty_version' => '4.2.4', - 'version' => '4.2.4.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/environment', - 'aliases' => array(), - 'reference' => 'd47bbbad83711771f167c72d4e3f25f7fcc1f8b0', - 'dev_requirement' => true, - ), - 'sebastian/exporter' => array( - 'pretty_version' => '3.1.5', - 'version' => '3.1.5.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/exporter', - 'aliases' => array(), - 'reference' => '73a9676f2833b9a7c36968f9d882589cd75511e6', - 'dev_requirement' => true, - ), - 'sebastian/global-state' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/global-state', - 'aliases' => array(), - 'reference' => 'de036ec91d55d2a9e0db2ba975b512cdb1c23921', - 'dev_requirement' => true, - ), - 'sebastian/object-enumerator' => array( - 'pretty_version' => '3.0.4', - 'version' => '3.0.4.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-enumerator', - 'aliases' => array(), - 'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2', - 'dev_requirement' => true, - ), - 'sebastian/object-reflector' => array( - 'pretty_version' => '1.1.2', - 'version' => '1.1.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/object-reflector', - 'aliases' => array(), - 'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d', - 'dev_requirement' => true, - ), - 'sebastian/recursion-context' => array( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../sebastian/recursion-context', - 'aliases' => array(), - 'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb', - 'dev_requirement' => true, - ), - 'sebastian/resource-operations' => array( + 'sebastian/complexity' => array( 'pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/complexity', + 'aliases' => array(), + 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', + 'dev_requirement' => true, + ), + 'sebastian/diff' => array( + 'pretty_version' => '4.0.4', + 'version' => '4.0.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/diff', + 'aliases' => array(), + 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d', + 'dev_requirement' => true, + ), + 'sebastian/environment' => array( + 'pretty_version' => '5.1.4', + 'version' => '5.1.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/environment', + 'aliases' => array(), + 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7', + 'dev_requirement' => true, + ), + 'sebastian/exporter' => array( + 'pretty_version' => '4.0.5', + 'version' => '4.0.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/exporter', + 'aliases' => array(), + 'reference' => 'ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d', + 'dev_requirement' => true, + ), + 'sebastian/global-state' => array( + 'pretty_version' => '5.0.5', + 'version' => '5.0.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/global-state', + 'aliases' => array(), + 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2', + 'dev_requirement' => true, + ), + 'sebastian/lines-of-code' => array( + 'pretty_version' => '1.0.3', + 'version' => '1.0.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/lines-of-code', + 'aliases' => array(), + 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', + 'dev_requirement' => true, + ), + 'sebastian/object-enumerator' => array( + 'pretty_version' => '4.0.4', + 'version' => '4.0.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/object-enumerator', + 'aliases' => array(), + 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', + 'dev_requirement' => true, + ), + 'sebastian/object-reflector' => array( + 'pretty_version' => '2.0.4', + 'version' => '2.0.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/object-reflector', + 'aliases' => array(), + 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', + 'dev_requirement' => true, + ), + 'sebastian/recursion-context' => array( + 'pretty_version' => '4.0.4', + 'version' => '4.0.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/recursion-context', + 'aliases' => array(), + 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172', + 'dev_requirement' => true, + ), + 'sebastian/resource-operations' => array( + 'pretty_version' => '3.0.3', + 'version' => '3.0.3.0', + 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), - 'reference' => '31d35ca87926450c44eae7e2611d45a7a65ea8b3', + 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'dev_requirement' => true, ), 'sebastian/type' => array( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', + 'pretty_version' => '3.2.0', + 'version' => '3.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), - 'reference' => '0150cfbc4495ed2df3872fb31b26781e4e077eb4', + 'reference' => 'fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e', 'dev_requirement' => true, ), 'sebastian/version' => array( - 'pretty_version' => '2.0.1', - 'version' => '2.0.1.0', + 'pretty_version' => '3.0.2', + 'version' => '3.0.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), - 'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019', + 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'dev_requirement' => true, ), 'swiftmailer/swiftmailer' => array( @@ -1382,30 +1430,21 @@ 'dev_requirement' => false, ), 'symfony/console' => array( - 'pretty_version' => 'v4.4.49', - 'version' => '4.4.49.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), - 'reference' => '33fa45ffc81fdcc1ca368d4946da859c8cdb58d9', + 'reference' => '58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f', 'dev_requirement' => false, ), 'symfony/css-selector' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/css-selector', 'aliases' => array(), - 'reference' => 'bd0a6737e48de45b4b0b7b6fc98c78404ddceaed', - 'dev_requirement' => false, - ), - 'symfony/debug' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/debug', - 'aliases' => array(), - 'reference' => '1a692492190773c5310bc7877cb590c04c2f05be', + 'reference' => '052ef49b660f9ad2a3adb311c555c9bc11ba61f4', 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( @@ -1418,81 +1457,72 @@ 'dev_requirement' => false, ), 'symfony/dom-crawler' => array( - 'pretty_version' => 'v4.4.45', - 'version' => '4.4.45.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dom-crawler', 'aliases' => array(), - 'reference' => '4b8daf6c56801e6d664224261cb100b73edc78a5', + 'reference' => '32a07d910edc138a1dd5508c17c6b9bc1eb27a1b', 'dev_requirement' => true, ), 'symfony/error-handler' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/error-handler', 'aliases' => array(), - 'reference' => 'be731658121ef2d8be88f3a1ec938148a9237291', + 'reference' => 'b900446552833ad2f91ca7dd52aa8ffe78f66cb2', 'dev_requirement' => false, ), 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher', 'aliases' => array(), - 'reference' => '1e866e9e5c1b22168e0ce5f0b467f19bba61266a', + 'reference' => '8e18a9d559eb8ebc2220588f1faa726a2fcd31c9', 'dev_requirement' => false, ), 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v1.1.13', - 'version' => '1.1.13.0', + 'pretty_version' => 'v2.5.2', + 'version' => '2.5.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', 'aliases' => array(), - 'reference' => '1d5cd762abaa6b2a4169d3e77610193a7157129e', + 'reference' => 'f98b54df6ad059855739db6fcbc2d36995283fe1', 'dev_requirement' => false, ), 'symfony/event-dispatcher-implementation' => array( 'dev_requirement' => false, 'provided' => array( - 0 => '1.1', + 0 => '2.0', ), ), 'symfony/finder' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), - 'reference' => '66bd787edb5e42ff59d3523f623895af05043e4f', - 'dev_requirement' => false, - ), - 'symfony/http-client-contracts' => array( - 'pretty_version' => 'v2.5.2', - 'version' => '2.5.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-client-contracts', - 'aliases' => array(), - 'reference' => 'ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70', + 'reference' => '40c08632019838dfb3350f18cf5563b8080055fc', 'dev_requirement' => false, ), 'symfony/http-foundation' => array( - 'pretty_version' => 'v4.4.49', - 'version' => '4.4.49.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), - 'reference' => '191413c7b832c015bb38eae963f2e57498c3c173', + 'reference' => 'b64a0e2df212d5849e4584cabff0cf09c5d6866a', 'dev_requirement' => false, ), 'symfony/http-kernel' => array( - 'pretty_version' => 'v4.4.49', - 'version' => '4.4.49.0', + 'pretty_version' => 'v5.4.18', + 'version' => '5.4.18.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-kernel', 'aliases' => array(), - 'reference' => '4e36db8103062c62b3882b1bd297b02de6b021c4', + 'reference' => '5da6f57a13e5d7d77197443cf55697cdf65f1352', 'dev_requirement' => false, ), 'symfony/mime' => array( @@ -1522,6 +1552,15 @@ 'reference' => '927013f3aac555983a5059aada98e1907d842695', 'dev_requirement' => false, ), + 'symfony/polyfill-intl-grapheme' => array( + 'pretty_version' => 'v1.27.0', + 'version' => '1.27.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', + 'aliases' => array(), + 'reference' => '511a08c03c1960e08a883f4cffcacd219b758354', + 'dev_requirement' => false, + ), 'symfony/polyfill-intl-idn' => array( 'pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', @@ -1585,22 +1624,31 @@ 'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', 'dev_requirement' => false, ), + 'symfony/polyfill-php81' => array( + 'pretty_version' => 'v1.27.0', + 'version' => '1.27.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php81', + 'aliases' => array(), + 'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', + 'dev_requirement' => false, + ), 'symfony/process' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.11', + 'version' => '5.4.11.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), - 'reference' => '5cee9cdc4f7805e2699d9fd66991a0e6df8252a2', + 'reference' => '6e75fe6874cbc7e4773d049616ab450eff537bf1', 'dev_requirement' => false, ), 'symfony/routing' => array( - 'pretty_version' => 'v4.4.44', - 'version' => '4.4.44.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/routing', 'aliases' => array(), - 'reference' => 'f7751fd8b60a07f3f349947a309b5bdfce22d6ae', + 'reference' => '4ce2df9a469c19ba45ca6aca04fec1c358a6e791', 'dev_requirement' => false, ), 'symfony/service-contracts' => array( @@ -1612,13 +1660,22 @@ 'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', 'dev_requirement' => false, ), + 'symfony/string' => array( + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/string', + 'aliases' => array(), + 'reference' => '55733a8664b8853b003e70251c58bc8cb2d82a6b', + 'dev_requirement' => false, + ), 'symfony/translation' => array( - 'pretty_version' => 'v4.4.47', - 'version' => '4.4.47.0', + 'pretty_version' => 'v5.4.14', + 'version' => '5.4.14.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), - 'reference' => '45036b1d53accc48fe9bab71ccd86d57eba0dd94', + 'reference' => 'f0ed07675863aa6e3939df8b1bc879450b585cab', 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( @@ -1633,25 +1690,25 @@ 'symfony/translation-implementation' => array( 'dev_requirement' => false, 'provided' => array( - 0 => '1.0|2.0', + 0 => '2.3', ), ), 'symfony/var-dumper' => array( - 'pretty_version' => 'v4.4.47', - 'version' => '4.4.47.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-dumper', 'aliases' => array(), - 'reference' => '1069c7a3fca74578022fab6f81643248d02f8e63', + 'reference' => 'ad74890513d07060255df2575703daf971de92c7', 'dev_requirement' => false, ), 'symfony/yaml' => array( - 'pretty_version' => 'v4.4.45', - 'version' => '4.4.45.0', + 'pretty_version' => 'v5.4.17', + 'version' => '5.4.17.0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), - 'reference' => 'aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d', + 'reference' => 'edcdc11498108f8967fe95118a7ec8624b94760e', 'dev_requirement' => true, ), 'tedivm/fetch' => array( @@ -1717,17 +1774,6 @@ 'reference' => 'e588cb719539366c0e2f6017f975379cb73e9680', 'dev_requirement' => false, ), - 'unisharp/laravel-ckeditor' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'type' => 'library', - 'install_path' => __DIR__ . '/../unisharp/laravel-ckeditor', - 'aliases' => array( - 0 => '9999999-dev', - ), - 'reference' => 'e404f291734aef3ef049809e7be203de286920d2', - 'dev_requirement' => false, - ), 'unisharp/laravel-filemanager' => array( 'pretty_version' => 'v2.5.1', 'version' => '2.5.1.0', @@ -1738,12 +1784,21 @@ 'dev_requirement' => false, ), 'vlucas/phpdotenv' => array( - 'pretty_version' => 'v3.6.10', - 'version' => '3.6.10.0', + 'pretty_version' => 'v4.3.0', + 'version' => '4.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../vlucas/phpdotenv', 'aliases' => array(), - 'reference' => '5b547cdb25825f10251370f57ba5d9d924e6f68e', + 'reference' => '67a491df68208bef8c37092db11fa3885008efcf', + 'dev_requirement' => false, + ), + 'voku/portable-ascii' => array( + 'pretty_version' => '1.6.1', + 'version' => '1.6.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../voku/portable-ascii', + 'aliases' => array(), + 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', 'dev_requirement' => false, ), 'vsmoraes/laravel-pdf' => array( diff --git a/vendor/dnoegel/php-xdg-base-dir/LICENSE b/vendor/dnoegel/php-xdg-base-dir/LICENSE deleted file mode 100644 index 029a00ab5..000000000 --- a/vendor/dnoegel/php-xdg-base-dir/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Daniel Nögel - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/dnoegel/php-xdg-base-dir/README.md b/vendor/dnoegel/php-xdg-base-dir/README.md deleted file mode 100644 index ee06b2d64..000000000 --- a/vendor/dnoegel/php-xdg-base-dir/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# XDG Base Directory - -[![Latest Stable Version](https://img.shields.io/packagist/v/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir) -[![Total Downloads](https://img.shields.io/packagist/dt/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) -[![Build Status](https://img.shields.io/travis/dnoegel/php-xdg-base-dir/master.svg?style=flat-square)](https://travis-ci.org/dnoegel/php-xdg-base-dir) - -Implementation of XDG Base Directory specification for php - -## Install - -Via Composer - -``` bash -$ composer require dnoegel/php-xdg-base-dir -``` - -## Usage - -``` php -$xdg = new \XdgBaseDir\Xdg(); - -echo $xdg->getHomeDir(); -echo $xdg->getHomeConfigDir(); -echo $xdg->getHomeDataDir(); -echo $xdg->getHomeCacheDir(); -echo $xdg->getRuntimeDir(); - -print_r($xdg->getDataDirs()); // returns array -print_r($xdg->getConfigDirs()); // returns array -``` - -## Testing - -``` bash -$ phpunit -``` - -## License - -The MIT License (MIT). Please see [License File](https://github.com/dnoegel/php-xdg-base-dir/blob/master/LICENSE) for more information. diff --git a/vendor/dnoegel/php-xdg-base-dir/composer.json b/vendor/dnoegel/php-xdg-base-dir/composer.json deleted file mode 100644 index 94c463745..000000000 --- a/vendor/dnoegel/php-xdg-base-dir/composer.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "dnoegel/php-xdg-base-dir", - "description": "implementation of xdg base directory specification for php", - "type": "library", - "license": "MIT", - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - } -} diff --git a/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php b/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php deleted file mode 100644 index 2dd314d0b..000000000 --- a/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php +++ /dev/null @@ -1,132 +0,0 @@ -getHomeDir(); - - $path = DIRECTORY_SEPARATOR === $homeDir ? $homeDir.'.config' : $homeDir . DIRECTORY_SEPARATOR . '.config'; - - return $path; - } - - /** - * @return string - */ - public function getHomeDataDir() - { - $path = getenv('XDG_DATA_HOME') ?: $this->getHomeDir() . DIRECTORY_SEPARATOR . '.local' . DIRECTORY_SEPARATOR . 'share'; - - return $path; - } - - /** - * @return array - */ - public function getConfigDirs() - { - $configDirs = getenv('XDG_CONFIG_DIRS') ? explode(':', getenv('XDG_CONFIG_DIRS')) : array('/etc/xdg'); - - $paths = array_merge(array($this->getHomeConfigDir()), $configDirs); - - return $paths; - } - - /** - * @return array - */ - public function getDataDirs() - { - $dataDirs = getenv('XDG_DATA_DIRS') ? explode(':', getenv('XDG_DATA_DIRS')) : array('/usr/local/share', '/usr/share'); - - $paths = array_merge(array($this->getHomeDataDir()), $dataDirs); - - return $paths; - } - - /** - * @return string - */ - public function getHomeCacheDir() - { - $path = getenv('XDG_CACHE_HOME') ?: $this->getHomeDir() . DIRECTORY_SEPARATOR . '.cache'; - - return $path; - - } - - public function getRuntimeDir($strict=true) - { - if ($runtimeDir = getenv('XDG_RUNTIME_DIR')) { - return $runtimeDir; - } - - if ($strict) { - throw new \RuntimeException('XDG_RUNTIME_DIR was not set'); - } - - $fallback = sys_get_temp_dir() . DIRECTORY_SEPARATOR . self::RUNTIME_DIR_FALLBACK . getenv('USER'); - - $create = false; - - if (!is_dir($fallback)) { - mkdir($fallback, 0700, true); - } - - $st = lstat($fallback); - - # The fallback must be a directory - if (!$st['mode'] & self::S_IFDIR) { - rmdir($fallback); - $create = true; - } elseif ($st['uid'] != $this->getUid() || - $st['mode'] & (self::S_IRWXG | self::S_IRWXO) - ) { - rmdir($fallback); - $create = true; - } - - if ($create) { - mkdir($fallback, 0700, true); - } - - return $fallback; - } - - private function getUid() - { - if (function_exists('posix_getuid')) { - return posix_getuid(); - } - - return getmyuid(); - } -} diff --git a/vendor/facade/ignition/.babelrc b/vendor/facade/ignition/.babelrc deleted file mode 100644 index 463742b69..000000000 --- a/vendor/facade/ignition/.babelrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": ["@babel/preset-env", "@babel/preset-typescript"], - "plugins": ["@babel/transform-runtime", "@babel/plugin-syntax-dynamic-import"] -} diff --git a/vendor/facade/ignition/.github/workflows/run-tests.yml b/vendor/facade/ignition/.github/workflows/run-tests.yml deleted file mode 100644 index e61feddbc..000000000 --- a/vendor/facade/ignition/.github/workflows/run-tests.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Run tests - -on: - push: - pull_request: - schedule: - - cron: '0 0 * * *' - -jobs: - php-tests: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - php: [8.0, 7.4, 7.3, 7.2] - laravel: [6.*, 5.8.*, 5.7.*, 5.6.*, 5.5.*] - dependency-version: [prefer-lowest, prefer-stable] - os: [ubuntu-latest, windows-latest] - include: - - laravel: 6.* - testbench: 4.* - - laravel: 5.8.* - testbench: 3.8.* - - laravel: 5.7.* - testbench: 3.7.* - - laravel: 5.6.* - testbench: 3.6.* - - laravel: 5.5.* - testbench: 3.5.* - exclude: - - laravel: 5.8.* - php: 8.0 - - laravel: 5.7.* - php: 8.0 - - laravel: 5.6.* - php: 8.0 - - laravel: 5.5.* - php: 8.0 - - laravel: 5.7.* - php: 7.4 - - laravel: 5.6.* - php: 7.4 - - laravel: 5.5.* - php: 7.4 - - name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - ${{ matrix.os }} - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, fileinfo - coverage: none - - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update - composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest - - - name: Execute tests - run: vendor/bin/phpunit - - - name: Send Slack notification - uses: 8398a7/action-slack@v2 - if: ${{ failure() && !! env.SLACK_WEBHOOK }} - with: - status: ${{ job.status }} - author_name: ${{ github.actor }} - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - js-tests: - runs-on: ubuntu-latest - - name: JavaScript tests - - steps: - - name: Checkout code - uses: actions/checkout@v1 - - - name: Install dependencies - run: yarn install --non-interactive - - - name: Execute tests - run: yarn run jest - - - name: Send Slack notification - uses: 8398a7/action-slack@v2 - if: ${{ failure() && !! env.SLACK_WEBHOOK }} - with: - status: ${{ job.status }} - author_name: ${{ github.actor }} - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/vendor/facade/ignition/.php_cs.php b/vendor/facade/ignition/.php_cs.php new file mode 100644 index 000000000..8d8a7901b --- /dev/null +++ b/vendor/facade/ignition/.php_cs.php @@ -0,0 +1,40 @@ +in([ + __DIR__ . '/src', + __DIR__ . '/tests', + ]) + ->name('*.php') + ->notName('*.blade.php') + ->ignoreDotFiles(true) + ->ignoreVCS(true); + +return (new PhpCsFixer\Config()) + ->setRules([ + '@PSR12' => true, + 'array_syntax' => ['syntax' => 'short'], + 'ordered_imports' => ['sort_algorithm' => 'alpha'], + 'no_unused_imports' => true, + 'not_operator_with_successor_space' => true, + 'trailing_comma_in_multiline' => true, + 'phpdoc_scalar' => true, + 'unary_operator_spaces' => true, + 'binary_operator_spaces' => true, + 'blank_line_before_statement' => [ + 'statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'], + ], + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_var_without_name' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'method' => 'one', + ], + ], + 'method_argument_space' => [ + 'on_multiline' => 'ensure_fully_multiline', + 'keep_multiple_spaces_after_comma' => true, + ], + 'single_trait_insert_per_statement' => true, + ]) + ->setFinder($finder); diff --git a/vendor/facade/ignition/.prettierignore b/vendor/facade/ignition/.prettierignore deleted file mode 100644 index b73d6fcea..000000000 --- a/vendor/facade/ignition/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -resources/compiled diff --git a/vendor/facade/ignition/.prettierrc b/vendor/facade/ignition/.prettierrc deleted file mode 100644 index da5618082..000000000 --- a/vendor/facade/ignition/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "printWidth": 100, - "tabWidth": 4 -} diff --git a/vendor/facade/ignition/.styleci.yml b/vendor/facade/ignition/.styleci.yml deleted file mode 100644 index 0f17b92c5..000000000 --- a/vendor/facade/ignition/.styleci.yml +++ /dev/null @@ -1,8 +0,0 @@ -preset: laravel - -disabled: - - single_class_element_per_statement - -finder: - not-name: - - "GitConflictController.php" diff --git a/vendor/facade/ignition/CHANGELOG.md b/vendor/facade/ignition/CHANGELOG.md index 3b447c119..a1b6c5e1c 100644 --- a/vendor/facade/ignition/CHANGELOG.md +++ b/vendor/facade/ignition/CHANGELOG.md @@ -2,30 +2,322 @@ All notable changes to `ignition` will be documented in this file -## 1.18.0 - 2021-08-02 +## 2.17.5 - 2022-02-23 -- disable executing solutions on non-local environments or from non-local IP addresses on version 1.x (#404) +## What's Changed -## 1.17.0 +- fix solutions section padding by @faissaloux in https://github.com/facade/ignition/pull/433 +- Bump markdown-it from 9.1.0 to 12.3.2 by @dependabot in https://github.com/facade/ignition/pull/446 +- Bump ajv from 6.10.2 to 6.12.6 by @dependabot in https://github.com/facade/ignition/pull/448 +- Fix E_NOTICE when requesting invalid script by @cweiske in https://github.com/facade/ignition/pull/449 -- add extra editors (#389) +## New Contributors -## 1.16.5 - 2021-02-14 +- @faissaloux made their first contribution in https://github.com/facade/ignition/pull/433 +- @cweiske made their first contribution in https://github.com/facade/ignition/pull/449 -- fix CVE-2021-3129 for facade/ignition 1.16.x (Laravel 6) (#351) +**Full Changelog**: https://github.com/facade/ignition/compare/2.17.4...2.17.5 -## 1.16.4 - 2021-02-13 +## 2.17.4 - 2021-12-27 -do not use, tagged on the wrong branch +- fix bug where uninitialized property within a job could break Ignition -## 1.16.3 - 2020-07-13 +## 2.17.3 - 2021-12-23 -- do not use missing package solution provider by default (closes #179) +- allow filtering route parameters using a `toFlare` method -## 1.16.2 - 2020-07-12 +## 2.17.2 - 2021-11-29 + +## What's Changed + +- Allow overflow-x on solutions with unbreakable words by @willemvb in https://github.com/facade/ignition/pull/431 + +**Full Changelog**: https://github.com/facade/ignition/compare/2.17.1...2.17.2 + +## 2.17.2 - 2021-11-29 + +- scroll overflow on solutions + +## 2.17.1 - 2021-11-25 + +- streamline Livewire solutions + +## 2.17.0 - 2021-11-24 + +- improve recording of Livewire data + +## 2.16.1 - 2021-11-16 + +- allow sending of unbinded sql queries to Flare + +## 2.16.0 - 2021-10-28 + +- improve recording data from jobs (#416) + +## 2.15.0 - 2021-10-11 + +- improve output of flare:test + +## 2.14.1 - 2021-10-08 + +- update base URL for Flare + +## 2.14.0 - 2021-10-01 + +- add support for VScode WSL + SSH remote (#420) + +## 2.13.1 - 2021-09-13 + +- fix namespace of `SentReports` in facade + +## 2.13.0 - 2021-09-13 + +- add tracking uuid (#418) + +## 2.12.1 - 2021-09-08 + +- add support for VS Codium editor (#417) + +## 2.12.0 - 2021-08-24 + +- add support for collecting information about jobs (#412) + +## 2.11.4 - 2021-08-16 + +- use npm ci instead of install (#411) + +## 2.11.3 - 2021-08-16 + +- fix issues with circular dependencies in model route parameters (#408) +- remove notice about dirty git state in context +- wrap `AddGitInformation` middleware in try-catch + +## 2.11.2 - 2021-07-20 + +- fix issues introduced in 2.11.1 (#403) + +## 2.11.1 - 2021-07-20 + +- fix sending queued reports on Laravel Vapor queues (#398) + +## 2.11.0 - 2021-07-12 + +- prepare Laravel 9 support +- remove filp/whoops dependency +- update front-end dependencies + +## 2.10.2 - 2021-06-11 + +- fix typo in config/flare.php (#395) + +## 2.10.1 - 2021-06-03 + +- fix memory leaks in Octane (#393) + +## 2.10.0 - 2021-06-03 + +- add a solution for lazy loading violations (#392) + +## 2.9.0 - 2021-05-05 + +- add Xdebug format links for editor (#383) + +## 2.8.4 - 2021-04-29 + +- avoid making call to Flare when no API key is specified + +## 2.8.3 - 2021-04-09 + +- support Octane (#379) + +## 2.8.2 - 2021-04-08 + +- censor passwords by default (#377) + +## 2.8.1 - 2021-04-08 + +- add `censor_request_body_fields` default config option + +## 2.8.0 - 2021-04-08 + +- add `censor_request_body_fields` config option + +## 2.7.0 - 2021-03-30 + +- adds a debug warning when having debug enabled on a non-local environment (#366) + +## 2.6.1 - 2021-03-30 + +- Disable executing solutions on non-local environments or from non-local IP addresses (#364) + +## 2.6.0 - 2021-03-24 + +- add extra output to test command when executing verbosely + +## 2.5.14 - 2021-03-03 + +- fix ignition not working when there is no argv + +## 2.5.13 - 2021-02-16 + +- remove custom grouping + +## 2.5.12 - 2021-02-15 + +- fix wrong config usage (#354) + +## 2.5.11 - 2021-02-05 + +- fix memory leaks caused by log and query recorder (#344) + +## 2.5.10 - 2021-02-02 + +- fix tinker logs not being sent to Flare + +## 2.5.9 - 2021-01-26 + +- fix logged context not being sent to Flare + +## 2.5.8 - 2020-12-29 + +- fix double `$` on PHP 8 (#338) + +## 2.5.7 - 2020-12-29 + +- fix for breaking change in highlight.js (fixes 2.5.5) + +## 2.5.6 - 2020-12-29 + +- revert to compiled js of 2.5.3 + +## 2.5.5 - 2020-12-29 + +- added compiled js of previous release + +## 2.5.4 - 2020-12-29 + +- added support for Nova text editor (#343) + +## 2.5.3 - 2020-12-08 + +- Use Livewire compatible compiler engine when using Livewire (#340) + +## 2.5.2 - 2020-11-14 + +- fix `MakeViewVariableOptionalSolution` to disallow stream wrappers and files that do not end in ".blade.php" (#334) + +## 2.5.1 - 2020-11-13 + +- add support for LiveWire component urls + +## 2.5.0 - 2020-10-27 + +- add PHP 8.0-dev support +- remove unnecessary `scrivo/highlight.php` dependency + +## 2.4.2 - 2021-03-08 + +- fix `MakeViewVariableOptionalSolution` to disallow stream wrappers and files that do not end in .blade.php (#356) + +## 2.4.1 - 2020-10-14 + +- fix copy casing + +## 2.4.0 - 2020-10-14 + +- add livewire component discovery solution + +## 2.3.8 - 2020-10-02 + +- Address Missing Mix Manifest Error (#317) + +## 2.3.7 - 2020-09-06 + +- add loading state on share button (#309) +- compatibility fix for L8 + +## 2.3.6 - 2020-08-10 + +- possible security vulnerability: bump elliptic version (#300) +- possible XSS vulnerability: escape characters in stacktrace and exception title + +## 2.3.5 - 2020-08-01 + +- catch exception in detectLineNumber for not existing blade files (#299) + +## 2.3.4 - 2020-07-27 + +- fix an error that would throw a blank page when using third party extensions + +## 2.3.3 -2020-07-14 + +- fix all psalm related issues + +## 2.3.2 - 2020-07-14 + +- properly bind singleton (#291) + +## 2.3.1 - 2020-07-13 + +- improve db name solution (#289) + +## 2.3.0 - 2020-07-13 + +- allow override of Dumper via `$_SERVER variable` (#271) +- make DumpHandler instance manually in DumpRecorder (#286) +- only setup queues when queue is available (#287) + +## 2.2.0 - 2020-07-13 + +- add `ignition:make:solution-provider` command + +## 2.1.0 - 2020-07-13 + +- add "Undefined Property" solution (#264) + +## 2.0.10 - 2020-07-13 + +- correctly detect dump location from ddd (#216) + +## 2.0.9 - 2020-07-13 + +- use application contract instead of concrete class (#243) + +## 2.0.8 - 2020-07-12 + +- do not render solution title tag for empty titles + +## 2.0.7 - 2020-06-07 + +- Fix `DefaultDbNameSolutionProvider` (#277) + +## 2.0.6 - 2020-06-01 - remove ability to fix variable names +## 2.0.5 - 2020-05-29 + +- blacklist certain variable names when fixing variable names + +## 2.0.4 - 2020-05-18 + +- handle exceptions in case the request doesn't have a user (#274) + +## 2.0.3 - 2020-04-07 + +- support Laravel 8 + +## 2.0.2 - 2020-03-18 + +- fix execute solution route not defined (#265) + +## 2.0.0 - 2020-02-02 + +- adds support for Laravel 7 +- drop support for Laravel 6 and below +- git information won't be collected by default anymore (if you need this set `collect_git_information` to `true` in the `flare` config file) +- `MissingPackageSolutionProvider` was added to the `ignored_solution_providers` because it potentially could be slow. + ## 1.16.0 - 2020-01-21 - add named routes (#197) @@ -40,7 +332,7 @@ do not use, tagged on the wrong branch ## 1.13.1 - 2020-01-02 -- Remove external reference for icons (#134) +- Remove external reference for icons (#134) ## 1.13.0 - 2019-11-27 @@ -59,224 +351,224 @@ do not use, tagged on the wrong branch ## 1.11.2 - 2019-10-13 -- simplify default Laravel installation (#198) +- simplify default Laravel installation (#198) ## 1.11.1 - 2019-10-08 -- add conditional line number (#182) +- add conditional line number (#182) ## 1.11.0 - 2019-10-08 -- add better error messages for missing validation rules (#125) +- add better error messages for missing validation rules (#125) ## 1.10.0 - 2019-10-07 -- Add `ignition:make-solution` command -- Add default for query binding option (Fixes #183) +- Add `ignition:make-solution` command +- Add default for query binding option (Fixes #183) ## 1.9.2 - 2019-10-04 -- Fix service provider registration (Fixes #177) +- Fix service provider registration (Fixes #177) ## 1.9.1 - 2019-10-01 -- collapse vendor frames on windows fix (#176) +- collapse vendor frames on windows fix (#176) ## 1.9.0 - 2019-09-27 -- add ability to send logs to flare -- add `ddd` function +- add ability to send logs to flare +- add `ddd` function ## 1.8.4 - 2019-09-27 -- Resolve configuration from the injected app instead of the helper ([#168](https://github.com/facade/ignition/pull/168)) +- Resolve configuration from the injected app instead of the helper ([#168](https://github.com/facade/ignition/pull/168)) ## 1.8.3 - 2019-09-25 -- Remove `select-none` from error message -- Change line clamp behaviour for longer error messages +- Remove `select-none` from error message +- Change line clamp behaviour for longer error messages ## 1.8.2 - 2019-09-20 -- fix for `TypeError: Cannot set property 'highlightState' of undefined` +- fix for `TypeError: Cannot set property 'highlightState' of undefined` ## 1.8.1 - 2019-09-20 -- Revert javascript assets via URL - Fixes #161 +- Revert javascript assets via URL - Fixes #161 ## 1.8.0 - 2019-09-18 -- added solution for running Laravel Dusk in production ([#121](https://github.com/facade/ignition/pull/121)) -- Automatically fix blade variable typos and optional variables ([#38](https://github.com/facade/ignition/pull/38)) +- added solution for running Laravel Dusk in production ([#121](https://github.com/facade/ignition/pull/121)) +- Automatically fix blade variable typos and optional variables ([#38](https://github.com/facade/ignition/pull/38)) ## 1.7.1 - 2019-09-18 -- Use url helper to generate housekeeping endpoints +- Use url helper to generate housekeeping endpoints ## 1.7.0 - 2019-09-18 -- Add the ability to define a query collector max value ([#153](https://github.com/facade/ignition/pull/153)) +- Add the ability to define a query collector max value ([#153](https://github.com/facade/ignition/pull/153)) ## 1.6.10 - 2019-09-18 -- fix `__invoke` method name in solution ([#151](https://github.com/facade/ignition/pull/151)) +- fix `__invoke` method name in solution ([#151](https://github.com/facade/ignition/pull/151)) ## 1.6.9 - 2019-09-18 -- Add noscript trace information - fixes [#146](https://github.com/facade/ignition/issues/146) +- Add noscript trace information - fixes [#146](https://github.com/facade/ignition/issues/146) ## 1.6.8 - 2019-09-18 -- Use javascript content type for asset response - fixes [#149](https://github.com/facade/ignition/issues/149) +- Use javascript content type for asset response - fixes [#149](https://github.com/facade/ignition/issues/149) ## 1.6.7 - 2019-09-18 -- Load javascript assets via URL. Fixes [#16](https://github.com/facade/ignition/issues/16) +- Load javascript assets via URL. Fixes [#16](https://github.com/facade/ignition/issues/16) ## 1.6.6 - 2019-09-16 -- Prevent undefined index exception in `TestCommand` +- Prevent undefined index exception in `TestCommand` ## 1.6.5 - 2019-09-13 -- Ignore invalid characters in JSON encoding. Fixes [#138](https://github.com/facade/ignition/issues/138) +- Ignore invalid characters in JSON encoding. Fixes [#138](https://github.com/facade/ignition/issues/138) ## 1.6.4 - 2019-09-13 -- add no-index on error page +- add no-index on error page ## 1.6.3 - 2019-09-12 -- Fix `RouteNotDefinedSolutionProvider` in Laravel 5 +- Fix `RouteNotDefinedSolutionProvider` in Laravel 5 ## 1.6.2 - 2019-09-12 -- updated publishing tag from default config +- updated publishing tag from default config ## 1.6.1 - 2019-09-12 -- Resolve configuration from the injected application instead of the helper - Fixes [#131](https://github.com/facade/ignition/issues/131) +- Resolve configuration from the injected application instead of the helper - Fixes [#131](https://github.com/facade/ignition/issues/131) ## 1.6.0 - 2019-09-09 -- add `RouteNotDefined` solution provider ([#113](https://github.com/facade/ignition/pull/113)) +- add `RouteNotDefined` solution provider ([#113](https://github.com/facade/ignition/pull/113)) ## 1.5.0 - 2019-09-09 -- suggest running migrations when a column is missing ([#83](https://github.com/facade/ignition/pull/83)) +- suggest running migrations when a column is missing ([#83](https://github.com/facade/ignition/pull/83)) ## 1.4.19 - 2019-09-09 -- Remove quotation from git commit url ([#89](https://github.com/facade/ignition/pull/89)) +- Remove quotation from git commit url ([#89](https://github.com/facade/ignition/pull/89)) ## 1.4.18 - 2019-09-09 -- Fix open_basedir restriction when looking up config file. Fixes ([#120](https://github.com/facade/ignition/pull/120)) +- Fix open_basedir restriction when looking up config file. Fixes ([#120](https://github.com/facade/ignition/pull/120)) ## 1.4.17 - 2019-09-06 -- Remove Inter, Operator from font stack. Fixes [#74](https://github.com/facade/ignition/issues/74) +- Remove Inter, Operator from font stack. Fixes [#74](https://github.com/facade/ignition/issues/74) ## 1.4.15 - 2019-09-05 -- Use previous exception trace for view exceptions. Fixes [#107](https://github.com/facade/ignition/issues/107) +- Use previous exception trace for view exceptions. Fixes [#107](https://github.com/facade/ignition/issues/107) ## 1.4.14 - 2019-09-05 -- Use DIRECTORY_SEPARATOR to fix an issue with blade view lookups in Windows +- Use DIRECTORY_SEPARATOR to fix an issue with blade view lookups in Windows ## 1.4.13 - 2019-09-05 -- Use Laravel style comments +- Use Laravel style comments ## 1.4.12 - 2019-09-04 -- Use a middleware to protect ignition routes ([#93](https://github.com/facade/ignition/pull/93)) +- Use a middleware to protect ignition routes ([#93](https://github.com/facade/ignition/pull/93)) ## 1.4.11 - 2019-09-04 -- Use exception line number as fallbacks for view errors +- Use exception line number as fallbacks for view errors ## 1.4.10 - 2019-09-04 -- Wrap solution provider lookup in a try-catch block +- Wrap solution provider lookup in a try-catch block ## 1.4.9 - 2019-09-04 -- Lookup the first exception when linking to Telescope +- Lookup the first exception when linking to Telescope ## 1.4.8 - 2019-09-04 -- pass an empty string to query if no connection name is available - fixes [#86](https://github.com/facade/ignition/issues/86) +- pass an empty string to query if no connection name is available - fixes [#86](https://github.com/facade/ignition/issues/86) ## 1.4.7 - 2019-09-04 -- Match whoops minimum version constraint with Laravel 6 +- Match whoops minimum version constraint with Laravel 6 ## 1.4.6 - 2019-09-04 -- Use empty array for default ignored solution providers +- Use empty array for default ignored solution providers ## 1.4.5 - 2019-09-03 -- fix for new Laravel 6 installs +- fix for new Laravel 6 installs ## 1.4.4 - 2019-09-03 -- Suggest default database name in Laravel 6 -- Add void return type to FlareHandler::write() +- Suggest default database name in Laravel 6 +- Add void return type to FlareHandler::write() ## 1.4.3 - 2019-09-03 -- allow monolog v2 +- allow monolog v2 ## 1.4.2 - 2019-09-03 -- style fixes +- style fixes ## 1.4.1 - 2019-09-03 -- Change `remote-sites-path` and `local-sites-path` config keys to us snake case +- Change `remote-sites-path` and `local-sites-path` config keys to us snake case ## 1.4.0 - 2019-09-03 -- add `enable_runnable_solutions` key to config file +- add `enable_runnable_solutions` key to config file ## 1.3.0 - 2019-09-02 -- add `MergeConflictSolutionProvider` +- add `MergeConflictSolutionProvider` ## 1.2.0 - 2019-09-02 -- add `ignored_solution_providers` key to config file +- add `ignored_solution_providers` key to config file ## 1.1.1 - 2019-09-02 -- Fixed context tab crash when not using git ([#24](https://github.com/facade/ignition/issues/24)) +- Fixed context tab crash when not using git ([#24](https://github.com/facade/ignition/issues/24)) ## 1.1.0 - 2019-09-02 -- Fixed an error that removed the ability to register custom blade directives. -- Fixed an error that prevented solution execution in Laravel 5.5 and 5.6 -- The "Share" button can now be disabled in the configuration file -- Fixes an error when trying to log `null` values +- Fixed an error that removed the ability to register custom blade directives. +- Fixed an error that prevented solution execution in Laravel 5.5 and 5.6 +- The "Share" button can now be disabled in the configuration file +- Fixes an error when trying to log `null` values ## 1.0.4 - 2019-09-02 -- Check if the authenticated user has a `toArray` method available, before collecting user data +- Check if the authenticated user has a `toArray` method available, before collecting user data ## 1.0.3 - 2019-09-02 -- Corrected invalid link in config file +- Corrected invalid link in config file ## 1.0.2 - 2019-09-02 -- Fixed an error in the `DefaultDbNameSolutionProvider` that could cause an infinite loop in Laravel < 5.6.28 +- Fixed an error in the `DefaultDbNameSolutionProvider` that could cause an infinite loop in Laravel < 5.6.28 ## 1.0.1 - 2019-08-31 -- add support for L5.5 & 5.6 ([#21](https://github.com/facade/ignition/pull/21)) +- add support for L5.5 & 5.6 ([#21](https://github.com/facade/ignition/pull/21)) ## 1.0.0 - 2019-08-30 -- initial release +- initial release diff --git a/vendor/facade/ignition/README.md b/vendor/facade/ignition/README.md index b4528c56f..cab78a626 100644 --- a/vendor/facade/ignition/README.md +++ b/vendor/facade/ignition/README.md @@ -1,14 +1,17 @@ # Ignition: a beautiful error page for Laravel apps [![Latest Version on Packagist](https://img.shields.io/packagist/v/facade/ignition.svg?style=flat-square)](https://packagist.org/packages/facade/ignition) -![GitHub Workflow Status](https://img.shields.io/github/workflow/status/facade/ignition/run-php-tests?label=Tests) -[![Quality Score](https://img.shields.io/scrutinizer/g/facade/ignition.svg?style=flat-square)](https://scrutinizer-ci.com/g/facade/ignition) -[![StyleCI](https://github.styleci.io/repos/204472210/shield?branch=master)](https://github.styleci.io/repos/204472210) +![Tests](https://github.com/facade/ignition/workflows/Run%20tests/badge.svg) [![Total Downloads](https://img.shields.io/packagist/dt/facade/ignition.svg?style=flat-square)](https://packagist.org/packages/facade/ignition) -[Ignition](https://flareapp.io/docs/ignition-for-laravel/introduction) is a beautiful and customizable error page for Laravel applications running on Laravel 5.5 and newer. It is the default error page for all Laravel 6 applications. It also allows to publicly share your errors on [Flare](https://flareapp.io). If configured with a valid Flare API key, your errors in production applications will be tracked, and you'll get notified when they happen. +[Ignition](https://flareapp.io/docs/ignition-for-laravel/introduction) is a beautiful and customizable error page for Laravel applications running on Laravel 5.5 up Laravel 8. It is the default error page for all Laravel 6 applications. It also allows to publicly share your errors on [Flare](https://flareapp.io). If configured with a valid Flare API key, your errors in production applications will be tracked, and you'll get notified when they happen. -![Screenshot of ignition](https://facade.github.io/ignition/screenshot.png) +## Using Laravel 8 or above? + +If you're on Laravel 8 or above, you can switch to [spatie/laravel-ignition](https://github.com/spatie/laravel-ignition), which is a drop-in replacement. +Replace `facade/ignition` with `"spatie/laravel-ignition": "^1.0"` in your application's `composer.json` file. + +Going forward, we'll only add security fixes to facade/ignition and highly encourage you to switch to spatie/laravel-ignition. ## Official Documentation diff --git a/vendor/facade/ignition/SECURITY.md b/vendor/facade/ignition/SECURITY.md new file mode 100644 index 000000000..754cc4a12 --- /dev/null +++ b/vendor/facade/ignition/SECURITY.md @@ -0,0 +1,3 @@ +# Security Policy + +For security related problems, please don't use the public issue tracker, but mail info@spatie.be. diff --git a/vendor/facade/ignition/composer.json b/vendor/facade/ignition/composer.json index ad7e58021..b745434ea 100644 --- a/vendor/facade/ignition/composer.json +++ b/vendor/facade/ignition/composer.json @@ -10,31 +10,33 @@ "homepage": "https://github.com/facade/ignition", "license": "MIT", "require": { - "php": "^7.1|^8.0", + "php": "^7.2.5|^8.0", "ext-json": "*", "ext-mbstring": "*", - "facade/flare-client-php": "^1.3", - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.4", - "illuminate/support": "~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0", - "monolog/monolog": "^1.12 || ^2.0", - "scrivo/highlight.php": "^9.15", - "symfony/console": "^3.4 || ^4.0", - "symfony/var-dumper": "^3.4 || ^4.0" + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0", + "ext-curl": "*" }, "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "orchestra/testbench": "^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0" + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" }, "suggest": { - "laravel/telescope": "^2.0" + "laravel/telescope": "^3.1" }, "config": { "sort-packages": true }, "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -61,9 +63,8 @@ "minimum-stability": "dev", "prefer-stable": true, "scripts": { - "format": [ - "vendor/bin/php-cs-fixer fix" - ], + "psalm": "vendor/bin/psalm", + "format": "vendor/bin/php-cs-fixer fix --allow-risky=yes", "test": "vendor/bin/phpunit", "test-coverage": "vendor/bin/phpunit --coverage-html coverage" }, diff --git a/vendor/facade/ignition/config/flare.php b/vendor/facade/ignition/config/flare.php index 90e6c441a..48fc07dfd 100644 --- a/vendor/facade/ignition/config/flare.php +++ b/vendor/facade/ignition/config/flare.php @@ -26,12 +26,15 @@ return [ 'reporting' => [ 'anonymize_ips' => true, - 'collect_git_information' => true, + 'collect_git_information' => false, 'report_queries' => true, 'maximum_number_of_collected_queries' => 200, 'report_query_bindings' => true, 'report_view_data' => true, 'grouping_type' => null, + 'report_logs' => true, + 'maximum_number_of_collected_logs' => 200, + 'censor_request_body_fields' => ['password'], ], /* @@ -39,10 +42,21 @@ return [ | Reporting Log statements |-------------------------------------------------------------------------- | - | If this setting is `false` log statements won't be send as events to Flare, + | If this setting is `false` log statements won't be sent as events to Flare, | no matter which error level you specified in the Flare log channel. | */ 'send_logs_as_events' => true, + + /* + |-------------------------------------------------------------------------- + | Censor request body fields + |-------------------------------------------------------------------------- + | + | These fields will be censored from your request when sent to Flare. + | + */ + + 'censor_request_body_fields' => ['password'], ]; diff --git a/vendor/facade/ignition/config/ignition.php b/vendor/facade/ignition/config/ignition.php index 5148657a9..268d2f233 100644 --- a/vendor/facade/ignition/config/ignition.php +++ b/vendor/facade/ignition/config/ignition.php @@ -9,7 +9,7 @@ return [ | | Choose your preferred editor to use when clicking any edit button. | - | Supported: "phpstorm", "vscode", "vscode-insiders", "textmate", "emacs", + | Supported: "phpstorm", "vscode", "vscode-insiders", "vscodium", "textmate", "emacs", | "sublime", "atom", "nova", "macvim", "idea", "netbeans", | "xdebug" | @@ -70,7 +70,7 @@ return [ */ 'ignored_solution_providers' => [ - Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider::class, + \Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider::class, ], /* diff --git a/vendor/facade/ignition/package.json b/vendor/facade/ignition/package.json index 3eb1d10a7..2f1cfb969 100644 --- a/vendor/facade/ignition/package.json +++ b/vendor/facade/ignition/package.json @@ -7,9 +7,9 @@ }, "dependencies": { "git-url-parse": "^11.1.2", - "highlight.js": "^9.15.6", - "lodash": "^4.17.4", - "markdown-it": "^9.0.1", + "highlight.js": "^10.4.1", + "lodash": "^4.17.21", + "markdown-it": "^12.3.2", "md5": "^2.2.1", "sql-formatter": "^2.3.3" }, diff --git a/vendor/facade/ignition/postcss.config.js b/vendor/facade/ignition/postcss.config.js deleted file mode 100644 index 67620c9cb..000000000 --- a/vendor/facade/ignition/postcss.config.js +++ /dev/null @@ -1,29 +0,0 @@ -const purgecss = require('@fullhuman/postcss-purgecss'); - -module.exports = { - plugins: [ - require('postcss-import'), - require('tailwindcss')('./tailwind.config.js'), - require('postcss-preset-env')(), - process.env.NODE_ENV === 'production' - ? purgecss({ - content: [ - './resources/js/**/*.js', - './resources/js/**/*.vue', - './resources/views/errorPage.php', - ], - extractors: [ - { - extractor: class { - static extract(content) { - return content.match(/[a-zA-Z0-9-:_/]+/g) || []; - } - }, - extensions: ['js', 'php', 'vue'], - }, - ], - whitelistPatterns: [/hljs/, /sf-dump/, /theme-dark/, /theme-auto/], - }) - : '', - ], -}; diff --git a/vendor/facade/ignition/psalm-baseline.xml b/vendor/facade/ignition/psalm-baseline.xml new file mode 100644 index 000000000..0133da901 --- /dev/null +++ b/vendor/facade/ignition/psalm-baseline.xml @@ -0,0 +1,51 @@ + + + + + $this->app + $this->app + $this->app + $this->app + $this->app + $this->app + $this->app + + + + + $this->app + + + + + $this->app + $this->app + $this->app + + + + + ComponentNotFoundException + + + + + app('validator') + + + + + LivewireComponentsFinder + + + + + $baseException + + + + + $baseException + + + diff --git a/vendor/facade/ignition/psalm.xml b/vendor/facade/ignition/psalm.xml new file mode 100644 index 000000000..25eb7939c --- /dev/null +++ b/vendor/facade/ignition/psalm.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/facade/ignition/resources/compiled/ignition.js b/vendor/facade/ignition/resources/compiled/ignition.js index c2ead1fab..af7bf1810 100644 --- a/vendor/facade/ignition/resources/compiled/ignition.js +++ b/vendor/facade/ignition/resources/compiled/ignition.js @@ -1,10 +1,10 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=280)}([function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",function(){return r})},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(t,e){return r.call(t,e)}function i(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(65535!=(65535&t)&&65534!=(65535&t)&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function a(t){if(t>65535){var e=55296+((t-=65536)>>10),n=56320+(1023&t);return String.fromCharCode(e,n)}return String.fromCharCode(t)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,l=n(55);var f=/[&<>"]/,p=/[&<>"]/g,d={"&":"&","<":"<",">":">",'"':"""};function h(t){return d[t]}var m=/[.?*+^$[\]\\(){}|-]/g;var g=n(36);e.lib={},e.lib.mdurl=n(56),e.lib.ucmicro=n(107),e.assign=function(t){return Array.prototype.slice.call(arguments,1).forEach(function(e){if(e){if("object"!=typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach(function(n){t[n]=e[n]})}}),t},e.isString=function(t){return"[object String]"===function(t){return Object.prototype.toString.call(t)}(t)},e.has=o,e.unescapeMd=function(t){return t.indexOf("\\")<0?t:t.replace(s,"$1")},e.unescapeAll=function(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(c,function(t,e,n){return e||function(t,e){var n=0;return o(l,e)?l[e]:35===e.charCodeAt(0)&&u.test(e)&&i(n="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10))?a(n):t}(t,n)})},e.isValidEntityCode=i,e.fromCodePoint=a,e.escapeHtml=function(t){return f.test(t)?t.replace(p,h):t},e.arrayReplaceAt=function(t,e,n){return[].concat(t.slice(0,e),n,t.slice(e+1))},e.isSpace=function(t){switch(t){case 9:case 32:return!0}return!1},e.isWhiteSpace=function(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},e.isMdAsciiPunct=function(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},e.isPunctChar=function(t){return g.test(t)},e.escapeRE=function(t){return t.replace(m,"\\$&")},e.normalizeReference=function(t){return t=t.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(t=t.replace(/ẞ/g,"ß")),t.toLowerCase().toUpperCase()}},function(t,e,n){"use strict";e.a={functional:!0,props:{label:{default:""}},render:function(t,e){return[t("dt",{attrs:{class:"definition-label"}},e.props.label),t("dd",{attrs:{class:"definition-value"}},e.children)]}}},function(t,e,n){"use strict";var r={props:{title:{default:""},className:{default:""}}},o=n(0),i=Object(o.a)(r,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{class:t.className},[t.title?n("h3",{staticClass:"definition-list-title"},[t._v(t._s(t.title))]):t._e(),t._v(" "),this.$slots.default?n("dl",{staticClass:"definition-list"},[t._t("default")],2):t._e(),t._v(" "),this.$slots.default?t._e():n("div",{staticClass:"definition-list"},[n("div",{staticClass:"definition-list-empty"},[t._v("—")])])])},[],!1,null,null,null);e.a=i.exports},function(t,e,n){var r=n(160),o=n(161),i=n(162);t.exports=function(t){return r(t)||o(t)||i()}},function(t,e,n){"use strict";var r=n(33),o={props:{file:{required:!0},editable:{default:!1},relative:{default:!0},lineNumber:{required:!1},pathClass:{default:""}},data:function(){return{segments:[],filename:"",fileSegments:[]}},inject:["config","report"],watch:{file:{immediate:!0,handler:function(){this.segments=this.path.replace(/^\/Users/,"~").split("/"),this.filename=this.segments.pop()||"",this.fileSegments=this.filename.split(".")}}},computed:{path:function(){return this.relative?this.file.replace(this.report.application_path+"/",""):this.file},editorUrl:function(){return Object(r.a)(this.config,this.file,this.lineNumber)}}},i=n(0),a=Object(i.a)(o,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"inline-flex justify-start items-baseline"},[n("span",t._g({staticClass:"ui-path",class:t.pathClass},t.$listeners),[t._l(t.segments,function(e,r){return n("span",{key:"segment-"+r},[t._v(t._s(e)+"/"),n("wbr")])}),t._l(t.fileSegments,function(e,r){return n("span",{key:"file-"+r,class:0===r?"font-semibold":""},[t._v(t._s(r>0?".":"")+t._s(e))])}),t.lineNumber?n("span",[t._v(":"+t._s(t.lineNumber))]):t._e()],2),t._v(" "),t._t("default"),t._v(" "),t.editable&&t.editorUrl?n("a",{staticClass:"ml-2 inline-block text-sm text-purple-400 hover:text-purple-500",attrs:{href:t.editorUrl}},[n("Icon",{attrs:{name:"pencil"}})],1):t._e()],2)},[],!1,null,null,null);e.a=a.exports},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";(function(t,n){ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=282)}([function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(t,e){return r.call(t,e)}function i(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(65535!=(65535&t)&&65534!=(65535&t)&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function a(t){if(t>65535){var e=55296+((t-=65536)>>10),n=56320+(1023&t);return String.fromCharCode(e,n)}return String.fromCharCode(t)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,l=n(55);var f=/[&<>"]/,p=/[&<>"]/g,d={"&":"&","<":"<",">":">",'"':"""};function h(t){return d[t]}var g=/[.?*+^$[\]\\(){}|-]/g;var m=n(36);e.lib={},e.lib.mdurl=n(56),e.lib.ucmicro=n(108),e.assign=function(t){return Array.prototype.slice.call(arguments,1).forEach((function(e){if(e){if("object"!=typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach((function(n){t[n]=e[n]}))}})),t},e.isString=function(t){return"[object String]"===function(t){return Object.prototype.toString.call(t)}(t)},e.has=o,e.unescapeMd=function(t){return t.indexOf("\\")<0?t:t.replace(s,"$1")},e.unescapeAll=function(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(c,(function(t,e,n){return e||function(t,e){var n=0;return o(l,e)?l[e]:35===e.charCodeAt(0)&&u.test(e)&&i(n="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10))?a(n):t}(t,n)}))},e.isValidEntityCode=i,e.fromCodePoint=a,e.escapeHtml=function(t){return f.test(t)?t.replace(p,h):t},e.arrayReplaceAt=function(t,e,n){return[].concat(t.slice(0,e),n,t.slice(e+1))},e.isSpace=function(t){switch(t){case 9:case 32:return!0}return!1},e.isWhiteSpace=function(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},e.isMdAsciiPunct=function(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},e.isPunctChar=function(t){return m.test(t)},e.escapeRE=function(t){return t.replace(g,"\\$&")},e.normalizeReference=function(t){return t=t.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(t=t.replace(/ẞ/g,"ß")),t.toLowerCase().toUpperCase()}},function(t,e,n){"use strict";e.a={functional:!0,props:{label:{default:""}},render:function(t,e){return[t("dt",{attrs:{class:"definition-label"}},e.props.label),t("dd",{attrs:{class:"definition-value"}},e.children)]}}},function(t,e,n){"use strict";var r={props:{title:{default:""},className:{default:""}}},o=n(0),i=Object(o.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{class:t.className},[t.title?n("h3",{staticClass:"definition-list-title"},[t._v(t._s(t.title))]):t._e(),t._v(" "),this.$slots.default?n("dl",{staticClass:"definition-list"},[t._t("default")],2):t._e(),t._v(" "),this.$slots.default?t._e():n("div",{staticClass:"definition-list"},[n("div",{staticClass:"definition-list-empty"},[t._v("—")])])])}),[],!1,null,null,null);e.a=i.exports},function(t,e,n){var r=n(155),o=n(156),i=n(157);t.exports=function(t){return r(t)||o(t)||i()}},function(t,e,n){"use strict";var r=n(34),o={props:{file:{required:!0},editable:{default:!1},relative:{default:!0},lineNumber:{required:!1},pathClass:{default:""}},data:function(){return{segments:[],filename:"",fileSegments:[]}},inject:["config","report"],watch:{file:{immediate:!0,handler:function(){this.segments=this.path.replace(/^\/Users/,"~").split("/"),this.filename=this.segments.pop()||"",this.fileSegments=this.filename.split(".")}}},computed:{path:function(){return this.relative?this.file.replace(this.report.application_path+"/",""):this.file},editorUrl:function(){return Object(r.a)(this.config,this.file,this.lineNumber)}}},i=n(0),a=Object(i.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"inline-flex justify-start items-baseline"},[n("span",t._g({staticClass:"ui-path",class:t.pathClass},t.$listeners),[t._l(t.segments,(function(e,r){return n("span",{key:"segment-"+r},[t._v(t._s(e)+"/"),n("wbr")])})),t._l(t.fileSegments,(function(e,r){return n("span",{key:"file-"+r,class:0===r?"font-semibold":""},[t._v(t._s(r>0?".":"")+t._s(e))])})),t.lineNumber?n("span",[t._v(":"+t._s(t.lineNumber))]):t._e()],2),t._v(" "),t._t("default"),t._v(" "),t.editable&&t.editorUrl?n("a",{staticClass:"ml-2 inline-block text-sm text-purple-400 hover:text-purple-500",attrs:{href:t.editorUrl}},[n("Icon",{attrs:{name:"pencil"}})],1):t._e()],2)}),[],!1,null,null,null);e.a=a.exports},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";(function(t,n){ /*! * Vue.js v2.6.10 * (c) 2014-2019 Evan You * Released under the MIT License. */ -var r=Object.freeze({});function o(t){return null==t}function i(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return i(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function E(t,e){return y.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var x=/-(\w)/g,w=k(function(t){return t.replace(x,function(t,e){return e?e.toUpperCase():""})}),C=k(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),A=/\B([A-Z])/g,T=k(function(t){return t.replace(A,"-$1").toLowerCase()});var S=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function R(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function O(t,e){for(var n in e)t[n]=e[n];return t}function N(t){for(var e={},n=0;n0,tt=Z&&Z.indexOf("edge/")>0,et=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===X),nt=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),rt={}.watch,ot=!1;if(Y)try{var it={};Object.defineProperty(it,"passive",{get:function(){ot=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var at=function(){return void 0===V&&(V=!Y&&!K&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),V},st=Y&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ct(t){return"function"==typeof t&&/native code/.test(t.toString())}var ut,lt="undefined"!=typeof Symbol&&ct(Symbol)&&"undefined"!=typeof Reflect&&ct(Reflect.ownKeys);ut="undefined"!=typeof Set&&ct(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,pt=0,dt=function(){this.id=pt++,this.subs=[]};dt.prototype.addSub=function(t){this.subs.push(t)},dt.prototype.removeSub=function(t){_(this.subs,t)},dt.prototype.depend=function(){dt.target&&dt.target.addDep(this)},dt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!E(o,"default"))a=!1;else if(""===a||a===T(t)){var c=qt(String,o.type);(c<0||s0&&(pe((u=t(u,(n||"")+"_"+c))[0])&&pe(f)&&(r[l]=yt(f.text+u[0].text),u.shift()),r.push.apply(r,u)):s(u)?pe(f)?r[l]=yt(f.text+u):""!==u&&r.push(yt(u)):pe(u)&&pe(f)?r[l]=yt(f.text+u.text):(a(e._isVList)&&i(u.tag)&&o(u.key)&&i(n)&&(u.key="__vlist"+n+"_"+c+"__"),r.push(u)));return r}(t):void 0}function pe(t){return i(t)&&i(t.text)&&!1===t.isComment}function de(t,e){if(t){for(var n=Object.create(null),r=lt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=ve(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=be(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),H(o,"$stable",a),H(o,"$key",s),H(o,"$hasNormal",i),o}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:fe(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function be(t,e){return function(){return t[e]}}function _e(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent("Event").timeStamp&&(pn=function(){return dn.now()})}function hn(){var t,e;for(fn=pn(),un=!0,on.sort(function(t,e){return t.id-e.id}),ln=0;lnln&&on[n].id>t.id;)n--;on.splice(n+1,0,t)}else on.push(t);cn||(cn=!0,re(hn))}}(this)},gn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},gn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},gn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},gn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function bn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function _n(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&At(!1);var i=function(i){o.push(i);var a=$t(i,e,n,t);Rt(r,i,a),i in t||bn(t,"_props",i)};for(var a in e)i(a);At(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?L:S(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;l(e=t._data="function"==typeof e?function(t,e){mt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{gt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&E(r,i)||q(i)||bn(t,"_data",i)}St(e,!0)}(t):St(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=at();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new gn(t,a||L,L,yn)),o in t||En(t,o,i)}}(t,e.computed),e.watch&&e.watch!==rt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Nn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=Rn(a.componentOptions);s&&!e(s)&&Ln(n,i,r,o)}}}function Ln(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Cn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ut(An(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Je(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=he(e._renderChildren,o),t.$scopedSlots=r,t._c=function(e,n,r,o){return qe(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return qe(t,e,n,r,o,!0)};var i=n&&n.data;Rt(t,"$attrs",i&&i.attrs||r,null,!0),Rt(t,"$listeners",e._parentListeners||r,null,!0)}(e),rn(e,"beforeCreate"),function(t){var e=de(t.$options.inject,t);e&&(At(!1),Object.keys(e).forEach(function(n){Rt(t,n,e[n])}),At(!0))}(e),_n(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),rn(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(Tn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Ot,t.prototype.$delete=Nt,t.prototype.$watch=function(t,e,n){if(l(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new gn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Ht(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(Tn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?R(n):n;for(var r=R(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;iparseInt(this.max)&&Ln(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:ft,extend:O,mergeOptions:Ut,defineReactive:Rt},t.set=Ot,t.delete=Nt,t.nextTick=re,t.observable=function(t){return St(t),t},t.options=Object.create(null),F.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,O(t.options.components,Dn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=R(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ut(this.options,t),this}}(t),Sn(t),function(t){F.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}(t)}(Tn),Object.defineProperty(Tn.prototype,"$isServer",{get:at}),Object.defineProperty(Tn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Tn,"FunctionalRenderContext",{value:De}),Tn.version="2.6.10";var Mn=g("style,class"),Pn=g("input,textarea,option,select,progress"),jn=function(t,e,n){return"value"===n&&Pn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Un=g("contenteditable,draggable,spellcheck"),Fn=g("events,caret,typing,plaintext-only"),$n=function(t,e){return Gn(e)||"false"===e?"false":"contenteditable"===t&&Fn(e)?e:"true"},Bn=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),zn="http://www.w3.org/1999/xlink",qn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Hn=function(t){return qn(t)?t.slice(6,t.length):""},Gn=function(t){return null==t||!1===t};function Vn(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Wn(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=Wn(e,n.data));return function(t,e){if(i(t)||i(e))return Yn(t,Kn(e));return""}(e.staticClass,e.class)}function Wn(t,e){return{staticClass:Yn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Yn(t,e){return t?e?t+" "+e:t:e||""}function Kn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?yr(t,e,n):Bn(e)?Gn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Un(e)?t.setAttribute(e,$n(e,n)):qn(e)?Gn(n)?t.removeAttributeNS(zn,Hn(e)):t.setAttributeNS(zn,e,n):yr(t,e,n)}function yr(t,e,n){if(Gn(n))t.removeAttribute(e);else{if(J&&!Q&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Er={create:br,update:br};function kr(t,e){var n=e.elm,r=e.data,a=t.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=Vn(e),c=n._transitionClasses;i(c)&&(s=Yn(s,Kn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var xr,wr,Cr,Ar,Tr,Sr,Rr={create:kr,update:kr},Or=/[\w).+\-_$\]]/;function Nr(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(m=t.charAt(h));h--);m&&Or.test(m)||(u=!0)}}else void 0===o?(d=r+1,o=t.slice(0,r).trim()):g();function g(){(i||(i=[])).push(t.slice(d,r).trim()),d=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==d&&g(),i)for(r=0;r-1?{exp:t.slice(0,Ar),key:'"'+t.slice(Ar+1)+'"'}:{exp:t,key:null};wr=t,Ar=Tr=Sr=0;for(;!Yr();)Kr(Cr=Wr())?Zr(Cr):91===Cr&&Xr(Cr);return{exp:t.slice(0,Tr),key:t.slice(Tr+1,Sr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Wr(){return wr.charCodeAt(++Ar)}function Yr(){return Ar>=xr}function Kr(t){return 34===t||39===t}function Xr(t){var e=1;for(Tr=Ar;!Yr();)if(Kr(t=Wr()))Zr(t);else if(91===t&&e++,93===t&&e--,0===e){Sr=Ar;break}}function Zr(t){for(var e=t;!Yr()&&(t=Wr())!==e;);}var Jr,Qr="__r",to="__c";function eo(t,e,n){var r=Jr;return function o(){var i=e.apply(null,arguments);null!==i&&oo(t,o,n,r)}}var no=Kt&&!(nt&&Number(nt[1])<=53);function ro(t,e,n,r){if(no){var o=fn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Jr.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function oo(t,e,n,r){(r||Jr).removeEventListener(t,e._wrapper||e,n)}function io(t,e){if(!o(t.data.on)||!o(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Jr=e.elm,function(t){if(i(t[Qr])){var e=J?"change":"input";t[e]=[].concat(t[Qr],t[e]||[]),delete t[Qr]}i(t[to])&&(t.change=[].concat(t[to],t.change||[]),delete t[to])}(n),ce(n,r,ro,oo,eo,e.context),Jr=void 0}}var ao,so={create:io,update:io};function co(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=O({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);uo(a,u)&&(a.value=u)}else if("innerHTML"===n&&Jn(a.tagName)&&o(a.innerHTML)){(ao=ao||document.createElement("div")).innerHTML=""+r+"";for(var l=ao.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function uo(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var lo={create:co,update:co},fo=k(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e});function po(t){var e=ho(t.style);return t.staticStyle?O(t.staticStyle,e):e}function ho(t){return Array.isArray(t)?N(t):"string"==typeof t?fo(t):t}var mo,go=/^--/,vo=/\s*!important$/,bo=function(t,e,n){if(go.test(e))t.style.setProperty(e,n);else if(vo.test(n))t.style.setProperty(T(e),n.replace(vo,""),"important");else{var r=yo(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(xo).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Co(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(xo).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Ao(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&O(e,To(t.name||"v")),O(e,t),e}return"string"==typeof t?To(t):void 0}}var To=k(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),So=Y&&!Q,Ro="transition",Oo="animation",No="transition",Lo="transitionend",Io="animation",Do="animationend";So&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(No="WebkitTransition",Lo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Io="WebkitAnimation",Do="webkitAnimationEnd"));var Mo=Y?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Po(t){Mo(function(){Mo(t)})}function jo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),wo(t,e))}function Uo(t,e){t._transitionClasses&&_(t._transitionClasses,e),Co(t,e)}function Fo(t,e,n){var r=Bo(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Ro?Lo:Do,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ro,l=a,f=i.length):e===Oo?u>0&&(n=Oo,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Ro:Oo:null)?n===Ro?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Ro&&$o.test(r[No+"Property"])}}function zo(t,e){for(;t.length1}function Yo(t,e){!0!==e.data.show&&Ho(e)}var Ko=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;eh?_(t,o(n[v+1])?null:n[v+1].elm,n,d,v,r):d>v&&E(0,e,p,h)}(p,g,v,n,l):i(v)?(i(t.text)&&u.setTextContent(p,""),_(p,null,v,0,v.length-1,n)):i(g)?E(0,g,0,g.length-1):i(t.text)&&u.setTextContent(p,""):t.text!==e.text&&u.setTextContent(p,e.text),i(h)&&i(d=h.hook)&&i(d=d.postpatch)&&d(t,e)}}}function C(t,e,n){if(a(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(ti(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Qo(t,e){return e.every(function(e){return!M(e,t)})}function ti(t){return"_value"in t?t._value:t.value}function ei(t){t.target.composing=!0}function ni(t){t.target.composing&&(t.target.composing=!1,ri(t.target,"input"))}function ri(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function oi(t){return!t.componentInstance||t.data&&t.data.transition?t:oi(t.componentInstance._vnode)}var ii={model:Xo,show:{bind:function(t,e,n){var r=e.value,o=(n=oi(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Ho(n,function(){t.style.display=i})):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=oi(n)).data&&n.data.transition?(n.data.show=!0,r?Ho(n,function(){t.style.display=t.__vOriginalDisplay}):Go(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},ai={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function si(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?si(Ye(e.children)):t}function ci(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[w(i)]=o[i];return e}function ui(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var li=function(t){return t.tag||We(t)},fi=function(t){return"show"===t.name},pi={name:"transition",props:ai,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(li)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=si(o);if(!i)return o;if(this._leaving)return ui(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=ci(this),u=this._vnode,l=si(u);if(i.data.directives&&i.data.directives.some(fi)&&(i.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,l)&&!We(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=O({},c);if("out-in"===r)return this._leaving=!0,ue(f,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),ui(t,o);if("in-out"===r){if(We(i))return u;var p,d=function(){p()};ue(c,"afterEnter",d),ue(c,"enterCancelled",d),ue(f,"delayLeave",function(t){p=t})}}return o}}},di=O({tag:String,moveClass:String},ai);function hi(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function mi(t){t.data.newPos=t.elm.getBoundingClientRect()}function gi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete di.mode;var vi={Transition:pi,TransitionGroup:{props:di,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=tn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=ci(this),s=0;s-1?er[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:er[t]=/HTMLUnknownElement/.test(e.toString())},O(Tn.options.directives,ii),O(Tn.options.components,vi),Tn.prototype.__patch__=Y?Ko:L,Tn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=_t),rn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new gn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&rn(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,rn(t,"mounted")),t}(this,t=t&&Y?rr(t):void 0,e)},Y&&setTimeout(function(){B.devtools&&st&&st.emit("init",Tn)},0);var bi=/\{\{((?:.|\r?\n)+?)\}\}/g,_i=/[-.*+?^${}()|[\]\/\\]/g,yi=k(function(t){var e=t[0].replace(_i,"\\$&"),n=t[1].replace(_i,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")});var Ei={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var n=zr(t,"class");n&&(t.staticClass=JSON.stringify(n));var r=Br(t,"class",!1);r&&(t.classBinding=r)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}};var ki,xi={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var n=zr(t,"style");n&&(t.staticStyle=JSON.stringify(fo(n)));var r=Br(t,"style",!1);r&&(t.styleBinding=r)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},wi=function(t){return(ki=ki||document.createElement("div")).innerHTML=t,ki.textContent},Ci=g("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Ai=g("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Ti=g("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Si=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ri=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Oi="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+z.source+"]*",Ni="((?:"+Oi+"\\:)?"+Oi+")",Li=new RegExp("^<"+Ni),Ii=/^\s*(\/?)>/,Di=new RegExp("^<\\/"+Ni+"[^>]*>"),Mi=/^]+>/i,Pi=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Bi=/&(?:lt|gt|quot|amp|#39);/g,zi=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,qi=g("pre,textarea",!0),Hi=function(t,e){return t&&qi(t)&&"\n"===e[0]};function Gi(t,e){var n=e?zi:Bi;return t.replace(n,function(t){return $i[t]})}var Vi,Wi,Yi,Ki,Xi,Zi,Ji,Qi,ta=/^@|^v-on:/,ea=/^v-|^@|^:/,na=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ra=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,oa=/^\(|\)$/g,ia=/^\[.*\]$/,aa=/:(.*)$/,sa=/^:|^\.|^v-bind:/,ca=/\.[^.\]]+(?=[^\]]*$)/g,ua=/^v-slot(:|$)|^#/,la=/[\r\n]/,fa=/\s+/g,pa=k(wi),da="_empty_";function ha(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Ea(e),rawAttrsMap:{},parent:n,children:[]}}function ma(t,e){Vi=e.warn||Ir,Zi=e.isPreTag||I,Ji=e.mustUseProp||I,Qi=e.getTagNamespace||I;var n=e.isReservedTag||I;(function(t){return!!t.component||!n(t.tag)}),Yi=Dr(e.modules,"transformNode"),Ki=Dr(e.modules,"preTransformNode"),Xi=Dr(e.modules,"postTransformNode"),Wi=e.delimiters;var r,o,i=[],a=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(f(t),c||t.processed||(t=ga(t,e)),i.length||t===r||r.if&&(t.elseif||t.else)&&ba(r,{exp:t.elseif,block:t}),o&&!t.forbidden)if(t.elseif||t.else)a=t,(s=function(t){var e=t.length;for(;e--;){if(1===t[e].type)return t[e];t.pop()}}(o.children))&&s.if&&ba(s,{exp:a.elseif,block:a});else{if(t.slotScope){var n=t.slotTarget||'"default"';(o.scopedSlots||(o.scopedSlots={}))[n]=t}o.children.push(t),t.parent=o}var a,s;t.children=t.children.filter(function(t){return!t.slotScope}),f(t),t.pre&&(c=!1),Zi(t.tag)&&(u=!1);for(var l=0;l]*>)","i")),p=t.replace(f,function(t,n,r){return u=r.length,Ui(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Hi(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""});c+=t.length-p.length,t=p,A(l,c-u,c)}else{var d=t.indexOf("<");if(0===d){if(Pi.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),x(h+3);continue}}if(ji.test(t)){var m=t.indexOf("]>");if(m>=0){x(m+2);continue}}var g=t.match(Mi);if(g){x(g[0].length);continue}var v=t.match(Di);if(v){var b=c;x(v[0].length),A(v[1],b,c);continue}var _=w();if(_){C(_),Hi(_.tagName,t)&&x(1);continue}}var y=void 0,E=void 0,k=void 0;if(d>=0){for(E=t.slice(d);!(Di.test(E)||Li.test(E)||Pi.test(E)||ji.test(E)||(k=E.indexOf("<",1))<0);)d+=k,E=t.slice(d);y=t.substring(0,d)}d<0&&(y=t),y&&x(y.length),e.chars&&y&&e.chars(y,c-y.length,c)}if(t===n){e.chars&&e.chars(t);break}}function x(e){c+=e,t=t.substring(e)}function w(){var e=t.match(Li);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};for(x(e[0].length);!(n=t.match(Ii))&&(r=t.match(Ri)||t.match(Si));)r.start=c,x(r[0].length),r.end=c,o.attrs.push(r);if(n)return o.unarySlash=n[1],x(n[0].length),o.end=c,o}}function C(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&Ti(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),p=0;p=0&&o[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}A()}(t,{warn:Vi,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,n,a,s,f){var p=o&&o.ns||Qi(t);J&&"svg"===p&&(n=function(t){for(var e=[],n=0;nc&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=Nr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),$r(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Vr(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Vr(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Vr(e,"$$c")+"}",null,!0)}(t,r,o);else if("input"===i&&"radio"===a)!function(t,e,n){var r=n&&n.number,o=Br(t,"value")||"null";Mr(t,"checked","_q("+e+","+(o=r?"_n("+o+")":o)+")"),$r(t,"change",Vr(e,o),null,!0)}(t,r,o);else if("input"===i||"textarea"===i)!function(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?Qr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Vr(e,l);c&&(f="if($event.target.composing)return;"+f),Mr(t,"value","("+e+")"),$r(t,u,f,null,!0),(s||a)&&$r(t,"blur","$forceUpdate()")}(t,r,o);else if(!B.isReservedTag(i))return Gr(t,r,o),!1;return!0},text:function(t,e){e.value&&Mr(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Mr(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:Ci,mustUseProp:jn,canBeLeftOpenTag:Ai,isReservedTag:Qn,getTagNamespace:tr,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(Ca)},Ra=k(function(t){return g("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))});function Oa(t,e){t&&(Aa=Ra(e.staticKeys||""),Ta=e.isReservedTag||I,function t(e){e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||v(t.tag)||!Ta(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Aa)))}(e);if(1===e.type){if(!Ta(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n|^function\s*(?:[\w$]+)?\s*\(/,La=/\([^)]*?\);*$/,Ia=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Da={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ma={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Pa=function(t){return"if("+t+")return null;"},ja={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Pa("$event.target !== $event.currentTarget"),ctrl:Pa("!$event.ctrlKey"),shift:Pa("!$event.shiftKey"),alt:Pa("!$event.altKey"),meta:Pa("!$event.metaKey"),left:Pa("'button' in $event && $event.button !== 0"),middle:Pa("'button' in $event && $event.button !== 1"),right:Pa("'button' in $event && $event.button !== 2")};function Ua(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=Fa(t[i]);t[i]&&t[i].dynamic?o+=i+","+a+",":r+='"'+i+'":'+a+","}return r="{"+r.slice(0,-1)+"}",o?n+"_d("+r+",["+o.slice(0,-1)+"])":n+r}function Fa(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map(function(t){return Fa(t)}).join(",")+"]";var e=Ia.test(t.value),n=Na.test(t.value),r=Ia.test(t.value.replace(La,""));if(t.modifiers){var o="",i="",a=[];for(var s in t.modifiers)if(ja[s])i+=ja[s],Da[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;i+=Pa(["ctrl","shift","alt","meta"].filter(function(t){return!c[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))}else a.push(s);return a.length&&(o+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map($a).join("&&")+")return null;"}(a)),i&&(o+=i),"function($event){"+o+(e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function $a(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Da[t],r=Ma[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ba={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:L},za=function(t){this.options=t,this.warn=t.warn||Ir,this.transforms=Dr(t.modules,"transformCode"),this.dataGenFns=Dr(t.modules,"genData"),this.directives=O(O({},Ba),t.directives);var e=t.isReservedTag||I;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function qa(t,e){var n=new za(e);return{render:"with(this){return "+(t?Ha(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ha(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Ga(t,e);if(t.once&&!t.onceProcessed)return Va(t,e);if(t.for&&!t.forProcessed)return Ya(t,e);if(t.if&&!t.ifProcessed)return Wa(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=Ja(t,e),o="_t("+n+(r?","+r:""),i=t.attrs||t.dynamicAttrs?es((t.attrs||[]).concat(t.dynamicAttrs||[]).map(function(t){return{name:w(t.name),value:t.value,dynamic:t.dynamic}})):null,a=t.attrsMap["v-bind"];!i&&!a||r||(o+=",null");i&&(o+=","+i);a&&(o+=(i?"":",null")+","+a);return o+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:Ja(e,n,!0);return"_c("+t+","+Ka(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=Ka(t,e));var o=t.inlineTemplate?null:Ja(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var i=function(t,e){var n=t.children[0];0;if(n&&1===n.type){var r=qa(n,e.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}(t,e);i&&(n+=i+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+es(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Xa(t){return 1===t.type&&("slot"===t.tag||t.children.some(Xa))}function Za(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return Wa(t,e,Za,"null");if(t.for&&!t.forProcessed)return Ya(t,e,Za);var r=t.slotScope===da?"":String(t.slotScope),o="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Ja(t,e)||"undefined")+":undefined":Ja(t,e)||"undefined":Ha(t,e))+"}",i=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+o+i+"}"}function Ja(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||Ha)(a,e)+s}var c=n?function(t,e){for(var n=0,r=0;r':'
',as.innerHTML.indexOf(" ")>0}var ls=!!Y&&us(!1),fs=!!Y&&us(!0),ps=k(function(t){var e=rr(t);return e&&e.innerHTML}),ds=Tn.prototype.$mount;Tn.prototype.$mount=function(t,e){if((t=t&&rr(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ps(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){0;var o=cs(r,{outputSourceRange:!1,shouldDecodeNewlines:ls,shouldDecodeNewlinesForHref:fs,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return ds.call(this,t,e)},Tn.compile=cs,e.a=Tn}).call(this,n(11),n(154).setImmediate)},function(t,e,n){var r=n(71),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){t.exports=n(99)},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(199),o=n(202);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){"use strict";var r={props:{name:{required:!0},method:{default:null}},data:function(){return{segments:[],segmentsClass:""}},watch:{name:{immediate:!0,handler:function(){this.segments=this.name.split("\\"),this.segmentsClass=this.segments.pop()}}}},o=n(0),i=Object(o.a)(r,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"ui-exception-class"},[t._l(t.segments,function(e,r){return n("span",{key:r,staticClass:"opacity-75"},[t._v(t._s(e)+"\\"),n("wbr")])}),n("span",[t._v(t._s(t.segmentsClass)),n("wbr")]),t.method?n("span",{staticClass:"opacity-75"},[t._v("::"+t._s(t.method))]):t._e()],2)},[],!1,null,null,null);e.a=i.exports},function(t,e,n){"use strict";var r={props:{lineNumber:{required:!0}}},o=n(0),i=Object(o.a)(r,function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"ui-line-number"},[this._v("\n :"),e("span",{staticClass:"font-mono"},[this._v(this._s(this.lineNumber))])])},[],!1,null,null,null);e.a=i.exports},function(t,e,n){var r=n(215);t.exports=function(t){return t&&t.length?r(t):[]}},function(t,e,n){var r=n(70);t.exports=function(t){return null==t?"":r(t)}},function(t,e,n){var r=n(22),o=n(176),i=n(177),a="[object Null]",s="[object Undefined]",c=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?s:a:c&&c in Object(t)?o(t):i(t)}},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e){function n(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}t.exports=function(t){return function(){var e=this,r=arguments;return new Promise(function(o,i){var a=t.apply(e,r);function s(t){n(a,o,i,s,c,"next",t)}function c(t){n(a,o,i,s,c,"throw",t)}s(void 0)})}}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){var r=n(8).Symbol;t.exports=r},function(t,e,n){var r=n(17),o=n(18),i="[object Symbol]";t.exports=function(t){return"symbol"==typeof t||o(t)&&r(t)==i}},function(t,e,n){"use strict";e.__esModule=!0;var r=c(n(180)),o=c(n(39)),i=c(n(185)),a=c(n(193)),s=c(n(194));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e||{},this.indentation=new i.default(this.cfg.indent),this.inlineBlock=new a.default,this.params=new s.default(this.cfg.params),this.tokenizer=n,this.previousReservedWord={},this.tokens=[],this.index=0}return t.prototype.format=function(t){return this.tokens=this.tokenizer.tokenize(t),this.getFormattedQueryFromTokens().trim()},t.prototype.getFormattedQueryFromTokens=function(){var t=this,e="";return this.tokens.forEach(function(n,r){t.index=r,n.type===o.default.WHITESPACE||(n.type===o.default.LINE_COMMENT?e=t.formatLineComment(n,e):n.type===o.default.BLOCK_COMMENT?e=t.formatBlockComment(n,e):n.type===o.default.RESERVED_TOPLEVEL?(e=t.formatToplevelReservedWord(n,e),t.previousReservedWord=n):n.type===o.default.RESERVED_NEWLINE?(e=t.formatNewlineReservedWord(n,e),t.previousReservedWord=n):n.type===o.default.RESERVED?(e=t.formatWithSpaces(n,e),t.previousReservedWord=n):e=n.type===o.default.OPEN_PAREN?t.formatOpeningParentheses(n,e):n.type===o.default.CLOSE_PAREN?t.formatClosingParentheses(n,e):n.type===o.default.PLACEHOLDER?t.formatPlaceholder(n,e):","===n.value?t.formatComma(n,e):":"===n.value?t.formatWithSpaceAfter(n,e):"."===n.value?t.formatWithoutSpaces(n,e):";"===n.value?t.formatQuerySeparator(n,e):t.formatWithSpaces(n,e))}),e},t.prototype.formatLineComment=function(t,e){return this.addNewline(e+t.value)},t.prototype.formatBlockComment=function(t,e){return this.addNewline(this.addNewline(e)+this.indentComment(t.value))},t.prototype.indentComment=function(t){return t.replace(/\n/g,"\n"+this.indentation.getIndent())},t.prototype.formatToplevelReservedWord=function(t,e){return this.indentation.decreaseTopLevel(),e=this.addNewline(e),this.indentation.increaseToplevel(),e+=this.equalizeWhitespace(t.value),this.addNewline(e)},t.prototype.formatNewlineReservedWord=function(t,e){return this.addNewline(e)+this.equalizeWhitespace(t.value)+" "},t.prototype.equalizeWhitespace=function(t){return t.replace(/\s+/g," ")},t.prototype.formatOpeningParentheses=function(t,e){return[o.default.WHITESPACE,o.default.OPEN_PAREN,o.default.LINE_COMMENT].includes(this.previousToken().type)||(e=(0,r.default)(e)),e+=t.value,this.inlineBlock.beginIfPossible(this.tokens,this.index),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),e=this.addNewline(e)),e},t.prototype.formatClosingParentheses=function(t,e){return this.inlineBlock.isActive()?(this.inlineBlock.end(),this.formatWithSpaceAfter(t,e)):(this.indentation.decreaseBlockLevel(),this.formatWithSpaces(t,this.addNewline(e)))},t.prototype.formatPlaceholder=function(t,e){return e+this.params.get(t)+" "},t.prototype.formatComma=function(t,e){return e=this.trimTrailingWhitespace(e)+t.value+" ",this.inlineBlock.isActive()?e:/^LIMIT$/i.test(this.previousReservedWord.value)?e:this.addNewline(e)},t.prototype.formatWithSpaceAfter=function(t,e){return this.trimTrailingWhitespace(e)+t.value+" "},t.prototype.formatWithoutSpaces=function(t,e){return this.trimTrailingWhitespace(e)+t.value},t.prototype.formatWithSpaces=function(t,e){return e+t.value+" "},t.prototype.formatQuerySeparator=function(t,e){return this.trimTrailingWhitespace(e)+t.value+"\n"},t.prototype.addNewline=function(t){return(0,r.default)(t)+"\n"+this.indentation.getIndent()},t.prototype.trimTrailingWhitespace=function(t){return this.previousNonWhitespaceToken().type===o.default.LINE_COMMENT?(0,r.default)(t)+"\n":(0,r.default)(t)},t.prototype.previousNonWhitespaceToken=function(){for(var t=1;this.previousToken(t).type===o.default.WHITESPACE;)t++;return this.previousToken(t)},t.prototype.previousToken=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.tokens[this.index-t]||{}},t}();e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(195)),o=a(n(210)),i=a(n(39));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.WHITESPACE_REGEX=/^(\s+)/,this.NUMBER_REGEX=/^((-\s*)?[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+)\b/,this.OPERATOR_REGEX=/^(!=|<>|==|<=|>=|!<|!>|\|\||::|->>|->|~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|.)/,this.BLOCK_COMMENT_REGEX=/^(\/\*[^]*?(?:\*\/|$))/,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(e.lineCommentTypes),this.RESERVED_TOPLEVEL_REGEX=this.createReservedWordRegex(e.reservedToplevelWords),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(e.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(e.reservedWords),this.WORD_REGEX=this.createWordRegex(e.specialWordChars),this.STRING_REGEX=this.createStringRegex(e.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(e.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(e.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.namedPlaceholderTypes,this.createStringPattern(e.stringTypes))}return t.prototype.createLineCommentRegex=function(t){return new RegExp("^((?:"+t.map(function(t){return(0,o.default)(t)}).join("|")+").*?(?:\n|$))")},t.prototype.createReservedWordRegex=function(t){var e=t.join("|").replace(/ /g,"\\s+");return new RegExp("^("+e+")\\b","i")},t.prototype.createWordRegex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new RegExp("^([\\w"+t.join("")+"]+)")},t.prototype.createStringRegex=function(t){return new RegExp("^("+this.createStringPattern(t)+")")},t.prototype.createStringPattern=function(t){var e={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)"};return t.map(function(t){return e[t]}).join("|")},t.prototype.createParenRegex=function(t){var e=this;return new RegExp("^("+t.map(function(t){return e.escapeParen(t)}).join("|")+")","i")},t.prototype.escapeParen=function(t){return 1===t.length?(0,o.default)(t):"\\b"+t+"\\b"},t.prototype.createPlaceholderRegex=function(t,e){if((0,r.default)(t))return!1;var n=t.map(o.default).join("|");return new RegExp("^((?:"+n+")(?:"+e+"))")},t.prototype.tokenize=function(t){for(var e=[],n=void 0;t.length;)n=this.getNextToken(t,n),t=t.substring(n.value.length),e.push(n);return e},t.prototype.getNextToken=function(t,e){return this.getWhitespaceToken(t)||this.getCommentToken(t)||this.getStringToken(t)||this.getOpenParenToken(t)||this.getCloseParenToken(t)||this.getPlaceholderToken(t)||this.getNumberToken(t)||this.getReservedWordToken(t,e)||this.getWordToken(t)||this.getOperatorToken(t)},t.prototype.getWhitespaceToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.WHITESPACE,regex:this.WHITESPACE_REGEX})},t.prototype.getCommentToken=function(t){return this.getLineCommentToken(t)||this.getBlockCommentToken(t)},t.prototype.getLineCommentToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.LINE_COMMENT,regex:this.LINE_COMMENT_REGEX})},t.prototype.getBlockCommentToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.BLOCK_COMMENT,regex:this.BLOCK_COMMENT_REGEX})},t.prototype.getStringToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.STRING,regex:this.STRING_REGEX})},t.prototype.getOpenParenToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.OPEN_PAREN,regex:this.OPEN_PAREN_REGEX})},t.prototype.getCloseParenToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.CLOSE_PAREN,regex:this.CLOSE_PAREN_REGEX})},t.prototype.getPlaceholderToken=function(t){return this.getIdentNamedPlaceholderToken(t)||this.getStringNamedPlaceholderToken(t)||this.getIndexedPlaceholderToken(t)},t.prototype.getIdentNamedPlaceholderToken=function(t){return this.getPlaceholderTokenWithKey({input:t,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:function(t){return t.slice(1)}})},t.prototype.getStringNamedPlaceholderToken=function(t){var e=this;return this.getPlaceholderTokenWithKey({input:t,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:function(t){return e.getEscapedPlaceholderKey({key:t.slice(2,-1),quoteChar:t.slice(-1)})}})},t.prototype.getIndexedPlaceholderToken=function(t){return this.getPlaceholderTokenWithKey({input:t,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:function(t){return t.slice(1)}})},t.prototype.getPlaceholderTokenWithKey=function(t){var e=t.input,n=t.regex,r=t.parseKey,o=this.getTokenOnFirstMatch({input:e,regex:n,type:i.default.PLACEHOLDER});return o&&(o.key=r(o.value)),o},t.prototype.getEscapedPlaceholderKey=function(t){var e=t.key,n=t.quoteChar;return e.replace(new RegExp((0,o.default)("\\")+n,"g"),n)},t.prototype.getNumberToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.NUMBER,regex:this.NUMBER_REGEX})},t.prototype.getOperatorToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.OPERATOR,regex:this.OPERATOR_REGEX})},t.prototype.getReservedWordToken=function(t,e){if(!e||!e.value||"."!==e.value)return this.getToplevelReservedToken(t)||this.getNewlineReservedToken(t)||this.getPlainReservedToken(t)},t.prototype.getToplevelReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED_TOPLEVEL,regex:this.RESERVED_TOPLEVEL_REGEX})},t.prototype.getNewlineReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED_NEWLINE,regex:this.RESERVED_NEWLINE_REGEX})},t.prototype.getPlainReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED,regex:this.RESERVED_PLAIN_REGEX})},t.prototype.getWordToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.WORD,regex:this.WORD_REGEX})},t.prototype.getTokenOnFirstMatch=function(t){var e=t.input,n=t.type,r=t.regex,o=e.match(r);if(o)return{type:n,value:o[1]}},t}();e.default=s,t.exports=e.default},function(t,e,n){var r=n(12)(Object,"create");t.exports=r},function(t,e,n){var r=n(223),o=n(224),i=n(225),a=n(226),s=n(227);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0&&(t.localSitesPath||!1).length>0?e.replace(t.remoteSitesPath,t.localSitesPath):e,Object.keys(o).includes(r)?o[r].replace("%path",encodeURIComponent(e)).replace("%line",encodeURIComponent(n)):(console.error("'".concat(r,"' is not supported. Support editors are: ").concat(Object.keys(o).join(", "))),null)}n.d(e,"a",function(){return r})},function(t,e,n){var r=n(171)("toUpperCase");t.exports=r},function(t,e,n){"use strict";var r={props:{label:{required:!0},name:{required:!0},disabled:{required:!1},value:{required:!1,default:!1}},methods:{checkboxChanged:function(t){this.$emit("input",t.target.checked)}}},o=n(0),i=Object(o.a)(r,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"checkbox-label",class:t.disabled?"text-gray-400 pointer-events-none":"",attrs:{for:t.name}},[n("input",{staticClass:"checkbox",attrs:{id:t.name,type:"checkbox",disabled:t.disabled},domProps:{checked:t.value},on:{change:t.checkboxChanged}}),t._v("\n "+t._s(t.label)+"\n")])},[],!1,null,null,null);e.a=i.exports},function(t,e){t.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},function(t,e,n){"use strict";function r(){this.__rules__=[],this.__cache__=null}r.prototype.__find__=function(t){for(var e=0;e=0&&(n=this.attrs[e][1]),n},r.prototype.attrJoin=function(t,e){var n=this.attrIndex(t);n<0?this.attrPush([t,e]):this.attrs[n][1]=this.attrs[n][1]+" "+e},t.exports=r},function(t,e,n){"use strict";e.__esModule=!0,e.default={WHITESPACE:"whitespace",WORD:"word",STRING:"string",RESERVED:"reserved",RESERVED_TOPLEVEL:"reserved-toplevel",RESERVED_NEWLINE:"reserved-newline",OPERATOR:"operator",OPEN_PAREN:"open-paren",CLOSE_PAREN:"close-paren",LINE_COMMENT:"line-comment",BLOCK_COMMENT:"block-comment",NUMBER:"number",PLACEHOLDER:"placeholder"},t.exports=e.default},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(73),o=n(42);t.exports=function(t){return null!=t&&o(t.length)&&!r(t)}},function(t,e){var n=9007199254740991;t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var o=typeof t;return!!(e=null==e?n:e)&&("number"==o||"symbol"!=o&&r.test(t))&&t>-1&&t%1==0&&t2?n.slice(1-n.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=n[0],e.source="cloudforge.com";break;case"visualstudio.com":if("vs-ssh.visualstudio.com"===e.resource){4===(i=e.name.split("/")).length&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}2===(i=e.name.split("/")).length?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):3===i.length?(e.name=i[2],"DefaultCollection"===i[0]?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):4===i.length&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break;case"dev.azure.com":case"azure.com":if("ssh.dev.azure.com"===e.resource){4===(i=e.name.split("/")).length&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}5===(i=e.name.split("/")).length?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):3===i.length?(e.name=i[2],"DefaultCollection"===i[0]?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):4===i.length&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break;default:var a=(i=e.name.split("/")).length-1;if(i.length>=2){var s=i.indexOf("blob",2),c=i.indexOf("tree",2),u=i.indexOf("commit",2);a=s>0?s-1:c>0?c-1:u>0?u-1:a,e.owner=i.slice(0,a).join("/"),e.name=i[a],u&&(e.commit=i[a+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>a+2&&["blob","tree"].indexOf(i[a+1])>=0&&(e.filepathtype=i[a+1],e.ref=i[a+2],i.length>a+3&&(e.filepath=i.slice(a+3).join("/"))),e.organization=e.owner}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}o.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var n=t.port?":"+t.port:"",r=t.user||"git",o=t.git_suffix?".git":"";switch(e){case"ssh":return n?"ssh://"+r+"@"+t.resource+n+"/"+t.full_name+o:r+"@"+t.resource+":"+t.full_name+o;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+r+"@"+t.resource+n+"/"+t.full_name+o;case"http":case"https":return e+"://"+(t.token? +var r=Object.freeze({});function o(t){return null==t}function i(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return i(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function g(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function E(t,e){return y.call(t,e)}function x(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var k=/-(\w)/g,w=x((function(t){return t.replace(k,(function(t,e){return e?e.toUpperCase():""}))})),C=x((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,T=x((function(t){return t.replace(A,"-$1").toLowerCase()}));var S=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function R(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function O(t,e){for(var n in e)t[n]=e[n];return t}function N(t){for(var e={},n=0;n0,tt=Z&&Z.indexOf("edge/")>0,et=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===X),nt=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),rt={}.watch,ot=!1;if(Y)try{var it={};Object.defineProperty(it,"passive",{get:function(){ot=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var at=function(){return void 0===V&&(V=!Y&&!K&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),V},st=Y&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ct(t){return"function"==typeof t&&/native code/.test(t.toString())}var ut,lt="undefined"!=typeof Symbol&&ct(Symbol)&&"undefined"!=typeof Reflect&&ct(Reflect.ownKeys);ut="undefined"!=typeof Set&&ct(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,pt=0,dt=function(){this.id=pt++,this.subs=[]};dt.prototype.addSub=function(t){this.subs.push(t)},dt.prototype.removeSub=function(t){_(this.subs,t)},dt.prototype.depend=function(){dt.target&&dt.target.addDep(this)},dt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!E(o,"default"))a=!1;else if(""===a||a===T(t)){var c=qt(String,o.type);(c<0||s0&&(pe((u=t(u,(n||"")+"_"+c))[0])&&pe(f)&&(r[l]=yt(f.text+u[0].text),u.shift()),r.push.apply(r,u)):s(u)?pe(f)?r[l]=yt(f.text+u):""!==u&&r.push(yt(u)):pe(u)&&pe(f)?r[l]=yt(f.text+u.text):(a(e._isVList)&&i(u.tag)&&o(u.key)&&i(n)&&(u.key="__vlist"+n+"_"+c+"__"),r.push(u)));return r}(t):void 0}function pe(t){return i(t)&&i(t.text)&&!1===t.isComment}function de(t,e){if(t){for(var n=Object.create(null),r=lt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=ve(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=be(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),H(o,"$stable",a),H(o,"$key",s),H(o,"$hasNormal",i),o}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:fe(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function be(t,e){return function(){return t[e]}}function _e(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent("Event").timeStamp&&(pn=function(){return dn.now()})}function hn(){var t,e;for(fn=pn(),un=!0,on.sort((function(t,e){return t.id-e.id})),ln=0;lnln&&on[n].id>t.id;)n--;on.splice(n+1,0,t)}else on.push(t);cn||(cn=!0,re(hn))}}(this)},mn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},mn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},mn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},mn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function bn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function _n(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&At(!1);var i=function(i){o.push(i);var a=$t(i,e,n,t);Rt(r,i,a),i in t||bn(t,"_props",i)};for(var a in e)i(a);At(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?L:S(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;l(e=t._data="function"==typeof e?function(t,e){gt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{mt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&E(r,i)||q(i)||bn(t,"_data",i)}St(e,!0)}(t):St(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=at();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new mn(t,a||L,L,yn)),o in t||En(t,o,i)}}(t,e.computed),e.watch&&e.watch!==rt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Nn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=Rn(a.componentOptions);s&&!e(s)&&Ln(n,i,r,o)}}}function Ln(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Cn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ft(An(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Je(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=he(e._renderChildren,o),t.$scopedSlots=r,t._c=function(e,n,r,o){return qe(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return qe(t,e,n,r,o,!0)};var i=n&&n.data;Rt(t,"$attrs",i&&i.attrs||r,null,!0),Rt(t,"$listeners",e._parentListeners||r,null,!0)}(e),rn(e,"beforeCreate"),function(t){var e=de(t.$options.inject,t);e&&(At(!1),Object.keys(e).forEach((function(n){Rt(t,n,e[n])})),At(!0))}(e),_n(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),rn(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(Tn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Ot,t.prototype.$delete=Nt,t.prototype.$watch=function(t,e,n){if(l(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new mn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Ht(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(Tn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?R(n):n;for(var r=R(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;iparseInt(this.max)&&Ln(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:ft,extend:O,mergeOptions:Ft,defineReactive:Rt},t.set=Ot,t.delete=Nt,t.nextTick=re,t.observable=function(t){return St(t),t},t.options=Object.create(null),U.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,O(t.options.components,Dn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=R(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ft(this.options,t),this}}(t),Sn(t),function(t){U.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Tn),Object.defineProperty(Tn.prototype,"$isServer",{get:at}),Object.defineProperty(Tn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Tn,"FunctionalRenderContext",{value:De}),Tn.version="2.6.10";var Mn=m("style,class"),Pn=m("input,textarea,option,select,progress"),jn=function(t,e,n){return"value"===n&&Pn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Fn=m("contenteditable,draggable,spellcheck"),Un=m("events,caret,typing,plaintext-only"),$n=function(t,e){return Gn(e)||"false"===e?"false":"contenteditable"===t&&Un(e)?e:"true"},Bn=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),zn="http://www.w3.org/1999/xlink",qn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Hn=function(t){return qn(t)?t.slice(6,t.length):""},Gn=function(t){return null==t||!1===t};function Vn(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Wn(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=Wn(e,n.data));return function(t,e){if(i(t)||i(e))return Yn(t,Kn(e));return""}(e.staticClass,e.class)}function Wn(t,e){return{staticClass:Yn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Yn(t,e){return t?e?t+" "+e:t:e||""}function Kn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?yr(t,e,n):Bn(e)?Gn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Fn(e)?t.setAttribute(e,$n(e,n)):qn(e)?Gn(n)?t.removeAttributeNS(zn,Hn(e)):t.setAttributeNS(zn,e,n):yr(t,e,n)}function yr(t,e,n){if(Gn(n))t.removeAttribute(e);else{if(J&&!Q&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Er={create:br,update:br};function xr(t,e){var n=e.elm,r=e.data,a=t.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=Vn(e),c=n._transitionClasses;i(c)&&(s=Yn(s,Kn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var kr,wr,Cr,Ar,Tr,Sr,Rr={create:xr,update:xr},Or=/[\w).+\-_$\]]/;function Nr(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(g=t.charAt(h));h--);g&&Or.test(g)||(u=!0)}}else void 0===o?(d=r+1,o=t.slice(0,r).trim()):m();function m(){(i||(i=[])).push(t.slice(d,r).trim()),d=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==d&&m(),i)for(r=0;r-1?{exp:t.slice(0,Ar),key:'"'+t.slice(Ar+1)+'"'}:{exp:t,key:null};wr=t,Ar=Tr=Sr=0;for(;!Yr();)Kr(Cr=Wr())?Zr(Cr):91===Cr&&Xr(Cr);return{exp:t.slice(0,Tr),key:t.slice(Tr+1,Sr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Wr(){return wr.charCodeAt(++Ar)}function Yr(){return Ar>=kr}function Kr(t){return 34===t||39===t}function Xr(t){var e=1;for(Tr=Ar;!Yr();)if(Kr(t=Wr()))Zr(t);else if(91===t&&e++,93===t&&e--,0===e){Sr=Ar;break}}function Zr(t){for(var e=t;!Yr()&&(t=Wr())!==e;);}var Jr,Qr="__r",to="__c";function eo(t,e,n){var r=Jr;return function o(){var i=e.apply(null,arguments);null!==i&&oo(t,o,n,r)}}var no=Kt&&!(nt&&Number(nt[1])<=53);function ro(t,e,n,r){if(no){var o=fn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Jr.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function oo(t,e,n,r){(r||Jr).removeEventListener(t,e._wrapper||e,n)}function io(t,e){if(!o(t.data.on)||!o(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Jr=e.elm,function(t){if(i(t[Qr])){var e=J?"change":"input";t[e]=[].concat(t[Qr],t[e]||[]),delete t[Qr]}i(t[to])&&(t.change=[].concat(t[to],t.change||[]),delete t[to])}(n),ce(n,r,ro,oo,eo,e.context),Jr=void 0}}var ao,so={create:io,update:io};function co(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=O({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);uo(a,u)&&(a.value=u)}else if("innerHTML"===n&&Jn(a.tagName)&&o(a.innerHTML)){(ao=ao||document.createElement("div")).innerHTML=""+r+"";for(var l=ao.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function uo(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return g(n)!==g(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var lo={create:co,update:co},fo=x((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function po(t){var e=ho(t.style);return t.staticStyle?O(t.staticStyle,e):e}function ho(t){return Array.isArray(t)?N(t):"string"==typeof t?fo(t):t}var go,mo=/^--/,vo=/\s*!important$/,bo=function(t,e,n){if(mo.test(e))t.style.setProperty(e,n);else if(vo.test(n))t.style.setProperty(T(e),n.replace(vo,""),"important");else{var r=yo(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(ko).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Co(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ko).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Ao(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&O(e,To(t.name||"v")),O(e,t),e}return"string"==typeof t?To(t):void 0}}var To=x((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),So=Y&&!Q,Ro="transition",Oo="animation",No="transition",Lo="transitionend",Io="animation",Do="animationend";So&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(No="WebkitTransition",Lo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Io="WebkitAnimation",Do="webkitAnimationEnd"));var Mo=Y?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Po(t){Mo((function(){Mo(t)}))}function jo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),wo(t,e))}function Fo(t,e){t._transitionClasses&&_(t._transitionClasses,e),Co(t,e)}function Uo(t,e,n){var r=Bo(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Ro?Lo:Do,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=Ro,l=a,f=i.length):e===Oo?u>0&&(n=Oo,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Ro:Oo:null)?n===Ro?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Ro&&$o.test(r[No+"Property"])}}function zo(t,e){for(;t.length1}function Yo(t,e){!0!==e.data.show&&Ho(e)}var Ko=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;eh?_(t,o(n[v+1])?null:n[v+1].elm,n,d,v,r):d>v&&E(0,e,p,h)}(p,m,v,n,l):i(v)?(i(t.text)&&u.setTextContent(p,""),_(p,null,v,0,v.length-1,n)):i(m)?E(0,m,0,m.length-1):i(t.text)&&u.setTextContent(p,""):t.text!==e.text&&u.setTextContent(p,e.text),i(h)&&i(d=h.hook)&&i(d=d.postpatch)&&d(t,e)}}}function C(t,e,n){if(a(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(ti(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Qo(t,e){return e.every((function(e){return!M(e,t)}))}function ti(t){return"_value"in t?t._value:t.value}function ei(t){t.target.composing=!0}function ni(t){t.target.composing&&(t.target.composing=!1,ri(t.target,"input"))}function ri(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function oi(t){return!t.componentInstance||t.data&&t.data.transition?t:oi(t.componentInstance._vnode)}var ii={model:Xo,show:{bind:function(t,e,n){var r=e.value,o=(n=oi(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Ho(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=oi(n)).data&&n.data.transition?(n.data.show=!0,r?Ho(n,(function(){t.style.display=t.__vOriginalDisplay})):Go(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},ai={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function si(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?si(Ye(e.children)):t}function ci(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[w(i)]=o[i];return e}function ui(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var li=function(t){return t.tag||We(t)},fi=function(t){return"show"===t.name},pi={name:"transition",props:ai,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(li)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=si(o);if(!i)return o;if(this._leaving)return ui(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=ci(this),u=this._vnode,l=si(u);if(i.data.directives&&i.data.directives.some(fi)&&(i.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,l)&&!We(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=O({},c);if("out-in"===r)return this._leaving=!0,ue(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ui(t,o);if("in-out"===r){if(We(i))return u;var p,d=function(){p()};ue(c,"afterEnter",d),ue(c,"enterCancelled",d),ue(f,"delayLeave",(function(t){p=t}))}}return o}}},di=O({tag:String,moveClass:String},ai);function hi(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function gi(t){t.data.newPos=t.elm.getBoundingClientRect()}function mi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete di.mode;var vi={Transition:pi,TransitionGroup:{props:di,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=tn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=ci(this),s=0;s-1?er[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:er[t]=/HTMLUnknownElement/.test(e.toString())},O(Tn.options.directives,ii),O(Tn.options.components,vi),Tn.prototype.__patch__=Y?Ko:L,Tn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=_t),rn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new mn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&rn(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,rn(t,"mounted")),t}(this,t=t&&Y?rr(t):void 0,e)},Y&&setTimeout((function(){B.devtools&&st&&st.emit("init",Tn)}),0);var bi=/\{\{((?:.|\r?\n)+?)\}\}/g,_i=/[-.*+?^${}()|[\]\/\\]/g,yi=x((function(t){var e=t[0].replace(_i,"\\$&"),n=t[1].replace(_i,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}));var Ei={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var n=zr(t,"class");n&&(t.staticClass=JSON.stringify(n));var r=Br(t,"class",!1);r&&(t.classBinding=r)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}};var xi,ki={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var n=zr(t,"style");n&&(t.staticStyle=JSON.stringify(fo(n)));var r=Br(t,"style",!1);r&&(t.styleBinding=r)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},wi=function(t){return(xi=xi||document.createElement("div")).innerHTML=t,xi.textContent},Ci=m("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Ai=m("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Ti=m("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Si=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ri=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Oi="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+z.source+"]*",Ni="((?:"+Oi+"\\:)?"+Oi+")",Li=new RegExp("^<"+Ni),Ii=/^\s*(\/?)>/,Di=new RegExp("^<\\/"+Ni+"[^>]*>"),Mi=/^]+>/i,Pi=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Bi=/&(?:lt|gt|quot|amp|#39);/g,zi=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,qi=m("pre,textarea",!0),Hi=function(t,e){return t&&qi(t)&&"\n"===e[0]};function Gi(t,e){var n=e?zi:Bi;return t.replace(n,(function(t){return $i[t]}))}var Vi,Wi,Yi,Ki,Xi,Zi,Ji,Qi,ta=/^@|^v-on:/,ea=/^v-|^@|^:/,na=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ra=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,oa=/^\(|\)$/g,ia=/^\[.*\]$/,aa=/:(.*)$/,sa=/^:|^\.|^v-bind:/,ca=/\.[^.\]]+(?=[^\]]*$)/g,ua=/^v-slot(:|$)|^#/,la=/[\r\n]/,fa=/\s+/g,pa=x(wi),da="_empty_";function ha(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Ea(e),rawAttrsMap:{},parent:n,children:[]}}function ga(t,e){Vi=e.warn||Ir,Zi=e.isPreTag||I,Ji=e.mustUseProp||I,Qi=e.getTagNamespace||I;var n=e.isReservedTag||I;(function(t){return!!t.component||!n(t.tag)}),Yi=Dr(e.modules,"transformNode"),Ki=Dr(e.modules,"preTransformNode"),Xi=Dr(e.modules,"postTransformNode"),Wi=e.delimiters;var r,o,i=[],a=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,u=!1;function l(t){if(f(t),c||t.processed||(t=ma(t,e)),i.length||t===r||r.if&&(t.elseif||t.else)&&ba(r,{exp:t.elseif,block:t}),o&&!t.forbidden)if(t.elseif||t.else)a=t,(s=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(o.children))&&s.if&&ba(s,{exp:a.elseif,block:a});else{if(t.slotScope){var n=t.slotTarget||'"default"';(o.scopedSlots||(o.scopedSlots={}))[n]=t}o.children.push(t),t.parent=o}var a,s;t.children=t.children.filter((function(t){return!t.slotScope})),f(t),t.pre&&(c=!1),Zi(t.tag)&&(u=!1);for(var l=0;l]*>)","i")),p=t.replace(f,(function(t,n,r){return u=r.length,Fi(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Hi(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-p.length,t=p,A(l,c-u,c)}else{var d=t.indexOf("<");if(0===d){if(Pi.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),k(h+3);continue}}if(ji.test(t)){var g=t.indexOf("]>");if(g>=0){k(g+2);continue}}var m=t.match(Mi);if(m){k(m[0].length);continue}var v=t.match(Di);if(v){var b=c;k(v[0].length),A(v[1],b,c);continue}var _=w();if(_){C(_),Hi(_.tagName,t)&&k(1);continue}}var y=void 0,E=void 0,x=void 0;if(d>=0){for(E=t.slice(d);!(Di.test(E)||Li.test(E)||Pi.test(E)||ji.test(E)||(x=E.indexOf("<",1))<0);)d+=x,E=t.slice(d);y=t.substring(0,d)}d<0&&(y=t),y&&k(y.length),e.chars&&y&&e.chars(y,c-y.length,c)}if(t===n){e.chars&&e.chars(t);break}}function k(e){c+=e,t=t.substring(e)}function w(){var e=t.match(Li);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};for(k(e[0].length);!(n=t.match(Ii))&&(r=t.match(Ri)||t.match(Si));)r.start=c,k(r[0].length),r.end=c,o.attrs.push(r);if(n)return o.unarySlash=n[1],k(n[0].length),o.end=c,o}}function C(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&Ti(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),p=0;p=0&&o[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}A()}(t,{warn:Vi,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,n,a,s,f){var p=o&&o.ns||Qi(t);J&&"svg"===p&&(n=function(t){for(var e=[],n=0;nc&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=Nr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),$r(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Vr(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Vr(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Vr(e,"$$c")+"}",null,!0)}(t,r,o);else if("input"===i&&"radio"===a)!function(t,e,n){var r=n&&n.number,o=Br(t,"value")||"null";Mr(t,"checked","_q("+e+","+(o=r?"_n("+o+")":o)+")"),$r(t,"change",Vr(e,o),null,!0)}(t,r,o);else if("input"===i||"textarea"===i)!function(t,e,n){var r=t.attrsMap.type;0;var o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?Qr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()");a&&(l="_n("+l+")");var f=Vr(e,l);c&&(f="if($event.target.composing)return;"+f);Mr(t,"value","("+e+")"),$r(t,u,f,null,!0),(s||a)&&$r(t,"blur","$forceUpdate()")}(t,r,o);else{if(!B.isReservedTag(i))return Gr(t,r,o),!1}return!0},text:function(t,e){e.value&&Mr(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Mr(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:Ci,mustUseProp:jn,canBeLeftOpenTag:Ai,isReservedTag:Qn,getTagNamespace:tr,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(Ca)},Ra=x((function(t){return m("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));function Oa(t,e){t&&(Aa=Ra(e.staticKeys||""),Ta=e.isReservedTag||I,function t(e){e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||v(t.tag)||!Ta(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Aa)))}(e);if(1===e.type){if(!Ta(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n|^function\s*(?:[\w$]+)?\s*\(/,La=/\([^)]*?\);*$/,Ia=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Da={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ma={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Pa=function(t){return"if("+t+")return null;"},ja={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Pa("$event.target !== $event.currentTarget"),ctrl:Pa("!$event.ctrlKey"),shift:Pa("!$event.shiftKey"),alt:Pa("!$event.altKey"),meta:Pa("!$event.metaKey"),left:Pa("'button' in $event && $event.button !== 0"),middle:Pa("'button' in $event && $event.button !== 1"),right:Pa("'button' in $event && $event.button !== 2")};function Fa(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=Ua(t[i]);t[i]&&t[i].dynamic?o+=i+","+a+",":r+='"'+i+'":'+a+","}return r="{"+r.slice(0,-1)+"}",o?n+"_d("+r+",["+o.slice(0,-1)+"])":n+r}function Ua(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Ua(t)})).join(",")+"]";var e=Ia.test(t.value),n=Na.test(t.value),r=Ia.test(t.value.replace(La,""));if(t.modifiers){var o="",i="",a=[];for(var s in t.modifiers)if(ja[s])i+=ja[s],Da[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;i+=Pa(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);return a.length&&(o+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map($a).join("&&")+")return null;"}(a)),i&&(o+=i),"function($event){"+o+(e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function $a(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Da[t],r=Ma[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ba={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:L},za=function(t){this.options=t,this.warn=t.warn||Ir,this.transforms=Dr(t.modules,"transformCode"),this.dataGenFns=Dr(t.modules,"genData"),this.directives=O(O({},Ba),t.directives);var e=t.isReservedTag||I;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function qa(t,e){var n=new za(e);return{render:"with(this){return "+(t?Ha(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ha(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Ga(t,e);if(t.once&&!t.onceProcessed)return Va(t,e);if(t.for&&!t.forProcessed)return Ya(t,e);if(t.if&&!t.ifProcessed)return Wa(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=Ja(t,e),o="_t("+n+(r?","+r:""),i=t.attrs||t.dynamicAttrs?es((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:w(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];!i&&!a||r||(o+=",null");i&&(o+=","+i);a&&(o+=(i?"":",null")+","+a);return o+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:Ja(e,n,!0);return"_c("+t+","+Ka(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=Ka(t,e));var o=t.inlineTemplate?null:Ja(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var i=function(t,e){var n=t.children[0];0;if(n&&1===n.type){var r=qa(n,e.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);i&&(n+=i+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+es(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Xa(t){return 1===t.type&&("slot"===t.tag||t.children.some(Xa))}function Za(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return Wa(t,e,Za,"null");if(t.for&&!t.forProcessed)return Ya(t,e,Za);var r=t.slotScope===da?"":String(t.slotScope),o="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Ja(t,e)||"undefined")+":undefined":Ja(t,e)||"undefined":Ha(t,e))+"}",i=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+o+i+"}"}function Ja(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||Ha)(a,e)+s}var c=n?function(t,e){for(var n=0,r=0;r':'
',as.innerHTML.indexOf(" ")>0}var ls=!!Y&&us(!1),fs=!!Y&&us(!0),ps=x((function(t){var e=rr(t);return e&&e.innerHTML})),ds=Tn.prototype.$mount;Tn.prototype.$mount=function(t,e){if((t=t&&rr(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ps(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){0;var o=cs(r,{outputSourceRange:!1,shouldDecodeNewlines:ls,shouldDecodeNewlinesForHref:fs,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return ds.call(this,t,e)},Tn.compile=cs,e.a=Tn}).call(this,n(11),n(158).setImmediate)},function(t,e,n){var r=n(71),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){t.exports=n(100)},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(201),o=n(204);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(172)("toUpperCase");t.exports=r},function(t,e,n){"use strict";var r={props:{lineNumber:{required:!0}}},o=n(0),i=Object(o.a)(r,(function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"ui-line-number"},[this._v("\n :"),e("span",{staticClass:"font-mono"},[this._v(this._s(this.lineNumber))])])}),[],!1,null,null,null);e.a=i.exports},function(t,e,n){"use strict";var r={props:{name:{required:!0},method:{default:null}},data:function(){return{segments:[],segmentsClass:""}},watch:{name:{immediate:!0,handler:function(){this.segments=this.name.split("\\"),this.segmentsClass=this.segments.pop()}}}},o=n(0),i=Object(o.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"ui-exception-class"},[t._l(t.segments,(function(e,r){return n("span",{key:r,staticClass:"opacity-75"},[t._v(t._s(e)+"\\"),n("wbr")])})),n("span",[t._v(t._s(t.segmentsClass)),n("wbr")]),t.method?n("span",{staticClass:"opacity-75"},[t._v("::"+t._s(t.method))]):t._e()],2)}),[],!1,null,null,null);e.a=i.exports},function(t,e,n){var r=n(217);t.exports=function(t){return t&&t.length?r(t):[]}},function(t,e,n){var r=n(70);t.exports=function(t){return null==t?"":r(t)}},function(t,e,n){var r=n(23),o=n(177),i=n(178),a="[object Null]",s="[object Undefined]",c=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?s:a:c&&c in Object(t)?o(t):i(t)}},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e){function n(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}t.exports=function(t){return function(){var e=this,r=arguments;return new Promise((function(o,i){var a=t.apply(e,r);function s(t){n(a,o,i,s,c,"next",t)}function c(t){n(a,o,i,s,c,"throw",t)}s(void 0)}))}}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){var r=n(8).Symbol;t.exports=r},function(t,e,n){var r=n(18),o=n(19),i="[object Symbol]";t.exports=function(t){return"symbol"==typeof t||o(t)&&r(t)==i}},function(t,e,n){"use strict";e.__esModule=!0;var r=c(n(181)),o=c(n(39)),i=c(n(186)),a=c(n(195)),s=c(n(196));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e||{},this.indentation=new i.default(this.cfg.indent),this.inlineBlock=new a.default,this.params=new s.default(this.cfg.params),this.tokenizer=n,this.previousReservedWord={},this.tokens=[],this.index=0}return t.prototype.format=function(t){return this.tokens=this.tokenizer.tokenize(t),this.getFormattedQueryFromTokens().trim()},t.prototype.getFormattedQueryFromTokens=function(){var t=this,e="";return this.tokens.forEach((function(n,r){t.index=r,n.type===o.default.WHITESPACE||(n.type===o.default.LINE_COMMENT?e=t.formatLineComment(n,e):n.type===o.default.BLOCK_COMMENT?e=t.formatBlockComment(n,e):n.type===o.default.RESERVED_TOPLEVEL?(e=t.formatToplevelReservedWord(n,e),t.previousReservedWord=n):n.type===o.default.RESERVED_NEWLINE?(e=t.formatNewlineReservedWord(n,e),t.previousReservedWord=n):n.type===o.default.RESERVED?(e=t.formatWithSpaces(n,e),t.previousReservedWord=n):e=n.type===o.default.OPEN_PAREN?t.formatOpeningParentheses(n,e):n.type===o.default.CLOSE_PAREN?t.formatClosingParentheses(n,e):n.type===o.default.PLACEHOLDER?t.formatPlaceholder(n,e):","===n.value?t.formatComma(n,e):":"===n.value?t.formatWithSpaceAfter(n,e):"."===n.value?t.formatWithoutSpaces(n,e):";"===n.value?t.formatQuerySeparator(n,e):t.formatWithSpaces(n,e))})),e},t.prototype.formatLineComment=function(t,e){return this.addNewline(e+t.value)},t.prototype.formatBlockComment=function(t,e){return this.addNewline(this.addNewline(e)+this.indentComment(t.value))},t.prototype.indentComment=function(t){return t.replace(/\n/g,"\n"+this.indentation.getIndent())},t.prototype.formatToplevelReservedWord=function(t,e){return this.indentation.decreaseTopLevel(),e=this.addNewline(e),this.indentation.increaseToplevel(),e+=this.equalizeWhitespace(t.value),this.addNewline(e)},t.prototype.formatNewlineReservedWord=function(t,e){return this.addNewline(e)+this.equalizeWhitespace(t.value)+" "},t.prototype.equalizeWhitespace=function(t){return t.replace(/\s+/g," ")},t.prototype.formatOpeningParentheses=function(t,e){return[o.default.WHITESPACE,o.default.OPEN_PAREN,o.default.LINE_COMMENT].includes(this.previousToken().type)||(e=(0,r.default)(e)),e+=t.value,this.inlineBlock.beginIfPossible(this.tokens,this.index),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),e=this.addNewline(e)),e},t.prototype.formatClosingParentheses=function(t,e){return this.inlineBlock.isActive()?(this.inlineBlock.end(),this.formatWithSpaceAfter(t,e)):(this.indentation.decreaseBlockLevel(),this.formatWithSpaces(t,this.addNewline(e)))},t.prototype.formatPlaceholder=function(t,e){return e+this.params.get(t)+" "},t.prototype.formatComma=function(t,e){return e=this.trimTrailingWhitespace(e)+t.value+" ",this.inlineBlock.isActive()?e:/^LIMIT$/i.test(this.previousReservedWord.value)?e:this.addNewline(e)},t.prototype.formatWithSpaceAfter=function(t,e){return this.trimTrailingWhitespace(e)+t.value+" "},t.prototype.formatWithoutSpaces=function(t,e){return this.trimTrailingWhitespace(e)+t.value},t.prototype.formatWithSpaces=function(t,e){return e+t.value+" "},t.prototype.formatQuerySeparator=function(t,e){return this.trimTrailingWhitespace(e)+t.value+"\n"},t.prototype.addNewline=function(t){return(0,r.default)(t)+"\n"+this.indentation.getIndent()},t.prototype.trimTrailingWhitespace=function(t){return this.previousNonWhitespaceToken().type===o.default.LINE_COMMENT?(0,r.default)(t)+"\n":(0,r.default)(t)},t.prototype.previousNonWhitespaceToken=function(){for(var t=1;this.previousToken(t).type===o.default.WHITESPACE;)t++;return this.previousToken(t)},t.prototype.previousToken=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.tokens[this.index-t]||{}},t}();e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(197)),o=a(n(212)),i=a(n(39));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.WHITESPACE_REGEX=/^(\s+)/,this.NUMBER_REGEX=/^((-\s*)?[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+)\b/,this.OPERATOR_REGEX=/^(!=|<>|==|<=|>=|!<|!>|\|\||::|->>|->|~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|.)/,this.BLOCK_COMMENT_REGEX=/^(\/\*[^]*?(?:\*\/|$))/,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(e.lineCommentTypes),this.RESERVED_TOPLEVEL_REGEX=this.createReservedWordRegex(e.reservedToplevelWords),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(e.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(e.reservedWords),this.WORD_REGEX=this.createWordRegex(e.specialWordChars),this.STRING_REGEX=this.createStringRegex(e.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(e.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(e.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(e.namedPlaceholderTypes,this.createStringPattern(e.stringTypes))}return t.prototype.createLineCommentRegex=function(t){return new RegExp("^((?:"+t.map((function(t){return(0,o.default)(t)})).join("|")+").*?(?:\n|$))")},t.prototype.createReservedWordRegex=function(t){var e=t.join("|").replace(/ /g,"\\s+");return new RegExp("^("+e+")\\b","i")},t.prototype.createWordRegex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new RegExp("^([\\w"+t.join("")+"]+)")},t.prototype.createStringRegex=function(t){return new RegExp("^("+this.createStringPattern(t)+")")},t.prototype.createStringPattern=function(t){var e={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)"};return t.map((function(t){return e[t]})).join("|")},t.prototype.createParenRegex=function(t){var e=this;return new RegExp("^("+t.map((function(t){return e.escapeParen(t)})).join("|")+")","i")},t.prototype.escapeParen=function(t){return 1===t.length?(0,o.default)(t):"\\b"+t+"\\b"},t.prototype.createPlaceholderRegex=function(t,e){if((0,r.default)(t))return!1;var n=t.map(o.default).join("|");return new RegExp("^((?:"+n+")(?:"+e+"))")},t.prototype.tokenize=function(t){for(var e=[],n=void 0;t.length;)n=this.getNextToken(t,n),t=t.substring(n.value.length),e.push(n);return e},t.prototype.getNextToken=function(t,e){return this.getWhitespaceToken(t)||this.getCommentToken(t)||this.getStringToken(t)||this.getOpenParenToken(t)||this.getCloseParenToken(t)||this.getPlaceholderToken(t)||this.getNumberToken(t)||this.getReservedWordToken(t,e)||this.getWordToken(t)||this.getOperatorToken(t)},t.prototype.getWhitespaceToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.WHITESPACE,regex:this.WHITESPACE_REGEX})},t.prototype.getCommentToken=function(t){return this.getLineCommentToken(t)||this.getBlockCommentToken(t)},t.prototype.getLineCommentToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.LINE_COMMENT,regex:this.LINE_COMMENT_REGEX})},t.prototype.getBlockCommentToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.BLOCK_COMMENT,regex:this.BLOCK_COMMENT_REGEX})},t.prototype.getStringToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.STRING,regex:this.STRING_REGEX})},t.prototype.getOpenParenToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.OPEN_PAREN,regex:this.OPEN_PAREN_REGEX})},t.prototype.getCloseParenToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.CLOSE_PAREN,regex:this.CLOSE_PAREN_REGEX})},t.prototype.getPlaceholderToken=function(t){return this.getIdentNamedPlaceholderToken(t)||this.getStringNamedPlaceholderToken(t)||this.getIndexedPlaceholderToken(t)},t.prototype.getIdentNamedPlaceholderToken=function(t){return this.getPlaceholderTokenWithKey({input:t,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:function(t){return t.slice(1)}})},t.prototype.getStringNamedPlaceholderToken=function(t){var e=this;return this.getPlaceholderTokenWithKey({input:t,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:function(t){return e.getEscapedPlaceholderKey({key:t.slice(2,-1),quoteChar:t.slice(-1)})}})},t.prototype.getIndexedPlaceholderToken=function(t){return this.getPlaceholderTokenWithKey({input:t,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:function(t){return t.slice(1)}})},t.prototype.getPlaceholderTokenWithKey=function(t){var e=t.input,n=t.regex,r=t.parseKey,o=this.getTokenOnFirstMatch({input:e,regex:n,type:i.default.PLACEHOLDER});return o&&(o.key=r(o.value)),o},t.prototype.getEscapedPlaceholderKey=function(t){var e=t.key,n=t.quoteChar;return e.replace(new RegExp((0,o.default)("\\")+n,"g"),n)},t.prototype.getNumberToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.NUMBER,regex:this.NUMBER_REGEX})},t.prototype.getOperatorToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.OPERATOR,regex:this.OPERATOR_REGEX})},t.prototype.getReservedWordToken=function(t,e){if(!e||!e.value||"."!==e.value)return this.getToplevelReservedToken(t)||this.getNewlineReservedToken(t)||this.getPlainReservedToken(t)},t.prototype.getToplevelReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED_TOPLEVEL,regex:this.RESERVED_TOPLEVEL_REGEX})},t.prototype.getNewlineReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED_NEWLINE,regex:this.RESERVED_NEWLINE_REGEX})},t.prototype.getPlainReservedToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.RESERVED,regex:this.RESERVED_PLAIN_REGEX})},t.prototype.getWordToken=function(t){return this.getTokenOnFirstMatch({input:t,type:i.default.WORD,regex:this.WORD_REGEX})},t.prototype.getTokenOnFirstMatch=function(t){var e=t.input,n=t.type,r=t.regex,o=e.match(r);if(o)return{type:n,value:o[1]}},t}();e.default=s,t.exports=e.default},function(t,e,n){var r=n(12)(Object,"create");t.exports=r},function(t,e,n){var r=n(225),o=n(226),i=n(227),a=n(228),s=n(229);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0&&(t.localSitesPath||!1).length>0?e.replace(t.remoteSitesPath,t.localSitesPath):e,Object.keys(o).includes(r)?o[r].replace("%path",encodeURIComponent(e)).replace("%line",encodeURIComponent(n)):(console.error("'".concat(r,"' is not supported. Support editors are: ").concat(Object.keys(o).join(", "))),null)}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r={props:{label:{required:!0},name:{required:!0},disabled:{required:!1},value:{required:!1,default:!1}},methods:{checkboxChanged:function(t){this.$emit("input",t.target.checked)}}},o=n(0),i=Object(o.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("label",{staticClass:"checkbox-label",class:t.disabled?"text-gray-400 pointer-events-none":"",attrs:{for:t.name}},[n("input",{staticClass:"checkbox",attrs:{id:t.name,type:"checkbox",disabled:t.disabled},domProps:{checked:t.value},on:{change:t.checkboxChanged}}),t._v("\n "+t._s(t.label)+"\n")])}),[],!1,null,null,null);e.a=i.exports},function(t,e){t.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},function(t,e,n){"use strict";function r(){this.__rules__=[],this.__cache__=null}r.prototype.__find__=function(t){for(var e=0;e=0&&(n=this.attrs[e][1]),n},r.prototype.attrJoin=function(t,e){var n=this.attrIndex(t);n<0?this.attrPush([t,e]):this.attrs[n][1]=this.attrs[n][1]+" "+e},t.exports=r},function(t,e,n){"use strict";e.__esModule=!0,e.default={WHITESPACE:"whitespace",WORD:"word",STRING:"string",RESERVED:"reserved",RESERVED_TOPLEVEL:"reserved-toplevel",RESERVED_NEWLINE:"reserved-newline",OPERATOR:"operator",OPEN_PAREN:"open-paren",CLOSE_PAREN:"close-paren",LINE_COMMENT:"line-comment",BLOCK_COMMENT:"block-comment",NUMBER:"number",PLACEHOLDER:"placeholder"},t.exports=e.default},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(74),o=n(42);t.exports=function(t){return null!=t&&o(t.length)&&!r(t)}},function(t,e){var n=9007199254740991;t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}},function(t,e){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var o=typeof t;return!!(e=null==e?n:e)&&("number"==o||"symbol"!=o&&r.test(t))&&t>-1&&t%1==0&&t2?n.slice(1-n.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=n[0],e.source="cloudforge.com";break;case"visualstudio.com":if("vs-ssh.visualstudio.com"===e.resource){4===(i=e.name.split("/")).length&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}2===(i=e.name.split("/")).length?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):3===i.length?(e.name=i[2],"DefaultCollection"===i[0]?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):4===i.length&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break;case"dev.azure.com":case"azure.com":if("ssh.dev.azure.com"===e.resource){4===(i=e.name.split("/")).length&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}5===(i=e.name.split("/")).length?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):3===i.length?(e.name=i[2],"DefaultCollection"===i[0]?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):4===i.length&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break;default:var a=(i=e.name.split("/")).length-1;if(i.length>=2){var s=i.indexOf("blob",2),c=i.indexOf("tree",2),u=i.indexOf("commit",2);a=s>0?s-1:c>0?c-1:u>0?u-1:a,e.owner=i.slice(0,a).join("/"),e.name=i[a],u&&(e.commit=i[a+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>a+2&&["blob","tree"].indexOf(i[a+1])>=0&&(e.filepathtype=i[a+1],e.ref=i[a+2],i.length>a+3&&(e.filepath=i.slice(a+3).join("/"))),e.organization=e.owner}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}o.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var n=t.port?":"+t.port:"",r=t.user||"git",o=t.git_suffix?".git":"";switch(e){case"ssh":return n?"ssh://"+r+"@"+t.resource+n+"/"+t.full_name+o:r+"@"+t.resource+":"+t.full_name+o;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+r+"@"+t.resource+n+"/"+t.full_name+o;case"http":case"https":return e+"://"+(t.token? /*! * buildToken * Builds OAuth token prefix (helper function) @@ -22,11 +22,11 @@ function(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+" * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var i,a=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",u="__lodash_hash_undefined__",l=500,f="__lodash_placeholder__",p=1,d=2,h=4,m=1,g=2,v=1,b=2,_=4,y=8,E=16,k=32,x=64,w=128,C=256,A=512,T=30,S="...",R=800,O=16,N=1,L=2,I=1/0,D=9007199254740991,M=17976931348623157e292,P=NaN,j=4294967295,U=j-1,F=j>>>1,$=[["ary",w],["bind",v],["bindKey",b],["curry",y],["curryRight",E],["flip",A],["partial",k],["partialRight",x],["rearg",C]],B="[object Arguments]",z="[object Array]",q="[object AsyncFunction]",H="[object Boolean]",G="[object Date]",V="[object DOMException]",W="[object Error]",Y="[object Function]",K="[object GeneratorFunction]",X="[object Map]",Z="[object Number]",J="[object Null]",Q="[object Object]",tt="[object Proxy]",et="[object RegExp]",nt="[object Set]",rt="[object String]",ot="[object Symbol]",it="[object Undefined]",at="[object WeakMap]",st="[object WeakSet]",ct="[object ArrayBuffer]",ut="[object DataView]",lt="[object Float32Array]",ft="[object Float64Array]",pt="[object Int8Array]",dt="[object Int16Array]",ht="[object Int32Array]",mt="[object Uint8Array]",gt="[object Uint8ClampedArray]",vt="[object Uint16Array]",bt="[object Uint32Array]",_t=/\b__p \+= '';/g,yt=/\b(__p \+=) '' \+/g,Et=/(__e\(.*?\)|\b__t\)) \+\n'';/g,kt=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,wt=RegExp(kt.source),Ct=RegExp(xt.source),At=/<%-([\s\S]+?)%>/g,Tt=/<%([\s\S]+?)%>/g,St=/<%=([\s\S]+?)%>/g,Rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ot=/^\w*$/,Nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Lt=/[\\^$.*+?()[\]{}|]/g,It=RegExp(Lt.source),Dt=/^\s+|\s+$/g,Mt=/^\s+/,Pt=/\s+$/,jt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ut=/\{\n\/\* \[wrapped with (.+)\] \*/,Ft=/,? & /,$t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Bt=/\\(\\)?/g,zt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,qt=/\w*$/,Ht=/^[-+]0x[0-9a-f]+$/i,Gt=/^0b[01]+$/i,Vt=/^\[object .+?Constructor\]$/,Wt=/^0o[0-7]+$/i,Yt=/^(?:0|[1-9]\d*)$/,Kt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Xt=/($^)/,Zt=/['\n\r\u2028\u2029\\]/g,Jt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",te="[\\ud800-\\udfff]",ee="["+Qt+"]",ne="["+Jt+"]",re="\\d+",oe="[\\u2700-\\u27bf]",ie="[a-z\\xdf-\\xf6\\xf8-\\xff]",ae="[^\\ud800-\\udfff"+Qt+re+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",se="\\ud83c[\\udffb-\\udfff]",ce="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",fe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",pe="(?:"+ie+"|"+ae+")",de="(?:"+fe+"|"+ae+")",he="(?:"+ne+"|"+se+")"+"?",me="[\\ufe0e\\ufe0f]?"+he+("(?:\\u200d(?:"+[ce,ue,le].join("|")+")[\\ufe0e\\ufe0f]?"+he+")*"),ge="(?:"+[oe,ue,le].join("|")+")"+me,ve="(?:"+[ce+ne+"?",ne,ue,le,te].join("|")+")",be=RegExp("['’]","g"),_e=RegExp(ne,"g"),ye=RegExp(se+"(?="+se+")|"+ve+me,"g"),Ee=RegExp([fe+"?"+ie+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ee,fe,"$"].join("|")+")",de+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ee,fe+pe,"$"].join("|")+")",fe+"?"+pe+"+(?:['’](?:d|ll|m|re|s|t|ve))?",fe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",re,ge].join("|"),"g"),ke=RegExp("[\\u200d\\ud800-\\udfff"+Jt+"\\ufe0e\\ufe0f]"),xe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,we=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ce=-1,Ae={};Ae[lt]=Ae[ft]=Ae[pt]=Ae[dt]=Ae[ht]=Ae[mt]=Ae[gt]=Ae[vt]=Ae[bt]=!0,Ae[B]=Ae[z]=Ae[ct]=Ae[H]=Ae[ut]=Ae[G]=Ae[W]=Ae[Y]=Ae[X]=Ae[Z]=Ae[Q]=Ae[et]=Ae[nt]=Ae[rt]=Ae[at]=!1;var Te={};Te[B]=Te[z]=Te[ct]=Te[ut]=Te[H]=Te[G]=Te[lt]=Te[ft]=Te[pt]=Te[dt]=Te[ht]=Te[X]=Te[Z]=Te[Q]=Te[et]=Te[nt]=Te[rt]=Te[ot]=Te[mt]=Te[gt]=Te[vt]=Te[bt]=!0,Te[W]=Te[Y]=Te[at]=!1;var Se={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Re=parseFloat,Oe=parseInt,Ne="object"==typeof t&&t&&t.Object===Object&&t,Le="object"==typeof self&&self&&self.Object===Object&&self,Ie=Ne||Le||Function("return this")(),De=e&&!e.nodeType&&e,Me=De&&"object"==typeof r&&r&&!r.nodeType&&r,Pe=Me&&Me.exports===De,je=Pe&&Ne.process,Ue=function(){try{var t=Me&&Me.require&&Me.require("util").types;return t||je&&je.binding&&je.binding("util")}catch(t){}}(),Fe=Ue&&Ue.isArrayBuffer,$e=Ue&&Ue.isDate,Be=Ue&&Ue.isMap,ze=Ue&&Ue.isRegExp,qe=Ue&&Ue.isSet,He=Ue&&Ue.isTypedArray;function Ge(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ve(t,e,n,r){for(var o=-1,i=null==t?0:t.length;++o-1}function Je(t,e,n){for(var r=-1,o=null==t?0:t.length;++r-1;);return n}function En(t,e){for(var n=t.length;n--&&cn(e,t[n],0)>-1;);return n}var kn=dn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),xn=dn({"&":"&","<":"<",">":">",'"':""","'":"'"});function wn(t){return"\\"+Se[t]}function Cn(t){return ke.test(t)}function An(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function Tn(t,e){return function(n){return t(e(n))}}function Sn(t,e){for(var n=-1,r=t.length,o=0,i=[];++n",""":'"',"'":"'"});var Dn=function t(e){var n,r=(e=null==e?Ie:Dn.defaults(Ie.Object(),e,Dn.pick(Ie,we))).Array,o=e.Date,Jt=e.Error,Qt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,oe=e.TypeError,ie=r.prototype,ae=Qt.prototype,se=ee.prototype,ce=e["__core-js_shared__"],ue=ae.toString,le=se.hasOwnProperty,fe=0,pe=(n=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=se.toString,he=ue.call(ee),me=Ie._,ge=ne("^"+ue.call(le).replace(Lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ve=Pe?e.Buffer:i,ye=e.Symbol,ke=e.Uint8Array,Se=ve?ve.allocUnsafe:i,Ne=Tn(ee.getPrototypeOf,ee),Le=ee.create,De=se.propertyIsEnumerable,Me=ie.splice,je=ye?ye.isConcatSpreadable:i,Ue=ye?ye.iterator:i,on=ye?ye.toStringTag:i,dn=function(){try{var t=Fi(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),Mn=e.clearTimeout!==Ie.clearTimeout&&e.clearTimeout,Pn=o&&o.now!==Ie.Date.now&&o.now,jn=e.setTimeout!==Ie.setTimeout&&e.setTimeout,Un=te.ceil,Fn=te.floor,$n=ee.getOwnPropertySymbols,Bn=ve?ve.isBuffer:i,zn=e.isFinite,qn=ie.join,Hn=Tn(ee.keys,ee),Gn=te.max,Vn=te.min,Wn=o.now,Yn=e.parseInt,Kn=te.random,Xn=ie.reverse,Zn=Fi(e,"DataView"),Jn=Fi(e,"Map"),Qn=Fi(e,"Promise"),tr=Fi(e,"Set"),er=Fi(e,"WeakMap"),nr=Fi(ee,"create"),rr=er&&new er,or={},ir=fa(Zn),ar=fa(Jn),sr=fa(Qn),cr=fa(tr),ur=fa(er),lr=ye?ye.prototype:i,fr=lr?lr.valueOf:i,pr=lr?lr.toString:i;function dr(t){if(Ss(t)&&!vs(t)&&!(t instanceof vr)){if(t instanceof gr)return t;if(le.call(t,"__wrapped__"))return pa(t)}return new gr(t)}var hr=function(){function t(){}return function(e){if(!Ts(e))return{};if(Le)return Le(e);t.prototype=e;var n=new t;return t.prototype=i,n}}();function mr(){}function gr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=i}function vr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=j,this.__views__=[]}function br(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Mr(t,e,n,r,o,a){var s,c=e&p,u=e&d,l=e&h;if(n&&(s=o?n(t,r,o,a):n(t)),s!==i)return s;if(!Ts(t))return t;var f=vs(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&le.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!c)return ri(t,s)}else{var m=zi(t),g=m==Y||m==K;if(Es(t))return Zo(t,c);if(m==Q||m==B||g&&!o){if(s=u||g?{}:Hi(t),!c)return u?function(t,e){return oi(t,Bi(t),e)}(t,function(t,e){return t&&oi(e,ic(e),t)}(s,t)):function(t,e){return oi(t,$i(t),e)}(t,Nr(s,t))}else{if(!Te[m])return o?t:{};s=function(t,e,n){var r,o=t.constructor;switch(e){case ct:return Jo(t);case H:case G:return new o(+t);case ut:return function(t,e){var n=e?Jo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case lt:case ft:case pt:case dt:case ht:case mt:case gt:case vt:case bt:return Qo(t,n);case X:return new o;case Z:case rt:return new o(t);case et:return function(t){var e=new t.constructor(t.source,qt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case nt:return new o;case ot:return r=t,fr?ee(fr.call(r)):{}}}(t,m,c)}}a||(a=new kr);var v=a.get(t);if(v)return v;a.set(t,s),Is(t)?t.forEach(function(r){s.add(Mr(r,e,n,r,t,a))}):Rs(t)&&t.forEach(function(r,o){s.set(o,Mr(r,e,n,o,t,a))});var b=f?i:(l?u?Li:Ni:u?ic:oc)(t);return We(b||t,function(r,o){b&&(r=t[o=r]),Sr(s,o,Mr(r,e,n,o,t,a))}),s}function Pr(t,e,n){var r=n.length;if(null==t)return!r;for(t=ee(t);r--;){var o=n[r],a=e[o],s=t[o];if(s===i&&!(o in t)||!a(s))return!1}return!0}function jr(t,e,n){if("function"!=typeof t)throw new oe(c);return oa(function(){t.apply(i,n)},e)}function Ur(t,e,n,r){var o=-1,i=Ze,s=!0,c=t.length,u=[],l=e.length;if(!c)return u;n&&(e=Qe(e,vn(n))),r?(i=Je,s=!1):e.length>=a&&(i=_n,s=!1,e=new Er(e));t:for(;++o-1},_r.prototype.set=function(t,e){var n=this.__data__,r=Rr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},yr.prototype.clear=function(){this.size=0,this.__data__={hash:new br,map:new(Jn||_r),string:new br}},yr.prototype.delete=function(t){var e=ji(this,t).delete(t);return this.size-=e?1:0,e},yr.prototype.get=function(t){return ji(this,t).get(t)},yr.prototype.has=function(t){return ji(this,t).has(t)},yr.prototype.set=function(t,e){var n=ji(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Er.prototype.add=Er.prototype.push=function(t){return this.__data__.set(t,u),this},Er.prototype.has=function(t){return this.__data__.has(t)},kr.prototype.clear=function(){this.__data__=new _r,this.size=0},kr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},kr.prototype.get=function(t){return this.__data__.get(t)},kr.prototype.has=function(t){return this.__data__.has(t)},kr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!Jn||r.length0&&n(s)?e>1?Hr(s,e-1,n,r,o):tn(o,s):r||(o[o.length]=s)}return o}var Gr=ci(),Vr=ci(!0);function Wr(t,e){return t&&Gr(t,e,oc)}function Yr(t,e){return t&&Vr(t,e,oc)}function Kr(t,e){return Xe(e,function(e){return ws(t[e])})}function Xr(t,e){for(var n=0,r=(e=Wo(e,t)).length;null!=t&&ne}function to(t,e){return null!=t&&le.call(t,e)}function eo(t,e){return null!=t&&e in ee(t)}function no(t,e,n){for(var o=n?Je:Ze,a=t[0].length,s=t.length,c=s,u=r(s),l=1/0,f=[];c--;){var p=t[c];c&&e&&(p=Qe(p,vn(e))),l=Vn(p.length,l),u[c]=!n&&(e||a>=120&&p.length>=120)?new Er(c&&p):i}p=t[0];var d=-1,h=u[0];t:for(;++d=s)return c;var u=n[r];return c*("desc"==u?-1:1)}}return t.index-e.index}(t,e,n)})}function _o(t,e,n){for(var r=-1,o=e.length,i={};++r-1;)s!==t&&Me.call(s,c,1),Me.call(t,c,1);return t}function Eo(t,e){for(var n=t?e.length:0,r=n-1;n--;){var o=e[n];if(n==r||o!==i){var i=o;Vi(o)?Me.call(t,o,1):Fo(t,o)}}return t}function ko(t,e){return t+Fn(Kn()*(e-t+1))}function xo(t,e){var n="";if(!t||e<1||e>D)return n;do{e%2&&(n+=t),(e=Fn(e/2))&&(t+=t)}while(e);return n}function wo(t,e){return ia(ta(t,e,Oc),t+"")}function Co(t){return wr(dc(t))}function Ao(t,e){var n=dc(t);return ca(n,Dr(e,0,n.length))}function To(t,e,n,r){if(!Ts(t))return t;for(var o=-1,a=(e=Wo(e,t)).length,s=a-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var a=r(i);++o>>1,a=t[i];null!==a&&!Ms(a)&&(n?a<=e:a=a){var l=e?null:xi(t);if(l)return Rn(l);s=!1,o=_n,u=new Er}else u=e?[]:c;t:for(;++r=r?t:No(t,e,n)}var Xo=Mn||function(t){return Ie.clearTimeout(t)};function Zo(t,e){if(e)return t.slice();var n=t.length,r=Se?Se(n):new t.constructor(n);return t.copy(r),r}function Jo(t){var e=new t.constructor(t.byteLength);return new ke(e).set(new ke(t)),e}function Qo(t,e){var n=e?Jo(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function ti(t,e){if(t!==e){var n=t!==i,r=null===t,o=t==t,a=Ms(t),s=e!==i,c=null===e,u=e==e,l=Ms(e);if(!c&&!l&&!a&&t>e||a&&s&&u&&!c&&!l||r&&s&&u||!n&&u||!o)return 1;if(!r&&!a&&!l&&t1?n[o-1]:i,s=o>2?n[2]:i;for(a=t.length>3&&"function"==typeof a?(o--,a):i,s&&Wi(n[0],n[1],s)&&(a=o<3?i:a,o=1),e=ee(e);++r-1?o[a?e[s]:s]:i}}function di(t){return Oi(function(e){var n=e.length,r=n,o=gr.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new oe(c);if(o&&!s&&"wrapper"==Di(a))var s=new gr([],!0)}for(r=s?r:n;++r1&&y.reverse(),p&&lc))return!1;var l=a.get(t);if(l&&a.get(e))return l==e;var f=-1,p=!0,d=n&g?new Er:i;for(a.set(t,e),a.set(e,t);++f-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(jt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return We($,function(n){var r="_."+n[0];e&n[1]&&!Ze(t,r)&&t.push(r)}),t.sort()}(function(t){var e=t.match(Ut);return e?e[1].split(Ft):[]}(r),n)))}function sa(t){var e=0,n=0;return function(){var r=Wn(),o=O-(r-n);if(n=r,o>0){if(++e>=R)return arguments[0]}else e=0;return t.apply(i,arguments)}}function ca(t,e){var n=-1,r=t.length,o=r-1;for(e=e===i?r:e;++n1?t[e-1]:i;return n="function"==typeof n?(t.pop(),n):i,La(t,n)});function Fa(t){var e=dr(t);return e.__chain__=!0,e}function $a(t,e){return e(t)}var Ba=Oi(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return Ir(e,t)};return!(e>1||this.__actions__.length)&&r instanceof vr&&Vi(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:$a,args:[o],thisArg:i}),new gr(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(i),t})):this.thru(o)});var za=ii(function(t,e,n){le.call(t,n)?++t[n]:Lr(t,n,1)});var qa=pi(ga),Ha=pi(va);function Ga(t,e){return(vs(t)?We:Fr)(t,Pi(e,3))}function Va(t,e){return(vs(t)?Ye:$r)(t,Pi(e,3))}var Wa=ii(function(t,e,n){le.call(t,n)?t[n].push(e):Lr(t,n,[e])});var Ya=wo(function(t,e,n){var o=-1,i="function"==typeof e,a=_s(t)?r(t.length):[];return Fr(t,function(t){a[++o]=i?Ge(e,t,n):ro(t,e,n)}),a}),Ka=ii(function(t,e,n){Lr(t,n,e)});function Xa(t,e){return(vs(t)?Qe:po)(t,Pi(e,3))}var Za=ii(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]});var Ja=wo(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Wi(t,e[0],e[1])?e=[]:n>2&&Wi(e[0],e[1],e[2])&&(e=[e[0]]),bo(t,Hr(e,1),[])}),Qa=Pn||function(){return Ie.Date.now()};function ts(t,e,n){return e=n?i:e,e=t&&null==e?t.length:e,Ci(t,w,i,i,i,i,e)}function es(t,e){var n;if("function"!=typeof e)throw new oe(c);return t=Bs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=i),n}}var ns=wo(function(t,e,n){var r=v;if(n.length){var o=Sn(n,Mi(ns));r|=k}return Ci(t,r,e,n,o)}),rs=wo(function(t,e,n){var r=v|b;if(n.length){var o=Sn(n,Mi(rs));r|=k}return Ci(e,r,t,n,o)});function os(t,e,n){var r,o,a,s,u,l,f=0,p=!1,d=!1,h=!0;if("function"!=typeof t)throw new oe(c);function m(e){var n=r,a=o;return r=o=i,f=e,s=t.apply(a,n)}function g(t){var n=t-l;return l===i||n>=e||n<0||d&&t-f>=a}function v(){var t=Qa();if(g(t))return b(t);u=oa(v,function(t){var n=e-(t-l);return d?Vn(n,a-(t-f)):n}(t))}function b(t){return u=i,h&&r?m(t):(r=o=i,s)}function _(){var t=Qa(),n=g(t);if(r=arguments,o=this,l=t,n){if(u===i)return function(t){return f=t,u=oa(v,e),p?m(t):s}(l);if(d)return Xo(u),u=oa(v,e),m(l)}return u===i&&(u=oa(v,e)),s}return e=qs(e)||0,Ts(n)&&(p=!!n.leading,a=(d="maxWait"in n)?Gn(qs(n.maxWait)||0,e):a,h="trailing"in n?!!n.trailing:h),_.cancel=function(){u!==i&&Xo(u),f=0,r=l=o=u=i},_.flush=function(){return u===i?s:b(Qa())},_}var is=wo(function(t,e){return jr(t,1,e)}),as=wo(function(t,e,n){return jr(t,qs(e)||0,n)});function ss(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new oe(c);var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(ss.Cache||yr),n}function cs(t){if("function"!=typeof t)throw new oe(c);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}ss.Cache=yr;var us=Yo(function(t,e){var n=(e=1==e.length&&vs(e[0])?Qe(e[0],vn(Pi())):Qe(Hr(e,1),vn(Pi()))).length;return wo(function(r){for(var o=-1,i=Vn(r.length,n);++o=e}),gs=oo(function(){return arguments}())?oo:function(t){return Ss(t)&&le.call(t,"callee")&&!De.call(t,"callee")},vs=r.isArray,bs=Fe?vn(Fe):function(t){return Ss(t)&&Jr(t)==ct};function _s(t){return null!=t&&As(t.length)&&!ws(t)}function ys(t){return Ss(t)&&_s(t)}var Es=Bn||qc,ks=$e?vn($e):function(t){return Ss(t)&&Jr(t)==G};function xs(t){if(!Ss(t))return!1;var e=Jr(t);return e==W||e==V||"string"==typeof t.message&&"string"==typeof t.name&&!Ns(t)}function ws(t){if(!Ts(t))return!1;var e=Jr(t);return e==Y||e==K||e==q||e==tt}function Cs(t){return"number"==typeof t&&t==Bs(t)}function As(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=D}function Ts(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Ss(t){return null!=t&&"object"==typeof t}var Rs=Be?vn(Be):function(t){return Ss(t)&&zi(t)==X};function Os(t){return"number"==typeof t||Ss(t)&&Jr(t)==Z}function Ns(t){if(!Ss(t)||Jr(t)!=Q)return!1;var e=Ne(t);if(null===e)return!0;var n=le.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ue.call(n)==he}var Ls=ze?vn(ze):function(t){return Ss(t)&&Jr(t)==et};var Is=qe?vn(qe):function(t){return Ss(t)&&zi(t)==nt};function Ds(t){return"string"==typeof t||!vs(t)&&Ss(t)&&Jr(t)==rt}function Ms(t){return"symbol"==typeof t||Ss(t)&&Jr(t)==ot}var Ps=He?vn(He):function(t){return Ss(t)&&As(t.length)&&!!Ae[Jr(t)]};var js=yi(fo),Us=yi(function(t,e){return t<=e});function Fs(t){if(!t)return[];if(_s(t))return Ds(t)?Ln(t):ri(t);if(Ue&&t[Ue])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Ue]());var e=zi(t);return(e==X?An:e==nt?Rn:dc)(t)}function $s(t){return t?(t=qs(t))===I||t===-I?(t<0?-1:1)*M:t==t?t:0:0===t?t:0}function Bs(t){var e=$s(t),n=e%1;return e==e?n?e-n:e:0}function zs(t){return t?Dr(Bs(t),0,j):0}function qs(t){if("number"==typeof t)return t;if(Ms(t))return P;if(Ts(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Ts(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Dt,"");var n=Gt.test(t);return n||Wt.test(t)?Oe(t.slice(2),n?2:8):Ht.test(t)?P:+t}function Hs(t){return oi(t,ic(t))}function Gs(t){return null==t?"":jo(t)}var Vs=ai(function(t,e){if(Zi(e)||_s(e))oi(e,oc(e),t);else for(var n in e)le.call(e,n)&&Sr(t,n,e[n])}),Ws=ai(function(t,e){oi(e,ic(e),t)}),Ys=ai(function(t,e,n,r){oi(e,ic(e),t,r)}),Ks=ai(function(t,e,n,r){oi(e,oc(e),t,r)}),Xs=Oi(Ir);var Zs=wo(function(t,e){t=ee(t);var n=-1,r=e.length,o=r>2?e[2]:i;for(o&&Wi(e[0],e[1],o)&&(r=1);++n1),e}),oi(t,Li(t),n),r&&(n=Mr(n,p|d|h,Si));for(var o=e.length;o--;)Fo(n,e[o]);return n});var uc=Oi(function(t,e){return null==t?{}:function(t,e){return _o(t,e,function(e,n){return tc(t,n)})}(t,e)});function lc(t,e){if(null==t)return{};var n=Qe(Li(t),function(t){return[t]});return e=Pi(e),_o(t,n,function(t,n){return e(t,n[0])})}var fc=wi(oc),pc=wi(ic);function dc(t){return null==t?[]:bn(t,oc(t))}var hc=li(function(t,e,n){return e=e.toLowerCase(),t+(n?mc(e):e)});function mc(t){return xc(Gs(t).toLowerCase())}function gc(t){return(t=Gs(t))&&t.replace(Kt,kn).replace(_e,"")}var vc=li(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),bc=li(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),_c=ui("toLowerCase");var yc=li(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()});var Ec=li(function(t,e,n){return t+(n?" ":"")+xc(e)});var kc=li(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),xc=ui("toUpperCase");function wc(t,e,n){return t=Gs(t),(e=n?i:e)===i?function(t){return xe.test(t)}(t)?function(t){return t.match(Ee)||[]}(t):function(t){return t.match($t)||[]}(t):t.match(e)||[]}var Cc=wo(function(t,e){try{return Ge(t,i,e)}catch(t){return xs(t)?t:new Jt(t)}}),Ac=Oi(function(t,e){return We(e,function(e){e=la(e),Lr(t,e,ns(t[e],t))}),t});function Tc(t){return function(){return t}}var Sc=di(),Rc=di(!0);function Oc(t){return t}function Nc(t){return co("function"==typeof t?t:Mr(t,p))}var Lc=wo(function(t,e){return function(n){return ro(n,t,e)}}),Ic=wo(function(t,e){return function(n){return ro(t,n,e)}});function Dc(t,e,n){var r=oc(e),o=Kr(e,r);null!=n||Ts(e)&&(o.length||!r.length)||(n=e,e=t,t=this,o=Kr(e,oc(e)));var i=!(Ts(n)&&"chain"in n&&!n.chain),a=ws(t);return We(o,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),o=n.__actions__=ri(this.__actions__);return o.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,tn([this.value()],arguments))})}),t}function Mc(){}var Pc=vi(Qe),jc=vi(Ke),Uc=vi(rn);function Fc(t){return Yi(t)?pn(la(t)):function(t){return function(e){return Xr(e,t)}}(t)}var $c=_i(),Bc=_i(!0);function zc(){return[]}function qc(){return!1}var Hc=gi(function(t,e){return t+e},0),Gc=ki("ceil"),Vc=gi(function(t,e){return t/e},1),Wc=ki("floor");var Yc,Kc=gi(function(t,e){return t*e},1),Xc=ki("round"),Zc=gi(function(t,e){return t-e},0);return dr.after=function(t,e){if("function"!=typeof e)throw new oe(c);return t=Bs(t),function(){if(--t<1)return e.apply(this,arguments)}},dr.ary=ts,dr.assign=Vs,dr.assignIn=Ws,dr.assignInWith=Ys,dr.assignWith=Ks,dr.at=Xs,dr.before=es,dr.bind=ns,dr.bindAll=Ac,dr.bindKey=rs,dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return vs(t)?t:[t]},dr.chain=Fa,dr.chunk=function(t,e,n){e=(n?Wi(t,e,n):e===i)?1:Gn(Bs(e),0);var o=null==t?0:t.length;if(!o||e<1)return[];for(var a=0,s=0,c=r(Un(o/e));ao?0:o+n),(r=r===i||r>o?o:Bs(r))<0&&(r+=o),r=n>r?0:zs(r);n>>0)?(t=Gs(t))&&("string"==typeof e||null!=e&&!Ls(e))&&!(e=jo(e))&&Cn(t)?Ko(Ln(t),0,n):t.split(e,n):[]},dr.spread=function(t,e){if("function"!=typeof t)throw new oe(c);return e=null==e?0:Gn(Bs(e),0),wo(function(n){var r=n[e],o=Ko(n,0,e);return r&&tn(o,r),Ge(t,this,o)})},dr.tail=function(t){var e=null==t?0:t.length;return e?No(t,1,e):[]},dr.take=function(t,e,n){return t&&t.length?No(t,0,(e=n||e===i?1:Bs(e))<0?0:e):[]},dr.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?No(t,(e=r-(e=n||e===i?1:Bs(e)))<0?0:e,r):[]},dr.takeRightWhile=function(t,e){return t&&t.length?Bo(t,Pi(e,3),!1,!0):[]},dr.takeWhile=function(t,e){return t&&t.length?Bo(t,Pi(e,3)):[]},dr.tap=function(t,e){return e(t),t},dr.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new oe(c);return Ts(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),os(t,e,{leading:r,maxWait:e,trailing:o})},dr.thru=$a,dr.toArray=Fs,dr.toPairs=fc,dr.toPairsIn=pc,dr.toPath=function(t){return vs(t)?Qe(t,la):Ms(t)?[t]:ri(ua(Gs(t)))},dr.toPlainObject=Hs,dr.transform=function(t,e,n){var r=vs(t),o=r||Es(t)||Ps(t);if(e=Pi(e,4),null==n){var i=t&&t.constructor;n=o?r?new i:[]:Ts(t)&&ws(i)?hr(Ne(t)):{}}return(o?We:Wr)(t,function(t,r,o){return e(n,t,r,o)}),n},dr.unary=function(t){return ts(t,1)},dr.union=Sa,dr.unionBy=Ra,dr.unionWith=Oa,dr.uniq=function(t){return t&&t.length?Uo(t):[]},dr.uniqBy=function(t,e){return t&&t.length?Uo(t,Pi(e,2)):[]},dr.uniqWith=function(t,e){return e="function"==typeof e?e:i,t&&t.length?Uo(t,i,e):[]},dr.unset=function(t,e){return null==t||Fo(t,e)},dr.unzip=Na,dr.unzipWith=La,dr.update=function(t,e,n){return null==t?t:$o(t,e,Vo(n))},dr.updateWith=function(t,e,n,r){return r="function"==typeof r?r:i,null==t?t:$o(t,e,Vo(n),r)},dr.values=dc,dr.valuesIn=function(t){return null==t?[]:bn(t,ic(t))},dr.without=Ia,dr.words=wc,dr.wrap=function(t,e){return ls(Vo(e),t)},dr.xor=Da,dr.xorBy=Ma,dr.xorWith=Pa,dr.zip=ja,dr.zipObject=function(t,e){return Ho(t||[],e||[],Sr)},dr.zipObjectDeep=function(t,e){return Ho(t||[],e||[],To)},dr.zipWith=Ua,dr.entries=fc,dr.entriesIn=pc,dr.extend=Ws,dr.extendWith=Ys,Dc(dr,dr),dr.add=Hc,dr.attempt=Cc,dr.camelCase=hc,dr.capitalize=mc,dr.ceil=Gc,dr.clamp=function(t,e,n){return n===i&&(n=e,e=i),n!==i&&(n=(n=qs(n))==n?n:0),e!==i&&(e=(e=qs(e))==e?e:0),Dr(qs(t),e,n)},dr.clone=function(t){return Mr(t,h)},dr.cloneDeep=function(t){return Mr(t,p|h)},dr.cloneDeepWith=function(t,e){return Mr(t,p|h,e="function"==typeof e?e:i)},dr.cloneWith=function(t,e){return Mr(t,h,e="function"==typeof e?e:i)},dr.conformsTo=function(t,e){return null==e||Pr(t,e,oc(e))},dr.deburr=gc,dr.defaultTo=function(t,e){return null==t||t!=t?e:t},dr.divide=Vc,dr.endsWith=function(t,e,n){t=Gs(t),e=jo(e);var r=t.length,o=n=n===i?r:Dr(Bs(n),0,r);return(n-=e.length)>=0&&t.slice(n,o)==e},dr.eq=ds,dr.escape=function(t){return(t=Gs(t))&&Ct.test(t)?t.replace(xt,xn):t},dr.escapeRegExp=function(t){return(t=Gs(t))&&It.test(t)?t.replace(Lt,"\\$&"):t},dr.every=function(t,e,n){var r=vs(t)?Ke:Br;return n&&Wi(t,e,n)&&(e=i),r(t,Pi(e,3))},dr.find=qa,dr.findIndex=ga,dr.findKey=function(t,e){return an(t,Pi(e,3),Wr)},dr.findLast=Ha,dr.findLastIndex=va,dr.findLastKey=function(t,e){return an(t,Pi(e,3),Yr)},dr.floor=Wc,dr.forEach=Ga,dr.forEachRight=Va,dr.forIn=function(t,e){return null==t?t:Gr(t,Pi(e,3),ic)},dr.forInRight=function(t,e){return null==t?t:Vr(t,Pi(e,3),ic)},dr.forOwn=function(t,e){return t&&Wr(t,Pi(e,3))},dr.forOwnRight=function(t,e){return t&&Yr(t,Pi(e,3))},dr.get=Qs,dr.gt=hs,dr.gte=ms,dr.has=function(t,e){return null!=t&&qi(t,e,to)},dr.hasIn=tc,dr.head=_a,dr.identity=Oc,dr.includes=function(t,e,n,r){t=_s(t)?t:dc(t),n=n&&!r?Bs(n):0;var o=t.length;return n<0&&(n=Gn(o+n,0)),Ds(t)?n<=o&&t.indexOf(e,n)>-1:!!o&&cn(t,e,n)>-1},dr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=null==n?0:Bs(n);return o<0&&(o=Gn(r+o,0)),cn(t,e,o)},dr.inRange=function(t,e,n){return e=$s(e),n===i?(n=e,e=0):n=$s(n),function(t,e,n){return t>=Vn(e,n)&&t=-D&&t<=D},dr.isSet=Is,dr.isString=Ds,dr.isSymbol=Ms,dr.isTypedArray=Ps,dr.isUndefined=function(t){return t===i},dr.isWeakMap=function(t){return Ss(t)&&zi(t)==at},dr.isWeakSet=function(t){return Ss(t)&&Jr(t)==st},dr.join=function(t,e){return null==t?"":qn.call(t,e)},dr.kebabCase=vc,dr.last=xa,dr.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=Bs(n))<0?Gn(r+o,0):Vn(o,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):sn(t,ln,o,!0)},dr.lowerCase=bc,dr.lowerFirst=_c,dr.lt=js,dr.lte=Us,dr.max=function(t){return t&&t.length?zr(t,Oc,Qr):i},dr.maxBy=function(t,e){return t&&t.length?zr(t,Pi(e,2),Qr):i},dr.mean=function(t){return fn(t,Oc)},dr.meanBy=function(t,e){return fn(t,Pi(e,2))},dr.min=function(t){return t&&t.length?zr(t,Oc,fo):i},dr.minBy=function(t,e){return t&&t.length?zr(t,Pi(e,2),fo):i},dr.stubArray=zc,dr.stubFalse=qc,dr.stubObject=function(){return{}},dr.stubString=function(){return""},dr.stubTrue=function(){return!0},dr.multiply=Kc,dr.nth=function(t,e){return t&&t.length?vo(t,Bs(e)):i},dr.noConflict=function(){return Ie._===this&&(Ie._=me),this},dr.noop=Mc,dr.now=Qa,dr.pad=function(t,e,n){t=Gs(t);var r=(e=Bs(e))?Nn(t):0;if(!e||r>=e)return t;var o=(e-r)/2;return bi(Fn(o),n)+t+bi(Un(o),n)},dr.padEnd=function(t,e,n){t=Gs(t);var r=(e=Bs(e))?Nn(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var o=Kn();return Vn(t+o*(e-t+Re("1e-"+((o+"").length-1))),e)}return ko(t,e)},dr.reduce=function(t,e,n){var r=vs(t)?en:hn,o=arguments.length<3;return r(t,Pi(e,4),n,o,Fr)},dr.reduceRight=function(t,e,n){var r=vs(t)?nn:hn,o=arguments.length<3;return r(t,Pi(e,4),n,o,$r)},dr.repeat=function(t,e,n){return e=(n?Wi(t,e,n):e===i)?1:Bs(e),xo(Gs(t),e)},dr.replace=function(){var t=arguments,e=Gs(t[0]);return t.length<3?e:e.replace(t[1],t[2])},dr.result=function(t,e,n){var r=-1,o=(e=Wo(e,t)).length;for(o||(o=1,t=i);++rD)return[];var n=j,r=Vn(t,j);e=Pi(e),t-=j;for(var o=gn(r,e);++n=a)return t;var c=n-Nn(r);if(c<1)return r;var u=s?Ko(s,0,c).join(""):t.slice(0,c);if(o===i)return u+r;if(s&&(c+=u.length-c),Ls(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=ne(o.source,Gs(qt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===i?c:p)}}else if(t.indexOf(jo(o),c)!=c){var d=u.lastIndexOf(o);d>-1&&(u=u.slice(0,d))}return u+r},dr.unescape=function(t){return(t=Gs(t))&&wt.test(t)?t.replace(kt,In):t},dr.uniqueId=function(t){var e=++fe;return Gs(t)+e},dr.upperCase=kc,dr.upperFirst=xc,dr.each=Ga,dr.eachRight=Va,dr.first=_a,Dc(dr,(Yc={},Wr(dr,function(t,e){le.call(dr.prototype,e)||(Yc[e]=t)}),Yc),{chain:!1}),dr.VERSION="4.17.15",We(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){dr[t].placeholder=dr}),We(["drop","take"],function(t,e){vr.prototype[t]=function(n){n=n===i?1:Gn(Bs(n),0);var r=this.__filtered__&&!e?new vr(this):this.clone();return r.__filtered__?r.__takeCount__=Vn(n,r.__takeCount__):r.__views__.push({size:Vn(n,j),type:t+(r.__dir__<0?"Right":"")}),r},vr.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),We(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==N||3==n;vr.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Pi(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),We(["head","last"],function(t,e){var n="take"+(e?"Right":"");vr.prototype[t]=function(){return this[n](1).value()[0]}}),We(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");vr.prototype[t]=function(){return this.__filtered__?new vr(this):this[n](1)}}),vr.prototype.compact=function(){return this.filter(Oc)},vr.prototype.find=function(t){return this.filter(t).head()},vr.prototype.findLast=function(t){return this.reverse().find(t)},vr.prototype.invokeMap=wo(function(t,e){return"function"==typeof t?new vr(this):this.map(function(n){return ro(n,t,e)})}),vr.prototype.reject=function(t){return this.filter(cs(Pi(t)))},vr.prototype.slice=function(t,e){t=Bs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new vr(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==i&&(n=(e=Bs(e))<0?n.dropRight(-e):n.take(e-t)),n)},vr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},vr.prototype.toArray=function(){return this.take(j)},Wr(vr.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),o=dr[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);o&&(dr.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,c=e instanceof vr,u=s[0],l=c||vs(e),f=function(t){var e=o.apply(dr,tn([t],s));return r&&p?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,d=!!this.__actions__.length,h=a&&!p,m=c&&!d;if(!a&&l){e=m?e:new vr(this);var g=t.apply(e,s);return g.__actions__.push({func:$a,args:[f],thisArg:i}),new gr(g,p)}return h&&m?t.apply(this,s):(g=this.thru(f),h?r?g.value()[0]:g.value():g)})}),We(["pop","push","shift","sort","splice","unshift"],function(t){var e=ie[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);dr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(vs(o)?o:[],t)}return this[n](function(n){return e.apply(vs(n)?n:[],t)})}}),Wr(vr.prototype,function(t,e){var n=dr[e];if(n){var r=n.name+"";le.call(or,r)||(or[r]=[]),or[r].push({name:e,func:n})}}),or[hi(i,b).name]=[{name:"wrapper",func:i}],vr.prototype.clone=function(){var t=new vr(this.__wrapped__);return t.__actions__=ri(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=ri(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=ri(this.__views__),t},vr.prototype.reverse=function(){if(this.__filtered__){var t=new vr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},vr.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=vs(t),r=e<0,o=n?t.length:0,i=function(t,e,n){for(var r=-1,o=n.length;++r=this.__values__.length;return{done:t,value:t?i:this.__values__[this.__index__++]}},dr.prototype.plant=function(t){for(var e,n=this;n instanceof mr;){var r=pa(n);r.__index__=0,r.__values__=i,e?o.__wrapped__=r:e=r;var o=r;n=n.__wrapped__}return o.__wrapped__=t,e},dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof vr){var e=t;return this.__actions__.length&&(e=new vr(this)),(e=e.reverse()).__actions__.push({func:$a,args:[Ta],thisArg:i}),new gr(e,this.__chain__)}return this.thru(Ta)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return zo(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,Ue&&(dr.prototype[Ue]=function(){return this}),dr}();Ie._=Dn,(o=function(){return Dn}.call(e,n,e,r))===i||(r.exports=o)}).call(this)}).call(this,n(11),n(21)(t))},function(t,e,n){!function(t){"object"==typeof window&&window||"object"==typeof self&&self;(function(t){var e,n=[],r=Object.keys,o={},i={},a=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,c=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,u="",l={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function f(t){return t.replace(/&/g,"&").replace(//g,">")}function p(t){return t.nodeName.toLowerCase()}function d(t,e){var n=t&&t.exec(e);return n&&0===n.index}function h(t){return a.test(t)}function m(t){var e,n={},r=Array.prototype.slice.call(arguments,1);for(e in t)n[e]=t[e];return r.forEach(function(t){for(e in t)n[e]=t[e]}),n}function g(t){var e=[];return function t(n,r){for(var o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(e.push({event:"start",offset:r,node:o}),r=t(o,r),p(o).match(/br|hr|img|input/)||e.push({event:"stop",offset:r,node:o}));return r}(t,0),e}function v(t){if(e&&!t.langApiRestored){for(var n in t.langApiRestored=!0,e)t[n]&&(t[e[n]]=t[n]);(t.contains||[]).concat(t.variants||[]).forEach(v)}}function b(t){function e(t){return t&&t.source||t}function n(n,r){return new RegExp(e(n),"m"+(t.case_insensitive?"i":"")+(r?"g":""))}!function o(i,a){if(i.compiled)return;i.compiled=!0;i.keywords=i.keywords||i.beginKeywords;if(i.keywords){var s={},c=function(e,n){t.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(t){var n=t.split("|");s[n[0]]=[e,n[1]?Number(n[1]):1]})};"string"==typeof i.keywords?c("keyword",i.keywords):r(i.keywords).forEach(function(t){c(t,i.keywords[t])}),i.keywords=s}i.lexemesRe=n(i.lexemes||/\w+/,!0);a&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=e(i.end)||"",i.endsWithParent&&a.terminator_end&&(i.terminator_end+=(i.end?"|":"")+a.terminator_end));i.illegal&&(i.illegalRe=n(i.illegal));null==i.relevance&&(i.relevance=1);i.contains||(i.contains=[]);i.contains=Array.prototype.concat.apply([],i.contains.map(function(t){return function(t){t.variants&&!t.cached_variants&&(t.cached_variants=t.variants.map(function(e){return m(t,{variants:null},e)}));return t.cached_variants||t.endsWithParent&&[m(t)]||[t]}("self"===t?i:t)}));i.contains.forEach(function(t){o(t,i)});i.starts&&o(i.starts,a);var u=i.contains.map(function(t){return t.beginKeywords?"\\.?(?:"+t.begin+")\\.?":t.begin}).concat([i.terminator_end,i.illegal]).map(e).filter(Boolean);i.terminators=u.length?n(function(t,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,o=0,i="",a=0;a0&&(i+=n);c.length>0;){var u=r.exec(c);if(null==u){i+=c;break}i+=c.substring(0,u.index),c=c.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?i+="\\"+String(Number(u[1])+s):(i+=u[0],"("==u[0]&&o++)}}return i}(u,"|"),!0):{exec:function(){return null}}}(t)}function _(t,e,n,r){function i(t){return new RegExp(t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function a(t,e){var n=m.case_insensitive?e[0].toLowerCase():e[0];return t.keywords.hasOwnProperty(n)&&t.keywords[n]}function s(t,e,n,r){var o=r?"":l.classPrefix,i='',t?i+e+a:e}function c(){k+=null!=v.subLanguage?function(){var t="string"==typeof v.subLanguage;if(t&&!o[v.subLanguage])return f(x);var e=t?_(v.subLanguage,x,!0,E[v.subLanguage]):y(x,v.subLanguage.length?v.subLanguage:void 0);v.relevance>0&&(C+=e.relevance);t&&(E[v.subLanguage]=e.top);return s(e.language,e.value,!1,!0)}():function(){var t,e,n,r;if(!v.keywords)return f(x);r="",e=0,v.lexemesRe.lastIndex=0,n=v.lexemesRe.exec(x);for(;n;)r+=f(x.substring(e,n.index)),(t=a(v,n))?(C+=t[1],r+=s(t[0],f(n[0]))):r+=f(n[0]),e=v.lexemesRe.lastIndex,n=v.lexemesRe.exec(x);return r+f(x.substr(e))}(),x=""}function p(t){k+=t.className?s(t.className,"",!0):"",v=Object.create(t,{parent:{value:v}})}function h(t,e){if(x+=t,null==e)return c(),0;var r=function(t,e){var n,r;for(n=0,r=e.contains.length;n")+'"');return x+=e,e.length||1}var m=w(t);if(!m)throw new Error('Unknown language: "'+t+'"');b(m);var g,v=r||m,E={},k="";for(g=v;g!==m;g=g.parent)g.className&&(k=s(g.className,"",!0)+k);var x="",C=0;try{for(var A,T,S=0;v.terminators.lastIndex=S,A=v.terminators.exec(e);)T=h(e.substring(S,A.index),A[0]),S=A.index+T;for(h(e.substr(S)),g=v;g.parent;g=g.parent)g.className&&(k+=u);return{relevance:C,value:k,language:t,top:v}}catch(t){if(t.message&&-1!==t.message.indexOf("Illegal"))return{relevance:0,value:f(e)};throw t}}function y(t,e){e=e||l.languages||r(o);var n={relevance:0,value:f(t)},i=n;return e.filter(w).filter(C).forEach(function(e){var r=_(e,t,!1);r.language=e,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)}),i.language&&(n.second_best=i),n}function E(t){return l.tabReplace||l.useBR?t.replace(c,function(t,e){return l.useBR&&"\n"===t?"
":l.tabReplace?e.replace(/\t/g,l.tabReplace):""}):t}function k(t){var e,r,o,a,c,u=function(t){var e,n,r,o,i=t.className+" ";if(i+=t.parentNode?t.parentNode.className:"",n=s.exec(i))return w(n[1])?n[1]:"no-highlight";for(i=i.split(/\s+/),e=0,r=i.length;e/g,"\n"):e=t,c=e.textContent,o=u?_(u,c,!0):y(c),(r=g(e)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=o.value,o.value=function(t,e,r){var o=0,i="",a=[];function s(){return t.length&&e.length?t[0].offset!==e[0].offset?t[0].offset"}function u(t){i+=""}function l(t){("start"===t.event?c:u)(t.node)}for(;t.length||e.length;){var d=s();if(i+=f(r.substring(o,d[0].offset)),o=d[0].offset,d===t){a.reverse().forEach(u);do{l(d.splice(0,1)[0]),d=s()}while(d===t&&d.length&&d[0].offset===o);a.reverse().forEach(c)}else"start"===d[0].event?a.push(d[0].node):a.pop(),l(d.splice(0,1)[0])}return i+f(r.substr(o))}(r,g(a),c)),o.value=E(o.value),t.innerHTML=o.value,t.className=function(t,e,n){var r=e?i[e]:n,o=[t.trim()];t.match(/\bhljs\b/)||o.push("hljs");-1===t.indexOf(r)&&o.push(r);return o.join(" ").trim()}(t.className,u,o.language),t.result={language:o.language,re:o.relevance},o.second_best&&(t.second_best={language:o.second_best.language,re:o.second_best.relevance}))}function x(){if(!x.called){x.called=!0;var t=document.querySelectorAll("pre code");n.forEach.call(t,k)}}function w(t){return t=(t||"").toLowerCase(),o[t]||o[i[t]]}function C(t){var e=w(t);return e&&!e.disableAutodetect}t.highlight=_,t.highlightAuto=y,t.fixMarkup=E,t.highlightBlock=k,t.configure=function(t){l=m(l,t)},t.initHighlighting=x,t.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",x,!1),addEventListener("load",x,!1)},t.registerLanguage=function(e,n){var r=o[e]=n(t);v(r),r.aliases&&r.aliases.forEach(function(t){i[t]=e})},t.listLanguages=function(){return r(o)},t.getLanguage=w,t.autoDetection=C,t.inherit=m,t.IDENT_RE="[a-zA-Z]\\w*",t.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",t.NUMBER_RE="\\b\\d+(\\.\\d+)?",t.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",t.BINARY_NUMBER_RE="\\b(0b[01]+)",t.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",t.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},t.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},t.COMMENT=function(e,n,r){var o=t.inherit({className:"comment",begin:e,end:n,contains:[]},r||{});return o.contains.push(t.PHRASAL_WORDS_MODE),o.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),o},t.C_LINE_COMMENT_MODE=t.COMMENT("//","$"),t.C_BLOCK_COMMENT_MODE=t.COMMENT("/\\*","\\*/"),t.HASH_COMMENT_MODE=t.COMMENT("#","$"),t.NUMBER_MODE={className:"number",begin:t.NUMBER_RE,relevance:0},t.C_NUMBER_MODE={className:"number",begin:t.C_NUMBER_RE,relevance:0},t.BINARY_NUMBER_MODE={className:"number",begin:t.BINARY_NUMBER_RE,relevance:0},t.CSS_NUMBER_MODE={className:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},t.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[t.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[t.BACKSLASH_ESCAPE]}]},t.TITLE_MODE={className:"title",begin:t.IDENT_RE,relevance:0},t.UNDERSCORE_TITLE_MODE={className:"title",begin:t.UNDERSCORE_IDENT_RE,relevance:0},t.METHOD_GUARD={begin:"\\.\\s*"+t.UNDERSCORE_IDENT_RE,relevance:0}})(e)}()},function(t,e,n){"use strict";t.exports=n(102)},function(t,e,n){"use strict";t.exports.encode=n(103),t.exports.decode=n(104),t.exports.format=n(105),t.exports.parse=n(106)},function(t,e){t.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},function(t,e){t.exports=/[\0-\x1F\x7F-\x9F]/},function(t,e){t.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},function(t,e,n){"use strict";var r="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",o="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",i=new RegExp("^(?:"+r+"|"+o+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|]*>|)"),a=new RegExp("^(?:"+r+"|"+o+")");t.exports.HTML_TAG_RE=i,t.exports.HTML_OPEN_CLOSE_TAG_RE=a},function(t,e,n){"use strict";t.exports.tokenize=function(t,e){var n,r,o,i,a=t.pos,s=t.src.charCodeAt(a);if(e)return!1;if(126!==s)return!1;if(o=(r=t.scanDelims(t.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(t.push("text","",0).content=i,o--),n=0;n=0;e--)95!==(n=s[e]).marker&&42!==n.marker||-1!==n.end&&(r=s[n.end],a=e>0&&s[e-1].end===n.end+1&&s[e-1].token===n.token-1&&s[n.end+1].token===r.token+1&&s[e-1].marker===n.marker,i=String.fromCharCode(n.marker),(o=t.tokens[n.token]).type=a?"strong_open":"em_open",o.tag=a?"strong":"em",o.nesting=1,o.markup=a?i+i:i,o.content="",(o=t.tokens[r.token]).type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?i+i:i,o.content="",a&&(t.tokens[s[e-1].token].content="",t.tokens[s[n.end+1].token].content="",e--))}},function(t,e,n){(function(t,r){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){e&&e.nodeType,t&&t.nodeType;var a="object"==typeof r&&r;a.global!==a&&a.window!==a&&a.self;var s,c=2147483647,u=36,l=1,f=26,p=38,d=700,h=72,m=128,g="-",v=/^xn--/,b=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=u-l,k=Math.floor,x=String.fromCharCode;function w(t){throw new RangeError(y[t])}function C(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function A(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),r+C((t=t.replace(_,".")).split("."),e).join(".")}function T(t){for(var e,n,r=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=x((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=x(t)}).join("")}function R(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function O(t,e,n){var r=0;for(t=n?k(t/d):t>>1,t+=k(t/e);t>E*f>>1;r+=u)t=k(t/E);return k(r+(E+1)*t/(t+p))}function N(t){var e,n,r,o,i,a,s,p,d,v,b,_=[],y=t.length,E=0,x=m,C=h;for((n=t.lastIndexOf(g))<0&&(n=0),r=0;r=128&&w("not-basic"),_.push(t.charCodeAt(r));for(o=n>0?n+1:0;o=y&&w("invalid-input"),((p=(b=t.charCodeAt(o++))-48<10?b-22:b-65<26?b-65:b-97<26?b-97:u)>=u||p>k((c-E)/a))&&w("overflow"),E+=p*a,!(p<(d=s<=C?l:s>=C+f?f:s-C));s+=u)a>k(c/(v=u-d))&&w("overflow"),a*=v;C=O(E-i,e=_.length+1,0==i),k(E/e)>c-x&&w("overflow"),x+=k(E/e),E%=e,_.splice(E++,0,x)}return S(_)}function L(t){var e,n,r,o,i,a,s,p,d,v,b,_,y,E,C,A=[];for(_=(t=T(t)).length,e=m,n=0,i=h,a=0;a<_;++a)(b=t[a])<128&&A.push(x(b));for(r=o=A.length,o&&A.push(g);r<_;){for(s=c,a=0;a<_;++a)(b=t[a])>=e&&bk((c-n)/(y=r+1))&&w("overflow"),n+=(s-e)*y,e=s,a=0;a<_;++a)if((b=t[a])c&&w("overflow"),b==e){for(p=n,d=u;!(p<(v=d<=i?l:d>=i+f?f:d-i));d+=u)C=p-v,E=u-v,A.push(x(R(v+C%E,0))),p=k(C/E);A.push(x(R(p,0))),i=O(n,y,r==o),n=0,++r}++n,++e}return A.join("")}s={version:"1.4.1",ucs2:{decode:T,encode:S},decode:N,encode:L,toASCII:function(t){return A(t,function(t){return b.test(t)?"xn--"+L(t):t})},toUnicode:function(t){return A(t,function(t){return v.test(t)?N(t.slice(4).toLowerCase()):t})}},void 0===(o=function(){return s}.call(e,n,e,t))||(t.exports=o)}()}).call(this,n(21)(t),n(11))},function(t,e,n){"use strict";t.exports=function(t,e){!0===e&&(e=0);var n=t.indexOf("://"),r=t.substring(0,n).split("+").filter(Boolean);return"number"==typeof e?r[e]:r}},function(t,e,n){"use strict";var r=n(64);t.exports=function t(e){if(Array.isArray(e))return-1!==e.indexOf("ssh")||-1!==e.indexOf("rsync");if("string"!=typeof e)return!1;var n=r(e);return e=e.substring(e.indexOf("://")+3),!!t(n)||e.indexOf("@")=o?t:r(t,e,n)}},function(t,e){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return n.test(t)}},function(t,e,n){var r=n(173),o=n(68),i=n(174);t.exports=function(t){return o(t)?i(t):r(t)}},function(t,e,n){var r=n(22),o=n(175),i=n(9),a=n(23),s=1/0,c=r?r.prototype:void 0,u=c?c.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return o(e,t)+"";if(a(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-s?"-0":n}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(11))},function(t,e,n){var r=n(182),o=n(183),i=n(184);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e,n){var r=n(17),o=n(19),i="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",c="[object Proxy]";t.exports=function(t){if(!o(t))return!1;var e=r(t);return e==a||e==s||e==i||e==c}},function(t,e,n){var r=n(75),o=n(196),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return o(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},function(t,e,n){var r=n(198),o=n(44),i=n(203),a=n(78),s=n(204),c=n(17),u=n(77),l=u(r),f=u(o),p=u(i),d=u(a),h=u(s),m=c;(r&&"[object DataView]"!=m(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=m(new o)||i&&"[object Promise]"!=m(i.resolve())||a&&"[object Set]"!=m(new a)||s&&"[object WeakMap]"!=m(new s))&&(m=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case l:return"[object DataView]";case f:return"[object Map]";case p:return"[object Promise]";case d:return"[object Set]";case h:return"[object WeakMap]"}return e}),t.exports=m},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(12)(n(8),"Set");t.exports=r},function(t,e,n){var r=n(48),o=n(233),i=n(234);function a(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++ep))return!1;var h=l.get(t);if(h&&l.get(e))return h==e;var m=-1,g=!0,v=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++m>>24)|4278255360&(n[d]<<24|n[d]>>>8);n[c>>>5]|=128<>>9<<4)]=c;var h=s._ff,m=s._gg,g=s._hh,v=s._ii;for(d=0;d>>0,l=l+_>>>0,f=f+y>>>0,p=p+E>>>0}return r.endian([u,l,f,p])})._ff=function(t,e,n,r,o,i,a){var s=t+(e&n|~e&r)+(o>>>0)+a;return(s<>>32-i)+e},s._gg=function(t,e,n,r,o,i,a){var s=t+(e&r|n&~r)+(o>>>0)+a;return(s<>>32-i)+e},s._hh=function(t,e,n,r,o,i,a){var s=t+(e^n^r)+(o>>>0)+a;return(s<>>32-i)+e},s._ii=function(t,e,n,r,o,i,a){var s=t+(n^(e|~r))+(o>>>0)+a;return(s<>>32-i)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error("Illegal argument "+t);var n=r.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?a.bytesToString(n):r.bytesToHex(n)}},function(t,e,n){var r=n(94);"string"==typeof r&&(r=[[t.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(96)(r,o);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(95)(!1)).push([t.i,'@charset \'UTF-8\';\n\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type="button"],\n[type="reset"],\n[type="submit"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type="button"]::-moz-focus-inner,\n[type="reset"]::-moz-focus-inner,\n[type="submit"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type="button"]:-moz-focusring,\n[type="reset"]:-moz-focusring,\n[type="submit"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type="checkbox"],\n[type="radio"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type="number"]::-webkit-inner-spin-button,\n[type="number"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type="search"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type="search"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\n/*\n * Add the correct display in all browsers.\n */\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * 1. Prevent padding and border from affecting element width\n * https://goo.gl/pYtbK7\n * 2. Change the default font family in all browsers (opinionated)\n */\n\nhtml {\n box-sizing: border-box; /* 1 */\n font-family: sans-serif; /* 2 */\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\n\ndl,\ndd,\nh2,\nh3,\nh5,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background: transparent;\n padding: 0;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the system font stack as a sane default.\n * 2. Use Tailwind\'s default "normal" line-height so the user isn\'t forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it\'s border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n*::before,\n*::after {\n border-width: 0;\n border-style: solid;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\ntextarea {\n resize: vertical;\n}\n\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.5;\n}\n\ninput::-moz-placeholder,\ntextarea::-moz-placeholder {\n color: inherit;\n opacity: 0.5;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n color: inherit;\n opacity: 0.5;\n}\n\ninput::-ms-input-placeholder,\ntextarea::-ms-input-placeholder {\n color: inherit;\n opacity: 0.5;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n color: inherit;\n opacity: 0.5;\n}\n\nbutton,\n[role="button"] {\n cursor: pointer;\n}\n\n\nh2,\nh3,\nh5 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don\'t inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured \'mono\' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * \'mono\' font family.\n */\n\npre,\ncode {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that\'s\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\n\nsvg,\ncanvas {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\n:root {\n --white: rgb(255, 255, 255);\n --blue-400: rgb(122, 122, 255);\n --green-100: rgb(227, 255, 242);\n --green-300: rgb(148, 242, 200);\n --green-400: rgb(114, 224, 175);\n --green-500: rgb(34, 212, 146);\n --purple-100: rgb(251, 245, 255);\n --purple-200: rgb(236, 211, 253);\n --purple-300: rgb(214, 188, 250);\n --purple-400: rgb(183, 148, 244);\n --purple-500: rgb(121, 0, 245);\n --purple-600: rgb(113, 7, 220);\n --purple-800: rgb(79, 15, 143);\n --red-100: rgb(255, 235, 243);\n --red-300: rgb(250, 133, 162);\n --red-400: rgb(250, 78, 121);\n --yellow-100: rgb(255, 253, 235);\n --yellow-200: rgb(255, 248, 196);\n --yellow-300: rgb(255, 243, 148);\n --yellow-400: rgb(255, 234, 79);\n --tint-50: rgba(0, 0, 150, 0.015);\n --tint-100: rgba(0, 0, 150, 0.025);\n --tint-200: rgba(0, 0, 100, 0.07);\n --tint-300: rgba(25, 0, 100, 0.1);\n --tint-400: rgba(20, 0, 100, 0.2);\n --tint-500: rgba(30, 20, 90, 0.35);\n --tint-600: rgba(30, 20, 70, 0.5);\n --tint-700: rgba(15, 10, 60, 0.75);\n --gray-50: rgb(252, 252, 253);\n --gray-100: rgb(247, 247, 252);\n --gray-200: rgb(238, 238, 245);\n --gray-300: rgb(232, 229, 239);\n --gray-400: rgb(209, 204, 224);\n --gray-500: rgb(176, 173, 197);\n --gray-600: rgb(142, 137, 162);\n --gray-700: rgb(75, 71, 109);\n --gray-800: rgb(51, 47, 81);\n /* dark theme */\n --dark-white: rgb(38, 38, 50);\n --dark-blue-400: rgb(85, 0, 255);\n --dark-green-100: rgb(32, 97, 90);\n --dark-green-300: rgb(55, 111, 123);\n --dark-green-500: rgb(63, 152, 142);\n --dark-purple-100: rgb(60, 46, 96);\n --dark-purple-200: rgb(81, 50, 128);\n --dark-purple-300: rgb(104, 85, 147);\n --dark-purple-400: rgb(106, 87, 148);\n --dark-purple-500: rgb(126, 107, 167);\n --dark-purple-600: rgb(145, 127, 183);\n --dark-purple-800: rgb(158, 140, 194);\n --dark-red-100: rgb(255, 235, 243);\n --dark-red-300: rgb(250, 133, 162);\n --dark-red-400: rgb(250, 78, 121);\n --dark-yellow-100: rgb(61, 57, 49);\n --dark-yellow-200: rgb(90, 78, 53);\n --dark-yellow-300: rgb(119, 103, 70);\n --dark-yellow-400: rgb(145, 121, 90);\n --dark-tint-50: rgba(240, 240, 245, 0.05);\n --dark-tint-100: rgba(240, 240, 245, 0.075);\n --dark-tint-200: rgba(240, 240, 245, 0.1);\n --dark-tint-300: rgba(240, 240, 245, 0.125);\n --dark-tint-400: rgba(240, 240, 245, 0.25);\n --dark-tint-500: rgba(240, 240, 245, 0.45);\n --dark-tint-600: rgba(240, 240, 245, 0.55);\n --dark-tint-700: rgba(240, 240, 245, 0.65);\n --dark-gray-0: rgb(30, 30, 40);\n --dark-gray-50: rgb(38, 38, 50);\n --dark-gray-100: rgb(48, 48, 58);\n --dark-gray-200: rgb(51, 51, 65);\n --dark-gray-300: rgb(75, 75, 85);\n --dark-gray-400: rgb(142, 142, 160);\n --dark-gray-500: rgb(152, 152, 170);\n --dark-gray-600: rgb(165, 165, 175);\n --dark-gray-700: rgb(216, 216, 223);\n --dark-gray-800: rgb(230, 230, 235);\n --dark-shadow-sm: \'0 2px 0 var(--gray-0)\';\n --dark-shadow-default: \'0 2px 0 var(--gray-50), 2px 4px 0 var(--gray-0)\';\n --dark-shadow-lg: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50), 4px 6px 0 var(--gray-0)\';\n --dark-shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n}\n\nhtml {\n box-sizing: border-box;\n font-size: 14px;\n background-color: rgb(238, 238, 245);\n background-color: var(--gray-200);\n overflow-x: hidden;\n overflow-y: scroll;\n}\n\n@media (min-width: 1024px) {\n html {\n font-size: 16px;\n }\n}\n\n/* Exclude iframes like 1Password save modals */\n\n*:not(iframe),\n*:after,\n*:before {\n position: relative;\n}\n\n*:focus {\n outline: 0 !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n line-height: 1.5;\n width: 100%;\n}\n\n/* Dark theme */\n\n@media (prefers-color-scheme: dark) {\n html.theme-auto {\n --white: var(--dark-white);\n --blue-400: var(--dark-blue-400);\n --green-100: var(--dark-green-100);\n --green-300: var(--dark-green-300);\n --green-400: var(--dark-green-400);\n --green-500: var(--dark-green-500);\n --purple-100: var(--dark-purple-100);\n --purple-200: var(--dark-purple-200);\n --purple-300: var(--dark-purple-300);\n --purple-400: var(--dark-purple-400);\n --purple-500: var(--dark-purple-500);\n --purple-600: var(--dark-purple-600);\n --purple-800: var(--dark-purple-800);\n --red-100: var(--dark-red-100);\n --red-300: var(--dark-red-300);\n --red-400: var(--dark-red-400);\n --yellow-100: var(--dark-yellow-100);\n --yellow-200: var(--dark-yellow-200);\n --yellow-300: var(--dark-yellow-300);\n --yellow-400: var(--dark-yellow-400);\n --tint-50: var(--dark-tint-50);\n --tint-100: var(--dark-tint-100);\n --tint-200: var(--dark-tint-200);\n --tint-300: var(--dark-tint-300);\n --tint-400: var(--dark-tint-400);\n --tint-500: var(--dark-tint-500);\n --tint-600: var(--dark-tint-600);\n --tint-700: var(--dark-tint-700);\n --gray-0: var(--dark-gray-0);\n --gray-50: var(--dark-gray-50);\n --gray-100: var(--dark-gray-100);\n --gray-200: var(--dark-gray-200);\n --gray-300: var(--dark-gray-300);\n --gray-400: var(--dark-gray-400);\n --gray-500: var(--dark-gray-500);\n --gray-600: var(--dark-gray-600);\n --gray-700: var(--dark-gray-700);\n --gray-800: var(--dark-gray-800);\n --shadow-sm: \'0 2px 0 var(--gray-50)\';\n --shadow-default: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50)\';\n --shadow-lg: \'0 2px 0 var(--gray-200), 2px 4px 0 var(--gray-100), 4px 6px 0 var(--gray-50)\';\n --shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n }\n\n html.theme-auto {\n background-color: rgb(30, 30, 40);\n background-color: var(--dark-gray-0);\n }\n\n html.theme-auto .checkbox:before {\n background-color: rgb(51, 47, 81);\n background-color: var(--gray-800);\n }\n\n html.theme-auto .tab-nav,\n html.theme-auto .dropdown {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n }\n}\n\nhtml.theme-dark {\n --white: var(--dark-white);\n --blue-400: var(--dark-blue-400);\n --green-100: var(--dark-green-100);\n --green-300: var(--dark-green-300);\n --green-400: var(--dark-green-400);\n --green-500: var(--dark-green-500);\n --purple-100: var(--dark-purple-100);\n --purple-200: var(--dark-purple-200);\n --purple-300: var(--dark-purple-300);\n --purple-400: var(--dark-purple-400);\n --purple-500: var(--dark-purple-500);\n --purple-600: var(--dark-purple-600);\n --purple-800: var(--dark-purple-800);\n --red-100: var(--dark-red-100);\n --red-300: var(--dark-red-300);\n --red-400: var(--dark-red-400);\n --yellow-100: var(--dark-yellow-100);\n --yellow-200: var(--dark-yellow-200);\n --yellow-300: var(--dark-yellow-300);\n --yellow-400: var(--dark-yellow-400);\n --tint-50: var(--dark-tint-50);\n --tint-100: var(--dark-tint-100);\n --tint-200: var(--dark-tint-200);\n --tint-300: var(--dark-tint-300);\n --tint-400: var(--dark-tint-400);\n --tint-500: var(--dark-tint-500);\n --tint-600: var(--dark-tint-600);\n --tint-700: var(--dark-tint-700);\n --gray-0: var(--dark-gray-0);\n --gray-50: var(--dark-gray-50);\n --gray-100: var(--dark-gray-100);\n --gray-200: var(--dark-gray-200);\n --gray-300: var(--dark-gray-300);\n --gray-400: var(--dark-gray-400);\n --gray-500: var(--dark-gray-500);\n --gray-600: var(--dark-gray-600);\n --gray-700: var(--dark-gray-700);\n --gray-800: var(--dark-gray-800);\n --shadow-sm: \'0 2px 0 var(--gray-50)\';\n --shadow-default: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50)\';\n --shadow-lg: \'0 2px 0 var(--gray-200), 2px 4px 0 var(--gray-100), 4px 6px 0 var(--gray-50)\';\n --shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n}\n\nhtml.theme-dark {\n background-color: rgb(30, 30, 40);\n background-color: var(--dark-gray-0);\n}\n\nhtml.theme-dark .checkbox:before {\n background-color: rgb(51, 47, 81);\n background-color: var(--gray-800);\n}\n\nhtml.theme-dark .tab-nav,\nhtml.theme-dark .dropdown {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n}\n\n.alert {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n border-width: 0;\n border-left-width: 2px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n}\n\n.alert-warning {\n background-color: rgb(255, 253, 235);\n background-color: var(--yellow-100);\n border-color: rgb(255, 234, 79);\n border-color: var(--yellow-400);\n}\n\n.alert-empty {\n color: rgba(30, 20, 90, 0.35);\n color: var(--tint-500);\n padding-top: 2rem;\n padding-bottom: 2rem;\n text-align: center;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n padding-left: 1rem;\n padding-right: 1rem;\n min-height: 2.5rem;\n border-width: 0;\n background-color: rgb(121, 0, 245);\n background-color: var(--purple-500);\n overflow: hidden;\n border-radius: 0.125rem;\n color: rgb(255, 255, 255);\n color: var(--white);\n line-height: 1;\n text-decoration: none;\n}\n\n.button:after {\n content: \'\';\n display: block;\n position: absolute;\n left: 100%;\n bottom: 0;\n width: 200%;\n height: 100vh;\n background-color: rgba(30, 20, 90, 0.35);\n background-color: var(--tint-500);\n transform: translateX(-1rem) skewX(-65deg);\n transform-origin: 0% 100%;\n transition: transform 0.75s ease-out;\n}\n\n.button:hover:after {\n transform: translateX(-1.5rem) skewX(-65deg);\n transition-duration: 0.3s;\n}\n\n.button:not(:disabled):active:after {\n transition-delay: 0.2s;\n transition-duration: 0.3s;\n transform: translateX(-100%) skewX(-65deg);\n}\n\n.button-secondary {\n display: inline-flex;\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n padding-left: 1rem;\n padding-right: 1rem;\n min-height: 2.5rem;\n border-width: 0;\n background-color: rgb(121, 0, 245);\n background-color: var(--purple-500);\n overflow: hidden;\n border-radius: 0.125rem;\n color: rgb(255, 255, 255);\n color: var(--white);\n line-height: 1;\n text-decoration: none;\n background-color: rgba(0, 0, 100, 0.07);\n background-color: var(--tint-200);\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n}\n\n.button-secondary:hover {\n background-color: rgba(25, 0, 100, 0.1);\n background-color: var(--tint-300);\n}\n\n.button-secondary:not(:disabled):active {\n background-color: rgba(30, 20, 90, 0.35);\n background-color: var(--tint-500);\n opacity: 0.5;\n}\n\n.button:focus,\n.button-secondary:focus {\n outline: 0;\n}\n\n.button:disabled,\n.button-secondary:disabled {\n cursor: not-allowed;\n opacity: 0.25;\n}\n\n.button-sm {\n font-size: 0.875rem;\n}\n\n.button.button-sm,\n.button-secondary.button-sm {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n min-height: 1.5rem;\n border-radius: 0.125rem;\n}\n\n.button-lg {\n font-size: 1.125rem;\n}\n\n.button.button-lg,\n.button-secondary.button-lg {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n min-height: 3rem;\n}\n\n.button-lg.button:after {\n transform: translateX(-2rem) skewX(-65deg);\n}\n\n.button-lg.button:hover:after {\n transform: translateX(-3rem) skewX(-65deg);\n}\n\n.card {\n position: relative;\n display: grid;\n align-items: stretch;\n border-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n box-shadow: var(--shadow-sm);\n border-radius: 0.125rem;\n}\n\n.card-details {\n overflow: hidden;\n}\n\n.card-details-overflow {\n display: grid;\n grid-gap: 1rem;\n padding: 1.5rem;\n overflow-x: auto;\n}\n\n@media (min-width: 768px) {\n .card {\n grid-template-columns: 16rem 1fr;\n }\n\n .card-has-header {\n grid-template-rows: auto 1fr;\n }\n\n .card.card-no-props {\n display: block;\n }\n\n .card-header {\n grid-column-end: span 2;\n }\n\n .card-details-overflow {\n padding: 2rem;\n }\n}\n\n.checkbox-label {\n display: grid;\n justify-content: flex-start;\n grid-template-columns: auto;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n min-height: 0;\n cursor: pointer;\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n}\n\n.checkbox {\n width: 1.5em;\n height: 1.5em;\n border-style: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.checkbox:before {\n position: absolute;\n width: 1.5em;\n height: 1.5em;\n border-width: 1px;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n background-color: rgb(252, 252, 253);\n background-color: var(--gray-50);\n box-shadow: var(--shadow-default);\n border-radius: 0.125rem;\n overflow: hidden;\n content: \'\';\n}\n\n.checkbox:after {\n position: absolute;\n top: 50%;\n left: 50%;\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n font-size: 1.2em;\n font-weight: 900;\n line-height: 1;\n content: \'✓\';\n transition: transform 0.1s;\n transform: translate(-50%, -50%) scale(0);\n}\n\n.checkbox:focus,\n.checkbox:hover {\n outline: 0;\n}\n\n.checkbox:focus:before {\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.checkbox:hover:before {\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n}\n\n.checkbox:checked:after {\n transform: translate(-50%, -50%) scale(1);\n}\n\n.checkbox:disabled {\n opacity: 0.5;\n}\n\n.code {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.code-inline {\n display: inline-block;\n margin-top: -0.25rem;\n margin-bottom: -0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n word-break: break-all;\n}\n\n.code-block {\n display: block;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-radius: 0.125rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.code-inline pre,\n.code-block pre {\n white-space: pre-wrap;\n}\n\n.definition-list {\n display: grid;\n grid-column-gap: 1.5rem;\n grid-row-gap: 0.5rem;\n}\n\n.definition-list .definition-list {\n border-left-width: 2px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n padding-left: 1rem;\n}\n\n@media (min-width: 640px) {\n .definition-list {\n grid-template-columns: 8rem 1fr;\n }\n\n .definition-list .definition-list {\n grid-template-columns: auto 1fr;\n }\n}\n\n@media (min-width: 1024px) {\n .definition-list {\n grid-template-columns: 14rem 1fr;\n }\n}\n\n.definition-list-title {\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .definition-list-title {\n margin-left: 9.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n .definition-list-title {\n margin-left: 15.5rem;\n }\n}\n\n.definition-label {\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n word-wrap: break-word;\n line-height: 1.25;\n}\n\n@media (min-width: 640px) {\n .definition-label {\n text-align: right;\n }\n}\n\n.definition-value {\n word-break: break-all;\n margin-bottom: 1rem;\n line-height: 1.25;\n}\n\n@media (min-width: 640px) {\n .definition-value {\n margin-bottom: 0;\n }\n}\n\n.definition-label:empty:after,\n.definition-value:empty:after {\n content: \'—\';\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n}\n\n.definition-list-empty {\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n}\n\n@media (min-width: 640px) {\n .definition-list-empty {\n grid-column-start: 2;\n }\n\n .definition-list .definition-list .definition-list-empty {\n grid-column-start: 1;\n }\n}\n\n.dropdown {\n position: absolute;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n overflow-y: auto;\n max-height: \'66vh\';\n border-width: 1px;\n border-top-width: 0;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n color: rgb(255, 255, 255);\n color: var(--white);\n background-color: rgb(75, 71, 109);\n background-color: var(--gray-700);\n}\n\n.layout-col {\n max-width: 80rem;\n padding-left: 1rem;\n padding-right: 1rem;\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 640px) {\n .layout-col {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n }\n}\n\n.link {\n text-decoration: underline;\n -webkit-text-decoration-color: rgb(209, 204, 224);\n text-decoration-color: rgb(209, 204, 224);\n -webkit-text-decoration-color: var(--gray-400);\n text-decoration-color: var(--gray-400);\n}\n\n.link:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n -webkit-text-decoration-color: rgb(214, 188, 250);\n text-decoration-color: rgb(214, 188, 250);\n -webkit-text-decoration-color: var(--purple-300);\n text-decoration-color: var(--purple-300);\n}\n\n.links a {\n text-decoration: underline;\n -webkit-text-decoration-color: rgb(209, 204, 224);\n text-decoration-color: rgb(209, 204, 224);\n -webkit-text-decoration-color: var(--gray-400);\n text-decoration-color: var(--gray-400);\n}\n\n.links a:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n -webkit-text-decoration-color: rgb(214, 188, 250);\n text-decoration-color: rgb(214, 188, 250);\n -webkit-text-decoration-color: var(--purple-300);\n text-decoration-color: var(--purple-300);\n}\n\n.link-dimmed {\n font-weight: 400;\n text-decoration: underline;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.link-dimmed:hover {\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.link-solution {\n text-decoration: underline;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.link-solution:hover {\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.grid {\n display: grid;\n}\n\n.cols-2 {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.cols-auto {\n grid-template-columns: auto;\n grid-auto-flow: column;\n}\n\n.cols-auto-1fr {\n grid-template-columns: auto 1fr;\n}\n\n.gap-1 {\n grid-gap: 0.25rem;\n}\n\n.gap-2 {\n grid-gap: 0.5rem;\n}\n\n.gapy-2 {\n grid-row-gap: 0.5rem;\n}\n\n.gap-4 {\n grid-gap: 1rem;\n}\n\n.gapx-4 {\n grid-column-gap: 1rem;\n}\n\n.gapx-6 {\n grid-column-gap: 1.5rem;\n}\n\n.span-2 {\n grid-column-end: span 2;\n}\n\n.place-center {\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n}\n\n.icon {\n fill: currentColor;\n height: 1em;\n line-height: 1;\n width: 1em;\n display: inline-block;\n vertical-align: baseline;\n vertical-align: initial;\n}\n\n.scrollbar::-webkit-scrollbar,\n.scrollbar::-webkit-scrollbar-corner {\n width: 4px;\n height: 4px;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.scrollbar::-webkit-scrollbar-track:horizontal,\n.scrollbar-lg::-webkit-scrollbar-track:horizontal {\n border-top: solid 1px rgba(0, 0, 0, 0.1);\n}\n\n.scrollbar::-webkit-scrollbar-track:vertical,\n.scrollbar-lg::-webkit-scrollbar-track:vertical {\n border-left: solid 1px rgba(0, 0, 0, 0.1);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n border-radius: 2px;\n}\n\n.scrollbar-lg::-webkit-scrollbar,\n.scrollbar-lg::-webkit-scrollbar-corner {\n width: 8px;\n height: 8px;\n}\n\n.scrollbar-lg::-webkit-scrollbar-track {\n background-color: rgb(252, 252, 253);\n background-color: var(--gray-50);\n}\n\n.scrollbar-lg::-webkit-scrollbar-thumb {\n background-color: rgb(142, 137, 162);\n background-color: var(--gray-600);\n border-radius: 4px;\n}\n\n:root {\n --stack-height: var(--tab-main-height);\n}\n\n.stack {\n display: grid;\n grid-template: calc(0.4 * calc(100vh - 3rem)) calc(0.6 * calc(100vh - 3rem)) / 1fr;\n grid-template: calc(0.4 * var(--stack-height)) calc(0.6 * var(--stack-height)) / 1fr;\n}\n\n@media (min-width: 640px) {\n .stack {\n align-items: stretch;\n grid-template: calc(100vh - 3rem) / 22rem 1fr;\n grid-template: var(--stack-height) / 22rem 1fr;\n }\n}\n\n.stack-nav {\n height: 100%;\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n border-bottom-width: 1px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n font-size: 0.75rem;\n overflow: hidden;\n display: grid;\n grid-template: 1fr / 100%;\n}\n\n@media (min-width: 640px) {\n .stack-nav {\n display: grid;\n grid-template: auto 1fr / 100%;\n border-bottom-width: 0;\n border-right-width: 1px;\n }\n}\n\n.stack-nav-actions {\n display: none;\n}\n\n@media (min-width: 640px) {\n .stack-nav-actions {\n display: grid;\n align-items: center;\n justify-content: space-between;\n grid-template-columns: auto;\n grid-auto-flow: column;\n padding-top: 1rem;\n padding-bottom: 1rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n }\n}\n\n.stack-nav-arrows {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n justify-content: center;\n align-items: center;\n grid-gap: 0.25rem;\n width: 2.5rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.stack-nav-arrow {\n color: rgb(176, 173, 197);\n color: var(--gray-500);\n font-size: 0.75rem;\n}\n\n.stack-nav-arrow:hover {\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.stack-frames {\n overflow: hidden;\n border-top-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n}\n\n.stack-frames-scroll {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.stack-frame-group {\n border-bottom-width: 1px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.stack-frame {\n display: grid;\n align-items: flex-end;\n grid-template-columns: 2rem auto auto;\n}\n\n@media (min-width: 640px) {\n .stack-frame {\n grid-template-columns: 3rem 1fr auto;\n }\n}\n\n.stack-frame:not(:first-child) {\n margin-top: -0.5rem;\n}\n\n.stack-frame-selected,\n.stack-frame-selected .stack-frame-header {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n z-index: 10;\n}\n\n.stack-frame-group-vendor .stack-frame-selected,\n.stack-frame-group-vendor .stack-frame-selected .stack-frame-header {\n /* @apply bg-gray-100; */\n}\n\n.stack-frame-number {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n -webkit-font-feature-settings: "tnum";\n font-feature-settings: "tnum";\n font-variant-numeric: tabular-nums;\n text-align: center;\n}\n\n.stack-frame-group-vendor .stack-frame-number {\n color: rgba(30, 20, 90, 0.35);\n color: var(--tint-500);\n}\n\n.stack-frame-header {\n margin-right: -2.5rem;\n width: 100%;\n}\n\n.stack-frame-text {\n display: grid;\n align-items: center;\n grid-gap: 0.5rem;\n border-left-width: 2px;\n padding-left: 0.75rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n border-color: rgb(214, 188, 250);\n border-color: var(--purple-300);\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.stack-frame-group-vendor .stack-frame-text {\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n}\n\n.stack-frame-selected .stack-frame-text {\n border-color: rgb(121, 0, 245);\n border-color: var(--purple-500);\n}\n\n.stack-frame-group-vendor .stack-frame-selected .stack-frame-text {\n border-color: rgb(176, 173, 197);\n border-color: var(--gray-500);\n}\n\n.stack-frame-line {\n padding-left: 0.5rem;\n padding-right: 0.25rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n text-align: right;\n line-height: 1.25;\n}\n\n.stack-main {\n display: grid;\n height: 100%;\n overflow: hidden;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n grid-template: auto 1fr / 100%;\n}\n\n.stack-main-header {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-bottom-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n font-size: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .stack-main-header {\n padding-top: 1rem;\n padding-bottom: 1rem;\n font-size: 1rem;\n }\n}\n\n.stack-main-content {\n overflow: hidden;\n}\n\n.stack-viewer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n overflow: auto;\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n font-size: 0.75rem;\n}\n\n.stack-ruler {\n position: -webkit-sticky;\n position: sticky;\n flex: none;\n left: 0;\n z-index: 20;\n}\n\n.stack-lines {\n min-height: 100%;\n border-right-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n padding-top: 1rem;\n padding-bottom: 1rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stack-line {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n line-height: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stack-line-highlight {\n background-color: rgb(236, 211, 253);\n background-color: var(--purple-200);\n}\n\n.stack-line-selected {\n background-color: rgb(255, 248, 196);\n background-color: var(--yellow-200);\n}\n\n.stack-line-highlight.stack-line-selected {\n background-color: rgb(255, 243, 148);\n background-color: var(--yellow-300);\n}\n\n.stack-code {\n flex-grow: 1;\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.stack-code-line {\n padding-left: 1.5rem;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n line-height: 2;\n}\n\n.stack-code-line:hover {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n}\n\n.stack-code-line .editor-link {\n display: inline-block;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n opacity: 0;\n color: rgb(183, 148, 244);\n color: var(--purple-400);\n}\n\n.stack-code-line .editor-link:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n}\n\n.stack-code-line:hover .editor-link {\n opacity: 1;\n}\n\n.stack-code-line-highlight {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n}\n\n.stack-code-line-selected {\n background-color: rgb(255, 253, 235);\n background-color: var(--yellow-100);\n}\n\n.stack-code-line-highlight.stack-code-line-selected {\n background-color: rgb(255, 248, 196);\n background-color: var(--yellow-200);\n}\n\n.solution-hiding {\n pointer-events: none;\n}\n\n.solution-hidden {\n height: 0;\n overflow: hidden;\n}\n\n.solution-hidden .solution-main,\n.solution-hiding .solution-main {\n transform: translateY(-25px) scaleY(0.95);\n opacity: 0;\n}\n\n.solution-main {\n z-index: 1;\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n opacity: 1;\n transition: all 0.1s;\n}\n\n.solution-toggle {\n position: absolute;\n z-index: 10;\n top: 0.5rem;\n right: 10px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.75rem;\n line-height: 1;\n cursor: pointer;\n}\n\n.solution-toggle-show {\n top: 0;\n background-color: rgb(148, 242, 200);\n background-color: var(--green-300);\n box-shadow: var(--shadow-sm);\n border-bottom-right-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n z-index: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 9px 100%, 0 calc(100% - 5px));\n -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 9px 100%, 0 calc(100% - 5px));\n}\n\n.solution-toggle-show a {\n text-decoration: none;\n}\n\n.solution-background {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n top: -6px;\n margin: 0 10px;\n background-color: rgb(148, 242, 200);\n background-color: var(--green-300);\n box-shadow: var(--shadow-default);\n border-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n overflow: hidden;\n border-bottom-right-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n}\n\n.solution-title {\n font-weight: 600;\n font-size: 1.5rem;\n line-height: 1.25;\n margin-bottom: 1rem;\n}\n\n.solution-content {\n max-width: 56rem;\n}\n\n@media (min-width: 768px) {\n .solution-content {\n margin-left: 15rem;\n }\n}\n\n.solution code {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n display: inline-block;\n margin-top: -0.25rem;\n margin-bottom: -0.25rem;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgba(0, 0, 150, 0.025);\n background-color: var(--tint-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n word-break: break-all;\n line-height: 1.25;\n}\n\n:root {\n --tab-main-height: calc(100vh - 3rem);\n}\n\n.tabs {\n z-index: 10;\n}\n\n.tab-main {\n z-index: 1;\n border-left-width: 1px;\n border-right-width: 1px;\n border-bottom-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n min-height: calc(100vh - 3rem);\n min-height: var(--tab-main-height);\n}\n\n.tab-content {\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n font-size: 0.875rem;\n min-height: calc(100vh - 3rem);\n min-height: var(--tab-main-height);\n}\n\n.tab-content-section {\n padding-top: 2rem;\n padding-bottom: 2rem;\n border-top-width: 2px;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n}\n\n.tab-content-section:first-child {\n border-top-width: 0;\n}\n\n.tab-nav {\n position: sticky;\n position: -webkit-sticky;\n display: grid;\n justify-content: center;\n grid-template-columns: auto;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n top: 0;\n width: 100%;\n z-index: 10;\n background-color: rgb(75, 71, 109);\n background-color: var(--gray-700);\n padding: 0.25rem;\n box-shadow: var(--shadow-default);\n border-top-left-radius: 0.125rem;\n border-top-right-radius: 0.125rem;\n font-size: 0.75rem;\n}\n\n.tab-bar {\n display: grid;\n grid-template-columns: auto;\n grid-auto-flow: column;\n justify-content: flex-start;\n grid-gap: 0.25rem;\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.tab-bar::-webkit-scrollbar {\n height: 2px;\n}\n\n@media (min-width: 640px) {\n .tab-bar {\n justify-content: center;\n }\n}\n\n.tab {\n padding-left: 1rem;\n padding-right: 1rem;\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n white-space: nowrap;\n border-radius: 0.125rem;\n height: 2.5rem;\n font-size: 0.875rem;\n}\n\n.tab-delimiter {\n border-left-width: 1px;\n border-color: rgb(142, 137, 162);\n border-color: var(--gray-600);\n}\n\n.tab:hover {\n background-color: rgba(20, 0, 100, 0.2);\n background-color: var(--tint-400);\n color: rgb(255, 255, 255);\n color: var(--white);\n}\n\n.tab-active,\n.tab-active:hover {\n background-color: rgba(30, 20, 70, 0.5);\n background-color: var(--tint-600);\n color: rgb(255, 255, 255);\n color: var(--white);\n}\n\n.ui-url {\n display: inline-block;\n line-height: 1.25;\n font-size: 0.875rem;\n font-weight: 400;\n text-decoration: underline;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.ui-url:hover {\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.ui-path {\n display: inline-block;\n line-height: 1.25;\n}\n\n.ui-exception-message {\n font-weight: 600;\n line-height: 1.25;\n word-wrap: break-word;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 5;\n overflow: hidden;\n}\n\n.ui-exception-message-full {\n -webkit-line-clamp: unset;\n}\n\n.ui-exception-class {\n display: inline-block;\n line-height: 1.25;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n}\n\n.ui-line-number {\n display: inline-block;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgba(0, 0, 150, 0.015);\n background-color: var(--tint-50);\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n font-size: 0.75rem;\n line-height: 1.25;\n}\n\n.dark .hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n color: #abb2bf;\n background: #282c34;\n}\n\n.dark .hljs-comment,\n.dark .hljs-quote {\n color: #5c6370;\n font-style: italic;\n}\n\n.dark .hljs-doctag,\n.dark .hljs-keyword,\n.dark .hljs-formula {\n color: #c678dd;\n}\n\n.dark .hljs-section,\n.dark .hljs-name,\n.dark .hljs-selector-tag,\n.dark .hljs-deletion,\n.dark .hljs-subst {\n color: #e06c75;\n}\n\n.dark .hljs-literal {\n color: #56b6c2;\n}\n\n.dark .hljs-string,\n.dark .hljs-regexp,\n.dark .hljs-addition,\n.dark .hljs-attribute,\n.dark .hljs-meta-string {\n color: #98c379;\n}\n\n.dark .hljs-built_in,\n.dark .hljs-class .dark .hljs-title {\n color: #e6c07b;\n}\n\n.dark .hljs-attr,\n.dark .hljs-variable,\n.dark .hljs-template-variable,\n.dark .hljs-type,\n.dark .hljs-selector-class,\n.dark .hljs-selector-attr,\n.dark .hljs-selector-pseudo,\n.dark .hljs-number {\n color: #d19a66;\n}\n\n.dark .hljs-symbol,\n.dark .hljs-bullet,\n.dark .hljs-link,\n.dark .hljs-meta,\n.dark .hljs-selector-id,\n.dark .hljs-title {\n color: #61aeee;\n}\n\n.dark .hljs-emphasis {\n font-style: italic;\n}\n\n.dark .hljs-strong {\n font-weight: bold;\n}\n\n.dark .hljs-link {\n text-decoration: underline;\n}\n\n.light .hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n color: #383a42;\n background: #fafafa;\n}\n\n.light .hljs-comment,\n.light .hljs-quote {\n color: #a0a1a7;\n font-style: italic;\n}\n\n.light .hljs-doctag,\n.light .hljs-keyword,\n.light .hljs-formula {\n color: #a626a4;\n}\n\n.light .hljs-section,\n.light .hljs-name,\n.light .hljs-selector-tag,\n.light .hljs-deletion,\n.light .hljs-subst {\n color: #e45649;\n}\n\n.light .hljs-literal {\n color: #0184bb;\n}\n\n.light .hljs-string,\n.light .hljs-regexp,\n.light .hljs-addition,\n.light .hljs-attribute,\n.light .hljs-meta-string {\n color: #50a14f;\n}\n\n.light .hljs-built_in,\n.light .hljs-class .light .hljs-title {\n color: #c18401;\n}\n\n.light .hljs-attr,\n.light .hljs-variable,\n.light .hljs-template-variable,\n.light .hljs-type,\n.light .hljs-selector-class,\n.light .hljs-selector-attr,\n.light .hljs-selector-pseudo,\n.light .hljs-number {\n color: #986801;\n}\n\n.light .hljs-symbol,\n.light .hljs-bullet,\n.light .hljs-link,\n.light .hljs-meta,\n.light .hljs-selector-id,\n.light .hljs-title {\n color: #4078f2;\n}\n\n.light .hljs-emphasis {\n font-style: italic;\n}\n\n.light .hljs-strong {\n font-weight: bold;\n}\n\n.light .hljs-link {\n text-decoration: underline;\n}\n\n/* \n Dumps are hidden asap in errorPage.blade \n What follows is !important\n*/\n\n.tabs pre.sf-dump {\n display: block !important;\n}\n\n.sf-dump-public.sf-dump-highlight,\n.sf-dump-protected.sf-dump-highlight,\n.sf-dump-private.sf-dump-highlight,\n.sf-dump-str.sf-dump-highlight,\n.sf-dump-key.sf-dump-highlight {\n background-color: rgb(251, 245, 255) !important;\n background-color: var(--purple-100) !important;\n border-color: rgb(236, 211, 253) !important;\n border-color: var(--purple-200) !important;\n}\n\n.sf-dump-public.sf-dump-highlight-active,\n.sf-dump-protected.sf-dump-highlight-active,\n.sf-dump-private.sf-dump-highlight-active,\n.sf-dump-str.sf-dump-highlight-active,\n.sf-dump-key.sf-dump-highlight-active {\n background-color: rgb(255, 253, 235) !important;\n background-color: var(--yellow-100) !important;\n border-color: rgb(255, 248, 196) !important;\n border-color: var(--yellow-200) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > * {\n border-color: rgb(232, 229, 239) !important;\n border-color: var(--gray-300) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > input.sf-dump-search-input {\n font-size: 0.75rem !important;\n background-color: rgb(51, 47, 81) !important;\n background-color: var(--gray-800) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next,\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous {\n background-color: rgba(0, 0, 150, 0.025) !important;\n background-color: var(--tint-100) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-count {\n font-size: 0.875rem !important;\n}\n\npre.sf-dump,\npre.sf-dump .sf-dump-default {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;\n background-color: rgb(247, 247, 252) !important;\n background-color: var(--gray-100) !important;\n color: rgb(51, 47, 81) !important;\n color: var(--gray-800) !important;\n}\n\npre.sf-dump .sf-dump-num {\n color: rgb(250, 133, 162) !important;\n color: var(--red-300) !important;\n}\n\npre.sf-dump .sf-dump-const {\n font-weight: 400 !important;\n}\n\npre.sf-dump .sf-dump-str {\n font-weight: 400 !important;\n color: rgb(142, 137, 162) !important;\n color: var(--gray-600) !important;\n}\n\npre.sf-dump .sf-dump-note {\n color: rgb(122, 122, 255) !important;\n color: var(--blue-400) !important;\n}\n\npre.sf-dump .sf-dump-ref {\n color: rgb(142, 137, 162) !important;\n color: var(--gray-600) !important;\n}\n\npre.sf-dump .sf-dump-public,\npre.sf-dump .sf-dump-protected,\npre.sf-dump .sf-dump-private {\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\npre.sf-dump .sf-dump-meta {\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\npre.sf-dump .sf-dump-key {\n color: rgb(113, 7, 220) !important;\n color: var(--purple-600) !important;\n}\n\npre.sf-dump .sf-dump-index {\n color: rgb(122, 122, 255) !important;\n color: var(--blue-400) !important;\n}\n\npre.sf-dump .sf-dump-ellipsis {\n color: rgb(113, 7, 220) !important;\n color: var(--purple-600) !important;\n}\n\n.bg-gray-100{\n background-color: rgb(247, 247, 252) !important;\n background-color: var(--gray-100) !important;\n}\n\n.bg-tint-200{\n background-color: rgba(0, 0, 100, 0.07) !important;\n background-color: var(--tint-200) !important;\n}\n\n.bg-tint-300{\n background-color: rgba(25, 0, 100, 0.1) !important;\n background-color: var(--tint-300) !important;\n}\n\n.bg-tint-600{\n background-color: rgba(30, 20, 70, 0.5) !important;\n background-color: var(--tint-600) !important;\n}\n\n.hover\\:bg-tint-100:hover{\n background-color: rgba(0, 0, 150, 0.025) !important;\n background-color: var(--tint-100) !important;\n}\n\n.hover\\:bg-tint-400:hover{\n background-color: rgba(20, 0, 100, 0.2) !important;\n background-color: var(--tint-400) !important;\n}\n\n.hover\\:bg-tint-700:hover{\n background-color: rgba(15, 10, 60, 0.75) !important;\n background-color: var(--tint-700) !important;\n}\n\n.border-gray-700{\n border-color: rgb(75, 71, 109) !important;\n border-color: var(--gray-700) !important;\n}\n\n.border-tint-200{\n border-color: rgba(0, 0, 100, 0.07) !important;\n border-color: var(--tint-200) !important;\n}\n\n.border-tint-300{\n border-color: rgba(25, 0, 100, 0.1) !important;\n border-color: var(--tint-300) !important;\n}\n\n.rounded-full{\n border-radius: 9999px !important;\n}\n\n.rounded-t{\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.border-none{\n border-style: none !important;\n}\n\n.border-t-2{\n border-top-width: 2px !important;\n}\n\n.border-b{\n border-bottom-width: 1px !important;\n}\n\n.cursor-pointer{\n cursor: pointer !important;\n}\n\n.inline-block{\n display: inline-block !important;\n}\n\n.flex{\n display: flex !important;\n}\n\n.inline-flex{\n display: inline-flex !important;\n}\n\n.hidden{\n display: none !important;\n}\n\n.items-center{\n align-items: center !important;\n}\n\n.items-baseline{\n align-items: baseline !important;\n}\n\n.justify-start{\n justify-content: flex-start !important;\n}\n\n.justify-end{\n justify-content: flex-end !important;\n}\n\n.justify-center{\n justify-content: center !important;\n}\n\n.font-mono{\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;\n}\n\n.font-normal{\n font-weight: 400 !important;\n}\n\n.font-medium{\n font-weight: 500 !important;\n}\n\n.font-semibold{\n font-weight: 600 !important;\n}\n\n.h-5{\n height: 1.25rem !important;\n}\n\n.h-8{\n height: 2rem !important;\n}\n\n.h-full{\n height: 100% !important;\n}\n\n.mx-0{\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.ml-0{\n margin-left: 0 !important;\n}\n\n.mt-1{\n margin-top: 0.25rem !important;\n}\n\n.mr-1{\n margin-right: 0.25rem !important;\n}\n\n.mb-1{\n margin-bottom: 0.25rem !important;\n}\n\n.mt-2{\n margin-top: 0.5rem !important;\n}\n\n.mr-2{\n margin-right: 0.5rem !important;\n}\n\n.mb-2{\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2{\n margin-left: 0.5rem !important;\n}\n\n.mb-3{\n margin-bottom: 0.75rem !important;\n}\n\n.mt-4{\n margin-top: 1rem !important;\n}\n\n.mr-4{\n margin-right: 1rem !important;\n}\n\n.mb-4{\n margin-bottom: 1rem !important;\n}\n\n.ml-6{\n margin-left: 1.5rem !important;\n}\n\n.mt-8{\n margin-top: 2rem !important;\n}\n\n.mt-12{\n margin-top: 3rem !important;\n}\n\n.ml-auto{\n margin-left: auto !important;\n}\n\n.min-h-0{\n min-height: 0 !important;\n}\n\n.min-w-8{\n min-width: 2rem !important;\n}\n\n.opacity-25{\n opacity: 0.25 !important;\n}\n\n.opacity-50{\n opacity: 0.5 !important;\n}\n\n.opacity-75{\n opacity: 0.75 !important;\n}\n\n.overflow-visible{\n overflow: visible !important;\n}\n\n.p-4{\n padding: 1rem !important;\n}\n\n.p-12{\n padding: 3rem !important;\n}\n\n.py-2{\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.px-2{\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.py-4{\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.px-4{\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-6{\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.pt-2{\n padding-top: 0.5rem !important;\n}\n\n.pt-10{\n padding-top: 2.5rem !important;\n}\n\n.pointer-events-none{\n pointer-events: none !important;\n}\n\n.static{\n position: static !important;\n}\n\n.absolute{\n position: absolute !important;\n}\n\n.relative{\n position: relative !important;\n}\n\n.sticky{\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.inset-0{\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n}\n\n.top-0{\n top: 0 !important;\n}\n\n.right-0{\n right: 0 !important;\n}\n\n.bottom-0{\n bottom: 0 !important;\n}\n\n.left-0{\n left: 0 !important;\n}\n\n.top-full{\n top: 100% !important;\n}\n\n.left-full{\n left: 100% !important;\n}\n\n.text-left{\n text-align: left !important;\n}\n\n.text-white{\n color: rgb(255, 255, 255) !important;\n color: var(--white) !important;\n}\n\n.text-green-300{\n color: rgb(148, 242, 200) !important;\n color: var(--green-300) !important;\n}\n\n.text-purple-400{\n color: rgb(183, 148, 244) !important;\n color: var(--purple-400) !important;\n}\n\n.text-purple-800{\n color: rgb(79, 15, 143) !important;\n color: var(--purple-800) !important;\n}\n\n.text-gray-200{\n color: rgb(238, 238, 245) !important;\n color: var(--gray-200) !important;\n}\n\n.text-gray-300{\n color: rgb(232, 229, 239) !important;\n color: var(--gray-300) !important;\n}\n\n.text-gray-400{\n color: rgb(209, 204, 224) !important;\n color: var(--gray-400) !important;\n}\n\n.text-gray-500{\n color: rgb(176, 173, 197) !important;\n color: var(--gray-500) !important;\n}\n\n.text-gray-800{\n color: rgb(51, 47, 81) !important;\n color: var(--gray-800) !important;\n}\n\n.text-tint-600{\n color: rgba(30, 20, 70, 0.5) !important;\n color: var(--tint-600) !important;\n}\n\n.hover\\:text-white:hover{\n color: rgb(255, 255, 255) !important;\n color: var(--white) !important;\n}\n\n.hover\\:text-purple-500:hover{\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\n.text-xs{\n font-size: 0.75rem !important;\n}\n\n.text-sm{\n font-size: 0.875rem !important;\n}\n\n.text-2xl{\n font-size: 1.5rem !important;\n}\n\n.italic{\n font-style: italic !important;\n}\n\n.uppercase{\n text-transform: uppercase !important;\n}\n\n.underline{\n text-decoration: underline !important;\n}\n\n.no-underline{\n text-decoration: none !important;\n}\n\n.tracking-wider{\n letter-spacing: 0.05em !important;\n}\n\n.align-middle{\n vertical-align: middle !important;\n}\n\n.whitespace-no-wrap{\n white-space: nowrap !important;\n}\n\n.w-4{\n width: 1rem !important;\n}\n\n.w-full{\n width: 100% !important;\n}\n\n.z-1{\n z-index: 1 !important;\n}\n\n.z-10{\n z-index: 10 !important;\n}\n\n@media (min-width: 640px){\n\n .sm\\:start-2 {\n grid-column-start: 2;\n }\n\n .sm\\:block{\n display: block !important;\n }\n\n .sm\\:ml-6{\n margin-left: 1.5rem !important;\n }\n}\n\n@media (min-width: 768px){\n\n .md\\:block{\n display: block !important;\n }\n}\n',""])},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var o=(a=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),i=r.sources.map(function(t){return"/*# sourceURL=".concat(r.sourceRoot).concat(t," */")});return[n].concat(i).concat([o]).join("\n")}var a,s,c;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o=0&&l.splice(e,1)}function g(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var r=function(){0;return n.nc}();r&&(t.attrs.nonce=r)}return v(e,t.attrs),h(t,e),e}function v(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function b(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=i}if(e.singleton){var a=u++;n=c||(c=g(e)),r=E.bind(null,n,a,!1),o=E.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",v(e,t.attrs),h(t,e),e}(e),r=function(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=f(r));o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),o=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute("media",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){m(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=d(t,e);return p(n,e),function(t){for(var r=[],o=0;om.maxDepth)&&a(y)}else if(/\bsf-dump-ref\b/.test(g.className)&&(y=g.getAttribute("href"))&&(y=y.substr(1),g.className+=" "+y,/[\[{]$/.test(g.previousSibling.nodeValue))){y=y!=g.nextSibling.id&&t.getElementById(y);try{p=y.nextSibling,g.appendChild(y),p.parentNode.insertBefore(y,p),/^[@#]/.test(g.innerHTML)?g.innerHTML+=" ":(g.innerHTML="",g.className="sf-dump-ref"),g.className+=" sf-dump-toggle"}catch(t){"&"==g.innerHTML.charAt(0)&&(g.innerHTML="…",g.className="sf-dump-ref")}}if(t.evaluate&&Array.from&&l.children.length>1){var C=function(t){var e,n,r=t.current();r&&(!function(t){for(var e,n=[];(t=t.parentNode||{})&&(e=t.previousSibling)&&"A"===e.tagName;)n.push(e);0!==n.length&&n.forEach(function(t){s(t)})}(r),function(t,e,n){u(t),Array.from(n||[]).forEach(function(t){/\bsf-dump-highlight\b/.test(t.className)||(t.className=t.className+" sf-dump-highlight")}),/\bsf-dump-highlight-active\b/.test(e.className)||(e.className=e.className+" sf-dump-highlight-active")}(l,r,t.nodes),"scrollIntoView"in r&&(r.scrollIntoView(!0),e=r.getBoundingClientRect(),n=A.getBoundingClientRect(),e.top0?this.idx-1:this.nodes.length-1,this.current())},isEmpty:function(){return 0===this.count()},current:function(){return this.isEmpty()?null:this.nodes[this.idx]},reset:function(){this.nodes=[],this.idx=0},count:function(){return this.nodes.length}};var A=t.createElement("div");A.className="sf-dump-search-wrapper sf-dump-search-hidden",A.innerHTML='\n \n 0 of 0\n \n \n ',l.insertBefore(A,l.firstChild);var T=new SearchState,S=A.querySelector(".sf-dump-search-input"),R=A.querySelector(".sf-dump-search-count"),O=0,N="";i(S,"keyup",function(e){var n=e.target.value;n!==N&&(N=n,clearTimeout(O),O=setTimeout(function(){if(T.reset(),c(l),u(l),""!==n){for(var e=["sf-dump-str","sf-dump-key","sf-dump-public","sf-dump-protected","sf-dump-private"].map(x).join(" or "),r=t.evaluate(".//span["+e+"][contains(translate(child::text(), "+k(n.toUpperCase())+", "+k(n.toLowerCase())+"), "+k(n.toLowerCase())+")]",l,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);node=r.iterateNext();)T.nodes.push(node);C(T)}else R.textContent="0 of 0"},400))}),Array.from(A.querySelectorAll(".sf-dump-search-input-next, .sf-dump-search-input-previous")).forEach(function(t){i(t,"click",function(t){t.preventDefault(),-1!==t.target.className.indexOf("next")?T.next():T.previous(),S.focus(),c(l),C(T)})}),i(l,"keydown",function(t){var e=!/\bsf-dump-search-hidden\b/.test(A.className);if(114===t.keyCode&&!e||E(t)&&70===t.keyCode){if(70===t.keyCode&&document.activeElement===S)return;t.preventDefault(),A.className=A.className.replace(/\bsf-dump-search-hidden\b/,""),S.focus()}else e&&(27===t.keyCode?(A.className+=" sf-dump-search-hidden",t.preventDefault(),u(l),S.value=""):(E(t)&&71===t.keyCode||13===t.keyCode||114===t.keyCode)&&(t.preventDefault(),t.shiftKey?T.previous():T.next(),c(l),C(T)))})}if(!(0>=m.maxStringLength))try{for(v=(g=l.querySelectorAll(".sf-dump-str")).length,b=0,_=[];b
'+g.innerHTML+'')}catch(t){}}}(document)},function(t,e,n){var r=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(t,e,n,r){var o=e&&e.prototype instanceof m?e:m,i=Object.create(o.prototype),a=new T(r||[]);return i._invoke=function(t,e,n){var r=l;return function(o,i){if(r===p)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw i;return R()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=w(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===l)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var c=u(t,e,n);if("normal"===c.type){if(r=n.done?d:f,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l="suspendedStart",f="suspendedYield",p="executing",d="completed",h={};function m(){}function g(){}function v(){}var b={};b[i]=function(){return this};var _=Object.getPrototypeOf,y=_&&_(_(S([])));y&&y!==n&&r.call(y,i)&&(b=y);var E=v.prototype=m.prototype=Object.create(b);function k(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function x(t){var e;this._invoke=function(n,o){function i(){return new Promise(function(e,i){!function e(n,o,i,a){var s=u(t[n],t,o);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(l).then(function(t){c.value=t,i(c)},function(t){return e("throw",t,i,a)})}a(s.arg)}(n,o,e,i)})}return e=e?e.then(i,i):i()}}function w(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,w(t,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=u(r,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,h;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function S(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function n(){for(;++o=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;A(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:S(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){"use strict";t.exports=n(101)},function(t,e,n){"use strict";var r=n(1),o=n(109),i=n(113),a=n(114),s=n(122),c=n(136),u=n(149),l=n(56),f=n(63),p={default:n(151),zero:n(152),commonmark:n(153)},d=/^(vbscript|javascript|file|data):/,h=/^data:image\/(gif|png|jpeg|webp);/;function m(t){var e=t.trim().toLowerCase();return!d.test(e)||!!h.test(e)}var g=["http:","https:","mailto:"];function v(t){var e=l.parse(t,!0);if(e.hostname&&(!e.protocol||g.indexOf(e.protocol)>=0))try{e.hostname=f.toASCII(e.hostname)}catch(t){}return l.encode(l.format(e))}function b(t){var e=l.parse(t,!0);if(e.hostname&&(!e.protocol||g.indexOf(e.protocol)>=0))try{e.hostname=f.toUnicode(e.hostname)}catch(t){}return l.decode(l.format(e))}function _(t,e){if(!(this instanceof _))return new _(t,e);e||r.isString(t)||(e=t||{},t="default"),this.inline=new c,this.block=new s,this.core=new a,this.renderer=new i,this.linkify=new u,this.validateLink=m,this.normalizeLink=v,this.normalizeLinkText=b,this.utils=r,this.helpers=r.assign({},o),this.options={},this.configure(t),e&&this.set(e)}_.prototype.set=function(t){return r.assign(this.options,t),this},_.prototype.configure=function(t){var e,n=this;if(r.isString(t)&&!(t=p[e=t]))throw new Error('Wrong `markdown-it` preset "'+e+'", check name');if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&n.set(t.options),t.components&&Object.keys(t.components).forEach(function(e){t.components[e].rules&&n[e].ruler.enableOnly(t.components[e].rules),t.components[e].rules2&&n[e].ruler2.enableOnly(t.components[e].rules2)}),this},_.prototype.enable=function(t,e){var n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(e){n=n.concat(this[e].ruler.enable(t,!0))},this),n=n.concat(this.inline.ruler2.enable(t,!0));var r=t.filter(function(t){return n.indexOf(t)<0});if(r.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},_.prototype.disable=function(t,e){var n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(e){n=n.concat(this[e].ruler.disable(t,!0))},this),n=n.concat(this.inline.ruler2.disable(t,!0));var r=t.filter(function(t){return n.indexOf(t)<0});if(r.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},_.prototype.use=function(t){var e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},_.prototype.parse=function(t,e){if("string"!=typeof t)throw new Error("Input data should be a String");var n=new this.core.State(t,this,e);return this.core.process(n),n.tokens},_.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},_.prototype.parseInline=function(t,e){var n=new this.core.State(t,this,e);return n.inlineMode=!0,this.core.process(n),n.tokens},_.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)},t.exports=_},function(t){t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},function(t,e,n){"use strict";var r={};function o(t,e,n){var i,a,s,c,u,l="";for("string"!=typeof e&&(n=e,e=o.defaultChars),void 0===n&&(n=!0),u=function(t){var e,n,o=r[t];if(o)return o;for(o=r[t]=[],e=0;e<128;e++)n=String.fromCharCode(e),/^[0-9a-z]$/i.test(n)?o.push(n):o.push("%"+("0"+e.toString(16).toUpperCase()).slice(-2));for(e=0;e=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1=56320&&c<=57343){l+=encodeURIComponent(t[i]+t[i+1]),i++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(t[i]);return l}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",t.exports=o},function(t,e,n){"use strict";var r={};function o(t,e){var n;return"string"!=typeof e&&(e=o.defaultChars),n=function(t){var e,n,o=r[t];if(o)return o;for(o=r[t]=[],e=0;e<128;e++)n=String.fromCharCode(e),o.push(n);for(e=0;e=55296&&c<=57343?"���":String.fromCharCode(c),e+=6):240==(248&o)&&e+91114111?u+="����":(c-=65536,u+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),e+=9):u+="�";return u})}o.defaultChars=";/?:@&=+$,#",o.componentChars="",t.exports=o},function(t,e,n){"use strict";t.exports=function(t){var e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||""}},function(t,e,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),u=["%","/","?",";","#"].concat(c),l=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},h={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};r.prototype.parse=function(t,e){var n,r,i,s,c,m=t;if(m=m.trim(),!e&&1===t.split("#").length){var g=a.exec(m);if(g)return this.pathname=g[1],g[2]&&(this.search=g[2]),this}var v=o.exec(m);if(v&&(i=(v=v[0]).toLowerCase(),this.protocol=v,m=m.substr(v.length)),(e||v||m.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===m.substr(0,2))||v&&d[v]||(m=m.substr(2),this.slashes=!0)),!d[v]&&(c||v&&!h[v])){var b,_,y=-1;for(n=0;n127?C+="x":C+=w[A];if(!C.match(f)){var S=x.slice(0,n),R=x.slice(n+1),O=w.match(p);O&&(S.push(O[1]),R.unshift(O[2])),R.length&&(m=R.join(".")+m),this.hostname=S.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var N=m.indexOf("#");-1!==N&&(this.hash=m.substr(N),m=m.slice(0,N));var L=m.indexOf("?");return-1!==L&&(this.search=m.substr(L),m=m.slice(0,L)),m&&(this.pathname=m),h[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this},r.prototype.parseHost=function(t){var e=i.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},t.exports=function(t,e){if(t&&t instanceof r)return t;var n=new r;return n.parse(t,e),n}},function(t,e,n){"use strict";e.Any=n(57),e.Cc=n(58),e.Cf=n(108),e.P=n(36),e.Z=n(59)},function(t,e){t.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},function(t,e,n){"use strict";e.parseLinkLabel=n(110),e.parseLinkDestination=n(111),e.parseLinkTitle=n(112)},function(t,e,n){"use strict";t.exports=function(t,e,n){var r,o,i,a,s=-1,c=t.posMax,u=t.pos;for(t.pos=e+1,r=1;t.pos=n)return c;if(34!==(i=t.charCodeAt(e))&&39!==i&&40!==i)return c;for(e++,40===i&&(i=41);e"+i(t[e].content)+""},a.code_block=function(t,e,n,r,o){var a=t[e];return""+i(t[e].content)+"\n"},a.fence=function(t,e,n,r,a){var s,c,u,l,f=t[e],p=f.info?o(f.info).trim():"",d="";return p&&(d=p.split(/\s+/g)[0]),0===(s=n.highlight&&n.highlight(f.content,d)||i(f.content)).indexOf(""+s+"\n"):"
"+s+"
\n"},a.image=function(t,e,n,r,o){var i=t[e];return i.attrs[i.attrIndex("alt")][1]=o.renderInlineAsText(i.children,n,r),o.renderToken(t,e,n)},a.hardbreak=function(t,e,n){return n.xhtmlOut?"
\n":"
\n"},a.softbreak=function(t,e,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(t,e){return i(t[e].content)},a.html_block=function(t,e){return t[e].content},a.html_inline=function(t,e){return t[e].content},s.prototype.renderAttrs=function(t){var e,n,r;if(!t.attrs)return"";for(r="",e=0,n=t.attrs.length;e\n":">")},s.prototype.renderInline=function(t,e,n){for(var r,o="",i=this.rules,a=0,s=t.length;a/i.test(t)}t.exports=function(t){var e,n,i,a,s,c,u,l,f,p,d,h,m,g,v,b,_,y,E=t.tokens;if(t.md.options.linkify)for(n=0,i=E.length;n=0;e--)if("link_close"!==(c=a[e]).type){if("html_inline"===c.type&&(y=c.content,/^\s]/i.test(y)&&m>0&&m--,o(c.content)&&m++),!(m>0)&&"text"===c.type&&t.md.linkify.test(c.content)){for(f=c.content,_=t.md.linkify.match(f),u=[],h=c.level,d=0,l=0;l<_.length;l++)g=_[l].url,v=t.md.normalizeLink(g),t.md.validateLink(v)&&(b=_[l].text,b=_[l].schema?"mailto:"!==_[l].schema||/^mailto:/i.test(b)?t.md.normalizeLinkText(b):t.md.normalizeLinkText("mailto:"+b).replace(/^mailto:/,""):t.md.normalizeLinkText("http://"+b).replace(/^http:\/\//,""),(p=_[l].index)>d&&((s=new t.Token("text","",0)).content=f.slice(d,p),s.level=h,u.push(s)),(s=new t.Token("link_open","a",1)).attrs=[["href",v]],s.level=h++,s.markup="linkify",s.info="auto",u.push(s),(s=new t.Token("text","",0)).content=b,s.level=h,u.push(s),(s=new t.Token("link_close","a",-1)).level=--h,s.markup="linkify",s.info="auto",u.push(s),d=_[l].lastIndex);d=0;e--)"text"!==(n=t[e]).type||r||(n.content=n.content.replace(i,s)),"link_open"===n.type&&"auto"===n.info&&r--,"link_close"===n.type&&"auto"===n.info&&r++}function u(t){var e,n,o=0;for(e=t.length-1;e>=0;e--)"text"!==(n=t[e]).type||o||r.test(n.content)&&(n.content=n.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1—$2").replace(/(^|\s)--(\s|$)/gm,"$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1–$2")),"link_open"===n.type&&"auto"===n.info&&o--,"link_close"===n.type&&"auto"===n.info&&o++}t.exports=function(t){var e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(o.test(t.tokens[e].content)&&c(t.tokens[e].children),r.test(t.tokens[e].content)&&u(t.tokens[e].children))}},function(t,e,n){"use strict";var r=n(1).isWhiteSpace,o=n(1).isPunctChar,i=n(1).isMdAsciiPunct,a=/['"]/,s=/['"]/g,c="’";function u(t,e,n){return t.substr(0,e)+n+t.substr(e+1)}function l(t,e){var n,a,l,f,p,d,h,m,g,v,b,_,y,E,k,x,w,C,A,T,S;for(A=[],n=0;n=0&&!(A[w].level<=h);w--);if(A.length=w+1,"text"===a.type){p=0,d=(l=a.content).length;t:for(;p=0)g=l.charCodeAt(f.index-1);else for(w=n-1;w>=0&&("softbreak"!==t[w].type&&"hardbreak"!==t[w].type);w--)if("text"===t[w].type){g=t[w].content.charCodeAt(t[w].content.length-1);break}if(v=32,p=48&&g<=57&&(x=k=!1),k&&x&&(k=!1,x=_),k||x){if(x)for(w=A.length-1;w>=0&&(m=A[w],!(A[w].level=0;e--)"inline"===t.tokens[e].type&&a.test(t.tokens[e].content)&&l(t.tokens[e].children,t)}},function(t,e,n){"use strict";var r=n(38);function o(t,e,n){this.src=t,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=e}o.prototype.Token=r,t.exports=o},function(t,e,n){"use strict";var r=n(37),o=[["table",n(123),["paragraph","reference"]],["code",n(124)],["fence",n(125),["paragraph","reference","blockquote","list"]],["blockquote",n(126),["paragraph","reference","blockquote","list"]],["hr",n(127),["paragraph","reference","blockquote","list"]],["list",n(128),["paragraph","reference","blockquote"]],["reference",n(129)],["heading",n(130),["paragraph","reference","blockquote"]],["lheading",n(131)],["html_block",n(132),["paragraph","reference","blockquote"]],["paragraph",n(134)]];function i(){this.ruler=new r;for(var t=0;t=n))&&!(t.sCount[a]=c){t.line=n;break}for(r=0;rn)return!1;if(f=e+1,t.sCount[f]=4)return!1;if((u=t.bMarks[f]+t.tShift[f])>=t.eMarks[f])return!1;if(124!==(s=t.src.charCodeAt(u++))&&45!==s&&58!==s)return!1;for(;u=4)return!1;if((d=(p=i(c.replace(/^\||\|$/g,""))).length)>m.length)return!1;if(a)return!0;for((h=t.push("table_open","table",1)).map=v=[e,0],(h=t.push("thead_open","thead",1)).map=[e,e+1],(h=t.push("tr_open","tr",1)).map=[e,e+1],l=0;l=4);f++){for(p=i(c.replace(/^\||\|$/g,"")),h=t.push("tr_open","tr",1),l=0;l=4))break;o=++r}return t.line=o,(i=t.push("code_block","code",0)).content=t.getLines(e,o,4+t.blkIndent,!0),i.map=[e,t.line],!0}},function(t,e,n){"use strict";t.exports=function(t,e,n,r){var o,i,a,s,c,u,l,f=!1,p=t.bMarks[e]+t.tShift[e],d=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(p+3>d)return!1;if(126!==(o=t.src.charCodeAt(p))&&96!==o)return!1;if(c=p,(i=(p=t.skipChars(p,o))-c)<3)return!1;if(l=t.src.slice(c,p),a=t.src.slice(p,d),96===o&&a.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;for(s=e;!(++s>=n)&&!((p=c=t.bMarks[s]+t.tShift[s])<(d=t.eMarks[s])&&t.sCount[s]=4||(p=t.skipChars(p,o))-c=4)return!1;if(62!==t.src.charCodeAt(A++))return!1;if(o)return!0;for(c=d=t.sCount[e]+A-(t.bMarks[e]+t.tShift[e]),32===t.src.charCodeAt(A)?(A++,c++,d++,i=!1,y=!0):9===t.src.charCodeAt(A)?(y=!0,(t.bsCount[e]+d)%4==3?(A++,c++,d++,i=!1):i=!0):y=!1,h=[t.bMarks[e]],t.bMarks[e]=A;A=T,b=[t.sCount[e]],t.sCount[e]=d-c,_=[t.tShift[e]],t.tShift[e]=A-t.bMarks[e],k=t.md.block.ruler.getRules("blockquote"),v=t.parentType,t.parentType="blockquote",w=!1,p=e+1;p=(T=t.eMarks[p])));p++)if(62!==t.src.charCodeAt(A++)||w){if(l)break;for(E=!1,s=0,u=k.length;s=T,m.push(t.bsCount[p]),t.bsCount[p]=t.sCount[p]+1+(y?1:0),b.push(t.sCount[p]),t.sCount[p]=d-c,_.push(t.tShift[p]),t.tShift[p]=A-t.bMarks[p]}for(g=t.blkIndent,t.blkIndent=0,(x=t.push("blockquote_open","blockquote",1)).markup=">",x.map=f=[e,0],t.md.block.tokenize(t,e,p),(x=t.push("blockquote_close","blockquote",-1)).markup=">",t.lineMax=C,t.parentType=v,f[1]=t.line,s=0;s<_.length;s++)t.bMarks[s+e]=h[s],t.tShift[s+e]=_[s],t.sCount[s+e]=b[s],t.bsCount[s+e]=m[s];return t.blkIndent=g,!0}},function(t,e,n){"use strict";var r=n(1).isSpace;t.exports=function(t,e,n,o){var i,a,s,c,u=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(42!==(i=t.src.charCodeAt(u++))&&45!==i&&95!==i)return!1;for(a=1;u=a)return-1;if((n=t.src.charCodeAt(i++))<48||n>57)return-1;for(;;){if(i>=a)return-1;if(!((n=t.src.charCodeAt(i++))>=48&&n<=57)){if(41===n||46===n)break;return-1}if(i-o>=10)return-1}return i=4)return!1;if(t.listIndent>=0&&t.sCount[e]-t.listIndent>=4&&t.sCount[e]=t.blkIndent&&(D=!0),(S=i(t,e))>=0){if(p=!0,O=t.bMarks[e]+t.tShift[e],b=Number(t.src.substr(O,S-O-1)),D&&1!==b)return!1}else{if(!((S=o(t,e))>=0))return!1;p=!1}if(D&&t.skipSpaces(S)>=t.eMarks[e])return!1;if(v=t.src.charCodeAt(S-1),r)return!0;for(g=t.tokens.length,p?(I=t.push("ordered_list_open","ol",1),1!==b&&(I.attrs=[["start",b]])):I=t.push("bullet_list_open","ul",1),I.map=m=[e,0],I.markup=String.fromCharCode(v),y=e,R=!1,L=t.md.block.ruler.getRules("list"),x=t.parentType,t.parentType="list";y=_?1:E-f)>4&&(l=1),u=f+l,(I=t.push("list_item_open","li",1)).markup=String.fromCharCode(v),I.map=d=[e,0],A=t.tight,C=t.tShift[e],w=t.sCount[e],k=t.listIndent,t.listIndent=t.blkIndent,t.blkIndent=u,t.tight=!0,t.tShift[e]=s-t.bMarks[e],t.sCount[e]=E,s>=_&&t.isEmpty(e+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,e,n,!0),t.tight&&!R||(M=!1),R=t.line-e>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=k,t.tShift[e]=C,t.sCount[e]=w,t.tight=A,(I=t.push("list_item_close","li",-1)).markup=String.fromCharCode(v),y=e=t.line,d[1]=y,s=t.bMarks[e],y>=n)break;if(t.sCount[y]=4)break;for(N=!1,c=0,h=L.length;c=4)return!1;if(91!==t.src.charCodeAt(x))return!1;for(;++x3||t.sCount[C]<0)){for(_=!1,f=0,p=y.length;f=4)return!1;if(35!==(i=t.src.charCodeAt(u))||u>=l)return!1;for(a=1,i=t.src.charCodeAt(++u);35===i&&u6||uu&&r(t.src.charCodeAt(s-1))&&(l=s),t.line=e+1,(c=t.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),c.map=[e,t.line],(c=t.push("inline","",0)).content=t.src.slice(u,l).trim(),c.map=[e,t.line],c.children=[],(c=t.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a),!0))}},function(t,e,n){"use strict";t.exports=function(t,e,n){var r,o,i,a,s,c,u,l,f,p,d=e+1,h=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;for(p=t.parentType,t.parentType="paragraph";d3)){if(t.sCount[d]>=t.blkIndent&&(c=t.bMarks[d]+t.tShift[d])<(u=t.eMarks[d])&&(45===(f=t.src.charCodeAt(c))||61===f)&&(c=t.skipChars(c,f),(c=t.skipSpaces(c))>=u)){l=61===f?1:2;break}if(!(t.sCount[d]<0)){for(o=!1,i=0,a=h.length;i|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(o.source+"\\s*$"),/^$/,!1]];t.exports=function(t,e,n,r){var o,a,s,c,u=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(u))return!1;for(c=t.src.slice(u,l),o=0;o3||t.sCount[c]<0)){for(r=!1,o=0,i=u.length;o0&&this.level++,this.tokens.push(o),o},i.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},i.prototype.skipEmptyLines=function(t){for(var e=this.lineMax;te;)if(!o(this.src.charCodeAt(--t)))return t+1;return t},i.prototype.skipChars=function(t,e){for(var n=this.src.length;tn;)if(e!==this.src.charCodeAt(--t))return t+1;return t},i.prototype.getLines=function(t,e,n,r){var i,a,s,c,u,l,f,p=t;if(t>=e)return"";for(l=new Array(e-t),i=0;pn?new Array(a-n+1).join(" ")+this.src.slice(c,u):this.src.slice(c,u)}return l.join("")},i.prototype.Token=r,t.exports=i},function(t,e,n){"use strict";var r=n(37),o=[["text",n(137)],["newline",n(138)],["escape",n(139)],["backticks",n(140)],["strikethrough",n(61).tokenize],["emphasis",n(62).tokenize],["link",n(141)],["image",n(142)],["autolink",n(143)],["html_inline",n(144)],["entity",n(145)]],i=[["balance_pairs",n(146)],["strikethrough",n(61).postProcess],["emphasis",n(62).postProcess],["text_collapse",n(147)]];function a(){var t;for(this.ruler=new r,t=0;t=i)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},a.prototype.parse=function(t,e,n,r){var o,i,a,s=new this.State(t,e,n,r);for(this.tokenize(s),a=(i=this.ruler2.getRules("")).length,o=0;o=0&&32===t.pending.charCodeAt(n)?n>=1&&32===t.pending.charCodeAt(n-1)?(t.pending=t.pending.replace(/ +$/,""),t.push("hardbreak","br",0)):(t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0)):t.push("softbreak","br",0)),i++;i?@[]^_`{|}~-".split("").forEach(function(t){o[t.charCodeAt(0)]=1}),t.exports=function(t,e){var n,i=t.pos,a=t.posMax;if(92!==t.src.charCodeAt(i))return!1;if(++i=m)return!1;for(g=u,(l=t.md.helpers.parseLinkDestination(t.src,u,t.posMax)).ok&&(d=t.md.normalizeLink(l.str),t.md.validateLink(d)?u=l.pos:d=""),g=u;u=m||41!==t.src.charCodeAt(u))&&(v=!0),u++}if(v){if(void 0===t.env.references)return!1;if(u=0?a=t.src.slice(g,u++):u=s+1):u=s+1,a||(a=t.src.slice(c,s)),!(f=t.env.references[r(a)]))return t.pos=h,!1;d=f.href,p=f.title}return e||(t.pos=c,t.posMax=s,t.push("link_open","a",1).attrs=n=[["href",d]],p&&n.push(["title",p]),t.md.inline.tokenize(t),t.push("link_close","a",-1)),t.pos=u,t.posMax=m,!0}},function(t,e,n){"use strict";var r=n(1).normalizeReference,o=n(1).isSpace;t.exports=function(t,e){var n,i,a,s,c,u,l,f,p,d,h,m,g,v="",b=t.pos,_=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;if(u=t.pos+2,(c=t.md.helpers.parseLinkLabel(t,t.pos+1,!1))<0)return!1;if((l=c+1)<_&&40===t.src.charCodeAt(l)){for(l++;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);if(l>=_)return!1;for(g=l,(p=t.md.helpers.parseLinkDestination(t.src,l,t.posMax)).ok&&(v=t.md.normalizeLink(p.str),t.md.validateLink(v)?l=p.pos:v=""),g=l;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);if(p=t.md.helpers.parseLinkTitle(t.src,l,t.posMax),l<_&&g!==l&&p.ok)for(d=p.str,l=p.pos;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);else d="";if(l>=_||41!==t.src.charCodeAt(l))return t.pos=b,!1;l++}else{if(void 0===t.env.references)return!1;if(l<_&&91===t.src.charCodeAt(l)?(g=l+1,(l=t.md.helpers.parseLinkLabel(t,l))>=0?s=t.src.slice(g,l++):l=c+1):l=c+1,s||(s=t.src.slice(u,c)),!(f=t.env.references[r(s)]))return t.pos=b,!1;v=f.href,d=f.title}return e||(a=t.src.slice(u,c),t.md.inline.parse(a,t.md,t.env,m=[]),(h=t.push("image","img",0)).attrs=n=[["src",v],["alt",""]],h.children=m,h.content=a,d&&n.push(["title",d])),t.pos=l,t.posMax=_,!0}},function(t,e,n){"use strict";var r=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,o=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;t.exports=function(t,e){var n,i,a,s,c,u,l=t.pos;return 60===t.src.charCodeAt(l)&&(!((n=t.src.slice(l)).indexOf(">")<0)&&(o.test(n)?(s=(i=n.match(o))[0].slice(1,-1),c=t.md.normalizeLink(s),!!t.md.validateLink(c)&&(e||((u=t.push("link_open","a",1)).attrs=[["href",c]],u.markup="autolink",u.info="auto",(u=t.push("text","",0)).content=t.md.normalizeLinkText(s),(u=t.push("link_close","a",-1)).markup="autolink",u.info="auto"),t.pos+=i[0].length,!0)):!!r.test(n)&&(s=(a=n.match(r))[0].slice(1,-1),c=t.md.normalizeLink("mailto:"+s),!!t.md.validateLink(c)&&(e||((u=t.push("link_open","a",1)).attrs=[["href",c]],u.markup="autolink",u.info="auto",(u=t.push("text","",0)).content=t.md.normalizeLinkText(s),(u=t.push("link_close","a",-1)).markup="autolink",u.info="auto"),t.pos+=a[0].length,!0))))}},function(t,e,n){"use strict";var r=n(60).HTML_TAG_RE;t.exports=function(t,e){var n,o,i,a=t.pos;return!!t.md.options.html&&(i=t.posMax,!(60!==t.src.charCodeAt(a)||a+2>=i)&&(!(33!==(n=t.src.charCodeAt(a+1))&&63!==n&&47!==n&&!function(t){var e=32|t;return e>=97&&e<=122}(n))&&(!!(o=t.src.slice(a).match(r))&&(e||(t.push("html_inline","",0).content=t.src.slice(a,a+o[0].length)),t.pos+=o[0].length,!0))))}},function(t,e,n){"use strict";var r=n(55),o=n(1).has,i=n(1).isValidEntityCode,a=n(1).fromCodePoint,s=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;t.exports=function(t,e){var n,u,l=t.pos,f=t.posMax;if(38!==t.src.charCodeAt(l))return!1;if(l+1=0;){if((o=i[n]).open&&o.marker===r.marker&&o.end<0&&o.level===r.level){var s=!1;if((o.close||r.open)&&void 0!==o.length&&void 0!==r.length&&(o.length+r.length)%3==0&&(o.length%3==0&&r.length%3==0||(s=!0)),!s){r.jump=e-n,r.open=!1,o.end=e,o.jump=0;break}}n-=o.jump+1}}},function(t,e,n){"use strict";t.exports=function(t){var e,n,r=0,o=t.tokens,i=t.tokens.length;for(e=n=0;e0&&r++,"text"===o[e].type&&e+10&&this.level++,this.pendingLevel=this.level,this.tokens.push(o),o},s.prototype.scanDelims=function(t,e){var n,r,s,c,u,l,f,p,d,h=t,m=!0,g=!0,v=this.posMax,b=this.src.charCodeAt(t);for(n=t>0?this.src.charCodeAt(t-1):32;h=3&&":"===t[e-3]?0:e>=3&&"/"===t[e-3]?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,n){var r=t.slice(e);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},u="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",l="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function f(t){var e=t.re=n(150)(t.__opts__),r=t.__tlds__.slice();function s(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||r.push(u),r.push(e.src_xn),e.src_tlds=r.join("|"),e.email_fuzzy=RegExp(s(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(s(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(s(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(s(e.tpl_host_fuzzy_test),"i");var c=[];function l(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach(function(e){var n=t.__schemas__[e];if(null!==n){var r={validate:null,link:null};if(t.__compiled__[e]=r,"[object Object]"===o(n))return!function(t){return"[object RegExp]"===o(t)}(n.validate)?i(n.validate)?r.validate=n.validate:l(e,n):r.validate=function(t){return function(e,n){var r=e.slice(n);return t.test(r)?r.match(t)[0].length:0}}(n.validate),void(i(n.normalize)?r.normalize=n.normalize:n.normalize?l(e,n):r.normalize=function(t,e){e.normalize(t)});!function(t){return"[object String]"===o(t)}(n)?l(e,n):c.push(e)}}),c.forEach(function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)}),t.__compiled__[""]={validate:null,normalize:function(t,e){e.normalize(t)}};var f=Object.keys(t.__compiled__).filter(function(e){return e.length>0&&t.__compiled__[e]}).map(a).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+f+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+f+")","ig"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),function(t){t.__index__=-1,t.__text_cache__=""}(t)}function p(t,e){var n=t.__index__,r=t.__last_index__,o=t.__text_cache__.slice(n,r);this.schema=t.__schema__.toLowerCase(),this.index=n+e,this.lastIndex=r+e,this.raw=o,this.text=o,this.url=o}function d(t,e){var n=new p(t,e);return t.__compiled__[n.schema].normalize(n,t),n}function h(t,e){if(!(this instanceof h))return new h(t,e);var n;e||(n=t,Object.keys(n||{}).reduce(function(t,e){return t||s.hasOwnProperty(e)},!1)&&(e=t,t={})),this.__opts__=r({},s,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=r({},c,t),this.__compiled__={},this.__tlds__=l,this.__tlds_replaced__=!1,this.re={},f(this)}h.prototype.add=function(t,e){return this.__schemas__[t]=e,f(this),this},h.prototype.set=function(t){return this.__opts__=r(this.__opts__,t),this},h.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var e,n,r,o,i,a,s,c;if(this.re.schema_test.test(t))for((s=this.re.schema_search).lastIndex=0;null!==(e=s.exec(t));)if(o=this.testSchemaAt(t,e[2],s.lastIndex)){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+o;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=t.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(r=t.match(this.re.email_fuzzy))&&(i=r.index+r[1].length,a=r.index+r[0].length,(this.__index__<0||ithis.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(t){return this.re.pretest.test(t)},h.prototype.testSchemaAt=function(t,e,n){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,n,this):0},h.prototype.match=function(t){var e=0,n=[];this.__index__>=0&&this.__text_cache__===t&&(n.push(d(this,e)),e=this.__last_index__);for(var r=e?t.slice(e):t;this.test(r);)n.push(d(this,e)),r=r.slice(this.__last_index__),e+=this.__last_index__;return n.length?n:null},h.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(t,e,n){return t!==n[e-1]}).reverse(),f(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,f(this),this)},h.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},h.prototype.onCompile=function(){},t.exports=h},function(t,e,n){"use strict";t.exports=function(t){var e={};e.src_Any=n(57).source,e.src_Cc=n(58).source,e.src_Z=n(59).source,e.src_P=n(36).source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join("|"),e.src_ZCc=[e.src_Z,e.src_Cc].join("|");return e.src_pseudo_letter="(?:(?![><|]|"+e.src_ZPCc+")"+e.src_Any+")",e.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",e.src_auth="(?:(?:(?!"+e.src_ZCc+"|[@/\\[\\]()]).)+@)?",e.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",e.src_host_terminator="(?=$|[><|]|"+e.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+e.src_ZPCc+"))",e.src_path="(?:[/?#](?:(?!"+e.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+e.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+e.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+e.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+e.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+e.src_ZCc+"|[']).)+\\'|\\'(?="+e.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+e.src_ZCc+"|[.]).|"+(t&&t["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+e.src_ZCc+").|\\!(?!"+e.src_ZCc+"|[!]).|\\?(?!"+e.src_ZCc+"|[?]).)+|\\/)?",e.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',e.src_xn="xn--[a-z0-9\\-]{1,59}",e.src_domain_root="(?:"+e.src_xn+"|"+e.src_pseudo_letter+"{1,63})",e.src_domain="(?:"+e.src_xn+"|(?:"+e.src_pseudo_letter+")|(?:"+e.src_pseudo_letter+"(?:-|"+e.src_pseudo_letter+"){0,61}"+e.src_pseudo_letter+"))",e.src_host="(?:(?:(?:(?:"+e.src_domain+")\\.)*"+e.src_domain+"))",e.tpl_host_fuzzy="(?:"+e.src_ip4+"|(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%)))",e.tpl_host_no_ip_fuzzy="(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%))",e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+e.src_ZPCc+"|>|$))",e.tpl_email_fuzzy='(^|[><|]|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}},function(t,e,n){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},function(t,e,n){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},function(t,e,n){"use strict";t.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(155),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(11))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o,i,a,s,c=1,u={},l=!1,f=t.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(t);p=p&&p.setTimeout?p:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){h(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((i=new MessageChannel).port1.onmessage=function(t){h(t.data)},r=function(t){i.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,o.removeChild(e),e=null},o.appendChild(e)}):r=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),p.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n1&&void 0!==arguments[1]&&arguments[1];if("string"!=typeof t||!t.trim())throw new Error("Invalid url.");return e&&("object"!==(void 0===e?"undefined":r(e))&&(e={stripFragment:!1}),t=i(t,e)),o(t)}},function(t,e,n){"use strict";var r=n(64),o=n(65),i=n(66);t.exports=function(t){t=(t||"").trim();var e={protocols:r(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},n=t.indexOf("://"),a=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var c=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(o(t)?e.protocol="ssh":"/"===c||"~"===c?(t=t.substring(2),e.protocol="file"):e.protocol="file")),-1!==n&&(t=t.substring(n+3)),s=t.split("/"),"file"!==e.protocol?e.resource=s.shift():e.resource="",2===(a=e.resource.split("@")).length&&(e.user=a[0],e.resource=a[1]),2===(a=e.resource.split(":")).length&&(e.resource=a[0],a[1]?(e.port=Number(a[1]),isNaN(e.port)&&(e.port=null,s.unshift(a[1]))):e.port=null),s=s.filter(Boolean),"file"===e.protocol?e.pathname=e.href:e.pathname=e.pathname||("file"!==e.protocol||"/"===e.href[0]?"/":"")+s.join("/"),2===(a=e.pathname.split("#")).length&&(e.pathname=a[0],e.hash=a[1]),2===(a=e.pathname.split("?")).length&&(e.pathname=a[0],e.search=a[1]),e.query=i.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}},function(t,e,n){"use strict";function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,i){e=e||"&",n=n||"=";var a={};if("string"!=typeof t||0===t.length)return a;var s=/\+/g;t=t.split(e);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var u=t.length;c>0&&u>c&&(u=c);for(var l=0;l=0?(f=m.substr(0,g),p=m.substr(g+1)):(f=m,p=""),d=decodeURIComponent(f),h=decodeURIComponent(p),r(a,d)?o(a[d])?a[d].push(h):a[d]=[a[d],h]:a[d]=h}return a};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";var r=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,s){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?i(a(t),function(a){var s=encodeURIComponent(r(a))+n;return o(t[a])?i(t[a],function(t){return s+encodeURIComponent(r(t))}).join(e):s+encodeURIComponent(r(t[a]))}).join(e):s?encodeURIComponent(r(s))+n+encodeURIComponent(r(t)):""};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function i(t,e){if(t.map)return t.map(e);for(var n=[],r=0;re.some(e=>e instanceof RegExp?e.test(t):e===t);t.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment);const n=(t=t.trim()).startsWith("//");!n&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));const i=new r(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&"https:"===i.protocol&&(i.protocol="http:"),e.forceHttps&&"http:"===i.protocol&&(i.protocol="https:"),e.stripHash&&(i.hash=""),i.pathname&&(i.pathname=i.pathname.replace(/((?![https?:]).)\/{2,}/g,(t,e)=>/^(?!\/)/g.test(e)?`${e}/`:"/")),i.pathname&&(i.pathname=decodeURI(i.pathname)),!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split("/");const n=t[t.length-1];o(n,e.removeDirectoryIndex)&&(t=t.slice(0,t.length-1),i.pathname=t.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(const t of[...i.searchParams.keys()])o(t,e.removeQueryParameters)&&i.searchParams.delete(t);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||"/"===i.pathname)&&(t=t.replace(/\/$/,"")),n&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}},function(t,e,n){"use strict";var r=n(63),o=n(170);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=_,e.resolve=function(t,e){return _(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?_(t,!1,!0).resolveObject(e):e},e.format=function(t){o.isString(t)&&(t=_(t));return t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),f=["%","/","?",";","#"].concat(l),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=n(66);function _(t,e,n){if(t&&o.isObject(t)&&t instanceof i)return t;var r=new i;return r.parse(t,e,n),r}i.prototype.parse=function(t,e,n){if(!o.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),s=-1!==i&&i127?I+="x":I+=L[D];if(!I.match(d)){var P=O.slice(0,T),j=O.slice(T+1),U=L.match(h);U&&(P.push(U[1]),j.unshift(U[2])),j.length&&(_="/"+j.join(".")+_),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",$=this.hostname||"";this.host=$+F,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!m[k])for(T=0,N=l.length;T0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift());return n.search=t.search,n.query=t.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!x.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var C=x.slice(-1)[0],A=(n.host||t.host||x.length>1)&&("."===C||".."===C)||""===C,T=0,S=x.length;S>=0;S--)"."===(C=x[S])?x.splice(S,1):".."===C?(x.splice(S,1),T++):T&&(x.splice(S,1),T--);if(!E&&!k)for(;T--;T)x.unshift("..");!E||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),A&&"/"!==x.join("/").substr(-1)&&x.push("");var R,O=""===x[0]||x[0]&&"/"===x[0].charAt(0);w&&(n.hostname=n.host=O?"":x.length?x.shift():"",(R=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift()));return(E=E||n.host&&x.length)&&!O&&x.unshift(""),x.length?n.pathname=x.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,n){var r=n(67),o=n(68),i=n(69),a=n(16);t.exports=function(t){return function(e){e=a(e);var n=o(e)?i(e):void 0,s=n?n[0]:e.charAt(0),c=n?r(n,1).join(""):e.slice(1);return s[t]()+c}}},function(t,e){t.exports=function(t,e,n){var r=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(o);++r-1;);return n}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i0;){if("top-level"!==this.indentTypes.pop())break}},t}();e.default=a,t.exports=e.default},function(t,e,n){var r=n(187),o=n(188),i=n(189),a=n(16);t.exports=function(t,e,n){return e=(n?o(t,e,n):void 0===e)?1:i(e),r(a(t),e)}},function(t,e){var n=9007199254740991,r=Math.floor;t.exports=function(t,e){var o="";if(!t||e<1||e>n)return o;do{e%2&&(o+=t),(e=r(e/2))&&(t+=t)}while(e);return o}},function(t,e,n){var r=n(40),o=n(41),i=n(43),a=n(19);t.exports=function(t,e,n){if(!a(n))return!1;var s=typeof e;return!!("number"==s?o(n)&&i(e,n.length):"string"==s&&e in n)&&r(n[e],t)}},function(t,e,n){var r=n(190);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(191),o=1/0,i=17976931348623157e292;t.exports=function(t){return t?(t=r(t))===o||t===-o?(t<0?-1:1)*i:t==t?t:0:0===t?t:0}},function(t,e,n){var r=n(19),o=n(23),i=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(o(t))return i;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=c.test(t);return n||u.test(t)?l(t.slice(2),n?2:8):s.test(t)?i:+t}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){"use strict";e.__esModule=!0;var r,o=n(39),i=(r=o)&&r.__esModule?r:{default:r};var a=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.level=0}return t.prototype.beginIfPossible=function(t,e){0===this.level&&this.isInlineBlock(t,e)?this.level=1:this.level>0?this.level++:this.level=0},t.prototype.end=function(){this.level--},t.prototype.isActive=function(){return this.level>0},t.prototype.isInlineBlock=function(t,e){for(var n=0,r=0,o=e;o50)return!1;if(a.type===i.default.OPEN_PAREN)r++;else if(a.type===i.default.CLOSE_PAREN&&0===--r)return!0;if(this.isForbiddenToken(a))return!1}return!1},t.prototype.isForbiddenToken=function(t){var e=t.type,n=t.value;return e===i.default.RESERVED_TOPLEVEL||e===i.default.RESERVED_NEWLINE||e===i.default.COMMENT||e===i.default.BLOCK_COMMENT||";"===n},t}();e.default=a,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.params=e,this.index=0}return t.prototype.get=function(t){var e=t.key,n=t.value;return this.params?e?this.params[e]:this.params[this.index++]:n},t}();e.default=r,t.exports=e.default},function(t,e,n){var r=n(74),o=n(76),i=n(45),a=n(9),s=n(41),c=n(46),u=n(75),l=n(47),f="[object Map]",p="[object Set]",d=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(s(t)&&(a(t)||"string"==typeof t||"function"==typeof t.splice||c(t)||l(t)||i(t)))return!t.length;var e=o(t);if(e==f||e==p)return!t.size;if(u(t))return!r(t).length;for(var n in t)if(d.call(t,n))return!1;return!0}},function(t,e,n){var r=n(197)(Object.keys,Object);t.exports=r},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){var r=n(12)(n(8),"DataView");t.exports=r},function(t,e,n){var r=n(73),o=n(200),i=n(19),a=n(77),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,f=u.hasOwnProperty,p=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:s).test(a(t))}},function(t,e,n){var r,o=n(201),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(8)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(12)(n(8),"Promise");t.exports=r},function(t,e,n){var r=n(12)(n(8),"WeakMap");t.exports=r},function(t,e,n){var r=n(17),o=n(18),i="[object Arguments]";t.exports=function(t){return o(t)&&r(t)==i}},function(t,e){t.exports=function(){return!1}},function(t,e,n){var r=n(17),o=n(42),i=n(18),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!a[r(t)]}},function(t,e){t.exports=function(t){return function(e){return t(e)}}},function(t,e,n){(function(t){var r=n(71),o=e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,a=i&&i.exports===o&&r.process,s=function(){try{var t=i&&i.require&&i.require("util").types;return t||a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=s}).call(this,n(21)(t))},function(t,e,n){var r=n(16),o=/[\\^$.*+?()[\]{}|]/g,i=RegExp(o.source);t.exports=function(t){return(t=r(t))&&i.test(t)?t.replace(o,"\\$&"):t}},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(24)),o=i(n(25));function i(t){return t&&t.__esModule?t:{default:t}}var a=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],s=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","INTERSECT ALL","INTERSECT","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],c=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(24)),o=i(n(25));function i(t){return t&&t.__esModule?t:{default:t}}var a=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],s=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","END","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UNION ALL","UNION","UPDATE","VALUES","WHERE"],c=["AND","CROSS APPLY","CROSS JOIN","ELSE","END","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(24)),o=i(n(25));function i(t){return t&&t.__esModule?t:{default:t}}var a=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANT","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MODIFY","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],s=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UPDATE","VALUES","WHERE"],c=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"N''","''","``","[]"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":"],lineCommentTypes:["#","--"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e){t.exports=function(t){var e={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[t.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},t.inherit(t.APOS_STRING_MODE,{illegal:null}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null})]},o={variants:[t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[t.HASH_COMMENT_MODE,t.COMMENT("//","$",{contains:[n]}),t.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),t.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:t.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[t.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},e,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[t.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",e,t.C_BLOCK_COMMENT_MODE,r,o]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,o]}}},function(t,e,n){var r=n(79),o=n(235),i=n(236),a=n(80),s=n(237),c=n(49),u=200;t.exports=function(t,e,n){var l=-1,f=o,p=t.length,d=!0,h=[],m=h;if(n)d=!1,f=i;else if(p>=u){var g=e?null:s(t);if(g)return c(g);d=!1,f=a,m=new r}else m=e?[]:h;t:for(;++l-1}},function(t,e,n){var r=n(28);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(29);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,n){var r=n(29);t.exports=function(t){return r(this,t).get(t)}},function(t,e,n){var r=n(29);t.exports=function(t){return r(this,t).has(t)}},function(t,e,n){var r=n(29);t.exports=function(t,e){var n=r(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this}},function(t,e){var n="__lodash_hash_undefined__";t.exports=function(t){return this.__data__.set(t,n),this}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(72);t.exports=function(t,e){return!(null==t||!t.length)&&r(t,e,0)>-1}},function(t,e){t.exports=function(t,e,n){for(var r=-1,o=null==t?0:t.length;++r>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&r.rotl(t,8)|4278255360&r.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-i)&63)):e.push("=");return e.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var e=[],r=0,o=0;r>>6-2*o);return e}},t.exports=r},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)} + */(function(){var i,a=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",u="Invalid `variable` option passed into `_.template`",l="__lodash_hash_undefined__",f=500,p="__lodash_placeholder__",d=1,h=2,g=4,m=1,v=2,b=1,_=2,y=4,E=8,x=16,k=32,w=64,C=128,A=256,T=512,S=30,R="...",O=800,N=16,L=1,I=2,D=1/0,M=9007199254740991,P=17976931348623157e292,j=NaN,F=4294967295,U=F-1,$=F>>>1,B=[["ary",C],["bind",b],["bindKey",_],["curry",E],["curryRight",x],["flip",T],["partial",k],["partialRight",w],["rearg",A]],z="[object Arguments]",q="[object Array]",H="[object AsyncFunction]",G="[object Boolean]",V="[object Date]",W="[object DOMException]",Y="[object Error]",K="[object Function]",X="[object GeneratorFunction]",Z="[object Map]",J="[object Number]",Q="[object Null]",tt="[object Object]",et="[object Proxy]",nt="[object RegExp]",rt="[object Set]",ot="[object String]",it="[object Symbol]",at="[object Undefined]",st="[object WeakMap]",ct="[object WeakSet]",ut="[object ArrayBuffer]",lt="[object DataView]",ft="[object Float32Array]",pt="[object Float64Array]",dt="[object Int8Array]",ht="[object Int16Array]",gt="[object Int32Array]",mt="[object Uint8Array]",vt="[object Uint8ClampedArray]",bt="[object Uint16Array]",_t="[object Uint32Array]",yt=/\b__p \+= '';/g,Et=/\b(__p \+=) '' \+/g,xt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,kt=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,Ct=RegExp(kt.source),At=RegExp(wt.source),Tt=/<%-([\s\S]+?)%>/g,St=/<%([\s\S]+?)%>/g,Rt=/<%=([\s\S]+?)%>/g,Ot=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Nt=/^\w*$/,Lt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,It=/[\\^$.*+?()[\]{}|]/g,Dt=RegExp(It.source),Mt=/^\s+/,Pt=/\s/,jt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ft=/\{\n\/\* \[wrapped with (.+)\] \*/,Ut=/,? & /,$t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Bt=/[()=,{}\[\]\/\s]/,zt=/\\(\\)?/g,qt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ht=/\w*$/,Gt=/^[-+]0x[0-9a-f]+$/i,Vt=/^0b[01]+$/i,Wt=/^\[object .+?Constructor\]$/,Yt=/^0o[0-7]+$/i,Kt=/^(?:0|[1-9]\d*)$/,Xt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zt=/($^)/,Jt=/['\n\r\u2028\u2029\\]/g,Qt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",te="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ee="[\\ud800-\\udfff]",ne="["+te+"]",re="["+Qt+"]",oe="\\d+",ie="[\\u2700-\\u27bf]",ae="[a-z\\xdf-\\xf6\\xf8-\\xff]",se="[^\\ud800-\\udfff"+te+oe+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ce="\\ud83c[\\udffb-\\udfff]",ue="[^\\ud800-\\udfff]",le="(?:\\ud83c[\\udde6-\\uddff]){2}",fe="[\\ud800-\\udbff][\\udc00-\\udfff]",pe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",de="(?:"+ae+"|"+se+")",he="(?:"+pe+"|"+se+")",ge="(?:"+re+"|"+ce+")"+"?",me="[\\ufe0e\\ufe0f]?"+ge+("(?:\\u200d(?:"+[ue,le,fe].join("|")+")[\\ufe0e\\ufe0f]?"+ge+")*"),ve="(?:"+[ie,le,fe].join("|")+")"+me,be="(?:"+[ue+re+"?",re,le,fe,ee].join("|")+")",_e=RegExp("['’]","g"),ye=RegExp(re,"g"),Ee=RegExp(ce+"(?="+ce+")|"+be+me,"g"),xe=RegExp([pe+"?"+ae+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ne,pe,"$"].join("|")+")",he+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ne,pe+de,"$"].join("|")+")",pe+"?"+de+"+(?:['’](?:d|ll|m|re|s|t|ve))?",pe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",oe,ve].join("|"),"g"),ke=RegExp("[\\u200d\\ud800-\\udfff"+Qt+"\\ufe0e\\ufe0f]"),we=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ce=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ae=-1,Te={};Te[ft]=Te[pt]=Te[dt]=Te[ht]=Te[gt]=Te[mt]=Te[vt]=Te[bt]=Te[_t]=!0,Te[z]=Te[q]=Te[ut]=Te[G]=Te[lt]=Te[V]=Te[Y]=Te[K]=Te[Z]=Te[J]=Te[tt]=Te[nt]=Te[rt]=Te[ot]=Te[st]=!1;var Se={};Se[z]=Se[q]=Se[ut]=Se[lt]=Se[G]=Se[V]=Se[ft]=Se[pt]=Se[dt]=Se[ht]=Se[gt]=Se[Z]=Se[J]=Se[tt]=Se[nt]=Se[rt]=Se[ot]=Se[it]=Se[mt]=Se[vt]=Se[bt]=Se[_t]=!0,Se[Y]=Se[K]=Se[st]=!1;var Re={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Oe=parseFloat,Ne=parseInt,Le="object"==typeof t&&t&&t.Object===Object&&t,Ie="object"==typeof self&&self&&self.Object===Object&&self,De=Le||Ie||Function("return this")(),Me=e&&!e.nodeType&&e,Pe=Me&&"object"==typeof r&&r&&!r.nodeType&&r,je=Pe&&Pe.exports===Me,Fe=je&&Le.process,Ue=function(){try{var t=Pe&&Pe.require&&Pe.require("util").types;return t||Fe&&Fe.binding&&Fe.binding("util")}catch(t){}}(),$e=Ue&&Ue.isArrayBuffer,Be=Ue&&Ue.isDate,ze=Ue&&Ue.isMap,qe=Ue&&Ue.isRegExp,He=Ue&&Ue.isSet,Ge=Ue&&Ue.isTypedArray;function Ve(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function We(t,e,n,r){for(var o=-1,i=null==t?0:t.length;++o-1}function Qe(t,e,n){for(var r=-1,o=null==t?0:t.length;++r-1;);return n}function kn(t,e){for(var n=t.length;n--&&un(e,t[n],0)>-1;);return n}var wn=hn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Cn=hn({"&":"&","<":"<",">":">",'"':""","'":"'"});function An(t){return"\\"+Re[t]}function Tn(t){return ke.test(t)}function Sn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function Rn(t,e){return function(n){return t(e(n))}}function On(t,e){for(var n=-1,r=t.length,o=0,i=[];++n",""":'"',"'":"'"});var jn=function t(e){var n,r=(e=null==e?De:jn.defaults(De.Object(),e,jn.pick(De,Ce))).Array,o=e.Date,Pt=e.Error,Qt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,oe=e.TypeError,ie=r.prototype,ae=Qt.prototype,se=ee.prototype,ce=e["__core-js_shared__"],ue=ae.toString,le=se.hasOwnProperty,fe=0,pe=(n=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=se.toString,he=ue.call(ee),ge=De._,me=ne("^"+ue.call(le).replace(It,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ve=je?e.Buffer:i,be=e.Symbol,Ee=e.Uint8Array,ke=ve?ve.allocUnsafe:i,Re=Rn(ee.getPrototypeOf,ee),Le=ee.create,Ie=se.propertyIsEnumerable,Me=ie.splice,Pe=be?be.isConcatSpreadable:i,Fe=be?be.iterator:i,Ue=be?be.toStringTag:i,an=function(){try{var t=Bi(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),hn=e.clearTimeout!==De.clearTimeout&&e.clearTimeout,Fn=o&&o.now!==De.Date.now&&o.now,Un=e.setTimeout!==De.setTimeout&&e.setTimeout,$n=te.ceil,Bn=te.floor,zn=ee.getOwnPropertySymbols,qn=ve?ve.isBuffer:i,Hn=e.isFinite,Gn=ie.join,Vn=Rn(ee.keys,ee),Wn=te.max,Yn=te.min,Kn=o.now,Xn=e.parseInt,Zn=te.random,Jn=ie.reverse,Qn=Bi(e,"DataView"),tr=Bi(e,"Map"),er=Bi(e,"Promise"),nr=Bi(e,"Set"),rr=Bi(e,"WeakMap"),or=Bi(ee,"create"),ir=rr&&new rr,ar={},sr=da(Qn),cr=da(tr),ur=da(er),lr=da(nr),fr=da(rr),pr=be?be.prototype:i,dr=pr?pr.valueOf:i,hr=pr?pr.toString:i;function gr(t){if(Os(t)&&!_s(t)&&!(t instanceof _r)){if(t instanceof br)return t;if(le.call(t,"__wrapped__"))return ha(t)}return new br(t)}var mr=function(){function t(){}return function(e){if(!Rs(e))return{};if(Le)return Le(e);t.prototype=e;var n=new t;return t.prototype=i,n}}();function vr(){}function br(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=i}function _r(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=F,this.__views__=[]}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function jr(t,e,n,r,o,a){var s,c=e&d,u=e&h,l=e&g;if(n&&(s=o?n(t,r,o,a):n(t)),s!==i)return s;if(!Rs(t))return t;var f=_s(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&le.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return ii(t,s)}else{var p=Hi(t),m=p==K||p==X;if(ks(t))return Qo(t,c);if(p==tt||p==z||m&&!o){if(s=u||m?{}:Vi(t),!c)return u?function(t,e){return ai(t,qi(t),e)}(t,function(t,e){return t&&ai(e,sc(e),t)}(s,t)):function(t,e){return ai(t,zi(t),e)}(t,Ir(s,t))}else{if(!Se[p])return o?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case ut:return ti(t);case G:case V:return new r(+t);case lt:return function(t,e){var n=e?ti(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case ft:case pt:case dt:case ht:case gt:case mt:case vt:case bt:case _t:return ei(t,n);case Z:return new r;case J:case ot:return new r(t);case nt:return function(t){var e=new t.constructor(t.source,Ht.exec(t));return e.lastIndex=t.lastIndex,e}(t);case rt:return new r;case it:return o=t,dr?ee(dr.call(o)):{}}var o}(t,p,c)}}a||(a=new wr);var v=a.get(t);if(v)return v;a.set(t,s),Ms(t)?t.forEach((function(r){s.add(jr(r,e,n,r,t,a))})):Ns(t)&&t.forEach((function(r,o){s.set(o,jr(r,e,n,o,t,a))}));var b=f?i:(l?u?Di:Ii:u?sc:ac)(t);return Ye(b||t,(function(r,o){b&&(r=t[o=r]),Or(s,o,jr(r,e,n,o,t,a))})),s}function Fr(t,e,n){var r=n.length;if(null==t)return!r;for(t=ee(t);r--;){var o=n[r],a=e[o],s=t[o];if(s===i&&!(o in t)||!a(s))return!1}return!0}function Ur(t,e,n){if("function"!=typeof t)throw new oe(c);return aa((function(){t.apply(i,n)}),e)}function $r(t,e,n,r){var o=-1,i=Je,s=!0,c=t.length,u=[],l=e.length;if(!c)return u;n&&(e=tn(e,_n(n))),r?(i=Qe,s=!1):e.length>=a&&(i=En,s=!1,e=new kr(e));t:for(;++o-1},Er.prototype.set=function(t,e){var n=this.__data__,r=Nr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},xr.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(tr||Er),string:new yr}},xr.prototype.delete=function(t){var e=Ui(this,t).delete(t);return this.size-=e?1:0,e},xr.prototype.get=function(t){return Ui(this,t).get(t)},xr.prototype.has=function(t){return Ui(this,t).has(t)},xr.prototype.set=function(t,e){var n=Ui(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},kr.prototype.add=kr.prototype.push=function(t){return this.__data__.set(t,l),this},kr.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.clear=function(){this.__data__=new Er,this.size=0},wr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},wr.prototype.get=function(t){return this.__data__.get(t)},wr.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Er){var r=n.__data__;if(!tr||r.length0&&n(s)?e>1?Vr(s,e-1,n,r,o):en(o,s):r||(o[o.length]=s)}return o}var Wr=li(),Yr=li(!0);function Kr(t,e){return t&&Wr(t,e,ac)}function Xr(t,e){return t&&Yr(t,e,ac)}function Zr(t,e){return Ze(e,(function(e){return As(t[e])}))}function Jr(t,e){for(var n=0,r=(e=Ko(e,t)).length;null!=t&&ne}function no(t,e){return null!=t&&le.call(t,e)}function ro(t,e){return null!=t&&e in ee(t)}function oo(t,e,n){for(var o=n?Qe:Je,a=t[0].length,s=t.length,c=s,u=r(s),l=1/0,f=[];c--;){var p=t[c];c&&e&&(p=tn(p,_n(e))),l=Yn(p.length,l),u[c]=!n&&(e||a>=120&&p.length>=120)?new kr(c&&p):i}p=t[0];var d=-1,h=u[0];t:for(;++d=s)return c;var u=n[r];return c*("desc"==u?-1:1)}}return t.index-e.index}(t,e,n)}))}function Eo(t,e,n){for(var r=-1,o=e.length,i={};++r-1;)s!==t&&Me.call(s,c,1),Me.call(t,c,1);return t}function ko(t,e){for(var n=t?e.length:0,r=n-1;n--;){var o=e[n];if(n==r||o!==i){var i=o;Yi(o)?Me.call(t,o,1):Bo(t,o)}}return t}function wo(t,e){return t+Bn(Zn()*(e-t+1))}function Co(t,e){var n="";if(!t||e<1||e>M)return n;do{e%2&&(n+=t),(e=Bn(e/2))&&(t+=t)}while(e);return n}function Ao(t,e){return sa(na(t,e,Lc),t+"")}function To(t){return Ar(gc(t))}function So(t,e){var n=gc(t);return la(n,Pr(e,0,n.length))}function Ro(t,e,n,r){if(!Rs(t))return t;for(var o=-1,a=(e=Ko(e,t)).length,s=a-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var a=r(i);++o>>1,a=t[i];null!==a&&!js(a)&&(n?a<=e:a=a){var l=e?null:Ci(t);if(l)return Nn(l);s=!1,o=En,u=new kr}else u=e?[]:c;t:for(;++r=r?t:Io(t,e,n)}var Jo=hn||function(t){return De.clearTimeout(t)};function Qo(t,e){if(e)return t.slice();var n=t.length,r=ke?ke(n):new t.constructor(n);return t.copy(r),r}function ti(t){var e=new t.constructor(t.byteLength);return new Ee(e).set(new Ee(t)),e}function ei(t,e){var n=e?ti(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function ni(t,e){if(t!==e){var n=t!==i,r=null===t,o=t==t,a=js(t),s=e!==i,c=null===e,u=e==e,l=js(e);if(!c&&!l&&!a&&t>e||a&&s&&u&&!c&&!l||r&&s&&u||!n&&u||!o)return 1;if(!r&&!a&&!l&&t1?n[o-1]:i,s=o>2?n[2]:i;for(a=t.length>3&&"function"==typeof a?(o--,a):i,s&&Ki(n[0],n[1],s)&&(a=o<3?i:a,o=1),e=ee(e);++r-1?o[a?e[s]:s]:i}}function gi(t){return Li((function(e){var n=e.length,r=n,o=br.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new oe(c);if(o&&!s&&"wrapper"==Pi(a))var s=new br([],!0)}for(r=s?r:n;++r1&&y.reverse(),p&&l<_&&(y.length=l),this&&this!==De&&this instanceof b&&(A=v||di(A)),A.apply(C,y)}}function vi(t,e){return function(n,r){return function(t,e,n,r){return Kr(t,(function(t,o,i){e(r,n(t),o,i)})),r}(n,t,e(r),{})}}function bi(t,e){return function(n,r){var o;if(n===i&&r===i)return e;if(n!==i&&(o=n),r!==i){if(o===i)return r;"string"==typeof n||"string"==typeof r?(n=Uo(n),r=Uo(r)):(n=Fo(n),r=Fo(r)),o=t(n,r)}return o}}function _i(t){return Li((function(e){return e=tn(e,_n(Fi())),Ao((function(n){var r=this;return t(e,(function(t){return Ve(t,r,n)}))}))}))}function yi(t,e){var n=(e=e===i?" ":Uo(e)).length;if(n<2)return n?Co(e,t):e;var r=Co(e,$n(t/In(e)));return Tn(e)?Zo(Dn(r),0,t).join(""):r.slice(0,t)}function Ei(t){return function(e,n,o){return o&&"number"!=typeof o&&Ki(e,n,o)&&(n=o=i),e=zs(e),n===i?(n=e,e=0):n=zs(n),function(t,e,n,o){for(var i=-1,a=Wn($n((e-t)/(n||1)),0),s=r(a);a--;)s[o?a:++i]=t,t+=n;return s}(e,n,o=o===i?ec))return!1;var l=a.get(t),f=a.get(e);if(l&&f)return l==e&&f==t;var p=-1,d=!0,h=n&v?new kr:i;for(a.set(t,e),a.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(jt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ye(B,(function(n){var r="_."+n[0];e&n[1]&&!Je(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Ft);return e?e[1].split(Ut):[]}(r),n)))}function ua(t){var e=0,n=0;return function(){var r=Kn(),o=N-(r-n);if(n=r,o>0){if(++e>=O)return arguments[0]}else e=0;return t.apply(i,arguments)}}function la(t,e){var n=-1,r=t.length,o=r-1;for(e=e===i?r:e;++n1?t[e-1]:i;return n="function"==typeof n?(t.pop(),n):i,Da(t,n)}));function Ba(t){var e=gr(t);return e.__chain__=!0,e}function za(t,e){return e(t)}var qa=Li((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return Mr(e,t)};return!(e>1||this.__actions__.length)&&r instanceof _r&&Yi(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:za,args:[o],thisArg:i}),new br(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(i),t}))):this.thru(o)}));var Ha=si((function(t,e,n){le.call(t,n)?++t[n]:Dr(t,n,1)}));var Ga=hi(ba),Va=hi(_a);function Wa(t,e){return(_s(t)?Ye:Br)(t,Fi(e,3))}function Ya(t,e){return(_s(t)?Ke:zr)(t,Fi(e,3))}var Ka=si((function(t,e,n){le.call(t,n)?t[n].push(e):Dr(t,n,[e])}));var Xa=Ao((function(t,e,n){var o=-1,i="function"==typeof e,a=Es(t)?r(t.length):[];return Br(t,(function(t){a[++o]=i?Ve(e,t,n):io(t,e,n)})),a})),Za=si((function(t,e,n){Dr(t,n,e)}));function Ja(t,e){return(_s(t)?tn:go)(t,Fi(e,3))}var Qa=si((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var ts=Ao((function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ki(t,e[0],e[1])?e=[]:n>2&&Ki(e[0],e[1],e[2])&&(e=[e[0]]),yo(t,Vr(e,1),[])})),es=Fn||function(){return De.Date.now()};function ns(t,e,n){return e=n?i:e,e=t&&null==e?t.length:e,Ti(t,C,i,i,i,i,e)}function rs(t,e){var n;if("function"!=typeof e)throw new oe(c);return t=qs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=i),n}}var os=Ao((function(t,e,n){var r=b;if(n.length){var o=On(n,ji(os));r|=k}return Ti(t,r,e,n,o)})),is=Ao((function(t,e,n){var r=b|_;if(n.length){var o=On(n,ji(is));r|=k}return Ti(e,r,t,n,o)}));function as(t,e,n){var r,o,a,s,u,l,f=0,p=!1,d=!1,h=!0;if("function"!=typeof t)throw new oe(c);function g(e){var n=r,a=o;return r=o=i,f=e,s=t.apply(a,n)}function m(t){var n=t-l;return l===i||n>=e||n<0||d&&t-f>=a}function v(){var t=es();if(m(t))return b(t);u=aa(v,function(t){var n=e-(t-l);return d?Yn(n,a-(t-f)):n}(t))}function b(t){return u=i,h&&r?g(t):(r=o=i,s)}function _(){var t=es(),n=m(t);if(r=arguments,o=this,l=t,n){if(u===i)return function(t){return f=t,u=aa(v,e),p?g(t):s}(l);if(d)return Jo(u),u=aa(v,e),g(l)}return u===i&&(u=aa(v,e)),s}return e=Gs(e)||0,Rs(n)&&(p=!!n.leading,a=(d="maxWait"in n)?Wn(Gs(n.maxWait)||0,e):a,h="trailing"in n?!!n.trailing:h),_.cancel=function(){u!==i&&Jo(u),f=0,r=l=o=u=i},_.flush=function(){return u===i?s:b(es())},_}var ss=Ao((function(t,e){return Ur(t,1,e)})),cs=Ao((function(t,e,n){return Ur(t,Gs(e)||0,n)}));function us(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new oe(c);var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=t.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(us.Cache||xr),n}function ls(t){if("function"!=typeof t)throw new oe(c);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}us.Cache=xr;var fs=Xo((function(t,e){var n=(e=1==e.length&&_s(e[0])?tn(e[0],_n(Fi())):tn(Vr(e,1),_n(Fi()))).length;return Ao((function(r){for(var o=-1,i=Yn(r.length,n);++o=e})),bs=ao(function(){return arguments}())?ao:function(t){return Os(t)&&le.call(t,"callee")&&!Ie.call(t,"callee")},_s=r.isArray,ys=$e?_n($e):function(t){return Os(t)&&to(t)==ut};function Es(t){return null!=t&&Ss(t.length)&&!As(t)}function xs(t){return Os(t)&&Es(t)}var ks=qn||Gc,ws=Be?_n(Be):function(t){return Os(t)&&to(t)==V};function Cs(t){if(!Os(t))return!1;var e=to(t);return e==Y||e==W||"string"==typeof t.message&&"string"==typeof t.name&&!Is(t)}function As(t){if(!Rs(t))return!1;var e=to(t);return e==K||e==X||e==H||e==et}function Ts(t){return"number"==typeof t&&t==qs(t)}function Ss(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=M}function Rs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Os(t){return null!=t&&"object"==typeof t}var Ns=ze?_n(ze):function(t){return Os(t)&&Hi(t)==Z};function Ls(t){return"number"==typeof t||Os(t)&&to(t)==J}function Is(t){if(!Os(t)||to(t)!=tt)return!1;var e=Re(t);if(null===e)return!0;var n=le.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ue.call(n)==he}var Ds=qe?_n(qe):function(t){return Os(t)&&to(t)==nt};var Ms=He?_n(He):function(t){return Os(t)&&Hi(t)==rt};function Ps(t){return"string"==typeof t||!_s(t)&&Os(t)&&to(t)==ot}function js(t){return"symbol"==typeof t||Os(t)&&to(t)==it}var Fs=Ge?_n(Ge):function(t){return Os(t)&&Ss(t.length)&&!!Te[to(t)]};var Us=xi(ho),$s=xi((function(t,e){return t<=e}));function Bs(t){if(!t)return[];if(Es(t))return Ps(t)?Dn(t):ii(t);if(Fe&&t[Fe])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Fe]());var e=Hi(t);return(e==Z?Sn:e==rt?Nn:gc)(t)}function zs(t){return t?(t=Gs(t))===D||t===-D?(t<0?-1:1)*P:t==t?t:0:0===t?t:0}function qs(t){var e=zs(t),n=e%1;return e==e?n?e-n:e:0}function Hs(t){return t?Pr(qs(t),0,F):0}function Gs(t){if("number"==typeof t)return t;if(js(t))return j;if(Rs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Rs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=bn(t);var n=Vt.test(t);return n||Yt.test(t)?Ne(t.slice(2),n?2:8):Gt.test(t)?j:+t}function Vs(t){return ai(t,sc(t))}function Ws(t){return null==t?"":Uo(t)}var Ys=ci((function(t,e){if(Qi(e)||Es(e))ai(e,ac(e),t);else for(var n in e)le.call(e,n)&&Or(t,n,e[n])})),Ks=ci((function(t,e){ai(e,sc(e),t)})),Xs=ci((function(t,e,n,r){ai(e,sc(e),t,r)})),Zs=ci((function(t,e,n,r){ai(e,ac(e),t,r)})),Js=Li(Mr);var Qs=Ao((function(t,e){t=ee(t);var n=-1,r=e.length,o=r>2?e[2]:i;for(o&&Ki(e[0],e[1],o)&&(r=1);++n1),e})),ai(t,Di(t),n),r&&(n=jr(n,d|h|g,Oi));for(var o=e.length;o--;)Bo(n,e[o]);return n}));var fc=Li((function(t,e){return null==t?{}:function(t,e){return Eo(t,e,(function(e,n){return nc(t,n)}))}(t,e)}));function pc(t,e){if(null==t)return{};var n=tn(Di(t),(function(t){return[t]}));return e=Fi(e),Eo(t,n,(function(t,n){return e(t,n[0])}))}var dc=Ai(ac),hc=Ai(sc);function gc(t){return null==t?[]:yn(t,ac(t))}var mc=pi((function(t,e,n){return e=e.toLowerCase(),t+(n?vc(e):e)}));function vc(t){return Cc(Ws(t).toLowerCase())}function bc(t){return(t=Ws(t))&&t.replace(Xt,wn).replace(ye,"")}var _c=pi((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),yc=pi((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Ec=fi("toLowerCase");var xc=pi((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var kc=pi((function(t,e,n){return t+(n?" ":"")+Cc(e)}));var wc=pi((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Cc=fi("toUpperCase");function Ac(t,e,n){return t=Ws(t),(e=n?i:e)===i?function(t){return we.test(t)}(t)?function(t){return t.match(xe)||[]}(t):function(t){return t.match($t)||[]}(t):t.match(e)||[]}var Tc=Ao((function(t,e){try{return Ve(t,i,e)}catch(t){return Cs(t)?t:new Pt(t)}})),Sc=Li((function(t,e){return Ye(e,(function(e){e=pa(e),Dr(t,e,os(t[e],t))})),t}));function Rc(t){return function(){return t}}var Oc=gi(),Nc=gi(!0);function Lc(t){return t}function Ic(t){return lo("function"==typeof t?t:jr(t,d))}var Dc=Ao((function(t,e){return function(n){return io(n,t,e)}})),Mc=Ao((function(t,e){return function(n){return io(t,n,e)}}));function Pc(t,e,n){var r=ac(e),o=Zr(e,r);null!=n||Rs(e)&&(o.length||!r.length)||(n=e,e=t,t=this,o=Zr(e,ac(e)));var i=!(Rs(n)&&"chain"in n&&!n.chain),a=As(t);return Ye(o,(function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),o=n.__actions__=ii(this.__actions__);return o.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,en([this.value()],arguments))})})),t}function jc(){}var Fc=_i(tn),Uc=_i(Xe),$c=_i(on);function Bc(t){return Xi(t)?dn(pa(t)):function(t){return function(e){return Jr(e,t)}}(t)}var zc=Ei(),qc=Ei(!0);function Hc(){return[]}function Gc(){return!1}var Vc=bi((function(t,e){return t+e}),0),Wc=wi("ceil"),Yc=bi((function(t,e){return t/e}),1),Kc=wi("floor");var Xc,Zc=bi((function(t,e){return t*e}),1),Jc=wi("round"),Qc=bi((function(t,e){return t-e}),0);return gr.after=function(t,e){if("function"!=typeof e)throw new oe(c);return t=qs(t),function(){if(--t<1)return e.apply(this,arguments)}},gr.ary=ns,gr.assign=Ys,gr.assignIn=Ks,gr.assignInWith=Xs,gr.assignWith=Zs,gr.at=Js,gr.before=rs,gr.bind=os,gr.bindAll=Sc,gr.bindKey=is,gr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return _s(t)?t:[t]},gr.chain=Ba,gr.chunk=function(t,e,n){e=(n?Ki(t,e,n):e===i)?1:Wn(qs(e),0);var o=null==t?0:t.length;if(!o||e<1)return[];for(var a=0,s=0,c=r($n(o/e));ao?0:o+n),(r=r===i||r>o?o:qs(r))<0&&(r+=o),r=n>r?0:Hs(r);n>>0)?(t=Ws(t))&&("string"==typeof e||null!=e&&!Ds(e))&&!(e=Uo(e))&&Tn(t)?Zo(Dn(t),0,n):t.split(e,n):[]},gr.spread=function(t,e){if("function"!=typeof t)throw new oe(c);return e=null==e?0:Wn(qs(e),0),Ao((function(n){var r=n[e],o=Zo(n,0,e);return r&&en(o,r),Ve(t,this,o)}))},gr.tail=function(t){var e=null==t?0:t.length;return e?Io(t,1,e):[]},gr.take=function(t,e,n){return t&&t.length?Io(t,0,(e=n||e===i?1:qs(e))<0?0:e):[]},gr.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Io(t,(e=r-(e=n||e===i?1:qs(e)))<0?0:e,r):[]},gr.takeRightWhile=function(t,e){return t&&t.length?qo(t,Fi(e,3),!1,!0):[]},gr.takeWhile=function(t,e){return t&&t.length?qo(t,Fi(e,3)):[]},gr.tap=function(t,e){return e(t),t},gr.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new oe(c);return Rs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),as(t,e,{leading:r,maxWait:e,trailing:o})},gr.thru=za,gr.toArray=Bs,gr.toPairs=dc,gr.toPairsIn=hc,gr.toPath=function(t){return _s(t)?tn(t,pa):js(t)?[t]:ii(fa(Ws(t)))},gr.toPlainObject=Vs,gr.transform=function(t,e,n){var r=_s(t),o=r||ks(t)||Fs(t);if(e=Fi(e,4),null==n){var i=t&&t.constructor;n=o?r?new i:[]:Rs(t)&&As(i)?mr(Re(t)):{}}return(o?Ye:Kr)(t,(function(t,r,o){return e(n,t,r,o)})),n},gr.unary=function(t){return ns(t,1)},gr.union=Oa,gr.unionBy=Na,gr.unionWith=La,gr.uniq=function(t){return t&&t.length?$o(t):[]},gr.uniqBy=function(t,e){return t&&t.length?$o(t,Fi(e,2)):[]},gr.uniqWith=function(t,e){return e="function"==typeof e?e:i,t&&t.length?$o(t,i,e):[]},gr.unset=function(t,e){return null==t||Bo(t,e)},gr.unzip=Ia,gr.unzipWith=Da,gr.update=function(t,e,n){return null==t?t:zo(t,e,Yo(n))},gr.updateWith=function(t,e,n,r){return r="function"==typeof r?r:i,null==t?t:zo(t,e,Yo(n),r)},gr.values=gc,gr.valuesIn=function(t){return null==t?[]:yn(t,sc(t))},gr.without=Ma,gr.words=Ac,gr.wrap=function(t,e){return ps(Yo(e),t)},gr.xor=Pa,gr.xorBy=ja,gr.xorWith=Fa,gr.zip=Ua,gr.zipObject=function(t,e){return Vo(t||[],e||[],Or)},gr.zipObjectDeep=function(t,e){return Vo(t||[],e||[],Ro)},gr.zipWith=$a,gr.entries=dc,gr.entriesIn=hc,gr.extend=Ks,gr.extendWith=Xs,Pc(gr,gr),gr.add=Vc,gr.attempt=Tc,gr.camelCase=mc,gr.capitalize=vc,gr.ceil=Wc,gr.clamp=function(t,e,n){return n===i&&(n=e,e=i),n!==i&&(n=(n=Gs(n))==n?n:0),e!==i&&(e=(e=Gs(e))==e?e:0),Pr(Gs(t),e,n)},gr.clone=function(t){return jr(t,g)},gr.cloneDeep=function(t){return jr(t,d|g)},gr.cloneDeepWith=function(t,e){return jr(t,d|g,e="function"==typeof e?e:i)},gr.cloneWith=function(t,e){return jr(t,g,e="function"==typeof e?e:i)},gr.conformsTo=function(t,e){return null==e||Fr(t,e,ac(e))},gr.deburr=bc,gr.defaultTo=function(t,e){return null==t||t!=t?e:t},gr.divide=Yc,gr.endsWith=function(t,e,n){t=Ws(t),e=Uo(e);var r=t.length,o=n=n===i?r:Pr(qs(n),0,r);return(n-=e.length)>=0&&t.slice(n,o)==e},gr.eq=gs,gr.escape=function(t){return(t=Ws(t))&&At.test(t)?t.replace(wt,Cn):t},gr.escapeRegExp=function(t){return(t=Ws(t))&&Dt.test(t)?t.replace(It,"\\$&"):t},gr.every=function(t,e,n){var r=_s(t)?Xe:qr;return n&&Ki(t,e,n)&&(e=i),r(t,Fi(e,3))},gr.find=Ga,gr.findIndex=ba,gr.findKey=function(t,e){return sn(t,Fi(e,3),Kr)},gr.findLast=Va,gr.findLastIndex=_a,gr.findLastKey=function(t,e){return sn(t,Fi(e,3),Xr)},gr.floor=Kc,gr.forEach=Wa,gr.forEachRight=Ya,gr.forIn=function(t,e){return null==t?t:Wr(t,Fi(e,3),sc)},gr.forInRight=function(t,e){return null==t?t:Yr(t,Fi(e,3),sc)},gr.forOwn=function(t,e){return t&&Kr(t,Fi(e,3))},gr.forOwnRight=function(t,e){return t&&Xr(t,Fi(e,3))},gr.get=ec,gr.gt=ms,gr.gte=vs,gr.has=function(t,e){return null!=t&&Gi(t,e,no)},gr.hasIn=nc,gr.head=Ea,gr.identity=Lc,gr.includes=function(t,e,n,r){t=Es(t)?t:gc(t),n=n&&!r?qs(n):0;var o=t.length;return n<0&&(n=Wn(o+n,0)),Ps(t)?n<=o&&t.indexOf(e,n)>-1:!!o&&un(t,e,n)>-1},gr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=null==n?0:qs(n);return o<0&&(o=Wn(r+o,0)),un(t,e,o)},gr.inRange=function(t,e,n){return e=zs(e),n===i?(n=e,e=0):n=zs(n),function(t,e,n){return t>=Yn(e,n)&&t=-M&&t<=M},gr.isSet=Ms,gr.isString=Ps,gr.isSymbol=js,gr.isTypedArray=Fs,gr.isUndefined=function(t){return t===i},gr.isWeakMap=function(t){return Os(t)&&Hi(t)==st},gr.isWeakSet=function(t){return Os(t)&&to(t)==ct},gr.join=function(t,e){return null==t?"":Gn.call(t,e)},gr.kebabCase=_c,gr.last=Ca,gr.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=qs(n))<0?Wn(r+o,0):Yn(o,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):cn(t,fn,o,!0)},gr.lowerCase=yc,gr.lowerFirst=Ec,gr.lt=Us,gr.lte=$s,gr.max=function(t){return t&&t.length?Hr(t,Lc,eo):i},gr.maxBy=function(t,e){return t&&t.length?Hr(t,Fi(e,2),eo):i},gr.mean=function(t){return pn(t,Lc)},gr.meanBy=function(t,e){return pn(t,Fi(e,2))},gr.min=function(t){return t&&t.length?Hr(t,Lc,ho):i},gr.minBy=function(t,e){return t&&t.length?Hr(t,Fi(e,2),ho):i},gr.stubArray=Hc,gr.stubFalse=Gc,gr.stubObject=function(){return{}},gr.stubString=function(){return""},gr.stubTrue=function(){return!0},gr.multiply=Zc,gr.nth=function(t,e){return t&&t.length?_o(t,qs(e)):i},gr.noConflict=function(){return De._===this&&(De._=ge),this},gr.noop=jc,gr.now=es,gr.pad=function(t,e,n){t=Ws(t);var r=(e=qs(e))?In(t):0;if(!e||r>=e)return t;var o=(e-r)/2;return yi(Bn(o),n)+t+yi($n(o),n)},gr.padEnd=function(t,e,n){t=Ws(t);var r=(e=qs(e))?In(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var o=Zn();return Yn(t+o*(e-t+Oe("1e-"+((o+"").length-1))),e)}return wo(t,e)},gr.reduce=function(t,e,n){var r=_s(t)?nn:gn,o=arguments.length<3;return r(t,Fi(e,4),n,o,Br)},gr.reduceRight=function(t,e,n){var r=_s(t)?rn:gn,o=arguments.length<3;return r(t,Fi(e,4),n,o,zr)},gr.repeat=function(t,e,n){return e=(n?Ki(t,e,n):e===i)?1:qs(e),Co(Ws(t),e)},gr.replace=function(){var t=arguments,e=Ws(t[0]);return t.length<3?e:e.replace(t[1],t[2])},gr.result=function(t,e,n){var r=-1,o=(e=Ko(e,t)).length;for(o||(o=1,t=i);++rM)return[];var n=F,r=Yn(t,F);e=Fi(e),t-=F;for(var o=vn(r,e);++n=a)return t;var c=n-In(r);if(c<1)return r;var u=s?Zo(s,0,c).join(""):t.slice(0,c);if(o===i)return u+r;if(s&&(c+=u.length-c),Ds(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=ne(o.source,Ws(Ht.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===i?c:p)}}else if(t.indexOf(Uo(o),c)!=c){var d=u.lastIndexOf(o);d>-1&&(u=u.slice(0,d))}return u+r},gr.unescape=function(t){return(t=Ws(t))&&Ct.test(t)?t.replace(kt,Pn):t},gr.uniqueId=function(t){var e=++fe;return Ws(t)+e},gr.upperCase=wc,gr.upperFirst=Cc,gr.each=Wa,gr.eachRight=Ya,gr.first=Ea,Pc(gr,(Xc={},Kr(gr,(function(t,e){le.call(gr.prototype,e)||(Xc[e]=t)})),Xc),{chain:!1}),gr.VERSION="4.17.21",Ye(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){gr[t].placeholder=gr})),Ye(["drop","take"],(function(t,e){_r.prototype[t]=function(n){n=n===i?1:Wn(qs(n),0);var r=this.__filtered__&&!e?new _r(this):this.clone();return r.__filtered__?r.__takeCount__=Yn(n,r.__takeCount__):r.__views__.push({size:Yn(n,F),type:t+(r.__dir__<0?"Right":"")}),r},_r.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ye(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=n==L||3==n;_r.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Fi(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ye(["head","last"],(function(t,e){var n="take"+(e?"Right":"");_r.prototype[t]=function(){return this[n](1).value()[0]}})),Ye(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");_r.prototype[t]=function(){return this.__filtered__?new _r(this):this[n](1)}})),_r.prototype.compact=function(){return this.filter(Lc)},_r.prototype.find=function(t){return this.filter(t).head()},_r.prototype.findLast=function(t){return this.reverse().find(t)},_r.prototype.invokeMap=Ao((function(t,e){return"function"==typeof t?new _r(this):this.map((function(n){return io(n,t,e)}))})),_r.prototype.reject=function(t){return this.filter(ls(Fi(t)))},_r.prototype.slice=function(t,e){t=qs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new _r(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==i&&(n=(e=qs(e))<0?n.dropRight(-e):n.take(e-t)),n)},_r.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},_r.prototype.toArray=function(){return this.take(F)},Kr(_r.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),o=gr[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);o&&(gr.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,c=e instanceof _r,u=s[0],l=c||_s(e),f=function(t){var e=o.apply(gr,en([t],s));return r&&p?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,d=!!this.__actions__.length,h=a&&!p,g=c&&!d;if(!a&&l){e=g?e:new _r(this);var m=t.apply(e,s);return m.__actions__.push({func:za,args:[f],thisArg:i}),new br(m,p)}return h&&g?t.apply(this,s):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),Ye(["pop","push","shift","sort","splice","unshift"],(function(t){var e=ie[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);gr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(_s(o)?o:[],t)}return this[n]((function(n){return e.apply(_s(n)?n:[],t)}))}})),Kr(_r.prototype,(function(t,e){var n=gr[e];if(n){var r=n.name+"";le.call(ar,r)||(ar[r]=[]),ar[r].push({name:e,func:n})}})),ar[mi(i,_).name]=[{name:"wrapper",func:i}],_r.prototype.clone=function(){var t=new _r(this.__wrapped__);return t.__actions__=ii(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=ii(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=ii(this.__views__),t},_r.prototype.reverse=function(){if(this.__filtered__){var t=new _r(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},_r.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=_s(t),r=e<0,o=n?t.length:0,i=function(t,e,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:t,value:t?i:this.__values__[this.__index__++]}},gr.prototype.plant=function(t){for(var e,n=this;n instanceof vr;){var r=ha(n);r.__index__=0,r.__values__=i,e?o.__wrapped__=r:e=r;var o=r;n=n.__wrapped__}return o.__wrapped__=t,e},gr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof _r){var e=t;return this.__actions__.length&&(e=new _r(this)),(e=e.reverse()).__actions__.push({func:za,args:[Ra],thisArg:i}),new br(e,this.__chain__)}return this.thru(Ra)},gr.prototype.toJSON=gr.prototype.valueOf=gr.prototype.value=function(){return Ho(this.__wrapped__,this.__actions__)},gr.prototype.first=gr.prototype.head,Fe&&(gr.prototype[Fe]=function(){return this}),gr}();De._=jn,(o=function(){return jn}.call(e,n,e,r))===i||(r.exports=o)}).call(this)}).call(this,n(11),n(22)(t))},function(t,e){function n(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((function(e){var r=t[e];"object"!=typeof r||Object.isFrozen(r)||n(r)})),t}var r=n,o=n;r.default=o;class i{constructor(t){void 0===t.data&&(t.data={}),this.data=t.data}ignoreMatch(){this.ignore=!0}}function a(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(t,...e){const n=Object.create(null);for(const e in t)n[e]=t[e];return e.forEach((function(t){for(const e in t)n[e]=t[e]})),n}function c(t){return t.nodeName.toLowerCase()}var u=Object.freeze({__proto__:null,escapeHTML:a,inherit:s,nodeStream:function(t){const e=[];return function t(n,r){for(let o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(e.push({event:"start",offset:r,node:o}),r=t(o,r),c(o).match(/br|hr|img|input/)||e.push({event:"stop",offset:r,node:o}));return r}(t,0),e},mergeStreams:function(t,e,n){let r=0,o="";const i=[];function s(){return t.length&&e.length?t[0].offset!==e[0].offset?t[0].offset"}function l(t){o+=""}function f(t){("start"===t.event?u:l)(t.node)}for(;t.length||e.length;){let e=s();if(o+=a(n.substring(r,e[0].offset)),r=e[0].offset,e===t){i.reverse().forEach(l);do{f(e.splice(0,1)[0]),e=s()}while(e===t&&e.length&&e[0].offset===r);i.reverse().forEach(u)}else"start"===e[0].event?i.push(e[0].node):i.pop(),f(e.splice(0,1)[0])}return o+a(n.substr(r))}});const l="",f=t=>!!t.kind;class p{constructor(t,e){this.buffer="",this.classPrefix=e.classPrefix,t.walk(this)}addText(t){this.buffer+=a(t)}openNode(t){if(!f(t))return;let e=t.kind;t.sublanguage||(e=`${this.classPrefix}${e}`),this.span(e)}closeNode(t){f(t)&&(this.buffer+=l)}value(){return this.buffer}span(t){this.buffer+=``}}class d{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const e={kind:t,children:[]};this.add(e),this.stack.push(e)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,e){return"string"==typeof e?t.addText(e):e.children&&(t.openNode(e),e.children.forEach(e=>this._walk(t,e)),t.closeNode(e)),t}static _collapse(t){"string"!=typeof t&&t.children&&(t.children.every(t=>"string"==typeof t)?t.children=[t.children.join("")]:t.children.forEach(t=>{d._collapse(t)}))}}class h extends d{constructor(t){super(),this.options=t}addKeyword(t,e){""!==t&&(this.openNode(e),this.addText(t),this.closeNode())}addText(t){""!==t&&this.add(t)}addSublanguage(t,e){const n=t.root;n.kind=e,n.sublanguage=!0,this.add(n)}toHTML(){return new p(this,this.options).value()}finalize(){return!0}}function g(t){return t?"string"==typeof t?t:t.source:null}const m="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v={begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[v]},_={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[v]},y={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},E=function(t,e,n={}){const r=s({className:"comment",begin:t,end:e,contains:[]},n);return r.contains.push(y),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),r},x=E("//","$"),k=E("/\\*","\\*/"),w=E("#","$"),C={className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},A={className:"number",begin:m,relevance:0},T={className:"number",begin:"\\b(0b[01]+)",relevance:0},S={className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},R={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,contains:[v]}]}]},O={className:"title",begin:"[a-zA-Z]\\w*",relevance:0},N={className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},L={begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0};var I=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:m,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(t={})=>{const e=/^#![ ]*\//;return t.binary&&(t.begin=function(...t){return t.map(t=>g(t)).join("")}(e,/.*\b/,t.binary,/\b.*/)),s({className:"meta",begin:e,end:/$/,relevance:0,"on:begin":(t,e)=>{0!==t.index&&e.ignoreMatch()}},t)},BACKSLASH_ESCAPE:v,APOS_STRING_MODE:b,QUOTE_STRING_MODE:_,PHRASAL_WORDS_MODE:y,COMMENT:E,C_LINE_COMMENT_MODE:x,C_BLOCK_COMMENT_MODE:k,HASH_COMMENT_MODE:w,NUMBER_MODE:C,C_NUMBER_MODE:A,BINARY_NUMBER_MODE:T,CSS_NUMBER_MODE:S,REGEXP_MODE:R,TITLE_MODE:O,UNDERSCORE_TITLE_MODE:N,METHOD_GUARD:L,END_SAME_AS_BEGIN:function(t){return Object.assign(t,{"on:begin":(t,e)=>{e.data._beginMatch=t[1]},"on:end":(t,e)=>{e.data._beginMatch!==t[1]&&e.ignoreMatch()}})}});const D=["of","and","for","in","not","or","if","then","parent","list","value"];function M(t){function e(e,n){return new RegExp(g(e),"m"+(t.case_insensitive?"i":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(t,e){e.position=this.position++,this.matchIndexes[this.matchAt]=e,this.regexes.push([e,t]),this.matchAt+=function(t){return new RegExp(t.toString()+"|").exec("").length-1}(t)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const t=this.regexes.map(t=>t[1]);this.matcherRe=e(function(t,e="|"){const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let r=0,o="";for(let i=0;i0&&(o+=e),o+="(";s.length>0;){const t=n.exec(s);if(null==t){o+=s;break}o+=s.substring(0,t.index),s=s.substring(t.index+t[0].length),"\\"===t[0][0]&&t[1]?o+="\\"+String(Number(t[1])+a):(o+=t[0],"("===t[0]&&r++)}o+=")"}return o}(t),!0),this.lastIndex=0}exec(t){this.matcherRe.lastIndex=this.lastIndex;const e=this.matcherRe.exec(t);if(!e)return null;const n=e.findIndex((t,e)=>e>0&&void 0!==t),r=this.matchIndexes[n];return e.splice(0,n),Object.assign(e,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(t){if(this.multiRegexes[t])return this.multiRegexes[t];const e=new n;return this.rules.slice(t).forEach(([t,n])=>e.addRule(t,n)),e.compile(),this.multiRegexes[t]=e,e}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(t,e){this.rules.push([t,e]),"begin"===e.type&&this.count++}exec(t){const e=this.getMatcher(this.regexIndex);e.lastIndex=this.lastIndex;let n=e.exec(t);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const e=this.getMatcher(0);e.lastIndex=this.lastIndex+1,n=e.exec(t)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function o(t,e){"."===t.input[t.index-1]&&e.ignoreMatch()}if(t.contains&&t.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return t.classNameAliases=s(t.classNameAliases||{}),function n(i,a){const c=i;if(i.compiled)return c;i.compiled=!0,i.__beforeBegin=null,i.keywords=i.keywords||i.beginKeywords;let u=null;if("object"==typeof i.keywords&&(u=i.keywords.$pattern,delete i.keywords.$pattern),i.keywords&&(i.keywords=function(t,e){const n={};"string"==typeof t?r("keyword",t):Object.keys(t).forEach((function(e){r(e,t[e])}));return n;function r(t,r){e&&(r=r.toLowerCase()),r.split(" ").forEach((function(e){const r=e.split("|");n[r[0]]=[t,P(r[0],r[1])]}))}}(i.keywords,t.case_insensitive)),i.lexemes&&u)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return c.keywordPatternRe=e(i.lexemes||u||/\w+/,!0),a&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",i.__beforeBegin=o),i.begin||(i.begin=/\B|\b/),c.beginRe=e(i.begin),i.endSameAsBegin&&(i.end=i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(c.endRe=e(i.end)),c.terminator_end=g(i.end)||"",i.endsWithParent&&a.terminator_end&&(c.terminator_end+=(i.end?"|":"")+a.terminator_end)),i.illegal&&(c.illegalRe=e(i.illegal)),void 0===i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((function(t){return function(t){t.variants&&!t.cached_variants&&(t.cached_variants=t.variants.map((function(e){return s(t,{variants:null},e)})));if(t.cached_variants)return t.cached_variants;if(function t(e){if(!e)return!1;return e.endsWithParent||t(e.starts)}(t))return s(t,{starts:t.starts?s(t.starts):null});if(Object.isFrozen(t))return s(t);return t}("self"===t?i:t)}))),i.contains.forEach((function(t){n(t,c)})),i.starts&&n(i.starts,a),c.matcher=function(t){const e=new r;return t.contains.forEach(t=>e.addRule(t.begin,{rule:t,type:"begin"})),t.terminator_end&&e.addRule(t.terminator_end,{type:"end"}),t.illegal&&e.addRule(t.illegal,{type:"illegal"}),e}(c),c}(t)}function P(t,e){return e?Number(e):function(t){return D.includes(t.toLowerCase())}(t)?0:1}function j(t){const e={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!t.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,a(this.code);let e;return this.autoDetect?(e=t.highlightAuto(this.code),this.detectedLanguage=e.language):(e=t.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),e.value},autoDetect(){return!this.language||(t=this.autodetect,Boolean(t||""===t));var t},ignoreIllegals:()=>!0},render(t){return t("pre",{},[t("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:e,VuePlugin:{install(t){t.component("highlightjs",e)}}}}const F=a,U=s,{nodeStream:$,mergeStreams:B}=u,z=Symbol("nomatch");var q=function(t){const e=[],n=Object.create(null),o=Object.create(null),a=[];let s=!0;const c=/(^(<[^>]+>|\t|)+|\n)/gm,u="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:h};function p(t){return f.noHighlightRe.test(t)}function d(t,e,n,r){const o={code:e,language:t};k("before:highlight",o);const i=o.result?o.result:g(o.language,o.code,n,r);return i.code=o.code,k("after:highlight",i),i}function g(t,e,r,o){const a=e;function c(t,e){const n=E.case_insensitive?e[0].toLowerCase():e[0];return Object.prototype.hasOwnProperty.call(t.keywords,n)&&t.keywords[n]}function l(){null!=w.subLanguage?function(){if(""===T)return;let t=null;if("string"==typeof w.subLanguage){if(!n[w.subLanguage])return void A.addText(T);t=g(w.subLanguage,T,!0,C[w.subLanguage]),C[w.subLanguage]=t.top}else t=m(T,w.subLanguage.length?w.subLanguage:null);w.relevance>0&&(S+=t.relevance),A.addSublanguage(t.emitter,t.language)}():function(){if(!w.keywords)return void A.addText(T);let t=0;w.keywordPatternRe.lastIndex=0;let e=w.keywordPatternRe.exec(T),n="";for(;e;){n+=T.substring(t,e.index);const r=c(w,e);if(r){const[t,o]=r;A.addText(n),n="",S+=o;const i=E.classNameAliases[t]||t;A.addKeyword(e[0],i)}else n+=e[0];t=w.keywordPatternRe.lastIndex,e=w.keywordPatternRe.exec(T)}n+=T.substr(t),A.addText(n)}(),T=""}function p(t){return t.className&&A.openNode(E.classNameAliases[t.className]||t.className),w=Object.create(t,{parent:{value:w}})}function d(t){return 0===w.matcher.regexIndex?(T+=t[0],1):(N=!0,0)}function h(t){const e=t[0],n=t.rule,r=new i(n),o=[n.__beforeBegin,n["on:begin"]];for(const n of o)if(n&&(n(t,r),r.ignore))return d(e);return n&&n.endSameAsBegin&&(n.endRe=new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?T+=e:(n.excludeBegin&&(T+=e),l(),n.returnBegin||n.excludeBegin||(T=e)),p(n),n.returnBegin?0:e.length}function v(t){const e=t[0],n=a.substr(t.index),r=function t(e,n,r){let o=function(t,e){const n=t&&t.exec(e);return n&&0===n.index}(e.endRe,r);if(o){if(e["on:end"]){const t=new i(e);e["on:end"](n,t),t.ignore&&(o=!1)}if(o){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return t(e.parent,n,r)}(w,t,n);if(!r)return z;const o=w;o.skip?T+=e:(o.returnEnd||o.excludeEnd||(T+=e),l(),o.excludeEnd&&(T=e));do{w.className&&A.closeNode(),w.skip||w.subLanguage||(S+=w.relevance),w=w.parent}while(w!==r.parent);return r.starts&&(r.endSameAsBegin&&(r.starts.endRe=r.endRe),p(r.starts)),o.returnEnd?0:e.length}let b={};function _(e,n){const o=n&&n[0];if(T+=e,null==o)return l(),0;if("begin"===b.type&&"end"===n.type&&b.index===n.index&&""===o){if(T+=a.slice(n.index,n.index+1),!s){const e=new Error("0 width match regex");throw e.languageName=t,e.badRule=b.rule,e}return 1}if(b=n,"begin"===n.type)return h(n);if("illegal"===n.type&&!r){const t=new Error('Illegal lexeme "'+o+'" for mode "'+(w.className||"")+'"');throw t.mode=w,t}if("end"===n.type){const t=v(n);if(t!==z)return t}if("illegal"===n.type&&""===o)return 1;if(O>1e5&&O>3*n.index){throw new Error("potential infinite loop, way more iterations than matches")}return T+=o,o.length}const E=y(t);if(!E)throw console.error(u.replace("{}",t)),new Error('Unknown language: "'+t+'"');const x=M(E);let k="",w=o||x;const C={},A=new f.__emitter(f);!function(){const t=[];for(let e=w;e!==E;e=e.parent)e.className&&t.unshift(e.className);t.forEach(t=>A.openNode(t))}();let T="",S=0,R=0,O=0,N=!1;try{for(w.matcher.considerAll();;){O++,N?N=!1:w.matcher.considerAll(),w.matcher.lastIndex=R;const t=w.matcher.exec(a);if(!t)break;const e=_(a.substring(R,t.index),t);R=t.index+e}return _(a.substr(R)),A.closeAllNodes(),A.finalize(),k=A.toHTML(),{relevance:S,value:k,language:t,illegal:!1,emitter:A,top:w}}catch(e){if(e.message&&e.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:e.message,context:a.slice(R-100,R+100),mode:e.mode},sofar:k,relevance:0,value:F(a),emitter:A};if(s)return{illegal:!1,relevance:0,value:F(a),emitter:A,language:t,top:w,errorRaised:e};throw e}}function m(t,e){e=e||f.languages||Object.keys(n);const r=function(t){const e={relevance:0,emitter:new f.__emitter(f),value:F(t),illegal:!1,top:l};return e.emitter.addText(t),e}(t),o=e.filter(y).filter(x).map(e=>g(e,t,!1));o.unshift(r);const i=o.sort((t,e)=>{if(t.relevance!==e.relevance)return e.relevance-t.relevance;if(t.language&&e.language){if(y(t.language).supersetOf===e.language)return 1;if(y(e.language).supersetOf===t.language)return-1}return 0}),[a,s]=i,c=a;return c.second_best=s,c}function v(t){return f.tabReplace||f.useBR?t.replace(c,t=>"\n"===t?f.useBR?"
":t:f.tabReplace?t.replace(/\t/g,f.tabReplace):t):t}function b(t){let e=null;const n=function(t){let e=t.className+" ";e+=t.parentNode?t.parentNode.className:"";const n=f.languageDetectRe.exec(e);if(n){const e=y(n[1]);return e||(console.warn(u.replace("{}",n[1])),console.warn("Falling back to no-highlight mode for this block.",t)),e?n[1]:"no-highlight"}return e.split(/\s+/).find(t=>p(t)||y(t))}(t);if(p(n))return;k("before:highlightBlock",{block:t,language:n}),f.useBR?(e=document.createElement("div")).innerHTML=t.innerHTML.replace(/\n/g,"").replace(//g,"\n"):e=t;const r=e.textContent,i=n?d(n,r,!0):m(r),a=$(e);if(a.length){const t=document.createElement("div");t.innerHTML=i.value,i.value=B(a,$(t),r)}i.value=v(i.value),k("after:highlightBlock",{block:t,result:i}),t.innerHTML=i.value,t.className=function(t,e,n){const r=e?o[e]:n,i=[t.trim()];return t.match(/\bhljs\b/)||i.push("hljs"),t.includes(r)||i.push(r),i.join(" ").trim()}(t.className,n,i.language),t.result={language:i.language,re:i.relevance,relavance:i.relevance},i.second_best&&(t.second_best={language:i.second_best.language,re:i.second_best.relevance,relavance:i.second_best.relevance})}const _=()=>{if(_.called)return;_.called=!0;const t=document.querySelectorAll("pre code");e.forEach.call(t,b)};function y(t){return t=(t||"").toLowerCase(),n[t]||n[o[t]]}function E(t,{languageName:e}){"string"==typeof t&&(t=[t]),t.forEach(t=>{o[t]=e})}function x(t){const e=y(t);return e&&!e.disableAutodetect}function k(t,e){const n=t;a.forEach((function(t){t[n]&&t[n](e)}))}Object.assign(t,{highlight:d,highlightAuto:m,fixMarkup:function(t){return console.warn("fixMarkup is deprecated and will be removed entirely in v11.0"),console.warn("Please see https://github.com/highlightjs/highlight.js/issues/2534"),v(t)},highlightBlock:b,configure:function(t){t.useBR&&(console.warn("'useBR' option is deprecated and will be removed entirely in v11.0"),console.warn("Please see https://github.com/highlightjs/highlight.js/issues/2559")),f=U(f,t)},initHighlighting:_,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",_,!1)},registerLanguage:function(e,r){let o=null;try{o=r(t)}catch(t){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!s)throw t;console.error(t),o=l}o.name||(o.name=e),n[e]=o,o.rawDefinition=r.bind(null,t),o.aliases&&E(o.aliases,{languageName:e})},listLanguages:function(){return Object.keys(n)},getLanguage:y,registerAliases:E,requireLanguage:function(t){console.warn("requireLanguage is deprecated and will be removed entirely in the future."),console.warn("Please see https://github.com/highlightjs/highlight.js/pull/2844");const e=y(t);if(e)return e;throw new Error("The '{}' language is required, but not loaded.".replace("{}",t))},autoDetection:x,inherit:U,addPlugin:function(t){a.push(t)},vuePlugin:j(t).VuePlugin}),t.debugMode=function(){s=!1},t.safeMode=function(){s=!0},t.versionString="10.4.1";for(const t in I)"object"==typeof I[t]&&r(I[t]);return Object.assign(t,I),t}({});t.exports=q},function(t,e,n){"use strict";t.exports=n(103)},function(t,e,n){"use strict";t.exports.encode=n(104),t.exports.decode=n(105),t.exports.format=n(106),t.exports.parse=n(107)},function(t,e){t.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},function(t,e){t.exports=/[\0-\x1F\x7F-\x9F]/},function(t,e){t.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},function(t,e,n){"use strict";var r="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",o="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",i=new RegExp("^(?:"+r+"|"+o+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|]*>|)"),a=new RegExp("^(?:"+r+"|"+o+")");t.exports.HTML_TAG_RE=i,t.exports.HTML_OPEN_CLOSE_TAG_RE=a},function(t,e,n){"use strict";t.exports.tokenize=function(t,e){var n,r,o,i,a=t.pos,s=t.src.charCodeAt(a);if(e)return!1;if(126!==s)return!1;if(o=(r=t.scanDelims(t.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(t.push("text","",0).content=i,o--),n=0;n=0;e--)95!==(n=s[e]).marker&&42!==n.marker||-1!==n.end&&(r=s[n.end],a=e>0&&s[e-1].end===n.end+1&&s[e-1].token===n.token-1&&s[n.end+1].token===r.token+1&&s[e-1].marker===n.marker,i=String.fromCharCode(n.marker),(o=t.tokens[n.token]).type=a?"strong_open":"em_open",o.tag=a?"strong":"em",o.nesting=1,o.markup=a?i+i:i,o.content="",(o=t.tokens[r.token]).type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?i+i:i,o.content="",a&&(t.tokens[s[e-1].token].content="",t.tokens[s[n.end+1].token].content="",e--))}},function(t,e,n){(function(t,r){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){e&&e.nodeType,t&&t.nodeType;var a="object"==typeof r&&r;a.global!==a&&a.window!==a&&a.self;var s,c=2147483647,u=36,l=1,f=26,p=38,d=700,h=72,g=128,m="-",v=/^xn--/,b=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=u-l,x=Math.floor,k=String.fromCharCode;function w(t){throw new RangeError(y[t])}function C(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function A(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),r+C((t=t.replace(_,".")).split("."),e).join(".")}function T(t){for(var e,n,r=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=k((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=k(t)})).join("")}function R(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function O(t,e,n){var r=0;for(t=n?x(t/d):t>>1,t+=x(t/e);t>E*f>>1;r+=u)t=x(t/E);return x(r+(E+1)*t/(t+p))}function N(t){var e,n,r,o,i,a,s,p,d,v,b,_=[],y=t.length,E=0,k=g,C=h;for((n=t.lastIndexOf(m))<0&&(n=0),r=0;r=128&&w("not-basic"),_.push(t.charCodeAt(r));for(o=n>0?n+1:0;o=y&&w("invalid-input"),((p=(b=t.charCodeAt(o++))-48<10?b-22:b-65<26?b-65:b-97<26?b-97:u)>=u||p>x((c-E)/a))&&w("overflow"),E+=p*a,!(p<(d=s<=C?l:s>=C+f?f:s-C));s+=u)a>x(c/(v=u-d))&&w("overflow"),a*=v;C=O(E-i,e=_.length+1,0==i),x(E/e)>c-k&&w("overflow"),k+=x(E/e),E%=e,_.splice(E++,0,k)}return S(_)}function L(t){var e,n,r,o,i,a,s,p,d,v,b,_,y,E,C,A=[];for(_=(t=T(t)).length,e=g,n=0,i=h,a=0;a<_;++a)(b=t[a])<128&&A.push(k(b));for(r=o=A.length,o&&A.push(m);r<_;){for(s=c,a=0;a<_;++a)(b=t[a])>=e&&bx((c-n)/(y=r+1))&&w("overflow"),n+=(s-e)*y,e=s,a=0;a<_;++a)if((b=t[a])c&&w("overflow"),b==e){for(p=n,d=u;!(p<(v=d<=i?l:d>=i+f?f:d-i));d+=u)C=p-v,E=u-v,A.push(k(R(v+C%E,0))),p=x(C/E);A.push(k(R(p,0))),i=O(n,y,r==o),n=0,++r}++n,++e}return A.join("")}s={version:"1.4.1",ucs2:{decode:T,encode:S},decode:N,encode:L,toASCII:function(t){return A(t,(function(t){return b.test(t)?"xn--"+L(t):t}))},toUnicode:function(t){return A(t,(function(t){return v.test(t)?N(t.slice(4).toLowerCase()):t}))}},void 0===(o=function(){return s}.call(e,n,e,t))||(t.exports=o)}()}).call(this,n(22)(t),n(11))},function(t,e,n){"use strict";t.exports=function(t,e){!0===e&&(e=0);var n=t.indexOf("://"),r=t.substring(0,n).split("+").filter(Boolean);return"number"==typeof e?r[e]:r}},function(t,e,n){"use strict";var r=n(64);t.exports=function t(e){if(Array.isArray(e))return-1!==e.indexOf("ssh")||-1!==e.indexOf("rsync");if("string"!=typeof e)return!1;var n=r(e);return e=e.substring(e.indexOf("://")+3),!!t(n)||e.indexOf("@")=o?t:r(t,e,n)}},function(t,e){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return n.test(t)}},function(t,e,n){var r=n(174),o=n(68),i=n(175);t.exports=function(t){return o(t)?i(t):r(t)}},function(t,e,n){var r=n(23),o=n(176),i=n(9),a=n(24),s=1/0,c=r?r.prototype:void 0,u=c?c.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return o(e,t)+"";if(a(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-s?"-0":n}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(11))},function(t,e,n){var r=n(183),o=n(184),i=n(185);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){var n=/\s/;t.exports=function(t){for(var e=t.length;e--&&n.test(t.charAt(e)););return e}},function(t,e,n){var r=n(18),o=n(20),i="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",c="[object Proxy]";t.exports=function(t){if(!o(t))return!1;var e=r(t);return e==a||e==s||e==i||e==c}},function(t,e,n){var r=n(76),o=n(198),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return o(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},function(t,e,n){var r=n(200),o=n(44),i=n(205),a=n(79),s=n(206),c=n(18),u=n(78),l=u(r),f=u(o),p=u(i),d=u(a),h=u(s),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||o&&"[object Map]"!=g(new o)||i&&"[object Promise]"!=g(i.resolve())||a&&"[object Set]"!=g(new a)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case l:return"[object DataView]";case f:return"[object Map]";case p:return"[object Promise]";case d:return"[object Set]";case h:return"[object WeakMap]"}return e}),t.exports=g},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(12)(n(8),"Set");t.exports=r},function(t,e,n){var r=n(48),o=n(235),i=n(236);function a(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++ep))return!1;var h=l.get(t),g=l.get(e);if(h&&g)return h==e&&g==t;var m=-1,v=!0,b=n&s?new r:void 0;for(l.set(t,e),l.set(e,t);++m>>24)|4278255360&(n[d]<<24|n[d]>>>8);n[c>>>5]|=128<>>9<<4)]=c;var h=s._ff,g=s._gg,m=s._hh,v=s._ii;for(d=0;d>>0,l=l+_>>>0,f=f+y>>>0,p=p+E>>>0}return r.endian([u,l,f,p])})._ff=function(t,e,n,r,o,i,a){var s=t+(e&n|~e&r)+(o>>>0)+a;return(s<>>32-i)+e},s._gg=function(t,e,n,r,o,i,a){var s=t+(e&r|n&~r)+(o>>>0)+a;return(s<>>32-i)+e},s._hh=function(t,e,n,r,o,i,a){var s=t+(e^n^r)+(o>>>0)+a;return(s<>>32-i)+e},s._ii=function(t,e,n,r,o,i,a){var s=t+(n^(e|~r))+(o>>>0)+a;return(s<>>32-i)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error("Illegal argument "+t);var n=r.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?a.bytesToString(n):r.bytesToHex(n)}},function(t,e,n){var r=n(95);"string"==typeof r&&(r=[[t.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(97)(r,o);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(96)(!1)).push([t.i,'@charset \'UTF-8\';\n\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type="button"],\n[type="reset"],\n[type="submit"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type="button"]::-moz-focus-inner,\n[type="reset"]::-moz-focus-inner,\n[type="submit"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type="button"]:-moz-focusring,\n[type="reset"]:-moz-focusring,\n[type="submit"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type="checkbox"],\n[type="radio"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type="number"]::-webkit-inner-spin-button,\n[type="number"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type="search"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type="search"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\n/*\n * Add the correct display in all browsers.\n */\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * 1. Prevent padding and border from affecting element width\n * https://goo.gl/pYtbK7\n * 2. Change the default font family in all browsers (opinionated)\n */\n\nhtml {\n box-sizing: border-box; /* 1 */\n font-family: sans-serif; /* 2 */\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\n\ndl,\ndd,\nh2,\nh3,\nh5,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background: transparent;\n padding: 0;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the system font stack as a sane default.\n * 2. Use Tailwind\'s default "normal" line-height so the user isn\'t forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it\'s border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n*::before,\n*::after {\n border-width: 0;\n border-style: solid;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\ntextarea {\n resize: vertical;\n}\n\ninput::-moz-placeholder,\ntextarea::-moz-placeholder {\n color: #a0aec0;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n color: #a0aec0;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n color: #a0aec0;\n}\n\nbutton,\n[role="button"] {\n cursor: pointer;\n}\n\n\nh2,\nh3,\nh5 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don\'t inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured \'mono\' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * \'mono\' font family.\n */\n\npre,\ncode {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that\'s\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\n\nsvg,\ncanvas {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\n:root {\n --white: rgb(255, 255, 255);\n --blue-400: rgb(122, 122, 255);\n --green-100: rgb(227, 255, 242);\n --green-300: rgb(148, 242, 200);\n --green-400: rgb(114, 224, 175);\n --green-500: rgb(34, 212, 146);\n --purple-100: rgb(251, 245, 255);\n --purple-200: rgb(236, 211, 253);\n --purple-300: rgb(214, 188, 250);\n --purple-400: rgb(183, 148, 244);\n --purple-500: rgb(121, 0, 245);\n --purple-600: rgb(113, 7, 220);\n --purple-800: rgb(79, 15, 143);\n --red-100: rgb(255, 235, 243);\n --red-300: rgb(250, 133, 162);\n --red-400: rgb(250, 78, 121);\n --yellow-100: rgb(255, 253, 235);\n --yellow-200: rgb(255, 248, 196);\n --yellow-300: rgb(255, 243, 148);\n --yellow-400: rgb(255, 234, 79);\n --tint-50: rgba(0, 0, 150, 0.015);\n --tint-100: rgba(0, 0, 150, 0.025);\n --tint-200: rgba(0, 0, 100, 0.07);\n --tint-300: rgba(25, 0, 100, 0.1);\n --tint-400: rgba(20, 0, 100, 0.2);\n --tint-500: rgba(30, 20, 90, 0.35);\n --tint-600: rgba(30, 20, 70, 0.5);\n --tint-700: rgba(15, 10, 60, 0.75);\n --gray-50: rgb(252, 252, 253);\n --gray-100: rgb(247, 247, 252);\n --gray-200: rgb(238, 238, 245);\n --gray-300: rgb(232, 229, 239);\n --gray-400: rgb(209, 204, 224);\n --gray-500: rgb(176, 173, 197);\n --gray-600: rgb(142, 137, 162);\n --gray-700: rgb(75, 71, 109);\n --gray-800: rgb(51, 47, 81);\n /* dark theme */\n --dark-white: rgb(38, 38, 50);\n --dark-blue-400: rgb(85, 0, 255);\n --dark-green-100: rgb(32, 97, 90);\n --dark-green-300: rgb(55, 111, 123);\n --dark-green-500: rgb(63, 152, 142);\n --dark-purple-100: rgb(60, 46, 96);\n --dark-purple-200: rgb(81, 50, 128);\n --dark-purple-300: rgb(104, 85, 147);\n --dark-purple-400: rgb(106, 87, 148);\n --dark-purple-500: rgb(126, 107, 167);\n --dark-purple-600: rgb(145, 127, 183);\n --dark-purple-800: rgb(158, 140, 194);\n --dark-red-100: rgb(255, 235, 243);\n --dark-red-300: rgb(250, 133, 162);\n --dark-red-400: rgb(250, 78, 121);\n --dark-yellow-100: rgb(61, 57, 49);\n --dark-yellow-200: rgb(90, 78, 53);\n --dark-yellow-300: rgb(119, 103, 70);\n --dark-yellow-400: rgb(145, 121, 90);\n --dark-tint-50: rgba(240, 240, 245, 0.05);\n --dark-tint-100: rgba(240, 240, 245, 0.075);\n --dark-tint-200: rgba(240, 240, 245, 0.1);\n --dark-tint-300: rgba(240, 240, 245, 0.125);\n --dark-tint-400: rgba(240, 240, 245, 0.25);\n --dark-tint-500: rgba(240, 240, 245, 0.45);\n --dark-tint-600: rgba(240, 240, 245, 0.55);\n --dark-tint-700: rgba(240, 240, 245, 0.65);\n --dark-gray-0: rgb(30, 30, 40);\n --dark-gray-50: rgb(38, 38, 50);\n --dark-gray-100: rgb(48, 48, 58);\n --dark-gray-200: rgb(51, 51, 65);\n --dark-gray-300: rgb(75, 75, 85);\n --dark-gray-400: rgb(142, 142, 160);\n --dark-gray-500: rgb(152, 152, 170);\n --dark-gray-600: rgb(165, 165, 175);\n --dark-gray-700: rgb(216, 216, 223);\n --dark-gray-800: rgb(230, 230, 235);\n --dark-shadow-sm: \'0 2px 0 var(--gray-0)\';\n --dark-shadow-default: \'0 2px 0 var(--gray-50), 2px 4px 0 var(--gray-0)\';\n --dark-shadow-lg: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50), 4px 6px 0 var(--gray-0)\';\n --dark-shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n}\n\nhtml {\n box-sizing: border-box;\n font-size: 14px;\n background-color: rgb(238, 238, 245);\n background-color: var(--gray-200);\n overflow-x: hidden;\n overflow-y: scroll;\n}\n\n@media (min-width: 1024px) {\n html {\n font-size: 16px;\n }\n}\n\n/* Exclude iframes like 1Password save modals */\n\n*:not(iframe),\n*:after,\n*:before {\n position: relative;\n}\n\n*:focus {\n outline: 0 !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n line-height: 1.5;\n width: 100%;\n}\n\n/* Dark theme */\n\n@media (prefers-color-scheme: dark) {\n html.theme-auto {\n --white: var(--dark-white);\n --blue-400: var(--dark-blue-400);\n --green-100: var(--dark-green-100);\n --green-300: var(--dark-green-300);\n --green-400: var(--dark-green-400);\n --green-500: var(--dark-green-500);\n --purple-100: var(--dark-purple-100);\n --purple-200: var(--dark-purple-200);\n --purple-300: var(--dark-purple-300);\n --purple-400: var(--dark-purple-400);\n --purple-500: var(--dark-purple-500);\n --purple-600: var(--dark-purple-600);\n --purple-800: var(--dark-purple-800);\n --red-100: var(--dark-red-100);\n --red-300: var(--dark-red-300);\n --red-400: var(--dark-red-400);\n --yellow-100: var(--dark-yellow-100);\n --yellow-200: var(--dark-yellow-200);\n --yellow-300: var(--dark-yellow-300);\n --yellow-400: var(--dark-yellow-400);\n --tint-50: var(--dark-tint-50);\n --tint-100: var(--dark-tint-100);\n --tint-200: var(--dark-tint-200);\n --tint-300: var(--dark-tint-300);\n --tint-400: var(--dark-tint-400);\n --tint-500: var(--dark-tint-500);\n --tint-600: var(--dark-tint-600);\n --tint-700: var(--dark-tint-700);\n --gray-0: var(--dark-gray-0);\n --gray-50: var(--dark-gray-50);\n --gray-100: var(--dark-gray-100);\n --gray-200: var(--dark-gray-200);\n --gray-300: var(--dark-gray-300);\n --gray-400: var(--dark-gray-400);\n --gray-500: var(--dark-gray-500);\n --gray-600: var(--dark-gray-600);\n --gray-700: var(--dark-gray-700);\n --gray-800: var(--dark-gray-800);\n --shadow-sm: \'0 2px 0 var(--gray-50)\';\n --shadow-default: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50)\';\n --shadow-lg: \'0 2px 0 var(--gray-200), 2px 4px 0 var(--gray-100), 4px 6px 0 var(--gray-50)\';\n --shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n }\n\n html.theme-auto {\n background-color: rgb(30, 30, 40);\n background-color: var(--dark-gray-0);\n }\n\n html.theme-auto .checkbox:before {\n background-color: rgb(51, 47, 81);\n background-color: var(--gray-800);\n }\n\n html.theme-auto .tab-nav,\n html.theme-auto .dropdown {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n }\n}\n\nhtml.theme-dark {\n --white: var(--dark-white);\n --blue-400: var(--dark-blue-400);\n --green-100: var(--dark-green-100);\n --green-300: var(--dark-green-300);\n --green-400: var(--dark-green-400);\n --green-500: var(--dark-green-500);\n --purple-100: var(--dark-purple-100);\n --purple-200: var(--dark-purple-200);\n --purple-300: var(--dark-purple-300);\n --purple-400: var(--dark-purple-400);\n --purple-500: var(--dark-purple-500);\n --purple-600: var(--dark-purple-600);\n --purple-800: var(--dark-purple-800);\n --red-100: var(--dark-red-100);\n --red-300: var(--dark-red-300);\n --red-400: var(--dark-red-400);\n --yellow-100: var(--dark-yellow-100);\n --yellow-200: var(--dark-yellow-200);\n --yellow-300: var(--dark-yellow-300);\n --yellow-400: var(--dark-yellow-400);\n --tint-50: var(--dark-tint-50);\n --tint-100: var(--dark-tint-100);\n --tint-200: var(--dark-tint-200);\n --tint-300: var(--dark-tint-300);\n --tint-400: var(--dark-tint-400);\n --tint-500: var(--dark-tint-500);\n --tint-600: var(--dark-tint-600);\n --tint-700: var(--dark-tint-700);\n --gray-0: var(--dark-gray-0);\n --gray-50: var(--dark-gray-50);\n --gray-100: var(--dark-gray-100);\n --gray-200: var(--dark-gray-200);\n --gray-300: var(--dark-gray-300);\n --gray-400: var(--dark-gray-400);\n --gray-500: var(--dark-gray-500);\n --gray-600: var(--dark-gray-600);\n --gray-700: var(--dark-gray-700);\n --gray-800: var(--dark-gray-800);\n --shadow-sm: \'0 2px 0 var(--gray-50)\';\n --shadow-default: \'0 2px 0 var(--gray-100), 2px 4px 0 var(--gray-50)\';\n --shadow-lg: \'0 2px 0 var(--gray-200), 2px 4px 0 var(--gray-100), 4px 6px 0 var(--gray-50)\';\n --shadow-input: \'inset 0 2px 0 var(--gray-100)\';\n}\n\nhtml.theme-dark {\n background-color: rgb(30, 30, 40);\n background-color: var(--dark-gray-0);\n}\n\nhtml.theme-dark .checkbox:before {\n background-color: rgb(51, 47, 81);\n background-color: var(--gray-800);\n}\n\nhtml.theme-dark .tab-nav,\nhtml.theme-dark .dropdown {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n}\n\n.alert-empty {\n color: rgba(30, 20, 90, 0.35);\n color: var(--tint-500);\n padding-top: 2rem;\n padding-bottom: 2rem;\n text-align: center;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n padding-left: 1rem;\n padding-right: 1rem;\n min-height: 2.5rem;\n border-width: 0;\n background-color: rgb(121, 0, 245);\n background-color: var(--purple-500);\n overflow: hidden;\n border-radius: 0.125rem;\n color: rgb(255, 255, 255);\n color: var(--white);\n line-height: 1;\n text-decoration: none;\n}\n\n.button:after {\n content: \'\';\n display: block;\n position: absolute;\n left: 100%;\n bottom: 0;\n width: 200%;\n height: 100vh;\n background-color: rgba(30, 20, 90, 0.35);\n background-color: var(--tint-500);\n transform: translateX(-1rem) skewX(-65deg);\n transform-origin: 0% 100%;\n transition: transform 0.75s ease-out;\n}\n\n.button:hover:after {\n transform: translateX(-1.5rem) skewX(-65deg);\n transition-duration: 0.3s;\n}\n\n.button:not(:disabled):active:after {\n transition-delay: 0.2s;\n transition-duration: 0.3s;\n transform: translateX(-100%) skewX(-65deg);\n}\n\n.button-secondary {\n display: inline-flex;\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n padding-left: 1rem;\n padding-right: 1rem;\n min-height: 2.5rem;\n border-width: 0;\n background-color: rgb(121, 0, 245);\n background-color: var(--purple-500);\n overflow: hidden;\n border-radius: 0.125rem;\n color: rgb(255, 255, 255);\n color: var(--white);\n line-height: 1;\n text-decoration: none;\n background-color: rgba(0, 0, 100, 0.07);\n background-color: var(--tint-200);\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n}\n\n.button-secondary:hover {\n background-color: rgba(25, 0, 100, 0.1);\n background-color: var(--tint-300);\n}\n\n.button-secondary:not(:disabled):active {\n background-color: rgba(30, 20, 90, 0.35);\n background-color: var(--tint-500);\n opacity: 0.5;\n}\n\n.button:focus,\n.button-secondary:focus {\n outline: 0;\n}\n\n.button:disabled,\n.button-secondary:disabled {\n cursor: not-allowed;\n opacity: 0.25;\n}\n\n.button-sm {\n font-size: 0.875rem;\n}\n\n.button.button-sm,\n.button-secondary.button-sm {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n min-height: 1.5rem;\n border-radius: 0.125rem;\n}\n\n.button-lg {\n font-size: 1.125rem;\n}\n\n.button.button-lg,\n.button-secondary.button-lg {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n min-height: 3rem;\n}\n\n.button-lg.button:after {\n transform: translateX(-2rem) skewX(-65deg);\n}\n\n.button-lg.button:hover:after {\n transform: translateX(-3rem) skewX(-65deg);\n}\n\n.card {\n position: relative;\n display: grid;\n align-items: stretch;\n border-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n box-shadow: var(--shadow-sm);\n border-radius: 0.125rem;\n}\n\n.card-details {\n overflow: hidden;\n}\n\n.card-details-overflow {\n display: grid;\n grid-gap: 1rem;\n padding: 1.5rem;\n overflow-x: auto;\n}\n\n.card-danger {\n background-color: rgb(250, 78, 121);\n background-color: var(--red-400);\n color: rgb(255, 255, 255);\n color: var(--white);\n}\n\n@media (min-width: 768px) {\n .card {\n grid-template-columns: 16rem 1fr;\n }\n\n .card-has-header {\n grid-template-rows: auto 1fr;\n }\n\n .card.card-no-props {\n display: block;\n }\n\n .card-header {\n grid-column-end: span 2;\n }\n\n .card-details-overflow {\n padding: 2rem;\n }\n}\n\n.checkbox-label {\n display: grid;\n justify-content: flex-start;\n grid-template-columns: auto;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n min-height: 0;\n cursor: pointer;\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n}\n\n.checkbox {\n width: 1.5em;\n height: 1.5em;\n border-style: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.checkbox:before {\n position: absolute;\n width: 1.5em;\n height: 1.5em;\n border-width: 1px;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n background-color: rgb(252, 252, 253);\n background-color: var(--gray-50);\n box-shadow: var(--shadow-default);\n border-radius: 0.125rem;\n overflow: hidden;\n content: \'\';\n}\n\n.checkbox:after {\n position: absolute;\n top: 50%;\n left: 50%;\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n font-size: 1.2em;\n font-weight: 900;\n line-height: 1;\n content: \'✓\';\n transition: transform 0.1s;\n transform: translate(-50%, -50%) scale(0);\n}\n\n.checkbox:focus,\n.checkbox:hover {\n outline: 0;\n}\n\n.checkbox:focus:before {\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.checkbox:hover:before {\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n}\n\n.checkbox:checked:after {\n transform: translate(-50%, -50%) scale(1);\n}\n\n.checkbox:disabled {\n opacity: 0.5;\n}\n\n.code {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.code-inline {\n display: inline-block;\n margin-top: -0.25rem;\n margin-bottom: -0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n word-break: break-all;\n}\n\n.code-block {\n display: block;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-radius: 0.125rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.code-inline pre,\n.code-block pre {\n white-space: pre-wrap;\n}\n\n.definition-list {\n display: grid;\n grid-column-gap: 1.5rem;\n grid-row-gap: 0.5rem;\n}\n\n.definition-list .definition-list {\n border-left-width: 2px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n padding-left: 1rem;\n}\n\n@media (min-width: 640px) {\n .definition-list {\n grid-template-columns: 8rem 1fr;\n }\n\n .definition-list .definition-list {\n grid-template-columns: auto 1fr;\n }\n}\n\n@media (min-width: 1024px) {\n .definition-list {\n grid-template-columns: 14rem 1fr;\n }\n}\n\n.definition-list-title {\n font-weight: 600;\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .definition-list-title {\n margin-left: 9.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n .definition-list-title {\n margin-left: 15.5rem;\n }\n}\n\n.definition-label {\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n word-wrap: break-word;\n line-height: 1.25;\n}\n\n@media (min-width: 640px) {\n .definition-label {\n text-align: right;\n }\n}\n\n.definition-value {\n word-break: break-all;\n margin-bottom: 1rem;\n line-height: 1.25;\n}\n\n@media (min-width: 640px) {\n .definition-value {\n margin-bottom: 0;\n }\n}\n\n.definition-label:empty:after,\n.definition-value:empty:after {\n content: \'—\';\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n}\n\n.definition-list-empty {\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n}\n\n@media (min-width: 640px) {\n .definition-list-empty {\n grid-column-start: 2;\n }\n\n .definition-list .definition-list .definition-list-empty {\n grid-column-start: 1;\n }\n}\n\n.dropdown {\n position: absolute;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n overflow-y: auto;\n max-height: \'66vh\';\n border-width: 1px;\n border-top-width: 0;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n color: rgb(255, 255, 255);\n color: var(--white);\n background-color: rgb(75, 71, 109);\n background-color: var(--gray-700);\n}\n\n.layout-col {\n max-width: 80rem;\n padding-left: 1rem;\n padding-right: 1rem;\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 640px) {\n .layout-col {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n }\n}\n\n.link {\n text-decoration: underline;\n -webkit-text-decoration-color: rgb(209, 204, 224);\n text-decoration-color: rgb(209, 204, 224);\n -webkit-text-decoration-color: var(--gray-400);\n text-decoration-color: var(--gray-400);\n}\n\n.link:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n -webkit-text-decoration-color: rgb(214, 188, 250);\n text-decoration-color: rgb(214, 188, 250);\n -webkit-text-decoration-color: var(--purple-300);\n text-decoration-color: var(--purple-300);\n}\n\n.links a {\n text-decoration: underline;\n -webkit-text-decoration-color: rgb(209, 204, 224);\n text-decoration-color: rgb(209, 204, 224);\n -webkit-text-decoration-color: var(--gray-400);\n text-decoration-color: var(--gray-400);\n}\n\n.links a:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n -webkit-text-decoration-color: rgb(214, 188, 250);\n text-decoration-color: rgb(214, 188, 250);\n -webkit-text-decoration-color: var(--purple-300);\n text-decoration-color: var(--purple-300);\n}\n\n.link-dimmed {\n font-weight: 400;\n text-decoration: underline;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.link-dimmed:hover {\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.link-solution {\n text-decoration: underline;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.link-solution:hover {\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.grid {\n display: grid;\n}\n\n.cols-2 {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.cols-auto {\n grid-template-columns: auto;\n grid-auto-flow: column;\n}\n\n.cols-auto-1fr {\n grid-template-columns: auto 1fr;\n}\n\n.gap-1 {\n grid-gap: 0.25rem;\n}\n\n.gap-2 {\n grid-gap: 0.5rem;\n}\n\n.gapy-2 {\n grid-row-gap: 0.5rem;\n}\n\n.gap-4 {\n grid-gap: 1rem;\n}\n\n.gapx-4 {\n grid-column-gap: 1rem;\n}\n\n.gapx-6 {\n grid-column-gap: 1.5rem;\n}\n\n.span-2 {\n grid-column-end: span 2;\n}\n\n.place-center {\n align-items: center;\n justify-items: center;\n align-content: center;\n justify-content: center;\n}\n\n.icon {\n fill: currentColor;\n height: 1em;\n line-height: 1;\n width: 1em;\n display: inline-block;\n vertical-align: baseline;\n vertical-align: initial;\n}\n\n.scrollbar::-webkit-scrollbar,\n.scrollbar::-webkit-scrollbar-corner {\n width: 4px;\n height: 4px;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.scrollbar::-webkit-scrollbar-track:horizontal,\n.scrollbar-lg::-webkit-scrollbar-track:horizontal {\n border-top: solid 1px rgba(0, 0, 0, 0.1);\n}\n\n.scrollbar::-webkit-scrollbar-track:vertical,\n.scrollbar-lg::-webkit-scrollbar-track:vertical {\n border-left: solid 1px rgba(0, 0, 0, 0.1);\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n background-color: rgb(209, 204, 224);\n background-color: var(--gray-400);\n border-radius: 2px;\n}\n\n.scrollbar-lg::-webkit-scrollbar,\n.scrollbar-lg::-webkit-scrollbar-corner {\n width: 8px;\n height: 8px;\n}\n\n.scrollbar-lg::-webkit-scrollbar-track {\n background-color: rgb(252, 252, 253);\n background-color: var(--gray-50);\n}\n\n.scrollbar-lg::-webkit-scrollbar-thumb {\n background-color: rgb(142, 137, 162);\n background-color: var(--gray-600);\n border-radius: 4px;\n}\n\n:root {\n --stack-height: var(--tab-main-height);\n}\n\n.stack {\n display: grid;\n grid-template: calc(0.4 * calc(100vh - 3rem)) calc(0.6 * calc(100vh - 3rem)) / 1fr;\n grid-template: calc(0.4 * var(--stack-height)) calc(0.6 * var(--stack-height)) / 1fr;\n}\n\n@media (min-width: 640px) {\n .stack {\n align-items: stretch;\n grid-template: calc(100vh - 3rem) / 22rem 1fr;\n grid-template: var(--stack-height) / 22rem 1fr;\n }\n}\n\n.stack-nav {\n height: 100%;\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n border-bottom-width: 1px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n font-size: 0.75rem;\n overflow: hidden;\n display: grid;\n grid-template: 1fr / 100%;\n}\n\n@media (min-width: 640px) {\n .stack-nav {\n display: grid;\n grid-template: auto 1fr / 100%;\n border-bottom-width: 0;\n border-right-width: 1px;\n }\n}\n\n.stack-nav-actions {\n display: none;\n}\n\n@media (min-width: 640px) {\n .stack-nav-actions {\n display: grid;\n align-items: center;\n justify-content: space-between;\n grid-template-columns: auto;\n grid-auto-flow: column;\n padding-top: 1rem;\n padding-bottom: 1rem;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n }\n}\n\n.stack-nav-arrows {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n justify-content: center;\n align-items: center;\n grid-gap: 0.25rem;\n width: 2.5rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.stack-nav-arrow {\n color: rgb(176, 173, 197);\n color: var(--gray-500);\n font-size: 0.75rem;\n}\n\n.stack-nav-arrow:hover {\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.stack-frames {\n overflow: hidden;\n border-top-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n}\n\n.stack-frames-scroll {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.stack-frame-group {\n border-bottom-width: 1px;\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n}\n\n.stack-frame {\n display: grid;\n align-items: flex-end;\n grid-template-columns: 2rem auto auto;\n}\n\n@media (min-width: 640px) {\n .stack-frame {\n grid-template-columns: 3rem 1fr auto;\n }\n}\n\n.stack-frame:not(:first-child) {\n margin-top: -0.5rem;\n}\n\n.stack-frame-selected,\n.stack-frame-selected .stack-frame-header {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n z-index: 10;\n}\n\n.stack-frame-group-vendor .stack-frame-selected,\n.stack-frame-group-vendor .stack-frame-selected .stack-frame-header {\n /* @apply bg-gray-100; */\n}\n\n.stack-frame-number {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n font-feature-settings: "tnum";\n font-variant-numeric: tabular-nums;\n text-align: center;\n}\n\n.stack-frame-group-vendor .stack-frame-number {\n color: rgba(30, 20, 90, 0.35);\n color: var(--tint-500);\n}\n\n.stack-frame-header {\n margin-right: -2.5rem;\n width: 100%;\n}\n\n.stack-frame-text {\n display: grid;\n align-items: center;\n grid-gap: 0.5rem;\n border-left-width: 2px;\n padding-left: 0.75rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n border-color: rgb(214, 188, 250);\n border-color: var(--purple-300);\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n}\n\n.stack-frame-group-vendor .stack-frame-text {\n border-color: rgb(232, 229, 239);\n border-color: var(--gray-300);\n}\n\n.stack-frame-selected .stack-frame-text {\n border-color: rgb(121, 0, 245);\n border-color: var(--purple-500);\n}\n\n.stack-frame-group-vendor .stack-frame-selected .stack-frame-text {\n border-color: rgb(176, 173, 197);\n border-color: var(--gray-500);\n}\n\n.stack-frame-line {\n padding-left: 0.5rem;\n padding-right: 0.25rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n text-align: right;\n line-height: 1.25;\n}\n\n.stack-main {\n display: grid;\n height: 100%;\n overflow: hidden;\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n grid-template: auto 1fr / 100%;\n}\n\n.stack-main-header {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-bottom-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n font-size: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .stack-main-header {\n padding-top: 1rem;\n padding-bottom: 1rem;\n font-size: 1rem;\n }\n}\n\n.stack-main-content {\n overflow: hidden;\n}\n\n.stack-viewer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n overflow: auto;\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n font-size: 0.75rem;\n}\n\n.stack-ruler {\n position: sticky;\n flex: none;\n left: 0;\n z-index: 20;\n}\n\n.stack-lines {\n min-height: 100%;\n border-right-width: 1px;\n border-color: rgb(238, 238, 245);\n border-color: var(--gray-200);\n background-color: rgb(247, 247, 252);\n background-color: var(--gray-100);\n padding-top: 1rem;\n padding-bottom: 1rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stack-line {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n line-height: 2;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.stack-line-highlight {\n background-color: rgb(236, 211, 253);\n background-color: var(--purple-200);\n}\n\n.stack-line-selected {\n background-color: rgb(255, 248, 196);\n background-color: var(--yellow-200);\n}\n\n.stack-line-highlight.stack-line-selected {\n background-color: rgb(255, 243, 148);\n background-color: var(--yellow-300);\n}\n\n.stack-code {\n flex-grow: 1;\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.stack-code-line {\n padding-left: 1.5rem;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n line-height: 2;\n}\n\n.stack-code-line:hover {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n}\n\n.stack-code-line .editor-link {\n display: inline-block;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n opacity: 0;\n color: rgb(183, 148, 244);\n color: var(--purple-400);\n}\n\n.stack-code-line .editor-link:hover {\n color: rgb(121, 0, 245);\n color: var(--purple-500);\n}\n\n.stack-code-line:hover .editor-link {\n opacity: 1;\n}\n\n.stack-code-line-highlight {\n background-color: rgb(251, 245, 255);\n background-color: var(--purple-100);\n}\n\n.stack-code-line-selected {\n background-color: rgb(255, 253, 235);\n background-color: var(--yellow-100);\n}\n\n.stack-code-line-highlight.stack-code-line-selected {\n background-color: rgb(255, 248, 196);\n background-color: var(--yellow-200);\n}\n\n.solution-hiding {\n pointer-events: none;\n}\n\n.solution-hidden {\n height: 0;\n overflow: hidden;\n}\n\n.solution-hidden .solution-main,\n.solution-hiding .solution-main {\n transform: translateY(-25px) scaleY(0.95);\n opacity: 0;\n}\n\n.solution-main {\n z-index: 1;\n color: rgb(51, 47, 81);\n color: var(--gray-800);\n opacity: 1;\n transition: all 0.1s;\n}\n\n.solution-toggle {\n position: absolute;\n z-index: 10;\n top: 0.5rem;\n right: 10px;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.75rem;\n line-height: 1;\n cursor: pointer;\n}\n\n.solution-toggle-show {\n top: 0;\n background-color: rgb(148, 242, 200);\n background-color: var(--green-300);\n box-shadow: var(--shadow-sm);\n border-bottom-right-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n z-index: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 9px 100%, 0 calc(100% - 5px));\n -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 9px 100%, 0 calc(100% - 5px));\n}\n\n.solution-toggle-show a {\n text-decoration: none;\n}\n\n.solution-background {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n top: -6px;\n margin: 0 10px;\n background-color: rgb(148, 242, 200);\n background-color: var(--green-300);\n box-shadow: var(--shadow-default);\n border-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n overflow: hidden;\n border-bottom-right-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n}\n\n.solution-title {\n font-weight: 600;\n font-size: 1.5rem;\n line-height: 1.25;\n margin-bottom: 1rem;\n}\n\n.solution-content-wrapper {\n padding: 3rem;\n overflow-x: auto;\n display: grid;\n}\n\n.solution-description {\n max-width: 56rem;\n}\n\n@media (min-width: 768px) {\n .solution-content {\n margin-left: 15rem;\n }\n}\n\n.solution code {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n display: inline-block;\n margin-top: -0.25rem;\n margin-bottom: -0.25rem;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgba(0, 0, 150, 0.025);\n background-color: var(--tint-100);\n border-width: 1px;\n border-color: rgba(0, 0, 150, 0.025);\n border-color: var(--tint-100);\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n color: rgb(75, 71, 109);\n color: var(--gray-700);\n word-break: break-all;\n line-height: 1.25;\n}\n\n:root {\n --tab-main-height: calc(100vh - 3rem);\n}\n\n.tabs {\n z-index: 10;\n}\n\n.tab-main {\n z-index: 1;\n border-left-width: 1px;\n border-right-width: 1px;\n border-bottom-width: 1px;\n border-color: rgba(25, 0, 100, 0.1);\n border-color: var(--tint-300);\n min-height: calc(100vh - 3rem);\n min-height: var(--tab-main-height);\n}\n\n.tab-content {\n background-color: rgb(255, 255, 255);\n background-color: var(--white);\n font-size: 0.875rem;\n min-height: calc(100vh - 3rem);\n min-height: var(--tab-main-height);\n}\n\n.tab-content-section {\n padding-top: 2rem;\n padding-bottom: 2rem;\n border-top-width: 2px;\n border-color: rgba(0, 0, 100, 0.07);\n border-color: var(--tint-200);\n}\n\n.tab-content-section:first-child {\n border-top-width: 0;\n}\n\n.tab-nav {\n position: sticky;\n position: -webkit-sticky;\n display: grid;\n justify-content: center;\n grid-template-columns: auto;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n top: 0;\n width: 100%;\n z-index: 10;\n background-color: rgb(75, 71, 109);\n background-color: var(--gray-700);\n padding: 0.25rem;\n box-shadow: var(--shadow-default);\n border-top-left-radius: 0.125rem;\n border-top-right-radius: 0.125rem;\n font-size: 0.75rem;\n}\n\n.tab-bar {\n display: grid;\n grid-template-columns: auto;\n grid-auto-flow: column;\n justify-content: flex-start;\n grid-gap: 0.25rem;\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.tab-bar::-webkit-scrollbar {\n height: 2px;\n}\n\n@media (min-width: 640px) {\n .tab-bar {\n justify-content: center;\n }\n}\n\n.tab {\n padding-left: 1rem;\n padding-right: 1rem;\n color: rgb(232, 229, 239);\n color: var(--gray-300);\n white-space: nowrap;\n border-radius: 0.125rem;\n height: 2.5rem;\n font-size: 0.875rem;\n}\n\n.tab-delimiter {\n border-left-width: 1px;\n border-color: rgb(142, 137, 162);\n border-color: var(--gray-600);\n}\n\n.tab:hover {\n background-color: rgba(20, 0, 100, 0.2);\n background-color: var(--tint-400);\n color: rgb(255, 255, 255);\n color: var(--white);\n}\n\n.tab-active,\n.tab-active:hover {\n background-color: rgba(30, 20, 70, 0.5);\n background-color: var(--tint-600);\n color: rgb(255, 255, 255);\n color: var(--white);\n}\n\n.ui-url {\n display: inline-block;\n line-height: 1.25;\n font-size: 0.875rem;\n font-weight: 400;\n text-decoration: underline;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n -webkit-text-decoration-color: rgba(20, 0, 100, 0.2);\n text-decoration-color: rgba(20, 0, 100, 0.2);\n -webkit-text-decoration-color: var(--tint-400);\n text-decoration-color: var(--tint-400);\n}\n\n.ui-url:hover {\n color: rgba(15, 10, 60, 0.75);\n color: var(--tint-700);\n -webkit-text-decoration-color: rgba(30, 20, 90, 0.35);\n text-decoration-color: rgba(30, 20, 90, 0.35);\n -webkit-text-decoration-color: var(--tint-500);\n text-decoration-color: var(--tint-500);\n}\n\n.ui-path {\n display: inline-block;\n line-height: 1.25;\n}\n\n.ui-exception-message {\n font-weight: 600;\n line-height: 1.25;\n word-wrap: break-word;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 5;\n overflow: hidden;\n}\n\n.ui-exception-message-full {\n -webkit-line-clamp: unset;\n}\n\n.ui-exception-class {\n display: inline-block;\n line-height: 1.25;\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n}\n\n.ui-line-number {\n display: inline-block;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n border-radius: 0.125rem;\n background-color: rgba(0, 0, 150, 0.015);\n background-color: var(--tint-50);\n color: rgba(30, 20, 70, 0.5);\n color: var(--tint-600);\n font-size: 0.75rem;\n line-height: 1.25;\n}\n\n.dark .hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n color: #abb2bf;\n background: #282c34;\n}\n\n.dark .hljs-comment,\n.dark .hljs-quote {\n color: #5c6370;\n font-style: italic;\n}\n\n.dark .hljs-doctag,\n.dark .hljs-keyword,\n.dark .hljs-formula {\n color: #c678dd;\n}\n\n.dark .hljs-section,\n.dark .hljs-name,\n.dark .hljs-selector-tag,\n.dark .hljs-deletion,\n.dark .hljs-subst {\n color: #e06c75;\n}\n\n.dark .hljs-literal {\n color: #56b6c2;\n}\n\n.dark .hljs-string,\n.dark .hljs-regexp,\n.dark .hljs-addition,\n.dark .hljs-attribute,\n.dark .hljs-meta-string {\n color: #98c379;\n}\n\n.dark .hljs-built_in,\n.dark .hljs-class .dark .hljs-title {\n color: #e6c07b;\n}\n\n.dark .hljs-attr,\n.dark .hljs-variable,\n.dark .hljs-template-variable,\n.dark .hljs-type,\n.dark .hljs-selector-class,\n.dark .hljs-selector-attr,\n.dark .hljs-selector-pseudo,\n.dark .hljs-number {\n color: #d19a66;\n}\n\n.dark .hljs-symbol,\n.dark .hljs-bullet,\n.dark .hljs-link,\n.dark .hljs-meta,\n.dark .hljs-selector-id,\n.dark .hljs-title {\n color: #61aeee;\n}\n\n.dark .hljs-emphasis {\n font-style: italic;\n}\n\n.dark .hljs-strong {\n font-weight: bold;\n}\n\n.dark .hljs-link {\n text-decoration: underline;\n}\n\n.light .hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n color: #383a42;\n background: #fafafa;\n}\n\n.light .hljs-comment,\n.light .hljs-quote {\n color: #a0a1a7;\n font-style: italic;\n}\n\n.light .hljs-doctag,\n.light .hljs-keyword,\n.light .hljs-formula {\n color: #a626a4;\n}\n\n.light .hljs-section,\n.light .hljs-name,\n.light .hljs-selector-tag,\n.light .hljs-deletion,\n.light .hljs-subst {\n color: #e45649;\n}\n\n.light .hljs-literal {\n color: #0184bb;\n}\n\n.light .hljs-string,\n.light .hljs-regexp,\n.light .hljs-addition,\n.light .hljs-attribute,\n.light .hljs-meta-string {\n color: #50a14f;\n}\n\n.light .hljs-built_in,\n.light .hljs-class .light .hljs-title {\n color: #c18401;\n}\n\n.light .hljs-attr,\n.light .hljs-variable,\n.light .hljs-template-variable,\n.light .hljs-type,\n.light .hljs-selector-class,\n.light .hljs-selector-attr,\n.light .hljs-selector-pseudo,\n.light .hljs-number {\n color: #986801;\n}\n\n.light .hljs-symbol,\n.light .hljs-bullet,\n.light .hljs-link,\n.light .hljs-meta,\n.light .hljs-selector-id,\n.light .hljs-title {\n color: #4078f2;\n}\n\n.light .hljs-emphasis {\n font-style: italic;\n}\n\n.light .hljs-strong {\n font-weight: bold;\n}\n\n.light .hljs-link {\n text-decoration: underline;\n}\n\n/* \n Dumps are hidden asap in errorPage.blade \n What follows is !important\n*/\n\n.tabs pre.sf-dump {\n display: block !important;\n}\n\n.sf-dump-public.sf-dump-highlight,\n.sf-dump-protected.sf-dump-highlight,\n.sf-dump-private.sf-dump-highlight,\n.sf-dump-str.sf-dump-highlight,\n.sf-dump-key.sf-dump-highlight {\n background-color: rgb(251, 245, 255) !important;\n background-color: var(--purple-100) !important;\n border-color: rgb(236, 211, 253) !important;\n border-color: var(--purple-200) !important;\n}\n\n.sf-dump-public.sf-dump-highlight-active,\n.sf-dump-protected.sf-dump-highlight-active,\n.sf-dump-private.sf-dump-highlight-active,\n.sf-dump-str.sf-dump-highlight-active,\n.sf-dump-key.sf-dump-highlight-active {\n background-color: rgb(255, 253, 235) !important;\n background-color: var(--yellow-100) !important;\n border-color: rgb(255, 248, 196) !important;\n border-color: var(--yellow-200) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > * {\n border-color: rgb(232, 229, 239) !important;\n border-color: var(--gray-300) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > input.sf-dump-search-input {\n font-size: 0.75rem !important;\n background-color: rgb(51, 47, 81) !important;\n background-color: var(--gray-800) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next,\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous {\n background-color: rgba(0, 0, 150, 0.025) !important;\n background-color: var(--tint-100) !important;\n}\n\npre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-count {\n font-size: 0.875rem !important;\n}\n\npre.sf-dump,\npre.sf-dump .sf-dump-default {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;\n background-color: rgb(247, 247, 252) !important;\n background-color: var(--gray-100) !important;\n color: rgb(51, 47, 81) !important;\n color: var(--gray-800) !important;\n}\n\npre.sf-dump .sf-dump-num {\n color: rgb(250, 133, 162) !important;\n color: var(--red-300) !important;\n}\n\npre.sf-dump .sf-dump-const {\n font-weight: 400 !important;\n}\n\npre.sf-dump .sf-dump-str {\n font-weight: 400 !important;\n color: rgb(142, 137, 162) !important;\n color: var(--gray-600) !important;\n}\n\npre.sf-dump .sf-dump-note {\n color: rgb(122, 122, 255) !important;\n color: var(--blue-400) !important;\n}\n\npre.sf-dump .sf-dump-ref {\n color: rgb(142, 137, 162) !important;\n color: var(--gray-600) !important;\n}\n\npre.sf-dump .sf-dump-public,\npre.sf-dump .sf-dump-protected,\npre.sf-dump .sf-dump-private {\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\npre.sf-dump .sf-dump-meta {\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\npre.sf-dump .sf-dump-key {\n color: rgb(113, 7, 220) !important;\n color: var(--purple-600) !important;\n}\n\npre.sf-dump .sf-dump-index {\n color: rgb(122, 122, 255) !important;\n color: var(--blue-400) !important;\n}\n\npre.sf-dump .sf-dump-ellipsis {\n color: rgb(113, 7, 220) !important;\n color: var(--purple-600) !important;\n}\n\n.bg-gray-100{\n background-color: rgb(247, 247, 252) !important;\n background-color: var(--gray-100) !important;\n}\n\n.bg-tint-200{\n background-color: rgba(0, 0, 100, 0.07) !important;\n background-color: var(--tint-200) !important;\n}\n\n.bg-tint-300{\n background-color: rgba(25, 0, 100, 0.1) !important;\n background-color: var(--tint-300) !important;\n}\n\n.bg-tint-600{\n background-color: rgba(30, 20, 70, 0.5) !important;\n background-color: var(--tint-600) !important;\n}\n\n.hover\\:bg-tint-100:hover{\n background-color: rgba(0, 0, 150, 0.025) !important;\n background-color: var(--tint-100) !important;\n}\n\n.hover\\:bg-tint-400:hover{\n background-color: rgba(20, 0, 100, 0.2) !important;\n background-color: var(--tint-400) !important;\n}\n\n.hover\\:bg-tint-700:hover{\n background-color: rgba(15, 10, 60, 0.75) !important;\n background-color: var(--tint-700) !important;\n}\n\n.border-gray-700{\n border-color: rgb(75, 71, 109) !important;\n border-color: var(--gray-700) !important;\n}\n\n.border-tint-200{\n border-color: rgba(0, 0, 100, 0.07) !important;\n border-color: var(--tint-200) !important;\n}\n\n.border-tint-300{\n border-color: rgba(25, 0, 100, 0.1) !important;\n border-color: var(--tint-300) !important;\n}\n\n.rounded-full{\n border-radius: 9999px !important;\n}\n\n.rounded-t{\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.border-none{\n border-style: none !important;\n}\n\n.border-t-2{\n border-top-width: 2px !important;\n}\n\n.border-b{\n border-bottom-width: 1px !important;\n}\n\n.cursor-pointer{\n cursor: pointer !important;\n}\n\n.inline-block{\n display: inline-block !important;\n}\n\n.flex{\n display: flex !important;\n}\n\n.inline-flex{\n display: inline-flex !important;\n}\n\n.hidden{\n display: none !important;\n}\n\n.items-center{\n align-items: center !important;\n}\n\n.items-baseline{\n align-items: baseline !important;\n}\n\n.justify-start{\n justify-content: flex-start !important;\n}\n\n.justify-end{\n justify-content: flex-end !important;\n}\n\n.justify-center{\n justify-content: center !important;\n}\n\n.font-mono{\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;\n}\n\n.font-normal{\n font-weight: 400 !important;\n}\n\n.font-medium{\n font-weight: 500 !important;\n}\n\n.font-semibold{\n font-weight: 600 !important;\n}\n\n.h-5{\n height: 1.25rem !important;\n}\n\n.h-8{\n height: 2rem !important;\n}\n\n.h-full{\n height: 100% !important;\n}\n\n.mx-0{\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.ml-0{\n margin-left: 0 !important;\n}\n\n.mt-1{\n margin-top: 0.25rem !important;\n}\n\n.mr-1{\n margin-right: 0.25rem !important;\n}\n\n.mb-1{\n margin-bottom: 0.25rem !important;\n}\n\n.mt-2{\n margin-top: 0.5rem !important;\n}\n\n.mr-2{\n margin-right: 0.5rem !important;\n}\n\n.mb-2{\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2{\n margin-left: 0.5rem !important;\n}\n\n.mb-3{\n margin-bottom: 0.75rem !important;\n}\n\n.mt-4{\n margin-top: 1rem !important;\n}\n\n.mr-4{\n margin-right: 1rem !important;\n}\n\n.mb-4{\n margin-bottom: 1rem !important;\n}\n\n.ml-6{\n margin-left: 1.5rem !important;\n}\n\n.mt-8{\n margin-top: 2rem !important;\n}\n\n.mt-12{\n margin-top: 3rem !important;\n}\n\n.ml-auto{\n margin-left: auto !important;\n}\n\n.min-w-8{\n min-width: 2rem !important;\n}\n\n.opacity-25{\n opacity: 0.25 !important;\n}\n\n.opacity-50{\n opacity: 0.5 !important;\n}\n\n.opacity-75{\n opacity: 0.75 !important;\n}\n\n.overflow-visible{\n overflow: visible !important;\n}\n\n.p-4{\n padding: 1rem !important;\n}\n\n.p-12{\n padding: 3rem !important;\n}\n\n.py-2{\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.px-2{\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.py-4{\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.px-4{\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-6{\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.pt-2{\n padding-top: 0.5rem !important;\n}\n\n.pt-10{\n padding-top: 2.5rem !important;\n}\n\n.pointer-events-none{\n pointer-events: none !important;\n}\n\n.static{\n position: static !important;\n}\n\n.absolute{\n position: absolute !important;\n}\n\n.relative{\n position: relative !important;\n}\n\n.sticky{\n position: sticky !important;\n}\n\n.inset-0{\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n}\n\n.top-0{\n top: 0 !important;\n}\n\n.right-0{\n right: 0 !important;\n}\n\n.bottom-0{\n bottom: 0 !important;\n}\n\n.left-0{\n left: 0 !important;\n}\n\n.top-full{\n top: 100% !important;\n}\n\n.left-full{\n left: 100% !important;\n}\n\n.text-left{\n text-align: left !important;\n}\n\n.text-white{\n color: rgb(255, 255, 255) !important;\n color: var(--white) !important;\n}\n\n.text-green-300{\n color: rgb(148, 242, 200) !important;\n color: var(--green-300) !important;\n}\n\n.text-purple-400{\n color: rgb(183, 148, 244) !important;\n color: var(--purple-400) !important;\n}\n\n.text-purple-800{\n color: rgb(79, 15, 143) !important;\n color: var(--purple-800) !important;\n}\n\n.text-gray-200{\n color: rgb(238, 238, 245) !important;\n color: var(--gray-200) !important;\n}\n\n.text-gray-300{\n color: rgb(232, 229, 239) !important;\n color: var(--gray-300) !important;\n}\n\n.text-gray-400{\n color: rgb(209, 204, 224) !important;\n color: var(--gray-400) !important;\n}\n\n.text-gray-500{\n color: rgb(176, 173, 197) !important;\n color: var(--gray-500) !important;\n}\n\n.text-gray-800{\n color: rgb(51, 47, 81) !important;\n color: var(--gray-800) !important;\n}\n\n.text-tint-600{\n color: rgba(30, 20, 70, 0.5) !important;\n color: var(--tint-600) !important;\n}\n\n.hover\\:text-white:hover{\n color: rgb(255, 255, 255) !important;\n color: var(--white) !important;\n}\n\n.hover\\:text-purple-500:hover{\n color: rgb(121, 0, 245) !important;\n color: var(--purple-500) !important;\n}\n\n.text-xs{\n font-size: 0.75rem !important;\n}\n\n.text-sm{\n font-size: 0.875rem !important;\n}\n\n.text-base{\n font-size: 1rem !important;\n}\n\n.text-xl{\n font-size: 1.25rem !important;\n}\n\n.text-2xl{\n font-size: 1.5rem !important;\n}\n\n.italic{\n font-style: italic !important;\n}\n\n.uppercase{\n text-transform: uppercase !important;\n}\n\n.underline{\n text-decoration: underline !important;\n}\n\n.no-underline{\n text-decoration: none !important;\n}\n\n.tracking-wider{\n letter-spacing: 0.05em !important;\n}\n\n.align-middle{\n vertical-align: middle !important;\n}\n\n.whitespace-no-wrap{\n white-space: nowrap !important;\n}\n\n.w-4{\n width: 1rem !important;\n}\n\n.w-full{\n width: 100% !important;\n}\n\n.z-1{\n z-index: 1 !important;\n}\n\n.z-10{\n z-index: 10 !important;\n}\n\n@media (min-width: 640px){\n\n .sm\\:block{\n display: block !important;\n }\n\n .sm\\:ml-6{\n margin-left: 1.5rem !important;\n }\n}\n\n@media (min-width: 768px){\n\n .md\\:block{\n display: block !important;\n }\n}\n',""])},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var o=(a=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),i=r.sources.map((function(t){return"/*# sourceURL=".concat(r.sourceRoot).concat(t," */")}));return[n].concat(i).concat([o]).join("\n")}var a,s,c;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o=0&&f.splice(e,1)}function v(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var r=function(){0;return n.nc}();r&&(t.attrs.nonce=r)}return b(e,t.attrs),g(t,e),e}function b(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function _(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=i}if(e.singleton){var a=l++;n=u||(u=v(e)),r=x.bind(null,n,a,!1),o=x.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",b(e,t.attrs),g(t,e),e}(e),r=w.bind(null,n,e),o=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(e),r=k.bind(null,n),o=function(){m(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=h(t,e);return d(n,e),function(t){for(var r=[],o=0;og.maxDepth)&&a(y)}else if(/\bsf-dump-ref\b/.test(m.className)&&(y=m.getAttribute("href"))&&(y=y.substr(1),m.className+=" "+y,/[\[{]$/.test(m.previousSibling.nodeValue))){y=y!=m.nextSibling.id&&t.getElementById(y);try{p=y.nextSibling,m.appendChild(y),p.parentNode.insertBefore(y,p),/^[@#]/.test(m.innerHTML)?m.innerHTML+=" ":(m.innerHTML="",m.className="sf-dump-ref"),m.className+=" sf-dump-toggle"}catch(t){"&"==m.innerHTML.charAt(0)&&(m.innerHTML="…",m.className="sf-dump-ref")}}if(t.evaluate&&Array.from&&l.children.length>1){var C=function(t){var e,n,r=t.current();r&&(!function(t){for(var e,n=[];(t=t.parentNode||{})&&(e=t.previousSibling)&&"A"===e.tagName;)n.push(e);0!==n.length&&n.forEach((function(t){s(t)}))}(r),function(t,e,n){u(t),Array.from(n||[]).forEach((function(t){/\bsf-dump-highlight\b/.test(t.className)||(t.className=t.className+" sf-dump-highlight")})),/\bsf-dump-highlight-active\b/.test(e.className)||(e.className=e.className+" sf-dump-highlight-active")}(l,r,t.nodes),"scrollIntoView"in r&&(r.scrollIntoView(!0),e=r.getBoundingClientRect(),n=A.getBoundingClientRect(),e.top0?this.idx-1:this.nodes.length-1,this.current())},isEmpty:function(){return 0===this.count()},current:function(){return this.isEmpty()?null:this.nodes[this.idx]},reset:function(){this.nodes=[],this.idx=0},count:function(){return this.nodes.length}};var A=t.createElement("div");A.className="sf-dump-search-wrapper sf-dump-search-hidden",A.innerHTML='\n \n 0 of 0\n \n \n ',l.insertBefore(A,l.firstChild);var T=new SearchState,S=A.querySelector(".sf-dump-search-input"),R=A.querySelector(".sf-dump-search-count"),O=0,N="";i(S,"keyup",(function(e){var n=e.target.value;n!==N&&(N=n,clearTimeout(O),O=setTimeout((function(){if(T.reset(),c(l),u(l),""!==n){for(var e=["sf-dump-str","sf-dump-key","sf-dump-public","sf-dump-protected","sf-dump-private"].map(k).join(" or "),r=t.evaluate(".//span["+e+"][contains(translate(child::text(), "+x(n.toUpperCase())+", "+x(n.toLowerCase())+"), "+x(n.toLowerCase())+")]",l,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);node=r.iterateNext();)T.nodes.push(node);C(T)}else R.textContent="0 of 0"}),400))})),Array.from(A.querySelectorAll(".sf-dump-search-input-next, .sf-dump-search-input-previous")).forEach((function(t){i(t,"click",(function(t){t.preventDefault(),-1!==t.target.className.indexOf("next")?T.next():T.previous(),S.focus(),c(l),C(T)}))})),i(l,"keydown",(function(t){var e=!/\bsf-dump-search-hidden\b/.test(A.className);if(114===t.keyCode&&!e||E(t)&&70===t.keyCode){if(70===t.keyCode&&document.activeElement===S)return;t.preventDefault(),A.className=A.className.replace(/\bsf-dump-search-hidden\b/,""),S.focus()}else e&&(27===t.keyCode?(A.className+=" sf-dump-search-hidden",t.preventDefault(),u(l),S.value=""):(E(t)&&71===t.keyCode||13===t.keyCode||114===t.keyCode)&&(t.preventDefault(),t.shiftKey?T.previous():T.next(),c(l),C(T)))}))}if(!(0>=g.maxStringLength))try{for(v=(m=l.querySelectorAll(".sf-dump-str")).length,b=0,_=[];b
'+m.innerHTML+'')}catch(t){}}}(document)},function(t,e,n){var r=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(t,e,n,r){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),a=new T(r||[]);return i._invoke=function(t,e,n){var r=l;return function(o,i){if(r===p)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw i;return R()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=w(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===l)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var c=u(t,e,n);if("normal"===c.type){if(r=n.done?d:f,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l="suspendedStart",f="suspendedYield",p="executing",d="completed",h={};function g(){}function m(){}function v(){}var b={};b[i]=function(){return this};var _=Object.getPrototypeOf,y=_&&_(_(S([])));y&&y!==n&&r.call(y,i)&&(b=y);var E=v.prototype=g.prototype=Object.create(b);function x(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function k(t){var e;this._invoke=function(n,o){function i(){return new Promise((function(e,i){!function e(n,o,i,a){var s=u(t[n],t,o);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then((function(t){e("next",t,i,a)}),(function(t){e("throw",t,i,a)})):Promise.resolve(l).then((function(t){c.value=t,i(c)}),(function(t){return e("throw",t,i,a)}))}a(s.arg)}(n,o,e,i)}))}return e=e?e.then(i,i):i()}}function w(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,w(t,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=u(r,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,h;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function S(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function n(){for(;++o=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;A(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:S(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){"use strict";t.exports=n(102)},function(t,e,n){"use strict";var r=n(1),o=n(110),i=n(114),a=n(115),s=n(123),c=n(137),u=n(150),l=n(56),f=n(63),p={default:n(152),zero:n(153),commonmark:n(154)},d=/^(vbscript|javascript|file|data):/,h=/^data:image\/(gif|png|jpeg|webp);/;function g(t){var e=t.trim().toLowerCase();return!d.test(e)||!!h.test(e)}var m=["http:","https:","mailto:"];function v(t){var e=l.parse(t,!0);if(e.hostname&&(!e.protocol||m.indexOf(e.protocol)>=0))try{e.hostname=f.toASCII(e.hostname)}catch(t){}return l.encode(l.format(e))}function b(t){var e=l.parse(t,!0);if(e.hostname&&(!e.protocol||m.indexOf(e.protocol)>=0))try{e.hostname=f.toUnicode(e.hostname)}catch(t){}return l.decode(l.format(e))}function _(t,e){if(!(this instanceof _))return new _(t,e);e||r.isString(t)||(e=t||{},t="default"),this.inline=new c,this.block=new s,this.core=new a,this.renderer=new i,this.linkify=new u,this.validateLink=g,this.normalizeLink=v,this.normalizeLinkText=b,this.utils=r,this.helpers=r.assign({},o),this.options={},this.configure(t),e&&this.set(e)}_.prototype.set=function(t){return r.assign(this.options,t),this},_.prototype.configure=function(t){var e,n=this;if(r.isString(t)&&!(t=p[e=t]))throw new Error('Wrong `markdown-it` preset "'+e+'", check name');if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&n.set(t.options),t.components&&Object.keys(t.components).forEach((function(e){t.components[e].rules&&n[e].ruler.enableOnly(t.components[e].rules),t.components[e].rules2&&n[e].ruler2.enableOnly(t.components[e].rules2)})),this},_.prototype.enable=function(t,e){var n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.enable(t,!0))}),this),n=n.concat(this.inline.ruler2.enable(t,!0));var r=t.filter((function(t){return n.indexOf(t)<0}));if(r.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},_.prototype.disable=function(t,e){var n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.disable(t,!0))}),this),n=n.concat(this.inline.ruler2.disable(t,!0));var r=t.filter((function(t){return n.indexOf(t)<0}));if(r.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},_.prototype.use=function(t){var e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},_.prototype.parse=function(t,e){if("string"!=typeof t)throw new Error("Input data should be a String");var n=new this.core.State(t,this,e);return this.core.process(n),n.tokens},_.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},_.prototype.parseInline=function(t,e){var n=new this.core.State(t,this,e);return n.inlineMode=!0,this.core.process(n),n.tokens},_.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)},t.exports=_},function(t){t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},function(t,e,n){"use strict";var r={};function o(t,e,n){var i,a,s,c,u,l="";for("string"!=typeof e&&(n=e,e=o.defaultChars),void 0===n&&(n=!0),u=function(t){var e,n,o=r[t];if(o)return o;for(o=r[t]=[],e=0;e<128;e++)n=String.fromCharCode(e),/^[0-9a-z]$/i.test(n)?o.push(n):o.push("%"+("0"+e.toString(16).toUpperCase()).slice(-2));for(e=0;e=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1=56320&&c<=57343){l+=encodeURIComponent(t[i]+t[i+1]),i++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(t[i]);return l}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",t.exports=o},function(t,e,n){"use strict";var r={};function o(t,e){var n;return"string"!=typeof e&&(e=o.defaultChars),n=function(t){var e,n,o=r[t];if(o)return o;for(o=r[t]=[],e=0;e<128;e++)n=String.fromCharCode(e),o.push(n);for(e=0;e=55296&&c<=57343?"���":String.fromCharCode(c),e+=6):240==(248&o)&&e+91114111?u+="����":(c-=65536,u+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),e+=9):u+="�";return u}))}o.defaultChars=";/?:@&=+$,#",o.componentChars="",t.exports=o},function(t,e,n){"use strict";t.exports=function(t){var e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||""}},function(t,e,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),u=["%","/","?",";","#"].concat(c),l=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},h={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};r.prototype.parse=function(t,e){var n,r,i,s,c,g=t;if(g=g.trim(),!e&&1===t.split("#").length){var m=a.exec(g);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var v=o.exec(g);if(v&&(i=(v=v[0]).toLowerCase(),this.protocol=v,g=g.substr(v.length)),(e||v||g.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===g.substr(0,2))||v&&d[v]||(g=g.substr(2),this.slashes=!0)),!d[v]&&(c||v&&!h[v])){var b,_,y=-1;for(n=0;n127?C+="x":C+=w[A];if(!C.match(f)){var S=k.slice(0,n),R=k.slice(n+1),O=w.match(p);O&&(S.push(O[1]),R.unshift(O[2])),R.length&&(g=R.join(".")+g),this.hostname=S.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),x&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var N=g.indexOf("#");-1!==N&&(this.hash=g.substr(N),g=g.slice(0,N));var L=g.indexOf("?");return-1!==L&&(this.search=g.substr(L),g=g.slice(0,L)),g&&(this.pathname=g),h[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this},r.prototype.parseHost=function(t){var e=i.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},t.exports=function(t,e){if(t&&t instanceof r)return t;var n=new r;return n.parse(t,e),n}},function(t,e,n){"use strict";e.Any=n(57),e.Cc=n(58),e.Cf=n(109),e.P=n(36),e.Z=n(59)},function(t,e){t.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},function(t,e,n){"use strict";e.parseLinkLabel=n(111),e.parseLinkDestination=n(112),e.parseLinkTitle=n(113)},function(t,e,n){"use strict";t.exports=function(t,e,n){var r,o,i,a,s=-1,c=t.posMax,u=t.pos;for(t.pos=e+1,r=1;t.pos=n)return c;if(34!==(i=t.charCodeAt(e))&&39!==i&&40!==i)return c;for(e++,40===i&&(i=41);e"+i(t[e].content)+""},a.code_block=function(t,e,n,r,o){var a=t[e];return""+i(t[e].content)+"\n"},a.fence=function(t,e,n,r,a){var s,c,u,l,f=t[e],p=f.info?o(f.info).trim():"",d="";return p&&(d=p.split(/\s+/g)[0]),0===(s=n.highlight&&n.highlight(f.content,d)||i(f.content)).indexOf(""+s+"\n"):"
"+s+"
\n"},a.image=function(t,e,n,r,o){var i=t[e];return i.attrs[i.attrIndex("alt")][1]=o.renderInlineAsText(i.children,n,r),o.renderToken(t,e,n)},a.hardbreak=function(t,e,n){return n.xhtmlOut?"
\n":"
\n"},a.softbreak=function(t,e,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(t,e){return i(t[e].content)},a.html_block=function(t,e){return t[e].content},a.html_inline=function(t,e){return t[e].content},s.prototype.renderAttrs=function(t){var e,n,r;if(!t.attrs)return"";for(r="",e=0,n=t.attrs.length;e\n":">")},s.prototype.renderInline=function(t,e,n){for(var r,o="",i=this.rules,a=0,s=t.length;a/i.test(t)}t.exports=function(t){var e,n,i,a,s,c,u,l,f,p,d,h,g,m,v,b,_,y,E=t.tokens;if(t.md.options.linkify)for(n=0,i=E.length;n=0;e--)if("link_close"!==(c=a[e]).type){if("html_inline"===c.type&&(y=c.content,/^\s]/i.test(y)&&g>0&&g--,o(c.content)&&g++),!(g>0)&&"text"===c.type&&t.md.linkify.test(c.content)){for(f=c.content,_=t.md.linkify.match(f),u=[],h=c.level,d=0,l=0;l<_.length;l++)m=_[l].url,v=t.md.normalizeLink(m),t.md.validateLink(v)&&(b=_[l].text,b=_[l].schema?"mailto:"!==_[l].schema||/^mailto:/i.test(b)?t.md.normalizeLinkText(b):t.md.normalizeLinkText("mailto:"+b).replace(/^mailto:/,""):t.md.normalizeLinkText("http://"+b).replace(/^http:\/\//,""),(p=_[l].index)>d&&((s=new t.Token("text","",0)).content=f.slice(d,p),s.level=h,u.push(s)),(s=new t.Token("link_open","a",1)).attrs=[["href",v]],s.level=h++,s.markup="linkify",s.info="auto",u.push(s),(s=new t.Token("text","",0)).content=b,s.level=h,u.push(s),(s=new t.Token("link_close","a",-1)).level=--h,s.markup="linkify",s.info="auto",u.push(s),d=_[l].lastIndex);d=0;e--)"text"!==(n=t[e]).type||r||(n.content=n.content.replace(i,s)),"link_open"===n.type&&"auto"===n.info&&r--,"link_close"===n.type&&"auto"===n.info&&r++}function u(t){var e,n,o=0;for(e=t.length-1;e>=0;e--)"text"!==(n=t[e]).type||o||r.test(n.content)&&(n.content=n.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1—$2").replace(/(^|\s)--(\s|$)/gm,"$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1–$2")),"link_open"===n.type&&"auto"===n.info&&o--,"link_close"===n.type&&"auto"===n.info&&o++}t.exports=function(t){var e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(o.test(t.tokens[e].content)&&c(t.tokens[e].children),r.test(t.tokens[e].content)&&u(t.tokens[e].children))}},function(t,e,n){"use strict";var r=n(1).isWhiteSpace,o=n(1).isPunctChar,i=n(1).isMdAsciiPunct,a=/['"]/,s=/['"]/g,c="’";function u(t,e,n){return t.substr(0,e)+n+t.substr(e+1)}function l(t,e){var n,a,l,f,p,d,h,g,m,v,b,_,y,E,x,k,w,C,A,T,S;for(A=[],n=0;n=0&&!(A[w].level<=h);w--);if(A.length=w+1,"text"===a.type){p=0,d=(l=a.content).length;t:for(;p=0)m=l.charCodeAt(f.index-1);else for(w=n-1;w>=0&&("softbreak"!==t[w].type&&"hardbreak"!==t[w].type);w--)if("text"===t[w].type){m=t[w].content.charCodeAt(t[w].content.length-1);break}if(v=32,p=48&&m<=57&&(k=x=!1),x&&k&&(x=!1,k=_),x||k){if(k)for(w=A.length-1;w>=0&&(g=A[w],!(A[w].level=0;e--)"inline"===t.tokens[e].type&&a.test(t.tokens[e].content)&&l(t.tokens[e].children,t)}},function(t,e,n){"use strict";var r=n(38);function o(t,e,n){this.src=t,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=e}o.prototype.Token=r,t.exports=o},function(t,e,n){"use strict";var r=n(37),o=[["table",n(124),["paragraph","reference"]],["code",n(125)],["fence",n(126),["paragraph","reference","blockquote","list"]],["blockquote",n(127),["paragraph","reference","blockquote","list"]],["hr",n(128),["paragraph","reference","blockquote","list"]],["list",n(129),["paragraph","reference","blockquote"]],["reference",n(130)],["heading",n(131),["paragraph","reference","blockquote"]],["lheading",n(132)],["html_block",n(133),["paragraph","reference","blockquote"]],["paragraph",n(135)]];function i(){this.ruler=new r;for(var t=0;t=n))&&!(t.sCount[a]=c){t.line=n;break}for(r=0;rn)return!1;if(f=e+1,t.sCount[f]=4)return!1;if((u=t.bMarks[f]+t.tShift[f])>=t.eMarks[f])return!1;if(124!==(s=t.src.charCodeAt(u++))&&45!==s&&58!==s)return!1;for(;u=4)return!1;if((d=(p=i(c.replace(/^\||\|$/g,""))).length)>g.length)return!1;if(a)return!0;for((h=t.push("table_open","table",1)).map=v=[e,0],(h=t.push("thead_open","thead",1)).map=[e,e+1],(h=t.push("tr_open","tr",1)).map=[e,e+1],l=0;l=4);f++){for(p=i(c.replace(/^\||\|$/g,"")),h=t.push("tr_open","tr",1),l=0;l=4))break;o=++r}return t.line=o,(i=t.push("code_block","code",0)).content=t.getLines(e,o,4+t.blkIndent,!0),i.map=[e,t.line],!0}},function(t,e,n){"use strict";t.exports=function(t,e,n,r){var o,i,a,s,c,u,l,f=!1,p=t.bMarks[e]+t.tShift[e],d=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(p+3>d)return!1;if(126!==(o=t.src.charCodeAt(p))&&96!==o)return!1;if(c=p,(i=(p=t.skipChars(p,o))-c)<3)return!1;if(l=t.src.slice(c,p),a=t.src.slice(p,d),96===o&&a.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;for(s=e;!(++s>=n)&&!((p=c=t.bMarks[s]+t.tShift[s])<(d=t.eMarks[s])&&t.sCount[s]=4||(p=t.skipChars(p,o))-c=4)return!1;if(62!==t.src.charCodeAt(A++))return!1;if(o)return!0;for(c=d=t.sCount[e]+A-(t.bMarks[e]+t.tShift[e]),32===t.src.charCodeAt(A)?(A++,c++,d++,i=!1,y=!0):9===t.src.charCodeAt(A)?(y=!0,(t.bsCount[e]+d)%4==3?(A++,c++,d++,i=!1):i=!0):y=!1,h=[t.bMarks[e]],t.bMarks[e]=A;A=T,b=[t.sCount[e]],t.sCount[e]=d-c,_=[t.tShift[e]],t.tShift[e]=A-t.bMarks[e],x=t.md.block.ruler.getRules("blockquote"),v=t.parentType,t.parentType="blockquote",w=!1,p=e+1;p=(T=t.eMarks[p])));p++)if(62!==t.src.charCodeAt(A++)||w){if(l)break;for(E=!1,s=0,u=x.length;s=T,g.push(t.bsCount[p]),t.bsCount[p]=t.sCount[p]+1+(y?1:0),b.push(t.sCount[p]),t.sCount[p]=d-c,_.push(t.tShift[p]),t.tShift[p]=A-t.bMarks[p]}for(m=t.blkIndent,t.blkIndent=0,(k=t.push("blockquote_open","blockquote",1)).markup=">",k.map=f=[e,0],t.md.block.tokenize(t,e,p),(k=t.push("blockquote_close","blockquote",-1)).markup=">",t.lineMax=C,t.parentType=v,f[1]=t.line,s=0;s<_.length;s++)t.bMarks[s+e]=h[s],t.tShift[s+e]=_[s],t.sCount[s+e]=b[s],t.bsCount[s+e]=g[s];return t.blkIndent=m,!0}},function(t,e,n){"use strict";var r=n(1).isSpace;t.exports=function(t,e,n,o){var i,a,s,c,u=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(42!==(i=t.src.charCodeAt(u++))&&45!==i&&95!==i)return!1;for(a=1;u=a)return-1;if((n=t.src.charCodeAt(i++))<48||n>57)return-1;for(;;){if(i>=a)return-1;if(!((n=t.src.charCodeAt(i++))>=48&&n<=57)){if(41===n||46===n)break;return-1}if(i-o>=10)return-1}return i=4)return!1;if(t.listIndent>=0&&t.sCount[e]-t.listIndent>=4&&t.sCount[e]=t.blkIndent&&(D=!0),(S=i(t,e))>=0){if(p=!0,O=t.bMarks[e]+t.tShift[e],b=Number(t.src.substr(O,S-O-1)),D&&1!==b)return!1}else{if(!((S=o(t,e))>=0))return!1;p=!1}if(D&&t.skipSpaces(S)>=t.eMarks[e])return!1;if(v=t.src.charCodeAt(S-1),r)return!0;for(m=t.tokens.length,p?(I=t.push("ordered_list_open","ol",1),1!==b&&(I.attrs=[["start",b]])):I=t.push("bullet_list_open","ul",1),I.map=g=[e,0],I.markup=String.fromCharCode(v),y=e,R=!1,L=t.md.block.ruler.getRules("list"),k=t.parentType,t.parentType="list";y=_?1:E-f)>4&&(l=1),u=f+l,(I=t.push("list_item_open","li",1)).markup=String.fromCharCode(v),I.map=d=[e,0],A=t.tight,C=t.tShift[e],w=t.sCount[e],x=t.listIndent,t.listIndent=t.blkIndent,t.blkIndent=u,t.tight=!0,t.tShift[e]=s-t.bMarks[e],t.sCount[e]=E,s>=_&&t.isEmpty(e+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,e,n,!0),t.tight&&!R||(M=!1),R=t.line-e>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=x,t.tShift[e]=C,t.sCount[e]=w,t.tight=A,(I=t.push("list_item_close","li",-1)).markup=String.fromCharCode(v),y=e=t.line,d[1]=y,s=t.bMarks[e],y>=n)break;if(t.sCount[y]=4)break;for(N=!1,c=0,h=L.length;c=4)return!1;if(91!==t.src.charCodeAt(k))return!1;for(;++k3||t.sCount[C]<0)){for(_=!1,f=0,p=y.length;f=4)return!1;if(35!==(i=t.src.charCodeAt(u))||u>=l)return!1;for(a=1,i=t.src.charCodeAt(++u);35===i&&u6||uu&&r(t.src.charCodeAt(s-1))&&(l=s),t.line=e+1,(c=t.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),c.map=[e,t.line],(c=t.push("inline","",0)).content=t.src.slice(u,l).trim(),c.map=[e,t.line],c.children=[],(c=t.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a),!0))}},function(t,e,n){"use strict";t.exports=function(t,e,n){var r,o,i,a,s,c,u,l,f,p,d=e+1,h=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;for(p=t.parentType,t.parentType="paragraph";d3)){if(t.sCount[d]>=t.blkIndent&&(c=t.bMarks[d]+t.tShift[d])<(u=t.eMarks[d])&&(45===(f=t.src.charCodeAt(c))||61===f)&&(c=t.skipChars(c,f),(c=t.skipSpaces(c))>=u)){l=61===f?1:2;break}if(!(t.sCount[d]<0)){for(o=!1,i=0,a=h.length;i|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(o.source+"\\s*$"),/^$/,!1]];t.exports=function(t,e,n,r){var o,a,s,c,u=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(u))return!1;for(c=t.src.slice(u,l),o=0;o3||t.sCount[c]<0)){for(r=!1,o=0,i=u.length;o0&&this.level++,this.tokens.push(o),o},i.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},i.prototype.skipEmptyLines=function(t){for(var e=this.lineMax;te;)if(!o(this.src.charCodeAt(--t)))return t+1;return t},i.prototype.skipChars=function(t,e){for(var n=this.src.length;tn;)if(e!==this.src.charCodeAt(--t))return t+1;return t},i.prototype.getLines=function(t,e,n,r){var i,a,s,c,u,l,f,p=t;if(t>=e)return"";for(l=new Array(e-t),i=0;pn?new Array(a-n+1).join(" ")+this.src.slice(c,u):this.src.slice(c,u)}return l.join("")},i.prototype.Token=r,t.exports=i},function(t,e,n){"use strict";var r=n(37),o=[["text",n(138)],["newline",n(139)],["escape",n(140)],["backticks",n(141)],["strikethrough",n(61).tokenize],["emphasis",n(62).tokenize],["link",n(142)],["image",n(143)],["autolink",n(144)],["html_inline",n(145)],["entity",n(146)]],i=[["balance_pairs",n(147)],["strikethrough",n(61).postProcess],["emphasis",n(62).postProcess],["text_collapse",n(148)]];function a(){var t;for(this.ruler=new r,t=0;t=i)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},a.prototype.parse=function(t,e,n,r){var o,i,a,s=new this.State(t,e,n,r);for(this.tokenize(s),a=(i=this.ruler2.getRules("")).length,o=0;o=0&&32===t.pending.charCodeAt(n)?n>=1&&32===t.pending.charCodeAt(n-1)?(t.pending=t.pending.replace(/ +$/,""),t.push("hardbreak","br",0)):(t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0)):t.push("softbreak","br",0)),i++;i?@[]^_`{|}~-".split("").forEach((function(t){o[t.charCodeAt(0)]=1})),t.exports=function(t,e){var n,i=t.pos,a=t.posMax;if(92!==t.src.charCodeAt(i))return!1;if(++i=g)return!1;for(m=u,(l=t.md.helpers.parseLinkDestination(t.src,u,t.posMax)).ok&&(d=t.md.normalizeLink(l.str),t.md.validateLink(d)?u=l.pos:d=""),m=u;u=g||41!==t.src.charCodeAt(u))&&(v=!0),u++}if(v){if(void 0===t.env.references)return!1;if(u=0?a=t.src.slice(m,u++):u=s+1):u=s+1,a||(a=t.src.slice(c,s)),!(f=t.env.references[r(a)]))return t.pos=h,!1;d=f.href,p=f.title}return e||(t.pos=c,t.posMax=s,t.push("link_open","a",1).attrs=n=[["href",d]],p&&n.push(["title",p]),t.md.inline.tokenize(t),t.push("link_close","a",-1)),t.pos=u,t.posMax=g,!0}},function(t,e,n){"use strict";var r=n(1).normalizeReference,o=n(1).isSpace;t.exports=function(t,e){var n,i,a,s,c,u,l,f,p,d,h,g,m,v="",b=t.pos,_=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;if(u=t.pos+2,(c=t.md.helpers.parseLinkLabel(t,t.pos+1,!1))<0)return!1;if((l=c+1)<_&&40===t.src.charCodeAt(l)){for(l++;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);if(l>=_)return!1;for(m=l,(p=t.md.helpers.parseLinkDestination(t.src,l,t.posMax)).ok&&(v=t.md.normalizeLink(p.str),t.md.validateLink(v)?l=p.pos:v=""),m=l;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);if(p=t.md.helpers.parseLinkTitle(t.src,l,t.posMax),l<_&&m!==l&&p.ok)for(d=p.str,l=p.pos;l<_&&(i=t.src.charCodeAt(l),o(i)||10===i);l++);else d="";if(l>=_||41!==t.src.charCodeAt(l))return t.pos=b,!1;l++}else{if(void 0===t.env.references)return!1;if(l<_&&91===t.src.charCodeAt(l)?(m=l+1,(l=t.md.helpers.parseLinkLabel(t,l))>=0?s=t.src.slice(m,l++):l=c+1):l=c+1,s||(s=t.src.slice(u,c)),!(f=t.env.references[r(s)]))return t.pos=b,!1;v=f.href,d=f.title}return e||(a=t.src.slice(u,c),t.md.inline.parse(a,t.md,t.env,g=[]),(h=t.push("image","img",0)).attrs=n=[["src",v],["alt",""]],h.children=g,h.content=a,d&&n.push(["title",d])),t.pos=l,t.posMax=_,!0}},function(t,e,n){"use strict";var r=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,o=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;t.exports=function(t,e){var n,i,a,s,c,u,l=t.pos;return 60===t.src.charCodeAt(l)&&(!((n=t.src.slice(l)).indexOf(">")<0)&&(o.test(n)?(s=(i=n.match(o))[0].slice(1,-1),c=t.md.normalizeLink(s),!!t.md.validateLink(c)&&(e||((u=t.push("link_open","a",1)).attrs=[["href",c]],u.markup="autolink",u.info="auto",(u=t.push("text","",0)).content=t.md.normalizeLinkText(s),(u=t.push("link_close","a",-1)).markup="autolink",u.info="auto"),t.pos+=i[0].length,!0)):!!r.test(n)&&(s=(a=n.match(r))[0].slice(1,-1),c=t.md.normalizeLink("mailto:"+s),!!t.md.validateLink(c)&&(e||((u=t.push("link_open","a",1)).attrs=[["href",c]],u.markup="autolink",u.info="auto",(u=t.push("text","",0)).content=t.md.normalizeLinkText(s),(u=t.push("link_close","a",-1)).markup="autolink",u.info="auto"),t.pos+=a[0].length,!0))))}},function(t,e,n){"use strict";var r=n(60).HTML_TAG_RE;t.exports=function(t,e){var n,o,i,a=t.pos;return!!t.md.options.html&&(i=t.posMax,!(60!==t.src.charCodeAt(a)||a+2>=i)&&(!(33!==(n=t.src.charCodeAt(a+1))&&63!==n&&47!==n&&!function(t){var e=32|t;return e>=97&&e<=122}(n))&&(!!(o=t.src.slice(a).match(r))&&(e||(t.push("html_inline","",0).content=t.src.slice(a,a+o[0].length)),t.pos+=o[0].length,!0))))}},function(t,e,n){"use strict";var r=n(55),o=n(1).has,i=n(1).isValidEntityCode,a=n(1).fromCodePoint,s=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;t.exports=function(t,e){var n,u,l=t.pos,f=t.posMax;if(38!==t.src.charCodeAt(l))return!1;if(l+1=0;){if((o=i[n]).open&&o.marker===r.marker&&o.end<0&&o.level===r.level){var s=!1;if((o.close||r.open)&&void 0!==o.length&&void 0!==r.length&&(o.length+r.length)%3==0&&(o.length%3==0&&r.length%3==0||(s=!0)),!s){r.jump=e-n,r.open=!1,o.end=e,o.jump=0;break}}n-=o.jump+1}}},function(t,e,n){"use strict";t.exports=function(t){var e,n,r=0,o=t.tokens,i=t.tokens.length;for(e=n=0;e0&&r++,"text"===o[e].type&&e+10&&this.level++,this.pendingLevel=this.level,this.tokens.push(o),o},s.prototype.scanDelims=function(t,e){var n,r,s,c,u,l,f,p,d,h=t,g=!0,m=!0,v=this.posMax,b=this.src.charCodeAt(t);for(n=t>0?this.src.charCodeAt(t-1):32;h=3&&":"===t[e-3]?0:e>=3&&"/"===t[e-3]?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,n){var r=t.slice(e);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},u="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",l="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function f(t){var e=t.re=n(151)(t.__opts__),r=t.__tlds__.slice();function s(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||r.push(u),r.push(e.src_xn),e.src_tlds=r.join("|"),e.email_fuzzy=RegExp(s(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(s(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(s(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(s(e.tpl_host_fuzzy_test),"i");var c=[];function l(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach((function(e){var n=t.__schemas__[e];if(null!==n){var r={validate:null,link:null};if(t.__compiled__[e]=r,"[object Object]"===o(n))return!function(t){return"[object RegExp]"===o(t)}(n.validate)?i(n.validate)?r.validate=n.validate:l(e,n):r.validate=function(t){return function(e,n){var r=e.slice(n);return t.test(r)?r.match(t)[0].length:0}}(n.validate),void(i(n.normalize)?r.normalize=n.normalize:n.normalize?l(e,n):r.normalize=function(t,e){e.normalize(t)});!function(t){return"[object String]"===o(t)}(n)?l(e,n):c.push(e)}})),c.forEach((function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)})),t.__compiled__[""]={validate:null,normalize:function(t,e){e.normalize(t)}};var f=Object.keys(t.__compiled__).filter((function(e){return e.length>0&&t.__compiled__[e]})).map(a).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+f+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+f+")","ig"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),function(t){t.__index__=-1,t.__text_cache__=""}(t)}function p(t,e){var n=t.__index__,r=t.__last_index__,o=t.__text_cache__.slice(n,r);this.schema=t.__schema__.toLowerCase(),this.index=n+e,this.lastIndex=r+e,this.raw=o,this.text=o,this.url=o}function d(t,e){var n=new p(t,e);return t.__compiled__[n.schema].normalize(n,t),n}function h(t,e){if(!(this instanceof h))return new h(t,e);var n;e||(n=t,Object.keys(n||{}).reduce((function(t,e){return t||s.hasOwnProperty(e)}),!1)&&(e=t,t={})),this.__opts__=r({},s,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=r({},c,t),this.__compiled__={},this.__tlds__=l,this.__tlds_replaced__=!1,this.re={},f(this)}h.prototype.add=function(t,e){return this.__schemas__[t]=e,f(this),this},h.prototype.set=function(t){return this.__opts__=r(this.__opts__,t),this},h.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var e,n,r,o,i,a,s,c;if(this.re.schema_test.test(t))for((s=this.re.schema_search).lastIndex=0;null!==(e=s.exec(t));)if(o=this.testSchemaAt(t,e[2],s.lastIndex)){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+o;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=t.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(r=t.match(this.re.email_fuzzy))&&(i=r.index+r[1].length,a=r.index+r[0].length,(this.__index__<0||ithis.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(t){return this.re.pretest.test(t)},h.prototype.testSchemaAt=function(t,e,n){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,n,this):0},h.prototype.match=function(t){var e=0,n=[];this.__index__>=0&&this.__text_cache__===t&&(n.push(d(this,e)),e=this.__last_index__);for(var r=e?t.slice(e):t;this.test(r);)n.push(d(this,e)),r=r.slice(this.__last_index__),e+=this.__last_index__;return n.length?n:null},h.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter((function(t,e,n){return t!==n[e-1]})).reverse(),f(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,f(this),this)},h.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},h.prototype.onCompile=function(){},t.exports=h},function(t,e,n){"use strict";t.exports=function(t){var e={};e.src_Any=n(57).source,e.src_Cc=n(58).source,e.src_Z=n(59).source,e.src_P=n(36).source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join("|"),e.src_ZCc=[e.src_Z,e.src_Cc].join("|");return e.src_pseudo_letter="(?:(?![><|]|"+e.src_ZPCc+")"+e.src_Any+")",e.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",e.src_auth="(?:(?:(?!"+e.src_ZCc+"|[@/\\[\\]()]).)+@)?",e.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",e.src_host_terminator="(?=$|[><|]|"+e.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+e.src_ZPCc+"))",e.src_path="(?:[/?#](?:(?!"+e.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+e.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+e.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+e.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+e.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+e.src_ZCc+"|[']).)+\\'|\\'(?="+e.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+e.src_ZCc+"|[.]).|"+(t&&t["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+e.src_ZCc+").|\\!(?!"+e.src_ZCc+"|[!]).|\\?(?!"+e.src_ZCc+"|[?]).)+|\\/)?",e.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',e.src_xn="xn--[a-z0-9\\-]{1,59}",e.src_domain_root="(?:"+e.src_xn+"|"+e.src_pseudo_letter+"{1,63})",e.src_domain="(?:"+e.src_xn+"|(?:"+e.src_pseudo_letter+")|(?:"+e.src_pseudo_letter+"(?:-|"+e.src_pseudo_letter+"){0,61}"+e.src_pseudo_letter+"))",e.src_host="(?:(?:(?:(?:"+e.src_domain+")\\.)*"+e.src_domain+"))",e.tpl_host_fuzzy="(?:"+e.src_ip4+"|(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%)))",e.tpl_host_no_ip_fuzzy="(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%))",e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+e.src_ZPCc+"|>|$))",e.tpl_email_fuzzy='(^|[><|]|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}},function(t,e,n){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},function(t,e,n){"use strict";t.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},function(t,e,n){"use strict";t.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},function(t,e){t.exports=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(159),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(11))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o,i,a,s,c=1,u={},l=!1,f=t.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(t);p=p&&p.setTimeout?p:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){h(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((i=new MessageChannel).port1.onmessage=function(t){h(t.data)},r=function(t){i.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,o.removeChild(e),e=null},o.appendChild(e)}):r=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),p.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n1&&void 0!==arguments[1]&&arguments[1];if("string"!=typeof t||!t.trim())throw new Error("Invalid url.");return e&&("object"!==(void 0===e?"undefined":r(e))&&(e={stripFragment:!1}),t=i(t,e)),o(t)}},function(t,e,n){"use strict";var r=n(64),o=n(65),i=n(66);t.exports=function(t){t=(t||"").trim();var e={protocols:r(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},n=t.indexOf("://"),a=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var c=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(o(t)?e.protocol="ssh":"/"===c||"~"===c?(t=t.substring(2),e.protocol="file"):e.protocol="file")),-1!==n&&(t=t.substring(n+3)),s=t.split("/"),"file"!==e.protocol?e.resource=s.shift():e.resource="",2===(a=e.resource.split("@")).length&&(e.user=a[0],e.resource=a[1]),2===(a=e.resource.split(":")).length&&(e.resource=a[0],a[1]?(e.port=Number(a[1]),isNaN(e.port)&&(e.port=null,s.unshift(a[1]))):e.port=null),s=s.filter(Boolean),"file"===e.protocol?e.pathname=e.href:e.pathname=e.pathname||("file"!==e.protocol||"/"===e.href[0]?"/":"")+s.join("/"),2===(a=e.pathname.split("#")).length&&(e.pathname=a[0],e.hash=a[1]),2===(a=e.pathname.split("?")).length&&(e.pathname=a[0],e.search=a[1]),e.query=i.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}},function(t,e,n){"use strict";function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,i){e=e||"&",n=n||"=";var a={};if("string"!=typeof t||0===t.length)return a;var s=/\+/g;t=t.split(e);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var u=t.length;c>0&&u>c&&(u=c);for(var l=0;l=0?(f=g.substr(0,m),p=g.substr(m+1)):(f=g,p=""),d=decodeURIComponent(f),h=decodeURIComponent(p),r(a,d)?o(a[d])?a[d].push(h):a[d]=[a[d],h]:a[d]=h}return a};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";var r=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,s){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?i(a(t),(function(a){var s=encodeURIComponent(r(a))+n;return o(t[a])?i(t[a],(function(t){return s+encodeURIComponent(r(t))})).join(e):s+encodeURIComponent(r(t[a]))})).join(e):s?encodeURIComponent(r(s))+n+encodeURIComponent(r(t)):""};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function i(t,e){if(t.map)return t.map(e);for(var n=[],r=0;re.some(e=>e instanceof RegExp?e.test(t):e===t);t.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment);const n=(t=t.trim()).startsWith("//");!n&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));const i=new r(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&"https:"===i.protocol&&(i.protocol="http:"),e.forceHttps&&"http:"===i.protocol&&(i.protocol="https:"),e.stripHash&&(i.hash=""),i.pathname&&(i.pathname=i.pathname.replace(/((?![https?:]).)\/{2,}/g,(t,e)=>/^(?!\/)/g.test(e)?`${e}/`:"/")),i.pathname&&(i.pathname=decodeURI(i.pathname)),!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split("/");const n=t[t.length-1];o(n,e.removeDirectoryIndex)&&(t=t.slice(0,t.length-1),i.pathname=t.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(const t of[...i.searchParams.keys()])o(t,e.removeQueryParameters)&&i.searchParams.delete(t);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||"/"===i.pathname)&&(t=t.replace(/\/$/,"")),n&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}},function(t,e,n){"use strict";var r=n(63),o=n(171);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=_,e.resolve=function(t,e){return _(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?_(t,!1,!0).resolveObject(e):e},e.format=function(t){o.isString(t)&&(t=_(t));return t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),f=["%","/","?",";","#"].concat(l),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=n(66);function _(t,e,n){if(t&&o.isObject(t)&&t instanceof i)return t;var r=new i;return r.parse(t,e,n),r}i.prototype.parse=function(t,e,n){if(!o.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),s=-1!==i&&i127?I+="x":I+=L[D];if(!I.match(d)){var P=O.slice(0,T),j=O.slice(T+1),F=L.match(h);F&&(P.push(F[1]),j.unshift(F[2])),j.length&&(_="/"+j.join(".")+_),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=r.toASCII(this.hostname));var U=this.port?":"+this.port:"",$=this.hostname||"";this.host=$+U,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!g[x])for(T=0,N=l.length;T0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift());return n.search=t.search,n.query=t.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!k.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var C=k.slice(-1)[0],A=(n.host||t.host||k.length>1)&&("."===C||".."===C)||""===C,T=0,S=k.length;S>=0;S--)"."===(C=k[S])?k.splice(S,1):".."===C?(k.splice(S,1),T++):T&&(k.splice(S,1),T--);if(!E&&!x)for(;T--;T)k.unshift("..");!E||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),A&&"/"!==k.join("/").substr(-1)&&k.push("");var R,O=""===k[0]||k[0]&&"/"===k[0].charAt(0);w&&(n.hostname=n.host=O?"":k.length?k.shift():"",(R=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=R.shift(),n.host=n.hostname=R.shift()));return(E=E||n.host&&k.length)&&!O&&k.unshift(""),k.length?n.pathname=k.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,n){var r=n(67),o=n(68),i=n(69),a=n(17);t.exports=function(t){return function(e){e=a(e);var n=o(e)?i(e):void 0,s=n?n[0]:e.charAt(0),c=n?r(n,1).join(""):e.slice(1);return s[t]()+c}}},function(t,e){t.exports=function(t,e,n){var r=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(o);++r-1;);return n}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i0;){if("top-level"!==this.indentTypes.pop())break}},t}();e.default=a,t.exports=e.default},function(t,e,n){var r=n(188),o=n(189),i=n(190),a=n(17);t.exports=function(t,e,n){return e=(n?o(t,e,n):void 0===e)?1:i(e),r(a(t),e)}},function(t,e){var n=9007199254740991,r=Math.floor;t.exports=function(t,e){var o="";if(!t||e<1||e>n)return o;do{e%2&&(o+=t),(e=r(e/2))&&(t+=t)}while(e);return o}},function(t,e,n){var r=n(40),o=n(41),i=n(43),a=n(20);t.exports=function(t,e,n){if(!a(n))return!1;var s=typeof e;return!!("number"==s?o(n)&&i(e,n.length):"string"==s&&e in n)&&r(n[e],t)}},function(t,e,n){var r=n(191);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(192),o=1/0,i=17976931348623157e292;t.exports=function(t){return t?(t=r(t))===o||t===-o?(t<0?-1:1)*i:t==t?t:0:0===t?t:0}},function(t,e,n){var r=n(193),o=n(20),i=n(24),a=NaN,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return a;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=r(t);var n=c.test(t);return n||u.test(t)?l(t.slice(2),n?2:8):s.test(t)?a:+t}},function(t,e,n){var r=n(73),o=/^\s+/;t.exports=function(t){return t?t.slice(0,r(t)+1).replace(o,""):t}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){"use strict";e.__esModule=!0;var r,o=n(39),i=(r=o)&&r.__esModule?r:{default:r};var a=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.level=0}return t.prototype.beginIfPossible=function(t,e){0===this.level&&this.isInlineBlock(t,e)?this.level=1:this.level>0?this.level++:this.level=0},t.prototype.end=function(){this.level--},t.prototype.isActive=function(){return this.level>0},t.prototype.isInlineBlock=function(t,e){for(var n=0,r=0,o=e;o50)return!1;if(a.type===i.default.OPEN_PAREN)r++;else if(a.type===i.default.CLOSE_PAREN&&0===--r)return!0;if(this.isForbiddenToken(a))return!1}return!1},t.prototype.isForbiddenToken=function(t){var e=t.type,n=t.value;return e===i.default.RESERVED_TOPLEVEL||e===i.default.RESERVED_NEWLINE||e===i.default.COMMENT||e===i.default.BLOCK_COMMENT||";"===n},t}();e.default=a,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.params=e,this.index=0}return t.prototype.get=function(t){var e=t.key,n=t.value;return this.params?e?this.params[e]:this.params[this.index++]:n},t}();e.default=r,t.exports=e.default},function(t,e,n){var r=n(75),o=n(77),i=n(45),a=n(9),s=n(41),c=n(46),u=n(76),l=n(47),f="[object Map]",p="[object Set]",d=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(s(t)&&(a(t)||"string"==typeof t||"function"==typeof t.splice||c(t)||l(t)||i(t)))return!t.length;var e=o(t);if(e==f||e==p)return!t.size;if(u(t))return!r(t).length;for(var n in t)if(d.call(t,n))return!1;return!0}},function(t,e,n){var r=n(199)(Object.keys,Object);t.exports=r},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){var r=n(12)(n(8),"DataView");t.exports=r},function(t,e,n){var r=n(74),o=n(202),i=n(20),a=n(78),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,f=u.hasOwnProperty,p=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:s).test(a(t))}},function(t,e,n){var r,o=n(203),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(8)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(12)(n(8),"Promise");t.exports=r},function(t,e,n){var r=n(12)(n(8),"WeakMap");t.exports=r},function(t,e,n){var r=n(18),o=n(19),i="[object Arguments]";t.exports=function(t){return o(t)&&r(t)==i}},function(t,e){t.exports=function(){return!1}},function(t,e,n){var r=n(18),o=n(42),i=n(19),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!a[r(t)]}},function(t,e){t.exports=function(t){return function(e){return t(e)}}},function(t,e,n){(function(t){var r=n(71),o=e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,a=i&&i.exports===o&&r.process,s=function(){try{var t=i&&i.require&&i.require("util").types;return t||a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=s}).call(this,n(22)(t))},function(t,e,n){var r=n(17),o=/[\\^$.*+?()[\]{}|]/g,i=RegExp(o.source);t.exports=function(t){return(t=r(t))&&i.test(t)?t.replace(o,"\\$&"):t}},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(25)),o=i(n(26));function i(t){return t&&t.__esModule?t:{default:t}}var a=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],s=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","INTERSECT ALL","INTERSECT","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],c=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(25)),o=i(n(26));function i(t){return t&&t.__esModule?t:{default:t}}var a=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],s=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","END","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UNION ALL","UNION","UPDATE","VALUES","WHERE"],c=["AND","CROSS APPLY","CROSS JOIN","ELSE","END","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(25)),o=i(n(26));function i(t){return t&&t.__esModule?t:{default:t}}var a=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANT","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MODIFY","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],s=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UPDATE","VALUES","WHERE"],c=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],u=void 0,l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.cfg=e}return t.prototype.format=function(t){return u||(u=new o.default({reservedWords:a,reservedToplevelWords:s,reservedNewlineWords:c,stringTypes:['""',"N''","''","``","[]"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":"],lineCommentTypes:["#","--"]})),new r.default(this.cfg,u).format(t)},t}();e.default=l,t.exports=e.default},function(t,e){t.exports=function(t){const e={className:"variable",begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*(?![A-Za-z0-9])(?![$])"},n={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},r={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},o=t.inherit(t.APOS_STRING_MODE,{illegal:null}),i=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(r)}),a=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(r)}),s={className:"string",contains:[t.BACKSLASH_ESCAPE,n],variants:[t.inherit(o,{begin:"b'",end:"'"}),t.inherit(i,{begin:'b"',end:'"'}),i,o,a]},c={variants:[t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE]},u={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7","php8"],case_insensitive:!0,keywords:u,contains:[t.HASH_COMMENT_MODE,t.COMMENT("//","$",{contains:[n]}),t.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),t.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),n,{className:"keyword",begin:/\$this\b/},e,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[t.UNDERSCORE_TITLE_MODE,{begin:"=>"},{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:u,contains:["self",e,t.C_BLOCK_COMMENT_MODE,s,c]}]},{className:"class",beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0,illegal:/[:($"]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",contains:[t.UNDERSCORE_TITLE_MODE]},s,c]}}},function(t,e,n){var r=n(80),o=n(237),i=n(238),a=n(81),s=n(239),c=n(49),u=200;t.exports=function(t,e,n){var l=-1,f=o,p=t.length,d=!0,h=[],g=h;if(n)d=!1,f=i;else if(p>=u){var m=e?null:s(t);if(m)return c(m);d=!1,f=a,g=new r}else g=e?[]:h;t:for(;++l-1}},function(t,e,n){var r=n(29);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(30);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,n){var r=n(30);t.exports=function(t){return r(this,t).get(t)}},function(t,e,n){var r=n(30);t.exports=function(t){return r(this,t).has(t)}},function(t,e,n){var r=n(30);t.exports=function(t,e){var n=r(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this}},function(t,e){var n="__lodash_hash_undefined__";t.exports=function(t){return this.__data__.set(t,n),this}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(72);t.exports=function(t,e){return!!(null==t?0:t.length)&&r(t,e,0)>-1}},function(t,e){t.exports=function(t,e,n){for(var r=-1,o=null==t?0:t.length;++r>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&r.rotl(t,8)|4278255360&r.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-i)&63)):e.push("=");return e.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var e=[],r=0,o=0;r>>6-2*o);return e}},t.exports=r},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)} /*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */ -t.exports=function(t){return null!=t&&(n(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){"use strict";n.r(e);n(93);var r,o,i,a=n(6),s=n.n(a),c=n(31),u=n.n(c),l=n(32),f=n.n(l),p=n(7),d=n(0),h=Object(d.a)({},function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticStyle:{display:"none"},attrs:{xmlns:"http://www.w3.org/2000/svg"}},[e("symbol",{attrs:{id:"arrow-down-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"}},[e("path",{attrs:{d:"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"}})]),this._v(" "),e("symbol",{attrs:{id:"arrow-up-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"}},[e("path",{attrs:{d:"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"}})]),this._v(" "),e("symbol",{attrs:{id:"clipboard-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"}},[e("path",{attrs:{d:"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"}})]),this._v(" "),e("symbol",{attrs:{id:"lightbulb-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 352 512"}},[e("path",{attrs:{d:"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"}})]),this._v(" "),e("symbol",{attrs:{id:"pencil-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"}})]),this._v(" "),e("symbol",{attrs:{id:"plus-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"}})]),this._v(" "),e("symbol",{attrs:{id:"share-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"}})])])},[],!1,null,null,null).exports,m=n(5),g=n(14),v={props:{name:{required:!0}},data:function(){return{fullException:!1}},methods:{removeClamp:function(){this.fullException||(this.fullException=!0)}}},b=Object(d.a)(v,function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"ui-exception-message",class:this.fullException?"ui-exception-message-full":"",on:{mousedown:this.removeClamp}},[this._v("\n "+this._s(this.name)+"\n")])},[],!1,null,null,null).exports,_={components:{ExceptionClass:n(13).a,ExceptionMessage:b,LineNumber:g.a,FilePath:m.a},inject:["report"],computed:{firstFrame:function(){return this.report.stacktrace[0]}}},y={inject:["report","telescopeUrl","config"],components:{OccurrenceDetails:Object(d.a)(_,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"card-details-overflow scrollbar p-12 pt-10"},[n("div",{staticClass:"text-2xl"},[n("ExceptionClass",{attrs:{name:t.report.exception_class}}),t._v(" "),n("ExceptionMessage",{attrs:{name:t.report.message}})],1),t._v(" "),n("div",[n("a",{staticClass:"ui-url",attrs:{href:t.report.context.request.url,target:"_blank"}},[t._v("\n "+t._s(t.report.context.request.url)+"\n ")])])])},[],!1,null,null,null).exports,FilePath:m.a}},E=Object(d.a)(y,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"mt-12 card card-has-header card-no-props"},[n("div",{staticClass:"card-header"},[n("div",{staticClass:"grid items-center rounded-t border-b border-tint-300 text-xs text-tint-600 ",staticStyle:{"grid-template-columns":"1fr 1fr"}},[n("div",{staticClass:"grid cols-auto justify-start gap-2 px-4 py-2"},[n("div",{staticClass:"flex items-center"},[n("a",{attrs:{href:"http://flareapp.io/docs/ignition-for-laravel/introduction",target:"_blank",title:"Ignition docs"}},[n("svg",{staticClass:"w-4 h-5 mr-4",attrs:{viewBox:"0 0 428 988"}},[n("polygon",{staticStyle:{fill:"#FA4E79"},attrs:{points:"428,247.1 428,494.1 214,617.5 214,369.3 \t\t"}}),t._v(" "),n("polygon",{staticStyle:{fill:"#FFF082"},attrs:{points:"0,988 0,741 214,617.5 214,864.1 \t\t"}}),t._v(" "),n("polygon",{staticStyle:{fill:"#E6003A"},attrs:{points:"214,123.9 214,617.5 0,494.1 0,0 \t\t"}}),t._v(" "),n("polygon",{staticStyle:{fill:"#FFE100"},attrs:{points:"214,864.1 214,617.5 428,741 428,988 \t\t"}})])]),t._v(" "),n("FilePath",{attrs:{pathClass:"font-normal",file:t.report.application_path+t.config.directorySeparator,relative:!1}})],1)]),t._v(" "),n("div",{staticClass:"grid cols-auto items-center justify-end gap-4 px-4 py-2"},[t.telescopeUrl?n("div",[n("a",{staticClass:"link-dimmed sm:ml-6",attrs:{href:t.telescopeUrl,target:"_blank"}},[t._v("Telescope")])]):t._e()])])]),t._v(" "),n("div"),t._v(" "),n("div",{staticClass:"card-details"},[n("OccurrenceDetails")],1)])},[],!1,null,null,null).exports,k=n(10),x=n.n(k),w=n(20),C=n.n(w),A=n(100)(),T=null,S={inject:["config"],props:{solution:{required:!0}},data:function(){return{isHidingSolutions:this.hasHideSolutionsCookie(),canExecuteSolutions:null,runningSolution:!1,executionSuccessful:null}},computed:{healthCheckEndpoint:function(){return this.solution.execute_endpoint.replace("execute-solution","health-check")}},created:function(){this.configureRunnableSolutions()},mounted:function(){this.isHidingSolutions&&this.$refs.solutionCard.classList.add("solution-hidden")},methods:{configureRunnableSolutions:function(){this.config.enableRunnableSolutions?this.checkExecutionEndpoint():this.canExecuteSolutions=!1},markdown:function(t){return A.render(t)},checkExecutionEndpoint:(o=C()(x.a.mark(function t(){var e;return x.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,fetch(this.healthCheckEndpoint);case 3:return t.next=5,t.sent.json();case 5:e=t.sent,this.canExecuteSolutions=e.can_execute_commands,t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),this.canExecuteSolutions=!1;case 12:case"end":return t.stop()}},t,this,[[0,9]])})),function(){return o.apply(this,arguments)}),execute:(r=C()(x.a.mark(function t(){var e;return x.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.runningSolution){t.next=2;break}return t.abrupt("return");case 2:return t.prev=2,this.runningSolution=!0,t.next=6,fetch(this.solution.execute_endpoint,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({solution:this.solution.class,parameters:this.solution.run_parameters})});case 6:e=t.sent,this.executionSuccessful=200===e.status,t.next=14;break;case 10:t.prev=10,t.t0=t.catch(2),console.error(t.t0),this.executionSuccessful=!1;case 14:return t.prev=14,this.runningSolution=!1,t.finish(14);case 17:case"end":return t.stop()}},t,this,[[2,10,14,17]])})),function(){return r.apply(this,arguments)}),refresh:function(){location.reload()},getUrlLabel:function(t){var e=document.createElement("a");return e.href=t,e.hostname},toggleSolutions:function(){var t=this;this.isHidingSolutions?(window.clearTimeout(T),this.toggleHidingSolutions()):(this.$refs.solutionCard.classList.add("solution-hiding"),T=window.setTimeout(function(){t.$refs.solutionCard.classList.remove("solution-hiding"),t.toggleHidingSolutions()},100))},toggleHidingSolutions:function(){if(this.isHidingSolutions)return document.cookie="".concat("hide_solutions","=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;"),void(this.isHidingSolutions=!1);var t=new Date;t.setTime(t.getTime()+31536e6),document.cookie="".concat("hide_solutions","=true;expires=").concat(t.toUTCString(),";path=/;"),this.isHidingSolutions=!0},hasHideSolutionsCookie:function(){return document.cookie.includes("hide_solutions")}}},R={components:{SolutionCard:Object(d.a)(S,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"solution-toggle",class:{"solution-toggle-show":t.isHidingSolutions},on:{click:t.toggleSolutions}},[t.isHidingSolutions?n("a",{staticClass:"link-solution",attrs:{target:"_blank"}},[n("Icon",{staticClass:"text-xs mr-1",attrs:{name:"lightbulb"}}),t._v(" Show solutions")],1):n("a",{staticClass:"link-solution",attrs:{target:"_blank"}},[t._v("Hide solutions")])]),t._v(" "),n("div",{ref:"solutionCard",staticClass:"solution",class:{"solution-hidden":t.isHidingSolutions}},[n("div",{staticClass:"solution-main"},[n("div",{staticClass:"solution-background mx-0"},[n("svg",{staticClass:"hidden absolute right-0 h-full | md:block",attrs:{x:"0px",y:"0px",viewBox:"0 0 299 452"}},[n("g",{staticStyle:{opacity:"0.075"}},[n("polygon",{staticStyle:{fill:"rgb(63,63,63)"},attrs:{points:"298.1,451.9 150.9,451.9 21,226.9 298.1,227.1"}}),t._v(" "),n("polygon",{staticStyle:{fill:"rgb(151,151,151)"},attrs:{points:"298.1,227.1 21,226.9 150.9,1.9 298.1,1.9"}})])])]),t._v(" "),n("div",{staticClass:"p-12"},[n("div",{staticClass:"solution-content ml-0"},[n("h2",{staticClass:"solution-title"},[t._v(t._s(t.solution.title))]),t._v(" "),t.solution.description?n("div",{domProps:{innerHTML:t._s(t.markdown(t.solution.description))}}):t._e(),t._v(" "),t.solution.is_runnable?n("div",[n("p",{domProps:{innerHTML:t._s(t.markdown(t.solution.action_description))}}),t._v(" "),null===t.canExecuteSolutions?n("p",{staticClass:"py-4 text-sm italic"},[t._v("\n Loading...\n ")]):t._e(),t._v(" "),n("div",{staticClass:"mt-4"},[t.solution.is_runnable&&!0===t.canExecuteSolutions&&null===t.executionSuccessful?n("button",{staticClass:"button-secondary button-lg bg-tint-300 hover:bg-tint-400",attrs:{disabled:t.runningSolution},on:{click:t.execute}},[t.runningSolution?n("span",[t._v("Running...")]):t._e(),t._v(" "),t.runningSolution?t._e():n("span",[t._v(t._s(t.solution.run_button_text))])]):t._e(),t._v(" "),t.executionSuccessful?n("p",[n("strong",{staticClass:"font-semibold"},[t._v("The solution was executed succesfully.")]),t._v(" "),n("a",{staticClass:"link-solution",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.refresh(e)}}},[t._v("Refresh now.")])]):t._e(),t._v(" "),!1===t.executionSuccessful?n("p",[t._v("\n Something went wrong when executing the solution. Please try\n refresh the page and try again.\n ")]):t._e()])]):t._e(),t._v(" "),Object.entries(t.solution.links).length>0?n("div",{staticClass:"mt-8 grid justify-start"},[n("div",{staticClass:"border-t-2 border-gray-700 opacity-25 "}),t._v(" "),n("div",{staticClass:"pt-2 grid cols-auto-1fr gapx-4 gapy-2 text-sm"},[n("label",{staticClass:"font-semibold uppercase tracking-wider"},[t._v("Read more")]),t._v(" "),n("ul",t._l(t.solution.links,function(e,r){return n("li",{key:r},[n("a",{staticClass:"link-solution",attrs:{href:e,target:"_blank"}},[t._v(t._s(r))])])}),0)])]):t._e()])])])])])},[],!1,null,null,null).exports,ErrorCard:E,FilePath:m.a},inject:["report","solutions"],data:function(){return{activeSolutionKey:0}},computed:{firstFrame:function(){return this.report.stacktrace[0]},solution:function(){return this.solutions[this.activeSolutionKey]}}},O=Object(d.a)(R,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"layout-col z-10"},[n("ErrorCard")],1),t._v(" "),t.solutions.length>0?n("div",{staticClass:"layout-col z-1"},[n("SolutionCard",t._b({},"SolutionCard",{solution:t.solution},!1)),t._v(" "),t.solutions.length>1?n("div",{staticClass:"absolute left-0 bottom-0 w-full h-8 mb-2 px-4 text-sm z-10"},[n("ul",{staticClass:"grid cols-auto place-center gap-1"},t._l(t.solutions,function(e,r){return n("li",{key:e.class,on:{click:function(e){t.activeSolutionKey=r}}},[n("a",{staticClass:"grid place-center h-8 min-w-8 px-2 rounded-full",class:{"bg-tint-200 font-semibold":t.activeSolutionKey===r,"hover:bg-tint-100 cursor-pointer":t.activeSolutionKey!==r}},[t._v("\n "+t._s(r+1)+"\n ")])])}),0)]):t._e()],1):t._e()])},[],!1,null,null,null).exports,N={components:{CheckboxField:n(35).a},props:["error"],computed:{selectedTabs:function(){return this.tabs.filter(function(t){return t.checked}).map(function(t){return t.name})}},data:function(){return{tabs:[{label:"Stack trace",name:"stackTraceTab",checked:!0},{label:"Request",name:"requestTab",checked:!0},{label:"App",name:"appTab",checked:!0},{label:"User",name:"userTab",checked:!0},{label:"Context",name:"contextTab",checked:!0},{label:"Debug",name:"debugTab",checked:!0}]}},methods:{shareError:function(){this.$emit("share",this.selectedTabs)}}},L=Object(d.a)(N,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"grid cols-2 justify-start gapx-6 gapy-2"},t._l(t.tabs,function(e){return n("CheckboxField",{key:e.name,staticClass:"text-gray-200 hover:text-white",attrs:{label:e.label,name:e.name},on:{change:function(t){e.checked=!e.checked}},model:{value:e.checked,callback:function(n){t.$set(e,"checked",n)},expression:"tab.checked"}})}),1),t._v(" "),n("div",{staticClass:"mt-4"},[t.error?n("div",{staticClass:"mb-3"},[t._v("\n We were unable to share your error."),n("br"),t._v("\n Please try again later.\n ")]):t._e(),t._v(" "),n("button",{staticClass:"button-secondary button-sm bg-tint-600 text-white",on:{click:t.shareError}},[t._v("\n Share\n ")])])])},[],!1,null,null,null).exports,I={props:{text:{required:!0}},data:function(){return{copied:!1,timeout:!1}},methods:{copy:function(t){var e=this;this.timeout&&window.clearTimeout(this.timeout);var n=document.createElement("textarea");n.value=t,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),this.copied=!0,this.timeout=window.setTimeout(function(){return e.copied=!1},3e3)}}},D={components:{CopyButton:Object(d.a)(I,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("button",{attrs:{title:"Copy to clipboard"},on:{click:function(e){return t.copy(t.text)}}},[n("Icon",{class:t.copied?"fill-green-300":"fill-gray-200 hover:fill-white",attrs:{name:"clipboard"}}),t._v(" "),t.copied?n("div",{staticClass:"ml-2 absolute top-0 left-full text-green-300"},[t._v("\n Copied!\n ")]):t._e()],1)},[],!1,null,null,null).exports},props:{publicUrl:{required:!0},ownerUrl:{required:!0}}},M={components:{ShareLinks:Object(d.a)(D,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"text-left"},[n("p",{staticClass:"mt-2 text-gray-300"},[t._v("Share your error with others:")]),t._v(" "),n("div",{staticClass:"grid cols-auto items-center justify-start gap-2 mt-2"},[n("a",{staticClass:"button-secondary button-sm bg-tint-600 hover:bg-tint-700 text-white",attrs:{href:t.publicUrl,target:"_blank"}},[t._v("Open public share")]),t._v(" "),n("CopyButton",{attrs:{text:t.publicUrl}})],1),t._v(" "),n("p",{staticClass:"mt-4 text-gray-300"},[t._v("Administer your shared error here:")]),t._v(" "),n("div",{staticClass:"grid cols-auto items-center justify-start gap-2 mt-2"},[n("a",{staticClass:"button-secondary button-sm bg-tint-600 hover:bg-tint-700 text-white",attrs:{href:t.ownerUrl,target:"_blank"}},[t._v("Open share admin")]),t._v(" "),n("CopyButton",{attrs:{text:t.ownerUrl}})],1)])},[],!1,null,null,null).exports,ShareForm:L},inject:["report","shareEndpoint"],data:function(){return{shareHadError:!1,sharedErrorUrls:null,menuVisible:!1}},watch:{menuVisible:function(t){t?window.addEventListener("click",this.toggleMenu):window.removeEventListener("click",this.toggleMenu)}},methods:{toggleMenu:function(){this.menuVisible=!this.menuVisible},shareError:(i=C()(x.a.mark(function t(e){var n,r;return x.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,fetch(this.shareEndpoint,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({report:JSON.stringify(this.report),tabs:e,lineSelection:window.location.hash})});case 3:return n=t.sent,t.next=6,n.json();case 6:r=t.sent,n.ok?this.sharedErrorUrls=r:this.shareHadError=!0,t.next=13;break;case 10:t.prev=10,t.t0=t.catch(0),this.shareHadError=!0;case 13:case"end":return t.stop()}},t,this,[[0,10]])})),function(t){return i.apply(this,arguments)})}},P={inject:["config"],components:{ShareButton:Object(d.a)(M,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{on:{click:function(t){t.stopPropagation()}}},[n("button",{staticClass:"tab",class:t.menuVisible?"tab-active":"",on:{click:t.toggleMenu}},[t._v("\n Share\n "),n("Icon",{staticClass:"ml-2",attrs:{name:"share"}})],1),t._v(" "),n("div",{staticClass:"dropdown z-10 right-0 top-full p-4 overflow-visible",class:{hidden:!t.menuVisible},staticStyle:{"min-width":"18rem","margin-right":"-1px"},on:{click:function(t){t.stopPropagation()}}},[n("div",{staticClass:"flex items-center mb-4"},[n("svg",{staticClass:"w-4 h-5 mr-2",attrs:{viewBox:"0 0 682 1024"}},[n("polygon",{staticStyle:{fill:"#51DB9E"},attrs:{points:"235.3,510.5 21.5,387 21.5,140.2 236.5,264.1 "}}),t._v(" "),n("polygon",{staticStyle:{fill:"#7900F5"},attrs:{points:"235.3,1004.8 21.5,881.4 21.5,634.5 234.8,757.9 "}}),t._v(" "),n("polygon",{staticStyle:{fill:"#94F2C8"},attrs:{points:"448.9,386.9 21.5,140.2 235.3,16.7 663.2,263.4 "}}),t._v(" "),n("polygon",{staticStyle:{fill:"#A475F4"},attrs:{points:"234.8,757.9 21.5,634.5 235.3,511 449.1,634.5 "}})]),t._v(" "),n("h5",{staticClass:"text-left font-semibold uppercase tracking-wider whitespace-no-wrap"},[t._v("\n "+t._s(t.sharedErrorUrls?"Shared":"Share")+" on Flare\n ")]),t._v(" "),n("a",{staticClass:"ml-auto underline",attrs:{target:"_blank",href:"https://flareapp.io/docs/ignition-for-laravel/sharing-errors",title:"Flare documentation"}},[t._v("Docs\n ")])]),t._v(" "),t.sharedErrorUrls?n("div",[n("ShareLinks",{attrs:{publicUrl:t.sharedErrorUrls.public_url,ownerUrl:t.sharedErrorUrls.owner_url}})],1):n("ShareForm",{attrs:{error:t.shareHadError},on:{share:t.shareError}})],1)])},[],!1,null,null,null).exports},props:{value:{required:!0},customTabs:{required:!0}},data:function(){return{defaultTabs:[{component:"StackTab",title:"Stack trace"},{component:"RequestTab",title:"Request"},{component:"AppTab",title:"App"},{component:"UserTab",title:"User"},{component:"ContextTab",title:"Context"},{component:"DebugTab",title:"Debug"}],shareButtonEnabled:this.config.enableShareButton}},mounted:function(){this.applyDefaultTabProps(),this.$emit("input",this.tabs[this.currentTabIndex])},computed:{currentTabIndex:function(){var t=this;return this.tabs.findIndex(function(e){return e.component===t.value.component})},nextTab:function(){return this.tabs[this.currentTabIndex+1]||this.tabs[0]},previousTab:function(){return this.tabs[this.currentTabIndex-1]||this.tabs[this.tabs.length-1]},tabs:function(){var t={};return this.defaultTabs.forEach(function(e){t[e.component]=e}),this.customTabs.forEach(function(e){t[e.component]=e}),Object.values(t)}},methods:{applyDefaultTabProps:function(){var t=this;this.defaultTabs.map(function(e){return e.component===t.value.component&&(e.props=t.value.props||{}),e})}}},j={props:{tab:{required:!0}},render:function(t){return t(this.tab.component,{props:this.tab.props||{}})}},U={props:{report:{required:!0},config:{required:!0},solutions:{required:!0},telescopeUrl:{required:!0},shareEndpoint:{required:!0},defaultTab:{required:!0},defaultTabProps:{required:!1}},data:function(){return{customTabs:window.tabs,tab:{component:this.defaultTab,props:this.defaultTabProps||{}}}},provide:function(){return{config:this.config,report:this.report,solutions:this.solutions,telescopeUrl:this.telescopeUrl,shareEndpoint:this.shareEndpoint,setTab:this.setTab}},components:{Summary:O,Tabs:Object(d.a)(P,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"tab-nav"},[n("ul",{staticClass:"tab-bar"},t._l(t.tabs,function(e){return n("li",{key:e.component},[n("button",{staticClass:"tab",class:t.value.component===e.component?"tab-active":"",on:{click:function(n){return n.preventDefault(),t.$emit("input",e)}}},[t._v("\n "+t._s(e.title)+"\n ")])])}),0),t._v(" "),t.shareButtonEnabled?[n("div",{staticClass:"tab-delimiter"}),t._v(" "),n("ShareButton")]:t._e()],2)},[],!1,null,null,null).exports,Details:Object(d.a)(j,void 0,void 0,!1,null,null,null).exports,IconSymbols:h},methods:{setTab:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.tab={component:t,props:e}}},created:function(){}},F=Object(d.a)(U,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("IconSymbols"),t._v(" "),n("Summary"),t._v(" "),n("div",{staticClass:"layout-col mt-12"},[n("div",{staticClass:"tabs"},[n("Tabs",t._b({model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},"Tabs",{customTabs:t.customTabs},!1)),t._v(" "),n("div",{staticClass:"tab-main"},[n("Details",t._b({},"Details",{tab:t.tab},!1))],1)],1)])],1)},[],!1,null,null,null).exports;function $(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function B(t){for(var e=1;e=this.selectedRange[0]&&t<=this.selectedRange[1])},editorUrl:function(t){return Object(c.a)(this.config,this.selectedFrame.file,t)},highlightedCode:function(t){var e=o.a.highlight("php",t||"",!0,this.highlightState);return this.highlightState=e.top,e.value||" "}}},l=n(0),f=Object(l.a)(u,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"stack-main"},[n("div",{staticClass:"stack-main-header"},[n("div",{staticClass:"grid cols-auto gap-2 justify-start items-center"},[n("ExceptionClass",{attrs:{name:t.selectedFrame.class||"",method:t.selectedFrame.method||""}})],1),t._v(" "),t.selectedFrame.file?n("FilePath",{staticClass:"mt-1",attrs:{"line-number":t.selectedFrame.line_number,file:t.selectedFrame.file,editable:!0}}):t._e()],1),t._v(" "),n("div",{staticClass:"stack-main-content"},[n("div",{staticClass:"stack-viewer scrollbar"},[n("div",{staticClass:"stack-ruler"},[n("div",{staticClass:"stack-lines"},t._l(t.selectedFrame.code_snippet,function(e,r){return n("p",{key:r,staticClass:"stack-line cursor-pointer",class:{"stack-line-selected":t.withinSelectedRange(parseInt(r)),"stack-line-highlight":parseInt(r)===t.selectedFrame.line_number},on:{click:function(e){t.handleLineNumberClick(e,parseInt(r))}}},[t._v("\n "+t._s(r)+"\n ")])}),0)]),t._v(" "),n("pre",{ref:"codeContainer",staticClass:"stack-code",class:t.highlightTheme},[t._l(t.selectedFrame.code_snippet,function(e,r){return n("p",{key:r,staticClass:"stack-code-line",class:{"stack-code-line-highlight":parseInt(r)===t.selectedFrame.line_number,"stack-code-line-selected":t.withinSelectedRange(parseInt(r))}},[n("span",{domProps:{innerHTML:t._s(t.highlightedCode(e))}}),n("a",{staticClass:"editor-link",attrs:{href:t.editorUrl(r)}},[n("Icon",{attrs:{name:"pencil"}})],1)])}),t._v("\n ")],2)])])])},[],!1,null,null,null).exports,p={props:{frameGroup:{required:!0}},components:{ExceptionClass:i.a,FilePath:a.a,LineNumber:s.a}},d=Object(l.a)(p,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.frameGroup.expanded||"vendor"!==t.frameGroup.type?"unknown"===t.frameGroup.type?n("li",{staticClass:"stack-frame-group stack-frame-group-unknown"},[n("div",{staticClass:"stack-frame"},[n("button",{staticClass:"stack-frame-number"}),t._v(" "),n("div",{staticClass:"span-2 stack-frame-text"},[n("span",{staticClass:"text-left text-gray-500"},[t._v("\n "+t._s(t.frameGroup.frames.length>1?t.frameGroup.frames.length+" unknown frames":"1 unknown frame")+"\n ")])])])]):n("li",[n("ul",{staticClass:"stack-frame-group",class:"vendor"===t.frameGroup.type?"stack-frame-group-vendor":""},t._l(t.frameGroup.frames,function(e,r){return n("li",{key:r,staticClass:"stack-frame | cursor-pointer",class:e.selected?"stack-frame-selected":"",on:{click:function(n){return t.$emit("select",e.frame_number)}}},[n("div",{staticClass:"stack-frame-number"},[t._v(t._s(e.frame_number))]),t._v(" "),n("div",{staticClass:"stack-frame-text"},[0===r?n("header",{staticClass:"stack-frame-header",class:e.class?"mb-1":""},[n("FilePath",{staticClass:"stack-frame-path",attrs:{pathClass:"vendor"===t.frameGroup.type?"text-gray-800":"text-purple-800",file:e.relative_file}})],1):t._e(),t._v(" "),e.class?n("span",{staticClass:"stack-frame-exception-class"},[n("ExceptionClass",{staticClass:"stack-frame-exception-class",attrs:{name:e.class}})],1):t._e()]),t._v(" "),n("div",{staticClass:"stack-frame-line"},[n("LineNumber",{attrs:{lineNumber:e.line_number}})],1)])}),0)]):n("li",{staticClass:"stack-frame-group stack-frame-group-vendor",on:{click:function(e){return t.$emit("expand")}}},[n("div",{staticClass:"stack-frame | cursor-pointer"},[n("button",{staticClass:"stack-frame-number"},[n("Icon",{staticClass:"align-middle text-gray-500",attrs:{name:"plus"}})],1),t._v(" "),n("div",{staticClass:"span-2 stack-frame-text"},[n("button",{staticClass:"text-left text-gray-500"},[t._v("\n "+t._s(t.frameGroup.frames.length>1?t.frameGroup.frames.length+" vendor frames…":"1 vendor frame…")+"\n ")])])])])},[],!1,null,null,null).exports,h=n(6),m=n.n(h),g=n(4),v=n.n(g),b=n(15),_=n.n(b);function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function E(t){return t.map(function(e,n){return function(t){for(var e=1;e
- - {{lines}} - -
+{{structure}}

Legend

-

- Executed - Not Executed - Dead Code -

+ {{legend}}

Generated by php-code-coverage {{version}} using {{runtime}}{{generator}} at {{date}}.

diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist new file mode 100644 index 000000000..8717d7f9a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist @@ -0,0 +1,67 @@ + + + + + Code Coverage for {{full_path}} + + + + + + + +
+
+
+
+ +
+
+
+
+
+
+ + + + + + + + + + + + + + + + +{{items}} + +
 
Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
+
+{{lines}} +{{structure}} + +
+ + + + + + 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 index dc754b3c6..b1c0fca48 100644 --- 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 @@ -1,14 +1,14 @@ - {{name}} - {{classes_bar}} -
{{classes_tested_percent}}
-
{{classes_number}}
+ {{name}} + {{lines_bar}} +
{{lines_executed_percent}}
+
{{lines_number}}
{{methods_bar}}
{{methods_tested_percent}}
{{methods_number}}
{{crap}} - {{lines_bar}} -
{{lines_executed_percent}}
-
{{lines_number}}
+ {{classes_bar}} +
{{classes_tested_percent}}
+
{{classes_number}}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist new file mode 100644 index 000000000..505025179 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist @@ -0,0 +1,20 @@ + + {{name}} + {{lines_bar}} +
{{lines_executed_percent}}
+
{{lines_number}}
+ {{branches_bar}} +
{{branches_executed_percent}}
+
{{branches_number}}
+ {{paths_bar}} +
{{paths_executed_percent}}
+
{{paths_number}}
+ {{methods_bar}} +
{{methods_tested_percent}}
+
{{methods_number}}
+ {{crap}} + {{classes_bar}} +
{{classes_tested_percent}}
+
{{classes_number}}
+ + 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 index c4c0d1f95..97206dcda 100644 --- 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 @@ -1,7 +1,7 @@ /*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.default.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i0&&s--,40===e.which&&sdocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverState=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\\s)bs-popover\\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:''}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.popover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._config.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter(Boolean).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled")||this._element.hasAttribute("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.fn.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js index a1c07fd80..2c69bc908 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue}); + */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f]),E=parseFloat(w['border'+f+'Width']),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge}); //# sourceMappingURL=popper.min.js.map diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist new file mode 100644 index 000000000..89810d157 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist @@ -0,0 +1 @@ + {{lineNumber}}{{lineContent}} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist new file mode 100644 index 000000000..add40e4e9 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist @@ -0,0 +1,5 @@ + + +{{lines}} + +
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist index d8890ed27..2311d4564 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist @@ -1,11 +1,12 @@ - {{name}} + {{name}} + {{lines_bar}} +
{{lines_executed_percent}}
+
{{lines_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/method_item_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist new file mode 100644 index 000000000..36d6cb741 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist @@ -0,0 +1,18 @@ + + {{name}} + {{lines_bar}} +
{{lines_executed_percent}}
+
{{lines_number}}
+ {{branches_bar}} +
{{branches_executed_percent}}
+
{{branches_number}}
+ {{paths_bar}} +
{{paths_executed_percent}}
+
{{paths_number}}
+ {{methods_bar}} +
{{methods_tested_percent}}
+
{{methods_number}}
+ {{crap}} + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist new file mode 100644 index 000000000..d14b8ad9d --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist @@ -0,0 +1,9 @@ +
+

Paths

+

+ Below are the source code lines that represent each code path as identified by Xdebug. Please note a path is not + necessarily coterminous with a line, a line may contain multiple paths and therefore show up more than once. + Please also be aware that some paths may include implicit rather than explicit branches, e.g. an if statement + always has an else as part of its logical flow even if you didn't write one. +

+{{paths}} diff --git a/vendor/phpunit/php-code-coverage/src/Report/PHP.php b/vendor/phpunit/php-code-coverage/src/Report/PHP.php index 73e2f4ddf..ccb104ce5 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/PHP.php +++ b/vendor/phpunit/php-code-coverage/src/Report/PHP.php @@ -1,6 +1,6 @@ * @@ -9,56 +9,28 @@ */ namespace SebastianBergmann\CodeCoverage\Report; +use function dirname; +use function file_put_contents; +use function serialize; use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\RuntimeException; +use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; +use SebastianBergmann\CodeCoverage\Util\Filesystem; -/** - * Uses var_export() to write a SebastianBergmann\CodeCoverage\CodeCoverage object to a file. - */ final class PHP { - /** - * @throws \SebastianBergmann\CodeCoverage\RuntimeException - */ public function process(CodeCoverage $coverage, ?string $target = null): string { - $filter = $coverage->filter(); - - $buffer = \sprintf( - 'setData(%s); -$coverage->setTests(%s); - -$filter = $coverage->filter(); -$filter->setWhitelistedFiles(%s); - -return $coverage;', - \var_export($coverage->getData(true), true), - \var_export($coverage->getTests(), true), - \var_export($filter->getWhitelistedFiles(), true) - ); + $buffer = "createDirectory(\dirname($target))) { - throw new \RuntimeException(\sprintf('Directory "%s" was not created', \dirname($target))); - } + Filesystem::createDirectory(dirname($target)); - if (@\file_put_contents($target, $buffer) === false) { - throw new RuntimeException( - \sprintf( - 'Could not write to "%s', - $target - ) - ); + if (@file_put_contents($target, $buffer) === false) { + throw new WriteOperationFailedException($target); } } return $buffer; } - - private function createDirectory(string $directory): bool - { - return !(!\is_dir($directory) && !@\mkdir($directory, 0777, true) && !\is_dir($directory)); - } } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Text.php b/vendor/phpunit/php-code-coverage/src/Report/Text.php index 9593a2285..755c2dd48 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Text.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Text.php @@ -1,6 +1,6 @@ * @@ -9,15 +9,18 @@ */ namespace SebastianBergmann\CodeCoverage\Report; +use const PHP_EOL; +use function array_map; +use function date; +use function ksort; +use function max; +use function sprintf; +use function str_pad; +use function strlen; use SebastianBergmann\CodeCoverage\CodeCoverage; use SebastianBergmann\CodeCoverage\Node\File; -use SebastianBergmann\CodeCoverage\Util; +use SebastianBergmann\CodeCoverage\Util\Percentage; -/** - * Generates human readable output from a code coverage object. - * - * The output gets put into a text file our written to the CLI. - */ final class Text { /** @@ -80,32 +83,46 @@ final class Text public function process(CodeCoverage $coverage, bool $showColors = false): string { - $output = \PHP_EOL . \PHP_EOL; + $hasBranchCoverage = !empty($coverage->getData(true)->functionCoverage()); + + $output = PHP_EOL . PHP_EOL; $report = $coverage->getReport(); $colors = [ - 'header' => '', - 'classes' => '', - 'methods' => '', - 'lines' => '', - 'reset' => '', - 'eol' => '', + 'header' => '', + 'classes' => '', + 'methods' => '', + 'lines' => '', + 'branches' => '', + 'paths' => '', + 'reset' => '', + 'eol' => '', ]; if ($showColors) { - $colors['classes'] = $this->getCoverageColor( - $report->getNumTestedClassesAndTraits(), - $report->getNumClassesAndTraits() + $colors['classes'] = $this->coverageColor( + $report->numberOfTestedClassesAndTraits(), + $report->numberOfClassesAndTraits() ); - $colors['methods'] = $this->getCoverageColor( - $report->getNumTestedMethods(), - $report->getNumMethods() + $colors['methods'] = $this->coverageColor( + $report->numberOfTestedMethods(), + $report->numberOfMethods() ); - $colors['lines'] = $this->getCoverageColor( - $report->getNumExecutedLines(), - $report->getNumExecutableLines() + $colors['lines'] = $this->coverageColor( + $report->numberOfExecutedLines(), + $report->numberOfExecutableLines() + ); + + $colors['branches'] = $this->coverageColor( + $report->numberOfExecutedBranches(), + $report->numberOfExecutableBranches() + ); + + $colors['paths'] = $this->coverageColor( + $report->numberOfExecutedPaths(), + $report->numberOfExecutablePaths() ); $colors['reset'] = self::COLOR_RESET; @@ -113,48 +130,70 @@ final class Text $colors['eol'] = self::COLOR_EOL; } - $classes = \sprintf( + $classes = sprintf( ' Classes: %6s (%d/%d)', - Util::percent( - $report->getNumTestedClassesAndTraits(), - $report->getNumClassesAndTraits(), - true - ), - $report->getNumTestedClassesAndTraits(), - $report->getNumClassesAndTraits() + Percentage::fromFractionAndTotal( + $report->numberOfTestedClassesAndTraits(), + $report->numberOfClassesAndTraits() + )->asString(), + $report->numberOfTestedClassesAndTraits(), + $report->numberOfClassesAndTraits() ); - $methods = \sprintf( + $methods = sprintf( ' Methods: %6s (%d/%d)', - Util::percent( - $report->getNumTestedMethods(), - $report->getNumMethods(), - true - ), - $report->getNumTestedMethods(), - $report->getNumMethods() + Percentage::fromFractionAndTotal( + $report->numberOfTestedMethods(), + $report->numberOfMethods(), + )->asString(), + $report->numberOfTestedMethods(), + $report->numberOfMethods() ); - $lines = \sprintf( + $paths = ''; + $branches = ''; + + if ($hasBranchCoverage) { + $paths = sprintf( + ' Paths: %6s (%d/%d)', + Percentage::fromFractionAndTotal( + $report->numberOfExecutedPaths(), + $report->numberOfExecutablePaths(), + )->asString(), + $report->numberOfExecutedPaths(), + $report->numberOfExecutablePaths() + ); + + $branches = sprintf( + ' Branches: %6s (%d/%d)', + Percentage::fromFractionAndTotal( + $report->numberOfExecutedBranches(), + $report->numberOfExecutableBranches(), + )->asString(), + $report->numberOfExecutedBranches(), + $report->numberOfExecutableBranches() + ); + } + + $lines = sprintf( ' Lines: %6s (%d/%d)', - Util::percent( - $report->getNumExecutedLines(), - $report->getNumExecutableLines(), - true - ), - $report->getNumExecutedLines(), - $report->getNumExecutableLines() + Percentage::fromFractionAndTotal( + $report->numberOfExecutedLines(), + $report->numberOfExecutableLines(), + )->asString(), + $report->numberOfExecutedLines(), + $report->numberOfExecutableLines() ); - $padding = \max(\array_map('strlen', [$classes, $methods, $lines])); + $padding = max(array_map('strlen', [$classes, $methods, $lines])); if ($this->showOnlySummary) { $title = 'Code Coverage Report Summary:'; - $padding = \max($padding, \strlen($title)); + $padding = max($padding, strlen($title)); $output .= $this->format($colors['header'], $padding, $title); } else { - $date = \date(' Y-m-d H:i:s', $_SERVER['REQUEST_TIME']); + $date = date(' Y-m-d H:i:s'); $title = 'Code Coverage Report:'; $output .= $this->format($colors['header'], $padding, $title); @@ -165,10 +204,15 @@ final class Text $output .= $this->format($colors['classes'], $padding, $classes); $output .= $this->format($colors['methods'], $padding, $methods); + + if ($hasBranchCoverage) { + $output .= $this->format($colors['paths'], $padding, $paths); + $output .= $this->format($colors['branches'], $padding, $branches); + } $output .= $this->format($colors['lines'], $padding, $lines); if ($this->showOnlySummary) { - return $output . \PHP_EOL; + return $output . PHP_EOL; } $classCoverage = []; @@ -178,13 +222,17 @@ final class Text continue; } - $classes = $item->getClassesAndTraits(); + $classes = $item->classesAndTraits(); foreach ($classes as $className => $class) { - $classStatements = 0; - $coveredClassStatements = 0; - $coveredMethods = 0; - $classMethods = 0; + $classExecutableLines = 0; + $classExecutedLines = 0; + $classExecutableBranches = 0; + $classExecutedBranches = 0; + $classExecutablePaths = 0; + $classExecutedPaths = 0; + $coveredMethods = 0; + $classMethods = 0; foreach ($class['methods'] as $method) { if ($method['executableLines'] == 0) { @@ -192,68 +240,77 @@ final class Text } $classMethods++; - $classStatements += $method['executableLines']; - $coveredClassStatements += $method['executedLines']; + $classExecutableLines += $method['executableLines']; + $classExecutedLines += $method['executedLines']; + $classExecutableBranches += $method['executableBranches']; + $classExecutedBranches += $method['executedBranches']; + $classExecutablePaths += $method['executablePaths']; + $classExecutedPaths += $method['executedPaths']; if ($method['coverage'] == 100) { $coveredMethods++; } } - $namespace = ''; - - if (!empty($class['package']['namespace'])) { - $namespace = '\\' . $class['package']['namespace'] . '::'; - } elseif (!empty($class['package']['fullPackage'])) { - $namespace = '@' . $class['package']['fullPackage'] . '::'; - } - - $classCoverage[$namespace . $className] = [ - 'namespace' => $namespace, - 'className ' => $className, + $classCoverage[$className] = [ + 'namespace' => $class['namespace'], + 'className' => $className, 'methodsCovered' => $coveredMethods, 'methodCount' => $classMethods, - 'statementsCovered' => $coveredClassStatements, - 'statementCount' => $classStatements, + 'statementsCovered' => $classExecutedLines, + 'statementCount' => $classExecutableLines, + 'branchesCovered' => $classExecutedBranches, + 'branchesCount' => $classExecutableBranches, + 'pathsCovered' => $classExecutedPaths, + 'pathsCount' => $classExecutablePaths, ]; } } - \ksort($classCoverage); + ksort($classCoverage); - $methodColor = ''; - $linesColor = ''; - $resetColor = ''; + $methodColor = ''; + $pathsColor = ''; + $branchesColor = ''; + $linesColor = ''; + $resetColor = ''; foreach ($classCoverage as $fullQualifiedPath => $classInfo) { if ($this->showUncoveredFiles || $classInfo['statementsCovered'] != 0) { if ($showColors) { - $methodColor = $this->getCoverageColor($classInfo['methodsCovered'], $classInfo['methodCount']); - $linesColor = $this->getCoverageColor($classInfo['statementsCovered'], $classInfo['statementCount']); - $resetColor = $colors['reset']; + $methodColor = $this->coverageColor($classInfo['methodsCovered'], $classInfo['methodCount']); + $pathsColor = $this->coverageColor($classInfo['pathsCovered'], $classInfo['pathsCount']); + $branchesColor = $this->coverageColor($classInfo['branchesCovered'], $classInfo['branchesCount']); + $linesColor = $this->coverageColor($classInfo['statementsCovered'], $classInfo['statementCount']); + $resetColor = $colors['reset']; } - $output .= \PHP_EOL . $fullQualifiedPath . \PHP_EOL - . ' ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' ' - . ' ' . $linesColor . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor; + $output .= PHP_EOL . $fullQualifiedPath . PHP_EOL + . ' ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' '; + + if ($hasBranchCoverage) { + $output .= ' ' . $pathsColor . 'Paths: ' . $this->printCoverageCounts($classInfo['pathsCovered'], $classInfo['pathsCount'], 3) . $resetColor . ' ' + . ' ' . $branchesColor . 'Branches: ' . $this->printCoverageCounts($classInfo['branchesCovered'], $classInfo['branchesCount'], 3) . $resetColor . ' '; + } + $output .= ' ' . $linesColor . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor; } } - return $output . \PHP_EOL; + return $output . PHP_EOL; } - private function getCoverageColor(int $numberOfCoveredElements, int $totalNumberOfElements): string + private function coverageColor(int $numberOfCoveredElements, int $totalNumberOfElements): string { - $coverage = Util::percent( + $coverage = Percentage::fromFractionAndTotal( $numberOfCoveredElements, $totalNumberOfElements ); - if ($coverage >= $this->highLowerBound) { + if ($coverage->asFloat() >= $this->highLowerBound) { return self::COLOR_GREEN; } - if ($coverage > $this->lowUpperBound) { + if ($coverage->asFloat() > $this->lowUpperBound) { return self::COLOR_YELLOW; } @@ -264,20 +321,21 @@ final class Text { $format = '%' . $precision . 's'; - return Util::percent( + return Percentage::fromFractionAndTotal( $numberOfCoveredElements, - $totalNumberOfElements, - true, - true - ) . - ' (' . \sprintf($format, $numberOfCoveredElements) . '/' . - \sprintf($format, $totalNumberOfElements) . ')'; + $totalNumberOfElements + )->asFixedWidthString() . + ' (' . sprintf($format, $numberOfCoveredElements) . '/' . + sprintf($format, $totalNumberOfElements) . ')'; } - private function format($color, $padding, $string): string + /** + * @param false|string $string + */ + private function format(string $color, int $padding, $string): string { $reset = $color ? self::COLOR_RESET : ''; - return $color . \str_pad($string, $padding) . $reset . \PHP_EOL; + return $color . str_pad((string) $string, $padding) . $reset . PHP_EOL; } } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php index c12a5d2cf..ebdbae612 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php @@ -1,6 +1,6 @@ * @@ -9,47 +9,54 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use function constant; +use function phpversion; +use DateTimeImmutable; +use DOMElement; use SebastianBergmann\Environment\Runtime; +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class BuildInformation { /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; - public function __construct(\DOMElement $contextNode) + public function __construct(DOMElement $contextNode) { $this->contextNode = $contextNode; } public function setRuntimeInformation(Runtime $runtime): void { - $runtimeNode = $this->getNodeByName('runtime'); + $runtimeNode = $this->nodeByName('runtime'); $runtimeNode->setAttribute('name', $runtime->getName()); $runtimeNode->setAttribute('version', $runtime->getVersion()); $runtimeNode->setAttribute('url', $runtime->getVendorUrl()); - $driverNode = $this->getNodeByName('driver'); + $driverNode = $this->nodeByName('driver'); if ($runtime->hasPHPDBGCodeCoverage()) { $driverNode->setAttribute('name', 'phpdbg'); - $driverNode->setAttribute('version', \constant('PHPDBG_VERSION')); + $driverNode->setAttribute('version', constant('PHPDBG_VERSION')); } if ($runtime->hasXdebug()) { $driverNode->setAttribute('name', 'xdebug'); - $driverNode->setAttribute('version', \phpversion('xdebug')); + $driverNode->setAttribute('version', phpversion('xdebug')); } if ($runtime->hasPCOV()) { $driverNode->setAttribute('name', 'pcov'); - $driverNode->setAttribute('version', \phpversion('pcov')); + $driverNode->setAttribute('version', phpversion('pcov')); } } - public function setBuildTime(\DateTime $date): void + public function setBuildTime(DateTimeImmutable $date): void { $this->contextNode->setAttribute('time', $date->format('D M j G:i:s T Y')); } @@ -60,7 +67,7 @@ final class BuildInformation $this->contextNode->setAttribute('coverage', $coverageVersion); } - private function getNodeByName(string $name): \DOMElement + private function nodeByName(string $name): DOMElement { $node = $this->contextNode->getElementsByTagNameNS( 'https://schema.phpunit.de/coverage/1.0', diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php index 996a6196a..b556d8205 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php @@ -1,6 +1,6 @@ * @@ -9,17 +9,22 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; -use SebastianBergmann\CodeCoverage\RuntimeException; +use DOMElement; +use SebastianBergmann\CodeCoverage\ReportAlreadyFinalizedException; +use XMLWriter; +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Coverage { /** - * @var \XMLWriter + * @var XMLWriter */ private $writer; /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; @@ -28,23 +33,23 @@ final class Coverage */ private $finalized = false; - public function __construct(\DOMElement $context, string $line) + public function __construct(DOMElement $context, string $line) { $this->contextNode = $context; - $this->writer = new \XMLWriter(); + $this->writer = new XMLWriter; $this->writer->openMemory(); $this->writer->startElementNS(null, $context->nodeName, 'https://schema.phpunit.de/coverage/1.0'); $this->writer->writeAttribute('nr', $line); } /** - * @throws RuntimeException + * @throws ReportAlreadyFinalizedException */ public function addTest(string $test): void { if ($this->finalized) { - throw new RuntimeException('Coverage Report already finalized'); + throw new ReportAlreadyFinalizedException; } $this->writer->startElement('covered'); diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php index b1823214c..b712953ab 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php @@ -1,6 +1,6 @@ * @@ -9,6 +9,9 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Directory extends Node { } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php index c908a1507..3ecc7506f 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php @@ -1,6 +1,6 @@ * @@ -9,12 +9,33 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use const DIRECTORY_SEPARATOR; +use const PHP_EOL; +use function count; +use function dirname; +use function file_get_contents; +use function file_put_contents; +use function is_array; +use function is_dir; +use function is_file; +use function is_writable; +use function libxml_clear_errors; +use function libxml_get_errors; +use function libxml_use_internal_errors; +use function sprintf; +use function strlen; +use function substr; +use DateTimeImmutable; +use DOMDocument; use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Driver\PathExistsButIsNotDirectoryException; +use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; use SebastianBergmann\CodeCoverage\Node\AbstractNode; use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; use SebastianBergmann\CodeCoverage\Node\File as FileNode; -use SebastianBergmann\CodeCoverage\RuntimeException; +use SebastianBergmann\CodeCoverage\Util\Filesystem as DirectoryUtil; use SebastianBergmann\CodeCoverage\Version; +use SebastianBergmann\CodeCoverage\XmlException; use SebastianBergmann\Environment\Runtime; final class Facade @@ -40,12 +61,12 @@ final class Facade } /** - * @throws RuntimeException + * @throws XmlException */ public function process(CodeCoverage $coverage, string $target): void { - if (\substr($target, -1, 1) !== \DIRECTORY_SEPARATOR) { - $target .= \DIRECTORY_SEPARATOR; + if (substr($target, -1, 1) !== DIRECTORY_SEPARATOR) { + $target .= DIRECTORY_SEPARATOR; } $this->target = $target; @@ -54,7 +75,7 @@ final class Facade $report = $coverage->getReport(); $this->project = new Project( - $coverage->getReport()->getName() + $coverage->getReport()->name() ); $this->setBuildInformation(); @@ -66,92 +87,90 @@ final class Facade private function setBuildInformation(): void { - $buildNode = $this->project->getBuildInformation(); - $buildNode->setRuntimeInformation(new Runtime()); - $buildNode->setBuildTime(\DateTime::createFromFormat('U', (string) $_SERVER['REQUEST_TIME'])); + $buildNode = $this->project->buildInformation(); + $buildNode->setRuntimeInformation(new Runtime); + $buildNode->setBuildTime(new DateTimeImmutable); $buildNode->setGeneratorVersions($this->phpUnitVersion, Version::id()); } /** - * @throws RuntimeException + * @throws PathExistsButIsNotDirectoryException + * @throws WriteOperationFailedException */ private function initTargetDirectory(string $directory): void { - if (\file_exists($directory)) { - if (!\is_dir($directory)) { - throw new RuntimeException( - "'$directory' exists but is not a directory." - ); + if (is_file($directory)) { + if (!is_dir($directory)) { + throw new PathExistsButIsNotDirectoryException($directory); } - if (!\is_writable($directory)) { - throw new RuntimeException( - "'$directory' exists but is not writable." - ); + if (!is_writable($directory)) { + throw new WriteOperationFailedException($directory); } - } elseif (!$this->createDirectory($directory)) { - throw new RuntimeException( - "'$directory' could not be created." - ); } + + DirectoryUtil::createDirectory($directory); } + /** + * @throws XmlException + */ private function processDirectory(DirectoryNode $directory, Node $context): void { - $directoryName = $directory->getName(); + $directoryName = $directory->name(); - if ($this->project->getProjectSourceDirectory() === $directoryName) { + if ($this->project->projectSourceDirectory() === $directoryName) { $directoryName = '/'; } $directoryObject = $context->addDirectory($directoryName); - $this->setTotals($directory, $directoryObject->getTotals()); + $this->setTotals($directory, $directoryObject->totals()); - foreach ($directory->getDirectories() as $node) { + foreach ($directory->directories() as $node) { $this->processDirectory($node, $directoryObject); } - foreach ($directory->getFiles() as $node) { + foreach ($directory->files() as $node) { $this->processFile($node, $directoryObject); } } /** - * @throws RuntimeException + * @throws XmlException */ private function processFile(FileNode $file, Directory $context): void { $fileObject = $context->addFile( - $file->getName(), - $file->getId() . '.xml' + $file->name(), + $file->id() . '.xml' ); - $this->setTotals($file, $fileObject->getTotals()); + $this->setTotals($file, $fileObject->totals()); - $path = \substr( - $file->getPath(), - \strlen($this->project->getProjectSourceDirectory()) + $path = substr( + $file->pathAsString(), + strlen($this->project->projectSourceDirectory()) ); $fileReport = new Report($path); - $this->setTotals($file, $fileReport->getTotals()); + $this->setTotals($file, $fileReport->totals()); - foreach ($file->getClassesAndTraits() as $unit) { + foreach ($file->classesAndTraits() as $unit) { $this->processUnit($unit, $fileReport); } - foreach ($file->getFunctions() as $function) { + foreach ($file->functions() as $function) { $this->processFunction($function, $fileReport); } - foreach ($file->getCoverageData() as $line => $tests) { - if (!\is_array($tests) || \count($tests) === 0) { + foreach ($file->lineCoverageData() as $line => $tests) { + if (!is_array($tests) || count($tests) === 0) { continue; } - $coverage = $fileReport->getLineCoverage((string) $line); + $coverage = $fileReport->lineCoverage((string) $line); foreach ($tests as $test) { $coverage->addTest($test); @@ -160,19 +179,19 @@ final class Facade $coverage->finalize(); } - $fileReport->getSource()->setSourceCode( - \file_get_contents($file->getPath()) + $fileReport->source()->setSourceCode( + file_get_contents($file->pathAsString()) ); - $this->saveDocument($fileReport->asDom(), $file->getId()); + $this->saveDocument($fileReport->asDom(), $file->id()); } private function processUnit(array $unit, Report $report): void { if (isset($unit['className'])) { - $unitObject = $report->getClassObject($unit['className']); + $unitObject = $report->classObject($unit['className']); } else { - $unitObject = $report->getTraitObject($unit['traitName']); + $unitObject = $report->traitObject($unit['traitName']); } $unitObject->setLines( @@ -182,15 +201,7 @@ final class Facade ); $unitObject->setCrap((float) $unit['crap']); - - $unitObject->setPackage( - $unit['package']['fullPackage'], - $unit['package']['package'], - $unit['package']['subpackage'], - $unit['package']['category'] - ); - - $unitObject->setNamespace($unit['package']['namespace']); + $unitObject->setNamespace($unit['namespace']); foreach ($unit['methods'] as $method) { $methodObject = $unitObject->addMethod($method['methodName']); @@ -207,7 +218,7 @@ final class Facade private function processFunction(array $function, Report $report): void { - $functionObject = $report->getFunctionObject($function['functionName']); + $functionObject = $report->functionObject($function['functionName']); $functionObject->setSignature($function['signature']); $functionObject->setLines((string) $function['startLine']); @@ -217,71 +228,88 @@ final class Facade private function processTests(array $tests): void { - $testsObject = $this->project->getTests(); + $testsObject = $this->project->tests(); foreach ($tests as $test => $result) { - if ($test === 'UNCOVERED_FILES_FROM_WHITELIST') { - continue; - } - $testsObject->addTest($test, $result); } } private function setTotals(AbstractNode $node, Totals $totals): void { - $loc = $node->getLinesOfCode(); + $loc = $node->linesOfCode(); $totals->setNumLines( - $loc['loc'], - $loc['cloc'], - $loc['ncloc'], - $node->getNumExecutableLines(), - $node->getNumExecutedLines() + $loc['linesOfCode'], + $loc['commentLinesOfCode'], + $loc['nonCommentLinesOfCode'], + $node->numberOfExecutableLines(), + $node->numberOfExecutedLines() ); $totals->setNumClasses( - $node->getNumClasses(), - $node->getNumTestedClasses() + $node->numberOfClasses(), + $node->numberOfTestedClasses() ); $totals->setNumTraits( - $node->getNumTraits(), - $node->getNumTestedTraits() + $node->numberOfTraits(), + $node->numberOfTestedTraits() ); $totals->setNumMethods( - $node->getNumMethods(), - $node->getNumTestedMethods() + $node->numberOfMethods(), + $node->numberOfTestedMethods() ); $totals->setNumFunctions( - $node->getNumFunctions(), - $node->getNumTestedFunctions() + $node->numberOfFunctions(), + $node->numberOfTestedFunctions() ); } - private function getTargetDirectory(): string + private function targetDirectory(): string { return $this->target; } /** - * @throws RuntimeException + * @throws XmlException */ - private function saveDocument(\DOMDocument $document, string $name): void + private function saveDocument(DOMDocument $document, string $name): void { - $filename = \sprintf('%s/%s.xml', $this->getTargetDirectory(), $name); + $filename = sprintf('%s/%s.xml', $this->targetDirectory(), $name); $document->formatOutput = true; $document->preserveWhiteSpace = false; - $this->initTargetDirectory(\dirname($filename)); + $this->initTargetDirectory(dirname($filename)); - $document->save($filename); + file_put_contents($filename, $this->documentAsString($document)); } - private function createDirectory(string $directory): bool + /** + * @throws XmlException + * + * @see https://bugs.php.net/bug.php?id=79191 + */ + private function documentAsString(DOMDocument $document): string { - return !(!\is_dir($directory) && !@\mkdir($directory, 0777, true) && !\is_dir($directory)); + $xmlErrorHandling = libxml_use_internal_errors(true); + $xml = $document->saveXML(); + + if ($xml === false) { + $message = 'Unable to generate the XML'; + + foreach (libxml_get_errors() as $error) { + $message .= PHP_EOL . $error->message; + } + + throw new XmlException($message); + } + + libxml_clear_errors(); + libxml_use_internal_errors($xmlErrorHandling); + + return $xml; } } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php index 02af64477..245c5cee6 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php @@ -1,6 +1,6 @@ * @@ -9,25 +9,31 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ class File { /** - * @var \DOMDocument + * @var DOMDocument */ private $dom; /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; - public function __construct(\DOMElement $context) + public function __construct(DOMElement $context) { $this->dom = $context->ownerDocument; $this->contextNode = $context; } - public function getTotals(): Totals + public function totals(): Totals { $totalsContainer = $this->contextNode->firstChild; @@ -43,7 +49,7 @@ class File return new Totals($totalsContainer); } - public function getLineCoverage(string $line): Coverage + public function lineCoverage(string $line): Coverage { $coverage = $this->contextNode->getElementsByTagNameNS( 'https://schema.phpunit.de/coverage/1.0', @@ -69,12 +75,12 @@ class File return new Coverage($lineNode, $line); } - protected function getContextNode(): \DOMElement + protected function contextNode(): DOMElement { return $this->contextNode; } - protected function getDomDocument(): \DOMDocument + protected function dom(): DOMDocument { return $this->dom; } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php index b6a7f1602..7e3009997 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php @@ -1,6 +1,6 @@ * @@ -9,14 +9,19 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Method { /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; - public function __construct(\DOMElement $context, string $name) + public function __construct(DOMElement $context, string $name) { $this->contextNode = $context; diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php index d3ba223a5..159923093 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php @@ -1,6 +1,6 @@ * @@ -9,34 +9,40 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ abstract class Node { /** - * @var \DOMDocument + * @var DOMDocument */ private $dom; /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; - public function __construct(\DOMElement $context) + public function __construct(DOMElement $context) { $this->setContextNode($context); } - public function getDom(): \DOMDocument + public function dom(): DOMDocument { return $this->dom; } - public function getTotals(): Totals + public function totals(): Totals { - $totalsContainer = $this->getContextNode()->firstChild; + $totalsContainer = $this->contextNode()->firstChild; if (!$totalsContainer) { - $totalsContainer = $this->getContextNode()->appendChild( + $totalsContainer = $this->contextNode()->appendChild( $this->dom->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'totals' @@ -49,38 +55,38 @@ abstract class Node public function addDirectory(string $name): Directory { - $dirNode = $this->getDom()->createElementNS( + $dirNode = $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'directory' ); $dirNode->setAttribute('name', $name); - $this->getContextNode()->appendChild($dirNode); + $this->contextNode()->appendChild($dirNode); return new Directory($dirNode); } public function addFile(string $name, string $href): File { - $fileNode = $this->getDom()->createElementNS( + $fileNode = $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'file' ); $fileNode->setAttribute('name', $name); $fileNode->setAttribute('href', $href); - $this->getContextNode()->appendChild($fileNode); + $this->contextNode()->appendChild($fileNode); return new File($fileNode); } - protected function setContextNode(\DOMElement $context): void + protected function setContextNode(DOMElement $context): void { $this->dom = $context->ownerDocument; $this->contextNode = $context; } - protected function getContextNode(): \DOMElement + protected function contextNode(): DOMElement { return $this->contextNode; } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php index 5f32852f8..b566bce06 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php @@ -1,6 +1,6 @@ * @@ -9,6 +9,11 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Project extends Node { public function __construct(string $directory) @@ -17,21 +22,21 @@ final class Project extends Node $this->setProjectSourceDirectory($directory); } - public function getProjectSourceDirectory(): string + public function projectSourceDirectory(): string { - return $this->getContextNode()->getAttribute('source'); + return $this->contextNode()->getAttribute('source'); } - public function getBuildInformation(): BuildInformation + public function buildInformation(): BuildInformation { - $buildNode = $this->getDom()->getElementsByTagNameNS( + $buildNode = $this->dom()->getElementsByTagNameNS( 'https://schema.phpunit.de/coverage/1.0', 'build' )->item(0); if (!$buildNode) { - $buildNode = $this->getDom()->documentElement->appendChild( - $this->getDom()->createElementNS( + $buildNode = $this->dom()->documentElement->appendChild( + $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'build' ) @@ -41,16 +46,16 @@ final class Project extends Node return new BuildInformation($buildNode); } - public function getTests(): Tests + public function tests(): Tests { - $testsNode = $this->getContextNode()->getElementsByTagNameNS( + $testsNode = $this->contextNode()->getElementsByTagNameNS( 'https://schema.phpunit.de/coverage/1.0', 'tests' )->item(0); if (!$testsNode) { - $testsNode = $this->getContextNode()->appendChild( - $this->getDom()->createElementNS( + $testsNode = $this->contextNode()->appendChild( + $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'tests' ) @@ -60,14 +65,14 @@ final class Project extends Node return new Tests($testsNode); } - public function asDom(): \DOMDocument + public function asDom(): DOMDocument { - return $this->getDom(); + return $this->dom(); } private function init(): void { - $dom = new \DOMDocument; + $dom = new DOMDocument; $dom->loadXML(''); $this->setContextNode( @@ -80,6 +85,6 @@ final class Project extends Node private function setProjectSourceDirectory(string $name): void { - $this->getContextNode()->setAttribute('source', $name); + $this->contextNode()->setAttribute('source', $name); } } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php index 6ec94c100..7f2badaeb 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php @@ -1,6 +1,6 @@ * @@ -9,11 +9,18 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use function basename; +use function dirname; +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Report extends File { public function __construct(string $name) { - $dom = new \DOMDocument(); + $dom = new DOMDocument; $dom->loadXML(''); $contextNode = $dom->getElementsByTagNameNS( @@ -26,15 +33,15 @@ final class Report extends File $this->setName($name); } - public function asDom(): \DOMDocument + public function asDom(): DOMDocument { - return $this->getDomDocument(); + return $this->dom(); } - public function getFunctionObject($name): Method + public function functionObject($name): Method { - $node = $this->getContextNode()->appendChild( - $this->getDomDocument()->createElementNS( + $node = $this->contextNode()->appendChild( + $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'function' ) @@ -43,26 +50,26 @@ final class Report extends File return new Method($node, $name); } - public function getClassObject($name): Unit + public function classObject($name): Unit { - return $this->getUnitObject('class', $name); + return $this->unitObject('class', $name); } - public function getTraitObject($name): Unit + public function traitObject($name): Unit { - return $this->getUnitObject('trait', $name); + return $this->unitObject('trait', $name); } - public function getSource(): Source + public function source(): Source { - $source = $this->getContextNode()->getElementsByTagNameNS( + $source = $this->contextNode()->getElementsByTagNameNS( 'https://schema.phpunit.de/coverage/1.0', 'source' )->item(0); if (!$source) { - $source = $this->getContextNode()->appendChild( - $this->getDomDocument()->createElementNS( + $source = $this->contextNode()->appendChild( + $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', 'source' ) @@ -72,16 +79,16 @@ final class Report extends File return new Source($source); } - private function setName($name): void + private function setName(string $name): void { - $this->getContextNode()->setAttribute('name', \basename($name)); - $this->getContextNode()->setAttribute('path', \dirname($name)); + $this->contextNode()->setAttribute('name', basename($name)); + $this->contextNode()->setAttribute('path', dirname($name)); } - private function getUnitObject($tagName, $name): Unit + private function unitObject(string $tagName, $name): Unit { - $node = $this->getContextNode()->appendChild( - $this->getDomDocument()->createElementNS( + $node = $this->contextNode()->appendChild( + $this->dom()->createElementNS( 'https://schema.phpunit.de/coverage/1.0', $tagName ) diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php index 67bf9cb9b..2b67ce1da 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php @@ -1,6 +1,6 @@ * @@ -9,16 +9,20 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMElement; use TheSeer\Tokenizer\NamespaceUri; use TheSeer\Tokenizer\Tokenizer; use TheSeer\Tokenizer\XMLSerializer; +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Source { - /** @var \DOMElement */ + /** @var DOMElement */ private $context; - public function __construct(\DOMElement $context) + public function __construct(DOMElement $context) { $this->context = $context; } @@ -27,7 +31,7 @@ final class Source { $context = $this->context; - $tokens = (new Tokenizer())->parse($source); + $tokens = (new Tokenizer)->parse($source); $srcDom = (new XMLSerializer(new NamespaceUri($context->namespaceURI)))->toDom($tokens); $context->parentNode->replaceChild( diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php index c1bcd25d9..c2e56268c 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php @@ -1,6 +1,6 @@ * @@ -9,6 +9,11 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Tests { private $contextNode; @@ -24,7 +29,7 @@ final class Tests 6 => 'WARNING', // PHPUnit_Runner_BaseTestRunner::STATUS_WARNING ]; - public function __construct(\DOMElement $context) + public function __construct(DOMElement $context) { $this->contextNode = $context; } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php index 019f348cb..370813188 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php @@ -1,6 +1,6 @@ * @@ -9,41 +9,47 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; -use SebastianBergmann\CodeCoverage\Util; +use function sprintf; +use DOMElement; +use DOMNode; +use SebastianBergmann\CodeCoverage\Util\Percentage; +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Totals { /** - * @var \DOMNode + * @var DOMNode */ private $container; /** - * @var \DOMElement + * @var DOMElement */ private $linesNode; /** - * @var \DOMElement + * @var DOMElement */ private $methodsNode; /** - * @var \DOMElement + * @var DOMElement */ private $functionsNode; /** - * @var \DOMElement + * @var DOMElement */ private $classesNode; /** - * @var \DOMElement + * @var DOMElement */ private $traitsNode; - public function __construct(\DOMElement $container) + public function __construct(DOMElement $container) { $this->container = $container; $dom = $container->ownerDocument; @@ -80,7 +86,7 @@ final class Totals $container->appendChild($this->traitsNode); } - public function getContainer(): \DOMNode + public function container(): DOMNode { return $this->container; } @@ -94,7 +100,7 @@ final class Totals $this->linesNode->setAttribute('executed', (string) $executed); $this->linesNode->setAttribute( 'percent', - $executable === 0 ? '0' : \sprintf('%01.2F', Util::percent($executed, $executable)) + $executable === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($executed, $executable)->asFloat()) ); } @@ -104,7 +110,7 @@ final class Totals $this->classesNode->setAttribute('tested', (string) $tested); $this->classesNode->setAttribute( 'percent', - $count === 0 ? '0' : \sprintf('%01.2F', Util::percent($tested, $count)) + $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()) ); } @@ -114,7 +120,7 @@ final class Totals $this->traitsNode->setAttribute('tested', (string) $tested); $this->traitsNode->setAttribute( 'percent', - $count === 0 ? '0' : \sprintf('%01.2F', Util::percent($tested, $count)) + $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()) ); } @@ -124,7 +130,7 @@ final class Totals $this->methodsNode->setAttribute('tested', (string) $tested); $this->methodsNode->setAttribute( 'percent', - $count === 0 ? '0' : \sprintf('%01.2F', Util::percent($tested, $count)) + $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()) ); } @@ -134,7 +140,7 @@ final class Totals $this->functionsNode->setAttribute('tested', (string) $tested); $this->functionsNode->setAttribute( 'percent', - $count === 0 ? '0' : \sprintf('%01.2F', Util::percent($tested, $count)) + $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat()) ); } } diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php index c235dfb6c..d84dc481f 100644 --- a/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php +++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php @@ -1,6 +1,6 @@ * @@ -9,14 +9,19 @@ */ namespace SebastianBergmann\CodeCoverage\Report\Xml; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ final class Unit { /** - * @var \DOMElement + * @var DOMElement */ private $contextNode; - public function __construct(\DOMElement $context, string $name) + public function __construct(DOMElement $context, string $name) { $this->contextNode = $context; @@ -35,28 +40,6 @@ final class Unit $this->contextNode->setAttribute('crap', (string) $crap); } - public function setPackage(string $full, string $package, string $sub, string $category): void - { - $node = $this->contextNode->getElementsByTagNameNS( - 'https://schema.phpunit.de/coverage/1.0', - 'package' - )->item(0); - - if (!$node) { - $node = $this->contextNode->appendChild( - $this->contextNode->ownerDocument->createElementNS( - 'https://schema.phpunit.de/coverage/1.0', - 'package' - ) - ); - } - - $node->setAttribute('full', $full); - $node->setAttribute('name', $package); - $node->setAttribute('sub', $sub); - $node->setAttribute('category', $category); - } - public function setNamespace(string $namespace): void { $node = $this->contextNode->getElementsByTagNameNS( diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php new file mode 100644 index 000000000..00a6d8df1 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use SebastianBergmann\CodeCoverage\Filter; + +final class CacheWarmer +{ + public function warmCache(string $cacheDirectory, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode, Filter $filter): void + { + $analyser = new CachingFileAnalyser( + $cacheDirectory, + new ParsingFileAnalyser( + $useAnnotationsForIgnoringCode, + $ignoreDeprecatedCode + ) + ); + + foreach ($filter->files() as $file) { + $analyser->process($file); + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php new file mode 100644 index 000000000..f53da078a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php @@ -0,0 +1,184 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use function file_get_contents; +use function file_put_contents; +use function implode; +use function is_file; +use function md5; +use function serialize; +use function unserialize; +use SebastianBergmann\CodeCoverage\Util\Filesystem; +use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class CachingFileAnalyser implements FileAnalyser +{ + /** + * @var ?string + */ + private static $cacheVersion; + + /** + * @var FileAnalyser + */ + private $analyser; + + /** + * @var array + */ + private $cache = []; + + /** + * @var string + */ + private $directory; + + public function __construct(string $directory, FileAnalyser $analyser) + { + Filesystem::createDirectory($directory); + + $this->analyser = $analyser; + $this->directory = $directory; + } + + public function classesIn(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['classesIn']; + } + + public function traitsIn(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['traitsIn']; + } + + public function functionsIn(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['functionsIn']; + } + + /** + * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int} + */ + public function linesOfCodeFor(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['linesOfCodeFor']; + } + + public function executableLinesIn(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['executableLinesIn']; + } + + public function ignoredLinesFor(string $filename): array + { + if (!isset($this->cache[$filename])) { + $this->process($filename); + } + + return $this->cache[$filename]['ignoredLinesFor']; + } + + public function process(string $filename): void + { + $cache = $this->read($filename); + + if ($cache !== false) { + $this->cache[$filename] = $cache; + + return; + } + + $this->cache[$filename] = [ + 'classesIn' => $this->analyser->classesIn($filename), + 'traitsIn' => $this->analyser->traitsIn($filename), + 'functionsIn' => $this->analyser->functionsIn($filename), + 'linesOfCodeFor' => $this->analyser->linesOfCodeFor($filename), + 'ignoredLinesFor' => $this->analyser->ignoredLinesFor($filename), + 'executableLinesIn' => $this->analyser->executableLinesIn($filename), + ]; + + $this->write($filename, $this->cache[$filename]); + } + + /** + * @return mixed + */ + private function read(string $filename) + { + $cacheFile = $this->cacheFile($filename); + + if (!is_file($cacheFile)) { + return false; + } + + return unserialize( + file_get_contents($cacheFile), + ['allowed_classes' => false] + ); + } + + /** + * @param mixed $data + */ + private function write(string $filename, $data): void + { + file_put_contents( + $this->cacheFile($filename), + serialize($data) + ); + } + + private function cacheFile(string $filename): string + { + return $this->directory . DIRECTORY_SEPARATOR . md5($filename . "\0" . file_get_contents($filename) . "\0" . self::cacheVersion()); + } + + private static function cacheVersion(): string + { + if (self::$cacheVersion !== null) { + return self::$cacheVersion; + } + + $buffer = []; + + foreach ((new FileIteratorFacade)->getFilesAsArray(__DIR__, '.php') as $file) { + $buffer[] = $file; + $buffer[] = file_get_contents($file); + } + + self::$cacheVersion = md5(implode("\0", $buffer)); + + return self::$cacheVersion; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php new file mode 100644 index 000000000..8a2003fa8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php @@ -0,0 +1,326 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use function assert; +use function implode; +use function rtrim; +use function trim; +use PhpParser\Node; +use PhpParser\Node\ComplexType; +use PhpParser\Node\Identifier; +use PhpParser\Node\IntersectionType; +use PhpParser\Node\Name; +use PhpParser\Node\NullableType; +use PhpParser\Node\Stmt\Class_; +use PhpParser\Node\Stmt\ClassMethod; +use PhpParser\Node\Stmt\Enum_; +use PhpParser\Node\Stmt\Function_; +use PhpParser\Node\Stmt\Interface_; +use PhpParser\Node\Stmt\Trait_; +use PhpParser\Node\UnionType; +use PhpParser\NodeTraverser; +use PhpParser\NodeVisitorAbstract; +use SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class CodeUnitFindingVisitor extends NodeVisitorAbstract +{ + /** + * @psalm-var array}> + */ + private $classes = []; + + /** + * @psalm-var array}> + */ + private $traits = []; + + /** + * @psalm-var array + */ + private $functions = []; + + public function enterNode(Node $node): void + { + if ($node instanceof Class_) { + if ($node->isAnonymous()) { + return; + } + + $this->processClass($node); + } + + if ($node instanceof Trait_) { + $this->processTrait($node); + } + + if (!$node instanceof ClassMethod && !$node instanceof Function_) { + return; + } + + if ($node instanceof ClassMethod) { + $parentNode = $node->getAttribute('parent'); + + if ($parentNode instanceof Class_ && $parentNode->isAnonymous()) { + return; + } + + $this->processMethod($node); + + return; + } + + $this->processFunction($node); + } + + /** + * @psalm-return array}> + */ + public function classes(): array + { + return $this->classes; + } + + /** + * @psalm-return array}> + */ + public function traits(): array + { + return $this->traits; + } + + /** + * @psalm-return array + */ + public function functions(): array + { + return $this->functions; + } + + /** + * @psalm-param ClassMethod|Function_ $node + */ + private function cyclomaticComplexity(Node $node): int + { + assert($node instanceof ClassMethod || $node instanceof Function_); + + $nodes = $node->getStmts(); + + if ($nodes === null) { + return 0; + } + + $traverser = new NodeTraverser; + + $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor; + + $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor); + + /* @noinspection UnusedFunctionResultInspection */ + $traverser->traverse($nodes); + + return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity(); + } + + /** + * @psalm-param ClassMethod|Function_ $node + */ + private function signature(Node $node): string + { + assert($node instanceof ClassMethod || $node instanceof Function_); + + $signature = ($node->returnsByRef() ? '&' : '') . $node->name->toString() . '('; + $parameters = []; + + foreach ($node->getParams() as $parameter) { + assert(isset($parameter->var->name)); + + $parameterAsString = ''; + + if ($parameter->type !== null) { + $parameterAsString = $this->type($parameter->type) . ' '; + } + + $parameterAsString .= '$' . $parameter->var->name; + + /* @todo Handle default values */ + + $parameters[] = $parameterAsString; + } + + $signature .= implode(', ', $parameters) . ')'; + + $returnType = $node->getReturnType(); + + if ($returnType !== null) { + $signature .= ': ' . $this->type($returnType); + } + + return $signature; + } + + /** + * @psalm-param Identifier|Name|ComplexType $type + */ + private function type(Node $type): string + { + assert($type instanceof Identifier || $type instanceof Name || $type instanceof ComplexType); + + if ($type instanceof NullableType) { + return '?' . $type->type; + } + + if ($type instanceof UnionType || $type instanceof IntersectionType) { + return $this->unionOrIntersectionAsString($type); + } + + return $type->toString(); + } + + private function visibility(ClassMethod $node): string + { + if ($node->isPrivate()) { + return 'private'; + } + + if ($node->isProtected()) { + return 'protected'; + } + + return 'public'; + } + + private function processClass(Class_ $node): void + { + $name = $node->name->toString(); + $namespacedName = $node->namespacedName->toString(); + + $this->classes[$namespacedName] = [ + 'name' => $name, + 'namespacedName' => $namespacedName, + 'namespace' => $this->namespace($namespacedName, $name), + 'startLine' => $node->getStartLine(), + 'endLine' => $node->getEndLine(), + 'methods' => [], + ]; + } + + private function processTrait(Trait_ $node): void + { + $name = $node->name->toString(); + $namespacedName = $node->namespacedName->toString(); + + $this->traits[$namespacedName] = [ + 'name' => $name, + 'namespacedName' => $namespacedName, + 'namespace' => $this->namespace($namespacedName, $name), + 'startLine' => $node->getStartLine(), + 'endLine' => $node->getEndLine(), + 'methods' => [], + ]; + } + + private function processMethod(ClassMethod $node): void + { + $parentNode = $node->getAttribute('parent'); + + if ($parentNode instanceof Interface_) { + return; + } + + assert($parentNode instanceof Class_ || $parentNode instanceof Trait_ || $parentNode instanceof Enum_); + assert(isset($parentNode->name)); + assert(isset($parentNode->namespacedName)); + assert($parentNode->namespacedName instanceof Name); + + $parentName = $parentNode->name->toString(); + $parentNamespacedName = $parentNode->namespacedName->toString(); + + if ($parentNode instanceof Class_) { + $storage = &$this->classes; + } else { + $storage = &$this->traits; + } + + if (!isset($storage[$parentNamespacedName])) { + $storage[$parentNamespacedName] = [ + 'name' => $parentName, + 'namespacedName' => $parentNamespacedName, + 'namespace' => $this->namespace($parentNamespacedName, $parentName), + 'startLine' => $parentNode->getStartLine(), + 'endLine' => $parentNode->getEndLine(), + 'methods' => [], + ]; + } + + $storage[$parentNamespacedName]['methods'][$node->name->toString()] = [ + 'methodName' => $node->name->toString(), + 'signature' => $this->signature($node), + 'visibility' => $this->visibility($node), + 'startLine' => $node->getStartLine(), + 'endLine' => $node->getEndLine(), + 'ccn' => $this->cyclomaticComplexity($node), + ]; + } + + private function processFunction(Function_ $node): void + { + assert(isset($node->name)); + assert(isset($node->namespacedName)); + assert($node->namespacedName instanceof Name); + + $name = $node->name->toString(); + $namespacedName = $node->namespacedName->toString(); + + $this->functions[$namespacedName] = [ + 'name' => $name, + 'namespacedName' => $namespacedName, + 'namespace' => $this->namespace($namespacedName, $name), + 'signature' => $this->signature($node), + 'startLine' => $node->getStartLine(), + 'endLine' => $node->getEndLine(), + 'ccn' => $this->cyclomaticComplexity($node), + ]; + } + + private function namespace(string $namespacedName, string $name): string + { + return trim(rtrim($namespacedName, $name), '\\'); + } + + /** + * @psalm-param UnionType|IntersectionType $type + */ + private function unionOrIntersectionAsString(ComplexType $type): string + { + if ($type instanceof UnionType) { + $separator = '|'; + } else { + $separator = '&'; + } + + $types = []; + + foreach ($type->types as $_type) { + if ($_type instanceof Name) { + $types[] = $_type->toCodeString(); + } else { + assert($_type instanceof Identifier); + + $types[] = $_type->toString(); + } + } + + return implode($separator, $types); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php new file mode 100644 index 000000000..9f9a27b0e --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php @@ -0,0 +1,365 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use function array_diff_key; +use function assert; +use function count; +use function current; +use function end; +use function explode; +use function max; +use function preg_match; +use function preg_quote; +use function range; +use function reset; +use function sprintf; +use PhpParser\Node; +use PhpParser\NodeVisitorAbstract; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract +{ + /** + * @var int + */ + private $nextBranch = 0; + + /** + * @var string + */ + private $source; + + /** + * @var array + */ + private $executableLinesGroupedByBranch = []; + + /** + * @var array + */ + private $unsets = []; + + /** + * @var array + */ + private $commentsToCheckForUnset = []; + + public function __construct(string $source) + { + $this->source = $source; + } + + public function enterNode(Node $node): void + { + foreach ($node->getComments() as $comment) { + $commentLine = $comment->getStartLine(); + + if (!isset($this->executableLinesGroupedByBranch[$commentLine])) { + continue; + } + + foreach (explode("\n", $comment->getText()) as $text) { + $this->commentsToCheckForUnset[$commentLine] = $text; + $commentLine++; + } + } + + if ($node instanceof Node\Scalar\String_ || + $node instanceof Node\Scalar\EncapsedStringPart) { + $startLine = $node->getStartLine() + 1; + $endLine = $node->getEndLine() - 1; + + if ($startLine <= $endLine) { + foreach (range($startLine, $endLine) as $line) { + unset($this->executableLinesGroupedByBranch[$line]); + } + } + + return; + } + + if ($node instanceof Node\Stmt\Declare_ || + $node instanceof Node\Stmt\DeclareDeclare || + $node instanceof Node\Stmt\Else_ || + $node instanceof Node\Stmt\EnumCase || + $node instanceof Node\Stmt\Finally_ || + $node instanceof Node\Stmt\Interface_ || + $node instanceof Node\Stmt\Label || + $node instanceof Node\Stmt\Namespace_ || + $node instanceof Node\Stmt\Nop || + $node instanceof Node\Stmt\Switch_ || + $node instanceof Node\Stmt\TryCatch || + $node instanceof Node\Stmt\Use_ || + $node instanceof Node\Stmt\UseUse || + $node instanceof Node\Expr\Match_ || + $node instanceof Node\Expr\Variable || + $node instanceof Node\ComplexType || + $node instanceof Node\Const_ || + $node instanceof Node\Identifier || + $node instanceof Node\Name || + $node instanceof Node\Param || + $node instanceof Node\Scalar) { + return; + } + + if ($node instanceof Node\Stmt\Throw_) { + $this->setLineBranch($node->expr->getEndLine(), $node->expr->getEndLine(), ++$this->nextBranch); + + return; + } + + if ($node instanceof Node\Stmt\Enum_ || + $node instanceof Node\Stmt\Function_ || + $node instanceof Node\Stmt\Class_ || + $node instanceof Node\Stmt\ClassMethod || + $node instanceof Node\Expr\Closure || + $node instanceof Node\Stmt\Trait_) { + $isConcreteClassLike = $node instanceof Node\Stmt\Enum_ || $node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\Trait_; + + if (null !== $node->stmts) { + foreach ($node->stmts as $stmt) { + if ($stmt instanceof Node\Stmt\Nop) { + continue; + } + + foreach (range($stmt->getStartLine(), $stmt->getEndLine()) as $line) { + unset($this->executableLinesGroupedByBranch[$line]); + + if ( + $isConcreteClassLike && + !$stmt instanceof Node\Stmt\ClassMethod + ) { + $this->unsets[$line] = true; + } + } + } + } + + if ($isConcreteClassLike) { + return; + } + + $hasEmptyBody = [] === $node->stmts || + null === $node->stmts || + ( + 1 === count($node->stmts) && + $node->stmts[0] instanceof Node\Stmt\Nop + ); + + if ($hasEmptyBody) { + if ($node->getEndLine() === $node->getStartLine()) { + return; + } + + $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); + + return; + } + + return; + } + + if ($node instanceof Node\Expr\ArrowFunction) { + $startLine = max( + $node->getStartLine() + 1, + $node->expr->getStartLine() + ); + + $endLine = $node->expr->getEndLine(); + + if ($endLine < $startLine) { + return; + } + + $this->setLineBranch($startLine, $endLine, ++$this->nextBranch); + + return; + } + + if ($node instanceof Node\Expr\Ternary) { + if (null !== $node->if && + $node->getStartLine() !== $node->if->getEndLine()) { + $this->setLineBranch($node->if->getStartLine(), $node->if->getEndLine(), ++$this->nextBranch); + } + + if ($node->getStartLine() !== $node->else->getEndLine()) { + $this->setLineBranch($node->else->getStartLine(), $node->else->getEndLine(), ++$this->nextBranch); + } + + return; + } + + if ($node instanceof Node\Expr\BinaryOp\Coalesce) { + if ($node->getStartLine() !== $node->getEndLine()) { + $this->setLineBranch($node->getEndLine(), $node->getEndLine(), ++$this->nextBranch); + } + + return; + } + + if ($node instanceof Node\Stmt\If_ || + $node instanceof Node\Stmt\ElseIf_ || + $node instanceof Node\Stmt\Case_) { + if (null === $node->cond) { + return; + } + + $this->setLineBranch( + $node->cond->getStartLine(), + $node->cond->getStartLine(), + ++$this->nextBranch + ); + + return; + } + + if ($node instanceof Node\Stmt\For_) { + $startLine = null; + $endLine = null; + + if ([] !== $node->init) { + $startLine = $node->init[0]->getStartLine(); + + end($node->init); + + $endLine = current($node->init)->getEndLine(); + + reset($node->init); + } + + if ([] !== $node->cond) { + if (null === $startLine) { + $startLine = $node->cond[0]->getStartLine(); + } + + end($node->cond); + + $endLine = current($node->cond)->getEndLine(); + + reset($node->cond); + } + + if ([] !== $node->loop) { + if (null === $startLine) { + $startLine = $node->loop[0]->getStartLine(); + } + + end($node->loop); + + $endLine = current($node->loop)->getEndLine(); + + reset($node->loop); + } + + if (null === $startLine || null === $endLine) { + return; + } + + $this->setLineBranch( + $startLine, + $endLine, + ++$this->nextBranch + ); + + return; + } + + if ($node instanceof Node\Stmt\Foreach_) { + $this->setLineBranch( + $node->expr->getStartLine(), + $node->valueVar->getEndLine(), + ++$this->nextBranch + ); + + return; + } + + if ($node instanceof Node\Stmt\While_ || + $node instanceof Node\Stmt\Do_) { + $this->setLineBranch( + $node->cond->getStartLine(), + $node->cond->getEndLine(), + ++$this->nextBranch + ); + + return; + } + + if ($node instanceof Node\Stmt\Catch_) { + assert([] !== $node->types); + $startLine = $node->types[0]->getStartLine(); + end($node->types); + $endLine = current($node->types)->getEndLine(); + + $this->setLineBranch( + $startLine, + $endLine, + ++$this->nextBranch + ); + + return; + } + + if ($node instanceof Node\Expr\CallLike) { + if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { + $branch = $this->executableLinesGroupedByBranch[$node->getStartLine()]; + } else { + $branch = ++$this->nextBranch; + } + + $this->setLineBranch($node->getStartLine(), $node->getEndLine(), $branch); + + return; + } + + if (isset($this->executableLinesGroupedByBranch[$node->getStartLine()])) { + return; + } + + $this->setLineBranch($node->getStartLine(), $node->getEndLine(), ++$this->nextBranch); + } + + public function afterTraverse(array $nodes): void + { + $lines = explode("\n", $this->source); + + foreach ($lines as $lineNumber => $line) { + $lineNumber++; + + if (1 === preg_match('/^\s*$/', $line) || + ( + isset($this->commentsToCheckForUnset[$lineNumber]) && + 1 === preg_match(sprintf('/^\s*%s\s*$/', preg_quote($this->commentsToCheckForUnset[$lineNumber], '/')), $line) + )) { + unset($this->executableLinesGroupedByBranch[$lineNumber]); + } + } + + $this->executableLinesGroupedByBranch = array_diff_key( + $this->executableLinesGroupedByBranch, + $this->unsets + ); + } + + public function executableLinesGroupedByBranch(): array + { + return $this->executableLinesGroupedByBranch; + } + + private function setLineBranch(int $start, int $end, int $branch): void + { + foreach (range($start, $end) as $line) { + $this->executableLinesGroupedByBranch[$line] = $branch; + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php new file mode 100644 index 000000000..3dbcf68f6 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +interface FileAnalyser +{ + public function classesIn(string $filename): array; + + public function traitsIn(string $filename): array; + + public function functionsIn(string $filename): array; + + /** + * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int} + */ + public function linesOfCodeFor(string $filename): array; + + public function executableLinesIn(string $filename): array; + + public function ignoredLinesFor(string $filename): array; +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php new file mode 100644 index 000000000..3c0b2373c --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php @@ -0,0 +1,119 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use function array_merge; +use function assert; +use function range; +use function strpos; +use PhpParser\Node; +use PhpParser\Node\Attribute; +use PhpParser\Node\Stmt\Class_; +use PhpParser\Node\Stmt\ClassMethod; +use PhpParser\Node\Stmt\Function_; +use PhpParser\Node\Stmt\Interface_; +use PhpParser\Node\Stmt\Trait_; +use PhpParser\NodeVisitorAbstract; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract +{ + /** + * @psalm-var list + */ + private $ignoredLines = []; + + /** + * @var bool + */ + private $useAnnotationsForIgnoringCode; + + /** + * @var bool + */ + private $ignoreDeprecated; + + public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecated) + { + $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; + $this->ignoreDeprecated = $ignoreDeprecated; + } + + public function enterNode(Node $node): void + { + if (!$node instanceof Class_ && + !$node instanceof Trait_ && + !$node instanceof Interface_ && + !$node instanceof ClassMethod && + !$node instanceof Function_ && + !$node instanceof Attribute) { + return; + } + + if ($node instanceof Class_ && $node->isAnonymous()) { + return; + } + + if ($node instanceof Class_ || + $node instanceof Trait_ || + $node instanceof Interface_ || + $node instanceof Attribute) { + $this->ignoredLines[] = $node->getStartLine(); + + assert($node->name !== null); + + // Workaround for https://github.com/nikic/PHP-Parser/issues/886 + $this->ignoredLines[] = $node->name->getStartLine(); + } + + if (!$this->useAnnotationsForIgnoringCode) { + return; + } + + if ($node instanceof Interface_) { + return; + } + + $this->processDocComment($node); + } + + /** + * @psalm-return list + */ + public function ignoredLines(): array + { + return $this->ignoredLines; + } + + private function processDocComment(Node $node): void + { + $docComment = $node->getDocComment(); + + if ($docComment === null) { + return; + } + + if (strpos($docComment->getText(), '@codeCoverageIgnore') !== false) { + $this->ignoredLines = array_merge( + $this->ignoredLines, + range($node->getStartLine(), $node->getEndLine()) + ); + } + + if ($this->ignoreDeprecated && strpos($docComment->getText(), '@deprecated') !== false) { + $this->ignoredLines = array_merge( + $this->ignoredLines, + range($node->getStartLine(), $node->getEndLine()) + ); + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php new file mode 100644 index 000000000..e68638219 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php @@ -0,0 +1,253 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\StaticAnalysis; + +use function array_merge; +use function array_unique; +use function assert; +use function file_get_contents; +use function is_array; +use function max; +use function range; +use function sort; +use function sprintf; +use function substr_count; +use function token_get_all; +use function trim; +use PhpParser\Error; +use PhpParser\Lexer; +use PhpParser\NodeTraverser; +use PhpParser\NodeVisitor\NameResolver; +use PhpParser\NodeVisitor\ParentConnectingVisitor; +use PhpParser\ParserFactory; +use SebastianBergmann\CodeCoverage\ParserException; +use SebastianBergmann\LinesOfCode\LineCountingVisitor; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class ParsingFileAnalyser implements FileAnalyser +{ + /** + * @var array + */ + private $classes = []; + + /** + * @var array + */ + private $traits = []; + + /** + * @var array + */ + private $functions = []; + + /** + * @var array + */ + private $linesOfCode = []; + + /** + * @var array + */ + private $ignoredLines = []; + + /** + * @var array + */ + private $executableLines = []; + + /** + * @var bool + */ + private $useAnnotationsForIgnoringCode; + + /** + * @var bool + */ + private $ignoreDeprecatedCode; + + public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) + { + $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; + $this->ignoreDeprecatedCode = $ignoreDeprecatedCode; + } + + public function classesIn(string $filename): array + { + $this->analyse($filename); + + return $this->classes[$filename]; + } + + public function traitsIn(string $filename): array + { + $this->analyse($filename); + + return $this->traits[$filename]; + } + + public function functionsIn(string $filename): array + { + $this->analyse($filename); + + return $this->functions[$filename]; + } + + /** + * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int} + */ + public function linesOfCodeFor(string $filename): array + { + $this->analyse($filename); + + return $this->linesOfCode[$filename]; + } + + public function executableLinesIn(string $filename): array + { + $this->analyse($filename); + + return $this->executableLines[$filename]; + } + + public function ignoredLinesFor(string $filename): array + { + $this->analyse($filename); + + return $this->ignoredLines[$filename]; + } + + /** + * @throws ParserException + */ + private function analyse(string $filename): void + { + if (isset($this->classes[$filename])) { + return; + } + + $source = file_get_contents($filename); + $linesOfCode = max(substr_count($source, "\n") + 1, substr_count($source, "\r") + 1); + + if ($linesOfCode === 0 && !empty($source)) { + $linesOfCode = 1; + } + + $parser = (new ParserFactory)->create( + ParserFactory::PREFER_PHP7, + new Lexer + ); + + try { + $nodes = $parser->parse($source); + + assert($nodes !== null); + + $traverser = new NodeTraverser; + $codeUnitFindingVisitor = new CodeUnitFindingVisitor; + $lineCountingVisitor = new LineCountingVisitor($linesOfCode); + $ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); + $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source); + + $traverser->addVisitor(new NameResolver); + $traverser->addVisitor(new ParentConnectingVisitor); + $traverser->addVisitor($codeUnitFindingVisitor); + $traverser->addVisitor($lineCountingVisitor); + $traverser->addVisitor($ignoredLinesFindingVisitor); + $traverser->addVisitor($executableLinesFindingVisitor); + + /* @noinspection UnusedFunctionResultInspection */ + $traverser->traverse($nodes); + // @codeCoverageIgnoreStart + } catch (Error $error) { + throw new ParserException( + sprintf( + 'Cannot parse %s: %s', + $filename, + $error->getMessage() + ), + $error->getCode(), + $error + ); + } + // @codeCoverageIgnoreEnd + + $this->classes[$filename] = $codeUnitFindingVisitor->classes(); + $this->traits[$filename] = $codeUnitFindingVisitor->traits(); + $this->functions[$filename] = $codeUnitFindingVisitor->functions(); + $this->executableLines[$filename] = $executableLinesFindingVisitor->executableLinesGroupedByBranch(); + $this->ignoredLines[$filename] = []; + + $this->findLinesIgnoredByLineBasedAnnotations($filename, $source, $this->useAnnotationsForIgnoringCode); + + $this->ignoredLines[$filename] = array_unique( + array_merge( + $this->ignoredLines[$filename], + $ignoredLinesFindingVisitor->ignoredLines() + ) + ); + + sort($this->ignoredLines[$filename]); + + $result = $lineCountingVisitor->result(); + + $this->linesOfCode[$filename] = [ + 'linesOfCode' => $result->linesOfCode(), + 'commentLinesOfCode' => $result->commentLinesOfCode(), + 'nonCommentLinesOfCode' => $result->nonCommentLinesOfCode(), + ]; + } + + private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode): void + { + if (!$useAnnotationsForIgnoringCode) { + return; + } + + $start = false; + + foreach (token_get_all($source) as $token) { + if (!is_array($token) || + !(T_COMMENT === $token[0] || T_DOC_COMMENT === $token[0])) { + continue; + } + + $comment = trim($token[1]); + + if ($comment === '// @codeCoverageIgnore' || + $comment === '//@codeCoverageIgnore') { + $this->ignoredLines[$filename][] = $token[2]; + + continue; + } + + if ($comment === '// @codeCoverageIgnoreStart' || + $comment === '//@codeCoverageIgnoreStart') { + $start = $token[2]; + + continue; + } + + if ($comment === '// @codeCoverageIgnoreEnd' || + $comment === '//@codeCoverageIgnoreEnd') { + if (false === $start) { + $start = $token[2]; + } + + $this->ignoredLines[$filename] = array_merge( + $this->ignoredLines[$filename], + range($start, $token[2]) + ); + } + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Util.php b/vendor/phpunit/php-code-coverage/src/Util.php deleted file mode 100644 index ee8894c14..000000000 --- a/vendor/phpunit/php-code-coverage/src/Util.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage; - -/** - * Utility methods. - */ -final class Util -{ - /** - * @return float|int|string - */ - public static function percent(float $a, float $b, bool $asString = false, bool $fixedWidth = false) - { - if ($asString && $b == 0) { - return ''; - } - - $percent = 100; - - if ($b > 0) { - $percent = ($a / $b) * 100; - } - - if ($asString) { - $format = $fixedWidth ? '%6.2F%%' : '%01.2F%%'; - - return \sprintf($format, $percent); - } - - return $percent; - } -} diff --git a/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php b/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php new file mode 100644 index 000000000..ff0e16ae9 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Util/Filesystem.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\Util; + +use function is_dir; +use function mkdir; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class Filesystem +{ + /** + * @throws DirectoryCouldNotBeCreatedException + */ + public static function createDirectory(string $directory): void + { + $success = !(!is_dir($directory) && !@mkdir($directory, 0777, true) && !is_dir($directory)); + + if (!$success) { + throw new DirectoryCouldNotBeCreatedException( + sprintf( + 'Directory "%s" could not be created', + $directory + ) + ); + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Util/Percentage.php b/vendor/phpunit/php-code-coverage/src/Util/Percentage.php new file mode 100644 index 000000000..0f7a3fec1 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Util/Percentage.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeCoverage\Util; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage + */ +final class Percentage +{ + /** + * @var float + */ + private $fraction; + + /** + * @var float + */ + private $total; + + public static function fromFractionAndTotal(float $fraction, float $total): self + { + return new self($fraction, $total); + } + + private function __construct(float $fraction, float $total) + { + $this->fraction = $fraction; + $this->total = $total; + } + + public function asFloat(): float + { + if ($this->total > 0) { + return ($this->fraction / $this->total) * 100; + } + + return 100.0; + } + + public function asString(): string + { + if ($this->total > 0) { + return sprintf('%01.2F%%', $this->asFloat()); + } + + return ''; + } + + public function asFixedWidthString(): string + { + if ($this->total > 0) { + return sprintf('%6.2F%%', $this->asFloat()); + } + + return ''; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Version.php b/vendor/phpunit/php-code-coverage/src/Version.php index 21547ddd1..30c7e8878 100644 --- a/vendor/phpunit/php-code-coverage/src/Version.php +++ b/vendor/phpunit/php-code-coverage/src/Version.php @@ -1,6 +1,6 @@ * @@ -9,6 +9,7 @@ */ namespace SebastianBergmann\CodeCoverage; +use function dirname; use SebastianBergmann\Version as VersionId; final class Version @@ -21,8 +22,7 @@ final class Version public static function id(): string { if (self::$version === null) { - $version = new VersionId('7.0.15', \dirname(__DIR__)); - self::$version = $version->getVersion(); + self::$version = (new VersionId('9.2.23', dirname(__DIR__)))->getVersion(); } return self::$version; diff --git a/vendor/phpunit/php-code-coverage/tests/TestCase.php b/vendor/phpunit/php-code-coverage/tests/TestCase.php deleted file mode 100644 index 6a9824e88..000000000 --- a/vendor/phpunit/php-code-coverage/tests/TestCase.php +++ /dev/null @@ -1,395 +0,0 @@ - - * - * 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\Report\Xml\Coverage; - -abstract class TestCase extends \PHPUnit\Framework\TestCase -{ - protected static $TEST_TMP_PATH; - - public static function setUpBeforeClass(): void - { - self::$TEST_TMP_PATH = TEST_FILES_PATH . 'tmp'; - } - - protected function getXdebugDataForBankAccount() - { - return [ - [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => 1, - 9 => -2, - 13 => -1, - 14 => -1, - 15 => -1, - 16 => -1, - 18 => -1, - 22 => -1, - 24 => -1, - 25 => -2, - 29 => -1, - 31 => -1, - 32 => -2 - ] - ], - [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => 1, - 13 => 1, - 16 => 1, - 29 => 1, - ] - ], - [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => 1, - 13 => 1, - 16 => 1, - 22 => 1, - ] - ], - [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => 1, - 13 => 1, - 14 => 1, - 15 => 1, - 18 => 1, - 22 => 1, - 24 => 1, - 29 => 1, - 31 => 1, - ] - ] - ]; - } - - protected function getCoverageForBankAccount(): CodeCoverage - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[0], - $data[1], - $data[2], - $data[3] - )); - - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); - - $coverage = new CodeCoverage($stub, $filter); - - $coverage->start( - new \BankAccountTest('testBalanceIsInitiallyZero'), - true - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(6, 9)] - ); - - $coverage->start( - new \BankAccountTest('testBalanceCannotBecomeNegative') - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(27, 32)] - ); - - $coverage->start( - new \BankAccountTest('testBalanceCannotBecomeNegative2') - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(20, 25)] - ); - - $coverage->start( - new \BankAccountTest('testDepositWithdrawMoney') - ); - - $coverage->stop( - true, - [ - TEST_FILES_PATH . 'BankAccount.php' => array_merge( - range(6, 9), - range(20, 25), - range(27, 32) - ) - ] - ); - - return $coverage; - } - - protected function getCoverageForBankAccountForFirstTwoTests(): CodeCoverage - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[0], - $data[1] - )); - - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); - - $coverage = new CodeCoverage($stub, $filter); - - $coverage->start( - new \BankAccountTest('testBalanceIsInitiallyZero'), - true - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(6, 9)] - ); - - $coverage->start( - new \BankAccountTest('testBalanceCannotBecomeNegative') - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(27, 32)] - ); - - return $coverage; - } - - protected function getCoverageForBankAccountForLastTwoTests() - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[2], - $data[3] - )); - - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); - - $coverage = new CodeCoverage($stub, $filter); - - $coverage->start( - new \BankAccountTest('testBalanceCannotBecomeNegative2') - ); - - $coverage->stop( - true, - [TEST_FILES_PATH . 'BankAccount.php' => range(20, 25)] - ); - - $coverage->start( - new \BankAccountTest('testDepositWithdrawMoney') - ); - - $coverage->stop( - true, - [ - TEST_FILES_PATH . 'BankAccount.php' => array_merge( - range(6, 9), - range(20, 25), - range(27, 32) - ) - ] - ); - - return $coverage; - } - - protected function getExpectedDataArrayForBankAccount(): array - { - return [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => [ - 0 => 'BankAccountTest::testBalanceIsInitiallyZero', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 9 => null, - 13 => [], - 14 => [], - 15 => [], - 16 => [], - 18 => [], - 22 => [ - 0 => 'BankAccountTest::testBalanceCannotBecomeNegative2', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 24 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney', - ], - 25 => null, - 29 => [ - 0 => 'BankAccountTest::testBalanceCannotBecomeNegative', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 31 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 32 => null - ] - ]; - } - - protected function getExpectedDataArrayForBankAccountInReverseOrder(): array - { - return [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 8 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney', - 1 => 'BankAccountTest::testBalanceIsInitiallyZero' - ], - 9 => null, - 13 => [], - 14 => [], - 15 => [], - 16 => [], - 18 => [], - 22 => [ - 0 => 'BankAccountTest::testBalanceCannotBecomeNegative2', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 24 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney', - ], - 25 => null, - 29 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney', - 1 => 'BankAccountTest::testBalanceCannotBecomeNegative' - ], - 31 => [ - 0 => 'BankAccountTest::testDepositWithdrawMoney' - ], - 32 => null - ] - ]; - } - - protected function getCoverageForFileWithIgnoredLines(): CodeCoverage - { - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'source_with_ignore.php'); - - $coverage = new CodeCoverage( - $this->setUpXdebugStubForFileWithIgnoredLines(), - $filter - ); - - $coverage->start('FileWithIgnoredLines', true); - $coverage->stop(); - - return $coverage; - } - - protected function setUpXdebugStubForFileWithIgnoredLines(): Driver - { - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->returnValue( - [ - TEST_FILES_PATH . 'source_with_ignore.php' => [ - 2 => 1, - 4 => -1, - 6 => -1, - 7 => 1 - ] - ] - )); - - return $stub; - } - - protected function getCoverageForClassWithAnonymousFunction(): CodeCoverage - { - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php'); - - $coverage = new CodeCoverage( - $this->setUpXdebugStubForClassWithAnonymousFunction(), - $filter - ); - - $coverage->start('ClassWithAnonymousFunction', true); - $coverage->stop(); - - return $coverage; - } - - protected function setUpXdebugStubForClassWithAnonymousFunction(): Driver - { - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->returnValue( - [ - TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php' => [ - 7 => 1, - 9 => 1, - 10 => -1, - 11 => 1, - 12 => 1, - 13 => 1, - 14 => 1, - 17 => 1, - 18 => 1 - ] - ] - )); - - return $stub; - } - - protected function getCoverageForCrashParsing(): CodeCoverage - { - $filter = new Filter; - $filter->addFileToWhitelist(TEST_FILES_PATH . 'Crash.php'); - - // This is a file with invalid syntax, so it isn't executed. - return new CodeCoverage( - $this->setUpXdebugStubForCrashParsing(), - $filter - ); - } - - protected function setUpXdebugStubForCrashParsing(): Driver - { - $stub = $this->createMock(Driver::class); - - $stub->expects($this->any()) - ->method('stop') - ->will($this->returnValue([])); - return $stub; - } - -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml b/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml deleted file mode 100644 index 2f11d819c..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml b/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml deleted file mode 100644 index f2f56eabb..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - BankAccount - %s - - Method Crap Stats - 4 - 0 - 0 - 9 - 0 - - - - global - BankAccount - getBalance - getBalance() - getBalance() - 1 - 1 - 100 - 0 - - - global - BankAccount - setBalance - setBalance($balance) - setBalance($balance) - 6 - 2 - 0 - 0 - - - global - BankAccount - depositMoney - depositMoney($balance) - depositMoney($balance) - 1 - 1 - 100 - 0 - - - global - BankAccount - withdrawMoney - withdrawMoney($balance) - withdrawMoney($balance) - 1 - 1 - 100 - 0 - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt b/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt deleted file mode 100644 index 892d83464..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt +++ /dev/null @@ -1,12 +0,0 @@ - - -Code Coverage Report: - %s - - Summary: - Classes: 0.00% (0/1) - Methods: 75.00% (3/4) - Lines: 50.00% (5/10) - -BankAccount - Methods: 75.00% ( 3/ 4) Lines: 50.00% ( 5/ 10) diff --git a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php b/vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php deleted file mode 100644 index 4238c1559..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php +++ /dev/null @@ -1,33 +0,0 @@ -balance; - } - - protected function setBalance($balance) - { - if ($balance >= 0) { - $this->balance = $balance; - } else { - throw new RuntimeException; - } - } - - public function depositMoney($balance) - { - $this->setBalance($this->getBalance() + $balance); - - return $this->getBalance(); - } - - public function withdrawMoney($balance) - { - $this->setBalance($this->getBalance() - $balance); - - return $this->getBalance(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php b/vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php deleted file mode 100644 index 803c892ac..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php +++ /dev/null @@ -1,66 +0,0 @@ -ba = new BankAccount; - } - - /** - * @covers BankAccount::getBalance - */ - public function testBalanceIsInitiallyZero() - { - $this->assertEquals(0, $this->ba->getBalance()); - } - - /** - * @covers BankAccount::withdrawMoney - */ - public function testBalanceCannotBecomeNegative() - { - try { - $this->ba->withdrawMoney(1); - } catch (RuntimeException $e) { - $this->assertEquals(0, $this->ba->getBalance()); - - return; - } - - $this->fail(); - } - - /** - * @covers BankAccount::depositMoney - */ - public function testBalanceCannotBecomeNegative2() - { - try { - $this->ba->depositMoney(-1); - } catch (RuntimeException $e) { - $this->assertEquals(0, $this->ba->getBalance()); - - return; - } - - $this->fail(); - } - - /** - * @covers BankAccount::getBalance - * @covers BankAccount::depositMoney - * @covers BankAccount::withdrawMoney - */ - public function testDepositWithdrawMoney() - { - $this->assertEquals(0, $this->ba->getBalance()); - $this->ba->depositMoney(1); - $this->assertEquals(1, $this->ba->getBalance()); - $this->ba->withdrawMoney(1); - $this->assertEquals(0, $this->ba->getBalance()); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php deleted file mode 100644 index e6d496e4a..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php deleted file mode 100644 index baa04d8c7..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php deleted file mode 100644 index 560e38175..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php +++ /dev/null @@ -1,13 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php deleted file mode 100644 index b624ed95a..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php deleted file mode 100644 index 20d2e751a..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php deleted file mode 100644 index fb7a88277..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php deleted file mode 100644 index d8d9cae67..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php +++ /dev/null @@ -1,11 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php deleted file mode 100644 index e98efd853..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php deleted file mode 100644 index 7c9c488cf..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php deleted file mode 100644 index 202724a05..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php deleted file mode 100644 index 4e1c0d0f5..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php +++ /dev/null @@ -1,15 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php deleted file mode 100644 index 849c3480d..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php deleted file mode 100644 index 6ae3544ca..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php b/vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php deleted file mode 100644 index d977090cc..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php b/vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php deleted file mode 100644 index 06949cb7e..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } - -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php b/vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php deleted file mode 100644 index f382ce99b..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php +++ /dev/null @@ -1,36 +0,0 @@ -privateMethod(); - } - - public function publicMethod() - { - $this->protectedMethod(); - } -} - -class CoveredClass extends CoveredParentClass -{ - private function privateMethod() - { - } - - protected function protectedMethod() - { - parent::protectedMethod(); - $this->privateMethod(); - } - - public function publicMethod() - { - parent::publicMethod(); - $this->protectedMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php b/vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php deleted file mode 100644 index 9989eb02e..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php +++ /dev/null @@ -1,4 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php deleted file mode 100644 index 2b91f1fdd..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php deleted file mode 100644 index d3bc1a93b..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php +++ /dev/null @@ -1,17 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php deleted file mode 100644 index 67752dd9c..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php +++ /dev/null @@ -1,22 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php deleted file mode 100644 index f83ae5f0e..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php +++ /dev/null @@ -1,14 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php deleted file mode 100644 index b4983c747..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php deleted file mode 100644 index ceb7b35bf..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php deleted file mode 100644 index 60aff7a01..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php deleted file mode 100644 index d5eb77ec0..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php deleted file mode 100644 index 6a6eaca47..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php deleted file mode 100644 index f32803ecf..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php b/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php deleted file mode 100644 index 5bd0ddfb2..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php +++ /dev/null @@ -1,38 +0,0 @@ -privateMethod(); - } - - public function publicMethod() - { - $this->protectedMethod(); - } -} - -class CoveredClass extends CoveredParentClass -{ - private function privateMethod() - { - } - - protected function protectedMethod() - { - parent::protectedMethod(); - $this->privateMethod(); - } - - public function publicMethod() - { - parent::publicMethod(); - $this->protectedMethod(); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php b/vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php deleted file mode 100644 index 0836a8c84..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - public function testThree() - { - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/BankAccount.php.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/BankAccount.php.html deleted file mode 100644 index 467602ee9..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/BankAccount.php.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - Code Coverage for %s%eBankAccount.php - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 75.00% covered (warning) -
-
-
75.00%
3 / 4
CRAP
-
- 50.00% covered (danger) -
-
-
50.00%
5 / 10
BankAccount
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 75.00% covered (warning) -
-
-
75.00%
3 / 4
8.12
-
- 50.00% covered (danger) -
-
-
50.00%
5 / 10
 getBalance
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
1
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
 setBalance
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
6
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 5
 depositMoney
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
1
-
- 100.00% covered (success) -
-
-
100.00%
2 / 2
 withdrawMoney
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
1
-
- 100.00% covered (success) -
-
-
100.00%
2 / 2
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<?php
class BankAccount
{
    protected $balance = 0;
    public function getBalance()
    {
        return $this->balance;
    }
    protected function setBalance($balance)
    {
        if ($balance >= 0) {
            $this->balance = $balance;
        } else {
            throw new RuntimeException;
        }
    }
    public function depositMoney($balance)
    {
        $this->setBalance($this->getBalance() + $balance);
        return $this->getBalance();
    }
    public function withdrawMoney($balance)
    {
        $this->setBalance($this->getBalance() - $balance);
        return $this->getBalance();
    }
}
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/dashboard.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/dashboard.html deleted file mode 100644 index e47929fbd..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/dashboard.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - Dashboard for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
-
-

Classes

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - - -
ClassCoverage
BankAccount50%
-
-
-
-

Project Risks

-
- - - - - - - - - - - -
ClassCRAP
BankAccount8
-
-
-
-
-
-

Methods

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - - -
MethodCoverage
setBalance0%
-
-
-
-

Project Risks

-
- - - - - - - - - - - -
MethodCRAP
setBalance6
-
-
-
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/index.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/index.html deleted file mode 100644 index e0c9ed9d9..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Code Coverage for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
-
- 50.00% covered (danger) -
-
-
50.00%
5 / 10
-
- 75.00% covered (warning) -
-
-
75.00%
3 / 4
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
BankAccount.php
-
- 50.00% covered (danger) -
-
-
50.00%
5 / 10
-
- 75.00% covered (warning) -
-
-
75.00%
3 / 4
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
-
-
-

Legend

-

- Low: 0% to 50% - Medium: 50% to 90% - High: 90% to 100% -

-

- Generated by php-code-coverage %s using %s at %s. -

-
-
- - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/dashboard.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/dashboard.html deleted file mode 100644 index 8b27809c7..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/dashboard.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - Dashboard for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
-
-

Classes

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - - -
ClassCoverage
CoveredClassWithAnonymousFunctionInStaticMethod87%
-
-
-
-

Project Risks

-
- - - - - - - - - - -
ClassCRAP
-
-
-
-
-
-

Methods

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - - -
MethodCoverage
runAnonymous87%
-
-
-
-

Project Risks

-
- - - - - - - - - - -
MethodCRAP
-
-
-
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/index.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/index.html deleted file mode 100644 index 68318d055..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Code Coverage for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
-
- 87.50% covered (warning) -
-
-
87.50%
7 / 8
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
source_with_class_and_anonymous_function.php
-
- 87.50% covered (warning) -
-
-
87.50%
7 / 8
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
-
-
-

Legend

-

- Low: 0% to 50% - Medium: 50% to 90% - High: 90% to 100% -

-

- Generated by php-code-coverage %s using %s at %s. -

-
-
- - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.html deleted file mode 100644 index c261c6e1e..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - Code Coverage for %s%esource_with_class_and_anonymous_function.php - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
CRAP
-
- 87.50% covered (warning) -
-
-
87.50%
7 / 8
CoveredClassWithAnonymousFunctionInStaticMethod
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
1.00
-
- 87.50% covered (warning) -
-
-
87.50%
7 / 8
 runAnonymous
-
- 0.00% covered (danger) -
-
-
0.00%
0 / 1
1.00
-
- 87.50% covered (warning) -
-
-
87.50%
7 / 8
-
- - - - - - - - - - - - - - - - - - - - - - - -
<?php
class CoveredClassWithAnonymousFunctionInStaticMethod
{
    public static function runAnonymous()
    {
        $filter = ['abc124', 'abc123', '123'];
        array_walk(
            $filter,
            function (&$val, $key) {
                $val = preg_replace('|[^0-9]|', '', $val);
            }
        );
        // Should be covered
        $extravar = true;
    }
}
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/dashboard.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/dashboard.html deleted file mode 100644 index 4cf93adb5..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/dashboard.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - Dashboard for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
-
-

Classes

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - -
ClassCoverage
-
-
-
-

Project Risks

-
- - - - - - - - - - -
ClassCRAP
-
-
-
-
-
-

Methods

-
-
-
-
-

Coverage Distribution

-
- -
-
-
-

Complexity

-
- -
-
-
-
-
-

Insufficient Coverage

-
- - - - - - - - - - -
MethodCoverage
-
-
-
-

Project Risks

-
- - - - - - - - - - -
MethodCRAP
-
-
-
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/index.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/index.html deleted file mode 100644 index 7d4cfffce..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/index.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - Code Coverage for %s - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
-
- 50.00% covered (danger) -
-
-
50.00%
1 / 2
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
n/a
0 / 0
source_with_ignore.php
-
- 50.00% covered (danger) -
-
-
50.00%
1 / 2
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
n/a
0 / 0
-
-
-
-

Legend

-

- Low: 0% to 50% - Medium: 50% to 90% - High: 90% to 100% -

-

- Generated by php-code-coverage %s using %s at %s. -

-
-
- - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/source_with_ignore.php.html b/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/source_with_ignore.php.html deleted file mode 100644 index a18a5aa56..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/source_with_ignore.php.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - Code Coverage for %s%esource_with_ignore.php - - - - - - - -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
n/a
0 / 0
-
- 100.00% covered (success) -
-
-
100.00%
1 / 1
CRAP
-
- 50.00% covered (danger) -
-
-
50.00%
1 / 2
baz
n/a
0 / 0
1
n/a
0 / 0
Foo
n/a
0 / 0
n/a
0 / 0
1
n/a
0 / 0
 bar
n/a
0 / 0
1
n/a
0 / 0
Bar
n/a
0 / 0
n/a
0 / 0
1
n/a
0 / 0
 foo
n/a
0 / 0
1
n/a
0 / 0
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<?php
if ($neverHappens) {
    // @codeCoverageIgnoreStart
    print '*';
    // @codeCoverageIgnoreEnd
}
/**
 * @codeCoverageIgnore
 */
class Foo
{
    public function bar()
    {
    }
}
class Bar
{
    /**
     * @codeCoverageIgnore
     */
    public function foo()
    {
    }
}
function baz()
{
    print '*'; // @codeCoverageIgnore
}
interface Bor
{
    public function foo();
}
- -
- - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/BankAccount.php.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/BankAccount.php.xml deleted file mode 100644 index 238548b08..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/BankAccount.php.xml +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - class - - BankAccount - - - { - - - - protected - - $balance - - = - - 0 - ; - - - - - public - - function - - getBalance - ( - ) - - - - { - - - - return - - $this - -> - balance - ; - - - - } - - - - - protected - - function - - setBalance - ( - $balance - ) - - - - { - - - - if - - ( - $balance - - >= - - 0 - ) - - { - - - - $this - -> - balance - - = - - $balance - ; - - - - } - - else - - { - - - - throw - - new - - RuntimeException - ; - - - - } - - - - } - - - - - public - - function - - depositMoney - ( - $balance - ) - - - - { - - - - $this - -> - setBalance - ( - $this - -> - getBalance - ( - ) - - + - - $balance - ) - ; - - - - - return - - $this - -> - getBalance - ( - ) - ; - - - - } - - - - - public - - function - - withdrawMoney - ( - $balance - ) - - - - { - - - - $this - -> - setBalance - ( - $this - -> - getBalance - ( - ) - - - - - $balance - ) - ; - - - - - return - - $this - -> - getBalance - ( - ) - ; - - - - } - - - } - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/index.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/index.xml deleted file mode 100644 index df433b085..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/index.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/index.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/index.xml deleted file mode 100644 index c8d90baa9..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/index.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.xml deleted file mode 100644 index a4131745d..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - class - - CoveredClassWithAnonymousFunctionInStaticMethod - - - { - - - - public - - static - - function - - runAnonymous - ( - ) - - - - { - - - - $filter - - = - - [ - 'abc124' - , - - 'abc123' - , - - '123' - ] - ; - - - - - array_walk - ( - - - - $filter - , - - - - function - - ( - & - $val - , - - $key - ) - - { - - - - $val - - = - - preg_replace - ( - '|[^0-9]|' - , - - '' - , - - $val - ) - ; - - - - } - - - - ) - ; - - - - - // Should be covered - - - - $extravar - - = - - true - ; - - - - } - - - } - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/index.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/index.xml deleted file mode 100644 index d44f97062..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/index.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/source_with_ignore.php.xml b/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/source_with_ignore.php.xml deleted file mode 100644 index 5ff1d6b82..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/source_with_ignore.php.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - if - - ( - $neverHappens - ) - - { - - - - // @codeCoverageIgnoreStart - - - - print - - '*' - ; - - - - // @codeCoverageIgnoreEnd - - - } - - - - /** - - - * @codeCoverageIgnore - - - */ - - - class - - Foo - - - { - - - - public - - function - - bar - ( - ) - - - - { - - - - } - - - } - - - - class - - Bar - - - { - - - - /** - - - * @codeCoverageIgnore - - - */ - - - - public - - function - - foo - ( - ) - - - - { - - - - } - - - } - - - - function - - baz - ( - ) - - - { - - - - print - - '*' - ; - - // @codeCoverageIgnore - - - } - - - - interface - - Bor - - - { - - - - public - - function - - foo - ( - ) - ; - - - - } - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml b/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml deleted file mode 100644 index 008db55f1..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml b/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml deleted file mode 100644 index 5bd2535e1..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - CoverageForClassWithAnonymousFunction - %s - - Method Crap Stats - 1 - 0 - 0 - 1 - 0 - - - - global - CoveredClassWithAnonymousFunctionInStaticMethod - runAnonymous - runAnonymous() - runAnonymous() - 1 - 1 - 87.5 - 0 - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt b/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt deleted file mode 100644 index e4204cc64..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt +++ /dev/null @@ -1,12 +0,0 @@ - - -Code Coverage Report: - %s - - Summary: - Classes: 0.00% (0/1) - Methods: 0.00% (0/1) - Lines: 87.50% (7/8) - -CoveredClassWithAnonymousFunctionInStaticMethod - Methods: 0.00% ( 0/ 1) Lines: 87.50% ( 7/ 8) diff --git a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml b/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml deleted file mode 100644 index efd38014a..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml b/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml deleted file mode 100644 index 2607b59ac..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - CoverageForFileWithIgnoredLines - %s - - Method Crap Stats - 2 - 0 - 0 - 2 - 0 - - - - global - Foo - bar - bar() - bar() - 1 - 1 - 100 - 0 - - - global - Bar - foo - foo() - foo() - 1 - 1 - 100 - 0 - - - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt b/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt deleted file mode 100644 index 6e8e1494f..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt +++ /dev/null @@ -1,10 +0,0 @@ - - -Code Coverage Report:%w - %s -%w - Summary:%w - Classes: (0/0) - Methods: (0/0) - Lines: 50.00% (1/2) - diff --git a/vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php b/vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php deleted file mode 100644 index 72aa938e9..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php +++ /dev/null @@ -1,19 +0,0 @@ - 1, 'b' => 2, 'c' => 3, 'd' => 4], - static function ($v, $k) - { - return $k === 'b' || $v === 4; - }, - ARRAY_FILTER_USE_BOTH - ); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php b/vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php deleted file mode 100644 index be4e83641..000000000 --- a/vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php +++ /dev/null @@ -1,4 +0,0 @@ - - * - * 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\Node\Builder; -use SebastianBergmann\CodeCoverage\TestCase; - -class BuilderTest extends TestCase -{ - protected $factory; - - protected function setUp(): void - { - $this->factory = new Builder; - } - - public function testSomething(): void - { - $root = $this->getCoverageForBankAccount()->getReport(); - - $expectedPath = \rtrim(TEST_FILES_PATH, \DIRECTORY_SEPARATOR); - $this->assertEquals($expectedPath, $root->getName()); - $this->assertEquals($expectedPath, $root->getPath()); - $this->assertEquals(10, $root->getNumExecutableLines()); - $this->assertEquals(5, $root->getNumExecutedLines()); - $this->assertEquals(1, $root->getNumClasses()); - $this->assertEquals(0, $root->getNumTestedClasses()); - $this->assertEquals(4, $root->getNumMethods()); - $this->assertEquals(3, $root->getNumTestedMethods()); - $this->assertEquals('0.00%', $root->getTestedClassesPercent()); - $this->assertEquals('75.00%', $root->getTestedMethodsPercent()); - $this->assertEquals('50.00%', $root->getLineExecutedPercent()); - $this->assertEquals(0, $root->getNumFunctions()); - $this->assertEquals(0, $root->getNumTestedFunctions()); - $this->assertNull($root->getParent()); - $this->assertEquals([], $root->getDirectories()); - #$this->assertEquals(array(), $root->getFiles()); - #$this->assertEquals(array(), $root->getChildNodes()); - - $this->assertEquals( - [ - 'BankAccount' => [ - 'methods' => [ - 'getBalance' => [ - 'signature' => 'getBalance()', - 'startLine' => 6, - 'endLine' => 9, - 'executableLines' => 1, - 'executedLines' => 1, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#6', - 'methodName' => 'getBalance', - 'visibility' => 'public', - ], - 'setBalance' => [ - 'signature' => 'setBalance($balance)', - 'startLine' => 11, - 'endLine' => 18, - 'executableLines' => 5, - 'executedLines' => 0, - 'ccn' => 2, - 'coverage' => 0, - 'crap' => 6, - 'link' => 'BankAccount.php.html#11', - 'methodName' => 'setBalance', - 'visibility' => 'protected', - ], - 'depositMoney' => [ - 'signature' => 'depositMoney($balance)', - 'startLine' => 20, - 'endLine' => 25, - 'executableLines' => 2, - 'executedLines' => 2, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#20', - 'methodName' => 'depositMoney', - 'visibility' => 'public', - ], - 'withdrawMoney' => [ - 'signature' => 'withdrawMoney($balance)', - 'startLine' => 27, - 'endLine' => 32, - 'executableLines' => 2, - 'executedLines' => 2, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#27', - 'methodName' => 'withdrawMoney', - 'visibility' => 'public', - ], - ], - 'startLine' => 2, - 'executableLines' => 10, - 'executedLines' => 5, - 'ccn' => 5, - 'coverage' => 50, - 'crap' => '8.12', - 'package' => [ - 'namespace' => '', - 'fullPackage' => '', - 'category' => '', - 'package' => '', - 'subpackage' => '', - ], - 'link' => 'BankAccount.php.html#2', - 'className' => 'BankAccount', - ], - ], - $root->getClasses() - ); - - $this->assertEquals([], $root->getFunctions()); - } - - public function testNotCrashParsing(): void - { - $coverage = $this->getCoverageForCrashParsing(); - $root = $coverage->getReport(); - - $expectedPath = \rtrim(TEST_FILES_PATH, \DIRECTORY_SEPARATOR); - $this->assertEquals($expectedPath, $root->getName()); - $this->assertEquals($expectedPath, $root->getPath()); - $this->assertEquals(2, $root->getNumExecutableLines()); - $this->assertEquals(0, $root->getNumExecutedLines()); - $data = $coverage->getData(); - $expectedFile = $expectedPath . \DIRECTORY_SEPARATOR . 'Crash.php'; - $this->assertSame([$expectedFile => [1 => [], 2 => []]], $data); - } - - public function testBuildDirectoryStructure(): void - { - $s = \DIRECTORY_SEPARATOR; - - $method = new \ReflectionMethod( - Builder::class, - 'buildDirectoryStructure' - ); - - $method->setAccessible(true); - - $this->assertEquals( - [ - 'src' => [ - 'Money.php/f' => [], - 'MoneyBag.php/f' => [], - 'Foo' => [ - 'Bar' => [ - 'Baz' => [ - 'Foo.php/f' => [], - ], - ], - ], - ], - ], - $method->invoke( - $this->factory, - [ - "src{$s}Money.php" => [], - "src{$s}MoneyBag.php" => [], - "src{$s}Foo{$s}Bar{$s}Baz{$s}Foo.php" => [], - ] - ) - ); - } - - /** - * @dataProvider reducePathsProvider - */ - public function testReducePaths($reducedPaths, $commonPath, $paths): void - { - $method = new \ReflectionMethod( - Builder::class, - 'reducePaths' - ); - - $method->setAccessible(true); - - $_commonPath = $method->invokeArgs($this->factory, [&$paths]); - - $this->assertEquals($reducedPaths, $paths); - $this->assertEquals($commonPath, $_commonPath); - } - - public function reducePathsProvider() - { - $s = \DIRECTORY_SEPARATOR; - - yield [ - [], - '.', - [], - ]; - - $prefixes = ["C:$s", "$s"]; - - foreach ($prefixes as $p) { - yield [ - [ - 'Money.php' => [], - ], - "{$p}home{$s}sb{$s}Money{$s}", - [ - "{$p}home{$s}sb{$s}Money{$s}Money.php" => [], - ], - ]; - - yield [ - [ - 'Money.php' => [], - 'MoneyBag.php' => [], - ], - "{$p}home{$s}sb{$s}Money", - [ - "{$p}home{$s}sb{$s}Money{$s}Money.php" => [], - "{$p}home{$s}sb{$s}Money{$s}MoneyBag.php" => [], - ], - ]; - - yield [ - [ - 'Money.php' => [], - 'MoneyBag.php' => [], - "Cash.phar{$s}Cash.php" => [], - ], - "{$p}home{$s}sb{$s}Money", - [ - "{$p}home{$s}sb{$s}Money{$s}Money.php" => [], - "{$p}home{$s}sb{$s}Money{$s}MoneyBag.php" => [], - "phar://{$p}home{$s}sb{$s}Money{$s}Cash.phar{$s}Cash.php" => [], - ], - ]; - } - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php b/vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php deleted file mode 100644 index 7fdbf7da6..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * 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\TestCase; - -/** - * @covers SebastianBergmann\CodeCoverage\Report\Clover - */ -class CloverTest extends TestCase -{ - public function testCloverForBankAccountTest(): void - { - $clover = new Clover; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'BankAccount-clover.xml', - $clover->process($this->getCoverageForBankAccount(), null, 'BankAccount') - ); - } - - public function testCloverForFileWithIgnoredLines(): void - { - $clover = new Clover; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'ignored-lines-clover.xml', - $clover->process($this->getCoverageForFileWithIgnoredLines()) - ); - } - - public function testCloverForClassWithAnonymousFunction(): void - { - $clover = new Clover; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'class-with-anonymous-function-clover.xml', - $clover->process($this->getCoverageForClassWithAnonymousFunction()) - ); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php b/vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php deleted file mode 100644 index ce2471ae5..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php +++ /dev/null @@ -1,359 +0,0 @@ - - * - * 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\Environment\Runtime; - -/** - * @covers SebastianBergmann\CodeCoverage\CodeCoverage - */ -class CodeCoverageTest extends TestCase -{ - /** - * @var CodeCoverage - */ - private $coverage; - - protected function setUp(): void - { - $runtime = new Runtime; - - if (!$runtime->canCollectCodeCoverage()) { - $this->markTestSkipped('No code coverage driver available'); - } - - $this->coverage = new CodeCoverage; - } - - public function testCannotStopWithInvalidSecondArgument(): void - { - $this->expectException(Exception::class); - - $this->coverage->stop(true, null); - } - - public function testCannotAppendWithInvalidArgument(): void - { - $this->expectException(Exception::class); - - $this->coverage->append([], null); - } - - public function testCollect(): void - { - $coverage = $this->getCoverageForBankAccount(); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), - $coverage->getData() - ); - - $this->assertEquals( - [ - 'BankAccountTest::testBalanceIsInitiallyZero' => ['size' => 'unknown', 'status' => -1], - 'BankAccountTest::testBalanceCannotBecomeNegative' => ['size' => 'unknown', 'status' => -1], - 'BankAccountTest::testBalanceCannotBecomeNegative2' => ['size' => 'unknown', 'status' => -1], - 'BankAccountTest::testDepositWithdrawMoney' => ['size' => 'unknown', 'status' => -1], - ], - $coverage->getTests() - ); - } - - public function testMerge(): void - { - $coverage = $this->getCoverageForBankAccountForFirstTwoTests(); - $coverage->merge($this->getCoverageForBankAccountForLastTwoTests()); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), - $coverage->getData() - ); - } - - public function testMergeReverseOrder(): void - { - $coverage = $this->getCoverageForBankAccountForLastTwoTests(); - $coverage->merge($this->getCoverageForBankAccountForFirstTwoTests()); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccountInReverseOrder(), - $coverage->getData() - ); - } - - public function testMerge2(): void - { - $coverage = new CodeCoverage( - $this->createMock(Driver::class), - new Filter - ); - - $coverage->merge($this->getCoverageForBankAccount()); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), - $coverage->getData() - ); - } - - public function testGetLinesToBeIgnored(): void - { - $this->assertEquals( - [ - 1, - 3, - 4, - 5, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 30, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - ], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_with_ignore.php' - ) - ); - } - - public function testGetLinesToBeIgnored2(): void - { - $this->assertEquals( - [1, 5], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_without_ignore.php' - ) - ); - } - - public function testGetLinesToBeIgnored3(): void - { - $this->assertEquals( - [ - 1, - 2, - 3, - 4, - 5, - 8, - 11, - 15, - 16, - 19, - 20, - ], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php' - ) - ); - } - - public function testGetLinesToBeIgnoredOneLineAnnotations(): void - { - $this->assertEquals( - [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 14, - 15, - 16, - 18, - 20, - 21, - 23, - 24, - 25, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 37, - ], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_with_oneline_annotations.php' - ) - ); - } - - public function testGetLinesToBeIgnoredWhenIgnoreIsDisabled(): void - { - $this->coverage->setDisableIgnoredLines(true); - - $this->assertEquals( - [ - 7, - 11, - 12, - 13, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 26, - 27, - 32, - 33, - 34, - 35, - 36, - 37, - ], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_with_ignore.php' - ) - ); - } - - public function testUseStatementsAreIgnored(): void - { - $this->assertEquals( - [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 13, - 16, - 23, - 24, - ], - $this->getLinesToBeIgnored()->invoke( - $this->coverage, - TEST_FILES_PATH . 'source_with_use_statements.php' - ) - ); - } - - public function testAppendThrowsExceptionIfCoveredCodeWasNotExecuted(): void - { - $this->coverage->filter()->addDirectoryToWhitelist(TEST_FILES_PATH); - $this->coverage->setCheckForUnexecutedCoveredCode(true); - - $data = [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 29 => -1, - 31 => -1, - ], - ]; - - $linesToBeCovered = [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 22, - 24, - ], - ]; - - $linesToBeUsed = []; - - $this->expectException(CoveredCodeNotExecutedException::class); - - $this->coverage->append($data, 'File1.php', true, $linesToBeCovered, $linesToBeUsed); - } - - public function testAppendThrowsExceptionIfUsedCodeWasNotExecuted(): void - { - $this->coverage->filter()->addDirectoryToWhitelist(TEST_FILES_PATH); - $this->coverage->setCheckForUnexecutedCoveredCode(true); - - $data = [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 29 => -1, - 31 => -1, - ], - ]; - - $linesToBeCovered = [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 29, - 31, - ], - ]; - - $linesToBeUsed = [ - TEST_FILES_PATH . 'BankAccount.php' => [ - 22, - 24, - ], - ]; - - $this->expectException(CoveredCodeNotExecutedException::class); - - $this->coverage->append($data, 'File1.php', true, $linesToBeCovered, $linesToBeUsed); - } - - /** - * @return \ReflectionMethod - */ - private function getLinesToBeIgnored() - { - $getLinesToBeIgnored = new \ReflectionMethod( - 'SebastianBergmann\CodeCoverage\CodeCoverage', - 'getLinesToBeIgnored' - ); - - $getLinesToBeIgnored->setAccessible(true); - - return $getLinesToBeIgnored; - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php b/vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php deleted file mode 100644 index 033fe4c74..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * 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\TestCase; - -/** - * @covers SebastianBergmann\CodeCoverage\Report\Crap4j - */ -class Crap4jTest extends TestCase -{ - public function testForBankAccountTest(): void - { - $crap4j = new Crap4j; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'BankAccount-crap4j.xml', - $crap4j->process($this->getCoverageForBankAccount(), null, 'BankAccount') - ); - } - - public function testForFileWithIgnoredLines(): void - { - $crap4j = new Crap4j; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'ignored-lines-crap4j.xml', - $crap4j->process($this->getCoverageForFileWithIgnoredLines(), null, 'CoverageForFileWithIgnoredLines') - ); - } - - public function testForClassWithAnonymousFunction(): void - { - $crap4j = new Crap4j; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'class-with-anonymous-function-crap4j.xml', - $crap4j->process($this->getCoverageForClassWithAnonymousFunction(), null, 'CoverageForClassWithAnonymousFunction') - ); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/Exception/UnintentionallyCoveredCodeExceptionTest.php b/vendor/phpunit/php-code-coverage/tests/tests/Exception/UnintentionallyCoveredCodeExceptionTest.php deleted file mode 100644 index dffc22741..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/Exception/UnintentionallyCoveredCodeExceptionTest.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\tests\Exception; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\CodeCoverage\RuntimeException; -use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; - -final class UnintentionallyCoveredCodeExceptionTest extends TestCase -{ - public function testCanConstructWithEmptyArray(): void - { - $unintentionallyCoveredUnits = []; - - $exception = new UnintentionallyCoveredCodeException($unintentionallyCoveredUnits); - - $this->assertInstanceOf(RuntimeException::class, $exception); - $this->assertSame($unintentionallyCoveredUnits, $exception->getUnintentionallyCoveredUnits()); - $this->assertSame('', $exception->getMessage()); - } - - public function testCanConstructWithNonEmptyArray(): void - { - $unintentionallyCoveredUnits = [ - 'foo', - 'bar', - 'baz', - ]; - - $exception = new UnintentionallyCoveredCodeException($unintentionallyCoveredUnits); - - $this->assertInstanceOf(RuntimeException::class, $exception); - $this->assertSame($unintentionallyCoveredUnits, $exception->getUnintentionallyCoveredUnits()); - - $expected = <<assertSame($expected, $exception->getMessage()); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php b/vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php deleted file mode 100644 index 373b34929..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php +++ /dev/null @@ -1,213 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; - -class FilterTest extends TestCase -{ - /** - * @var Filter - */ - private $filter; - - /** - * @var array - */ - private $files = []; - - protected function setUp(): void - { - $this->filter = \unserialize('O:37:"SebastianBergmann\CodeCoverage\Filter":0:{}'); - - $this->files = [ - TEST_FILES_PATH . 'BankAccount.php', - TEST_FILES_PATH . 'BankAccountTest.php', - TEST_FILES_PATH . 'CoverageClassExtendedTest.php', - TEST_FILES_PATH . 'CoverageClassTest.php', - TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php', - TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php', - TEST_FILES_PATH . 'CoverageFunctionTest.php', - TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php', - TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php', - TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php', - TEST_FILES_PATH . 'CoverageMethodTest.php', - TEST_FILES_PATH . 'CoverageNoneTest.php', - TEST_FILES_PATH . 'CoverageNotPrivateTest.php', - TEST_FILES_PATH . 'CoverageNotProtectedTest.php', - TEST_FILES_PATH . 'CoverageNotPublicTest.php', - TEST_FILES_PATH . 'CoverageNothingTest.php', - TEST_FILES_PATH . 'CoveragePrivateTest.php', - TEST_FILES_PATH . 'CoverageProtectedTest.php', - TEST_FILES_PATH . 'CoveragePublicTest.php', - TEST_FILES_PATH . 'CoverageTwoDefaultClassAnnotations.php', - TEST_FILES_PATH . 'CoveredClass.php', - TEST_FILES_PATH . 'CoveredFunction.php', - TEST_FILES_PATH . 'Crash.php', - TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php', - TEST_FILES_PATH . 'NamespaceCoverageClassTest.php', - TEST_FILES_PATH . 'NamespaceCoverageCoversClassPublicTest.php', - TEST_FILES_PATH . 'NamespaceCoverageCoversClassTest.php', - TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php', - TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php', - TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php', - TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php', - TEST_FILES_PATH . 'NamespaceCoveredClass.php', - TEST_FILES_PATH . 'NotExistingCoveredElementTest.php', - TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php', - TEST_FILES_PATH . 'source_with_ignore.php', - TEST_FILES_PATH . 'source_with_namespace.php', - TEST_FILES_PATH . 'source_with_oneline_annotations.php', - TEST_FILES_PATH . 'source_with_use_statements.php', - TEST_FILES_PATH . 'source_without_ignore.php', - TEST_FILES_PATH . 'source_without_namespace.php', - ]; - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::addFileToWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - */ - public function testAddingAFileToTheWhitelistWorks(): void - { - $this->filter->addFileToWhitelist($this->files[0]); - - $this->assertEquals( - [$this->files[0]], - $this->filter->getWhitelist() - ); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::removeFileFromWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - */ - public function testRemovingAFileFromTheWhitelistWorks(): void - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->filter->removeFileFromWhitelist($this->files[0]); - - $this->assertEquals([], $this->filter->getWhitelist()); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::addDirectoryToWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - * @depends testAddingAFileToTheWhitelistWorks - */ - public function testAddingADirectoryToTheWhitelistWorks(): void - { - $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH); - - $whitelist = $this->filter->getWhitelist(); - \sort($whitelist); - - $this->assertEquals($this->files, $whitelist); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::addFilesToWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - */ - public function testAddingFilesToTheWhitelistWorks(): void - { - $facade = new FileIteratorFacade; - - $files = $facade->getFilesAsArray( - TEST_FILES_PATH, - $suffixes = '.php' - ); - - $this->filter->addFilesToWhitelist($files); - - $whitelist = $this->filter->getWhitelist(); - \sort($whitelist); - - $this->assertEquals($this->files, $whitelist); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::removeDirectoryFromWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - * @depends testAddingADirectoryToTheWhitelistWorks - */ - public function testRemovingADirectoryFromTheWhitelistWorks(): void - { - $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH); - $this->filter->removeDirectoryFromWhitelist(TEST_FILES_PATH); - - $this->assertEquals([], $this->filter->getWhitelist()); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::isFile - */ - public function testIsFile(): void - { - $this->assertFalse($this->filter->isFile('vfs://root/a/path')); - $this->assertFalse($this->filter->isFile('xdebug://debug-eval')); - $this->assertFalse($this->filter->isFile('eval()\'d code')); - $this->assertFalse($this->filter->isFile('runtime-created function')); - $this->assertFalse($this->filter->isFile('assert code')); - $this->assertFalse($this->filter->isFile('regexp code')); - $this->assertTrue($this->filter->isFile(__FILE__)); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered - */ - public function testWhitelistedFileIsNotFiltered(): void - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->assertFalse($this->filter->isFiltered($this->files[0])); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered - */ - public function testNotWhitelistedFileIsFiltered(): void - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->assertTrue($this->filter->isFiltered($this->files[1])); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered - * @covers SebastianBergmann\CodeCoverage\Filter::isFile - */ - public function testNonFilesAreFiltered(): void - { - $this->assertTrue($this->filter->isFiltered('vfs://root/a/path')); - $this->assertTrue($this->filter->isFiltered('xdebug://debug-eval')); - $this->assertTrue($this->filter->isFiltered('eval()\'d code')); - $this->assertTrue($this->filter->isFiltered('runtime-created function')); - $this->assertTrue($this->filter->isFiltered('assert code')); - $this->assertTrue($this->filter->isFiltered('regexp code')); - } - - /** - * @covers SebastianBergmann\CodeCoverage\Filter::addFileToWhitelist - * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist - * - * @ticket https://github.com/sebastianbergmann/php-code-coverage/issues/664 - */ - public function testTryingToAddFileThatDoesNotExistDoesNotChangeFilter(): void - { - $filter = new Filter; - - $filter->addFileToWhitelist('does_not_exist'); - - $this->assertEmpty($filter->getWhitelistedFiles()); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php b/vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php deleted file mode 100644 index 0ddd85d66..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php +++ /dev/null @@ -1,102 +0,0 @@ - - * - * 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\TestCase; - -class HTMLTest extends TestCase -{ - private static $TEST_REPORT_PATH_SOURCE; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - - self::$TEST_REPORT_PATH_SOURCE = TEST_FILES_PATH . 'Report' . \DIRECTORY_SEPARATOR . 'HTML'; - } - - protected function tearDown(): void - { - parent::tearDown(); - - $tmpFilesIterator = new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator(self::$TEST_TMP_PATH, \RecursiveDirectoryIterator::SKIP_DOTS), - \RecursiveIteratorIterator::CHILD_FIRST - ); - - foreach ($tmpFilesIterator as $path => $fileInfo) { - /* @var \SplFileInfo $fileInfo */ - $pathname = $fileInfo->getPathname(); - $fileInfo->isDir() ? \rmdir($pathname) : \unlink($pathname); - } - } - - public function testForBankAccountTest(): void - { - $expectedFilesPath = self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForBankAccount'; - - $report = new Facade; - $report->process($this->getCoverageForBankAccount(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - public function testForFileWithIgnoredLines(): void - { - $expectedFilesPath = self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForFileWithIgnoredLines'; - - $report = new Facade; - $report->process($this->getCoverageForFileWithIgnoredLines(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - public function testForClassWithAnonymousFunction(): void - { - $expectedFilesPath = - self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForClassWithAnonymousFunction'; - - $report = new Facade; - $report->process($this->getCoverageForClassWithAnonymousFunction(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - /** - * @param string $expectedFilesPath - * @param string $actualFilesPath - */ - private function assertFilesEquals($expectedFilesPath, $actualFilesPath): void - { - $expectedFilesIterator = new \FilesystemIterator($expectedFilesPath); - $actualFilesIterator = new \RegexIterator(new \FilesystemIterator($actualFilesPath), '/.html/'); - - $this->assertEquals( - \iterator_count($expectedFilesIterator), - \iterator_count($actualFilesIterator), - 'Generated files and expected files not match' - ); - - foreach ($expectedFilesIterator as $path => $fileInfo) { - /* @var \SplFileInfo $fileInfo */ - $filename = $fileInfo->getFilename(); - - $actualFile = $actualFilesPath . \DIRECTORY_SEPARATOR . $filename; - - $this->assertFileExists($actualFile); - - $this->assertStringMatchesFormatFile( - $fileInfo->getPathname(), - \str_replace(\PHP_EOL, "\n", \file_get_contents($actualFile)), - "${filename} not match" - ); - } - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/TextTest.php b/vendor/phpunit/php-code-coverage/tests/tests/TextTest.php deleted file mode 100644 index 501226f8b..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/TextTest.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * 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\TestCase; - -/** - * @covers SebastianBergmann\CodeCoverage\Report\Text - */ -class TextTest extends TestCase -{ - public function testTextForBankAccountTest(): void - { - $text = new Text(50, 90, false, false); - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'BankAccount-text.txt', - \str_replace(\PHP_EOL, "\n", $text->process($this->getCoverageForBankAccount())) - ); - } - - public function testTextForFileWithIgnoredLines(): void - { - $text = new Text(50, 90, false, false); - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'ignored-lines-text.txt', - \str_replace(\PHP_EOL, "\n", $text->process($this->getCoverageForFileWithIgnoredLines())) - ); - } - - public function testTextForClassWithAnonymousFunction(): void - { - $text = new Text(50, 90, false, false); - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'class-with-anonymous-function-text.txt', - \str_replace(\PHP_EOL, "\n", $text->process($this->getCoverageForClassWithAnonymousFunction())) - ); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php b/vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php deleted file mode 100644 index 2ebfb61e7..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\CodeCoverage\Util - */ -class UtilTest extends TestCase -{ - public function testPercent(): void - { - $this->assertEquals(100, Util::percent(100, 0)); - $this->assertEquals(100, Util::percent(100, 100)); - $this->assertEquals( - '100.00%', - Util::percent(100, 100, true) - ); - } -} diff --git a/vendor/phpunit/php-code-coverage/tests/tests/XmlTest.php b/vendor/phpunit/php-code-coverage/tests/tests/XmlTest.php deleted file mode 100644 index 13045a74c..000000000 --- a/vendor/phpunit/php-code-coverage/tests/tests/XmlTest.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\CodeCoverage\Report\Xml; - -use SebastianBergmann\CodeCoverage\TestCase; - -class XmlTest extends TestCase -{ - private static $TEST_REPORT_PATH_SOURCE; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - - self::$TEST_REPORT_PATH_SOURCE = TEST_FILES_PATH . 'Report' . \DIRECTORY_SEPARATOR . 'XML'; - } - - protected function tearDown(): void - { - parent::tearDown(); - - $tmpFilesIterator = new \FilesystemIterator(self::$TEST_TMP_PATH); - - foreach ($tmpFilesIterator as $path => $fileInfo) { - /* @var \SplFileInfo $fileInfo */ - \unlink($fileInfo->getPathname()); - } - } - - public function testForBankAccountTest(): void - { - $expectedFilesPath = self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForBankAccount'; - - $xml = new Facade('1.0.0'); - $xml->process($this->getCoverageForBankAccount(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - public function testForFileWithIgnoredLines(): void - { - $expectedFilesPath = self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForFileWithIgnoredLines'; - - $xml = new Facade('1.0.0'); - $xml->process($this->getCoverageForFileWithIgnoredLines(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - public function testForClassWithAnonymousFunction(): void - { - $expectedFilesPath = self::$TEST_REPORT_PATH_SOURCE . \DIRECTORY_SEPARATOR . 'CoverageForClassWithAnonymousFunction'; - - $xml = new Facade('1.0.0'); - $xml->process($this->getCoverageForClassWithAnonymousFunction(), self::$TEST_TMP_PATH); - - $this->assertFilesEquals($expectedFilesPath, self::$TEST_TMP_PATH); - } - - /** - * @param string $expectedFilesPath - * @param string $actualFilesPath - */ - private function assertFilesEquals($expectedFilesPath, $actualFilesPath): void - { - $expectedFilesIterator = new \FilesystemIterator($expectedFilesPath); - $actualFilesIterator = new \FilesystemIterator($actualFilesPath); - - $this->assertEquals( - \iterator_count($expectedFilesIterator), - \iterator_count($actualFilesIterator), - 'Generated files and expected files not match' - ); - - foreach ($expectedFilesIterator as $path => $fileInfo) { - /* @var \SplFileInfo $fileInfo */ - $filename = $fileInfo->getFilename(); - - $actualFile = $actualFilesPath . \DIRECTORY_SEPARATOR . $filename; - - $this->assertFileExists($actualFile); - - $this->assertStringMatchesFormatFile( - $fileInfo->getPathname(), - \file_get_contents($actualFile), - "${filename} not match" - ); - } - } -} diff --git a/vendor/phpunit/php-file-iterator/.gitattributes b/vendor/phpunit/php-file-iterator/.gitattributes deleted file mode 100644 index 461090b7e..000000000 --- a/vendor/phpunit/php-file-iterator/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/phpunit/php-file-iterator/.github/stale.yml b/vendor/phpunit/php-file-iterator/.github/stale.yml deleted file mode 100644 index 4eadca327..000000000 --- a/vendor/phpunit/php-file-iterator/.github/stale.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - enhancement - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had activity within the last 60 days. It will be closed after 7 days if no further activity occurs. Thank you for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This issue has been automatically closed because it has not had activity since it was marked as stale. Thank you for your contributions. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - diff --git a/vendor/phpunit/php-file-iterator/.gitignore b/vendor/phpunit/php-file-iterator/.gitignore deleted file mode 100644 index 5ad7a64f1..000000000 --- a/vendor/phpunit/php-file-iterator/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/.idea -/vendor/ -/.php_cs -/.php_cs.cache -/composer.lock diff --git a/vendor/phpunit/php-file-iterator/.php_cs.dist b/vendor/phpunit/php-file-iterator/.php_cs.dist deleted file mode 100644 index efc649f8f..000000000 --- a/vendor/phpunit/php-file-iterator/.php_cs.dist +++ /dev/null @@ -1,168 +0,0 @@ - - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['method']], - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'no_alias_functions' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_null_property_initialization' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => true, - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ->notName('*.phpt') - ); diff --git a/vendor/phpunit/php-file-iterator/.psalm/baseline.xml b/vendor/phpunit/php-file-iterator/.psalm/baseline.xml new file mode 100644 index 000000000..8b6cdc245 --- /dev/null +++ b/vendor/phpunit/php-file-iterator/.psalm/baseline.xml @@ -0,0 +1,8 @@ + + + + + current + + + diff --git a/vendor/phpunit/php-file-iterator/.psalm/config.xml b/vendor/phpunit/php-file-iterator/.psalm/config.xml new file mode 100644 index 000000000..2a4b16f22 --- /dev/null +++ b/vendor/phpunit/php-file-iterator/.psalm/config.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/vendor/phpunit/php-file-iterator/.travis.yml b/vendor/phpunit/php-file-iterator/.travis.yml deleted file mode 100644 index 16b399c4f..000000000 --- a/vendor/phpunit/php-file-iterator/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: php - -sudo: false - -php: - - 7.1 - - 7.2 - - master - -env: - matrix: - - DEPENDENCIES="high" - - DEPENDENCIES="low" - global: - - DEFAULT_COMPOSER_FLAGS="--no-interaction --no-ansi --no-progress --no-suggest" - -before_install: - - composer self-update - - composer clear-cache - -install: - - if [[ "$DEPENDENCIES" = 'high' ]]; then travis_retry composer update $DEFAULT_COMPOSER_FLAGS; fi - - if [[ "$DEPENDENCIES" = 'low' ]]; then travis_retry composer update $DEFAULT_COMPOSER_FLAGS --prefer-lowest; fi - -script: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false diff --git a/vendor/phpunit/php-file-iterator/ChangeLog.md b/vendor/phpunit/php-file-iterator/ChangeLog.md index 9accca39f..44833762a 100644 --- a/vendor/phpunit/php-file-iterator/ChangeLog.md +++ b/vendor/phpunit/php-file-iterator/ChangeLog.md @@ -2,6 +2,48 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [3.0.6] - 2021-12-02 + +### Changed + +* [#73](https://github.com/sebastianbergmann/php-file-iterator/pull/73): Micro performance improvements on parsing paths + +## [3.0.5] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [3.0.4] - 2020-07-11 + +### Fixed + +* [#67](https://github.com/sebastianbergmann/php-file-iterator/issues/67): `TypeError` in `SebastianBergmann\FileIterator\Iterator::accept()` + +## [3.0.3] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [3.0.2] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [3.0.1] - 2020-04-18 + +### Fixed + +* [#64](https://github.com/sebastianbergmann/php-file-iterator/issues/64): Release tarball contains Composer PHAR + +## [3.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 + ## [2.0.5] - 2021-12-02 ### Changed @@ -80,14 +122,21 @@ No changes ### Added -* [Added support for wildcards (glob) in exclude](https://github.com/sebastianbergmann/php-file-iterator/pull/23) +* [#23](https://github.com/sebastianbergmann/php-file-iterator/pull/23): Added support for wildcards (glob) in exclude +[3.0.6]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.5...3.0.6 +[3.0.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.4...3.0.5 +[3.0.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.3...3.0.4 +[3.0.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.2...3.0.3 +[3.0.2]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.5...3.0.0 [2.0.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.4...2.0.5 [2.0.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.3...2.0.4 [2.0.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.2...2.0.3 [2.0.2]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.1...2.0.2 [2.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4...2.0.0 +[2.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.5...2.0.0 [1.4.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.4...1.4.5 [1.4.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.3...1.4.4 [1.4.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.2...1.4.3 diff --git a/vendor/phpunit/php-file-iterator/LICENSE b/vendor/phpunit/php-file-iterator/LICENSE index 87c3b5124..51db9163e 100644 --- a/vendor/phpunit/php-file-iterator/LICENSE +++ b/vendor/phpunit/php-file-iterator/LICENSE @@ -1,6 +1,6 @@ php-file-iterator -Copyright (c) 2009-2018, Sebastian Bergmann . +Copyright (c) 2009-2021, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/phpunit/php-file-iterator/composer.json b/vendor/phpunit/php-file-iterator/composer.json index b1717b8ad..f1b95b3f8 100644 --- a/vendor/phpunit/php-file-iterator/composer.json +++ b/vendor/phpunit/php-file-iterator/composer.json @@ -18,11 +18,19 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues" }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "prefer-stable": true, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ @@ -31,7 +39,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } } } diff --git a/vendor/phpunit/php-file-iterator/phpunit.xml b/vendor/phpunit/php-file-iterator/phpunit.xml deleted file mode 100644 index 3e12be416..000000000 --- a/vendor/phpunit/php-file-iterator/phpunit.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - tests - - - - - - src - - - diff --git a/vendor/phpunit/php-file-iterator/src/Facade.php b/vendor/phpunit/php-file-iterator/src/Facade.php index 2456e16d9..87b6588dd 100644 --- a/vendor/phpunit/php-file-iterator/src/Facade.php +++ b/vendor/phpunit/php-file-iterator/src/Facade.php @@ -1,35 +1,38 @@ - * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\FileIterator; +use const DIRECTORY_SEPARATOR; +use function array_unique; +use function count; +use function dirname; +use function explode; +use function is_file; +use function is_string; +use function realpath; +use function sort; + class Facade { /** * @param array|string $paths * @param array|string $suffixes * @param array|string $prefixes - * @param array $exclude - * @param bool $commonPath - * - * @return array */ public function getFilesAsArray($paths, $suffixes = '', $prefixes = '', array $exclude = [], bool $commonPath = false): array { - if (\is_string($paths)) { + if (is_string($paths)) { $paths = [$paths]; } - $factory = new Factory; - - $iterator = $factory->getFileIterator($paths, $suffixes, $prefixes, $exclude); + $iterator = (new Factory)->getFileIterator($paths, $suffixes, $prefixes, $exclude); $files = []; @@ -42,18 +45,18 @@ class Facade } foreach ($paths as $path) { - if (\is_file($path)) { - $files[] = \realpath($path); + if (is_file($path)) { + $files[] = realpath($path); } } - $files = \array_unique($files); - \sort($files); + $files = array_unique($files); + sort($files); if ($commonPath) { return [ - 'commonPath' => $this->getCommonPath($files), - 'files' => $files + 'commonPath' => $this->getCommonPath($files), + 'files' => $files, ]; } @@ -62,20 +65,20 @@ class Facade protected function getCommonPath(array $files): string { - $count = \count($files); + $count = count($files); if ($count === 0) { return ''; } if ($count === 1) { - return \dirname($files[0]) . DIRECTORY_SEPARATOR; + return dirname($files[0]) . DIRECTORY_SEPARATOR; } $_files = []; foreach ($files as $file) { - $_files[] = $_fileParts = \explode(DIRECTORY_SEPARATOR, $file); + $_files[] = $_fileParts = explode(DIRECTORY_SEPARATOR, $file); if (empty($_fileParts[0])) { $_fileParts[0] = DIRECTORY_SEPARATOR; diff --git a/vendor/phpunit/php-file-iterator/src/Factory.php b/vendor/phpunit/php-file-iterator/src/Factory.php index 9172ad71e..08f8de999 100644 --- a/vendor/phpunit/php-file-iterator/src/Factory.php +++ b/vendor/phpunit/php-file-iterator/src/Factory.php @@ -1,35 +1,43 @@ - * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\FileIterator; +use const GLOB_ONLYDIR; +use function array_filter; +use function array_map; +use function array_merge; +use function glob; +use function is_dir; +use function is_string; +use function realpath; +use AppendIterator; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; + class Factory { /** * @param array|string $paths * @param array|string $suffixes * @param array|string $prefixes - * @param array $exclude - * - * @return \AppendIterator */ - public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = []): \AppendIterator + public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = []): AppendIterator { - if (\is_string($paths)) { + if (is_string($paths)) { $paths = [$paths]; } $paths = $this->getPathsAfterResolvingWildcards($paths); $exclude = $this->getPathsAfterResolvingWildcards($exclude); - if (\is_string($prefixes)) { + if (is_string($prefixes)) { if ($prefixes !== '') { $prefixes = [$prefixes]; } else { @@ -37,7 +45,7 @@ class Factory } } - if (\is_string($suffixes)) { + if (is_string($suffixes)) { if ($suffixes !== '') { $suffixes = [$suffixes]; } else { @@ -45,15 +53,15 @@ class Factory } } - $iterator = new \AppendIterator; + $iterator = new AppendIterator; foreach ($paths as $path) { - if (\is_dir($path)) { + if (is_dir($path)) { $iterator->append( new Iterator( $path, - new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS | \RecursiveDirectoryIterator::SKIP_DOTS) + new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS | RecursiveDirectoryIterator::SKIP_DOTS) ), $suffixes, $prefixes, @@ -71,13 +79,13 @@ class Factory $_paths = [[]]; foreach ($paths as $path) { - if ($locals = \glob($path, GLOB_ONLYDIR)) { - $_paths[] = \array_map('\realpath', $locals); + if ($locals = glob($path, GLOB_ONLYDIR)) { + $_paths[] = array_map('\realpath', $locals); } else { - $_paths[] = [\realpath($path)]; + $_paths[] = [realpath($path)]; } } - return \array_filter(\array_merge(...$_paths)); + return array_filter(array_merge(...$_paths)); } } diff --git a/vendor/phpunit/php-file-iterator/src/Iterator.php b/vendor/phpunit/php-file-iterator/src/Iterator.php index 4f7127dee..7eb82ad68 100644 --- a/vendor/phpunit/php-file-iterator/src/Iterator.php +++ b/vendor/phpunit/php-file-iterator/src/Iterator.php @@ -1,19 +1,29 @@ - * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\FileIterator; -class Iterator extends \FilterIterator +use function array_filter; +use function array_map; +use function preg_match; +use function realpath; +use function str_replace; +use function strlen; +use function strpos; +use function substr; +use FilterIterator; + +class Iterator extends FilterIterator { - const PREFIX = 0; - const SUFFIX = 1; + public const PREFIX = 0; + + public const SUFFIX = 1; /** * @var string @@ -35,33 +45,26 @@ class Iterator extends \FilterIterator */ private $exclude = []; - /** - * @param string $basePath - * @param \Iterator $iterator - * @param array $suffixes - * @param array $prefixes - * @param array $exclude - */ public function __construct(string $basePath, \Iterator $iterator, array $suffixes = [], array $prefixes = [], array $exclude = []) { - $this->basePath = \realpath($basePath); + $this->basePath = realpath($basePath); $this->prefixes = $prefixes; $this->suffixes = $suffixes; - $this->exclude = \array_filter(\array_map('realpath', $exclude)); + $this->exclude = array_filter(array_map('realpath', $exclude)); parent::__construct($iterator); } - /** - * @return bool - */ - #[\ReturnTypeWillChange] - public function accept() + public function accept(): bool { $current = $this->getInnerIterator()->current(); $filename = $current->getFilename(); $realPath = $current->getRealPath(); + if ($realPath === false) { + return false; + } + return $this->acceptPath($realPath) && $this->acceptPrefix($filename) && $this->acceptSuffix($filename); @@ -70,12 +73,12 @@ class Iterator extends \FilterIterator private function acceptPath(string $path): bool { // Filter files in hidden directories by checking path that is relative to the base path. - if (\preg_match('=/\.[^/]*/=', \str_replace($this->basePath, '', $path))) { + if (preg_match('=/\.[^/]*/=', str_replace($this->basePath, '', $path))) { return false; } foreach ($this->exclude as $exclude) { - if (\strpos($path, $exclude) === 0) { + if (strpos($path, $exclude) === 0) { return false; } } @@ -102,9 +105,9 @@ class Iterator extends \FilterIterator $matched = false; foreach ($subStrings as $string) { - if (($type === self::PREFIX && \strpos($filename, $string) === 0) || + if (($type === self::PREFIX && strpos($filename, $string) === 0) || ($type === self::SUFFIX && - \substr($filename, -1 * \strlen($string)) === $string)) { + substr($filename, -1 * strlen($string)) === $string)) { $matched = true; break; diff --git a/vendor/phpunit/php-file-iterator/tests/FactoryTest.php b/vendor/phpunit/php-file-iterator/tests/FactoryTest.php deleted file mode 100644 index ba4bdbf26..000000000 --- a/vendor/phpunit/php-file-iterator/tests/FactoryTest.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\FileIterator; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\FileIterator\Factory - */ -class FactoryTest extends TestCase -{ - /** - * @var string - */ - private $root; - - /** - * @var Factory - */ - private $factory; - - protected function setUp(): void - { - $this->root = __DIR__; - $this->factory = new Factory; - } - - public function testFindFilesInTestDirectory(): void - { - $iterator = $this->factory->getFileIterator($this->root, 'Test.php'); - $files = \iterator_to_array($iterator); - - $this->assertGreaterThanOrEqual(1, \count($files)); - } - - public function testFindFilesWithExcludedNonExistingSubdirectory(): void - { - $iterator = $this->factory->getFileIterator($this->root, 'Test.php', '', [$this->root . '/nonExistingDir']); - $files = \iterator_to_array($iterator); - - $this->assertGreaterThanOrEqual(1, \count($files)); - } -} diff --git a/vendor/phpunit/php-invoker/ChangeLog.md b/vendor/phpunit/php-invoker/ChangeLog.md new file mode 100644 index 000000000..15cff1f11 --- /dev/null +++ b/vendor/phpunit/php-invoker/ChangeLog.md @@ -0,0 +1,48 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [3.1.1] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [3.1.0] - 2020-08-06 + +### Changed + +* [#14](https://github.com/sebastianbergmann/php-invoker/pull/14): Clear alarm in `finally` block + +## [3.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [3.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [3.0.0] - 2020-02-07 + +### Added + +* Added `canInvokeWithTimeout()` method to check requirements for the functionality provided by this component to work + +### Changed + +* Moved `"ext-pcntl": "*"` requirement from `require` to `suggest` so that this component can be installed even if `ext/pcntl` is not available +* `invoke()` now raises an exception when the requirements for the functionality provided by this component to work are not met + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 + +[3.1.1]: https://github.com/sebastianbergmann/php-invoker/compare/3.1.0...3.1.1 +[3.1.0]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.2...3.1.0 +[3.0.2]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/2.0.0...3.0.0 diff --git a/vendor/phpunit/php-invoker/LICENSE b/vendor/phpunit/php-invoker/LICENSE new file mode 100644 index 000000000..4620776e1 --- /dev/null +++ b/vendor/phpunit/php-invoker/LICENSE @@ -0,0 +1,33 @@ +php-invoker + +Copyright (c) 2011-2020, 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-invoker/README.md b/vendor/phpunit/php-invoker/README.md new file mode 100644 index 000000000..ace07e5fd --- /dev/null +++ b/vendor/phpunit/php-invoker/README.md @@ -0,0 +1,18 @@ +# phpunit/php-invoker + +[![CI Status](https://github.com/sebastianbergmann/php-invoker/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-invoker/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-invoker/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-invoker) + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require phpunit/php-invoker +``` + +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-invoker +``` diff --git a/vendor/phpunit/php-invoker/composer.json b/vendor/phpunit/php-invoker/composer.json new file mode 100644 index 000000000..6c007cd81 --- /dev/null +++ b/vendor/phpunit/php-invoker/composer.json @@ -0,0 +1,54 @@ +{ + "name": "phpunit/php-invoker", + "description": "Invoke callables with a timeout", + "type": "library", + "keywords": [ + "process" + ], + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues" + }, + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "autoload-dev": { + "classmap": [ + "tests/_fixture/" + ] + }, + "suggest": { + "ext-pcntl": "*" + }, + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + } +} + diff --git a/vendor/phpunit/php-invoker/src/Invoker.php b/vendor/phpunit/php-invoker/src/Invoker.php new file mode 100644 index 000000000..656f4180a --- /dev/null +++ b/vendor/phpunit/php-invoker/src/Invoker.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Invoker; + +use const SIGALRM; +use function call_user_func_array; +use function function_exists; +use function pcntl_alarm; +use function pcntl_async_signals; +use function pcntl_signal; +use function sprintf; +use Throwable; + +final class Invoker +{ + /** + * @var int + */ + private $timeout; + + /** + * @throws Throwable + */ + public function invoke(callable $callable, array $arguments, int $timeout) + { + if (!$this->canInvokeWithTimeout()) { + throw new ProcessControlExtensionNotLoadedException( + 'The pcntl (process control) extension for PHP is required' + ); + } + + pcntl_signal( + SIGALRM, + function (): void { + throw new TimeoutException( + sprintf( + 'Execution aborted after %d second%s', + $this->timeout, + $this->timeout === 1 ? '' : 's' + ) + ); + }, + true + ); + + $this->timeout = $timeout; + + pcntl_async_signals(true); + pcntl_alarm($timeout); + + try { + return call_user_func_array($callable, $arguments); + } finally { + pcntl_alarm(0); + } + } + + public function canInvokeWithTimeout(): bool + { + return function_exists('pcntl_signal') && function_exists('pcntl_async_signals') && function_exists('pcntl_alarm'); + } +} diff --git a/vendor/phpunit/php-invoker/src/exceptions/Exception.php b/vendor/phpunit/php-invoker/src/exceptions/Exception.php new file mode 100644 index 000000000..6ecbf5dd3 --- /dev/null +++ b/vendor/phpunit/php-invoker/src/exceptions/Exception.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Invoker; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php b/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php new file mode 100644 index 000000000..ef42fd195 --- /dev/null +++ b/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Invoker; + +use RuntimeException; + +final class ProcessControlExtensionNotLoadedException extends RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php b/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php new file mode 100644 index 000000000..2f7631c0e --- /dev/null +++ b/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Invoker; + +use RuntimeException; + +final class TimeoutException extends RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/php-text-template/.gitattributes b/vendor/phpunit/php-text-template/.gitattributes deleted file mode 100644 index 461090b7e..000000000 --- a/vendor/phpunit/php-text-template/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/phpunit/php-text-template/.gitignore b/vendor/phpunit/php-text-template/.gitignore deleted file mode 100644 index c59921248..000000000 --- a/vendor/phpunit/php-text-template/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/composer.lock -/composer.phar -/.idea -/vendor - diff --git a/vendor/phpunit/php-text-template/.psalm/baseline.xml b/vendor/phpunit/php-text-template/.psalm/baseline.xml new file mode 100644 index 000000000..77e688e07 --- /dev/null +++ b/vendor/phpunit/php-text-template/.psalm/baseline.xml @@ -0,0 +1,2 @@ + + diff --git a/vendor/phpunit/php-text-template/.psalm/config.xml b/vendor/phpunit/php-text-template/.psalm/config.xml new file mode 100644 index 000000000..2a4b16f22 --- /dev/null +++ b/vendor/phpunit/php-text-template/.psalm/config.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/vendor/phpunit/php-text-template/ChangeLog.md b/vendor/phpunit/php-text-template/ChangeLog.md new file mode 100644 index 000000000..32a48a7a1 --- /dev/null +++ b/vendor/phpunit/php-text-template/ChangeLog.md @@ -0,0 +1,43 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [2.0.4] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Template\Exception` now correctly extends `\Throwable` + +## [2.0.3] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [2.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [2.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [2.0.0] - 2020-02-07 + +### Changed + +* The `Text_Template` class was renamed to `SebastianBergmann\Template\Template` + +### Removed + +* Removed support for PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2 + +[2.0.4]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/sebastianbergmann/php-text-template/compare/1.2.1...2.0.0 diff --git a/vendor/phpunit/php-text-template/LICENSE b/vendor/phpunit/php-text-template/LICENSE index 9f9a32d9b..6db5566c8 100644 --- a/vendor/phpunit/php-text-template/LICENSE +++ b/vendor/phpunit/php-text-template/LICENSE @@ -1,6 +1,6 @@ -Text_Template +phpunit/php-text-template -Copyright (c) 2009-2015, Sebastian Bergmann . +Copyright (c) 2009-2020, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/phpunit/php-text-template/README.md b/vendor/phpunit/php-text-template/README.md index ec8f59360..b28659354 100644 --- a/vendor/phpunit/php-text-template/README.md +++ b/vendor/phpunit/php-text-template/README.md @@ -2,13 +2,11 @@ ## Installation -## Installation +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): -To add this package as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-text-template` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Text_Template: + composer require phpunit/php-text-template - { - "require": { - "phpunit/php-text-template": "~1.2" - } - } +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-text-template diff --git a/vendor/phpunit/php-text-template/composer.json b/vendor/phpunit/php-text-template/composer.json index a5779c835..a51b34b95 100644 --- a/vendor/phpunit/php-text-template/composer.json +++ b/vendor/phpunit/php-text-template/composer.json @@ -17,13 +17,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues" }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ "src/" ] + }, + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } } } - diff --git a/vendor/phpunit/php-text-template/src/Template.php b/vendor/phpunit/php-text-template/src/Template.php index 9eb39ad5d..25e29ea97 100644 --- a/vendor/phpunit/php-text-template/src/Template.php +++ b/vendor/phpunit/php-text-template/src/Template.php @@ -1,85 +1,76 @@ - * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ +namespace SebastianBergmann\Template; -/** - * A simple template engine. - * - * @since Class available since Release 1.0.0 - */ -class Text_Template +use function array_merge; +use function file_exists; +use function file_get_contents; +use function file_put_contents; +use function sprintf; +use function str_replace; + +final class Template { /** * @var string */ - protected $template = ''; + private $template = ''; /** * @var string */ - protected $openDelimiter = '{'; + private $openDelimiter; /** * @var string */ - protected $closeDelimiter = '}'; + private $closeDelimiter; /** * @var array */ - protected $values = array(); + private $values = []; /** - * Constructor. - * - * @param string $file * @throws InvalidArgumentException */ - public function __construct($file = '', $openDelimiter = '{', $closeDelimiter = '}') + public function __construct(string $file = '', string $openDelimiter = '{', string $closeDelimiter = '}') { $this->setFile($file); + $this->openDelimiter = $openDelimiter; $this->closeDelimiter = $closeDelimiter; } /** - * Sets the template file. - * - * @param string $file * @throws InvalidArgumentException */ - public function setFile($file) + public function setFile(string $file): void { $distFile = $file . '.dist'; if (file_exists($file)) { $this->template = file_get_contents($file); - } - - else if (file_exists($distFile)) { + } elseif (file_exists($distFile)) { $this->template = file_get_contents($distFile); - } - - else { + } else { throw new InvalidArgumentException( - 'Template file could not be loaded.' + sprintf( + 'Failed to load template "%s"', + $file + ) ); } } - /** - * Sets one or more template variables. - * - * @param array $values - * @param bool $merge - */ - public function setVar(array $values, $merge = TRUE) + public function setVar(array $values, bool $merge = true): void { if (!$merge || empty($this->values)) { $this->values = $values; @@ -88,14 +79,9 @@ class Text_Template } } - /** - * Renders the template and returns the result. - * - * @return string - */ - public function render() + public function render(): string { - $keys = array(); + $keys = []; foreach ($this->values as $key => $value) { $keys[] = $this->openDelimiter . $key . $this->closeDelimiter; @@ -105,31 +91,17 @@ class Text_Template } /** - * Renders the template and writes the result to a file. - * - * @param string $target + * @codeCoverageIgnore */ - public function renderTo($target) + public function renderTo(string $target): void { - $fp = @fopen($target, 'wt'); - - if ($fp) { - fwrite($fp, $this->render()); - fclose($fp); - } else { - $error = error_get_last(); - + if (!file_put_contents($target, $this->render())) { throw new RuntimeException( - sprintf( - 'Could not write to %s: %s', - $target, - substr( - $error['message'], - strpos($error['message'], ':') + 2 + sprintf( + 'Writing rendered result to "%s" failed', + $target ) - ) ); } } } - diff --git a/vendor/phpunit/php-text-template/src/exceptions/Exception.php b/vendor/phpunit/php-text-template/src/exceptions/Exception.php new file mode 100644 index 000000000..d7dc5cbea --- /dev/null +++ b/vendor/phpunit/php-text-template/src/exceptions/Exception.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Template; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php b/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php new file mode 100644 index 000000000..10e1cd11f --- /dev/null +++ b/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php @@ -0,0 +1,14 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Template; + +final class InvalidArgumentException extends \InvalidArgumentException implements Exception +{ +} diff --git a/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php b/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php new file mode 100644 index 000000000..131498e61 --- /dev/null +++ b/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Template; + +use InvalidArgumentException; + +final class RuntimeException extends InvalidArgumentException implements Exception +{ +} diff --git a/vendor/phpunit/php-timer/.gitattributes b/vendor/phpunit/php-timer/.gitattributes deleted file mode 100644 index 461090b7e..000000000 --- a/vendor/phpunit/php-timer/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/phpunit/php-timer/.github/FUNDING.yml b/vendor/phpunit/php-timer/.github/FUNDING.yml deleted file mode 100644 index b19ea81a0..000000000 --- a/vendor/phpunit/php-timer/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -patreon: s_bergmann diff --git a/vendor/phpunit/php-timer/.github/stale.yml b/vendor/phpunit/php-timer/.github/stale.yml deleted file mode 100644 index 4eadca327..000000000 --- a/vendor/phpunit/php-timer/.github/stale.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - enhancement - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had activity within the last 60 days. It will be closed after 7 days if no further activity occurs. Thank you for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This issue has been automatically closed because it has not had activity since it was marked as stale. Thank you for your contributions. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - diff --git a/vendor/phpunit/php-timer/.gitignore b/vendor/phpunit/php-timer/.gitignore deleted file mode 100644 index 953d2a219..000000000 --- a/vendor/phpunit/php-timer/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/.idea -/.php_cs.cache -/vendor -/composer.lock - diff --git a/vendor/phpunit/php-timer/.php_cs.dist b/vendor/phpunit/php-timer/.php_cs.dist deleted file mode 100644 index c4422644c..000000000 --- a/vendor/phpunit/php-timer/.php_cs.dist +++ /dev/null @@ -1,197 +0,0 @@ - - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'align_multiline_comment' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'is_null' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'new_with_braces' => false, - 'no_alias_functions' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_before_namespace' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => ['groups' => ['simple', 'meta']], - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_assignment' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'semicolon_after_instruction' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => [ - 'elements' => [ - 'const', - 'method', - 'property', - ], - ], - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/phpunit/php-timer/.psalm/baseline.xml b/vendor/phpunit/php-timer/.psalm/baseline.xml new file mode 100644 index 000000000..77e688e07 --- /dev/null +++ b/vendor/phpunit/php-timer/.psalm/baseline.xml @@ -0,0 +1,2 @@ + + diff --git a/vendor/phpunit/php-timer/.psalm/config.xml b/vendor/phpunit/php-timer/.psalm/config.xml new file mode 100644 index 000000000..15abef058 --- /dev/null +++ b/vendor/phpunit/php-timer/.psalm/config.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/vendor/phpunit/php-timer/.travis.yml b/vendor/phpunit/php-timer/.travis.yml deleted file mode 100644 index a217292fd..000000000 --- a/vendor/phpunit/php-timer/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: php - -php: - - 7.1 - - 7.2 - - 7.3 - - 7.4snapshot - -before_install: - - composer self-update - - composer clear-cache - -install: - - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest - -script: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false diff --git a/vendor/phpunit/php-timer/ChangeLog.md b/vendor/phpunit/php-timer/ChangeLog.md index 378d4539f..34ef7d1d7 100644 --- a/vendor/phpunit/php-timer/ChangeLog.md +++ b/vendor/phpunit/php-timer/ChangeLog.md @@ -2,17 +2,102 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [2.1.3] - 2020-11-30 +## [5.0.3] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Timer\Exception` now correctly extends `\Throwable` + +## [5.0.2] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [5.0.1] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [5.0.0] - 2020-06-07 + +### Changed + +* Parameter type for `SebastianBergmann\Timer\Duration::fromMicroseconds()` was changed from `int` to `float` +* Parameter type for `SebastianBergmann\Timer\Duration::fromNanoseconds()` was changed from `int` to `float` +* Return type for `SebastianBergmann\Timer\Duration::asNanoseconds()` was changed from `int` to `float` + +### Fixed + +* [#31](https://github.com/sebastianbergmann/php-timer/issues/31): Type Error on 32-bit systems (where `hrtime()` returns `float` instead of `int`) + +## [4.0.0] - 2020-06-01 + +### Added + +* Introduced `Duration` value object for encapsulating a duration with nanosecond granularity +* Introduced `ResourceUsageFormatter` object for formatting resource usage with option to explicitly pass a duration (instead of looking at the unreliable `$_SERVER['REQUEST_TIME_FLOAT']` variable) + +### Changed + +* The methods of `Timer` are no longer static +* `Timer::stop()` now returns a `Duration` value object + +### Removed + +* Functionality that is now implemented in `Duration` and `ResourceUsageFormatter` has been removed from `Timer` + +## [3.1.4] - 2020-04-20 + +### Changed + +* `Timer::timeSinceStartOfRequest()` no longer tries `$_SERVER['REQUEST_TIME']` when `$_SERVER['REQUEST_TIME_FLOAT']` is not available (`$_SERVER['REQUEST_TIME_FLOAT']` was added in PHP 5.4 and this library requires PHP 7.3) +* Improved exception messages when `$_SERVER['REQUEST_TIME_FLOAT']` is not set or is not of type `float` + +### Changed + +## [3.1.3] - 2020-04-20 + +### Changed + +* `Timer::timeSinceStartOfRequest()` now raises an exception if `$_SERVER['REQUEST_TIME_FLOAT']` does not contain a `float` (or `$_SERVER['REQUEST_TIME']` does not contain an `int`) + +## [3.1.2] - 2020-04-17 + +### Changed + +* Improved the fix for [#30](https://github.com/sebastianbergmann/php-timer/issues/30) and restored usage of `hrtime()` + +## [3.1.1] - 2020-04-17 + +### Fixed + +* [#30](https://github.com/sebastianbergmann/php-timer/issues/30): Resolution of time returned by `Timer::stop()` is different than before (this reverts using `hrtime()` instead of `microtime()`) + +## [3.1.0] - 2020-04-17 + +### Added + +* `Timer::secondsToShortTimeString()` as alternative to `Timer::secondsToTimeString()` + +### Changed + +* `Timer::start()` and `Timer::stop()` now use `hrtime()` (high resolution monotonic timer) instead of `microtime()` +* `Timer::timeSinceStartOfRequest()` now uses `Timer::secondsToShortTimeString()` for time formatting +* Improved formatting of `Timer::secondsToTimeString()` result + +## [3.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 ## [2.1.2] - 2019-06-07 ### Fixed -* Fixed [#21](https://github.com/sebastianbergmann/php-timer/pull/3352): Formatting of memory consumption does not work on 32bit systems +* [#21](https://github.com/sebastianbergmann/php-timer/pull/21): Formatting of memory consumption does not work on 32bit systems ## [2.1.1] - 2019-02-20 @@ -36,8 +121,18 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * This component is no longer supported on PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, and PHP 7.0 -[2.1.3]: https://github.com/sebastianbergmann/diff/compare/2.1.2...2.1.3 -[2.1.2]: https://github.com/sebastianbergmann/diff/compare/2.1.1...2.1.2 -[2.1.1]: https://github.com/sebastianbergmann/diff/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/sebastianbergmann/diff/compare/2.0.0...2.1.0 -[2.0.0]: https://github.com/sebastianbergmann/diff/compare/1.0.9...2.0.0 +[5.0.3]: https://github.com/sebastianbergmann/php-timer/compare/5.0.2...5.0.3 +[5.0.2]: https://github.com/sebastianbergmann/php-timer/compare/5.0.1...5.0.2 +[5.0.1]: https://github.com/sebastianbergmann/php-timer/compare/5.0.0...5.0.1 +[5.0.0]: https://github.com/sebastianbergmann/php-timer/compare/4.0.0...5.0.0 +[4.0.0]: https://github.com/sebastianbergmann/php-timer/compare/3.1.4...4.0.0 +[3.1.4]: https://github.com/sebastianbergmann/php-timer/compare/3.1.3...3.1.4 +[3.1.3]: https://github.com/sebastianbergmann/php-timer/compare/3.1.2...3.1.3 +[3.1.2]: https://github.com/sebastianbergmann/php-timer/compare/3.1.1...3.1.2 +[3.1.1]: https://github.com/sebastianbergmann/php-timer/compare/3.1.0...3.1.1 +[3.1.0]: https://github.com/sebastianbergmann/php-timer/compare/3.0.0...3.1.0 +[3.0.0]: https://github.com/sebastianbergmann/php-timer/compare/2.1.2...3.0.0 +[2.1.2]: https://github.com/sebastianbergmann/php-timer/compare/2.1.1...2.1.2 +[2.1.1]: https://github.com/sebastianbergmann/php-timer/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/sebastianbergmann/php-timer/compare/2.0.0...2.1.0 +[2.0.0]: https://github.com/sebastianbergmann/php-timer/compare/1.0.9...2.0.0 diff --git a/vendor/phpunit/php-timer/LICENSE b/vendor/phpunit/php-timer/LICENSE index a4eb9446b..4193d8ae6 100644 --- a/vendor/phpunit/php-timer/LICENSE +++ b/vendor/phpunit/php-timer/LICENSE @@ -1,6 +1,6 @@ phpunit/php-timer -Copyright (c) 2010-2019, Sebastian Bergmann . +Copyright (c) 2010-2020, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/phpunit/php-timer/README.md b/vendor/phpunit/php-timer/README.md index 61725c20b..a7d1e70de 100644 --- a/vendor/phpunit/php-timer/README.md +++ b/vendor/phpunit/php-timer/README.md @@ -1,49 +1,104 @@ -[![Build Status](https://travis-ci.org/sebastianbergmann/php-timer.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-timer) - # phpunit/php-timer +[![CI Status](https://github.com/sebastianbergmann/php-timer/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-timer/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-timer/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-timer) + Utility class for timing things, factored out of PHPUnit into a stand-alone component. ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require phpunit/php-timer +``` +composer require phpunit/php-timer +``` 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-timer +``` +composer require --dev phpunit/php-timer +``` ## Usage ### Basic Timing ```php +require __DIR__ . '/vendor/autoload.php'; + use SebastianBergmann\Timer\Timer; -Timer::start(); +$timer = new Timer; -// ... +$timer->start(); -$time = Timer::stop(); -var_dump($time); +foreach (\range(0, 100000) as $i) { + // ... +} -print Timer::secondsToTimeString($time); +$duration = $timer->stop(); + +var_dump(get_class($duration)); +var_dump($duration->asString()); +var_dump($duration->asSeconds()); +var_dump($duration->asMilliseconds()); +var_dump($duration->asMicroseconds()); +var_dump($duration->asNanoseconds()); ``` The code above yields the output below: - double(1.0967254638672E-5) - 0 ms +``` +string(32) "SebastianBergmann\Timer\Duration" +string(9) "00:00.002" +float(0.002851062) +float(2.851062) +float(2851.062) +int(2851062) +``` -### Resource Consumption Since PHP Startup +### Resource Consumption + +#### Explicit duration ```php +require __DIR__ . '/vendor/autoload.php'; + +use SebastianBergmann\Timer\ResourceUsageFormatter; use SebastianBergmann\Timer\Timer; -print Timer::resourceUsage(); +$timer = new Timer; +$timer->start(); + +foreach (\range(0, 100000) as $i) { + // ... +} + +print (new ResourceUsageFormatter)->resourceUsage($timer->stop()); ``` The code above yields the output below: - Time: 0 ms, Memory: 0.50MB +``` +Time: 00:00.002, Memory: 6.00 MB +``` + +#### Duration since PHP Startup (using unreliable `$_SERVER['REQUEST_TIME_FLOAT']`) + +```php +require __DIR__ . '/vendor/autoload.php'; + +use SebastianBergmann\Timer\ResourceUsageFormatter; + +foreach (\range(0, 100000) as $i) { + // ... +} + +print (new ResourceUsageFormatter)->resourceUsageSinceStartOfRequest(); +``` + +The code above yields the output below: + +``` +Time: 00:00.002, Memory: 6.00 MB +``` diff --git a/vendor/phpunit/php-timer/build.xml b/vendor/phpunit/php-timer/build.xml deleted file mode 100644 index b8d325661..000000000 --- a/vendor/phpunit/php-timer/build.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/phpunit/php-timer/composer.json b/vendor/phpunit/php-timer/composer.json index 340d944b3..001701c24 100644 --- a/vendor/phpunit/php-timer/composer.json +++ b/vendor/phpunit/php-timer/composer.json @@ -19,12 +19,15 @@ }, "prefer-stable": true, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "config": { + "platform": { + "php": "7.3.0" + }, "optimize-autoloader": true, "sort-packages": true }, @@ -35,7 +38,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } } } diff --git a/vendor/phpunit/php-timer/phpunit.xml b/vendor/phpunit/php-timer/phpunit.xml deleted file mode 100644 index 28a95de47..000000000 --- a/vendor/phpunit/php-timer/phpunit.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - tests - - - - - src - - - diff --git a/vendor/phpunit/php-timer/src/Duration.php b/vendor/phpunit/php-timer/src/Duration.php new file mode 100644 index 000000000..e52bf018f --- /dev/null +++ b/vendor/phpunit/php-timer/src/Duration.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Timer; + +use function floor; +use function sprintf; + +/** + * @psalm-immutable + */ +final class Duration +{ + /** + * @var float + */ + private $nanoseconds; + + /** + * @var int + */ + private $hours; + + /** + * @var int + */ + private $minutes; + + /** + * @var int + */ + private $seconds; + + /** + * @var int + */ + private $milliseconds; + + public static function fromMicroseconds(float $microseconds): self + { + return new self($microseconds * 1000); + } + + public static function fromNanoseconds(float $nanoseconds): self + { + return new self($nanoseconds); + } + + private function __construct(float $nanoseconds) + { + $this->nanoseconds = $nanoseconds; + $timeInMilliseconds = $nanoseconds / 1000000; + $hours = floor($timeInMilliseconds / 60 / 60 / 1000); + $hoursInMilliseconds = $hours * 60 * 60 * 1000; + $minutes = floor($timeInMilliseconds / 60 / 1000) % 60; + $minutesInMilliseconds = $minutes * 60 * 1000; + $seconds = floor(($timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1000); + $secondsInMilliseconds = $seconds * 1000; + $milliseconds = $timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds - $secondsInMilliseconds; + $this->hours = (int) $hours; + $this->minutes = $minutes; + $this->seconds = (int) $seconds; + $this->milliseconds = (int) $milliseconds; + } + + public function asNanoseconds(): float + { + return $this->nanoseconds; + } + + public function asMicroseconds(): float + { + return $this->nanoseconds / 1000; + } + + public function asMilliseconds(): float + { + return $this->nanoseconds / 1000000; + } + + public function asSeconds(): float + { + return $this->nanoseconds / 1000000000; + } + + public function asString(): string + { + $result = ''; + + if ($this->hours > 0) { + $result = sprintf('%02d', $this->hours) . ':'; + } + + $result .= sprintf('%02d', $this->minutes) . ':'; + $result .= sprintf('%02d', $this->seconds); + + if ($this->milliseconds > 0) { + $result .= '.' . sprintf('%03d', $this->milliseconds); + } + + return $result; + } +} diff --git a/vendor/phpunit/php-timer/src/Exception.php b/vendor/phpunit/php-timer/src/Exception.php deleted file mode 100644 index 7f9a26b20..000000000 --- a/vendor/phpunit/php-timer/src/Exception.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Timer; - -interface Exception -{ -} diff --git a/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php b/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php new file mode 100644 index 000000000..ad7926277 --- /dev/null +++ b/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Timer; + +use function is_float; +use function memory_get_peak_usage; +use function microtime; +use function sprintf; + +final class ResourceUsageFormatter +{ + /** + * @psalm-var array + */ + private const SIZES = [ + 'GB' => 1073741824, + 'MB' => 1048576, + 'KB' => 1024, + ]; + + public function resourceUsage(Duration $duration): string + { + return sprintf( + 'Time: %s, Memory: %s', + $duration->asString(), + $this->bytesToString(memory_get_peak_usage(true)) + ); + } + + /** + * @throws TimeSinceStartOfRequestNotAvailableException + */ + public function resourceUsageSinceStartOfRequest(): string + { + if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) { + throw new TimeSinceStartOfRequestNotAvailableException( + 'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not available' + ); + } + + if (!is_float($_SERVER['REQUEST_TIME_FLOAT'])) { + throw new TimeSinceStartOfRequestNotAvailableException( + 'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not of type float' + ); + } + + return $this->resourceUsage( + Duration::fromMicroseconds( + (1000000 * (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'])) + ) + ); + } + + private function bytesToString(int $bytes): string + { + foreach (self::SIZES as $unit => $value) { + if ($bytes >= $value) { + return sprintf('%.2f %s', $bytes >= 1024 ? $bytes / $value : $bytes, $unit); + } + } + + // @codeCoverageIgnoreStart + return $bytes . ' byte' . ($bytes !== 1 ? 's' : ''); + // @codeCoverageIgnoreEnd + } +} diff --git a/vendor/phpunit/php-timer/src/RuntimeException.php b/vendor/phpunit/php-timer/src/RuntimeException.php deleted file mode 100644 index aff06fa30..000000000 --- a/vendor/phpunit/php-timer/src/RuntimeException.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Timer; - -final class RuntimeException extends \RuntimeException implements Exception -{ -} diff --git a/vendor/phpunit/php-timer/src/Timer.php b/vendor/phpunit/php-timer/src/Timer.php index 378ff7249..0917109be 100644 --- a/vendor/phpunit/php-timer/src/Timer.php +++ b/vendor/phpunit/php-timer/src/Timer.php @@ -9,92 +9,32 @@ */ namespace SebastianBergmann\Timer; +use function array_pop; +use function hrtime; + final class Timer { /** - * @var int[] + * @psalm-var list */ - private static $sizes = [ - 'GB' => 1073741824, - 'MB' => 1048576, - 'KB' => 1024, - ]; + private $startTimes = []; - /** - * @var int[] - */ - private static $times = [ - 'hour' => 3600000, - 'minute' => 60000, - 'second' => 1000, - ]; - - /** - * @var float[] - */ - private static $startTimes = []; - - public static function start(): void + public function start(): void { - self::$startTimes[] = \microtime(true); + $this->startTimes[] = (float) hrtime(true); } - public static function stop(): float + /** + * @throws NoActiveTimerException + */ + public function stop(): Duration { - return \microtime(true) - \array_pop(self::$startTimes); - } - - public static function bytesToString(float $bytes): string - { - foreach (self::$sizes as $unit => $value) { - if ($bytes >= $value) { - return \sprintf('%.2f %s', $bytes >= 1024 ? $bytes / $value : $bytes, $unit); - } + if (empty($this->startTimes)) { + throw new NoActiveTimerException( + 'Timer::start() has to be called before Timer::stop()' + ); } - return $bytes . ' byte' . ((int) $bytes !== 1 ? 's' : ''); - } - - public static function secondsToTimeString(float $time): string - { - $ms = \round($time * 1000); - - foreach (self::$times as $unit => $value) { - if ($ms >= $value) { - $time = \floor($ms / $value * 100.0) / 100.0; - - return $time . ' ' . ($time == 1 ? $unit : $unit . 's'); - } - } - - return $ms . ' ms'; - } - - /** - * @throws RuntimeException - */ - public static function timeSinceStartOfRequest(): string - { - if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { - $startOfRequest = $_SERVER['REQUEST_TIME_FLOAT']; - } elseif (isset($_SERVER['REQUEST_TIME'])) { - $startOfRequest = $_SERVER['REQUEST_TIME']; - } else { - throw new RuntimeException('Cannot determine time at which the request started'); - } - - return self::secondsToTimeString(\microtime(true) - $startOfRequest); - } - - /** - * @throws RuntimeException - */ - public static function resourceUsage(): string - { - return \sprintf( - 'Time: %s, Memory: %s', - self::timeSinceStartOfRequest(), - self::bytesToString(\memory_get_peak_usage(true)) - ); + return Duration::fromNanoseconds((float) hrtime(true) - array_pop($this->startTimes)); } } diff --git a/vendor/phpunit/php-timer/src/exceptions/Exception.php b/vendor/phpunit/php-timer/src/exceptions/Exception.php new file mode 100644 index 000000000..996da0860 --- /dev/null +++ b/vendor/phpunit/php-timer/src/exceptions/Exception.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Timer; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php b/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php new file mode 100644 index 000000000..40fe45e86 --- /dev/null +++ b/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Timer; + +use LogicException; + +final class NoActiveTimerException extends LogicException implements Exception +{ +} diff --git a/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php b/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php new file mode 100644 index 000000000..a2d94ce80 --- /dev/null +++ b/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Timer; + +use RuntimeException; + +final class TimeSinceStartOfRequestNotAvailableException extends RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/php-timer/tests/TimerTest.php b/vendor/phpunit/php-timer/tests/TimerTest.php deleted file mode 100644 index 93cc4749d..000000000 --- a/vendor/phpunit/php-timer/tests/TimerTest.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Timer; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Timer\Timer - */ -final class TimerTest extends TestCase -{ - public function testCanBeStartedAndStopped(): void - { - $this->assertIsFloat(Timer::stop()); - } - - public function testCanFormatTimeSinceStartOfRequest(): void - { - $this->assertStringMatchesFormat('%f %s', Timer::timeSinceStartOfRequest()); - } - - /** - * @backupGlobals enabled - */ - public function testCanFormatSinceStartOfRequestWhenRequestTimeIsNotAvailableAsFloat(): void - { - if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { - unset($_SERVER['REQUEST_TIME_FLOAT']); - } - - $this->assertStringMatchesFormat('%f %s', Timer::timeSinceStartOfRequest()); - } - - /** - * @backupGlobals enabled - */ - public function testCannotFormatTimeSinceStartOfRequestWhenRequestTimeIsNotAvailable(): void - { - if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { - unset($_SERVER['REQUEST_TIME_FLOAT']); - } - - if (isset($_SERVER['REQUEST_TIME'])) { - unset($_SERVER['REQUEST_TIME']); - } - - $this->expectException(RuntimeException::class); - - Timer::timeSinceStartOfRequest(); - } - - public function testCanFormatResourceUsage(): void - { - $this->assertStringMatchesFormat('Time: %s, Memory: %f %s', Timer::resourceUsage()); - } - - /** - * @dataProvider secondsProvider - */ - public function testCanFormatSecondsAsString(string $string, float $seconds): void - { - $this->assertEquals($string, Timer::secondsToTimeString($seconds)); - } - - public function secondsProvider(): array - { - return [ - ['0 ms', 0], - ['1 ms', .001], - ['10 ms', .01], - ['100 ms', .1], - ['999 ms', .999], - ['1 second', .9999], - ['1 second', 1], - ['2 seconds', 2], - ['59.9 seconds', 59.9], - ['59.99 seconds', 59.99], - ['59.99 seconds', 59.999], - ['1 minute', 59.9999], - ['59 seconds', 59.001], - ['59.01 seconds', 59.01], - ['1 minute', 60], - ['1.01 minutes', 61], - ['2 minutes', 120], - ['2.01 minutes', 121], - ['59.99 minutes', 3599.9], - ['59.99 minutes', 3599.99], - ['59.99 minutes', 3599.999], - ['1 hour', 3599.9999], - ['59.98 minutes', 3599.001], - ['59.98 minutes', 3599.01], - ['1 hour', 3600], - ['1 hour', 3601], - ['1 hour', 3601.9], - ['1 hour', 3601.99], - ['1 hour', 3601.999], - ['1 hour', 3601.9999], - ['1.01 hours', 3659.9999], - ['1.01 hours', 3659.001], - ['1.01 hours', 3659.01], - ['2 hours', 7199.9999], - ]; - } - - /** - * @dataProvider bytesProvider - */ - public function testCanFormatBytesAsString(string $string, float $bytes): void - { - $this->assertEquals($string, Timer::bytesToString($bytes)); - } - - public function bytesProvider(): array - { - return [ - ['0 bytes', 0], - ['1 byte', 1], - ['1023 bytes', 1023], - ['1.00 KB', 1024], - ['1.50 KB', 1.5 * 1024], - ['2.00 MB', 2 * 1048576], - ['2.50 MB', 2.5 * 1048576], - ['3.00 GB', 3 * 1073741824], - ['3.50 GB', 3.5 * 1073741824], - ]; - } -} diff --git a/vendor/phpunit/php-token-stream/.gitattributes b/vendor/phpunit/php-token-stream/.gitattributes deleted file mode 100644 index a88b8c68e..000000000 --- a/vendor/phpunit/php-token-stream/.gitattributes +++ /dev/null @@ -1,12 +0,0 @@ -/.github export-ignore -/.phive export-ignore -/.php_cs.dist export-ignore -/.psalm export-ignore -/bin export-ignore -/build.xml export-ignore -/phpunit.xml export-ignore -/tests export-ignore -/tools export-ignore -/tools/* binary - -*.php diff=php diff --git a/vendor/phpunit/php-token-stream/.gitignore b/vendor/phpunit/php-token-stream/.gitignore deleted file mode 100644 index 93a0be47b..000000000 --- a/vendor/phpunit/php-token-stream/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/.idea -/.php_cs -/.php_cs.cache -/.phpunit.result.cache -/.psalm/cache -/composer.lock -/vendor diff --git a/vendor/phpunit/php-token-stream/ChangeLog.md b/vendor/phpunit/php-token-stream/ChangeLog.md deleted file mode 100644 index 4a93f524b..000000000 --- a/vendor/phpunit/php-token-stream/ChangeLog.md +++ /dev/null @@ -1,92 +0,0 @@ -# Change Log - -All notable changes to `sebastianbergmann/php-token-stream` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [4.0.4] - 2020-08-04 - -### Added - -* Support for `NAME_FULLY_QUALIFIED`, `NAME_QUALIFIED`, and `NAME_RELATIVE` tokens - -## [4.0.3] - 2020-06-27 - -### Added - -* This component is now supported on PHP 8 - -## [4.0.2] - 2020-06-16 - -### Fixed - -* Fixed backward compatibility breaks introduced in version 4.0.1 - -## [4.0.1] - 2020-05-06 - -### Fixed - -* [#93](https://github.com/sebastianbergmann/php-token-stream/issues/93): Class with method that uses anonymous class is not processed correctly - -## [4.0.0] - 2020-02-07 - -### Removed - -* This component is no longer supported PHP 7.1 and PHP 7.2 - -## [3.1.1] - 2019-09-17 - -### Fixed - -* [#84](https://github.com/sebastianbergmann/php-token-stream/issues/84): Methods named `class` are not handled correctly - -## [3.1.0] - 2019-07-25 - -### Added - -* Added support for `FN` and `COALESCE_EQUAL` tokens introduced in PHP 7.4 - -## [3.0.2] - 2019-07-08 - -### Changed - -* [#82](https://github.com/sebastianbergmann/php-token-stream/issues/82): Make sure this component works when its classes are prefixed using php-scoper - -## [3.0.1] - 2018-10-30 - -### Fixed - -* [#78](https://github.com/sebastianbergmann/php-token-stream/pull/78): `getEndTokenId()` does not handle string-dollar (`"${var}"`) interpolation - -## [3.0.0] - 2018-02-01 - -### Removed - -* [#71](https://github.com/sebastianbergmann/php-token-stream/issues/71): Remove code specific to Hack language constructs -* [#72](https://github.com/sebastianbergmann/php-token-stream/issues/72): Drop support for PHP 7.0 - -## [2.0.2] - 2017-11-27 - -### Fixed - -* [#69](https://github.com/sebastianbergmann/php-token-stream/issues/69): `PHP_Token_USE_FUNCTION` does not serialize correctly - -## [2.0.1] - 2017-08-20 - -### Fixed - -* [#68](https://github.com/sebastianbergmann/php-token-stream/issues/68): Method with name `empty` wrongly recognized as anonymous function - -## [2.0.0] - 2017-08-03 - -[4.0.4]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.3...4.0.4 -[4.0.3]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/3.1.1...4.0.0 -[3.1.1]: https://github.com/sebastianbergmann/php-token-stream/compare/3.1.0...3.1.1 -[3.1.0]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.2...3.1.0 -[3.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0...3.0.0 -[2.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/1.4.11...2.0.0 diff --git a/vendor/phpunit/php-token-stream/LICENSE b/vendor/phpunit/php-token-stream/LICENSE deleted file mode 100644 index a6d0c8c4f..000000000 --- a/vendor/phpunit/php-token-stream/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -php-token-stream - -Copyright (c) 2009-2020, 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-token-stream/README.md b/vendor/phpunit/php-token-stream/README.md deleted file mode 100644 index 162de8d19..000000000 --- a/vendor/phpunit/php-token-stream/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# phpunit/php-token-stream - -[![CI Status](https://github.com/sebastianbergmann/php-token-stream/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-token-stream/actions) -[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-token-stream/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-token-stream) - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - -``` -composer require phpunit/php-token-stream -``` - -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-token-stream -``` diff --git a/vendor/phpunit/php-token-stream/composer.json b/vendor/phpunit/php-token-stream/composer.json deleted file mode 100644 index e0d0b4de7..000000000 --- a/vendor/phpunit/php-token-stream/composer.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "phpunit/php-token-stream", - "description": "Wrapper around PHP's tokenizer extension.", - "type": "library", - "keywords": ["tokenizer"], - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues" - }, - "prefer-stable": true, - "require": { - "php": "^7.3 || ^8.0", - "ext-tokenizer": "*" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "config": { - "platform": { - "php": "7.3.0" - }, - "optimize-autoloader": true, - "sort-packages": true - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - } -} diff --git a/vendor/phpunit/php-token-stream/src/Abstract.php b/vendor/phpunit/php-token-stream/src/Abstract.php deleted file mode 100644 index 7bbb555d3..000000000 --- a/vendor/phpunit/php-token-stream/src/Abstract.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ABSTRACT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Ampersand.php b/vendor/phpunit/php-token-stream/src/Ampersand.php deleted file mode 100644 index 3996f3446..000000000 --- a/vendor/phpunit/php-token-stream/src/Ampersand.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_AMPERSAND extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/AndEqual.php b/vendor/phpunit/php-token-stream/src/AndEqual.php deleted file mode 100644 index 9984442a6..000000000 --- a/vendor/phpunit/php-token-stream/src/AndEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_AND_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Array.php b/vendor/phpunit/php-token-stream/src/Array.php deleted file mode 100644 index 72041e944..000000000 --- a/vendor/phpunit/php-token-stream/src/Array.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ARRAY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ArrayCast.php b/vendor/phpunit/php-token-stream/src/ArrayCast.php deleted file mode 100644 index 9d113db52..000000000 --- a/vendor/phpunit/php-token-stream/src/ArrayCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ARRAY_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/As.php b/vendor/phpunit/php-token-stream/src/As.php deleted file mode 100644 index 286578e46..000000000 --- a/vendor/phpunit/php-token-stream/src/As.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_AS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/At.php b/vendor/phpunit/php-token-stream/src/At.php deleted file mode 100644 index d8d246857..000000000 --- a/vendor/phpunit/php-token-stream/src/At.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_AT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Backtick.php b/vendor/phpunit/php-token-stream/src/Backtick.php deleted file mode 100644 index 3d8b55b7f..000000000 --- a/vendor/phpunit/php-token-stream/src/Backtick.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BACKTICK extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/BadCharacter.php b/vendor/phpunit/php-token-stream/src/BadCharacter.php deleted file mode 100644 index dfc7a40ff..000000000 --- a/vendor/phpunit/php-token-stream/src/BadCharacter.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BAD_CHARACTER extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/BoolCast.php b/vendor/phpunit/php-token-stream/src/BoolCast.php deleted file mode 100644 index 201cfeab6..000000000 --- a/vendor/phpunit/php-token-stream/src/BoolCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BOOL_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/BooleanAnd.php b/vendor/phpunit/php-token-stream/src/BooleanAnd.php deleted file mode 100644 index 03f983311..000000000 --- a/vendor/phpunit/php-token-stream/src/BooleanAnd.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BOOLEAN_AND extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/BooleanOr.php b/vendor/phpunit/php-token-stream/src/BooleanOr.php deleted file mode 100644 index 0f339245b..000000000 --- a/vendor/phpunit/php-token-stream/src/BooleanOr.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BOOLEAN_OR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CachingFactory.php b/vendor/phpunit/php-token-stream/src/CachingFactory.php deleted file mode 100644 index c557a84f3..000000000 --- a/vendor/phpunit/php-token-stream/src/CachingFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_Stream_CachingFactory -{ - /** - * @var array - */ - protected static $cache = []; - - /** - * @param string $filename - * - * @return PHP_Token_Stream - */ - public static function get($filename) - { - if (!isset(self::$cache[$filename])) { - self::$cache[$filename] = new PHP_Token_Stream($filename); - } - - return self::$cache[$filename]; - } - - /** - * @param string $filename - */ - public static function clear($filename = null)/*: void*/ - { - if (\is_string($filename)) { - unset(self::$cache[$filename]); - } else { - self::$cache = []; - } - } -} diff --git a/vendor/phpunit/php-token-stream/src/Callable.php b/vendor/phpunit/php-token-stream/src/Callable.php deleted file mode 100644 index 4f5751259..000000000 --- a/vendor/phpunit/php-token-stream/src/Callable.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CALLABLE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Caret.php b/vendor/phpunit/php-token-stream/src/Caret.php deleted file mode 100644 index af453d897..000000000 --- a/vendor/phpunit/php-token-stream/src/Caret.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CARET extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Case.php b/vendor/phpunit/php-token-stream/src/Case.php deleted file mode 100644 index ab9b906db..000000000 --- a/vendor/phpunit/php-token-stream/src/Case.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CASE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Catch.php b/vendor/phpunit/php-token-stream/src/Catch.php deleted file mode 100644 index 8c244acae..000000000 --- a/vendor/phpunit/php-token-stream/src/Catch.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CATCH extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Character.php b/vendor/phpunit/php-token-stream/src/Character.php deleted file mode 100644 index eea0db099..000000000 --- a/vendor/phpunit/php-token-stream/src/Character.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CHARACTER extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Class.php b/vendor/phpunit/php-token-stream/src/Class.php deleted file mode 100644 index 09167f21c..000000000 --- a/vendor/phpunit/php-token-stream/src/Class.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLASS extends PHP_Token_INTERFACE -{ - /** - * @var bool - */ - private $anonymous = false; - - /** - * @var string - */ - private $name; - - /** - * @return string - */ - public function getName() - { - if ($this->name !== null) { - return $this->name; - } - - $next = $this->tokenStream[$this->id + 1]; - - if ($next instanceof PHP_Token_WHITESPACE) { - $next = $this->tokenStream[$this->id + 2]; - } - - if ($next instanceof PHP_Token_STRING) { - $this->name =(string) $next; - - return $this->name; - } - - if ($next instanceof PHP_Token_OPEN_CURLY || - $next instanceof PHP_Token_EXTENDS || - $next instanceof PHP_Token_IMPLEMENTS) { - $this->name = \sprintf( - 'AnonymousClass:%s#%s', - $this->getLine(), - $this->getId() - ); - - $this->anonymous = true; - - return $this->name; - } - } - - public function isAnonymous() - { - return $this->anonymous; - } -} diff --git a/vendor/phpunit/php-token-stream/src/ClassC.php b/vendor/phpunit/php-token-stream/src/ClassC.php deleted file mode 100644 index 2350c99bd..000000000 --- a/vendor/phpunit/php-token-stream/src/ClassC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLASS_C extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ClassNameConstant.php b/vendor/phpunit/php-token-stream/src/ClassNameConstant.php deleted file mode 100644 index 1b557e3c7..000000000 --- a/vendor/phpunit/php-token-stream/src/ClassNameConstant.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLASS_NAME_CONSTANT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Clone.php b/vendor/phpunit/php-token-stream/src/Clone.php deleted file mode 100644 index 24e661047..000000000 --- a/vendor/phpunit/php-token-stream/src/Clone.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLONE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CloseBracket.php b/vendor/phpunit/php-token-stream/src/CloseBracket.php deleted file mode 100644 index b86b74575..000000000 --- a/vendor/phpunit/php-token-stream/src/CloseBracket.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLOSE_BRACKET extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CloseCurly.php b/vendor/phpunit/php-token-stream/src/CloseCurly.php deleted file mode 100644 index aa86cdc4d..000000000 --- a/vendor/phpunit/php-token-stream/src/CloseCurly.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLOSE_CURLY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CloseSquare.php b/vendor/phpunit/php-token-stream/src/CloseSquare.php deleted file mode 100644 index fc819d015..000000000 --- a/vendor/phpunit/php-token-stream/src/CloseSquare.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLOSE_SQUARE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CloseTag.php b/vendor/phpunit/php-token-stream/src/CloseTag.php deleted file mode 100644 index 419510cf8..000000000 --- a/vendor/phpunit/php-token-stream/src/CloseTag.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CLOSE_TAG extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Coalesce.php b/vendor/phpunit/php-token-stream/src/Coalesce.php deleted file mode 100644 index 55b2beb4a..000000000 --- a/vendor/phpunit/php-token-stream/src/Coalesce.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_COALESCE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CoalesceEqual.php b/vendor/phpunit/php-token-stream/src/CoalesceEqual.php deleted file mode 100644 index b60096181..000000000 --- a/vendor/phpunit/php-token-stream/src/CoalesceEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_COALESCE_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Colon.php b/vendor/phpunit/php-token-stream/src/Colon.php deleted file mode 100644 index 66dd84089..000000000 --- a/vendor/phpunit/php-token-stream/src/Colon.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_COLON extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Comma.php b/vendor/phpunit/php-token-stream/src/Comma.php deleted file mode 100644 index b57ba370c..000000000 --- a/vendor/phpunit/php-token-stream/src/Comma.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_COMMA extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Comment.php b/vendor/phpunit/php-token-stream/src/Comment.php deleted file mode 100644 index c50c80b80..000000000 --- a/vendor/phpunit/php-token-stream/src/Comment.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_COMMENT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ConcatEqual.php b/vendor/phpunit/php-token-stream/src/ConcatEqual.php deleted file mode 100644 index f57c748f3..000000000 --- a/vendor/phpunit/php-token-stream/src/ConcatEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CONCAT_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Const.php b/vendor/phpunit/php-token-stream/src/Const.php deleted file mode 100644 index a5376422c..000000000 --- a/vendor/phpunit/php-token-stream/src/Const.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CONST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ConstantEncapsedString.php b/vendor/phpunit/php-token-stream/src/ConstantEncapsedString.php deleted file mode 100644 index 2a030cd3c..000000000 --- a/vendor/phpunit/php-token-stream/src/ConstantEncapsedString.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CONSTANT_ENCAPSED_STRING extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Continue.php b/vendor/phpunit/php-token-stream/src/Continue.php deleted file mode 100644 index a21c8ba10..000000000 --- a/vendor/phpunit/php-token-stream/src/Continue.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CONTINUE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/CurlyOpen.php b/vendor/phpunit/php-token-stream/src/CurlyOpen.php deleted file mode 100644 index 7c3e9bcea..000000000 --- a/vendor/phpunit/php-token-stream/src/CurlyOpen.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_CURLY_OPEN extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DNumber.php b/vendor/phpunit/php-token-stream/src/DNumber.php deleted file mode 100644 index bf5751f32..000000000 --- a/vendor/phpunit/php-token-stream/src/DNumber.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DNUMBER extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Dec.php b/vendor/phpunit/php-token-stream/src/Dec.php deleted file mode 100644 index 6f06341c4..000000000 --- a/vendor/phpunit/php-token-stream/src/Dec.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DEC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Declare.php b/vendor/phpunit/php-token-stream/src/Declare.php deleted file mode 100644 index 60dab6f88..000000000 --- a/vendor/phpunit/php-token-stream/src/Declare.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DECLARE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Default.php b/vendor/phpunit/php-token-stream/src/Default.php deleted file mode 100644 index 81f3bfd02..000000000 --- a/vendor/phpunit/php-token-stream/src/Default.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DEFAULT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Dir.php b/vendor/phpunit/php-token-stream/src/Dir.php deleted file mode 100644 index add4bf84d..000000000 --- a/vendor/phpunit/php-token-stream/src/Dir.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DIR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Div.php b/vendor/phpunit/php-token-stream/src/Div.php deleted file mode 100644 index 87e11d786..000000000 --- a/vendor/phpunit/php-token-stream/src/Div.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DIV extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DivEqual.php b/vendor/phpunit/php-token-stream/src/DivEqual.php deleted file mode 100644 index cb558a89d..000000000 --- a/vendor/phpunit/php-token-stream/src/DivEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DIV_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Do.php b/vendor/phpunit/php-token-stream/src/Do.php deleted file mode 100644 index 32ceff1c9..000000000 --- a/vendor/phpunit/php-token-stream/src/Do.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DO extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DocComment.php b/vendor/phpunit/php-token-stream/src/DocComment.php deleted file mode 100644 index 2ca6f2216..000000000 --- a/vendor/phpunit/php-token-stream/src/DocComment.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOC_COMMENT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Dollar.php b/vendor/phpunit/php-token-stream/src/Dollar.php deleted file mode 100644 index a2a8d5955..000000000 --- a/vendor/phpunit/php-token-stream/src/Dollar.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOLLAR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php b/vendor/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php deleted file mode 100644 index 030bcb29b..000000000 --- a/vendor/phpunit/php-token-stream/src/DollarOpenCurlyBraces.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOLLAR_OPEN_CURLY_BRACES extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Dot.php b/vendor/phpunit/php-token-stream/src/Dot.php deleted file mode 100644 index b50a49eed..000000000 --- a/vendor/phpunit/php-token-stream/src/Dot.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DoubleArrow.php b/vendor/phpunit/php-token-stream/src/DoubleArrow.php deleted file mode 100644 index bc2c6d06a..000000000 --- a/vendor/phpunit/php-token-stream/src/DoubleArrow.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOUBLE_ARROW extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DoubleCast.php b/vendor/phpunit/php-token-stream/src/DoubleCast.php deleted file mode 100644 index eb72f3642..000000000 --- a/vendor/phpunit/php-token-stream/src/DoubleCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOUBLE_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DoubleColon.php b/vendor/phpunit/php-token-stream/src/DoubleColon.php deleted file mode 100644 index 46ff6e7f2..000000000 --- a/vendor/phpunit/php-token-stream/src/DoubleColon.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOUBLE_COLON extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/DoubleQuotes.php b/vendor/phpunit/php-token-stream/src/DoubleQuotes.php deleted file mode 100644 index 10779806e..000000000 --- a/vendor/phpunit/php-token-stream/src/DoubleQuotes.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_DOUBLE_QUOTES extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Echo.php b/vendor/phpunit/php-token-stream/src/Echo.php deleted file mode 100644 index bfee30cff..000000000 --- a/vendor/phpunit/php-token-stream/src/Echo.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ECHO extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Ellipsis.php b/vendor/phpunit/php-token-stream/src/Ellipsis.php deleted file mode 100644 index d932cedb6..000000000 --- a/vendor/phpunit/php-token-stream/src/Ellipsis.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ELLIPSIS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Else.php b/vendor/phpunit/php-token-stream/src/Else.php deleted file mode 100644 index a3266f863..000000000 --- a/vendor/phpunit/php-token-stream/src/Else.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ELSE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Elseif.php b/vendor/phpunit/php-token-stream/src/Elseif.php deleted file mode 100644 index 76a7d4e7c..000000000 --- a/vendor/phpunit/php-token-stream/src/Elseif.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ELSEIF extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Empty.php b/vendor/phpunit/php-token-stream/src/Empty.php deleted file mode 100644 index 15f662cdb..000000000 --- a/vendor/phpunit/php-token-stream/src/Empty.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EMPTY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/EncapsedAndWhitespace.php b/vendor/phpunit/php-token-stream/src/EncapsedAndWhitespace.php deleted file mode 100644 index 5224806db..000000000 --- a/vendor/phpunit/php-token-stream/src/EncapsedAndWhitespace.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENCAPSED_AND_WHITESPACE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/EndHeredoc.php b/vendor/phpunit/php-token-stream/src/EndHeredoc.php deleted file mode 100644 index e95930cf4..000000000 --- a/vendor/phpunit/php-token-stream/src/EndHeredoc.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_END_HEREDOC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Enddeclare.php b/vendor/phpunit/php-token-stream/src/Enddeclare.php deleted file mode 100644 index dd96d7f16..000000000 --- a/vendor/phpunit/php-token-stream/src/Enddeclare.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDDECLARE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Endfor.php b/vendor/phpunit/php-token-stream/src/Endfor.php deleted file mode 100644 index a5382a273..000000000 --- a/vendor/phpunit/php-token-stream/src/Endfor.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDFOR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Endforeach.php b/vendor/phpunit/php-token-stream/src/Endforeach.php deleted file mode 100644 index d2ab78a52..000000000 --- a/vendor/phpunit/php-token-stream/src/Endforeach.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDFOREACH extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Endif.php b/vendor/phpunit/php-token-stream/src/Endif.php deleted file mode 100644 index 910eeea5c..000000000 --- a/vendor/phpunit/php-token-stream/src/Endif.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDIF extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Endswitch.php b/vendor/phpunit/php-token-stream/src/Endswitch.php deleted file mode 100644 index 0fc81462d..000000000 --- a/vendor/phpunit/php-token-stream/src/Endswitch.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDSWITCH extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Endwhile.php b/vendor/phpunit/php-token-stream/src/Endwhile.php deleted file mode 100644 index 9a289f110..000000000 --- a/vendor/phpunit/php-token-stream/src/Endwhile.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ENDWHILE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Equal.php b/vendor/phpunit/php-token-stream/src/Equal.php deleted file mode 100644 index c8ecb0b70..000000000 --- a/vendor/phpunit/php-token-stream/src/Equal.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Eval.php b/vendor/phpunit/php-token-stream/src/Eval.php deleted file mode 100644 index fb82bfd7b..000000000 --- a/vendor/phpunit/php-token-stream/src/Eval.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EVAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ExclamationMark.php b/vendor/phpunit/php-token-stream/src/ExclamationMark.php deleted file mode 100644 index 009ea238e..000000000 --- a/vendor/phpunit/php-token-stream/src/ExclamationMark.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EXCLAMATION_MARK extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Exit.php b/vendor/phpunit/php-token-stream/src/Exit.php deleted file mode 100644 index 9475887c6..000000000 --- a/vendor/phpunit/php-token-stream/src/Exit.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EXIT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Extends.php b/vendor/phpunit/php-token-stream/src/Extends.php deleted file mode 100644 index bf5116060..000000000 --- a/vendor/phpunit/php-token-stream/src/Extends.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_EXTENDS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/File.php b/vendor/phpunit/php-token-stream/src/File.php deleted file mode 100644 index a89449c3b..000000000 --- a/vendor/phpunit/php-token-stream/src/File.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FILE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Final.php b/vendor/phpunit/php-token-stream/src/Final.php deleted file mode 100644 index f1355d239..000000000 --- a/vendor/phpunit/php-token-stream/src/Final.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FINAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Finally.php b/vendor/phpunit/php-token-stream/src/Finally.php deleted file mode 100644 index 8d31fc326..000000000 --- a/vendor/phpunit/php-token-stream/src/Finally.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FINALLY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Fn.php b/vendor/phpunit/php-token-stream/src/Fn.php deleted file mode 100644 index 8c1ceecb1..000000000 --- a/vendor/phpunit/php-token-stream/src/Fn.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FN extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/For.php b/vendor/phpunit/php-token-stream/src/For.php deleted file mode 100644 index 5b7bcbf8f..000000000 --- a/vendor/phpunit/php-token-stream/src/For.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FOR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Foreach.php b/vendor/phpunit/php-token-stream/src/Foreach.php deleted file mode 100644 index 76906b0d1..000000000 --- a/vendor/phpunit/php-token-stream/src/Foreach.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FOREACH extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/FuncC.php b/vendor/phpunit/php-token-stream/src/FuncC.php deleted file mode 100644 index 853446f12..000000000 --- a/vendor/phpunit/php-token-stream/src/FuncC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FUNC_C extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Function.php b/vendor/phpunit/php-token-stream/src/Function.php deleted file mode 100644 index 8cc9eb1ad..000000000 --- a/vendor/phpunit/php-token-stream/src/Function.php +++ /dev/null @@ -1,196 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility -{ - /** - * @var array - */ - protected $arguments; - - /** - * @var int - */ - protected $ccn; - - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $signature; - - /** - * @var bool - */ - private $anonymous = false; - - /** - * @return array - */ - public function getArguments() - { - if ($this->arguments !== null) { - return $this->arguments; - } - - $this->arguments = []; - $tokens = $this->tokenStream->tokens(); - $typeDeclaration = null; - - // Search for first token inside brackets - $i = $this->id + 2; - - while (!$tokens[$i - 1] instanceof PHP_Token_OPEN_BRACKET) { - $i++; - } - - while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) { - if ($tokens[$i] instanceof PHP_Token_STRING) { - $typeDeclaration = (string) $tokens[$i]; - } elseif ($tokens[$i] instanceof PHP_Token_VARIABLE) { - $this->arguments[(string) $tokens[$i]] = $typeDeclaration; - $typeDeclaration = null; - } - - $i++; - } - - return $this->arguments; - } - - /** - * @return string - */ - public function getName() - { - if ($this->name !== null) { - return $this->name; - } - - $tokens = $this->tokenStream->tokens(); - - $i = $this->id + 1; - - if ($tokens[$i] instanceof PHP_Token_WHITESPACE) { - $i++; - } - - if ($tokens[$i] instanceof PHP_Token_AMPERSAND) { - $i++; - } - - if ($tokens[$i + 1] instanceof PHP_Token_OPEN_BRACKET) { - $this->name = (string) $tokens[$i]; - } elseif ($tokens[$i + 1] instanceof PHP_Token_WHITESPACE && $tokens[$i + 2] instanceof PHP_Token_OPEN_BRACKET) { - $this->name = (string) $tokens[$i]; - } else { - $this->anonymous = true; - - $this->name = \sprintf( - 'anonymousFunction:%s#%s', - $this->getLine(), - $this->getId() - ); - } - - if (!$this->isAnonymous()) { - for ($i = $this->id; $i; --$i) { - if ($tokens[$i] instanceof PHP_Token_NAMESPACE) { - $this->name = $tokens[$i]->getName() . '\\' . $this->name; - - break; - } - - if ($tokens[$i] instanceof PHP_Token_INTERFACE) { - break; - } - } - } - - return $this->name; - } - - /** - * @return int - */ - public function getCCN() - { - if ($this->ccn !== null) { - return $this->ccn; - } - - $this->ccn = 1; - $end = $this->getEndTokenId(); - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id; $i <= $end; $i++) { - switch (\get_class($tokens[$i])) { - case PHP_Token_IF::class: - case PHP_Token_ELSEIF::class: - case PHP_Token_FOR::class: - case PHP_Token_FOREACH::class: - case PHP_Token_WHILE::class: - case PHP_Token_CASE::class: - case PHP_Token_CATCH::class: - case PHP_Token_BOOLEAN_AND::class: - case PHP_Token_LOGICAL_AND::class: - case PHP_Token_BOOLEAN_OR::class: - case PHP_Token_LOGICAL_OR::class: - case PHP_Token_QUESTION_MARK::class: - $this->ccn++; - - break; - } - } - - return $this->ccn; - } - - /** - * @return string - */ - public function getSignature() - { - if ($this->signature !== null) { - return $this->signature; - } - - if ($this->isAnonymous()) { - $this->signature = 'anonymousFunction'; - $i = $this->id + 1; - } else { - $this->signature = ''; - $i = $this->id + 2; - } - - $tokens = $this->tokenStream->tokens(); - - while (isset($tokens[$i]) && - !$tokens[$i] instanceof PHP_Token_OPEN_CURLY && - !$tokens[$i] instanceof PHP_Token_SEMICOLON) { - $this->signature .= $tokens[$i++]; - } - - $this->signature = \trim($this->signature); - - return $this->signature; - } - - /** - * @return bool - */ - public function isAnonymous() - { - return $this->anonymous; - } -} diff --git a/vendor/phpunit/php-token-stream/src/Global.php b/vendor/phpunit/php-token-stream/src/Global.php deleted file mode 100644 index 15d34c0f9..000000000 --- a/vendor/phpunit/php-token-stream/src/Global.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_GLOBAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Goto.php b/vendor/phpunit/php-token-stream/src/Goto.php deleted file mode 100644 index 68cbce0db..000000000 --- a/vendor/phpunit/php-token-stream/src/Goto.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_GOTO extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Gt.php b/vendor/phpunit/php-token-stream/src/Gt.php deleted file mode 100644 index 1df2bc974..000000000 --- a/vendor/phpunit/php-token-stream/src/Gt.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_GT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/HaltCompiler.php b/vendor/phpunit/php-token-stream/src/HaltCompiler.php deleted file mode 100644 index 1976e9b7d..000000000 --- a/vendor/phpunit/php-token-stream/src/HaltCompiler.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_HALT_COMPILER extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/If.php b/vendor/phpunit/php-token-stream/src/If.php deleted file mode 100644 index 2f888f1ce..000000000 --- a/vendor/phpunit/php-token-stream/src/If.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IF extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Implements.php b/vendor/phpunit/php-token-stream/src/Implements.php deleted file mode 100644 index bfb035bcc..000000000 --- a/vendor/phpunit/php-token-stream/src/Implements.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IMPLEMENTS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Inc.php b/vendor/phpunit/php-token-stream/src/Inc.php deleted file mode 100644 index ca19c33ab..000000000 --- a/vendor/phpunit/php-token-stream/src/Inc.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Include.php b/vendor/phpunit/php-token-stream/src/Include.php deleted file mode 100644 index cffb378e7..000000000 --- a/vendor/phpunit/php-token-stream/src/Include.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INCLUDE extends PHP_Token_Includes -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IncludeOnce.php b/vendor/phpunit/php-token-stream/src/IncludeOnce.php deleted file mode 100644 index da28d6178..000000000 --- a/vendor/phpunit/php-token-stream/src/IncludeOnce.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INCLUDE_ONCE extends PHP_Token_Includes -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Includes.php b/vendor/phpunit/php-token-stream/src/Includes.php deleted file mode 100644 index 285dfbf65..000000000 --- a/vendor/phpunit/php-token-stream/src/Includes.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -abstract class PHP_Token_Includes extends PHP_Token -{ - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $type; - - /** - * @return string - */ - public function getName() - { - if ($this->name === null) { - $this->process(); - } - - return $this->name; - } - - /** - * @return string - */ - public function getType() - { - if ($this->type === null) { - $this->process(); - } - - return $this->type; - } - - private function process(): void - { - $tokens = $this->tokenStream->tokens(); - - if ($tokens[$this->id + 2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) { - $this->name = \trim((string) $tokens[$this->id + 2], "'\""); - $this->type = \strtolower( - \str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$this->id])) - ); - } - } -} diff --git a/vendor/phpunit/php-token-stream/src/InlineHtml.php b/vendor/phpunit/php-token-stream/src/InlineHtml.php deleted file mode 100644 index a4fc15e05..000000000 --- a/vendor/phpunit/php-token-stream/src/InlineHtml.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INLINE_HTML extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Instanceof.php b/vendor/phpunit/php-token-stream/src/Instanceof.php deleted file mode 100644 index c41dd0e60..000000000 --- a/vendor/phpunit/php-token-stream/src/Instanceof.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INSTANCEOF extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Insteadof.php b/vendor/phpunit/php-token-stream/src/Insteadof.php deleted file mode 100644 index d8c0bc470..000000000 --- a/vendor/phpunit/php-token-stream/src/Insteadof.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INSTEADOF extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IntCast.php b/vendor/phpunit/php-token-stream/src/IntCast.php deleted file mode 100644 index 2b256017c..000000000 --- a/vendor/phpunit/php-token-stream/src/IntCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INT_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Interface.php b/vendor/phpunit/php-token-stream/src/Interface.php deleted file mode 100644 index d2732f561..000000000 --- a/vendor/phpunit/php-token-stream/src/Interface.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility -{ - /** - * @var array - */ - protected $interfaces; - - /** - * @return string - */ - public function getName() - { - return (string) $this->tokenStream[$this->id + 2]; - } - - /** - * @return bool - */ - public function hasParent() - { - return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS; - } - - /** - * @return array - */ - public function getPackage() - { - $result = [ - 'namespace' => '', - 'fullPackage' => '', - 'category' => '', - 'package' => '', - 'subpackage' => '', - ]; - - $docComment = $this->getDocblock(); - $className = $this->getName(); - - for ($i = $this->id; $i; --$i) { - if ($this->tokenStream[$i] instanceof PHP_Token_NAMESPACE) { - $result['namespace'] = $this->tokenStream[$i]->getName(); - - break; - } - } - - if ($docComment === null) { - return $result; - } - - if (\preg_match('/@category[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['category'] = $matches[1]; - } - - if (\preg_match('/@package[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['package'] = $matches[1]; - $result['fullPackage'] = $matches[1]; - } - - if (\preg_match('/@subpackage[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['subpackage'] = $matches[1]; - $result['fullPackage'] .= '.' . $matches[1]; - } - - if (empty($result['fullPackage'])) { - $result['fullPackage'] = $this->arrayToName( - \explode('_', \str_replace('\\', '_', $className)), - '.' - ); - } - - return $result; - } - - /** - * @return bool|string - */ - public function getParent() - { - if (!$this->hasParent()) { - return false; - } - - $i = $this->id + 6; - $tokens = $this->tokenStream->tokens(); - $className = (string) $tokens[$i]; - - while (isset($tokens[$i + 1]) && - !$tokens[$i + 1] instanceof PHP_Token_WHITESPACE) { - $className .= (string) $tokens[++$i]; - } - - return $className; - } - - /** - * @return bool - */ - public function hasInterfaces() - { - return (isset($this->tokenStream[$this->id + 4]) && - $this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) || - (isset($this->tokenStream[$this->id + 8]) && - $this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS); - } - - /** - * @return array|bool - */ - public function getInterfaces() - { - if ($this->interfaces !== null) { - return $this->interfaces; - } - - if (!$this->hasInterfaces()) { - return $this->interfaces = false; - } - - if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) { - $i = $this->id + 3; - } else { - $i = $this->id + 7; - } - - $tokens = $this->tokenStream->tokens(); - - while (!$tokens[$i + 1] instanceof PHP_Token_OPEN_CURLY) { - $i++; - - if ($tokens[$i] instanceof PHP_Token_STRING) { - $this->interfaces[] = (string) $tokens[$i]; - } - } - - return $this->interfaces; - } - - /** - * @param string $join - * - * @return string - */ - protected function arrayToName(array $parts, $join = '\\') - { - $result = ''; - - if (\count($parts) > 1) { - \array_pop($parts); - - $result = \implode($join, $parts); - } - - return $result; - } -} diff --git a/vendor/phpunit/php-token-stream/src/IsEqual.php b/vendor/phpunit/php-token-stream/src/IsEqual.php deleted file mode 100644 index 70f00af5d..000000000 --- a/vendor/phpunit/php-token-stream/src/IsEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IsGreaterOrEqual.php b/vendor/phpunit/php-token-stream/src/IsGreaterOrEqual.php deleted file mode 100644 index 0227baf46..000000000 --- a/vendor/phpunit/php-token-stream/src/IsGreaterOrEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_GREATER_OR_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IsIdentical.php b/vendor/phpunit/php-token-stream/src/IsIdentical.php deleted file mode 100644 index 28388df5b..000000000 --- a/vendor/phpunit/php-token-stream/src/IsIdentical.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_IDENTICAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IsNotEqual.php b/vendor/phpunit/php-token-stream/src/IsNotEqual.php deleted file mode 100644 index f70f2290e..000000000 --- a/vendor/phpunit/php-token-stream/src/IsNotEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_NOT_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IsNotIdentical.php b/vendor/phpunit/php-token-stream/src/IsNotIdentical.php deleted file mode 100644 index 9fe3a71a2..000000000 --- a/vendor/phpunit/php-token-stream/src/IsNotIdentical.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_NOT_IDENTICAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/IsSmallerOrEqual.php b/vendor/phpunit/php-token-stream/src/IsSmallerOrEqual.php deleted file mode 100644 index 7ac0c2fa2..000000000 --- a/vendor/phpunit/php-token-stream/src/IsSmallerOrEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_IS_SMALLER_OR_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Isset.php b/vendor/phpunit/php-token-stream/src/Isset.php deleted file mode 100644 index 47941d643..000000000 --- a/vendor/phpunit/php-token-stream/src/Isset.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_ISSET extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Line.php b/vendor/phpunit/php-token-stream/src/Line.php deleted file mode 100644 index ffed4dbcc..000000000 --- a/vendor/phpunit/php-token-stream/src/Line.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LINE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/List.php b/vendor/phpunit/php-token-stream/src/List.php deleted file mode 100644 index 9410fc5a7..000000000 --- a/vendor/phpunit/php-token-stream/src/List.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LIST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Lnumber.php b/vendor/phpunit/php-token-stream/src/Lnumber.php deleted file mode 100644 index e996bd0f8..000000000 --- a/vendor/phpunit/php-token-stream/src/Lnumber.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LNUMBER extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/LogicalAnd.php b/vendor/phpunit/php-token-stream/src/LogicalAnd.php deleted file mode 100644 index 72beb476c..000000000 --- a/vendor/phpunit/php-token-stream/src/LogicalAnd.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LOGICAL_AND extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/LogicalOr.php b/vendor/phpunit/php-token-stream/src/LogicalOr.php deleted file mode 100644 index ec8be7030..000000000 --- a/vendor/phpunit/php-token-stream/src/LogicalOr.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LOGICAL_OR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/LogicalXor.php b/vendor/phpunit/php-token-stream/src/LogicalXor.php deleted file mode 100644 index e1e223b99..000000000 --- a/vendor/phpunit/php-token-stream/src/LogicalXor.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LOGICAL_XOR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Lt.php b/vendor/phpunit/php-token-stream/src/Lt.php deleted file mode 100644 index 288a41330..000000000 --- a/vendor/phpunit/php-token-stream/src/Lt.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_LT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/MethodC.php b/vendor/phpunit/php-token-stream/src/MethodC.php deleted file mode 100644 index 1bebf001a..000000000 --- a/vendor/phpunit/php-token-stream/src/MethodC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_METHOD_C extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Minus.php b/vendor/phpunit/php-token-stream/src/Minus.php deleted file mode 100644 index 6ca52f523..000000000 --- a/vendor/phpunit/php-token-stream/src/Minus.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_MINUS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/MinusEqual.php b/vendor/phpunit/php-token-stream/src/MinusEqual.php deleted file mode 100644 index 1bfb24c5e..000000000 --- a/vendor/phpunit/php-token-stream/src/MinusEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_MINUS_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ModEqual.php b/vendor/phpunit/php-token-stream/src/ModEqual.php deleted file mode 100644 index 28aab5863..000000000 --- a/vendor/phpunit/php-token-stream/src/ModEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_MOD_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/MulEqual.php b/vendor/phpunit/php-token-stream/src/MulEqual.php deleted file mode 100644 index 16a0d242e..000000000 --- a/vendor/phpunit/php-token-stream/src/MulEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_MUL_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Mult.php b/vendor/phpunit/php-token-stream/src/Mult.php deleted file mode 100644 index bd6daed76..000000000 --- a/vendor/phpunit/php-token-stream/src/Mult.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_MULT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NameFullyQualified.php b/vendor/phpunit/php-token-stream/src/NameFullyQualified.php deleted file mode 100644 index 744118abc..000000000 --- a/vendor/phpunit/php-token-stream/src/NameFullyQualified.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NAME_FULLY_QUALIFIED extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NameQualified.php b/vendor/phpunit/php-token-stream/src/NameQualified.php deleted file mode 100644 index a893144c0..000000000 --- a/vendor/phpunit/php-token-stream/src/NameQualified.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NAME_QUALIFIED extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NameRelative.php b/vendor/phpunit/php-token-stream/src/NameRelative.php deleted file mode 100644 index 0b358cc64..000000000 --- a/vendor/phpunit/php-token-stream/src/NameRelative.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NAME_RELATIVE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Namespace.php b/vendor/phpunit/php-token-stream/src/Namespace.php deleted file mode 100644 index 634d8ad76..000000000 --- a/vendor/phpunit/php-token-stream/src/Namespace.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NAMESPACE extends PHP_TokenWithScope -{ - /** - * @return string - */ - public function getName() - { - $tokens = $this->tokenStream->tokens(); - $namespace = (string) $tokens[$this->id + 2]; - - for ($i = $this->id + 3;; $i += 2) { - if (isset($tokens[$i]) && - $tokens[$i] instanceof PHP_Token_NS_SEPARATOR) { - $namespace .= '\\' . $tokens[$i + 1]; - } else { - break; - } - } - - return $namespace; - } -} diff --git a/vendor/phpunit/php-token-stream/src/New.php b/vendor/phpunit/php-token-stream/src/New.php deleted file mode 100644 index bd67af28b..000000000 --- a/vendor/phpunit/php-token-stream/src/New.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NEW extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NsC.php b/vendor/phpunit/php-token-stream/src/NsC.php deleted file mode 100644 index 2778ea4cd..000000000 --- a/vendor/phpunit/php-token-stream/src/NsC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NS_C extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NsSeparator.php b/vendor/phpunit/php-token-stream/src/NsSeparator.php deleted file mode 100644 index 950291ed9..000000000 --- a/vendor/phpunit/php-token-stream/src/NsSeparator.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NS_SEPARATOR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/NumString.php b/vendor/phpunit/php-token-stream/src/NumString.php deleted file mode 100644 index a073e3d06..000000000 --- a/vendor/phpunit/php-token-stream/src/NumString.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_NUM_STRING extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ObjectCast.php b/vendor/phpunit/php-token-stream/src/ObjectCast.php deleted file mode 100644 index c0ec7d5b7..000000000 --- a/vendor/phpunit/php-token-stream/src/ObjectCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OBJECT_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/ObjectOperator.php b/vendor/phpunit/php-token-stream/src/ObjectOperator.php deleted file mode 100644 index a4ca75b81..000000000 --- a/vendor/phpunit/php-token-stream/src/ObjectOperator.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OBJECT_OPERATOR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OpenBracket.php b/vendor/phpunit/php-token-stream/src/OpenBracket.php deleted file mode 100644 index 2cb93ed20..000000000 --- a/vendor/phpunit/php-token-stream/src/OpenBracket.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OPEN_BRACKET extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OpenCurly.php b/vendor/phpunit/php-token-stream/src/OpenCurly.php deleted file mode 100644 index 59c118d1b..000000000 --- a/vendor/phpunit/php-token-stream/src/OpenCurly.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OPEN_CURLY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OpenSquare.php b/vendor/phpunit/php-token-stream/src/OpenSquare.php deleted file mode 100644 index 04cfefab0..000000000 --- a/vendor/phpunit/php-token-stream/src/OpenSquare.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OPEN_SQUARE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OpenTag.php b/vendor/phpunit/php-token-stream/src/OpenTag.php deleted file mode 100644 index d3e00239e..000000000 --- a/vendor/phpunit/php-token-stream/src/OpenTag.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OPEN_TAG extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OpenTagWithEcho.php b/vendor/phpunit/php-token-stream/src/OpenTagWithEcho.php deleted file mode 100644 index ec981a2a3..000000000 --- a/vendor/phpunit/php-token-stream/src/OpenTagWithEcho.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OPEN_TAG_WITH_ECHO extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/OrEqual.php b/vendor/phpunit/php-token-stream/src/OrEqual.php deleted file mode 100644 index 8e7005df2..000000000 --- a/vendor/phpunit/php-token-stream/src/OrEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_OR_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/PaamayimNekudotayim.php b/vendor/phpunit/php-token-stream/src/PaamayimNekudotayim.php deleted file mode 100644 index 3185555d9..000000000 --- a/vendor/phpunit/php-token-stream/src/PaamayimNekudotayim.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PAAMAYIM_NEKUDOTAYIM extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Percent.php b/vendor/phpunit/php-token-stream/src/Percent.php deleted file mode 100644 index a2baab533..000000000 --- a/vendor/phpunit/php-token-stream/src/Percent.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PERCENT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Pipe.php b/vendor/phpunit/php-token-stream/src/Pipe.php deleted file mode 100644 index 4e9438fd9..000000000 --- a/vendor/phpunit/php-token-stream/src/Pipe.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PIPE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Plus.php b/vendor/phpunit/php-token-stream/src/Plus.php deleted file mode 100644 index 5a4ae324c..000000000 --- a/vendor/phpunit/php-token-stream/src/Plus.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PLUS extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/PlusEqual.php b/vendor/phpunit/php-token-stream/src/PlusEqual.php deleted file mode 100644 index 23825f377..000000000 --- a/vendor/phpunit/php-token-stream/src/PlusEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PLUS_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Pow.php b/vendor/phpunit/php-token-stream/src/Pow.php deleted file mode 100644 index 84276d73d..000000000 --- a/vendor/phpunit/php-token-stream/src/Pow.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_POW extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/PowEqual.php b/vendor/phpunit/php-token-stream/src/PowEqual.php deleted file mode 100644 index 5e5288db7..000000000 --- a/vendor/phpunit/php-token-stream/src/PowEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_POW_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Print.php b/vendor/phpunit/php-token-stream/src/Print.php deleted file mode 100644 index 72ef8e6ab..000000000 --- a/vendor/phpunit/php-token-stream/src/Print.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PRINT extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Private.php b/vendor/phpunit/php-token-stream/src/Private.php deleted file mode 100644 index 0eb36d522..000000000 --- a/vendor/phpunit/php-token-stream/src/Private.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PRIVATE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Protected.php b/vendor/phpunit/php-token-stream/src/Protected.php deleted file mode 100644 index 9c9cc33ba..000000000 --- a/vendor/phpunit/php-token-stream/src/Protected.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PROTECTED extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Public.php b/vendor/phpunit/php-token-stream/src/Public.php deleted file mode 100644 index b37d4a94d..000000000 --- a/vendor/phpunit/php-token-stream/src/Public.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_PUBLIC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/QuestionMark.php b/vendor/phpunit/php-token-stream/src/QuestionMark.php deleted file mode 100644 index 4202d5921..000000000 --- a/vendor/phpunit/php-token-stream/src/QuestionMark.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_QUESTION_MARK extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Require.php b/vendor/phpunit/php-token-stream/src/Require.php deleted file mode 100644 index e18c03fcc..000000000 --- a/vendor/phpunit/php-token-stream/src/Require.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_REQUIRE extends PHP_Token_Includes -{ -} diff --git a/vendor/phpunit/php-token-stream/src/RequireOnce.php b/vendor/phpunit/php-token-stream/src/RequireOnce.php deleted file mode 100644 index 15628a3a8..000000000 --- a/vendor/phpunit/php-token-stream/src/RequireOnce.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_REQUIRE_ONCE extends PHP_Token_Includes -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Return.php b/vendor/phpunit/php-token-stream/src/Return.php deleted file mode 100644 index acdbc23b1..000000000 --- a/vendor/phpunit/php-token-stream/src/Return.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_RETURN extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Semicolon.php b/vendor/phpunit/php-token-stream/src/Semicolon.php deleted file mode 100644 index 47bfa5e16..000000000 --- a/vendor/phpunit/php-token-stream/src/Semicolon.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SEMICOLON extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Sl.php b/vendor/phpunit/php-token-stream/src/Sl.php deleted file mode 100644 index cda5ecc11..000000000 --- a/vendor/phpunit/php-token-stream/src/Sl.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/SlEqual.php b/vendor/phpunit/php-token-stream/src/SlEqual.php deleted file mode 100644 index 3d8a17e5a..000000000 --- a/vendor/phpunit/php-token-stream/src/SlEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SL_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Spaceship.php b/vendor/phpunit/php-token-stream/src/Spaceship.php deleted file mode 100644 index 639a2e30a..000000000 --- a/vendor/phpunit/php-token-stream/src/Spaceship.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SPACESHIP extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Sr.php b/vendor/phpunit/php-token-stream/src/Sr.php deleted file mode 100644 index 749bf0da5..000000000 --- a/vendor/phpunit/php-token-stream/src/Sr.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/SrEqual.php b/vendor/phpunit/php-token-stream/src/SrEqual.php deleted file mode 100644 index 674039fbd..000000000 --- a/vendor/phpunit/php-token-stream/src/SrEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SR_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/StartHeredoc.php b/vendor/phpunit/php-token-stream/src/StartHeredoc.php deleted file mode 100644 index 867a35760..000000000 --- a/vendor/phpunit/php-token-stream/src/StartHeredoc.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_START_HEREDOC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Static.php b/vendor/phpunit/php-token-stream/src/Static.php deleted file mode 100644 index 53307ce29..000000000 --- a/vendor/phpunit/php-token-stream/src/Static.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_STATIC extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Stream.php b/vendor/phpunit/php-token-stream/src/Stream.php deleted file mode 100644 index bcdb48a73..000000000 --- a/vendor/phpunit/php-token-stream/src/Stream.php +++ /dev/null @@ -1,658 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_Stream implements ArrayAccess, Countable, SeekableIterator -{ - /** - * @var array> - */ - protected static $customTokens = [ - '(' => PHP_Token_OPEN_BRACKET::class, - ')' => PHP_Token_CLOSE_BRACKET::class, - '[' => PHP_Token_OPEN_SQUARE::class, - ']' => PHP_Token_CLOSE_SQUARE::class, - '{' => PHP_Token_OPEN_CURLY::class, - '}' => PHP_Token_CLOSE_CURLY::class, - ';' => PHP_Token_SEMICOLON::class, - '.' => PHP_Token_DOT::class, - ',' => PHP_Token_COMMA::class, - '=' => PHP_Token_EQUAL::class, - '<' => PHP_Token_LT::class, - '>' => PHP_Token_GT::class, - '+' => PHP_Token_PLUS::class, - '-' => PHP_Token_MINUS::class, - '*' => PHP_Token_MULT::class, - '/' => PHP_Token_DIV::class, - '?' => PHP_Token_QUESTION_MARK::class, - '!' => PHP_Token_EXCLAMATION_MARK::class, - ':' => PHP_Token_COLON::class, - '"' => PHP_Token_DOUBLE_QUOTES::class, - '@' => PHP_Token_AT::class, - '&' => PHP_Token_AMPERSAND::class, - '%' => PHP_Token_PERCENT::class, - '|' => PHP_Token_PIPE::class, - '$' => PHP_Token_DOLLAR::class, - '^' => PHP_Token_CARET::class, - '~' => PHP_Token_TILDE::class, - '`' => PHP_Token_BACKTICK::class, - ]; - - /** - * @var string - */ - protected $filename; - - /** - * @var array - */ - protected $tokens = []; - - /** - * @var array - */ - protected $tokensByLine = []; - - /** - * @var int - */ - protected $position = 0; - - /** - * @var array - */ - protected $linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0]; - - /** - * @var array - */ - protected $classes; - - /** - * @var array - */ - protected $functions; - - /** - * @var array - */ - protected $includes; - - /** - * @var array - */ - protected $interfaces; - - /** - * @var array - */ - protected $traits; - - /** - * @var array - */ - protected $lineToFunctionMap = []; - - /** - * Constructor. - * - * @param string $sourceCode - */ - public function __construct($sourceCode) - { - if (\is_file($sourceCode)) { - $this->filename = $sourceCode; - $sourceCode = \file_get_contents($sourceCode); - } - - $this->scan($sourceCode); - } - - /** - * Destructor. - */ - public function __destruct() - { - $this->tokens = []; - $this->tokensByLine = []; - } - - /** - * @return string - */ - public function __toString() - { - $buffer = ''; - - foreach ($this as $token) { - $buffer .= $token; - } - - return $buffer; - } - - /** - * @return string - */ - public function getFilename() - { - return $this->filename; - } - - /** - * @return int - */ - public function count() - { - return \count($this->tokens); - } - - /** - * @return PHP_Token[] - */ - public function tokens() - { - return $this->tokens; - } - - /** - * @return array - */ - public function getClasses() - { - if ($this->classes !== null) { - return $this->classes; - } - - $this->parse(); - - return $this->classes; - } - - /** - * @return array - */ - public function getFunctions() - { - if ($this->functions !== null) { - return $this->functions; - } - - $this->parse(); - - return $this->functions; - } - - /** - * @return array - */ - public function getInterfaces() - { - if ($this->interfaces !== null) { - return $this->interfaces; - } - - $this->parse(); - - return $this->interfaces; - } - - /** - * @return array - */ - public function getTraits() - { - if ($this->traits !== null) { - return $this->traits; - } - - $this->parse(); - - return $this->traits; - } - - /** - * Gets the names of all files that have been included - * using include(), include_once(), require() or require_once(). - * - * Parameter $categorize set to TRUE causing this function to return a - * multi-dimensional array with categories in the keys of the first dimension - * and constants and their values in the second dimension. - * - * Parameter $category allow to filter following specific inclusion type - * - * @param bool $categorize OPTIONAL - * @param string $category OPTIONAL Either 'require_once', 'require', - * 'include_once', 'include' - * - * @return array - */ - public function getIncludes($categorize = false, $category = null) - { - if ($this->includes === null) { - $this->includes = [ - 'require_once' => [], - 'require' => [], - 'include_once' => [], - 'include' => [], - ]; - - foreach ($this->tokens as $token) { - switch (\get_class($token)) { - case PHP_Token_REQUIRE_ONCE::class: - case PHP_Token_REQUIRE::class: - case PHP_Token_INCLUDE_ONCE::class: - case PHP_Token_INCLUDE::class: - $this->includes[$token->getType()][] = $token->getName(); - - break; - } - } - } - - if (isset($this->includes[$category])) { - $includes = $this->includes[$category]; - } elseif ($categorize === false) { - $includes = \array_merge( - $this->includes['require_once'], - $this->includes['require'], - $this->includes['include_once'], - $this->includes['include'] - ); - } else { - $includes = $this->includes; - } - - return $includes; - } - - /** - * Returns the name of the function or method a line belongs to. - * - * @return string or null if the line is not in a function or method - */ - public function getFunctionForLine($line) - { - $this->parse(); - - if (isset($this->lineToFunctionMap[$line])) { - return $this->lineToFunctionMap[$line]; - } - } - - /** - * @return array - */ - public function getLinesOfCode() - { - return $this->linesOfCode; - } - - public function rewind()/*: void*/ - { - $this->position = 0; - } - - /** - * @return bool - */ - public function valid() - { - return isset($this->tokens[$this->position]); - } - - /** - * @return int - */ - public function key() - { - return $this->position; - } - - /** - * @return PHP_Token - */ - public function current() - { - return $this->tokens[$this->position]; - } - - public function next()/*: void*/ - { - $this->position++; - } - - /** - * @param int $offset - * - * @return bool - */ - public function offsetExists($offset) - { - return isset($this->tokens[$offset]); - } - - /** - * @param int $offset - * - * @throws OutOfBoundsException - */ - public function offsetGet($offset) - { - if (!$this->offsetExists($offset)) { - throw new OutOfBoundsException( - \sprintf( - 'No token at position "%s"', - $offset - ) - ); - } - - return $this->tokens[$offset]; - } - - /** - * @param int $offset - */ - public function offsetSet($offset, $value)/*: void*/ - { - $this->tokens[$offset] = $value; - } - - /** - * @param int $offset - * - * @throws OutOfBoundsException - */ - public function offsetUnset($offset)/*: void*/ - { - if (!$this->offsetExists($offset)) { - throw new OutOfBoundsException( - \sprintf( - 'No token at position "%s"', - $offset - ) - ); - } - - unset($this->tokens[$offset]); - } - - /** - * Seek to an absolute position. - * - * @param int $position - * - * @throws OutOfBoundsException - */ - public function seek($position)/*: void*/ - { - $this->position = $position; - - if (!$this->valid()) { - throw new OutOfBoundsException( - \sprintf( - 'No token at position "%s"', - $this->position - ) - ); - } - } - - /** - * Scans the source for sequences of characters and converts them into a - * stream of tokens. - * - * @param string $sourceCode - */ - protected function scan($sourceCode)/*: void*/ - { - $id = 0; - $line = 1; - $tokens = \token_get_all($sourceCode); - $numTokens = \count($tokens); - - $lastNonWhitespaceTokenWasDoubleColon = false; - - $name = null; - - for ($i = 0; $i < $numTokens; ++$i) { - $token = $tokens[$i]; - $skip = 0; - - if (\is_array($token)) { - $name = \substr(\token_name($token[0]), 2); - $text = $token[1]; - - if ($lastNonWhitespaceTokenWasDoubleColon && $name == 'CLASS') { - $name = 'CLASS_NAME_CONSTANT'; - } elseif ($name == 'USE' && isset($tokens[$i + 2][0]) && $tokens[$i + 2][0] == \T_FUNCTION) { - $name = 'USE_FUNCTION'; - $text .= $tokens[$i + 1][1] . $tokens[$i + 2][1]; - $skip = 2; - } - - /** @var class-string $tokenClass */ - $tokenClass = 'PHP_Token_' . $name; - } else { - $text = $token; - $tokenClass = self::$customTokens[$token]; - } - - /* - * @see https://github.com/sebastianbergmann/php-token-stream/issues/95 - */ - if (PHP_MAJOR_VERSION >= 8 && - $name === 'WHITESPACE' && // Current token is T_WHITESPACE - isset($this->tokens[$id - 1]) && // Current token is not the first token - $this->tokens[$id - 1] instanceof PHP_Token_COMMENT && // Previous token is T_COMMENT - strpos((string) $this->tokens[$id - 1], '/*') === false && // Previous token is comment that starts with '#' or '//' - strpos($text, "\n") === 0 // Text of current token begins with newline - ) { - $this->tokens[$id - 1] = new PHP_Token_COMMENT( - $this->tokens[$id - 1] . "\n", - $this->tokens[$id - 1]->getLine(), - $this, - $id - 1 - ); - - $text = substr($text, 1); - - $line++; - - if (empty($text)) { - continue; - } - } - - if (!isset($this->tokensByLine[$line])) { - $this->tokensByLine[$line] = []; - } - - $token = new $tokenClass($text, $line, $this, $id++); - - $this->tokens[] = $token; - $this->tokensByLine[$line][] = $token; - - $line += \substr_count($text, "\n"); - - if ($tokenClass == PHP_Token_HALT_COMPILER::class) { - break; - } - - if ($name == 'DOUBLE_COLON') { - $lastNonWhitespaceTokenWasDoubleColon = true; - } elseif ($name != 'WHITESPACE') { - $lastNonWhitespaceTokenWasDoubleColon = false; - } - - $i += $skip; - } - - foreach ($this->tokens as $token) { - if (!$token instanceof PHP_Token_COMMENT && !$token instanceof PHP_Token_DOC_COMMENT) { - continue; - } - - foreach ($this->tokensByLine[$token->getLine()] as $_token) { - if (!$_token instanceof PHP_Token_COMMENT && !$_token instanceof PHP_Token_DOC_COMMENT && !$_token instanceof PHP_Token_WHITESPACE) { - continue 2; - } - } - - $this->linesOfCode['cloc'] += max(1, \substr_count((string) $token, "\n")); - } - - $this->linesOfCode['loc'] = \substr_count($sourceCode, "\n"); - $this->linesOfCode['ncloc'] = $this->linesOfCode['loc'] - - $this->linesOfCode['cloc']; - } - - protected function parse()/*: void*/ - { - $this->interfaces = []; - $this->classes = []; - $this->traits = []; - $this->functions = []; - $class = []; - $classEndLine = []; - $trait = false; - $traitEndLine = false; - $interface = false; - $interfaceEndLine = false; - - foreach ($this->tokens as $token) { - switch (\get_class($token)) { - case PHP_Token_HALT_COMPILER::class: - return; - - case PHP_Token_INTERFACE::class: - $interface = $token->getName(); - $interfaceEndLine = $token->getEndLine(); - - $this->interfaces[$interface] = [ - 'methods' => [], - 'parent' => $token->getParent(), - 'keywords' => $token->getKeywords(), - 'docblock' => $token->getDocblock(), - 'startLine' => $token->getLine(), - 'endLine' => $interfaceEndLine, - 'package' => $token->getPackage(), - 'file' => $this->filename, - ]; - - break; - - case PHP_Token_CLASS::class: - case PHP_Token_TRAIT::class: - $tmp = [ - 'methods' => [], - 'parent' => $token->getParent(), - 'interfaces'=> $token->getInterfaces(), - 'keywords' => $token->getKeywords(), - 'docblock' => $token->getDocblock(), - 'startLine' => $token->getLine(), - 'endLine' => $token->getEndLine(), - 'package' => $token->getPackage(), - 'file' => $this->filename, - ]; - - if ($token instanceof PHP_Token_CLASS) { - $class[] = $token->getName(); - $classEndLine[] = $token->getEndLine(); - - if ($token->getName() !== null) { - $this->classes[$class[\count($class) - 1]] = $tmp; - } - } else { - $trait = $token->getName(); - $traitEndLine = $token->getEndLine(); - $this->traits[$trait] = $tmp; - } - - break; - - case PHP_Token_FUNCTION::class: - $name = $token->getName(); - $tmp = [ - 'docblock' => $token->getDocblock(), - 'keywords' => $token->getKeywords(), - 'visibility'=> $token->getVisibility(), - 'signature' => $token->getSignature(), - 'startLine' => $token->getLine(), - 'endLine' => $token->getEndLine(), - 'ccn' => $token->getCCN(), - 'file' => $this->filename, - ]; - - if (empty($class) && - $trait === false && - $interface === false) { - $this->functions[$name] = $tmp; - - $this->addFunctionToMap( - $name, - $tmp['startLine'], - $tmp['endLine'] - ); - } elseif (!empty($class)) { - if ($class[\count($class) - 1] !== null) { - $this->classes[$class[\count($class) - 1]]['methods'][$name] = $tmp; - - $this->addFunctionToMap( - $class[\count($class) - 1] . '::' . $name, - $tmp['startLine'], - $tmp['endLine'] - ); - } - } elseif ($trait !== false) { - $this->traits[$trait]['methods'][$name] = $tmp; - - $this->addFunctionToMap( - $trait . '::' . $name, - $tmp['startLine'], - $tmp['endLine'] - ); - } else { - $this->interfaces[$interface]['methods'][$name] = $tmp; - } - - break; - - case PHP_Token_CLOSE_CURLY::class: - if (!empty($classEndLine) && - $classEndLine[\count($classEndLine) - 1] == $token->getLine()) { - \array_pop($classEndLine); - \array_pop($class); - } elseif ($traitEndLine !== false && - $traitEndLine == $token->getLine()) { - $trait = false; - $traitEndLine = false; - } elseif ($interfaceEndLine !== false && - $interfaceEndLine == $token->getLine()) { - $interface = false; - $interfaceEndLine = false; - } - - break; - } - } - } - - /** - * @param string $name - * @param int $startLine - * @param int $endLine - */ - private function addFunctionToMap($name, $startLine, $endLine): void - { - for ($line = $startLine; $line <= $endLine; $line++) { - $this->lineToFunctionMap[$line] = $name; - } - } -} diff --git a/vendor/phpunit/php-token-stream/src/String.php b/vendor/phpunit/php-token-stream/src/String.php deleted file mode 100644 index 89deb0048..000000000 --- a/vendor/phpunit/php-token-stream/src/String.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_STRING extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/StringCast.php b/vendor/phpunit/php-token-stream/src/StringCast.php deleted file mode 100644 index f2df377ce..000000000 --- a/vendor/phpunit/php-token-stream/src/StringCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_STRING_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/StringVarname.php b/vendor/phpunit/php-token-stream/src/StringVarname.php deleted file mode 100644 index 9012f1f9b..000000000 --- a/vendor/phpunit/php-token-stream/src/StringVarname.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_STRING_VARNAME extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Switch.php b/vendor/phpunit/php-token-stream/src/Switch.php deleted file mode 100644 index 030d43b52..000000000 --- a/vendor/phpunit/php-token-stream/src/Switch.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_SWITCH extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Throw.php b/vendor/phpunit/php-token-stream/src/Throw.php deleted file mode 100644 index 213fda067..000000000 --- a/vendor/phpunit/php-token-stream/src/Throw.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_THROW extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Tilde.php b/vendor/phpunit/php-token-stream/src/Tilde.php deleted file mode 100644 index c6c6ca5b9..000000000 --- a/vendor/phpunit/php-token-stream/src/Tilde.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_TILDE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Token.php b/vendor/phpunit/php-token-stream/src/Token.php deleted file mode 100644 index d6280f3e9..000000000 --- a/vendor/phpunit/php-token-stream/src/Token.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -abstract class PHP_Token -{ - /** - * @var string - */ - protected $text; - - /** - * @var int - */ - protected $line; - - /** - * @var PHP_Token_Stream - */ - protected $tokenStream; - - /** - * @var int - */ - protected $id; - - /** - * @param string $text - * @param int $line - * @param int $id - */ - public function __construct($text, $line, PHP_Token_Stream $tokenStream, $id) - { - $this->text = $text; - $this->line = $line; - $this->tokenStream = $tokenStream; - $this->id = $id; - } - - /** - * @return string - */ - public function __toString() - { - return $this->text; - } - - /** - * @return int - */ - public function getLine() - { - return $this->line; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } -} diff --git a/vendor/phpunit/php-token-stream/src/TokenWithScope.php b/vendor/phpunit/php-token-stream/src/TokenWithScope.php deleted file mode 100644 index 876b3508b..000000000 --- a/vendor/phpunit/php-token-stream/src/TokenWithScope.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -abstract class PHP_TokenWithScope extends PHP_Token -{ - /** - * @var int - */ - protected $endTokenId; - - /** - * Get the docblock for this token. - * - * This method will fetch the docblock belonging to the current token. The - * docblock must be placed on the line directly above the token to be - * recognized. - * - * @return null|string Returns the docblock as a string if found - */ - public function getDocblock() - { - $tokens = $this->tokenStream->tokens(); - $currentLineNumber = $tokens[$this->id]->getLine(); - $prevLineNumber = $currentLineNumber - 1; - - for ($i = $this->id - 1; $i; $i--) { - if (!isset($tokens[$i])) { - return; - } - - if ($tokens[$i] instanceof PHP_Token_FUNCTION || - $tokens[$i] instanceof PHP_Token_CLASS || - $tokens[$i] instanceof PHP_Token_TRAIT) { - // Some other trait, class or function, no docblock can be - // used for the current token - break; - } - - $line = $tokens[$i]->getLine(); - - if ($line == $currentLineNumber || - ($line == $prevLineNumber && - $tokens[$i] instanceof PHP_Token_WHITESPACE)) { - continue; - } - - if ($line < $currentLineNumber && - !$tokens[$i] instanceof PHP_Token_DOC_COMMENT) { - break; - } - - return (string) $tokens[$i]; - } - } - - /** - * @return int - */ - public function getEndTokenId() - { - $block = 0; - $i = $this->id; - $tokens = $this->tokenStream->tokens(); - - while ($this->endTokenId === null && isset($tokens[$i])) { - if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY || - $tokens[$i] instanceof PHP_Token_DOLLAR_OPEN_CURLY_BRACES || - $tokens[$i] instanceof PHP_Token_CURLY_OPEN) { - $block++; - } elseif ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) { - $block--; - - if ($block === 0) { - $this->endTokenId = $i; - } - } elseif (($this instanceof PHP_Token_FUNCTION || - $this instanceof PHP_Token_NAMESPACE) && - $tokens[$i] instanceof PHP_Token_SEMICOLON) { - if ($block === 0) { - $this->endTokenId = $i; - } - } - - $i++; - } - - if ($this->endTokenId === null) { - $this->endTokenId = $this->id; - } - - return $this->endTokenId; - } - - /** - * @return int - */ - public function getEndLine() - { - return $this->tokenStream[$this->getEndTokenId()]->getLine(); - } -} diff --git a/vendor/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php b/vendor/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php deleted file mode 100644 index fce0c8ea2..000000000 --- a/vendor/phpunit/php-token-stream/src/TokenWithScopeAndVisibility.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope -{ - /** - * @return string - */ - public function getVisibility() - { - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) { - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_PRIVATE || - $tokens[$i] instanceof PHP_Token_PROTECTED || - $tokens[$i] instanceof PHP_Token_PUBLIC)) { - return \strtolower( - \str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$i])) - ); - } - - if (isset($tokens[$i]) && - !($tokens[$i] instanceof PHP_Token_STATIC || - $tokens[$i] instanceof PHP_Token_FINAL || - $tokens[$i] instanceof PHP_Token_ABSTRACT)) { - // no keywords; stop visibility search - break; - } - } - } - - /** - * @return string - */ - public function getKeywords() - { - $keywords = []; - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) { - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_PRIVATE || - $tokens[$i] instanceof PHP_Token_PROTECTED || - $tokens[$i] instanceof PHP_Token_PUBLIC)) { - continue; - } - - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_STATIC || - $tokens[$i] instanceof PHP_Token_FINAL || - $tokens[$i] instanceof PHP_Token_ABSTRACT)) { - $keywords[] = \strtolower( - \str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$i])) - ); - } - } - - return \implode(',', $keywords); - } -} diff --git a/vendor/phpunit/php-token-stream/src/Trait.php b/vendor/phpunit/php-token-stream/src/Trait.php deleted file mode 100644 index f635f5dfb..000000000 --- a/vendor/phpunit/php-token-stream/src/Trait.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_TRAIT extends PHP_Token_INTERFACE -{ -} diff --git a/vendor/phpunit/php-token-stream/src/TraitC.php b/vendor/phpunit/php-token-stream/src/TraitC.php deleted file mode 100644 index ae4b2a5ae..000000000 --- a/vendor/phpunit/php-token-stream/src/TraitC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_TRAIT_C extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Try.php b/vendor/phpunit/php-token-stream/src/Try.php deleted file mode 100644 index 8c3783e89..000000000 --- a/vendor/phpunit/php-token-stream/src/Try.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_TRY extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Unset.php b/vendor/phpunit/php-token-stream/src/Unset.php deleted file mode 100644 index 3d39d0b68..000000000 --- a/vendor/phpunit/php-token-stream/src/Unset.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_UNSET extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/UnsetCast.php b/vendor/phpunit/php-token-stream/src/UnsetCast.php deleted file mode 100644 index 133ef29fc..000000000 --- a/vendor/phpunit/php-token-stream/src/UnsetCast.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_UNSET_CAST extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Use.php b/vendor/phpunit/php-token-stream/src/Use.php deleted file mode 100644 index e62a54972..000000000 --- a/vendor/phpunit/php-token-stream/src/Use.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_USE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/UseFunction.php b/vendor/phpunit/php-token-stream/src/UseFunction.php deleted file mode 100644 index 8250864a9..000000000 --- a/vendor/phpunit/php-token-stream/src/UseFunction.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_USE_FUNCTION extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Util.php b/vendor/phpunit/php-token-stream/src/Util.php deleted file mode 100644 index 13b636c21..000000000 --- a/vendor/phpunit/php-token-stream/src/Util.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -final class PHP_Token_Util -{ - public static function getClass($object): string - { - $parts = \explode('\\', \get_class($object)); - - return \array_pop($parts); - } -} diff --git a/vendor/phpunit/php-token-stream/src/Var.php b/vendor/phpunit/php-token-stream/src/Var.php deleted file mode 100644 index 3dbd16ff2..000000000 --- a/vendor/phpunit/php-token-stream/src/Var.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_VAR extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Variable.php b/vendor/phpunit/php-token-stream/src/Variable.php deleted file mode 100644 index 921e3ae85..000000000 --- a/vendor/phpunit/php-token-stream/src/Variable.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_VARIABLE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/While.php b/vendor/phpunit/php-token-stream/src/While.php deleted file mode 100644 index e92409fff..000000000 --- a/vendor/phpunit/php-token-stream/src/While.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_WHILE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Whitespace.php b/vendor/phpunit/php-token-stream/src/Whitespace.php deleted file mode 100644 index 6b5b641ca..000000000 --- a/vendor/phpunit/php-token-stream/src/Whitespace.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_WHITESPACE extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/XorEqual.php b/vendor/phpunit/php-token-stream/src/XorEqual.php deleted file mode 100644 index 0095b283e..000000000 --- a/vendor/phpunit/php-token-stream/src/XorEqual.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_XOR_EQUAL extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/Yield.php b/vendor/phpunit/php-token-stream/src/Yield.php deleted file mode 100644 index 3fecb6c10..000000000 --- a/vendor/phpunit/php-token-stream/src/Yield.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_YIELD extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/YieldFrom.php b/vendor/phpunit/php-token-stream/src/YieldFrom.php deleted file mode 100644 index 8f1a71680..000000000 --- a/vendor/phpunit/php-token-stream/src/YieldFrom.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_YIELD_FROM extends PHP_Token -{ -} diff --git a/vendor/phpunit/php-token-stream/src/break.php b/vendor/phpunit/php-token-stream/src/break.php deleted file mode 100644 index 97e96fee4..000000000 --- a/vendor/phpunit/php-token-stream/src/break.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -class PHP_Token_BREAK extends PHP_Token -{ -} diff --git a/vendor/phpunit/phpunit/ChangeLog-9.5.md b/vendor/phpunit/phpunit/ChangeLog-9.5.md new file mode 100644 index 000000000..cd915e5fc --- /dev/null +++ b/vendor/phpunit/phpunit/ChangeLog-9.5.md @@ -0,0 +1,242 @@ +# Changes in PHPUnit 9.5 + +All notable changes of the PHPUnit 9.5 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [9.5.27] - 2022-12-09 + +### Fixed + +* [#5113](https://github.com/sebastianbergmann/phpunit/pull/5113): PHP error instead of PHPUnit error when trying to create test double for `readonly` class + +## [9.5.26] - 2022-10-28 + +### Fixed + +* [#5076](https://github.com/sebastianbergmann/phpunit/issues/5076): Test Runner does not warn about conflicting options + +## [9.5.25] - 2022-09-25 + +### Added + +* [#5042](https://github.com/sebastianbergmann/phpunit/issues/5042): Support Disjunctive Normal Form types + +### Fixed + +* [#4966](https://github.com/sebastianbergmann/phpunit/issues/4966): `TestCase::assertSame()` (and related exact comparisons) must compare `float` exactly + +## [9.5.24] - 2022-08-30 + +### Added + +* [#4931](https://github.com/sebastianbergmann/phpunit/issues/4931): Support `null` and `false` as stand-alone types +* [#4955](https://github.com/sebastianbergmann/phpunit/issues/4955): Support `true` as stand-alone type + +### Fixed + +* [#4913](https://github.com/sebastianbergmann/phpunit/issues/4913): Failed `assert()` should show a backtrace +* [#5012](https://github.com/sebastianbergmann/phpunit/pull/5012): Memory leak in `ExceptionWrapper` + +## [9.5.23] - 2022-08-22 + +### Changed + +* [#5033](https://github.com/sebastianbergmann/phpunit/issues/5033): Do not depend on phpspec/prophecy + +## [9.5.22] - 2022-08-20 + +### Fixed + +* [#5015](https://github.com/sebastianbergmann/phpunit/pull/5015): Ukraine banner unreadable on black background +* [#5020](https://github.com/sebastianbergmann/phpunit/issues/5020): PHPUnit 9 breaks loading of PSR-0/PEAR style classes +* [#5022](https://github.com/sebastianbergmann/phpunit/issues/5022): `ExcludeList::addDirectory()` does not work correctly + +## [9.5.21] - 2022-06-19 + +### Fixed + +* [#4950](https://github.com/sebastianbergmann/phpunit/issues/4950): False error on `atMost()` invocation rule without call +* [#4962](https://github.com/sebastianbergmann/phpunit/issues/4962): Ukraine banner unreadable on white background + +## [9.5.20] - 2022-04-01 + +### Fixed + +* [#4938](https://github.com/sebastianbergmann/phpunit/issues/4938): Test Double code generator does not handle `void` return type declaration on `__clone()` methods +* [#4947](https://github.com/sebastianbergmann/phpunit/issues/4947): Test annotated with `@coversNothing` may lead to files missing from code coverage report + +## [9.5.19] - 2022-03-15 + +### Fixed + +* [#4929](https://github.com/sebastianbergmann/phpunit/issues/4929): Test Double code generator does not handle new expressions inside parameter default values +* [#4932](https://github.com/sebastianbergmann/phpunit/issues/4932): Backport support for intersection types from PHPUnit 10 to PHPUnit 9.5 +* [#4933](https://github.com/sebastianbergmann/phpunit/issues/4933): Backport support for `never` type from PHPUnit 10 to PHPUnit 9.5 + +## [9.5.18] - 2022-03-08 + +### Fixed + +* [#4877](https://github.com/sebastianbergmann/phpunit/issues/4877): No stack trace shown when an error occurs during bootstrap + +## [9.5.17] - 2022-03-05 - #StandWithUkraine + +## [9.5.16] - 2022-02-23 + +### Changed + +* Reverted sync with API change in (now yanked) phpunit/php-code-coverage 9.2.12 + +## [9.5.15] - 2022-02-23 [YANKED] + +### Fixed + +* When the HTML code coverage report's configured low upper bound is larger than the high lower bound then the default values are used instead + +## [9.5.14] - 2022-02-18 + +### Changed + +* [#4874](https://github.com/sebastianbergmann/phpunit/pull/4874): `PHP_FLOAT_EPSILON` is now used instead of hardcoded `0.0000000001` in `PHPUnit\Framework\Constraint\IsIdentical` + +## [9.5.13] - 2022-01-24 + +### Fixed + +* [#4871](https://github.com/sebastianbergmann/phpunit/issues/4871): Class `SebastianBergmann\CodeCoverage\Filter` is not found during PHPT tests when PHPUnit is used from PHAR + +## [9.5.12] - 2022-01-21 + +### Fixed + +* [#4799](https://github.com/sebastianbergmann/phpunit/pull/4799): Memory leaks in `PHPUnit\Framework\TestSuite` class +* [#4857](https://github.com/sebastianbergmann/phpunit/pull/4857): Result of `debug_backtrace()` is not used correctly + +## [9.5.11] - 2021-12-25 + +### Changed + +* [#4812](https://github.com/sebastianbergmann/phpunit/issues/4812): Do not enforce time limits when a debugging session through DBGp is active +* [#4835](https://github.com/sebastianbergmann/phpunit/issues/4835): Support for `$GLOBALS['_composer_autoload_path']` introduced in Composer 2.2 + +### Fixed + +* [#4840](https://github.com/sebastianbergmann/phpunit/pull/4840): TestDox prettifying for class names does not correctly handle diacritics +* [#4846](https://github.com/sebastianbergmann/phpunit/pull/4846): Composer proxy script is not ignored + +## [9.5.10] - 2021-09-25 + +### Changed + +* PHPUnit no longer converts PHP deprecations to exceptions by default (configure `convertDeprecationsToExceptions="true"` to enable this) +* The PHPUnit XML configuration file generator now configures `convertDeprecationsToExceptions="true"` + +### Fixed + +* [#4772](https://github.com/sebastianbergmann/phpunit/pull/4772): TestDox HTML report not displayed correctly when browser has custom colour settings + +## [9.5.9] - 2021-08-31 + +### Fixed + +* [#4750](https://github.com/sebastianbergmann/phpunit/issues/4750): Automatic return value generation leads to invalid (and superfluous) test double code generation when a stubbed method returns `*|false` +* [#4751](https://github.com/sebastianbergmann/phpunit/issues/4751): Configuration validation fails when using brackets in glob pattern + +## [9.5.8] - 2021-07-31 + +### Fixed + +* [#4740](https://github.com/sebastianbergmann/phpunit/issues/4740): `phpunit.phar` does not work with PHP 8.1 + +## [9.5.7] - 2021-07-19 + +### Fixed + +* [#4720](https://github.com/sebastianbergmann/phpunit/issues/4720): PHPUnit does not verify its own PHP extension requirements +* [#4735](https://github.com/sebastianbergmann/phpunit/issues/4735): Automated return value generation does not work for stubbed methods that return `*|false` + +## [9.5.6] - 2021-06-23 + +### Changed + +* PHPUnit now errors out on startup when `PHP_VERSION` contains a value that is not compatible with `version_compare()`, for instance `X.Y.Z-(to be removed in future macOS)` + +## [9.5.5] - 2021-06-05 + +### Changed + +* The test result cache (the storage for which is implemented in `PHPUnit\Runner\DefaultTestResultCache`) no longer uses PHP's `serialize()` and `unserialize()` functions for persistence. It now uses a versioned JSON format instead that is independent of PHP implementation details (see [#3581](https://github.com/sebastianbergmann/phpunit/issues/3581) and [#4662](https://github.com/sebastianbergmann/phpunit/pull/4662) for examples why this is a problem). When PHPUnit tries to load the test result cache from a file that does not exist, or from a file that does not contain data in JSON format, or from a file that contains data in a JSON format version other than the one used by the currently running PHPUnit version, then this is considered to be a "cache miss". An empty `DefaultTestResultCache` object is created in this case. This should also prevent PHPUnit from crashing when trying to load a test result cache file created by a different version of PHPUnit (see [#4580](https://github.com/sebastianbergmann/phpunit/issues/4580) for example). + +### Fixed + +* [#4632](https://github.com/sebastianbergmann/phpunit/issues/4632): TestDox result printer does not handle repeated test execution correctly +* [#4678](https://github.com/sebastianbergmann/phpunit/pull/4678): Stubbed methods with `iterable` return types should return empty array by default +* [#4692](https://github.com/sebastianbergmann/phpunit/issues/4692): Annotations in single-line doc-comments are not handled correctly +* [#4694](https://github.com/sebastianbergmann/phpunit/issues/4694): `TestCase::getMockFromWsdl()` does not work with PHP 8.1-dev + +## [9.5.4] - 2021-03-23 + +### Fixed + +* [#4630](https://github.com/sebastianbergmann/phpunit/issues/4630): Empty test case class causes error in TestDox XML logger + +## [9.5.3] - 2021-03-17 + +### Fixed + +* [#4591](https://github.com/sebastianbergmann/phpunit/issues/4591): TeamCity logger logs warnings as test failures +* [#4620](https://github.com/sebastianbergmann/phpunit/issues/4620): No useful output when an error occurs in the bootstrap script + +## [9.5.2] - 2021-02-02 + +### Fixed + +* [#4573](https://github.com/sebastianbergmann/phpunit/issues/4573): No stack trace printed when PHPUnit is used from PHAR +* [#4590](https://github.com/sebastianbergmann/phpunit/issues/4590): `--coverage-text` CLI option is documented wrong + +## [9.5.1] - 2021-01-17 + +### Fixed + +* [#4572](https://github.com/sebastianbergmann/phpunit/issues/4572): Schema validation does not work with `%xx` sequences in path to `phpunit.xsd` + +## [9.5.0] - 2020-12-04 + +### Changed + +* [#4490](https://github.com/sebastianbergmann/phpunit/issues/4490): Emit Error instead of Warning when test case class cannot be instantiated +* [#4491](https://github.com/sebastianbergmann/phpunit/issues/4491): Emit Error instead of Warning when data provider does not work correctly +* [#4492](https://github.com/sebastianbergmann/phpunit/issues/4492): Emit Error instead of Warning when test double configuration is invalid +* [#4493](https://github.com/sebastianbergmann/phpunit/issues/4493): Emit error when (configured) test directory does not exist + +### Fixed + +* [#4535](https://github.com/sebastianbergmann/phpunit/issues/4535): `getMockFromWsdl()` does not handle methods that do not have parameters correctly + +[9.5.27]: https://github.com/sebastianbergmann/phpunit/compare/9.5.26...9.5.27 +[9.5.26]: https://github.com/sebastianbergmann/phpunit/compare/9.5.25...9.5.26 +[9.5.25]: https://github.com/sebastianbergmann/phpunit/compare/9.5.24...9.5.25 +[9.5.24]: https://github.com/sebastianbergmann/phpunit/compare/9.5.23...9.5.24 +[9.5.23]: https://github.com/sebastianbergmann/phpunit/compare/9.5.22...9.5.23 +[9.5.22]: https://github.com/sebastianbergmann/phpunit/compare/9.5.21...9.5.22 +[9.5.21]: https://github.com/sebastianbergmann/phpunit/compare/9.5.20...9.5.21 +[9.5.20]: https://github.com/sebastianbergmann/phpunit/compare/9.5.19...9.5.20 +[9.5.19]: https://github.com/sebastianbergmann/phpunit/compare/9.5.18...9.5.19 +[9.5.18]: https://github.com/sebastianbergmann/phpunit/compare/9.5.17...9.5.18 +[9.5.17]: https://github.com/sebastianbergmann/phpunit/compare/9.5.16...9.5.17 +[9.5.16]: https://github.com/sebastianbergmann/phpunit/compare/dc738383c519243b0a967f63943a848d3fd861aa...9.5.16 +[9.5.15]: https://github.com/sebastianbergmann/phpunit/compare/9.5.14...dc738383c519243b0a967f63943a848d3fd861aa +[9.5.14]: https://github.com/sebastianbergmann/phpunit/compare/9.5.13...9.5.14 +[9.5.13]: https://github.com/sebastianbergmann/phpunit/compare/9.5.12...9.5.13 +[9.5.12]: https://github.com/sebastianbergmann/phpunit/compare/9.5.11...9.5.12 +[9.5.11]: https://github.com/sebastianbergmann/phpunit/compare/9.5.10...9.5.11 +[9.5.10]: https://github.com/sebastianbergmann/phpunit/compare/9.5.9...9.5.10 +[9.5.9]: https://github.com/sebastianbergmann/phpunit/compare/9.5.8...9.5.9 +[9.5.8]: https://github.com/sebastianbergmann/phpunit/compare/9.5.7...9.5.8 +[9.5.7]: https://github.com/sebastianbergmann/phpunit/compare/9.5.6...9.5.7 +[9.5.6]: https://github.com/sebastianbergmann/phpunit/compare/9.5.5...9.5.6 +[9.5.5]: https://github.com/sebastianbergmann/phpunit/compare/9.5.4...9.5.5 +[9.5.4]: https://github.com/sebastianbergmann/phpunit/compare/9.5.3...9.5.4 +[9.5.3]: https://github.com/sebastianbergmann/phpunit/compare/9.5.2...9.5.3 +[9.5.2]: https://github.com/sebastianbergmann/phpunit/compare/9.5.1...9.5.2 +[9.5.1]: https://github.com/sebastianbergmann/phpunit/compare/9.5.0...9.5.1 +[9.5.0]: https://github.com/sebastianbergmann/phpunit/compare/9.4.4...9.5.0 diff --git a/vendor/phpunit/phpunit/README.md b/vendor/phpunit/phpunit/README.md index d8694bf04..d30106662 100644 --- a/vendor/phpunit/phpunit/README.md +++ b/vendor/phpunit/phpunit/README.md @@ -5,8 +5,8 @@ PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. [![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit) -[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/) -[![CI Status](https://github.com/sebastianbergmann/phpunit/workflows/CI/badge.svg?branch=8.5&event=push)](https://phpunit.de/build-status.html) +[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/) +[![CI Status](https://github.com/sebastianbergmann/phpunit/workflows/CI/badge.svg?branch=9.5&event=push)](https://phpunit.de/build-status.html) [![Type Coverage](https://shepherd.dev/github/sebastianbergmann/phpunit/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/phpunit) ## Installation diff --git a/vendor/phpunit/phpunit/composer.json b/vendor/phpunit/phpunit/composer.json index b4755b1b5..be0af53fe 100644 --- a/vendor/phpunit/phpunit/composer.json +++ b/vendor/phpunit/phpunit/composer.json @@ -21,7 +21,7 @@ }, "prefer-stable": true, "require": { - "php": ">=7.2", + "php": ">=7.3", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -29,32 +29,34 @@ "ext-xml": "*", "ext-xmlwriter": "*", "doctrine/instantiator": "^1.3.1", - "myclabs/deep-copy": "^1.10.0", + "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "config": { "platform": { - "php": "7.2.0" + "php": "7.3.0" }, "optimize-autoloader": true, "sort-packages": true }, "suggest": { - "phpunit/php-invoker": "^2.0.0", "ext-soap": "*", "ext-xdebug": "*" }, @@ -64,6 +66,9 @@ "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "autoload-dev": { @@ -71,7 +76,6 @@ "tests/" ], "files": [ - "src/Framework/Assert/Functions.php", "tests/_files/CoverageNamespacedFunctionTest.php", "tests/_files/CoveredFunction.php", "tests/_files/NamespaceCoveredFunction.php" @@ -79,7 +83,7 @@ }, "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.5-dev" } } } diff --git a/vendor/phpunit/phpunit/phpunit b/vendor/phpunit/phpunit/phpunit index d93f85236..c80295668 100755 --- a/vendor/phpunit/phpunit/phpunit +++ b/vendor/phpunit/phpunit/phpunit @@ -24,11 +24,11 @@ if (!version_compare(PHP_VERSION, PHP_VERSION, '=')) { die(1); } -if (version_compare('7.2.0', PHP_VERSION, '>')) { +if (version_compare('7.3.0', PHP_VERSION, '>')) { fwrite( STDERR, sprintf( - 'This version of PHPUnit requires PHP >= 7.2.' . PHP_EOL . + 'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, PHP_BINARY diff --git a/vendor/phpunit/phpunit/phpunit.xsd b/vendor/phpunit/phpunit/phpunit.xsd index 75e222894..eabefac30 100644 --- a/vendor/phpunit/phpunit/phpunit.xsd +++ b/vendor/phpunit/phpunit/phpunit.xsd @@ -2,7 +2,7 @@ - This Schema file defines the rules by which the XML configuration file of PHPUnit 8.5 may be structured. + This Schema file defines the rules by which the XML configuration file of PHPUnit 9.5 may be structured. @@ -11,30 +11,33 @@ Root Element - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + @@ -122,39 +125,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -241,16 +211,14 @@ - - - + @@ -260,7 +228,10 @@ + + + @@ -270,7 +241,6 @@ - @@ -292,8 +262,8 @@ - - + + @@ -316,4 +286,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/phpunit/phpunit/schema/8.5.xsd b/vendor/phpunit/phpunit/schema/8.5.xsd new file mode 100644 index 000000000..5881bafec --- /dev/null +++ b/vendor/phpunit/phpunit/schema/8.5.xsd @@ -0,0 +1,317 @@ + + + + + This Schema file defines the rules by which the XML configuration file of PHPUnit 8.5 may be structured. + + + + + + Root Element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The main type specifying the document structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/phpunit/phpunit/schema/9.2.xsd b/vendor/phpunit/phpunit/schema/9.2.xsd new file mode 100644 index 000000000..883f21bc0 --- /dev/null +++ b/vendor/phpunit/phpunit/schema/9.2.xsd @@ -0,0 +1,317 @@ + + + + + This Schema file defines the rules by which the XML configuration file of PHPUnit 9.2 may be structured. + + + + + + Root Element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The main type specifying the document structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/phpunit/phpunit/src/Framework/Assert.php b/vendor/phpunit/phpunit/src/Framework/Assert.php index 3e2abfa01..97321e35f 100644 --- a/vendor/phpunit/phpunit/src/Framework/Assert.php +++ b/vendor/phpunit/phpunit/src/Framework/Assert.php @@ -11,7 +11,6 @@ namespace PHPUnit\Framework; use const DEBUG_BACKTRACE_IGNORE_ARGS; use const PHP_EOL; -use function array_key_exists; use function array_shift; use function array_unshift; use function assert; @@ -39,8 +38,6 @@ use DOMAttr; use DOMDocument; use DOMElement; use PHPUnit\Framework\Constraint\ArrayHasKey; -use PHPUnit\Framework\Constraint\ArraySubset; -use PHPUnit\Framework\Constraint\Attribute; use PHPUnit\Framework\Constraint\Callback; use PHPUnit\Framework\Constraint\ClassHasAttribute; use PHPUnit\Framework\Constraint\ClassHasStaticAttribute; @@ -52,6 +49,9 @@ use PHPUnit\Framework\Constraint\GreaterThan; use PHPUnit\Framework\Constraint\IsAnything; use PHPUnit\Framework\Constraint\IsEmpty; use PHPUnit\Framework\Constraint\IsEqual; +use PHPUnit\Framework\Constraint\IsEqualCanonicalizing; +use PHPUnit\Framework\Constraint\IsEqualIgnoringCase; +use PHPUnit\Framework\Constraint\IsEqualWithDelta; use PHPUnit\Framework\Constraint\IsFalse; use PHPUnit\Framework\Constraint\IsFinite; use PHPUnit\Framework\Constraint\IsIdentical; @@ -70,6 +70,7 @@ use PHPUnit\Framework\Constraint\LogicalAnd; use PHPUnit\Framework\Constraint\LogicalNot; use PHPUnit\Framework\Constraint\LogicalOr; use PHPUnit\Framework\Constraint\LogicalXor; +use PHPUnit\Framework\Constraint\ObjectEquals; use PHPUnit\Framework\Constraint\ObjectHasAttribute; use PHPUnit\Framework\Constraint\RegularExpression; use PHPUnit\Framework\Constraint\SameSize; @@ -77,19 +78,15 @@ use PHPUnit\Framework\Constraint\StringContains; use PHPUnit\Framework\Constraint\StringEndsWith; use PHPUnit\Framework\Constraint\StringMatchesFormatDescription; use PHPUnit\Framework\Constraint\StringStartsWith; -use PHPUnit\Framework\Constraint\TraversableContains; use PHPUnit\Framework\Constraint\TraversableContainsEqual; use PHPUnit\Framework\Constraint\TraversableContainsIdentical; use PHPUnit\Framework\Constraint\TraversableContainsOnly; use PHPUnit\Util\Type; use PHPUnit\Util\Xml; -use ReflectionClass; -use ReflectionException; -use ReflectionObject; -use Traversable; +use PHPUnit\Util\Xml\Loader as XmlLoader; /** - * A set of assertion methods. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ abstract class Assert { @@ -129,43 +126,6 @@ abstract class Assert static::assertThat($array, $constraint, $message); } - /** - * Asserts that an array has a specified subset. - * - * @param array|ArrayAccess $subset - * @param array|ArrayAccess $array - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @codeCoverageIgnore - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3494 - */ - public static function assertArraySubset($subset, $array, bool $checkForObjectIdentity = false, string $message = ''): void - { - self::createWarning('assertArraySubset() is deprecated and will be removed in PHPUnit 9.'); - - if (!(is_array($subset) || $subset instanceof ArrayAccess)) { - throw InvalidArgumentException::create( - 1, - 'array or ArrayAccess' - ); - } - - if (!(is_array($array) || $array instanceof ArrayAccess)) { - throw InvalidArgumentException::create( - 2, - 'array or ArrayAccess' - ); - } - - $constraint = new ArraySubset($subset, $checkForObjectIdentity); - - static::assertThat($array, $constraint, $message); - } - /** * Asserts that an array does not have a specified key. * @@ -206,51 +166,9 @@ abstract class Assert * @throws Exception * @throws ExpectationFailedException */ - public static function assertContains($needle, $haystack, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void + public static function assertContains($needle, iterable $haystack, string $message = ''): void { - // @codeCoverageIgnoreStart - if (is_string($haystack)) { - self::createWarning('Using assertContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringContainsString() or assertStringContainsStringIgnoringCase() instead.'); - } - - if (!$checkForObjectIdentity) { - self::createWarning('The optional $checkForObjectIdentity parameter of assertContains() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertContainsEquals() instead.'); - } - - if ($checkForNonObjectIdentity) { - self::createWarning('The optional $checkForNonObjectIdentity parameter of assertContains() is deprecated and will be removed in PHPUnit 9.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertContains() is deprecated and will be removed in PHPUnit 9.'); - } - // @codeCoverageIgnoreEnd - - if (is_array($haystack) || - (is_object($haystack) && $haystack instanceof Traversable)) { - $constraint = new TraversableContains( - $needle, - $checkForObjectIdentity, - $checkForNonObjectIdentity - ); - } elseif (is_string($haystack)) { - if (!is_string($needle)) { - throw InvalidArgumentException::create( - 1, - 'string' - ); - } - - $constraint = new StringContains( - $needle, - $ignoreCase - ); - } else { - throw InvalidArgumentException::create( - 2, - 'array, traversable or string' - ); - } + $constraint = new TraversableContainsIdentical($needle); static::assertThat($haystack, $constraint, $message); } @@ -262,34 +180,6 @@ abstract class Assert static::assertThat($haystack, $constraint, $message); } - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object contains a needle. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeContains($needle, string $haystackAttributeName, $haystackClassOrObject, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void - { - self::createWarning('assertAttributeContains() is deprecated and will be removed in PHPUnit 9.'); - - static::assertContains( - $needle, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message, - $ignoreCase, - $checkForObjectIdentity, - $checkForNonObjectIdentity - ); - } - /** * Asserts that a haystack does not contain a needle. * @@ -297,55 +187,11 @@ abstract class Assert * @throws Exception * @throws ExpectationFailedException */ - public static function assertNotContains($needle, $haystack, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void + public static function assertNotContains($needle, iterable $haystack, string $message = ''): void { - // @codeCoverageIgnoreStart - if (is_string($haystack)) { - self::createWarning('Using assertNotContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringNotContainsString() or assertStringNotContainsStringIgnoringCase() instead.'); - } - - if (!$checkForObjectIdentity) { - self::createWarning('The optional $checkForObjectIdentity parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertNotContainsEquals() instead.'); - } - - if ($checkForNonObjectIdentity) { - self::createWarning('The optional $checkForNonObjectIdentity parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.'); - } - // @codeCoverageIgnoreEnd - - if (is_array($haystack) || - (is_object($haystack) && $haystack instanceof Traversable)) { - $constraint = new LogicalNot( - new TraversableContains( - $needle, - $checkForObjectIdentity, - $checkForNonObjectIdentity - ) - ); - } elseif (is_string($haystack)) { - if (!is_string($needle)) { - throw InvalidArgumentException::create( - 1, - 'string' - ); - } - - $constraint = new LogicalNot( - new StringContains( - $needle, - $ignoreCase - ) - ); - } else { - throw InvalidArgumentException::create( - 2, - 'array, traversable or string' - ); - } + $constraint = new LogicalNot( + new TraversableContainsIdentical($needle) + ); static::assertThat($haystack, $constraint, $message); } @@ -357,34 +203,6 @@ abstract class Assert static::assertThat($haystack, $constraint, $message); } - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object does not contain a needle. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeNotContains($needle, string $haystackAttributeName, $haystackClassOrObject, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void - { - self::createWarning('assertAttributeNotContains() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotContains( - $needle, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message, - $ignoreCase, - $checkForObjectIdentity, - $checkForNonObjectIdentity - ); - } - /** * Asserts that a haystack contains only values of a given type. * @@ -425,33 +243,6 @@ abstract class Assert ); } - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object contains only values of a given type. - * - * @param object|string $haystackClassOrObject - * @param bool $isNativeType - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeContainsOnly(string $type, string $haystackAttributeName, $haystackClassOrObject, ?bool $isNativeType = null, string $message = ''): void - { - self::createWarning('assertAttributeContainsOnly() is deprecated and will be removed in PHPUnit 9.'); - - static::assertContainsOnly( - $type, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $isNativeType, - $message - ); - } - /** * Asserts that a haystack does not contain only values of a given type. * @@ -476,34 +267,6 @@ abstract class Assert ); } - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object does not contain only values of a given - * type. - * - * @param object|string $haystackClassOrObject - * @param bool $isNativeType - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeNotContainsOnly(string $type, string $haystackAttributeName, $haystackClassOrObject, ?bool $isNativeType = null, string $message = ''): void - { - self::createWarning('assertAttributeNotContainsOnly() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotContainsOnly( - $type, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $isNativeType, - $message - ); - } - /** * Asserts the number of elements of an array, Countable or Traversable. * @@ -526,31 +289,6 @@ abstract class Assert ); } - /** - * Asserts the number of elements of an array, Countable or Traversable - * that is stored in an attribute. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeCount(int $expectedCount, string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeCount() is deprecated and will be removed in PHPUnit 9.'); - - static::assertCount( - $expectedCount, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message - ); - } - /** * Asserts the number of elements of an array, Countable or Traversable. * @@ -573,64 +311,15 @@ abstract class Assert static::assertThat($haystack, $constraint, $message); } - /** - * Asserts the number of elements of an array, Countable or Traversable - * that is stored in an attribute. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeNotCount(int $expectedCount, string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeNotCount() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotCount( - $expectedCount, - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message - ); - } - /** * Asserts that two variables are equal. * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertEquals($expected, $actual, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertEquals($expected, $actual, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($delta !== 0.0) { - self::createWarning('The optional $delta parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsWithDelta() instead.'); - } - - if ($maxDepth !== 10) { - self::createWarning('The optional $maxDepth parameter of assertEquals() is deprecated and will be removed in PHPUnit 9.'); - } - - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - - $constraint = new IsEqual( - $expected, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ); + $constraint = new IsEqual($expected); static::assertThat($actual, $constraint, $message); } @@ -643,13 +332,7 @@ abstract class Assert */ public static function assertEqualsCanonicalizing($expected, $actual, string $message = ''): void { - $constraint = new IsEqual( - $expected, - 0.0, - 10, - true, - false - ); + $constraint = new IsEqualCanonicalizing($expected); static::assertThat($actual, $constraint, $message); } @@ -662,13 +345,7 @@ abstract class Assert */ public static function assertEqualsIgnoringCase($expected, $actual, string $message = ''): void { - $constraint = new IsEqual( - $expected, - 0.0, - 10, - false, - true - ); + $constraint = new IsEqualIgnoringCase($expected); static::assertThat($actual, $constraint, $message); } @@ -681,7 +358,7 @@ abstract class Assert */ public static function assertEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void { - $constraint = new IsEqual( + $constraint = new IsEqualWithDelta( $expected, $delta ); @@ -689,73 +366,16 @@ abstract class Assert static::assertThat($actual, $constraint, $message); } - /** - * Asserts that a variable is equal to an attribute of an object. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeEquals($expected, string $actualAttributeName, $actualClassOrObject, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void - { - self::createWarning('assertAttributeEquals() is deprecated and will be removed in PHPUnit 9.'); - - static::assertEquals( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ); - } - /** * Asserts that two variables are not equal. * - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertNotEquals($expected, $actual, string $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false): void + public static function assertNotEquals($expected, $actual, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($delta !== 0.0) { - self::createWarning('The optional $delta parameter of assertNotEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertNotEqualsWithDelta() instead.'); - } - - if ($maxDepth !== 10) { - self::createWarning('The optional $maxDepth parameter of assertNotEquals() is deprecated and will be removed in PHPUnit 9.'); - } - - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertNotEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertNotEqualsCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertNotEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertNotEqualsIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - $constraint = new LogicalNot( - new IsEqual( - $expected, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ) + new IsEqual($expected) ); static::assertThat($actual, $constraint, $message); @@ -770,13 +390,7 @@ abstract class Assert public static function assertNotEqualsCanonicalizing($expected, $actual, string $message = ''): void { $constraint = new LogicalNot( - new IsEqual( - $expected, - 0.0, - 10, - true, - false - ) + new IsEqualCanonicalizing($expected) ); static::assertThat($actual, $constraint, $message); @@ -791,13 +405,7 @@ abstract class Assert public static function assertNotEqualsIgnoringCase($expected, $actual, string $message = ''): void { $constraint = new LogicalNot( - new IsEqual( - $expected, - 0.0, - 10, - false, - true - ) + new IsEqualIgnoringCase($expected) ); static::assertThat($actual, $constraint, $message); @@ -812,7 +420,7 @@ abstract class Assert public static function assertNotEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void { $constraint = new LogicalNot( - new IsEqual( + new IsEqualWithDelta( $expected, $delta ) @@ -822,30 +430,14 @@ abstract class Assert } /** - * Asserts that a variable is not equal to an attribute of an object. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore */ - public static function assertAttributeNotEquals($expected, string $actualAttributeName, $actualClassOrObject, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void { - self::createWarning('assertAttributeNotEquals() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotEquals( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase + static::assertThat( + $actual, + static::objectEquals($expected, $method), + $message ); } @@ -862,30 +454,6 @@ abstract class Assert static::assertThat($actual, static::isEmpty(), $message); } - /** - * Asserts that a static attribute of a class or an attribute of an object - * is empty. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeEmpty(string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeEmpty() is deprecated and will be removed in PHPUnit 9.'); - - static::assertEmpty( - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message - ); - } - /** * Asserts that a variable is not empty. * @@ -899,30 +467,6 @@ abstract class Assert static::assertThat($actual, static::logicalNot(static::isEmpty()), $message); } - /** - * Asserts that a static attribute of a class or an attribute of an object - * is not empty. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeNotEmpty(string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeNotEmpty() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotEmpty( - static::readAttribute($haystackClassOrObject, $haystackAttributeName), - $message - ); - } - /** * Asserts that a value is greater than another value. * @@ -934,30 +478,6 @@ abstract class Assert static::assertThat($actual, static::greaterThan($expected), $message); } - /** - * Asserts that an attribute is greater than another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeGreaterThan($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeGreaterThan() is deprecated and will be removed in PHPUnit 9.'); - - static::assertGreaterThan( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that a value is greater than or equal to another value. * @@ -973,30 +493,6 @@ abstract class Assert ); } - /** - * Asserts that an attribute is greater than or equal to another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeGreaterThanOrEqual($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeGreaterThanOrEqual() is deprecated and will be removed in PHPUnit 9.'); - - static::assertGreaterThanOrEqual( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that a value is smaller than another value. * @@ -1008,30 +504,6 @@ abstract class Assert static::assertThat($actual, static::lessThan($expected), $message); } - /** - * Asserts that an attribute is smaller than another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeLessThan($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeLessThan() is deprecated and will be removed in PHPUnit 9.'); - - static::assertLessThan( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that a value is smaller than or equal to another value. * @@ -1043,30 +515,6 @@ abstract class Assert static::assertThat($actual, static::lessThanOrEqual($expected), $message); } - /** - * Asserts that an attribute is smaller than or equal to another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeLessThanOrEqual($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeLessThanOrEqual() is deprecated and will be removed in PHPUnit 9.'); - - static::assertLessThanOrEqual( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that the contents of one file is equal to the contents of another * file. @@ -1074,28 +522,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertFileEquals(string $expected, string $actual, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertFileEquals(string $expected, string $actual, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertFileEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertFileEqualsCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertFileEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertFileEqualsIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); - $constraint = new IsEqual( - file_get_contents($expected), - 0.0, - 10, - $canonicalize, - $ignoreCase - ); + $constraint = new IsEqual(file_get_contents($expected)); static::assertThat(file_get_contents($actual), $constraint, $message); } @@ -1112,11 +544,8 @@ abstract class Assert static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); - $constraint = new IsEqual( - file_get_contents($expected), - 0.0, - 10, - true + $constraint = new IsEqualCanonicalizing( + file_get_contents($expected) ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -1134,13 +563,7 @@ abstract class Assert static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); - $constraint = new IsEqual( - file_get_contents($expected), - 0.0, - 10, - false, - true - ); + $constraint = new IsEqualIgnoringCase(file_get_contents($expected)); static::assertThat(file_get_contents($actual), $constraint, $message); } @@ -1152,29 +575,13 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertFileNotEquals(string $expected, string $actual, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertFileNotEquals(string $expected, string $actual, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertFileNotEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertFileNotEqualsCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertFileNotEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertFileNotEqualsIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expected), - 0.0, - 10, - $canonicalize, - $ignoreCase - ) + new IsEqual(file_get_contents($expected)) ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -1193,12 +600,7 @@ abstract class Assert static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expected), - 0.0, - 10, - true - ) + new IsEqualCanonicalizing(file_get_contents($expected)) ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -1217,13 +619,7 @@ abstract class Assert static::assertFileExists($actual, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expected), - 0.0, - 10, - false, - true - ) + new IsEqualIgnoringCase(file_get_contents($expected)) ); static::assertThat(file_get_contents($actual), $constraint, $message); @@ -1236,27 +632,11 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertStringEqualsFile() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertStringEqualsFileCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertStringEqualsFile() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertStringEqualsFileIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - static::assertFileExists($expectedFile, $message); - $constraint = new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - $canonicalize, - $ignoreCase - ); + $constraint = new IsEqual(file_get_contents($expectedFile)); static::assertThat($actualString, $constraint, $message); } @@ -1272,12 +652,7 @@ abstract class Assert { static::assertFileExists($expectedFile, $message); - $constraint = new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - true - ); + $constraint = new IsEqualCanonicalizing(file_get_contents($expectedFile)); static::assertThat($actualString, $constraint, $message); } @@ -1293,13 +668,7 @@ abstract class Assert { static::assertFileExists($expectedFile, $message); - $constraint = new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - false, - true - ); + $constraint = new IsEqualIgnoringCase(file_get_contents($expectedFile)); static::assertThat($actualString, $constraint, $message); } @@ -1311,28 +680,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + public static function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void { - // @codeCoverageIgnoreStart - if ($canonicalize) { - self::createWarning('The optional $canonicalize parameter of assertStringNotEqualsFile() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertStringNotEqualsFileCanonicalizing() instead.'); - } - - if ($ignoreCase) { - self::createWarning('The optional $ignoreCase parameter of assertStringNotEqualsFile() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertStringNotEqualsFileIgnoringCase() instead.'); - } - // @codeCoverageIgnoreEnd - static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - $canonicalize, - $ignoreCase - ) + new IsEqual(file_get_contents($expectedFile)) ); static::assertThat($actualString, $constraint, $message); @@ -1350,12 +703,7 @@ abstract class Assert static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - true - ) + new IsEqualCanonicalizing(file_get_contents($expectedFile)) ); static::assertThat($actualString, $constraint, $message); @@ -1373,13 +721,7 @@ abstract class Assert static::assertFileExists($expectedFile, $message); $constraint = new LogicalNot( - new IsEqual( - file_get_contents($expectedFile), - 0.0, - 10, - false, - true - ) + new IsEqualIgnoringCase(file_get_contents($expectedFile)) ); static::assertThat($actualString, $constraint, $message); @@ -1402,8 +744,25 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ + public static function assertIsNotReadable(string $filename, string $message = ''): void + { + static::assertThat($filename, new LogicalNot(new IsReadable), $message); + } + + /** + * Asserts that a file/dir exists and is not readable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4062 + */ public static function assertNotIsReadable(string $filename, string $message = ''): void { + self::createWarning('assertNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertIsNotReadable() instead.'); + static::assertThat($filename, new LogicalNot(new IsReadable), $message); } @@ -1424,8 +783,25 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ + public static function assertIsNotWritable(string $filename, string $message = ''): void + { + static::assertThat($filename, new LogicalNot(new IsWritable), $message); + } + + /** + * Asserts that a file/dir exists and is not writable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4065 + */ public static function assertNotIsWritable(string $filename, string $message = ''): void { + self::createWarning('assertNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertIsNotWritable() instead.'); + static::assertThat($filename, new LogicalNot(new IsWritable), $message); } @@ -1446,8 +822,25 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ + public static function assertDirectoryDoesNotExist(string $directory, string $message = ''): void + { + static::assertThat($directory, new LogicalNot(new DirectoryExists), $message); + } + + /** + * Asserts that a directory does not exist. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4068 + */ public static function assertDirectoryNotExists(string $directory, string $message = ''): void { + self::createWarning('assertDirectoryNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryDoesNotExist() instead.'); + static::assertThat($directory, new LogicalNot(new DirectoryExists), $message); } @@ -1469,10 +862,28 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertDirectoryNotIsReadable(string $directory, string $message = ''): void + public static function assertDirectoryIsNotReadable(string $directory, string $message = ''): void { self::assertDirectoryExists($directory, $message); - self::assertNotIsReadable($directory, $message); + self::assertIsNotReadable($directory, $message); + } + + /** + * Asserts that a directory exists and is not readable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4071 + */ + public static function assertDirectoryNotIsReadable(string $directory, string $message = ''): void + { + self::createWarning('assertDirectoryNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotReadable() instead.'); + + self::assertDirectoryExists($directory, $message); + self::assertIsNotReadable($directory, $message); } /** @@ -1493,10 +904,28 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertDirectoryNotIsWritable(string $directory, string $message = ''): void + public static function assertDirectoryIsNotWritable(string $directory, string $message = ''): void { self::assertDirectoryExists($directory, $message); - self::assertNotIsWritable($directory, $message); + self::assertIsNotWritable($directory, $message); + } + + /** + * Asserts that a directory exists and is not writable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4074 + */ + public static function assertDirectoryNotIsWritable(string $directory, string $message = ''): void + { + self::createWarning('assertDirectoryNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotWritable() instead.'); + + self::assertDirectoryExists($directory, $message); + self::assertIsNotWritable($directory, $message); } /** @@ -1516,8 +945,25 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ + public static function assertFileDoesNotExist(string $filename, string $message = ''): void + { + static::assertThat($filename, new LogicalNot(new FileExists), $message); + } + + /** + * Asserts that a file does not exist. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4077 + */ public static function assertFileNotExists(string $filename, string $message = ''): void { + self::createWarning('assertFileNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileDoesNotExist() instead.'); + static::assertThat($filename, new LogicalNot(new FileExists), $message); } @@ -1539,10 +985,28 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertFileNotIsReadable(string $file, string $message = ''): void + public static function assertFileIsNotReadable(string $file, string $message = ''): void { self::assertFileExists($file, $message); - self::assertNotIsReadable($file, $message); + self::assertIsNotReadable($file, $message); + } + + /** + * Asserts that a file exists and is not readable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4080 + */ + public static function assertFileNotIsReadable(string $file, string $message = ''): void + { + self::createWarning('assertFileNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotReadable() instead.'); + + self::assertFileExists($file, $message); + self::assertIsNotReadable($file, $message); } /** @@ -1563,10 +1027,28 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public static function assertFileNotIsWritable(string $file, string $message = ''): void + public static function assertFileIsNotWritable(string $file, string $message = ''): void { self::assertFileExists($file, $message); - self::assertNotIsWritable($file, $message); + self::assertIsNotWritable($file, $message); + } + + /** + * Asserts that a file exists and is not writable. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4083 + */ + public static function assertFileNotIsWritable(string $file, string $message = ''): void + { + self::createWarning('assertFileNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotWritable() instead.'); + + self::assertFileExists($file, $message); + self::assertIsNotWritable($file, $message); } /** @@ -1853,31 +1335,6 @@ abstract class Assert ); } - /** - * Asserts that a variable and an attribute of an object have the same type - * and value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeSame($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeSame() is deprecated and will be removed in PHPUnit 9.'); - - static::assertSame( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that two variables do not have the same type and value. * Used on objects, it asserts that two variables do not reference @@ -1901,31 +1358,6 @@ abstract class Assert ); } - /** - * Asserts that a variable and an attribute of an object do not have the - * same type and value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeNotSame($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - self::createWarning('assertAttributeNotSame() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotSame( - $expected, - static::readAttribute($actualClassOrObject, $actualAttributeName), - $message - ); - } - /** * Asserts that a variable is of a given type. * @@ -1952,32 +1384,6 @@ abstract class Assert ); } - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @psalm-param class-string $expected - */ - public static function assertAttributeInstanceOf(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - self::createWarning('assertAttributeInstanceOf() is deprecated and will be removed in PHPUnit 9.'); - - static::assertInstanceOf( - $expected, - static::readAttribute($classOrObject, $attributeName), - $message - ); - } - /** * Asserts that a variable is not of a given type. * @@ -2006,82 +1412,6 @@ abstract class Assert ); } - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @psalm-param class-string $expected - */ - public static function assertAttributeNotInstanceOf(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - self::createWarning('assertAttributeNotInstanceOf() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotInstanceOf( - $expected, - static::readAttribute($classOrObject, $attributeName), - $message - ); - } - - /** - * Asserts that a variable is of a given type. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3369 - * - * @codeCoverageIgnore - */ - public static function assertInternalType(string $expected, $actual, string $message = ''): void - { - self::createWarning( - sprintf( - 'assertInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use %s() instead.', - self::assertInternalTypeReplacement($expected, false) - ) - ); - - static::assertThat( - $actual, - new IsType($expected), - $message - ); - } - - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function assertAttributeInternalType(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - self::createWarning('assertAttributeInternalType() is deprecated and will be removed in PHPUnit 9.'); - - static::assertInternalType( - $expected, - static::readAttribute($classOrObject, $attributeName), - $message - ); - } - /** * Asserts that a variable is of type array. * @@ -2201,6 +1531,23 @@ abstract class Assert ); } + /** + * Asserts that a variable is of type resource and is closed. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @psalm-assert resource $actual + */ + public static function assertIsClosedResource($actual, string $message = ''): void + { + static::assertThat( + $actual, + new IsType(IsType::TYPE_CLOSED_RESOURCE), + $message + ); + } + /** * Asserts that a variable is of type string. * @@ -2269,34 +1616,6 @@ abstract class Assert ); } - /** - * Asserts that a variable is not of a given type. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3369 - * - * @codeCoverageIgnore - */ - public static function assertNotInternalType(string $expected, $actual, string $message = ''): void - { - self::createWarning( - sprintf( - 'assertNotInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use %s() instead.', - self::assertInternalTypeReplacement($expected, true) - ) - ); - - static::assertThat( - $actual, - new LogicalNot( - new IsType($expected) - ), - $message - ); - } - /** * Asserts that a variable is not of type array. * @@ -2416,6 +1735,23 @@ abstract class Assert ); } + /** + * Asserts that a variable is not of type resource. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @psalm-assert !resource $actual + */ + public static function assertIsNotClosedResource($actual, string $message = ''): void + { + static::assertThat( + $actual, + new LogicalNot(new IsType(IsType::TYPE_CLOSED_RESOURCE)), + $message + ); + } + /** * Asserts that a variable is not of type string. * @@ -2485,27 +1821,14 @@ abstract class Assert } /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject + * Asserts that a string matches a given regular expression. * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore */ - public static function assertAttributeNotInternalType(string $expected, string $attributeName, $classOrObject, string $message = ''): void + public static function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void { - self::createWarning('assertAttributeNotInternalType() is deprecated and will be removed in PHPUnit 9.'); - - static::assertNotInternalType( - $expected, - static::readAttribute($classOrObject, $attributeName), - $message - ); + static::assertThat($string, new RegularExpression($pattern), $message); } /** @@ -2513,9 +1836,15 @@ abstract class Assert * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4086 */ public static function assertRegExp(string $pattern, string $string, string $message = ''): void { + self::createWarning('assertRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertMatchesRegularExpression() instead.'); + static::assertThat($string, new RegularExpression($pattern), $message); } @@ -2525,8 +1854,31 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ + public static function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void + { + static::assertThat( + $string, + new LogicalNot( + new RegularExpression($pattern) + ), + $message + ); + } + + /** + * Asserts that a string does not match a given regular expression. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4089 + */ public static function assertNotRegExp(string $pattern, string $string, string $message = ''): void { + self::createWarning('assertNotRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDoesNotMatchRegularExpression() instead.'); + static::assertThat( $string, new LogicalNot( @@ -2774,8 +2126,8 @@ abstract class Assert */ public static function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void { - $expected = Xml::loadFile($expectedFile); - $actual = Xml::loadFile($actualFile); + $expected = (new XmlLoader)->loadFile($expectedFile); + $actual = (new XmlLoader)->loadFile($actualFile); static::assertEquals($expected, $actual, $message); } @@ -2783,14 +2135,14 @@ abstract class Assert /** * Asserts that two XML files are not equal. * + * @throws \PHPUnit\Util\Exception * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException */ public static function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void { - $expected = Xml::loadFile($expectedFile); - $actual = Xml::loadFile($actualFile); + $expected = (new XmlLoader)->loadFile($expectedFile); + $actual = (new XmlLoader)->loadFile($actualFile); static::assertNotEquals($expected, $actual, $message); } @@ -2800,14 +2152,21 @@ abstract class Assert * * @param DOMDocument|string $actualXml * + * @throws \PHPUnit\Util\Xml\Exception * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException */ public static function assertXmlStringEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void { - $expected = Xml::loadFile($expectedFile); - $actual = Xml::load($actualXml); + if (!is_string($actualXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $actual = $actualXml; + } else { + $actual = (new XmlLoader)->load($actualXml); + } + + $expected = (new XmlLoader)->loadFile($expectedFile); static::assertEquals($expected, $actual, $message); } @@ -2817,14 +2176,21 @@ abstract class Assert * * @param DOMDocument|string $actualXml * + * @throws \PHPUnit\Util\Xml\Exception * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException */ public static function assertXmlStringNotEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void { - $expected = Xml::loadFile($expectedFile); - $actual = Xml::load($actualXml); + if (!is_string($actualXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $actual = $actualXml; + } else { + $actual = (new XmlLoader)->load($actualXml); + } + + $expected = (new XmlLoader)->loadFile($expectedFile); static::assertNotEquals($expected, $actual, $message); } @@ -2835,14 +2201,27 @@ abstract class Assert * @param DOMDocument|string $expectedXml * @param DOMDocument|string $actualXml * + * @throws \PHPUnit\Util\Xml\Exception * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException */ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, string $message = ''): void { - $expected = Xml::load($expectedXml); - $actual = Xml::load($actualXml); + if (!is_string($expectedXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $expectedXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $expected = $expectedXml; + } else { + $expected = (new XmlLoader)->load($expectedXml); + } + + if (!is_string($actualXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $actual = $actualXml; + } else { + $actual = (new XmlLoader)->load($actualXml); + } static::assertEquals($expected, $actual, $message); } @@ -2853,14 +2232,27 @@ abstract class Assert * @param DOMDocument|string $expectedXml * @param DOMDocument|string $actualXml * + * @throws \PHPUnit\Util\Xml\Exception * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException */ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, string $message = ''): void { - $expected = Xml::load($expectedXml); - $actual = Xml::load($actualXml); + if (!is_string($expectedXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $expectedXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $expected = $expectedXml; + } else { + $expected = (new XmlLoader)->load($expectedXml); + } + + if (!is_string($actualXml)) { + self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + + $actual = $actualXml; + } else { + $actual = (new XmlLoader)->load($actualXml); + } static::assertNotEquals($expected, $actual, $message); } @@ -2871,9 +2263,15 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws AssertionFailedError * @throws ExpectationFailedException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4091 */ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, bool $checkAttributes = false, string $message = ''): void { + self::createWarning('assertEqualXMLStructure() is deprecated and will be removed in PHPUnit 10.'); + $expectedElement = Xml::import($expectedElement); $actualElement = Xml::import($actualElement); @@ -3184,26 +2582,6 @@ abstract class Assert return new IsNan; } - /** - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function attribute(Constraint $constraint, string $attributeName): Attribute - { - self::createWarning('attribute() is deprecated and will be removed in PHPUnit 9.'); - - return new Attribute($constraint, $attributeName); - } - - /** - * @deprecated Use containsEqual() or containsIdentical() instead - */ - public static function contains($value, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): TraversableContains - { - return new TraversableContains($value, $checkForObjectIdentity, $checkForNonObjectIdentity); - } - public static function containsEqual($value): TraversableContainsEqual { return new TraversableContainsEqual($value); @@ -3232,30 +2610,24 @@ abstract class Assert return new ArrayHasKey($key); } - public static function equalTo($value, float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): IsEqual + public static function equalTo($value): IsEqual { - return new IsEqual($value, $delta, $maxDepth, $canonicalize, $ignoreCase); + return new IsEqual($value, 0.0, false, false); } - /** - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function attributeEqualTo(string $attributeName, $value, float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): Attribute + public static function equalToCanonicalizing($value): IsEqualCanonicalizing { - self::createWarning('attributeEqualTo() is deprecated and will be removed in PHPUnit 9.'); + return new IsEqualCanonicalizing($value); + } - return static::attribute( - static::equalTo( - $value, - $delta, - $maxDepth, - $canonicalize, - $ignoreCase - ), - $attributeName - ); + public static function equalToIgnoringCase($value): IsEqualIgnoringCase + { + return new IsEqualIgnoringCase($value); + } + + public static function equalToWithDelta($value, float $delta): IsEqualWithDelta + { + return new IsEqualWithDelta($value, $delta); } public static function isEmpty(): IsEmpty @@ -3369,6 +2741,11 @@ abstract class Assert return new Count($count); } + public static function objectEquals(object $object, string $method = 'equals'): ObjectEquals + { + return new ObjectEquals($object, $method); + } + /** * Fails a test with the given message. * @@ -3383,156 +2760,6 @@ abstract class Assert throw new AssertionFailedError($message); } - /** - * Returns the value of an attribute of a class or an object. - * This also works for attributes that are declared protected or private. - * - * @param object|string $classOrObject - * - * @throws Exception - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function readAttribute($classOrObject, string $attributeName) - { - self::createWarning('readAttribute() is deprecated and will be removed in PHPUnit 9.'); - - if (!self::isValidClassAttributeName($attributeName)) { - throw InvalidArgumentException::create(2, 'valid attribute name'); - } - - if (is_string($classOrObject)) { - if (!class_exists($classOrObject)) { - throw InvalidArgumentException::create( - 1, - 'class name' - ); - } - - return static::getStaticAttribute( - $classOrObject, - $attributeName - ); - } - - if (is_object($classOrObject)) { - return static::getObjectAttribute( - $classOrObject, - $attributeName - ); - } - - throw InvalidArgumentException::create( - 1, - 'class name or object' - ); - } - - /** - * Returns the value of a static attribute. - * This also works for attributes that are declared protected or private. - * - * @throws Exception - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function getStaticAttribute(string $className, string $attributeName) - { - self::createWarning('getStaticAttribute() is deprecated and will be removed in PHPUnit 9.'); - - if (!class_exists($className)) { - throw InvalidArgumentException::create(1, 'class name'); - } - - if (!self::isValidClassAttributeName($attributeName)) { - throw InvalidArgumentException::create(2, 'valid attribute name'); - } - - try { - $class = new ReflectionClass($className); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - while ($class) { - $attributes = $class->getStaticProperties(); - - if (array_key_exists($attributeName, $attributes)) { - return $attributes[$attributeName]; - } - - $class = $class->getParentClass(); - } - - throw new Exception( - sprintf( - 'Attribute "%s" not found in class.', - $attributeName - ) - ); - } - - /** - * Returns the value of an object's attribute. - * This also works for attributes that are declared protected or private. - * - * @param object $object - * - * @throws Exception - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ - public static function getObjectAttribute($object, string $attributeName) - { - self::createWarning('getObjectAttribute() is deprecated and will be removed in PHPUnit 9.'); - - if (!is_object($object)) { - throw InvalidArgumentException::create(1, 'object'); - } - - if (!self::isValidClassAttributeName($attributeName)) { - throw InvalidArgumentException::create(2, 'valid attribute name'); - } - - $reflector = new ReflectionObject($object); - - do { - try { - $attribute = $reflector->getProperty($attributeName); - - if (!$attribute || $attribute->isPublic()) { - return $object->{$attributeName}; - } - - $attribute->setAccessible(true); - $value = $attribute->getValue($object); - $attribute->setAccessible(false); - - return $value; - } catch (ReflectionException $e) { - } - } while ($reflector = $reflector->getParentClass()); - - throw new Exception( - sprintf( - 'Attribute "%s" not found in object.', - $attributeName - ) - ); - } - /** * Mark the test as incomplete. * @@ -3630,59 +2857,4 @@ abstract class Assert } } } - - /** - * @throws Exception - */ - private static function assertInternalTypeReplacement(string $type, bool $not): string - { - switch ($type) { - case 'numeric': - return 'assertIs' . ($not ? 'Not' : '') . 'Numeric'; - - case 'integer': - case 'int': - return 'assertIs' . ($not ? 'Not' : '') . 'Int'; - - case 'double': - case 'float': - case 'real': - return 'assertIs' . ($not ? 'Not' : '') . 'Float'; - - case 'string': - return 'assertIs' . ($not ? 'Not' : '') . 'String'; - - case 'boolean': - case 'bool': - return 'assertIs' . ($not ? 'Not' : '') . 'Bool'; - - case 'null': - return 'assert' . ($not ? 'Not' : '') . 'Null'; - - case 'array': - return 'assertIs' . ($not ? 'Not' : '') . 'Array'; - - case 'object': - return 'assertIs' . ($not ? 'Not' : '') . 'Object'; - - case 'resource': - return 'assertIs' . ($not ? 'Not' : '') . 'Resource'; - - case 'scalar': - return 'assertIs' . ($not ? 'Not' : '') . 'Scalar'; - - case 'callable': - return 'assertIs' . ($not ? 'Not' : '') . 'Callable'; - - case 'iterable': - return 'assertIs' . ($not ? 'Not' : '') . 'Iterable'; - } - - throw new Exception( - sprintf( - '"%s" is not a type supported by assertInternalType() / assertNotInternalType()', - $type - ) - ); - } } diff --git a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php index 1d3078835..5b8c50ed9 100644 --- a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php +++ b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php @@ -7,10 +7,15 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\AssertionFailedError; +namespace PHPUnit\Framework; + +use function func_get_args; +use function function_exists; +use ArrayAccess; +use Countable; +use DOMDocument; +use DOMElement; use PHPUnit\Framework\Constraint\ArrayHasKey; -use PHPUnit\Framework\Constraint\Attribute; use PHPUnit\Framework\Constraint\Callback; use PHPUnit\Framework\Constraint\ClassHasAttribute; use PHPUnit\Framework\Constraint\ClassHasStaticAttribute; @@ -22,6 +27,9 @@ use PHPUnit\Framework\Constraint\GreaterThan; use PHPUnit\Framework\Constraint\IsAnything; use PHPUnit\Framework\Constraint\IsEmpty; use PHPUnit\Framework\Constraint\IsEqual; +use PHPUnit\Framework\Constraint\IsEqualCanonicalizing; +use PHPUnit\Framework\Constraint\IsEqualIgnoringCase; +use PHPUnit\Framework\Constraint\IsEqualWithDelta; use PHPUnit\Framework\Constraint\IsFalse; use PHPUnit\Framework\Constraint\IsFinite; use PHPUnit\Framework\Constraint\IsIdentical; @@ -39,17 +47,16 @@ use PHPUnit\Framework\Constraint\LogicalAnd; use PHPUnit\Framework\Constraint\LogicalNot; use PHPUnit\Framework\Constraint\LogicalOr; use PHPUnit\Framework\Constraint\LogicalXor; +use PHPUnit\Framework\Constraint\ObjectEquals; use PHPUnit\Framework\Constraint\ObjectHasAttribute; use PHPUnit\Framework\Constraint\RegularExpression; use PHPUnit\Framework\Constraint\StringContains; use PHPUnit\Framework\Constraint\StringEndsWith; use PHPUnit\Framework\Constraint\StringMatchesFormatDescription; use PHPUnit\Framework\Constraint\StringStartsWith; -use PHPUnit\Framework\Constraint\TraversableContains; use PHPUnit\Framework\Constraint\TraversableContainsEqual; use PHPUnit\Framework\Constraint\TraversableContainsIdentical; use PHPUnit\Framework\Constraint\TraversableContainsOnly; -use PHPUnit\Framework\ExpectationFailedException; use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher; use PHPUnit\Framework\MockObject\Rule\InvokedAtIndex as InvokedAtIndexMatcher; use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastCount as InvokedAtLeastCountMatcher; @@ -63,1419 +70,1388 @@ use PHPUnit\Framework\MockObject\Stub\ReturnCallback as ReturnCallbackStub; use PHPUnit\Framework\MockObject\Stub\ReturnSelf as ReturnSelfStub; use PHPUnit\Framework\MockObject\Stub\ReturnStub; use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub; +use Throwable; -if (!\function_exists('PHPUnit\Framework\assertArrayHasKey')) { +if (!function_exists('PHPUnit\Framework\assertArrayHasKey')) { /** * Asserts that an array has a specified key. * * @param int|string $key * @param array|ArrayAccess $array * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertArrayHasKey */ function assertArrayHasKey($key, $array, string $message = ''): void { - Assert::assertArrayHasKey(...\func_get_args()); + Assert::assertArrayHasKey(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertArraySubset')) { - /** - * Asserts that an array has a specified subset. - * - * @param array|ArrayAccess $subset - * @param array|ArrayAccess $array - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @codeCoverageIgnore - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3494 - * @see Assert::assertArraySubset - */ - function assertArraySubset($subset, $array, bool $checkForObjectIdentity = false, string $message = ''): void - { - Assert::assertArraySubset(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertArrayNotHasKey')) { +if (!function_exists('PHPUnit\Framework\assertArrayNotHasKey')) { /** * Asserts that an array does not have a specified key. * * @param int|string $key * @param array|ArrayAccess $array * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertArrayNotHasKey */ function assertArrayNotHasKey($key, $array, string $message = ''): void { - Assert::assertArrayNotHasKey(...\func_get_args()); + Assert::assertArrayNotHasKey(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertContains')) { +if (!function_exists('PHPUnit\Framework\assertContains')) { /** * Asserts that a haystack contains a needle. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertContains */ - function assertContains($needle, $haystack, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void + function assertContains($needle, iterable $haystack, string $message = ''): void { - Assert::assertContains(...\func_get_args()); + Assert::assertContains(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertContainsEquals')) { +if (!function_exists('PHPUnit\Framework\assertContainsEquals')) { function assertContainsEquals($needle, iterable $haystack, string $message = ''): void { - Assert::assertContainsEquals(...\func_get_args()); + Assert::assertContainsEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeContains')) { - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object contains a needle. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeContains - */ - function assertAttributeContains($needle, string $haystackAttributeName, $haystackClassOrObject, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void - { - Assert::assertAttributeContains(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotContains')) { +if (!function_exists('PHPUnit\Framework\assertNotContains')) { /** * Asserts that a haystack does not contain a needle. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotContains */ - function assertNotContains($needle, $haystack, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void + function assertNotContains($needle, iterable $haystack, string $message = ''): void { - Assert::assertNotContains(...\func_get_args()); + Assert::assertNotContains(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotContainsEquals')) { +if (!function_exists('PHPUnit\Framework\assertNotContainsEquals')) { function assertNotContainsEquals($needle, iterable $haystack, string $message = ''): void { - Assert::assertNotContainsEquals(...\func_get_args()); + Assert::assertNotContainsEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotContains')) { - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object does not contain a needle. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotContains - */ - function assertAttributeNotContains($needle, string $haystackAttributeName, $haystackClassOrObject, string $message = '', bool $ignoreCase = false, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): void - { - Assert::assertAttributeNotContains(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertContainsOnly')) { +if (!function_exists('PHPUnit\Framework\assertContainsOnly')) { /** * Asserts that a haystack contains only values of a given type. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertContainsOnly */ function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void { - Assert::assertContainsOnly(...\func_get_args()); + Assert::assertContainsOnly(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertContainsOnlyInstancesOf')) { +if (!function_exists('PHPUnit\Framework\assertContainsOnlyInstancesOf')) { /** * Asserts that a haystack contains only instances of a given class name. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertContainsOnlyInstancesOf */ function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = ''): void { - Assert::assertContainsOnlyInstancesOf(...\func_get_args()); + Assert::assertContainsOnlyInstancesOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeContainsOnly')) { - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object contains only values of a given type. - * - * @param object|string $haystackClassOrObject - * @param bool $isNativeType - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeContainsOnly - */ - function assertAttributeContainsOnly(string $type, string $haystackAttributeName, $haystackClassOrObject, ?bool $isNativeType = null, string $message = ''): void - { - Assert::assertAttributeContainsOnly(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotContainsOnly')) { +if (!function_exists('PHPUnit\Framework\assertNotContainsOnly')) { /** * Asserts that a haystack does not contain only values of a given type. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotContainsOnly */ function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void { - Assert::assertNotContainsOnly(...\func_get_args()); + Assert::assertNotContainsOnly(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotContainsOnly')) { - /** - * Asserts that a haystack that is stored in a static attribute of a class - * or an attribute of an object does not contain only values of a given - * type. - * - * @param object|string $haystackClassOrObject - * @param bool $isNativeType - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotContainsOnly - */ - function assertAttributeNotContainsOnly(string $type, string $haystackAttributeName, $haystackClassOrObject, ?bool $isNativeType = null, string $message = ''): void - { - Assert::assertAttributeNotContainsOnly(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertCount')) { +if (!function_exists('PHPUnit\Framework\assertCount')) { /** * Asserts the number of elements of an array, Countable or Traversable. * * @param Countable|iterable $haystack * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertCount */ function assertCount(int $expectedCount, $haystack, string $message = ''): void { - Assert::assertCount(...\func_get_args()); + Assert::assertCount(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeCount')) { - /** - * Asserts the number of elements of an array, Countable or Traversable - * that is stored in an attribute. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeCount - */ - function assertAttributeCount(int $expectedCount, string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - Assert::assertAttributeCount(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotCount')) { +if (!function_exists('PHPUnit\Framework\assertNotCount')) { /** * Asserts the number of elements of an array, Countable or Traversable. * * @param Countable|iterable $haystack * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotCount */ function assertNotCount(int $expectedCount, $haystack, string $message = ''): void { - Assert::assertNotCount(...\func_get_args()); + Assert::assertNotCount(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotCount')) { - /** - * Asserts the number of elements of an array, Countable or Traversable - * that is stored in an attribute. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotCount - */ - function assertAttributeNotCount(int $expectedCount, string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - Assert::assertAttributeNotCount(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertEquals')) { +if (!function_exists('PHPUnit\Framework\assertEquals')) { /** * Asserts that two variables are equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertEquals */ - function assertEquals($expected, $actual, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void + function assertEquals($expected, $actual, string $message = ''): void { - Assert::assertEquals(...\func_get_args()); + Assert::assertEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertEqualsCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertEqualsCanonicalizing')) { /** * Asserts that two variables are equal (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertEqualsCanonicalizing */ function assertEqualsCanonicalizing($expected, $actual, string $message = ''): void { - Assert::assertEqualsCanonicalizing(...\func_get_args()); + Assert::assertEqualsCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertEqualsIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertEqualsIgnoringCase')) { /** * Asserts that two variables are equal (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertEqualsIgnoringCase */ function assertEqualsIgnoringCase($expected, $actual, string $message = ''): void { - Assert::assertEqualsIgnoringCase(...\func_get_args()); + Assert::assertEqualsIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertEqualsWithDelta')) { +if (!function_exists('PHPUnit\Framework\assertEqualsWithDelta')) { /** * Asserts that two variables are equal (with delta). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertEqualsWithDelta */ function assertEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void { - Assert::assertEqualsWithDelta(...\func_get_args()); + Assert::assertEqualsWithDelta(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeEquals')) { - /** - * Asserts that a variable is equal to an attribute of an object. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeEquals - */ - function assertAttributeEquals($expected, string $actualAttributeName, $actualClassOrObject, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void - { - Assert::assertAttributeEquals(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotEquals')) { +if (!function_exists('PHPUnit\Framework\assertNotEquals')) { /** * Asserts that two variables are not equal. * - * @param float $delta - * @param int $maxDepth - * @param bool $canonicalize - * @param bool $ignoreCase - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotEquals */ - function assertNotEquals($expected, $actual, string $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false): void + function assertNotEquals($expected, $actual, string $message = ''): void { - Assert::assertNotEquals(...\func_get_args()); + Assert::assertNotEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotEqualsCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertNotEqualsCanonicalizing')) { /** * Asserts that two variables are not equal (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotEqualsCanonicalizing */ function assertNotEqualsCanonicalizing($expected, $actual, string $message = ''): void { - Assert::assertNotEqualsCanonicalizing(...\func_get_args()); + Assert::assertNotEqualsCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotEqualsIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertNotEqualsIgnoringCase')) { /** * Asserts that two variables are not equal (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotEqualsIgnoringCase */ function assertNotEqualsIgnoringCase($expected, $actual, string $message = ''): void { - Assert::assertNotEqualsIgnoringCase(...\func_get_args()); + Assert::assertNotEqualsIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotEqualsWithDelta')) { +if (!function_exists('PHPUnit\Framework\assertNotEqualsWithDelta')) { /** * Asserts that two variables are not equal (with delta). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotEqualsWithDelta */ function assertNotEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void { - Assert::assertNotEqualsWithDelta(...\func_get_args()); + Assert::assertNotEqualsWithDelta(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotEquals')) { +if (!function_exists('PHPUnit\Framework\assertObjectEquals')) { /** - * Asserts that a variable is not equal to an attribute of an object. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotEquals + * @see Assert::assertObjectEquals */ - function assertAttributeNotEquals($expected, string $actualAttributeName, $actualClassOrObject, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void + function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void { - Assert::assertAttributeNotEquals(...\func_get_args()); + Assert::assertObjectEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertEmpty')) { +if (!function_exists('PHPUnit\Framework\assertEmpty')) { /** * Asserts that a variable is empty. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert empty $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertEmpty */ function assertEmpty($actual, string $message = ''): void { - Assert::assertEmpty(...\func_get_args()); + Assert::assertEmpty(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeEmpty')) { - /** - * Asserts that a static attribute of a class or an attribute of an object - * is empty. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeEmpty - */ - function assertAttributeEmpty(string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - Assert::assertAttributeEmpty(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotEmpty')) { +if (!function_exists('PHPUnit\Framework\assertNotEmpty')) { /** * Asserts that a variable is not empty. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !empty $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNotEmpty */ function assertNotEmpty($actual, string $message = ''): void { - Assert::assertNotEmpty(...\func_get_args()); + Assert::assertNotEmpty(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotEmpty')) { - /** - * Asserts that a static attribute of a class or an attribute of an object - * is not empty. - * - * @param object|string $haystackClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotEmpty - */ - function assertAttributeNotEmpty(string $haystackAttributeName, $haystackClassOrObject, string $message = ''): void - { - Assert::assertAttributeNotEmpty(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertGreaterThan')) { +if (!function_exists('PHPUnit\Framework\assertGreaterThan')) { /** * Asserts that a value is greater than another value. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertGreaterThan */ function assertGreaterThan($expected, $actual, string $message = ''): void { - Assert::assertGreaterThan(...\func_get_args()); + Assert::assertGreaterThan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeGreaterThan')) { - /** - * Asserts that an attribute is greater than another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeGreaterThan - */ - function assertAttributeGreaterThan($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeGreaterThan(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertGreaterThanOrEqual')) { +if (!function_exists('PHPUnit\Framework\assertGreaterThanOrEqual')) { /** * Asserts that a value is greater than or equal to another value. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertGreaterThanOrEqual */ function assertGreaterThanOrEqual($expected, $actual, string $message = ''): void { - Assert::assertGreaterThanOrEqual(...\func_get_args()); + Assert::assertGreaterThanOrEqual(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeGreaterThanOrEqual')) { - /** - * Asserts that an attribute is greater than or equal to another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeGreaterThanOrEqual - */ - function assertAttributeGreaterThanOrEqual($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeGreaterThanOrEqual(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertLessThan')) { +if (!function_exists('PHPUnit\Framework\assertLessThan')) { /** * Asserts that a value is smaller than another value. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertLessThan */ function assertLessThan($expected, $actual, string $message = ''): void { - Assert::assertLessThan(...\func_get_args()); + Assert::assertLessThan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeLessThan')) { - /** - * Asserts that an attribute is smaller than another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeLessThan - */ - function assertAttributeLessThan($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeLessThan(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertLessThanOrEqual')) { +if (!function_exists('PHPUnit\Framework\assertLessThanOrEqual')) { /** * Asserts that a value is smaller than or equal to another value. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertLessThanOrEqual */ function assertLessThanOrEqual($expected, $actual, string $message = ''): void { - Assert::assertLessThanOrEqual(...\func_get_args()); + Assert::assertLessThanOrEqual(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeLessThanOrEqual')) { - /** - * Asserts that an attribute is smaller than or equal to another value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeLessThanOrEqual - */ - function assertAttributeLessThanOrEqual($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeLessThanOrEqual(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertFileEquals')) { +if (!function_exists('PHPUnit\Framework\assertFileEquals')) { /** * Asserts that the contents of one file is equal to the contents of another * file. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileEquals */ - function assertFileEquals(string $expected, string $actual, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + function assertFileEquals(string $expected, string $actual, string $message = ''): void { - Assert::assertFileEquals(...\func_get_args()); + Assert::assertFileEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileEqualsCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertFileEqualsCanonicalizing')) { /** * Asserts that the contents of one file is equal to the contents of another * file (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileEqualsCanonicalizing */ function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void { - Assert::assertFileEqualsCanonicalizing(...\func_get_args()); + Assert::assertFileEqualsCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileEqualsIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertFileEqualsIgnoringCase')) { /** * Asserts that the contents of one file is equal to the contents of another * file (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileEqualsIgnoringCase */ function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void { - Assert::assertFileEqualsIgnoringCase(...\func_get_args()); + Assert::assertFileEqualsIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotEquals')) { +if (!function_exists('PHPUnit\Framework\assertFileNotEquals')) { /** * Asserts that the contents of one file is not equal to the contents of * another file. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotEquals */ - function assertFileNotEquals(string $expected, string $actual, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + function assertFileNotEquals(string $expected, string $actual, string $message = ''): void { - Assert::assertFileNotEquals(...\func_get_args()); + Assert::assertFileNotEquals(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotEqualsCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertFileNotEqualsCanonicalizing')) { /** * Asserts that the contents of one file is not equal to the contents of another * file (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotEqualsCanonicalizing */ function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void { - Assert::assertFileNotEqualsCanonicalizing(...\func_get_args()); + Assert::assertFileNotEqualsCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotEqualsIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertFileNotEqualsIgnoringCase')) { /** * Asserts that the contents of one file is not equal to the contents of another * file (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotEqualsIgnoringCase */ function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void { - Assert::assertFileNotEqualsIgnoringCase(...\func_get_args()); + Assert::assertFileNotEqualsIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringEqualsFile')) { +if (!function_exists('PHPUnit\Framework\assertStringEqualsFile')) { /** * Asserts that the contents of a string is equal * to the contents of a file. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringEqualsFile */ - function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringEqualsFile(...\func_get_args()); + Assert::assertStringEqualsFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringEqualsFileCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertStringEqualsFileCanonicalizing')) { /** * Asserts that the contents of a string is equal * to the contents of a file (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringEqualsFileCanonicalizing */ function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringEqualsFileCanonicalizing(...\func_get_args()); + Assert::assertStringEqualsFileCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringEqualsFileIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertStringEqualsFileIgnoringCase')) { /** * Asserts that the contents of a string is equal * to the contents of a file (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringEqualsFileIgnoringCase */ function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringEqualsFileIgnoringCase(...\func_get_args()); + Assert::assertStringEqualsFileIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotEqualsFile')) { +if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFile')) { /** * Asserts that the contents of a string is not equal * to the contents of a file. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotEqualsFile */ - function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = '', bool $canonicalize = false, bool $ignoreCase = false): void + function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringNotEqualsFile(...\func_get_args()); + Assert::assertStringNotEqualsFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotEqualsFileCanonicalizing')) { +if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileCanonicalizing')) { /** * Asserts that the contents of a string is not equal * to the contents of a file (canonicalizing). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotEqualsFileCanonicalizing */ function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringNotEqualsFileCanonicalizing(...\func_get_args()); + Assert::assertStringNotEqualsFileCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotEqualsFileIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileIgnoringCase')) { /** * Asserts that the contents of a string is not equal * to the contents of a file (ignoring case). * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotEqualsFileIgnoringCase */ function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void { - Assert::assertStringNotEqualsFileIgnoringCase(...\func_get_args()); + Assert::assertStringNotEqualsFileIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertIsReadable')) { /** * Asserts that a file/dir is readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertIsReadable */ function assertIsReadable(string $filename, string $message = ''): void { - Assert::assertIsReadable(...\func_get_args()); + Assert::assertIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertIsNotReadable')) { /** * Asserts that a file/dir exists and is not readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertIsNotReadable + */ + function assertIsNotReadable(string $filename, string $message = ''): void + { + Assert::assertIsNotReadable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertNotIsReadable')) { + /** + * Asserts that a file/dir exists and is not readable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4062 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotIsReadable */ function assertNotIsReadable(string $filename, string $message = ''): void { - Assert::assertNotIsReadable(...\func_get_args()); + Assert::assertNotIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertIsWritable')) { /** * Asserts that a file/dir exists and is writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertIsWritable */ function assertIsWritable(string $filename, string $message = ''): void { - Assert::assertIsWritable(...\func_get_args()); + Assert::assertIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertIsNotWritable')) { /** * Asserts that a file/dir exists and is not writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertIsNotWritable + */ + function assertIsNotWritable(string $filename, string $message = ''): void + { + Assert::assertIsNotWritable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertNotIsWritable')) { + /** + * Asserts that a file/dir exists and is not writable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4065 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotIsWritable */ function assertNotIsWritable(string $filename, string $message = ''): void { - Assert::assertNotIsWritable(...\func_get_args()); + Assert::assertNotIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryExists')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryExists')) { /** * Asserts that a directory exists. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryExists */ function assertDirectoryExists(string $directory, string $message = ''): void { - Assert::assertDirectoryExists(...\func_get_args()); + Assert::assertDirectoryExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryNotExists')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryDoesNotExist')) { /** * Asserts that a directory does not exist. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertDirectoryDoesNotExist + */ + function assertDirectoryDoesNotExist(string $directory, string $message = ''): void + { + Assert::assertDirectoryDoesNotExist(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertDirectoryNotExists')) { + /** + * Asserts that a directory does not exist. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4068 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryNotExists */ function assertDirectoryNotExists(string $directory, string $message = ''): void { - Assert::assertDirectoryNotExists(...\func_get_args()); + Assert::assertDirectoryNotExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryIsReadable')) { /** * Asserts that a directory exists and is readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryIsReadable */ function assertDirectoryIsReadable(string $directory, string $message = ''): void { - Assert::assertDirectoryIsReadable(...\func_get_args()); + Assert::assertDirectoryIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryNotIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotReadable')) { /** * Asserts that a directory exists and is not readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertDirectoryIsNotReadable + */ + function assertDirectoryIsNotReadable(string $directory, string $message = ''): void + { + Assert::assertDirectoryIsNotReadable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertDirectoryNotIsReadable')) { + /** + * Asserts that a directory exists and is not readable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4071 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryNotIsReadable */ function assertDirectoryNotIsReadable(string $directory, string $message = ''): void { - Assert::assertDirectoryNotIsReadable(...\func_get_args()); + Assert::assertDirectoryNotIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryIsWritable')) { /** * Asserts that a directory exists and is writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryIsWritable */ function assertDirectoryIsWritable(string $directory, string $message = ''): void { - Assert::assertDirectoryIsWritable(...\func_get_args()); + Assert::assertDirectoryIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertDirectoryNotIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotWritable')) { /** * Asserts that a directory exists and is not writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertDirectoryIsNotWritable + */ + function assertDirectoryIsNotWritable(string $directory, string $message = ''): void + { + Assert::assertDirectoryIsNotWritable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertDirectoryNotIsWritable')) { + /** + * Asserts that a directory exists and is not writable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4074 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertDirectoryNotIsWritable */ function assertDirectoryNotIsWritable(string $directory, string $message = ''): void { - Assert::assertDirectoryNotIsWritable(...\func_get_args()); + Assert::assertDirectoryNotIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileExists')) { +if (!function_exists('PHPUnit\Framework\assertFileExists')) { /** * Asserts that a file exists. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileExists */ function assertFileExists(string $filename, string $message = ''): void { - Assert::assertFileExists(...\func_get_args()); + Assert::assertFileExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotExists')) { +if (!function_exists('PHPUnit\Framework\assertFileDoesNotExist')) { /** * Asserts that a file does not exist. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertFileDoesNotExist + */ + function assertFileDoesNotExist(string $filename, string $message = ''): void + { + Assert::assertFileDoesNotExist(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertFileNotExists')) { + /** + * Asserts that a file does not exist. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4077 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotExists */ function assertFileNotExists(string $filename, string $message = ''): void { - Assert::assertFileNotExists(...\func_get_args()); + Assert::assertFileNotExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertFileIsReadable')) { /** * Asserts that a file exists and is readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileIsReadable */ function assertFileIsReadable(string $file, string $message = ''): void { - Assert::assertFileIsReadable(...\func_get_args()); + Assert::assertFileIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotIsReadable')) { +if (!function_exists('PHPUnit\Framework\assertFileIsNotReadable')) { /** * Asserts that a file exists and is not readable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertFileIsNotReadable + */ + function assertFileIsNotReadable(string $file, string $message = ''): void + { + Assert::assertFileIsNotReadable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertFileNotIsReadable')) { + /** + * Asserts that a file exists and is not readable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4080 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotIsReadable */ function assertFileNotIsReadable(string $file, string $message = ''): void { - Assert::assertFileNotIsReadable(...\func_get_args()); + Assert::assertFileNotIsReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertFileIsWritable')) { /** * Asserts that a file exists and is writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileIsWritable */ function assertFileIsWritable(string $file, string $message = ''): void { - Assert::assertFileIsWritable(...\func_get_args()); + Assert::assertFileIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFileNotIsWritable')) { +if (!function_exists('PHPUnit\Framework\assertFileIsNotWritable')) { /** * Asserts that a file exists and is not writable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertFileIsNotWritable + */ + function assertFileIsNotWritable(string $file, string $message = ''): void + { + Assert::assertFileIsNotWritable(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertFileNotIsWritable')) { + /** + * Asserts that a file exists and is not writable. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4083 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFileNotIsWritable */ function assertFileNotIsWritable(string $file, string $message = ''): void { - Assert::assertFileNotIsWritable(...\func_get_args()); + Assert::assertFileNotIsWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertTrue')) { +if (!function_exists('PHPUnit\Framework\assertTrue')) { /** * Asserts that a condition is true. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert true $condition * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertTrue */ function assertTrue($condition, string $message = ''): void { - Assert::assertTrue(...\func_get_args()); + Assert::assertTrue(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotTrue')) { +if (!function_exists('PHPUnit\Framework\assertNotTrue')) { /** * Asserts that a condition is not true. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !true $condition * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNotTrue */ function assertNotTrue($condition, string $message = ''): void { - Assert::assertNotTrue(...\func_get_args()); + Assert::assertNotTrue(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFalse')) { +if (!function_exists('PHPUnit\Framework\assertFalse')) { /** * Asserts that a condition is false. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert false $condition * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertFalse */ function assertFalse($condition, string $message = ''): void { - Assert::assertFalse(...\func_get_args()); + Assert::assertFalse(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotFalse')) { +if (!function_exists('PHPUnit\Framework\assertNotFalse')) { /** * Asserts that a condition is not false. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !false $condition * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNotFalse */ function assertNotFalse($condition, string $message = ''): void { - Assert::assertNotFalse(...\func_get_args()); + Assert::assertNotFalse(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNull')) { +if (!function_exists('PHPUnit\Framework\assertNull')) { /** * Asserts that a variable is null. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert null $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNull */ function assertNull($actual, string $message = ''): void { - Assert::assertNull(...\func_get_args()); + Assert::assertNull(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotNull')) { +if (!function_exists('PHPUnit\Framework\assertNotNull')) { /** * Asserts that a variable is not null. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !null $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNotNull */ function assertNotNull($actual, string $message = ''): void { - Assert::assertNotNull(...\func_get_args()); + Assert::assertNotNull(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertFinite')) { +if (!function_exists('PHPUnit\Framework\assertFinite')) { /** * Asserts that a variable is finite. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertFinite */ function assertFinite($actual, string $message = ''): void { - Assert::assertFinite(...\func_get_args()); + Assert::assertFinite(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertInfinite')) { +if (!function_exists('PHPUnit\Framework\assertInfinite')) { /** * Asserts that a variable is infinite. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertInfinite */ function assertInfinite($actual, string $message = ''): void { - Assert::assertInfinite(...\func_get_args()); + Assert::assertInfinite(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNan')) { +if (!function_exists('PHPUnit\Framework\assertNan')) { /** * Asserts that a variable is nan. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNan */ function assertNan($actual, string $message = ''): void { - Assert::assertNan(...\func_get_args()); + Assert::assertNan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertClassHasAttribute')) { +if (!function_exists('PHPUnit\Framework\assertClassHasAttribute')) { /** * Asserts that a class has a specified attribute. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertClassHasAttribute */ function assertClassHasAttribute(string $attributeName, string $className, string $message = ''): void { - Assert::assertClassHasAttribute(...\func_get_args()); + Assert::assertClassHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertClassNotHasAttribute')) { +if (!function_exists('PHPUnit\Framework\assertClassNotHasAttribute')) { /** * Asserts that a class does not have a specified attribute. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertClassNotHasAttribute */ function assertClassNotHasAttribute(string $attributeName, string $className, string $message = ''): void { - Assert::assertClassNotHasAttribute(...\func_get_args()); + Assert::assertClassNotHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertClassHasStaticAttribute')) { +if (!function_exists('PHPUnit\Framework\assertClassHasStaticAttribute')) { /** * Asserts that a class has a specified static attribute. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertClassHasStaticAttribute */ function assertClassHasStaticAttribute(string $attributeName, string $className, string $message = ''): void { - Assert::assertClassHasStaticAttribute(...\func_get_args()); + Assert::assertClassHasStaticAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertClassNotHasStaticAttribute')) { +if (!function_exists('PHPUnit\Framework\assertClassNotHasStaticAttribute')) { /** * Asserts that a class does not have a specified static attribute. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertClassNotHasStaticAttribute */ function assertClassNotHasStaticAttribute(string $attributeName, string $className, string $message = ''): void { - Assert::assertClassNotHasStaticAttribute(...\func_get_args()); + Assert::assertClassNotHasStaticAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertObjectHasAttribute')) { +if (!function_exists('PHPUnit\Framework\assertObjectHasAttribute')) { /** * Asserts that an object has a specified attribute. * * @param object $object * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertObjectHasAttribute */ function assertObjectHasAttribute(string $attributeName, $object, string $message = ''): void { - Assert::assertObjectHasAttribute(...\func_get_args()); + Assert::assertObjectHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertObjectNotHasAttribute')) { +if (!function_exists('PHPUnit\Framework\assertObjectNotHasAttribute')) { /** * Asserts that an object does not have a specified attribute. * * @param object $object * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertObjectNotHasAttribute */ function assertObjectNotHasAttribute(string $attributeName, $object, string $message = ''): void { - Assert::assertObjectNotHasAttribute(...\func_get_args()); + Assert::assertObjectNotHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertSame')) { +if (!function_exists('PHPUnit\Framework\assertSame')) { /** * Asserts that two variables have the same type and value. * Used on objects, it asserts that two variables reference * the same object. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-template ExpectedType * @@ -1483,84 +1459,42 @@ if (!\function_exists('PHPUnit\Framework\assertSame')) { * * @psalm-assert =ExpectedType $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertSame */ function assertSame($expected, $actual, string $message = ''): void { - Assert::assertSame(...\func_get_args()); + Assert::assertSame(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeSame')) { - /** - * Asserts that a variable and an attribute of an object have the same type - * and value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeSame - */ - function assertAttributeSame($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeSame(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotSame')) { +if (!function_exists('PHPUnit\Framework\assertNotSame')) { /** * Asserts that two variables do not have the same type and value. * Used on objects, it asserts that two variables do not reference * the same object. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotSame */ function assertNotSame($expected, $actual, string $message = ''): void { - Assert::assertNotSame(...\func_get_args()); + Assert::assertNotSame(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotSame')) { - /** - * Asserts that a variable and an attribute of an object do not have the - * same type and value. - * - * @param object|string $actualClassOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotSame - */ - function assertAttributeNotSame($expected, string $actualAttributeName, $actualClassOrObject, string $message = ''): void - { - Assert::assertAttributeNotSame(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertInstanceOf')) { +if (!function_exists('PHPUnit\Framework\assertInstanceOf')) { /** * Asserts that a variable is of a given type. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException * * @psalm-template ExpectedType of object * @@ -1568,45 +1502,23 @@ if (!\function_exists('PHPUnit\Framework\assertInstanceOf')) { * * @psalm-assert =ExpectedType $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertInstanceOf */ function assertInstanceOf(string $expected, $actual, string $message = ''): void { - Assert::assertInstanceOf(...\func_get_args()); + Assert::assertInstanceOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeInstanceOf')) { - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @psalm-param class-string $expected - * - * @see Assert::assertAttributeInstanceOf - */ - function assertAttributeInstanceOf(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - Assert::assertAttributeInstanceOf(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertNotInstanceOf')) { +if (!function_exists('PHPUnit\Framework\assertNotInstanceOf')) { /** * Asserts that a variable is not of a given type. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException * * @psalm-template ExpectedType of object * @@ -1614,525 +1526,549 @@ if (!\function_exists('PHPUnit\Framework\assertNotInstanceOf')) { * * @psalm-assert !ExpectedType $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertNotInstanceOf */ function assertNotInstanceOf(string $expected, $actual, string $message = ''): void { - Assert::assertNotInstanceOf(...\func_get_args()); + Assert::assertNotInstanceOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotInstanceOf')) { - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @psalm-param class-string $expected - * - * @see Assert::assertAttributeNotInstanceOf - */ - function assertAttributeNotInstanceOf(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - Assert::assertAttributeNotInstanceOf(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertInternalType')) { - /** - * Asserts that a variable is of a given type. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3369 - * - * @codeCoverageIgnore - * - * @see Assert::assertInternalType - */ - function assertInternalType(string $expected, $actual, string $message = ''): void - { - Assert::assertInternalType(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertAttributeInternalType')) { - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeInternalType - */ - function assertAttributeInternalType(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - Assert::assertAttributeInternalType(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertIsArray')) { +if (!function_exists('PHPUnit\Framework\assertIsArray')) { /** * Asserts that a variable is of type array. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert array $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsArray */ function assertIsArray($actual, string $message = ''): void { - Assert::assertIsArray(...\func_get_args()); + Assert::assertIsArray(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsBool')) { +if (!function_exists('PHPUnit\Framework\assertIsBool')) { /** * Asserts that a variable is of type bool. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert bool $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsBool */ function assertIsBool($actual, string $message = ''): void { - Assert::assertIsBool(...\func_get_args()); + Assert::assertIsBool(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsFloat')) { +if (!function_exists('PHPUnit\Framework\assertIsFloat')) { /** * Asserts that a variable is of type float. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert float $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsFloat */ function assertIsFloat($actual, string $message = ''): void { - Assert::assertIsFloat(...\func_get_args()); + Assert::assertIsFloat(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsInt')) { +if (!function_exists('PHPUnit\Framework\assertIsInt')) { /** * Asserts that a variable is of type int. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert int $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsInt */ function assertIsInt($actual, string $message = ''): void { - Assert::assertIsInt(...\func_get_args()); + Assert::assertIsInt(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNumeric')) { +if (!function_exists('PHPUnit\Framework\assertIsNumeric')) { /** * Asserts that a variable is of type numeric. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert numeric $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNumeric */ function assertIsNumeric($actual, string $message = ''): void { - Assert::assertIsNumeric(...\func_get_args()); + Assert::assertIsNumeric(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsObject')) { +if (!function_exists('PHPUnit\Framework\assertIsObject')) { /** * Asserts that a variable is of type object. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert object $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsObject */ function assertIsObject($actual, string $message = ''): void { - Assert::assertIsObject(...\func_get_args()); + Assert::assertIsObject(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsResource')) { +if (!function_exists('PHPUnit\Framework\assertIsResource')) { /** * Asserts that a variable is of type resource. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert resource $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsResource */ function assertIsResource($actual, string $message = ''): void { - Assert::assertIsResource(...\func_get_args()); + Assert::assertIsResource(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsString')) { +if (!function_exists('PHPUnit\Framework\assertIsClosedResource')) { + /** + * Asserts that a variable is of type resource and is closed. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @psalm-assert resource $actual + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertIsClosedResource + */ + function assertIsClosedResource($actual, string $message = ''): void + { + Assert::assertIsClosedResource(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertIsString')) { /** * Asserts that a variable is of type string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert string $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsString */ function assertIsString($actual, string $message = ''): void { - Assert::assertIsString(...\func_get_args()); + Assert::assertIsString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsScalar')) { +if (!function_exists('PHPUnit\Framework\assertIsScalar')) { /** * Asserts that a variable is of type scalar. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert scalar $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsScalar */ function assertIsScalar($actual, string $message = ''): void { - Assert::assertIsScalar(...\func_get_args()); + Assert::assertIsScalar(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsCallable')) { +if (!function_exists('PHPUnit\Framework\assertIsCallable')) { /** * Asserts that a variable is of type callable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert callable $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsCallable */ function assertIsCallable($actual, string $message = ''): void { - Assert::assertIsCallable(...\func_get_args()); + Assert::assertIsCallable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsIterable')) { +if (!function_exists('PHPUnit\Framework\assertIsIterable')) { /** * Asserts that a variable is of type iterable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert iterable $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsIterable */ function assertIsIterable($actual, string $message = ''): void { - Assert::assertIsIterable(...\func_get_args()); + Assert::assertIsIterable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotInternalType')) { - /** - * Asserts that a variable is not of a given type. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3369 - * - * @codeCoverageIgnore - * - * @see Assert::assertNotInternalType - */ - function assertNotInternalType(string $expected, $actual, string $message = ''): void - { - Assert::assertNotInternalType(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertIsNotArray')) { +if (!function_exists('PHPUnit\Framework\assertIsNotArray')) { /** * Asserts that a variable is not of type array. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !array $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotArray */ function assertIsNotArray($actual, string $message = ''): void { - Assert::assertIsNotArray(...\func_get_args()); + Assert::assertIsNotArray(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotBool')) { +if (!function_exists('PHPUnit\Framework\assertIsNotBool')) { /** * Asserts that a variable is not of type bool. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !bool $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotBool */ function assertIsNotBool($actual, string $message = ''): void { - Assert::assertIsNotBool(...\func_get_args()); + Assert::assertIsNotBool(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotFloat')) { +if (!function_exists('PHPUnit\Framework\assertIsNotFloat')) { /** * Asserts that a variable is not of type float. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !float $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotFloat */ function assertIsNotFloat($actual, string $message = ''): void { - Assert::assertIsNotFloat(...\func_get_args()); + Assert::assertIsNotFloat(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotInt')) { +if (!function_exists('PHPUnit\Framework\assertIsNotInt')) { /** * Asserts that a variable is not of type int. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !int $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotInt */ function assertIsNotInt($actual, string $message = ''): void { - Assert::assertIsNotInt(...\func_get_args()); + Assert::assertIsNotInt(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotNumeric')) { +if (!function_exists('PHPUnit\Framework\assertIsNotNumeric')) { /** * Asserts that a variable is not of type numeric. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !numeric $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotNumeric */ function assertIsNotNumeric($actual, string $message = ''): void { - Assert::assertIsNotNumeric(...\func_get_args()); + Assert::assertIsNotNumeric(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotObject')) { +if (!function_exists('PHPUnit\Framework\assertIsNotObject')) { /** * Asserts that a variable is not of type object. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !object $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotObject */ function assertIsNotObject($actual, string $message = ''): void { - Assert::assertIsNotObject(...\func_get_args()); + Assert::assertIsNotObject(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotResource')) { +if (!function_exists('PHPUnit\Framework\assertIsNotResource')) { /** * Asserts that a variable is not of type resource. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !resource $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotResource */ function assertIsNotResource($actual, string $message = ''): void { - Assert::assertIsNotResource(...\func_get_args()); + Assert::assertIsNotResource(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotString')) { +if (!function_exists('PHPUnit\Framework\assertIsNotClosedResource')) { + /** + * Asserts that a variable is not of type resource. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @psalm-assert !resource $actual + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertIsNotClosedResource + */ + function assertIsNotClosedResource($actual, string $message = ''): void + { + Assert::assertIsNotClosedResource(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertIsNotString')) { /** * Asserts that a variable is not of type string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !string $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotString */ function assertIsNotString($actual, string $message = ''): void { - Assert::assertIsNotString(...\func_get_args()); + Assert::assertIsNotString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotScalar')) { +if (!function_exists('PHPUnit\Framework\assertIsNotScalar')) { /** * Asserts that a variable is not of type scalar. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !scalar $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotScalar */ function assertIsNotScalar($actual, string $message = ''): void { - Assert::assertIsNotScalar(...\func_get_args()); + Assert::assertIsNotScalar(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotCallable')) { +if (!function_exists('PHPUnit\Framework\assertIsNotCallable')) { /** * Asserts that a variable is not of type callable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !callable $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotCallable */ function assertIsNotCallable($actual, string $message = ''): void { - Assert::assertIsNotCallable(...\func_get_args()); + Assert::assertIsNotCallable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertIsNotIterable')) { +if (!function_exists('PHPUnit\Framework\assertIsNotIterable')) { /** * Asserts that a variable is not of type iterable. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * * @psalm-assert !iterable $actual * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see Assert::assertIsNotIterable */ function assertIsNotIterable($actual, string $message = ''): void { - Assert::assertIsNotIterable(...\func_get_args()); + Assert::assertIsNotIterable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertAttributeNotInternalType')) { - /** - * Asserts that an attribute is of a given type. - * - * @param object|string $classOrObject - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception - * @throws ExpectationFailedException - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - * - * @see Assert::assertAttributeNotInternalType - */ - function assertAttributeNotInternalType(string $expected, string $attributeName, $classOrObject, string $message = ''): void - { - Assert::assertAttributeNotInternalType(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\assertRegExp')) { +if (!function_exists('PHPUnit\Framework\assertMatchesRegularExpression')) { /** * Asserts that a string matches a given regular expression. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertMatchesRegularExpression + */ + function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void + { + Assert::assertMatchesRegularExpression(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertRegExp')) { + /** + * Asserts that a string matches a given regular expression. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4086 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertRegExp */ function assertRegExp(string $pattern, string $string, string $message = ''): void { - Assert::assertRegExp(...\func_get_args()); + Assert::assertRegExp(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotRegExp')) { +if (!function_exists('PHPUnit\Framework\assertDoesNotMatchRegularExpression')) { /** * Asserts that a string does not match a given regular expression. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertDoesNotMatchRegularExpression + */ + function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void + { + Assert::assertDoesNotMatchRegularExpression(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\assertNotRegExp')) { + /** + * Asserts that a string does not match a given regular expression. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4089 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotRegExp */ function assertNotRegExp(string $pattern, string $string, string $message = ''): void { - Assert::assertNotRegExp(...\func_get_args()); + Assert::assertNotRegExp(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertSameSize')) { +if (!function_exists('PHPUnit\Framework\assertSameSize')) { /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is the same. @@ -2140,19 +2076,21 @@ if (!\function_exists('PHPUnit\Framework\assertSameSize')) { * @param Countable|iterable $expected * @param Countable|iterable $actual * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertSameSize */ function assertSameSize($expected, $actual, string $message = ''): void { - Assert::assertSameSize(...\func_get_args()); + Assert::assertSameSize(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertNotSameSize')) { +if (!function_exists('PHPUnit\Framework\assertNotSameSize')) { /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is not the same. @@ -2160,740 +2098,807 @@ if (!\function_exists('PHPUnit\Framework\assertNotSameSize')) { * @param Countable|iterable $expected * @param Countable|iterable $actual * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertNotSameSize */ function assertNotSameSize($expected, $actual, string $message = ''): void { - Assert::assertNotSameSize(...\func_get_args()); + Assert::assertNotSameSize(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringMatchesFormat')) { +if (!function_exists('PHPUnit\Framework\assertStringMatchesFormat')) { /** * Asserts that a string matches a given format string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringMatchesFormat */ function assertStringMatchesFormat(string $format, string $string, string $message = ''): void { - Assert::assertStringMatchesFormat(...\func_get_args()); + Assert::assertStringMatchesFormat(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotMatchesFormat')) { +if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormat')) { /** * Asserts that a string does not match a given format string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotMatchesFormat */ function assertStringNotMatchesFormat(string $format, string $string, string $message = ''): void { - Assert::assertStringNotMatchesFormat(...\func_get_args()); + Assert::assertStringNotMatchesFormat(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringMatchesFormatFile')) { +if (!function_exists('PHPUnit\Framework\assertStringMatchesFormatFile')) { /** * Asserts that a string matches a given format file. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringMatchesFormatFile */ function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = ''): void { - Assert::assertStringMatchesFormatFile(...\func_get_args()); + Assert::assertStringMatchesFormatFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotMatchesFormatFile')) { +if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormatFile')) { /** * Asserts that a string does not match a given format string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotMatchesFormatFile */ function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = ''): void { - Assert::assertStringNotMatchesFormatFile(...\func_get_args()); + Assert::assertStringNotMatchesFormatFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringStartsWith')) { +if (!function_exists('PHPUnit\Framework\assertStringStartsWith')) { /** * Asserts that a string starts with a given prefix. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringStartsWith */ function assertStringStartsWith(string $prefix, string $string, string $message = ''): void { - Assert::assertStringStartsWith(...\func_get_args()); + Assert::assertStringStartsWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringStartsNotWith')) { +if (!function_exists('PHPUnit\Framework\assertStringStartsNotWith')) { /** * Asserts that a string starts not with a given prefix. * * @param string $prefix * @param string $string * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringStartsNotWith */ function assertStringStartsNotWith($prefix, $string, string $message = ''): void { - Assert::assertStringStartsNotWith(...\func_get_args()); + Assert::assertStringStartsNotWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringContainsString')) { +if (!function_exists('PHPUnit\Framework\assertStringContainsString')) { /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringContainsString */ function assertStringContainsString(string $needle, string $haystack, string $message = ''): void { - Assert::assertStringContainsString(...\func_get_args()); + Assert::assertStringContainsString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringContainsStringIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertStringContainsStringIgnoringCase')) { /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringContainsStringIgnoringCase */ function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void { - Assert::assertStringContainsStringIgnoringCase(...\func_get_args()); + Assert::assertStringContainsStringIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotContainsString')) { +if (!function_exists('PHPUnit\Framework\assertStringNotContainsString')) { /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotContainsString */ function assertStringNotContainsString(string $needle, string $haystack, string $message = ''): void { - Assert::assertStringNotContainsString(...\func_get_args()); + Assert::assertStringNotContainsString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringNotContainsStringIgnoringCase')) { +if (!function_exists('PHPUnit\Framework\assertStringNotContainsStringIgnoringCase')) { /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringNotContainsStringIgnoringCase */ function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void { - Assert::assertStringNotContainsStringIgnoringCase(...\func_get_args()); + Assert::assertStringNotContainsStringIgnoringCase(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringEndsWith')) { +if (!function_exists('PHPUnit\Framework\assertStringEndsWith')) { /** * Asserts that a string ends with a given suffix. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringEndsWith */ function assertStringEndsWith(string $suffix, string $string, string $message = ''): void { - Assert::assertStringEndsWith(...\func_get_args()); + Assert::assertStringEndsWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertStringEndsNotWith')) { +if (!function_exists('PHPUnit\Framework\assertStringEndsNotWith')) { /** * Asserts that a string ends not with a given suffix. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertStringEndsNotWith */ function assertStringEndsNotWith(string $suffix, string $string, string $message = ''): void { - Assert::assertStringEndsNotWith(...\func_get_args()); + Assert::assertStringEndsNotWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlFileEqualsXmlFile')) { +if (!function_exists('PHPUnit\Framework\assertXmlFileEqualsXmlFile')) { /** * Asserts that two XML files are equal. * + * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception - * @throws ExpectationFailedException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlFileEqualsXmlFile */ function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void { - Assert::assertXmlFileEqualsXmlFile(...\func_get_args()); + Assert::assertXmlFileEqualsXmlFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlFileNotEqualsXmlFile')) { +if (!function_exists('PHPUnit\Framework\assertXmlFileNotEqualsXmlFile')) { /** * Asserts that two XML files are not equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws \PHPUnit\Util\Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlFileNotEqualsXmlFile */ function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void { - Assert::assertXmlFileNotEqualsXmlFile(...\func_get_args()); + Assert::assertXmlFileNotEqualsXmlFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlFile')) { +if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlFile')) { /** * Asserts that two XML documents are equal. * * @param DOMDocument|string $actualXml * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws \PHPUnit\Util\Xml\Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlStringEqualsXmlFile */ function assertXmlStringEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void { - Assert::assertXmlStringEqualsXmlFile(...\func_get_args()); + Assert::assertXmlStringEqualsXmlFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlFile')) { +if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlFile')) { /** * Asserts that two XML documents are not equal. * * @param DOMDocument|string $actualXml * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws \PHPUnit\Util\Xml\Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlStringNotEqualsXmlFile */ function assertXmlStringNotEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void { - Assert::assertXmlStringNotEqualsXmlFile(...\func_get_args()); + Assert::assertXmlStringNotEqualsXmlFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlString')) { +if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlString')) { /** * Asserts that two XML documents are equal. * * @param DOMDocument|string $expectedXml * @param DOMDocument|string $actualXml * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws \PHPUnit\Util\Xml\Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlStringEqualsXmlString */ function assertXmlStringEqualsXmlString($expectedXml, $actualXml, string $message = ''): void { - Assert::assertXmlStringEqualsXmlString(...\func_get_args()); + Assert::assertXmlStringEqualsXmlString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlString')) { +if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlString')) { /** * Asserts that two XML documents are not equal. * * @param DOMDocument|string $expectedXml * @param DOMDocument|string $actualXml * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws Exception * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws \PHPUnit\Util\Xml\Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertXmlStringNotEqualsXmlString */ function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, string $message = ''): void { - Assert::assertXmlStringNotEqualsXmlString(...\func_get_args()); + Assert::assertXmlStringNotEqualsXmlString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertEqualXMLStructure')) { +if (!function_exists('PHPUnit\Framework\assertEqualXMLStructure')) { /** * Asserts that a hierarchy of DOMElements matches. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws AssertionFailedError * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @codeCoverageIgnore + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4091 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertEqualXMLStructure */ function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, bool $checkAttributes = false, string $message = ''): void { - Assert::assertEqualXMLStructure(...\func_get_args()); + Assert::assertEqualXMLStructure(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertThat')) { +if (!function_exists('PHPUnit\Framework\assertThat')) { /** * Evaluates a PHPUnit\Framework\Constraint matcher object. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertThat */ function assertThat($value, Constraint $constraint, string $message = ''): void { - Assert::assertThat(...\func_get_args()); + Assert::assertThat(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJson')) { +if (!function_exists('PHPUnit\Framework\assertJson')) { /** * Asserts that a string is a valid JSON string. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJson */ function assertJson(string $actualJson, string $message = ''): void { - Assert::assertJson(...\func_get_args()); + Assert::assertJson(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonString')) { +if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonString')) { /** * Asserts that two given JSON encoded objects or arrays are equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonStringEqualsJsonString */ function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void { - Assert::assertJsonStringEqualsJsonString(...\func_get_args()); + Assert::assertJsonStringEqualsJsonString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonString')) { +if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonString')) { /** * Asserts that two given JSON encoded objects or arrays are not equal. * * @param string $expectedJson * @param string $actualJson * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonStringNotEqualsJsonString */ function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, string $message = ''): void { - Assert::assertJsonStringNotEqualsJsonString(...\func_get_args()); + Assert::assertJsonStringNotEqualsJsonString(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonFile')) { +if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonFile')) { /** * Asserts that the generated JSON encoded object and the content of the given file are equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonStringEqualsJsonFile */ function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void { - Assert::assertJsonStringEqualsJsonFile(...\func_get_args()); + Assert::assertJsonStringEqualsJsonFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonFile')) { +if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonFile')) { /** * Asserts that the generated JSON encoded object and the content of the given file are not equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonStringNotEqualsJsonFile */ function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void { - Assert::assertJsonStringNotEqualsJsonFile(...\func_get_args()); + Assert::assertJsonStringNotEqualsJsonFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonFileEqualsJsonFile')) { +if (!function_exists('PHPUnit\Framework\assertJsonFileEqualsJsonFile')) { /** * Asserts that two JSON files are equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonFileEqualsJsonFile */ function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void { - Assert::assertJsonFileEqualsJsonFile(...\func_get_args()); + Assert::assertJsonFileEqualsJsonFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\assertJsonFileNotEqualsJsonFile')) { +if (!function_exists('PHPUnit\Framework\assertJsonFileNotEqualsJsonFile')) { /** * Asserts that two JSON files are not equal. * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @see Assert::assertJsonFileNotEqualsJsonFile */ function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void { - Assert::assertJsonFileNotEqualsJsonFile(...\func_get_args()); + Assert::assertJsonFileNotEqualsJsonFile(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\logicalAnd')) { +if (!function_exists('PHPUnit\Framework\logicalAnd')) { function logicalAnd(): LogicalAnd { - return Assert::logicalAnd(...\func_get_args()); + return Assert::logicalAnd(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\logicalOr')) { +if (!function_exists('PHPUnit\Framework\logicalOr')) { function logicalOr(): LogicalOr { - return Assert::logicalOr(...\func_get_args()); + return Assert::logicalOr(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\logicalNot')) { +if (!function_exists('PHPUnit\Framework\logicalNot')) { function logicalNot(Constraint $constraint): LogicalNot { - return Assert::logicalNot(...\func_get_args()); + return Assert::logicalNot(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\logicalXor')) { +if (!function_exists('PHPUnit\Framework\logicalXor')) { function logicalXor(): LogicalXor { - return Assert::logicalXor(...\func_get_args()); + return Assert::logicalXor(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\anything')) { +if (!function_exists('PHPUnit\Framework\anything')) { function anything(): IsAnything { - return Assert::anything(...\func_get_args()); + return Assert::anything(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isTrue')) { +if (!function_exists('PHPUnit\Framework\isTrue')) { function isTrue(): IsTrue { - return Assert::isTrue(...\func_get_args()); + return Assert::isTrue(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\callback')) { +if (!function_exists('PHPUnit\Framework\callback')) { function callback(callable $callback): Callback { - return Assert::callback(...\func_get_args()); + return Assert::callback(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isFalse')) { +if (!function_exists('PHPUnit\Framework\isFalse')) { function isFalse(): IsFalse { - return Assert::isFalse(...\func_get_args()); + return Assert::isFalse(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isJson')) { +if (!function_exists('PHPUnit\Framework\isJson')) { function isJson(): IsJson { - return Assert::isJson(...\func_get_args()); + return Assert::isJson(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isNull')) { +if (!function_exists('PHPUnit\Framework\isNull')) { function isNull(): IsNull { - return Assert::isNull(...\func_get_args()); + return Assert::isNull(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isFinite')) { +if (!function_exists('PHPUnit\Framework\isFinite')) { function isFinite(): IsFinite { - return Assert::isFinite(...\func_get_args()); + return Assert::isFinite(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isInfinite')) { +if (!function_exists('PHPUnit\Framework\isInfinite')) { function isInfinite(): IsInfinite { - return Assert::isInfinite(...\func_get_args()); + return Assert::isInfinite(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isNan')) { +if (!function_exists('PHPUnit\Framework\isNan')) { function isNan(): IsNan { - return Assert::isNan(...\func_get_args()); + return Assert::isNan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\attribute')) { - function attribute(Constraint $constraint, string $attributeName): Attribute - { - return Assert::attribute(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\contains')) { - function contains($value, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false): TraversableContains - { - return Assert::contains(...\func_get_args()); - } -} - -if (!\function_exists('PHPUnit\Framework\containsEqual')) { +if (!function_exists('PHPUnit\Framework\containsEqual')) { function containsEqual($value): TraversableContainsEqual { - return Assert::containsEqual(...\func_get_args()); + return Assert::containsEqual(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\containsIdentical')) { +if (!function_exists('PHPUnit\Framework\containsIdentical')) { function containsIdentical($value): TraversableContainsIdentical { - return Assert::containsIdentical(...\func_get_args()); + return Assert::containsIdentical(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\containsOnly')) { +if (!function_exists('PHPUnit\Framework\containsOnly')) { function containsOnly(string $type): TraversableContainsOnly { - return Assert::containsOnly(...\func_get_args()); + return Assert::containsOnly(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\containsOnlyInstancesOf')) { +if (!function_exists('PHPUnit\Framework\containsOnlyInstancesOf')) { function containsOnlyInstancesOf(string $className): TraversableContainsOnly { - return Assert::containsOnlyInstancesOf(...\func_get_args()); + return Assert::containsOnlyInstancesOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\arrayHasKey')) { +if (!function_exists('PHPUnit\Framework\arrayHasKey')) { function arrayHasKey($key): ArrayHasKey { - return Assert::arrayHasKey(...\func_get_args()); + return Assert::arrayHasKey(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\equalTo')) { - function equalTo($value, float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): IsEqual +if (!function_exists('PHPUnit\Framework\equalTo')) { + function equalTo($value): IsEqual { - return Assert::equalTo(...\func_get_args()); + return Assert::equalTo(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\attributeEqualTo')) { - function attributeEqualTo(string $attributeName, $value, float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): Attribute +if (!function_exists('PHPUnit\Framework\equalToCanonicalizing')) { + function equalToCanonicalizing($value): IsEqualCanonicalizing { - return Assert::attributeEqualTo(...\func_get_args()); + return Assert::equalToCanonicalizing(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isEmpty')) { +if (!function_exists('PHPUnit\Framework\equalToIgnoringCase')) { + function equalToIgnoringCase($value): IsEqualIgnoringCase + { + return Assert::equalToIgnoringCase(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\equalToWithDelta')) { + function equalToWithDelta($value, float $delta): IsEqualWithDelta + { + return Assert::equalToWithDelta(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\isEmpty')) { function isEmpty(): IsEmpty { - return Assert::isEmpty(...\func_get_args()); + return Assert::isEmpty(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isWritable')) { +if (!function_exists('PHPUnit\Framework\isWritable')) { function isWritable(): IsWritable { - return Assert::isWritable(...\func_get_args()); + return Assert::isWritable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isReadable')) { +if (!function_exists('PHPUnit\Framework\isReadable')) { function isReadable(): IsReadable { - return Assert::isReadable(...\func_get_args()); + return Assert::isReadable(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\directoryExists')) { +if (!function_exists('PHPUnit\Framework\directoryExists')) { function directoryExists(): DirectoryExists { - return Assert::directoryExists(...\func_get_args()); + return Assert::directoryExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\fileExists')) { +if (!function_exists('PHPUnit\Framework\fileExists')) { function fileExists(): FileExists { - return Assert::fileExists(...\func_get_args()); + return Assert::fileExists(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\greaterThan')) { +if (!function_exists('PHPUnit\Framework\greaterThan')) { function greaterThan($value): GreaterThan { - return Assert::greaterThan(...\func_get_args()); + return Assert::greaterThan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\greaterThanOrEqual')) { +if (!function_exists('PHPUnit\Framework\greaterThanOrEqual')) { function greaterThanOrEqual($value): LogicalOr { - return Assert::greaterThanOrEqual(...\func_get_args()); + return Assert::greaterThanOrEqual(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\classHasAttribute')) { +if (!function_exists('PHPUnit\Framework\classHasAttribute')) { function classHasAttribute(string $attributeName): ClassHasAttribute { - return Assert::classHasAttribute(...\func_get_args()); + return Assert::classHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\classHasStaticAttribute')) { +if (!function_exists('PHPUnit\Framework\classHasStaticAttribute')) { function classHasStaticAttribute(string $attributeName): ClassHasStaticAttribute { - return Assert::classHasStaticAttribute(...\func_get_args()); + return Assert::classHasStaticAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\objectHasAttribute')) { +if (!function_exists('PHPUnit\Framework\objectHasAttribute')) { function objectHasAttribute($attributeName): ObjectHasAttribute { - return Assert::objectHasAttribute(...\func_get_args()); + return Assert::objectHasAttribute(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\identicalTo')) { +if (!function_exists('PHPUnit\Framework\identicalTo')) { function identicalTo($value): IsIdentical { - return Assert::identicalTo(...\func_get_args()); + return Assert::identicalTo(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isInstanceOf')) { +if (!function_exists('PHPUnit\Framework\isInstanceOf')) { function isInstanceOf(string $className): IsInstanceOf { - return Assert::isInstanceOf(...\func_get_args()); + return Assert::isInstanceOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\isType')) { +if (!function_exists('PHPUnit\Framework\isType')) { function isType(string $type): IsType { - return Assert::isType(...\func_get_args()); + return Assert::isType(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\lessThan')) { +if (!function_exists('PHPUnit\Framework\lessThan')) { function lessThan($value): LessThan { - return Assert::lessThan(...\func_get_args()); + return Assert::lessThan(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\lessThanOrEqual')) { +if (!function_exists('PHPUnit\Framework\lessThanOrEqual')) { function lessThanOrEqual($value): LogicalOr { - return Assert::lessThanOrEqual(...\func_get_args()); + return Assert::lessThanOrEqual(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\matchesRegularExpression')) { +if (!function_exists('PHPUnit\Framework\matchesRegularExpression')) { function matchesRegularExpression(string $pattern): RegularExpression { - return Assert::matchesRegularExpression(...\func_get_args()); + return Assert::matchesRegularExpression(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\matches')) { +if (!function_exists('PHPUnit\Framework\matches')) { function matches(string $string): StringMatchesFormatDescription { - return Assert::matches(...\func_get_args()); + return Assert::matches(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\stringStartsWith')) { +if (!function_exists('PHPUnit\Framework\stringStartsWith')) { function stringStartsWith($prefix): StringStartsWith { - return Assert::stringStartsWith(...\func_get_args()); + return Assert::stringStartsWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\stringContains')) { +if (!function_exists('PHPUnit\Framework\stringContains')) { function stringContains(string $string, bool $case = true): StringContains { - return Assert::stringContains(...\func_get_args()); + return Assert::stringContains(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\stringEndsWith')) { +if (!function_exists('PHPUnit\Framework\stringEndsWith')) { function stringEndsWith(string $suffix): StringEndsWith { - return Assert::stringEndsWith(...\func_get_args()); + return Assert::stringEndsWith(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\countOf')) { +if (!function_exists('PHPUnit\Framework\countOf')) { function countOf(int $count): Count { - return Assert::countOf(...\func_get_args()); + return Assert::countOf(...func_get_args()); } } -if (!\function_exists('PHPUnit\Framework\any')) { +if (!function_exists('PHPUnit\Framework\objectEquals')) { + function objectEquals(object $object, string $method = 'equals'): ObjectEquals + { + return Assert::objectEquals(...func_get_args()); + } +} + +if (!function_exists('PHPUnit\Framework\any')) { /** * Returns a matcher that matches when the method is executed * zero or more times. @@ -2904,7 +2909,7 @@ if (!\function_exists('PHPUnit\Framework\any')) { } } -if (!\function_exists('PHPUnit\Framework\never')) { +if (!function_exists('PHPUnit\Framework\never')) { /** * Returns a matcher that matches when the method is never executed. */ @@ -2914,7 +2919,7 @@ if (!\function_exists('PHPUnit\Framework\never')) { } } -if (!\function_exists('PHPUnit\Framework\atLeast')) { +if (!function_exists('PHPUnit\Framework\atLeast')) { /** * Returns a matcher that matches when the method is executed * at least N times. @@ -2927,7 +2932,7 @@ if (!\function_exists('PHPUnit\Framework\atLeast')) { } } -if (!\function_exists('PHPUnit\Framework\atLeastOnce')) { +if (!function_exists('PHPUnit\Framework\atLeastOnce')) { /** * Returns a matcher that matches when the method is executed at least once. */ @@ -2937,7 +2942,7 @@ if (!\function_exists('PHPUnit\Framework\atLeastOnce')) { } } -if (!\function_exists('PHPUnit\Framework\once')) { +if (!function_exists('PHPUnit\Framework\once')) { /** * Returns a matcher that matches when the method is executed exactly once. */ @@ -2947,7 +2952,7 @@ if (!\function_exists('PHPUnit\Framework\once')) { } } -if (!\function_exists('PHPUnit\Framework\exactly')) { +if (!function_exists('PHPUnit\Framework\exactly')) { /** * Returns a matcher that matches when the method is executed * exactly $count times. @@ -2958,7 +2963,7 @@ if (!\function_exists('PHPUnit\Framework\exactly')) { } } -if (!\function_exists('PHPUnit\Framework\atMost')) { +if (!function_exists('PHPUnit\Framework\atMost')) { /** * Returns a matcher that matches when the method is executed * at most N times. @@ -2969,7 +2974,7 @@ if (!\function_exists('PHPUnit\Framework\atMost')) { } } -if (!\function_exists('PHPUnit\Framework\at')) { +if (!function_exists('PHPUnit\Framework\at')) { /** * Returns a matcher that matches when the method is executed * at the given index. @@ -2980,35 +2985,35 @@ if (!\function_exists('PHPUnit\Framework\at')) { } } -if (!\function_exists('PHPUnit\Framework\returnValue')) { +if (!function_exists('PHPUnit\Framework\returnValue')) { function returnValue($value): ReturnStub { return new ReturnStub($value); } } -if (!\function_exists('PHPUnit\Framework\returnValueMap')) { +if (!function_exists('PHPUnit\Framework\returnValueMap')) { function returnValueMap(array $valueMap): ReturnValueMapStub { return new ReturnValueMapStub($valueMap); } } -if (!\function_exists('PHPUnit\Framework\returnArgument')) { +if (!function_exists('PHPUnit\Framework\returnArgument')) { function returnArgument(int $argumentIndex): ReturnArgumentStub { return new ReturnArgumentStub($argumentIndex); } } -if (!\function_exists('PHPUnit\Framework\returnCallback')) { +if (!function_exists('PHPUnit\Framework\returnCallback')) { function returnCallback($callback): ReturnCallbackStub { return new ReturnCallbackStub($callback); } } -if (!\function_exists('PHPUnit\Framework\returnSelf')) { +if (!function_exists('PHPUnit\Framework\returnSelf')) { /** * Returns the current object. * @@ -3020,17 +3025,17 @@ if (!\function_exists('PHPUnit\Framework\returnSelf')) { } } -if (!\function_exists('PHPUnit\Framework\throwException')) { +if (!function_exists('PHPUnit\Framework\throwException')) { function throwException(Throwable $exception): ExceptionStub { return new ExceptionStub($exception); } } -if (!\function_exists('PHPUnit\Framework\onConsecutiveCalls')) { +if (!function_exists('PHPUnit\Framework\onConsecutiveCalls')) { function onConsecutiveCalls(): ConsecutiveCallsStub { - $args = \func_get_args(); + $args = func_get_args(); return new ConsecutiveCallsStub($args); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php deleted file mode 100644 index 34c61e3d4..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php +++ /dev/null @@ -1,135 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function array_replace_recursive; -use function is_array; -use function iterator_to_array; -use function var_export; -use ArrayObject; -use PHPUnit\Framework\ExpectationFailedException; -use SebastianBergmann\Comparator\ComparisonFailure; -use Traversable; - -/** - * Constraint that asserts that the array it is evaluated for has a specified subset. - * - * Uses array_replace_recursive() to check if a key value subset is part of the - * subject array. - * - * @codeCoverageIgnore - * - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3494 - */ -final class ArraySubset extends Constraint -{ - /** - * @var iterable - */ - private $subset; - - /** - * @var bool - */ - private $strict; - - public function __construct(iterable $subset, bool $strict = false) - { - $this->strict = $strict; - $this->subset = $subset; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - //type cast $other & $this->subset as an array to allow - //support in standard array functions. - $other = $this->toArray($other); - $this->subset = $this->toArray($this->subset); - - $patched = array_replace_recursive($other, $this->subset); - - if ($this->strict) { - $result = $other === $patched; - } else { - $result = $other == $patched; - } - - if ($returnResult) { - return $result; - } - - if (!$result) { - $f = new ComparisonFailure( - $patched, - $other, - var_export($patched, true), - var_export($other, true) - ); - - $this->fail($other, $description, $f); - } - } - - /** - * Returns a string representation of the constraint. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public function toString(): string - { - return 'has the subset ' . $this->exporter()->export($this->subset); - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - protected function failureDescription($other): string - { - return 'an array ' . $this->toString(); - } - - private function toArray(iterable $other): array - { - if (is_array($other)) { - return $other; - } - - if ($other instanceof ArrayObject) { - return $other->getArrayCopy(); - } - - if ($other instanceof Traversable) { - return iterator_to_array($other); - } - - // Keep BC even if we know that array would not be the expected one - return (array) $other; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php deleted file mode 100644 index 983e6e301..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use PHPUnit\Framework\Assert; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ -final class Attribute extends Composite -{ - /** - * @var string - */ - private $attributeName; - - public function __construct(Constraint $constraint, string $attributeName) - { - parent::__construct($constraint); - - $this->attributeName = $attributeName; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \PHPUnit\Framework\Exception - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - return parent::evaluate( - Assert::readAttribute( - $other, - $this->attributeName - ), - $description, - $returnResult - ); - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return 'attribute "' . $this->attributeName . '" ' . $this->innerConstraint()->toString(); - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - */ - protected function failureDescription($other): string - { - return $this->toString(); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php index 8b11e0ac5..212e2bcb4 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php @@ -10,7 +10,7 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that accepts false. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsFalse extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php index 7948c8fa0..e1d6b2691 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php @@ -10,7 +10,7 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that accepts true. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsTrue extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php index 7a619b611..b7cf95a12 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php @@ -10,9 +10,9 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that evaluates against a specified closure. - * * @psalm-template CallbackInput of mixed + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Callback extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php similarity index 84% rename from vendor/phpunit/phpunit/src/Framework/Constraint/Count.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php index 944d90800..8e27fbfd4 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php @@ -18,8 +18,12 @@ use EmptyIterator; use Generator; use Iterator; use IteratorAggregate; +use PHPUnit\Framework\Exception; use Traversable; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ class Count extends Constraint { /** @@ -43,6 +47,8 @@ class Count extends Constraint /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. + * + * @throws Exception */ protected function matches($other): bool { @@ -50,7 +56,7 @@ class Count extends Constraint } /** - * @param iterable $other + * @throws Exception */ protected function getCountOf($other): ?int { @@ -64,7 +70,15 @@ class Count extends Constraint if ($other instanceof Traversable) { while ($other instanceof IteratorAggregate) { - $other = $other->getIterator(); + try { + $other = $other->getIterator(); + } catch (\Exception $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } } $iterator = $other; @@ -121,7 +135,7 @@ class Count extends Constraint { return sprintf( 'actual size %d matches expected size %d', - $this->getCountOf($other), + (int) $this->getCountOf($other), $this->expectedCount ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php similarity index 91% rename from vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php index b007615ca..31df50201 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php @@ -10,8 +10,7 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that asserts that the value it is evaluated for is greater - * than a given value. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class GreaterThan extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php similarity index 94% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php index 555afa763..e6371d536 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php @@ -17,7 +17,7 @@ use Countable; use EmptyIterator; /** - * Constraint that checks whether a variable is empty(). + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsEmpty extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php similarity index 91% rename from vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php index 781c81744..c7884ba1d 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php @@ -10,8 +10,7 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that asserts that the value it is evaluated for is less than - * a given value. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class LessThan extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php new file mode 100644 index 000000000..a54679425 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class SameSize extends Count +{ + public function __construct(iterable $expected) + { + parent::__construct((int) $this->getCountOf($expected)); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php deleted file mode 100644 index bba457a0d..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function count; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * @deprecated https://github.com/sebastianbergmann/phpunit/issues/3338 - * - * @codeCoverageIgnore - */ -abstract class Composite extends Constraint -{ - /** - * @var Constraint - */ - private $innerConstraint; - - public function __construct(Constraint $innerConstraint) - { - $this->innerConstraint = $innerConstraint; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - try { - return $this->innerConstraint->evaluate( - $other, - $description, - $returnResult - ); - } catch (ExpectationFailedException $e) { - $this->fail($other, $description, $e->getComparisonFailure()); - } - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - return count($this->innerConstraint); - } - - protected function innerConstraint(): Constraint - { - return $this->innerConstraint; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php index 7957566cf..5f772b4d1 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php @@ -17,12 +17,12 @@ use SebastianBergmann\Comparator\ComparisonFailure; use SebastianBergmann\Exporter\Exporter; /** - * Abstract base class for constraints which can be applied to any value. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ abstract class Constraint implements Countable, SelfDescribing { /** - * @var Exporter + * @var ?Exporter */ private $exporter; @@ -39,7 +39,7 @@ abstract class Constraint implements Countable, SelfDescribing * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public function evaluate($other, string $description = '', bool $returnResult = false) + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool { $success = false; @@ -54,6 +54,8 @@ abstract class Constraint implements Countable, SelfDescribing if (!$success) { $this->fail($other, $description); } + + return null; } /** @@ -153,4 +155,116 @@ abstract class Constraint implements Countable, SelfDescribing { return $this->exporter()->export($other) . ' ' . $this->toString(); } + + /** + * Returns a custom string representation of the constraint object when it + * appears in context of an $operator expression. + * + * The purpose of this method is to provide meaningful descriptive string + * in context of operators such as LogicalNot. Native PHPUnit constraints + * are supported out of the box by LogicalNot, but externally developed + * ones had no way to provide correct strings in this context. + * + * The method shall return empty string, when it does not handle + * customization by itself. + * + * @param Operator $operator the $operator of the expression + * @param mixed $role role of $this constraint in the $operator expression + */ + protected function toStringInContext(Operator $operator, $role): string + { + return ''; + } + + /** + * Returns the description of the failure when this constraint appears in + * context of an $operator expression. + * + * The purpose of this method is to provide meaningful failure description + * in context of operators such as LogicalNot. Native PHPUnit constraints + * are supported out of the box by LogicalNot, but externally developed + * ones had no way to provide correct messages in this context. + * + * The method shall return empty string, when it does not handle + * customization by itself. + * + * @param Operator $operator the $operator of the expression + * @param mixed $role role of $this constraint in the $operator expression + * @param mixed $other evaluated value or object + */ + protected function failureDescriptionInContext(Operator $operator, $role, $other): string + { + $string = $this->toStringInContext($operator, $role); + + if ($string === '') { + return ''; + } + + return $this->exporter()->export($other) . ' ' . $string; + } + + /** + * Reduces the sub-expression starting at $this by skipping degenerate + * sub-expression and returns first descendant constraint that starts + * a non-reducible sub-expression. + * + * Returns $this for terminal constraints and for operators that start + * non-reducible sub-expression, or the nearest descendant of $this that + * starts a non-reducible sub-expression. + * + * A constraint expression may be modelled as a tree with non-terminal + * nodes (operators) and terminal nodes. For example: + * + * LogicalOr (operator, non-terminal) + * + LogicalAnd (operator, non-terminal) + * | + IsType('int') (terminal) + * | + GreaterThan(10) (terminal) + * + LogicalNot (operator, non-terminal) + * + IsType('array') (terminal) + * + * A degenerate sub-expression is a part of the tree, that effectively does + * not contribute to the evaluation of the expression it appears in. An example + * of degenerate sub-expression is a BinaryOperator constructed with single + * operand or nested BinaryOperators, each with single operand. An + * expression involving a degenerate sub-expression is equivalent to a + * reduced expression with the degenerate sub-expression removed, for example + * + * LogicalAnd (operator) + * + LogicalOr (degenerate operator) + * | + LogicalAnd (degenerate operator) + * | + IsType('int') (terminal) + * + GreaterThan(10) (terminal) + * + * is equivalent to + * + * LogicalAnd (operator) + * + IsType('int') (terminal) + * + GreaterThan(10) (terminal) + * + * because the subexpression + * + * + LogicalOr + * + LogicalAnd + * + - + * + * is degenerate. Calling reduce() on the LogicalOr object above, as well + * as on LogicalAnd, shall return the IsType('int') instance. + * + * Other specific reductions can be implemented, for example cascade of + * LogicalNot operators + * + * + LogicalNot + * + LogicalNot + * +LogicalNot + * + IsTrue + * + * can be reduced to + * + * LogicalNot + * + IsTrue + */ + protected function reduce(): self + { + return $this; + } } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php new file mode 100644 index 000000000..6a61ebfba --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php @@ -0,0 +1,138 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function is_string; +use function sprintf; +use function strpos; +use function trim; +use PHPUnit\Framework\ExpectationFailedException; +use SebastianBergmann\Comparator\ComparisonFailure; +use SebastianBergmann\Comparator\Factory as ComparatorFactory; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class IsEqual extends Constraint +{ + /** + * @var mixed + */ + private $value; + + /** + * @var float + */ + private $delta; + + /** + * @var bool + */ + private $canonicalize; + + /** + * @var bool + */ + private $ignoreCase; + + public function __construct($value, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false) + { + $this->value = $value; + $this->delta = $delta; + $this->canonicalize = $canonicalize; + $this->ignoreCase = $ignoreCase; + } + + /** + * Evaluates the constraint for parameter $other. + * + * If $returnResult is set to false (the default), an exception is thrown + * in case of a failure. null is returned otherwise. + * + * If $returnResult is true, the result of the evaluation is returned as + * a boolean value instead: true in case of success, false in case of a + * failure. + * + * @throws ExpectationFailedException + * + * @return bool + */ + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool + { + // If $this->value and $other are identical, they are also equal. + // This is the most common path and will allow us to skip + // initialization of all the comparators. + if ($this->value === $other) { + return true; + } + + $comparatorFactory = ComparatorFactory::getInstance(); + + try { + $comparator = $comparatorFactory->getComparatorFor( + $this->value, + $other + ); + + $comparator->assertEquals( + $this->value, + $other, + $this->delta, + $this->canonicalize, + $this->ignoreCase + ); + } catch (ComparisonFailure $f) { + if ($returnResult) { + return false; + } + + throw new ExpectationFailedException( + trim($description . "\n" . $f->getMessage()), + $f + ); + } + + return true; + } + + /** + * Returns a string representation of the constraint. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + public function toString(): string + { + $delta = ''; + + if (is_string($this->value)) { + if (strpos($this->value, "\n") !== false) { + return 'is equal to '; + } + + return sprintf( + "is equal to '%s'", + $this->value + ); + } + + if ($this->delta != 0) { + $delta = sprintf( + ' with delta <%F>', + $this->delta + ); + } + + return sprintf( + 'is equal to %s%s', + $this->exporter()->export($this->value), + $delta + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php new file mode 100644 index 000000000..57bb91ca1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function is_string; +use function sprintf; +use function strpos; +use function trim; +use PHPUnit\Framework\ExpectationFailedException; +use SebastianBergmann\Comparator\ComparisonFailure; +use SebastianBergmann\Comparator\Factory as ComparatorFactory; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class IsEqualCanonicalizing extends Constraint +{ + /** + * @var mixed + */ + private $value; + + public function __construct($value) + { + $this->value = $value; + } + + /** + * Evaluates the constraint for parameter $other. + * + * If $returnResult is set to false (the default), an exception is thrown + * in case of a failure. null is returned otherwise. + * + * If $returnResult is true, the result of the evaluation is returned as + * a boolean value instead: true in case of success, false in case of a + * failure. + * + * @throws ExpectationFailedException + */ + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool + { + // If $this->value and $other are identical, they are also equal. + // This is the most common path and will allow us to skip + // initialization of all the comparators. + if ($this->value === $other) { + return true; + } + + $comparatorFactory = ComparatorFactory::getInstance(); + + try { + $comparator = $comparatorFactory->getComparatorFor( + $this->value, + $other + ); + + $comparator->assertEquals( + $this->value, + $other, + 0.0, + true, + false + ); + } catch (ComparisonFailure $f) { + if ($returnResult) { + return false; + } + + throw new ExpectationFailedException( + trim($description . "\n" . $f->getMessage()), + $f + ); + } + + return true; + } + + /** + * Returns a string representation of the constraint. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + public function toString(): string + { + if (is_string($this->value)) { + if (strpos($this->value, "\n") !== false) { + return 'is equal to '; + } + + return sprintf( + "is equal to '%s'", + $this->value + ); + } + + return sprintf( + 'is equal to %s', + $this->exporter()->export($this->value) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php new file mode 100644 index 000000000..d657e96a2 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function is_string; +use function sprintf; +use function strpos; +use function trim; +use PHPUnit\Framework\ExpectationFailedException; +use SebastianBergmann\Comparator\ComparisonFailure; +use SebastianBergmann\Comparator\Factory as ComparatorFactory; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class IsEqualIgnoringCase extends Constraint +{ + /** + * @var mixed + */ + private $value; + + public function __construct($value) + { + $this->value = $value; + } + + /** + * Evaluates the constraint for parameter $other. + * + * If $returnResult is set to false (the default), an exception is thrown + * in case of a failure. null is returned otherwise. + * + * If $returnResult is true, the result of the evaluation is returned as + * a boolean value instead: true in case of success, false in case of a + * failure. + * + * @throws ExpectationFailedException + */ + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool + { + // If $this->value and $other are identical, they are also equal. + // This is the most common path and will allow us to skip + // initialization of all the comparators. + if ($this->value === $other) { + return true; + } + + $comparatorFactory = ComparatorFactory::getInstance(); + + try { + $comparator = $comparatorFactory->getComparatorFor( + $this->value, + $other + ); + + $comparator->assertEquals( + $this->value, + $other, + 0.0, + false, + true + ); + } catch (ComparisonFailure $f) { + if ($returnResult) { + return false; + } + + throw new ExpectationFailedException( + trim($description . "\n" . $f->getMessage()), + $f + ); + } + + return true; + } + + /** + * Returns a string representation of the constraint. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + public function toString(): string + { + if (is_string($this->value)) { + if (strpos($this->value, "\n") !== false) { + return 'is equal to '; + } + + return sprintf( + "is equal to '%s'", + $this->value + ); + } + + return sprintf( + 'is equal to %s', + $this->exporter()->export($this->value) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php new file mode 100644 index 000000000..0370b5118 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function sprintf; +use function trim; +use PHPUnit\Framework\ExpectationFailedException; +use SebastianBergmann\Comparator\ComparisonFailure; +use SebastianBergmann\Comparator\Factory as ComparatorFactory; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class IsEqualWithDelta extends Constraint +{ + /** + * @var mixed + */ + private $value; + + /** + * @var float + */ + private $delta; + + public function __construct($value, float $delta) + { + $this->value = $value; + $this->delta = $delta; + } + + /** + * Evaluates the constraint for parameter $other. + * + * If $returnResult is set to false (the default), an exception is thrown + * in case of a failure. null is returned otherwise. + * + * If $returnResult is true, the result of the evaluation is returned as + * a boolean value instead: true in case of success, false in case of a + * failure. + * + * @throws ExpectationFailedException + */ + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool + { + // If $this->value and $other are identical, they are also equal. + // This is the most common path and will allow us to skip + // initialization of all the comparators. + if ($this->value === $other) { + return true; + } + + $comparatorFactory = ComparatorFactory::getInstance(); + + try { + $comparator = $comparatorFactory->getComparatorFor( + $this->value, + $other + ); + + $comparator->assertEquals( + $this->value, + $other, + $this->delta + ); + } catch (ComparisonFailure $f) { + if ($returnResult) { + return false; + } + + throw new ExpectationFailedException( + trim($description . "\n" . $f->getMessage()), + $f + ); + } + + return true; + } + + /** + * Returns a string representation of the constraint. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + public function toString(): string + { + return sprintf( + 'is equal to %s with delta <%F>>', + $this->exporter()->export($this->value), + $this->delta + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php deleted file mode 100644 index 5119071e0..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function get_class; -use function sprintf; -use PHPUnit\Util\Filter; -use Throwable; - -final class Exception extends Constraint -{ - /** - * @var string - */ - private $className; - - public function __construct(string $className) - { - $this->className = $className; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - return sprintf( - 'exception of type "%s"', - $this->className - ); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other value or object to evaluate - */ - protected function matches($other): bool - { - return $other instanceof $this->className; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - */ - protected function failureDescription($other): string - { - if ($other !== null) { - $message = ''; - - if ($other instanceof Throwable) { - $message = '. Message was: "' . $other->getMessage() . '" at' - . "\n" . Filter::getFilteredStacktrace($other); - } - - return sprintf( - 'exception of type "%s" matches expected exception "%s"%s', - get_class($other), - $this->className, - $message - ); - } - - return sprintf( - 'exception of type "%s" is thrown', - $this->className - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php new file mode 100644 index 000000000..860c0030f --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function get_class; +use function sprintf; +use PHPUnit\Util\Filter; +use Throwable; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class Exception extends Constraint +{ + /** + * @var string + */ + private $className; + + public function __construct(string $className) + { + $this->className = $className; + } + + /** + * Returns a string representation of the constraint. + */ + public function toString(): string + { + return sprintf( + 'exception of type "%s"', + $this->className + ); + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + return $other instanceof $this->className; + } + + /** + * Returns the description of the failure. + * + * The beginning of failure messages is "Failed asserting that" in most + * cases. This method should return the second part of that sentence. + * + * @param mixed $other evaluated value or object + */ + protected function failureDescription($other): string + { + if ($other !== null) { + $message = ''; + + if ($other instanceof Throwable) { + $message = '. Message was: "' . $other->getMessage() . '" at' + . "\n" . Filter::getFilteredStacktrace($other); + } + + return sprintf( + 'exception of type "%s" matches expected exception "%s"%s', + get_class($other), + $this->className, + $message + ); + } + + return sprintf( + 'exception of type "%s" is thrown', + $this->className + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php similarity index 93% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php index 682f48cb3..b8054a949 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php @@ -12,6 +12,9 @@ namespace PHPUnit\Framework\Constraint; use function sprintf; use Throwable; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ final class ExceptionCode extends Constraint { /** diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php similarity index 94% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php index 4836b1505..030beff98 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php @@ -13,6 +13,9 @@ use function sprintf; use function strpos; use Throwable; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ final class ExceptionMessage extends Constraint { /** diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php similarity index 94% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php index 1b03482f7..fd0db1c8f 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php @@ -13,6 +13,9 @@ use function sprintf; use Exception; use PHPUnit\Util\RegularExpression as RegularExpressionUtil; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ final class ExceptionMessageRegularExpression extends Constraint { /** diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php similarity index 89% rename from vendor/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php index ecdad816f..ef4b2baf0 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php @@ -13,9 +13,7 @@ use function is_dir; use function sprintf; /** - * Constraint that checks if the directory(name) that it is evaluated for exists. - * - * The file path to check is passed as $other in evaluate(). + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class DirectoryExists extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php similarity index 90% rename from vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php index 8637359a5..41b3136e9 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php @@ -13,9 +13,7 @@ use function file_exists; use function sprintf; /** - * Constraint that checks if the file(name) that it is evaluated for exists. - * - * The file path to check is passed as $other in evaluate(). + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class FileExists extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsReadable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php similarity index 89% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsReadable.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php index bcf8274e8..e33d7e045 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsReadable.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php @@ -13,9 +13,7 @@ use function is_readable; use function sprintf; /** - * Constraint that checks if the file/dir(name) that it is evaluated for is readable. - * - * The file path to check is passed as $other in evaluate(). + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsReadable extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsWritable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php similarity index 89% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsWritable.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php index 8dd86b562..93981224a 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsWritable.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php @@ -13,9 +13,7 @@ use function is_writable; use function sprintf; /** - * Constraint that checks if the file/dir(name) that it is evaluated for is writable. - * - * The file path to check is passed as $other in evaluate(). + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsWritable extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php index 0407ef1e2..db84a7431 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php @@ -12,7 +12,7 @@ namespace PHPUnit\Framework\Constraint; use PHPUnit\Framework\ExpectationFailedException; /** - * Constraint that accepts any input value. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsAnything extends Constraint { @@ -28,7 +28,7 @@ final class IsAnything extends Constraint * * @throws ExpectationFailedException */ - public function evaluate($other, string $description = '', bool $returnResult = false) + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool { return $returnResult ? true : null; } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php deleted file mode 100644 index bf90a7838..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php +++ /dev/null @@ -1,142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function is_string; -use function sprintf; -use function strpos; -use function trim; -use PHPUnit\Framework\ExpectationFailedException; -use SebastianBergmann\Comparator\ComparisonFailure; -use SebastianBergmann\Comparator\Factory as ComparatorFactory; - -/** - * Constraint that checks if one value is equal to another. - * - * Equality is checked with PHP's == operator, the operator is explained in - * detail at {@url https://php.net/manual/en/types.comparisons.php}. - * Two values are equal if they have the same value disregarding type. - * - * The expected value is passed in the constructor. - */ -final class IsEqual extends Constraint -{ - /** - * @var mixed - */ - private $value; - - /** - * @var float - */ - private $delta; - - /** - * @var bool - */ - private $canonicalize; - - /** - * @var bool - */ - private $ignoreCase; - - public function __construct($value, float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false) - { - $this->value = $value; - $this->delta = $delta; - $this->canonicalize = $canonicalize; - $this->ignoreCase = $ignoreCase; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - // If $this->value and $other are identical, they are also equal. - // This is the most common path and will allow us to skip - // initialization of all the comparators. - if ($this->value === $other) { - return true; - } - - $comparatorFactory = ComparatorFactory::getInstance(); - - try { - $comparator = $comparatorFactory->getComparatorFor( - $this->value, - $other - ); - - $comparator->assertEquals( - $this->value, - $other, - $this->delta, - $this->canonicalize, - $this->ignoreCase - ); - } catch (ComparisonFailure $f) { - if ($returnResult) { - return false; - } - - throw new ExpectationFailedException( - trim($description . "\n" . $f->getMessage()), - $f - ); - } - - return true; - } - - /** - * Returns a string representation of the constraint. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public function toString(): string - { - $delta = ''; - - if (is_string($this->value)) { - if (strpos($this->value, "\n") !== false) { - return 'is equal to '; - } - - return sprintf( - "is equal to '%s'", - $this->value - ); - } - - if ($this->delta != 0) { - $delta = sprintf( - ' with delta <%F>', - $this->delta - ); - } - - return sprintf( - 'is equal to %s%s', - $this->exporter()->export($this->value), - $delta - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php index 99ab65848..fde43d9e5 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php @@ -18,15 +18,7 @@ use PHPUnit\Framework\ExpectationFailedException; use SebastianBergmann\Comparator\ComparisonFailure; /** - * Constraint that asserts that one value is identical to another. - * - * Identical check is performed with PHP's === operator, the operator is - * explained in detail at - * {@url https://php.net/manual/en/types.comparisons.php}. - * Two values are identical if they have the same value and are of the same - * type. - * - * The expected value is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsIdentical extends Constraint { @@ -53,7 +45,7 @@ final class IsIdentical extends Constraint * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public function evaluate($other, string $description = '', bool $returnResult = false) + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool { $success = $this->value === $other; @@ -86,6 +78,8 @@ final class IsIdentical extends Constraint $this->fail($other, $description, $f); } + + return null; } /** diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php index 818a0ee3a..23a4de7e9 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php @@ -16,7 +16,7 @@ use PHPUnit\Util\Json; use SebastianBergmann\Comparator\ComparisonFailure; /** - * Asserts whether or not two JSON objects are equal. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class JsonMatches extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php index 2d28c2761..8ded556ce 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php @@ -18,7 +18,7 @@ use const JSON_ERROR_UTF8; use function strtolower; /** - * Provides human readable messages for each JSON error. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class JsonMatchesErrorMessageProvider { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php deleted file mode 100644 index 6714bf694..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php +++ /dev/null @@ -1,121 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function array_values; -use function count; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * Logical AND. - */ -final class LogicalAnd extends Constraint -{ - /** - * @var Constraint[] - */ - private $constraints = []; - - public static function fromConstraints(Constraint ...$constraints): self - { - $constraint = new self; - - $constraint->constraints = array_values($constraints); - - return $constraint; - } - - /** - * @param Constraint[] $constraints - * - * @throws \PHPUnit\Framework\Exception - */ - public function setConstraints(array $constraints): void - { - $this->constraints = []; - - foreach ($constraints as $constraint) { - if (!($constraint instanceof Constraint)) { - throw new \PHPUnit\Framework\Exception( - 'All parameters to ' . __CLASS__ . - ' must be a constraint object.' - ); - } - - $this->constraints[] = $constraint; - } - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - $success = true; - - foreach ($this->constraints as $constraint) { - if (!$constraint->evaluate($other, $description, true)) { - $success = false; - - break; - } - } - - if ($returnResult) { - return $success; - } - - if (!$success) { - $this->fail($other, $description); - } - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - $text = ''; - - foreach ($this->constraints as $key => $constraint) { - if ($key > 0) { - $text .= ' and '; - } - - $text .= $constraint->toString(); - } - - return $text; - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - $count = 0; - - foreach ($this->constraints as $constraint) { - $count += count($constraint); - } - - return $count; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php deleted file mode 100644 index e37b4a17f..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php +++ /dev/null @@ -1,169 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function count; -use function get_class; -use function preg_match; -use function str_replace; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * Logical NOT. - */ -final class LogicalNot extends Constraint -{ - /** - * @var Constraint - */ - private $constraint; - - public static function negate(string $string): string - { - $positives = [ - 'contains ', - 'exists', - 'has ', - 'is ', - 'are ', - 'matches ', - 'starts with ', - 'ends with ', - 'reference ', - 'not not ', - ]; - - $negatives = [ - 'does not contain ', - 'does not exist', - 'does not have ', - 'is not ', - 'are not ', - 'does not match ', - 'starts not with ', - 'ends not with ', - 'don\'t reference ', - 'not ', - ]; - - preg_match('/(\'[\w\W]*\')([\w\W]*)("[\w\W]*")/i', $string, $matches); - - if (count($matches) > 0) { - $nonInput = $matches[2]; - - $negatedString = str_replace( - $nonInput, - str_replace( - $positives, - $negatives, - $nonInput - ), - $string - ); - } else { - $negatedString = str_replace( - $positives, - $negatives, - $string - ); - } - - return $negatedString; - } - - /** - * @param Constraint|mixed $constraint - */ - public function __construct($constraint) - { - if (!($constraint instanceof Constraint)) { - $constraint = new IsEqual($constraint); - } - - $this->constraint = $constraint; - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - $success = !$this->constraint->evaluate($other, $description, true); - - if ($returnResult) { - return $success; - } - - if (!$success) { - $this->fail($other, $description); - } - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - switch (get_class($this->constraint)) { - case LogicalAnd::class: - case self::class: - case LogicalOr::class: - return 'not( ' . $this->constraint->toString() . ' )'; - - default: - return self::negate( - $this->constraint->toString() - ); - } - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - return count($this->constraint); - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - protected function failureDescription($other): string - { - switch (get_class($this->constraint)) { - case LogicalAnd::class: - case self::class: - case LogicalOr::class: - return 'not( ' . $this->constraint->failureDescription($other) . ' )'; - - default: - return self::negate( - $this->constraint->failureDescription($other) - ); - } - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php deleted file mode 100644 index 98bd86648..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php +++ /dev/null @@ -1,118 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function array_values; -use function count; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * Logical OR. - */ -final class LogicalOr extends Constraint -{ - /** - * @var Constraint[] - */ - private $constraints = []; - - public static function fromConstraints(Constraint ...$constraints): self - { - $constraint = new self; - - $constraint->constraints = array_values($constraints); - - return $constraint; - } - - /** - * @param Constraint[] $constraints - */ - public function setConstraints(array $constraints): void - { - $this->constraints = []; - - foreach ($constraints as $constraint) { - if (!($constraint instanceof Constraint)) { - $constraint = new IsEqual( - $constraint - ); - } - - $this->constraints[] = $constraint; - } - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - $success = false; - - foreach ($this->constraints as $constraint) { - if ($constraint->evaluate($other, $description, true)) { - $success = true; - - break; - } - } - - if ($returnResult) { - return $success; - } - - if (!$success) { - $this->fail($other, $description); - } - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - $text = ''; - - foreach ($this->constraints as $key => $constraint) { - if ($key > 0) { - $text .= ' or '; - } - - $text .= $constraint->toString(); - } - - return $text; - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - $count = 0; - - foreach ($this->constraints as $constraint) { - $count += count($constraint); - } - - return $count; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php deleted file mode 100644 index 12cfff877..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function array_values; -use function count; -use PHPUnit\Framework\ExpectationFailedException; - -/** - * Logical XOR. - */ -final class LogicalXor extends Constraint -{ - /** - * @var Constraint[] - */ - private $constraints = []; - - public static function fromConstraints(Constraint ...$constraints): self - { - $constraint = new self; - - $constraint->constraints = array_values($constraints); - - return $constraint; - } - - /** - * @param Constraint[] $constraints - */ - public function setConstraints(array $constraints): void - { - $this->constraints = []; - - foreach ($constraints as $constraint) { - if (!($constraint instanceof Constraint)) { - $constraint = new IsEqual( - $constraint - ); - } - - $this->constraints[] = $constraint; - } - } - - /** - * Evaluates the constraint for parameter $other. - * - * If $returnResult is set to false (the default), an exception is thrown - * in case of a failure. null is returned otherwise. - * - * If $returnResult is true, the result of the evaluation is returned as - * a boolean value instead: true in case of success, false in case of a - * failure. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - * @throws ExpectationFailedException - */ - public function evaluate($other, string $description = '', bool $returnResult = false) - { - $success = true; - $lastResult = null; - - foreach ($this->constraints as $constraint) { - $result = $constraint->evaluate($other, $description, true); - - if ($result === $lastResult) { - $success = false; - - break; - } - - $lastResult = $result; - } - - if ($returnResult) { - return $success; - } - - if (!$success) { - $this->fail($other, $description); - } - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - $text = ''; - - foreach ($this->constraints as $key => $constraint) { - if ($key > 0) { - $text .= ' xor '; - } - - $text .= $constraint->toString(); - } - - return $text; - } - - /** - * Counts the number of constraint elements. - */ - public function count(): int - { - $count = 0; - - foreach ($this->constraints as $constraint) { - $count += count($constraint); - } - - return $count; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php index ed727d597..9a2f32866 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php @@ -12,7 +12,7 @@ namespace PHPUnit\Framework\Constraint; use function is_finite; /** - * Constraint that accepts finite. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsFinite extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php index 0ada7f1bd..c718514c2 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php @@ -12,7 +12,7 @@ namespace PHPUnit\Framework\Constraint; use function is_infinite; /** - * Constraint that accepts infinite. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsInfinite extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php index 9dde4c6f4..0062c5b5c 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php @@ -12,7 +12,7 @@ namespace PHPUnit\Framework\Constraint; use function is_nan; /** - * Constraint that accepts nan. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsNan extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php similarity index 92% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php index c42964cf5..8df92712e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php @@ -17,10 +17,7 @@ use ReflectionClass; use ReflectionException; /** - * Constraint that asserts that the class it is evaluated for has a given - * attribute. - * - * The attribute name is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ class ClassHasAttribute extends Constraint { @@ -59,7 +56,7 @@ class ClassHasAttribute extends Constraint } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php index 16e2917f6..c2c94109e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php @@ -15,10 +15,7 @@ use ReflectionClass; use ReflectionException; /** - * Constraint that asserts that the class it is evaluated for has a given - * static attribute. - * - * The attribute name is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class ClassHasStaticAttribute extends ClassHasAttribute { @@ -51,7 +48,7 @@ final class ClassHasStaticAttribute extends ClassHasAttribute } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php new file mode 100644 index 000000000..30f3a330c --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php @@ -0,0 +1,151 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function get_class; +use function is_object; +use PHPUnit\Framework\ActualValueIsNotAnObjectException; +use PHPUnit\Framework\ComparisonMethodDoesNotAcceptParameterTypeException; +use PHPUnit\Framework\ComparisonMethodDoesNotDeclareBoolReturnTypeException; +use PHPUnit\Framework\ComparisonMethodDoesNotDeclareExactlyOneParameterException; +use PHPUnit\Framework\ComparisonMethodDoesNotDeclareParameterTypeException; +use PHPUnit\Framework\ComparisonMethodDoesNotExistException; +use ReflectionNamedType; +use ReflectionObject; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class ObjectEquals extends Constraint +{ + /** + * @var object + */ + private $expected; + + /** + * @var string + */ + private $method; + + public function __construct(object $object, string $method = 'equals') + { + $this->expected = $object; + $this->method = $method; + } + + public function toString(): string + { + return 'two objects are equal'; + } + + /** + * @throws ActualValueIsNotAnObjectException + * @throws ComparisonMethodDoesNotAcceptParameterTypeException + * @throws ComparisonMethodDoesNotDeclareBoolReturnTypeException + * @throws ComparisonMethodDoesNotDeclareExactlyOneParameterException + * @throws ComparisonMethodDoesNotDeclareParameterTypeException + * @throws ComparisonMethodDoesNotExistException + */ + protected function matches($other): bool + { + if (!is_object($other)) { + throw new ActualValueIsNotAnObjectException; + } + + $object = new ReflectionObject($other); + + if (!$object->hasMethod($this->method)) { + throw new ComparisonMethodDoesNotExistException( + get_class($other), + $this->method + ); + } + + /** @noinspection PhpUnhandledExceptionInspection */ + $method = $object->getMethod($this->method); + + if (!$method->hasReturnType()) { + throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( + get_class($other), + $this->method + ); + } + + $returnType = $method->getReturnType(); + + if (!$returnType instanceof ReflectionNamedType) { + throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( + get_class($other), + $this->method + ); + } + + if ($returnType->allowsNull()) { + throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( + get_class($other), + $this->method + ); + } + + if ($returnType->getName() !== 'bool') { + throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException( + get_class($other), + $this->method + ); + } + + if ($method->getNumberOfParameters() !== 1 || $method->getNumberOfRequiredParameters() !== 1) { + throw new ComparisonMethodDoesNotDeclareExactlyOneParameterException( + get_class($other), + $this->method + ); + } + + $parameter = $method->getParameters()[0]; + + if (!$parameter->hasType()) { + throw new ComparisonMethodDoesNotDeclareParameterTypeException( + get_class($other), + $this->method + ); + } + + $type = $parameter->getType(); + + if (!$type instanceof ReflectionNamedType) { + throw new ComparisonMethodDoesNotDeclareParameterTypeException( + get_class($other), + $this->method + ); + } + + $typeName = $type->getName(); + + if ($typeName === 'self') { + $typeName = get_class($other); + } + + if (!$this->expected instanceof $typeName) { + throw new ComparisonMethodDoesNotAcceptParameterTypeException( + get_class($other), + $this->method, + get_class($this->expected) + ); + } + + return $other->{$this->method}($this->expected); + } + + protected function failureDescription($other): string + { + return $this->toString(); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php similarity index 83% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php index 8543c220f..5fbc0888c 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php @@ -12,10 +12,7 @@ namespace PHPUnit\Framework\Constraint; use ReflectionObject; /** - * Constraint that asserts that the object it is evaluated for has a given - * attribute. - * - * The attribute name is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class ObjectHasAttribute extends ClassHasAttribute { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php new file mode 100644 index 000000000..11c86b526 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php @@ -0,0 +1,148 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function array_map; +use function array_values; +use function count; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +abstract class BinaryOperator extends Operator +{ + /** + * @var Constraint[] + */ + private $constraints = []; + + public static function fromConstraints(Constraint ...$constraints): self + { + $constraint = new static; + + $constraint->constraints = $constraints; + + return $constraint; + } + + /** + * @param mixed[] $constraints + */ + public function setConstraints(array $constraints): void + { + $this->constraints = array_map(function ($constraint): Constraint + { + return $this->checkConstraint($constraint); + }, array_values($constraints)); + } + + /** + * Returns the number of operands (constraints). + */ + final public function arity(): int + { + return count($this->constraints); + } + + /** + * Returns a string representation of the constraint. + */ + public function toString(): string + { + $reduced = $this->reduce(); + + if ($reduced !== $this) { + return $reduced->toString(); + } + + $text = ''; + + foreach ($this->constraints as $key => $constraint) { + $constraint = $constraint->reduce(); + + $text .= $this->constraintToString($constraint, $key); + } + + return $text; + } + + /** + * Counts the number of constraint elements. + */ + public function count(): int + { + $count = 0; + + foreach ($this->constraints as $constraint) { + $count += count($constraint); + } + + return $count; + } + + /** + * Returns the nested constraints. + */ + final protected function constraints(): array + { + return $this->constraints; + } + + /** + * Returns true if the $constraint needs to be wrapped with braces. + */ + final protected function constraintNeedsParentheses(Constraint $constraint): bool + { + return $this->arity() > 1 && parent::constraintNeedsParentheses($constraint); + } + + /** + * Reduces the sub-expression starting at $this by skipping degenerate + * sub-expression and returns first descendant constraint that starts + * a non-reducible sub-expression. + * + * See Constraint::reduce() for more. + */ + protected function reduce(): Constraint + { + if ($this->arity() === 1 && $this->constraints[0] instanceof Operator) { + return $this->constraints[0]->reduce(); + } + + return parent::reduce(); + } + + /** + * Returns string representation of given operand in context of this operator. + * + * @param Constraint $constraint operand constraint + * @param int $position position of $constraint in this expression + */ + private function constraintToString(Constraint $constraint, int $position): string + { + $prefix = ''; + + if ($position > 0) { + $prefix = (' ' . $this->operator() . ' '); + } + + if ($this->constraintNeedsParentheses($constraint)) { + return $prefix . '( ' . $constraint->toString() . ' )'; + } + + $string = $constraint->toStringInContext($this, $position); + + if ($string === '') { + $string = $constraint->toString(); + } + + return $prefix . $string; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php new file mode 100644 index 000000000..a1af4dd32 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class LogicalAnd extends BinaryOperator +{ + /** + * Returns the name of this operator. + */ + public function operator(): string + { + return 'and'; + } + + /** + * Returns this operator's precedence. + * + * @see https://www.php.net/manual/en/language.operators.precedence.php + */ + public function precedence(): int + { + return 22; + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + foreach ($this->constraints() as $constraint) { + if (!$constraint->evaluate($other, '', true)) { + return false; + } + } + + return [] !== $this->constraints(); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php new file mode 100644 index 000000000..7560ce2a1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php @@ -0,0 +1,136 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function array_map; +use function count; +use function preg_match; +use function preg_quote; +use function preg_replace; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class LogicalNot extends UnaryOperator +{ + public static function negate(string $string): string + { + $positives = [ + 'contains ', + 'exists', + 'has ', + 'is ', + 'are ', + 'matches ', + 'starts with ', + 'ends with ', + 'reference ', + 'not not ', + ]; + + $negatives = [ + 'does not contain ', + 'does not exist', + 'does not have ', + 'is not ', + 'are not ', + 'does not match ', + 'starts not with ', + 'ends not with ', + 'don\'t reference ', + 'not ', + ]; + + preg_match('/(\'[\w\W]*\')([\w\W]*)("[\w\W]*")/i', $string, $matches); + + $positives = array_map(static function (string $s) + { + return '/\\b' . preg_quote($s, '/') . '/'; + }, $positives); + + if (count($matches) > 0) { + $nonInput = $matches[2]; + + $negatedString = preg_replace( + '/' . preg_quote($nonInput, '/') . '/', + preg_replace( + $positives, + $negatives, + $nonInput + ), + $string + ); + } else { + $negatedString = preg_replace( + $positives, + $negatives, + $string + ); + } + + return $negatedString; + } + + /** + * Returns the name of this operator. + */ + public function operator(): string + { + return 'not'; + } + + /** + * Returns this operator's precedence. + * + * @see https://www.php.net/manual/en/language.operators.precedence.php + */ + public function precedence(): int + { + return 5; + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + return !$this->constraint()->evaluate($other, '', true); + } + + /** + * Applies additional transformation to strings returned by toString() or + * failureDescription(). + */ + protected function transformString(string $string): string + { + return self::negate($string); + } + + /** + * Reduces the sub-expression starting at $this by skipping degenerate + * sub-expression and returns first descendant constraint that starts + * a non-reducible sub-expression. + * + * See Constraint::reduce() for more. + */ + protected function reduce(): Constraint + { + $constraint = $this->constraint(); + + if ($constraint instanceof self) { + return $constraint->constraint()->reduce(); + } + + return parent::reduce(); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php new file mode 100644 index 000000000..2932de675 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class LogicalOr extends BinaryOperator +{ + /** + * Returns the name of this operator. + */ + public function operator(): string + { + return 'or'; + } + + /** + * Returns this operator's precedence. + * + * @see https://www.php.net/manual/en/language.operators.precedence.php + */ + public function precedence(): int + { + return 24; + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + public function matches($other): bool + { + foreach ($this->constraints() as $constraint) { + if ($constraint->evaluate($other, '', true)) { + return true; + } + } + + return false; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php new file mode 100644 index 000000000..fbdb479bc --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function array_reduce; +use function array_shift; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class LogicalXor extends BinaryOperator +{ + /** + * Returns the name of this operator. + */ + public function operator(): string + { + return 'xor'; + } + + /** + * Returns this operator's precedence. + * + * @see https://www.php.net/manual/en/language.operators.precedence.php. + */ + public function precedence(): int + { + return 23; + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + public function matches($other): bool + { + $constraints = $this->constraints(); + + $initial = array_shift($constraints); + + if ($initial === null) { + return false; + } + + return array_reduce( + $constraints, + static function (bool $matches, Constraint $constraint) use ($other): bool + { + return $matches xor $constraint->evaluate($other, '', true); + }, + $initial->evaluate($other, '', true) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php new file mode 100644 index 000000000..3f51a0f40 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +abstract class Operator extends Constraint +{ + /** + * Returns the name of this operator. + */ + abstract public function operator(): string; + + /** + * Returns this operator's precedence. + * + * @see https://www.php.net/manual/en/language.operators.precedence.php + */ + abstract public function precedence(): int; + + /** + * Returns the number of operands. + */ + abstract public function arity(): int; + + /** + * Validates $constraint argument. + */ + protected function checkConstraint($constraint): Constraint + { + if (!$constraint instanceof Constraint) { + return new IsEqual($constraint); + } + + return $constraint; + } + + /** + * Returns true if the $constraint needs to be wrapped with braces. + */ + protected function constraintNeedsParentheses(Constraint $constraint): bool + { + return $constraint instanceof self && + $constraint->arity() > 1 && + $this->precedence() <= $constraint->precedence(); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php new file mode 100644 index 000000000..0a7a5fa2f --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php @@ -0,0 +1,140 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function count; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +abstract class UnaryOperator extends Operator +{ + /** + * @var Constraint + */ + private $constraint; + + /** + * @param Constraint|mixed $constraint + */ + public function __construct($constraint) + { + $this->constraint = $this->checkConstraint($constraint); + } + + /** + * Returns the number of operands (constraints). + */ + public function arity(): int + { + return 1; + } + + /** + * Returns a string representation of the constraint. + */ + public function toString(): string + { + $reduced = $this->reduce(); + + if ($reduced !== $this) { + return $reduced->toString(); + } + + $constraint = $this->constraint->reduce(); + + if ($this->constraintNeedsParentheses($constraint)) { + return $this->operator() . '( ' . $constraint->toString() . ' )'; + } + + $string = $constraint->toStringInContext($this, 0); + + if ($string === '') { + return $this->transformString($constraint->toString()); + } + + return $string; + } + + /** + * Counts the number of constraint elements. + */ + public function count(): int + { + return count($this->constraint); + } + + /** + * Returns the description of the failure. + * + * The beginning of failure messages is "Failed asserting that" in most + * cases. This method should return the second part of that sentence. + * + * @param mixed $other evaluated value or object + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + protected function failureDescription($other): string + { + $reduced = $this->reduce(); + + if ($reduced !== $this) { + return $reduced->failureDescription($other); + } + + $constraint = $this->constraint->reduce(); + + if ($this->constraintNeedsParentheses($constraint)) { + return $this->operator() . '( ' . $constraint->failureDescription($other) . ' )'; + } + + $string = $constraint->failureDescriptionInContext($this, 0, $other); + + if ($string === '') { + return $this->transformString($constraint->failureDescription($other)); + } + + return $string; + } + + /** + * Transforms string returned by the memeber constraint's toString() or + * failureDescription() such that it reflects constraint's participation in + * this expression. + * + * The method may be overwritten in a subclass to apply default + * transformation in case the operand constraint does not provide its own + * custom strings via toStringInContext() or failureDescriptionInContext(). + * + * @param string $string the string to be transformed + */ + protected function transformString(string $string): string + { + return $string; + } + + /** + * Provides access to $this->constraint for subclasses. + */ + final protected function constraint(): Constraint + { + return $this->constraint; + } + + /** + * Returns true if the $constraint needs to be wrapped with parentheses. + */ + protected function constraintNeedsParentheses(Constraint $constraint): bool + { + $constraint = $constraint->reduce(); + + return $constraint instanceof self || parent::constraintNeedsParentheses($constraint); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php b/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php deleted file mode 100644 index c6b8703a4..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -final class SameSize extends Count -{ - public function __construct(iterable $expected) - { - parent::__construct($this->getCountOf($expected)); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php similarity index 90% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php index e10e6c1d8..97b294617 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php @@ -14,7 +14,7 @@ use function json_last_error; use function sprintf; /** - * Constraint that asserts that a string is valid JSON. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsJson extends Constraint { @@ -64,7 +64,7 @@ final class IsJson extends Constraint } json_decode($other); - $error = JsonMatchesErrorMessageProvider::determineJsonError( + $error = (string) JsonMatchesErrorMessageProvider::determineJsonError( (string) json_last_error() ); diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php similarity index 78% rename from vendor/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php index 963bfd05d..8e609e795 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php @@ -13,13 +13,7 @@ use function preg_match; use function sprintf; /** - * Constraint that asserts that the string it is evaluated for matches - * a regular expression. - * - * Checks a given value using the Perl Compatible Regular Expression extension - * in PHP. The pattern is matched by executing preg_match(). - * - * The pattern string passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ class RegularExpression extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php new file mode 100644 index 000000000..6279f37ba --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function mb_stripos; +use function mb_strtolower; +use function sprintf; +use function strpos; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class StringContains extends Constraint +{ + /** + * @var string + */ + private $string; + + /** + * @var bool + */ + private $ignoreCase; + + public function __construct(string $string, bool $ignoreCase = false) + { + $this->string = $string; + $this->ignoreCase = $ignoreCase; + } + + /** + * Returns a string representation of the constraint. + */ + public function toString(): string + { + if ($this->ignoreCase) { + $string = mb_strtolower($this->string, 'UTF-8'); + } else { + $string = $this->string; + } + + return sprintf( + 'contains "%s"', + $string + ); + } + + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + if ('' === $this->string) { + return true; + } + + if ($this->ignoreCase) { + /* + * We must use the multi byte safe version so we can accurately compare non latin upper characters with + * their lowercase equivalents. + */ + return mb_stripos($other, $this->string, 0, 'UTF-8') !== false; + } + + /* + * Use the non multi byte safe functions to see if the string is contained in $other. + * + * This function is very fast and we don't care about the character position in the string. + * + * Additionally, we want this method to be binary safe so we can check if some binary data is in other binary + * data. + */ + return strpos($other, $this->string) !== false; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php similarity index 90% rename from vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php index ed11b01d1..bb4ce23be 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php @@ -13,8 +13,7 @@ use function strlen; use function substr; /** - * Constraint that asserts that the string it is evaluated for ends with a given - * suffix. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class StringEndsWith extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php index f2324bb3f..c4f7324ec 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php @@ -17,9 +17,10 @@ use function preg_quote; use function preg_replace; use function strtr; use SebastianBergmann\Diff\Differ; +use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; /** - * ... + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class StringMatchesFormatDescription extends RegularExpression { @@ -75,7 +76,7 @@ final class StringMatchesFormatDescription extends RegularExpression $this->string = implode("\n", $from); $other = implode("\n", $to); - return (new Differ("--- Expected\n+++ Actual\n"))->diff($this->string, $other); + return (new Differ(new UnifiedDiffOutputBuilder("--- Expected\n+++ Actual\n")))->diff($this->string, $other); } private function createPatternFromFormat(string $string): string @@ -101,7 +102,7 @@ final class StringMatchesFormatDescription extends RegularExpression return '/^' . $string . '$/s'; } - private function convertNewlines($text): string + private function convertNewlines(string $text): string { return preg_replace('/\r\n/', "\n", $text); } diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php similarity index 92% rename from vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php index a80a3f6b0..089545c12 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php @@ -14,8 +14,7 @@ use function strpos; use PHPUnit\Framework\InvalidArgumentException; /** - * Constraint that asserts that the string it is evaluated for begins with a - * given prefix. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class StringStartsWith extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php deleted file mode 100644 index 54606364c..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function mb_stripos; -use function mb_strpos; -use function mb_strtolower; -use function sprintf; - -/** - * Constraint that asserts that the string it is evaluated for contains - * a given string. - * - * Uses mb_strpos() to find the position of the string in the input, if not - * found the evaluation fails. - * - * The sub-string is passed in the constructor. - */ -final class StringContains extends Constraint -{ - /** - * @var string - */ - private $string; - - /** - * @var bool - */ - private $ignoreCase; - - public function __construct(string $string, bool $ignoreCase = false) - { - $this->string = $string; - $this->ignoreCase = $ignoreCase; - } - - /** - * Returns a string representation of the constraint. - */ - public function toString(): string - { - if ($this->ignoreCase) { - $string = mb_strtolower($this->string); - } else { - $string = $this->string; - } - - return sprintf( - 'contains "%s"', - $string - ); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other value or object to evaluate - */ - protected function matches($other): bool - { - if ('' === $this->string) { - return true; - } - - if ($this->ignoreCase) { - return mb_stripos($other, $this->string) !== false; - } - - return mb_strpos($other, $this->string) !== false; - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php index 0ba5be92a..44cada3a7 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php @@ -14,12 +14,7 @@ use function is_array; use ArrayAccess; /** - * Constraint that asserts that the array it is evaluated for has a given key. - * - * Uses array_key_exists() to check if the key is found in the input array, if - * not found the evaluation fails. - * - * The array key is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class ArrayHasKey extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php new file mode 100644 index 000000000..39660a985 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use function is_array; +use function sprintf; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +abstract class TraversableContains extends Constraint +{ + /** + * @var mixed + */ + private $value; + + public function __construct($value) + { + $this->value = $value; + } + + /** + * Returns a string representation of the constraint. + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + public function toString(): string + { + return 'contains ' . $this->exporter()->export($this->value); + } + + /** + * Returns the description of the failure. + * + * The beginning of failure messages is "Failed asserting that" in most + * cases. This method should return the second part of that sentence. + * + * @param mixed $other evaluated value or object + * + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ + protected function failureDescription($other): string + { + return sprintf( + '%s %s', + is_array($other) ? 'an array' : 'a traversable', + $this->toString() + ); + } + + protected function value() + { + return $this->value; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php new file mode 100644 index 000000000..c315e709a --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use SplObjectStorage; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class TraversableContainsEqual extends TraversableContains +{ + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + if ($other instanceof SplObjectStorage) { + return $other->contains($this->value()); + } + + foreach ($other as $element) { + /* @noinspection TypeUnsafeComparisonInspection */ + if ($this->value() == $element) { + return true; + } + } + + return false; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php new file mode 100644 index 000000000..a3437dbc9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + +use SplObjectStorage; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class TraversableContainsIdentical extends TraversableContains +{ + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other): bool + { + if ($other instanceof SplObjectStorage) { + return $other->contains($this->value()); + } + + foreach ($other as $element) { + if ($this->value() === $element) { + return true; + } + } + + return false; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php similarity index 90% rename from vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php index a78cfcd8f..cf4a46b42 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php @@ -10,10 +10,10 @@ namespace PHPUnit\Framework\Constraint; use PHPUnit\Framework\ExpectationFailedException; +use Traversable; /** - * Constraint that asserts that the Traversable it is applied to contains - * only values of a given type. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TraversableContainsOnly extends Constraint { @@ -53,10 +53,12 @@ final class TraversableContainsOnly extends Constraint * a boolean value instead: true in case of success, false in case of a * failure. * + * @param mixed|Traversable $other + * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException */ - public function evaluate($other, string $description = '', bool $returnResult = false) + public function evaluate($other, string $description = '', bool $returnResult = false): ?bool { $success = true; @@ -75,6 +77,8 @@ final class TraversableContainsOnly extends Constraint if (!$success) { $this->fail($other, $description); } + + return null; } /** diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php deleted file mode 100644 index 1cae5a306..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function is_array; -use function is_object; -use function is_string; -use function sprintf; -use function strpos; -use SplObjectStorage; - -/** - * Constraint that asserts that the Traversable it is applied to contains - * a given value. - * - * @deprecated Use TraversableContainsEqual or TraversableContainsIdentical instead - */ -final class TraversableContains extends Constraint -{ - /** - * @var bool - */ - private $checkForObjectIdentity; - - /** - * @var bool - */ - private $checkForNonObjectIdentity; - - /** - * @var mixed - */ - private $value; - - public function __construct($value, bool $checkForObjectIdentity = true, bool $checkForNonObjectIdentity = false) - { - $this->checkForObjectIdentity = $checkForObjectIdentity; - $this->checkForNonObjectIdentity = $checkForNonObjectIdentity; - $this->value = $value; - } - - /** - * Returns a string representation of the constraint. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public function toString(): string - { - if (is_string($this->value) && strpos($this->value, "\n") !== false) { - return 'contains "' . $this->value . '"'; - } - - return 'contains ' . $this->exporter()->export($this->value); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other value or object to evaluate - */ - protected function matches($other): bool - { - if ($other instanceof SplObjectStorage) { - return $other->contains($this->value); - } - - if (is_object($this->value)) { - foreach ($other as $element) { - if ($this->checkForObjectIdentity && $element === $this->value) { - return true; - } - - /* @noinspection TypeUnsafeComparisonInspection */ - if (!$this->checkForObjectIdentity && $element == $this->value) { - return true; - } - } - } else { - foreach ($other as $element) { - if ($this->checkForNonObjectIdentity && $element === $this->value) { - return true; - } - - /* @noinspection TypeUnsafeComparisonInspection */ - if (!$this->checkForNonObjectIdentity && $element == $this->value) { - return true; - } - } - } - - return false; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - protected function failureDescription($other): string - { - return sprintf( - '%s %s', - is_array($other) ? 'an array' : 'a traversable', - $this->toString() - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php deleted file mode 100644 index 1357332f1..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsEqual.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function is_array; -use function is_string; -use function sprintf; -use function strpos; -use SplObjectStorage; - -/** - * Constraint that asserts that the Traversable it is applied to contains - * a given value (using non-strict comparison). - */ -final class TraversableContainsEqual extends Constraint -{ - /** - * @var mixed - */ - private $value; - - public function __construct($value) - { - $this->value = $value; - } - - /** - * Returns a string representation of the constraint. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public function toString(): string - { - if (is_string($this->value) && strpos($this->value, "\n") !== false) { - return 'contains "' . $this->value . '"'; - } - - return 'contains ' . $this->exporter()->export($this->value); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other value or object to evaluate - */ - protected function matches($other): bool - { - if ($other instanceof SplObjectStorage) { - return $other->contains($this->value); - } - - foreach ($other as $element) { - /* @noinspection TypeUnsafeComparisonInspection */ - if ($this->value == $element) { - return true; - } - } - - return false; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - protected function failureDescription($other): string - { - return sprintf( - '%s %s', - is_array($other) ? 'an array' : 'a traversable', - $this->toString() - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php deleted file mode 100644 index b455629ac..000000000 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsIdentical.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\Constraint; - -use function is_array; -use function is_string; -use function sprintf; -use function strpos; -use SplObjectStorage; - -/** - * Constraint that asserts that the Traversable it is applied to contains - * a given value (using strict comparison). - */ -final class TraversableContainsIdentical extends Constraint -{ - /** - * @var mixed - */ - private $value; - - public function __construct($value) - { - $this->value = $value; - } - - /** - * Returns a string representation of the constraint. - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public function toString(): string - { - if (is_string($this->value) && strpos($this->value, "\n") !== false) { - return 'contains "' . $this->value . '"'; - } - - return 'contains ' . $this->exporter()->export($this->value); - } - - /** - * Evaluates the constraint for parameter $other. Returns true if the - * constraint is met, false otherwise. - * - * @param mixed $other value or object to evaluate - */ - protected function matches($other): bool - { - if ($other instanceof SplObjectStorage) { - return $other->contains($this->value); - } - - foreach ($other as $element) { - if ($this->value === $element) { - return true; - } - } - - return false; - } - - /** - * Returns the description of the failure. - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other evaluated value or object - * - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - protected function failureDescription($other): string - { - return sprintf( - '%s %s', - is_array($other) ? 'an array' : 'a traversable', - $this->toString() - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php similarity index 92% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php index 02631f8f4..f0fa02b99 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php @@ -14,10 +14,7 @@ use ReflectionClass; use ReflectionException; /** - * Constraint that asserts that the object it is evaluated for is an instance - * of a given class. - * - * The expected class name is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsInstanceOf extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php similarity index 88% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php index 1538138b7..b9fcdd7a7 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php @@ -10,7 +10,7 @@ namespace PHPUnit\Framework\Constraint; /** - * Constraint that accepts null. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsNull extends Constraint { diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php similarity index 76% rename from vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php rename to vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php index 977be34bc..5bc691d74 100644 --- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php +++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php @@ -9,7 +9,7 @@ */ namespace PHPUnit\Framework\Constraint; -use function get_resource_type; +use function gettype; use function is_array; use function is_bool; use function is_callable; @@ -18,17 +18,12 @@ use function is_int; use function is_iterable; use function is_numeric; use function is_object; -use function is_resource; use function is_scalar; use function is_string; use function sprintf; -use TypeError; /** - * Constraint that asserts that the value it is evaluated for is of a - * specified type. - * - * The expected value is passed in the constructor. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class IsType extends Constraint { @@ -72,6 +67,11 @@ final class IsType extends Constraint */ public const TYPE_RESOURCE = 'resource'; + /** + * @var string + */ + public const TYPE_CLOSED_RESOURCE = 'resource (closed)'; + /** * @var string */ @@ -96,22 +96,23 @@ final class IsType extends Constraint * @var array */ private const KNOWN_TYPES = [ - 'array' => true, - 'boolean' => true, - 'bool' => true, - 'double' => true, - 'float' => true, - 'integer' => true, - 'int' => true, - 'null' => true, - 'numeric' => true, - 'object' => true, - 'real' => true, - 'resource' => true, - 'string' => true, - 'scalar' => true, - 'callable' => true, - 'iterable' => true, + 'array' => true, + 'boolean' => true, + 'bool' => true, + 'double' => true, + 'float' => true, + 'integer' => true, + 'int' => true, + 'null' => true, + 'numeric' => true, + 'object' => true, + 'real' => true, + 'resource' => true, + 'resource (closed)' => true, + 'string' => true, + 'scalar' => true, + 'callable' => true, + 'iterable' => true, ]; /** @@ -186,20 +187,12 @@ final class IsType extends Constraint return is_object($other); case 'resource': - if (is_resource($other)) { - return true; - } + $type = gettype($other); - try { - $resource = @get_resource_type($other); + return $type === 'resource' || $type === 'resource (closed)'; - if (is_string($resource)) { - return true; - } - } catch (TypeError $e) { - } - - return false; + case 'resource (closed)': + return gettype($other) === 'resource (closed)'; case 'scalar': return is_scalar($other); @@ -209,6 +202,9 @@ final class IsType extends Constraint case 'iterable': return is_iterable($other); + + default: + return false; } } } diff --git a/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php index 2769a2dc2..18b549996 100644 --- a/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php +++ b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php @@ -9,7 +9,6 @@ */ namespace PHPUnit\Framework; -use function count; use function explode; use PHPUnit\Util\Test as TestUtil; @@ -19,12 +18,12 @@ use PHPUnit\Util\Test as TestUtil; final class DataProviderTestSuite extends TestSuite { /** - * @var string[] + * @var list */ private $dependencies = []; /** - * @param string[] $dependencies + * @param list $dependencies */ public function setDependencies(array $dependencies): void { @@ -32,21 +31,34 @@ final class DataProviderTestSuite extends TestSuite foreach ($this->tests as $test) { if (!$test instanceof TestCase) { + // @codeCoverageIgnoreStart continue; + // @codeCoverageIgnoreStart } - $test->setDependencies($dependencies); } } - public function getDependencies(): array + /** + * @return list + */ + public function provides(): array { - return $this->dependencies; + if ($this->providedTests === null) { + $this->providedTests = [new ExecutionOrderDependency($this->getName())]; + } + + return $this->providedTests; } - public function hasDependencies(): bool + /** + * @return list + */ + public function requires(): array { - return count($this->dependencies) > 0; + // A DataProviderTestSuite does not have to traverse its child tests + // as these are inherited and cannot reference dataProvider rows directly + return $this->dependencies; } /** diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php b/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php index 607c965c1..db62195f8 100644 --- a/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php +++ b/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php @@ -9,6 +9,9 @@ */ namespace PHPUnit\Framework\Error; +/** + * @internal + */ final class Deprecated extends Error { } diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Error.php b/vendor/phpunit/phpunit/src/Framework/Error/Error.php index 61e80f8b6..2990b360e 100644 --- a/vendor/phpunit/phpunit/src/Framework/Error/Error.php +++ b/vendor/phpunit/phpunit/src/Framework/Error/Error.php @@ -11,6 +11,9 @@ namespace PHPUnit\Framework\Error; use PHPUnit\Framework\Exception; +/** + * @internal + */ class Error extends Exception { public function __construct(string $message, int $code, string $file, int $line, \Exception $previous = null) diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Notice.php b/vendor/phpunit/phpunit/src/Framework/Error/Notice.php index 4a3d01da0..54e5e31ea 100644 --- a/vendor/phpunit/phpunit/src/Framework/Error/Notice.php +++ b/vendor/phpunit/phpunit/src/Framework/Error/Notice.php @@ -9,6 +9,9 @@ */ namespace PHPUnit\Framework\Error; +/** + * @internal + */ final class Notice extends Error { } diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Warning.php b/vendor/phpunit/phpunit/src/Framework/Error/Warning.php index d49f99144..0c0c0064f 100644 --- a/vendor/phpunit/phpunit/src/Framework/Error/Warning.php +++ b/vendor/phpunit/phpunit/src/Framework/Error/Warning.php @@ -9,6 +9,9 @@ */ namespace PHPUnit\Framework\Error; +/** + * @internal + */ final class Warning extends Error { } diff --git a/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php b/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php new file mode 100644 index 000000000..841247d72 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ErrorTestCase extends TestCase +{ + /** + * @var bool + */ + protected $backupGlobals = false; + + /** + * @var bool + */ + protected $backupStaticAttributes = false; + + /** + * @var bool + */ + protected $runTestInSeparateProcess = false; + + /** + * @var string + */ + private $message; + + public function __construct(string $message = '') + { + $this->message = $message; + + parent::__construct('Error'); + } + + public function getMessage(): string + { + return $this->message; + } + + /** + * Returns a string representation of the test case. + */ + public function toString(): string + { + return 'Error'; + } + + /** + * @throws Exception + * + * @psalm-return never-return + */ + protected function runTest(): void + { + throw new Error($this->message); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php new file mode 100644 index 000000000..adae28294 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +use const PHP_EOL; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ActualValueIsNotAnObjectException extends Exception +{ + public function __construct() + { + parent::__construct( + 'Actual value is not an object', + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php new file mode 100644 index 000000000..ebd68f34c --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +use const PHP_EOL; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ComparisonMethodDoesNotAcceptParameterTypeException extends Exception +{ + public function __construct(string $className, string $methodName, string $type) + { + parent::__construct( + sprintf( + '%s is not an accepted argument type for comparison method %s::%s().', + $type, + $className, + $methodName + ), + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php new file mode 100644 index 000000000..20189cde4 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.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 PHPUnit\Framework; + +use const PHP_EOL; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ComparisonMethodDoesNotDeclareBoolReturnTypeException extends Exception +{ + public function __construct(string $className, string $methodName) + { + parent::__construct( + sprintf( + 'Comparison method %s::%s() does not declare bool return type.', + $className, + $methodName + ), + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php new file mode 100644 index 000000000..bd09d87cc --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.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 PHPUnit\Framework; + +use const PHP_EOL; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ComparisonMethodDoesNotDeclareExactlyOneParameterException extends Exception +{ + public function __construct(string $className, string $methodName) + { + parent::__construct( + sprintf( + 'Comparison method %s::%s() does not declare exactly one parameter.', + $className, + $methodName + ), + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php new file mode 100644 index 000000000..9bbb112ea --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.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 PHPUnit\Framework; + +use const PHP_EOL; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ComparisonMethodDoesNotDeclareParameterTypeException extends Exception +{ + public function __construct(string $className, string $methodName) + { + parent::__construct( + sprintf( + 'Parameter of comparison method %s::%s() does not have a declared type.', + $className, + $methodName + ), + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php new file mode 100644 index 000000000..ad0e2d088 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.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 PHPUnit\Framework; + +use const PHP_EOL; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ComparisonMethodDoesNotExistException extends Exception +{ + public function __construct(string $className, string $methodName) + { + parent::__construct( + sprintf( + 'Comparison method %s::%s() does not exist.', + $className, + $methodName + ), + 0, + null + ); + } + + public function __toString(): string + { + return $this->getMessage() . PHP_EOL; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/Error.php b/vendor/phpunit/phpunit/src/Framework/Exception/Error.php new file mode 100644 index 000000000..d43e42186 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Exception/Error.php @@ -0,0 +1,24 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Error extends Exception implements SelfDescribing +{ + /** + * Wrapper for getMessage() which is declared as final. + */ + public function toString(): string + { + return $this->getMessage(); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php b/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php index ec7415372..00d40353a 100644 --- a/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php +++ b/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php @@ -9,11 +9,13 @@ */ namespace PHPUnit\Framework; +use const PHP_VERSION_ID; use function array_keys; use function get_class; use function spl_object_hash; use PHPUnit\Util\Filter; use Throwable; +use WeakReference; /** * Wraps Exceptions thrown by code under test. @@ -21,7 +23,7 @@ use Throwable; * Re-instantiates Exceptions thrown by user-space code to retain their original * class names, properties, and stack traces (but without arguments). * - * Unlike PHPUnit\Framework_\Exception, the complete stack of previous Exceptions + * Unlike PHPUnit\Framework\Exception, the complete stack of previous Exceptions * is processed. * * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -38,11 +40,17 @@ final class ExceptionWrapper extends Exception */ protected $previous; + /** + * @var null|WeakReference + */ + private $originalException; + public function __construct(Throwable $t) { // PDOException::getCode() is a string. // @see https://php.net/manual/en/class.pdoexception.php#95812 parent::__construct($t->getMessage(), (int) $t->getCode()); + $this->setOriginalException($t); } @@ -103,18 +111,28 @@ final class ExceptionWrapper extends Exception /** * Method to contain static originalException to exclude it from stacktrace to prevent the stacktrace contents, * which can be quite big, from being garbage-collected, thus blocking memory until shutdown. + * * Approach works both for var_dump() and var_export() and print_r(). */ private function originalException(Throwable $exceptionToStore = null): ?Throwable { - static $originalExceptions; + // drop once PHP 7.3 support is removed + if (PHP_VERSION_ID < 70400) { + static $originalExceptions; - $instanceId = spl_object_hash($this); + $instanceId = spl_object_hash($this); - if ($exceptionToStore) { - $originalExceptions[$instanceId] = $exceptionToStore; + if ($exceptionToStore) { + $originalExceptions[$instanceId] = $exceptionToStore; + } + + return $originalExceptions[$instanceId] ?? null; } - return $originalExceptions[$instanceId] ?? null; + if ($exceptionToStore) { + $this->originalException = WeakReference::create($exceptionToStore); + } + + return $this->originalException !== null ? $this->originalException->get() : null; } } diff --git a/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php new file mode 100644 index 000000000..09c343c16 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php @@ -0,0 +1,206 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +use function array_filter; +use function array_map; +use function array_values; +use function count; +use function explode; +use function in_array; +use function strpos; +use function trim; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ExecutionOrderDependency +{ + /** + * @var string + */ + private $className = ''; + + /** + * @var string + */ + private $methodName = ''; + + /** + * @var bool + */ + private $useShallowClone = false; + + /** + * @var bool + */ + private $useDeepClone = false; + + public static function createFromDependsAnnotation(string $className, string $annotation): self + { + // Split clone option and target + $parts = explode(' ', trim($annotation), 2); + + if (count($parts) === 1) { + $cloneOption = ''; + $target = $parts[0]; + } else { + $cloneOption = $parts[0]; + $target = $parts[1]; + } + + // Prefix provided class for targets assumed to be in scope + if ($target !== '' && strpos($target, '::') === false) { + $target = $className . '::' . $target; + } + + return new self($target, null, $cloneOption); + } + + /** + * @psalm-param list $dependencies + * + * @psalm-return list + */ + public static function filterInvalid(array $dependencies): array + { + return array_values( + array_filter( + $dependencies, + static function (self $d) + { + return $d->isValid(); + } + ) + ); + } + + /** + * @psalm-param list $existing + * @psalm-param list $additional + * + * @psalm-return list + */ + public static function mergeUnique(array $existing, array $additional): array + { + $existingTargets = array_map( + static function ($dependency) + { + return $dependency->getTarget(); + }, + $existing + ); + + foreach ($additional as $dependency) { + if (in_array($dependency->getTarget(), $existingTargets, true)) { + continue; + } + + $existingTargets[] = $dependency->getTarget(); + $existing[] = $dependency; + } + + return $existing; + } + + /** + * @psalm-param list $left + * @psalm-param list $right + * + * @psalm-return list + */ + public static function diff(array $left, array $right): array + { + if ($right === []) { + return $left; + } + + if ($left === []) { + return []; + } + + $diff = []; + $rightTargets = array_map( + static function ($dependency) + { + return $dependency->getTarget(); + }, + $right + ); + + foreach ($left as $dependency) { + if (in_array($dependency->getTarget(), $rightTargets, true)) { + continue; + } + + $diff[] = $dependency; + } + + return $diff; + } + + public function __construct(string $classOrCallableName, ?string $methodName = null, ?string $option = null) + { + if ($classOrCallableName === '') { + return; + } + + if (strpos($classOrCallableName, '::') !== false) { + [$this->className, $this->methodName] = explode('::', $classOrCallableName); + } else { + $this->className = $classOrCallableName; + $this->methodName = !empty($methodName) ? $methodName : 'class'; + } + + if ($option === 'clone') { + $this->useDeepClone = true; + } elseif ($option === 'shallowClone') { + $this->useShallowClone = true; + } + } + + public function __toString(): string + { + return $this->getTarget(); + } + + public function isValid(): bool + { + // Invalid dependencies can be declared and are skipped by the runner + return $this->className !== '' && $this->methodName !== ''; + } + + public function useShallowClone(): bool + { + return $this->useShallowClone; + } + + public function useDeepClone(): bool + { + return $this->useDeepClone; + } + + public function targetIsClass(): bool + { + return $this->methodName === 'class'; + } + + public function getTarget(): string + { + return $this->isValid() + ? $this->className . '::' . $this->methodName + : ''; + } + + public function getTargetClassName(): string + { + return $this->className; + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php index 268957c03..b77b1afff 100644 --- a/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php +++ b/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php @@ -9,9 +9,11 @@ */ namespace PHPUnit\Framework; +use Throwable; + /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -interface IncompleteTest +interface IncompleteTest extends Throwable { } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php index 974ca87ba..89b1e31ab 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php @@ -12,20 +12,20 @@ namespace PHPUnit\Framework\MockObject\Builder; use function array_map; use function array_merge; use function count; -use function get_class; -use function gettype; use function in_array; -use function is_object; use function is_string; -use function sprintf; use function strtolower; use PHPUnit\Framework\Constraint\Constraint; use PHPUnit\Framework\MockObject\ConfigurableMethod; use PHPUnit\Framework\MockObject\IncompatibleReturnValueException; use PHPUnit\Framework\MockObject\InvocationHandler; use PHPUnit\Framework\MockObject\Matcher; +use PHPUnit\Framework\MockObject\MatcherAlreadyRegisteredException; +use PHPUnit\Framework\MockObject\MethodCannotBeConfiguredException; +use PHPUnit\Framework\MockObject\MethodNameAlreadyConfiguredException; +use PHPUnit\Framework\MockObject\MethodNameNotConfiguredException; +use PHPUnit\Framework\MockObject\MethodParametersAlreadyConfiguredException; use PHPUnit\Framework\MockObject\Rule; -use PHPUnit\Framework\MockObject\RuntimeException; use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls; use PHPUnit\Framework\MockObject\Stub\Exception; use PHPUnit\Framework\MockObject\Stub\ReturnArgument; @@ -37,6 +37,9 @@ use PHPUnit\Framework\MockObject\Stub\ReturnValueMap; use PHPUnit\Framework\MockObject\Stub\Stub; use Throwable; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ final class InvocationMocker implements InvocationStubber, MethodNameMatch { /** @@ -62,6 +65,8 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch } /** + * @throws MatcherAlreadyRegisteredException + * * @return $this */ public function id($id): self @@ -81,6 +86,12 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch return $this; } + /** + * @param mixed $value + * @param mixed[] $nextValues + * + * @throws IncompatibleReturnValueException + */ public function willReturn($value, ...$nextValues): self { if (count($nextValues) === 0) { @@ -158,13 +169,17 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch } /** - * @throws RuntimeException + * @param mixed[] $arguments + * + * @throws \PHPUnit\Framework\Exception + * @throws MethodNameNotConfiguredException + * @throws MethodParametersAlreadyConfiguredException * * @return $this */ public function with(...$arguments): self { - $this->canDefineParameters(); + $this->ensureParametersCanBeConfigured(); $this->matcher->setParametersRule(new Rule\Parameters($arguments)); @@ -174,13 +189,15 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch /** * @param array ...$arguments * - * @throws RuntimeException + * @throws \PHPUnit\Framework\Exception + * @throws MethodNameNotConfiguredException + * @throws MethodParametersAlreadyConfiguredException * * @return $this */ public function withConsecutive(...$arguments): self { - $this->canDefineParameters(); + $this->ensureParametersCanBeConfigured(); $this->matcher->setParametersRule(new Rule\ConsecutiveParameters($arguments)); @@ -188,13 +205,14 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch } /** - * @throws RuntimeException + * @throws MethodNameNotConfiguredException + * @throws MethodParametersAlreadyConfiguredException * * @return $this */ public function withAnyParameters(): self { - $this->canDefineParameters(); + $this->ensureParametersCanBeConfigured(); $this->matcher->setParametersRule(new Rule\AnyParameters); @@ -204,16 +222,16 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch /** * @param Constraint|string $constraint * - * @throws RuntimeException + * @throws \PHPUnit\Framework\InvalidArgumentException + * @throws MethodCannotBeConfiguredException + * @throws MethodNameAlreadyConfiguredException * * @return $this */ public function method($constraint): self { if ($this->matcher->hasMethodNameRule()) { - throw new RuntimeException( - 'Rule for method name is already defined, cannot redefine' - ); + throw new MethodNameAlreadyConfiguredException; } $configurableMethodNames = array_map( @@ -225,12 +243,7 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch ); if (is_string($constraint) && !in_array(strtolower($constraint), $configurableMethodNames, true)) { - throw new RuntimeException( - sprintf( - 'Trying to configure method "%s" which cannot be configured because it does not exist, has not been specified, is final, or is static', - $constraint - ) - ); + throw new MethodCannotBeConfiguredException($constraint); } $this->matcher->setMethodNameRule(new Rule\MethodName($constraint)); @@ -239,23 +252,17 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch } /** - * Validate that a parameters rule can be defined, throw exceptions otherwise. - * - * @throws RuntimeException + * @throws MethodNameNotConfiguredException + * @throws MethodParametersAlreadyConfiguredException */ - private function canDefineParameters(): void + private function ensureParametersCanBeConfigured(): void { if (!$this->matcher->hasMethodNameRule()) { - throw new RuntimeException( - 'Rule for method name is not defined, cannot define rule for parameters ' . - 'without one' - ); + throw new MethodNameNotConfiguredException; } if ($this->matcher->hasParametersRule()) { - throw new RuntimeException( - 'Rule for parameters is already defined, cannot redefine' - ); + throw new MethodParametersAlreadyConfiguredException; } } @@ -276,6 +283,9 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch return $configuredMethod; } + /** + * @throws IncompatibleReturnValueException + */ private function ensureTypeOfReturnValues(array $values): void { $configuredMethod = $this->getConfiguredMethod(); @@ -287,12 +297,8 @@ final class InvocationMocker implements InvocationStubber, MethodNameMatch foreach ($values as $value) { if (!$configuredMethod->mayReturn($value)) { throw new IncompatibleReturnValueException( - sprintf( - 'Method %s may not return value of type %s, its return declaration is "%s"', - $configuredMethod->getName(), - is_object($value) ? get_class($value) : gettype($value), - $configuredMethod->getReturnTypeDeclaration() - ) + $configuredMethod, + $value ); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php index c0e51b00e..f32ff0e7c 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php @@ -12,6 +12,9 @@ namespace PHPUnit\Framework\MockObject\Builder; use PHPUnit\Framework\MockObject\Stub\Stub; use Throwable; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ interface InvocationStubber { public function will(Stub $stub): Identity; diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php deleted file mode 100644 index 6cec73ae9..000000000 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Match_.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework\MockObject\Builder; - -/** - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -interface Match_ extends Stub -{ - /** - * Defines the expectation which must occur before the current is valid. - * - * @param string $id the identification of the expectation that should - * occur before this one - * - * @return Stub - */ - public function after($id); -} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php index 6f5fecdd3..707d82551 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php @@ -12,8 +12,18 @@ namespace PHPUnit\Framework\MockObject\Builder; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -interface ParametersMatch extends Match_ +interface ParametersMatch extends Stub { + /** + * Defines the expectation which must occur before the current is valid. + * + * @param string $id the identification of the expectation that should + * occur before this one + * + * @return Stub + */ + public function after($id); + /** * Sets the parameters to match for, each parameter to this function will * be part of match. To perform specific matches or constraints create a diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php index f65983d32..4757dc637 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php @@ -48,6 +48,6 @@ final class ConfigurableMethod public function getReturnTypeDeclaration(): string { - return $this->returnType->getReturnTypeDeclaration(); + return $this->returnType->asString(); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php new file mode 100644 index 000000000..0698870bc --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.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 PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CannotUseAddMethodsException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $type, string $methodName) + { + parent::__construct( + sprintf( + 'Trying to configure method "%s" with addMethods(), but it exists in class "%s". Use onlyMethods() for methods that exist in the class', + $methodName, + $type + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php new file mode 100644 index 000000000..35a29b731 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.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 PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CannotUseOnlyMethodsException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $type, string $methodName) + { + parent::__construct( + sprintf( + 'Trying to configure method "%s" with onlyMethods(), but it does not exist in class "%s". Use addMethods() for methods that do not exist in the class', + $methodName, + $type + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php new file mode 100644 index 000000000..0ba9a187d --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ClassAlreadyExistsException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $className) + { + parent::__construct( + sprintf( + 'Class "%s" already exists', + $className + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php new file mode 100644 index 000000000..e648f0263 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ClassIsFinalException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $className) + { + parent::__construct( + sprintf( + 'Class "%s" is declared "final" and cannot be doubled', + $className + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php new file mode 100644 index 000000000..aa1a74510 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ClassIsReadonlyException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $className) + { + parent::__construct( + sprintf( + 'Class "%s" is declared "readonly" and cannot be doubled', + $className + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php new file mode 100644 index 000000000..1216b45d3 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function array_diff_assoc; +use function array_unique; +use function implode; +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class DuplicateMethodException extends \PHPUnit\Framework\Exception implements Exception +{ + /** + * @psalm-param list $methods + */ + public function __construct(array $methods) + { + parent::__construct( + sprintf( + 'Cannot double using a method list that contains duplicates: "%s" (duplicate: "%s")', + implode(', ', $methods), + implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods)))) + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php index f1ceb1deb..eec792132 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php @@ -9,9 +9,28 @@ */ namespace PHPUnit\Framework\MockObject; +use function get_class; +use function gettype; +use function is_object; +use function sprintf; + /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class IncompatibleReturnValueException extends \PHPUnit\Framework\Exception implements Exception { + /** + * @param mixed $value + */ + public function __construct(ConfigurableMethod $method, $value) + { + parent::__construct( + sprintf( + 'Method %s may not return value of type %s, its declared return type is "%s"', + $method->getName(), + is_object($value) ? get_class($value) : gettype($value), + $method->getReturnTypeDeclaration() + ) + ); + } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php new file mode 100644 index 000000000..d2444cf12 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class InvalidMethodNameException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $method) + { + parent::__construct( + sprintf( + 'Cannot double method with invalid name "%s"', + $method + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php new file mode 100644 index 000000000..c05b2bce6 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MatchBuilderNotFoundException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $id) + { + parent::__construct( + sprintf( + 'No builder found for match builder identification <%s>', + $id + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php new file mode 100644 index 000000000..efcc13ed9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MatcherAlreadyRegisteredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $id) + { + parent::__construct( + sprintf( + 'Matcher with id <%s> is already registered', + $id + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php new file mode 100644 index 000000000..707290439 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MethodCannotBeConfiguredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $method) + { + parent::__construct( + sprintf( + 'Trying to configure method "%s" which cannot be configured because it does not exist, has not been specified, is final, or is static', + $method + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php new file mode 100644 index 000000000..1e9f2c04c --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MethodNameAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct() + { + parent::__construct('Method name is already configured'); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php new file mode 100644 index 000000000..89565b77e --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MethodNameNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct() + { + parent::__construct('Method name is not configured'); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php new file mode 100644 index 000000000..1609c6ffb --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MethodParametersAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct() + { + parent::__construct('Method parameters already configured'); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php new file mode 100644 index 000000000..ecb9b63cf --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class OriginalConstructorInvocationRequiredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct() + { + parent::__construct('Proxying to original methods requires invoking the original constructor'); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php new file mode 100644 index 000000000..d6319c694 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ReflectionException extends RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php new file mode 100644 index 000000000..2c16c1dcc --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.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 PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ReturnValueNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(Invocation $invocation) + { + parent::__construct( + sprintf( + 'Return value inference disabled and no expectation set up for %s::%s()', + $invocation->getClassName(), + $invocation->getMethodName() + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php new file mode 100644 index 000000000..98837c954 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class SoapExtensionNotAvailableException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct() + { + parent::__construct( + 'The SOAP extension is required to generate a test double from WSDL' + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php new file mode 100644 index 000000000..e124f9b18 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class UnknownClassException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $className) + { + parent::__construct( + sprintf( + 'Class "%s" does not exist', + $className + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php new file mode 100644 index 000000000..90fc8d848 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class UnknownTraitException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $traitName) + { + parent::__construct( + sprintf( + 'Trait "%s" does not exist', + $traitName + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php new file mode 100644 index 000000000..b1a70edd6 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\MockObject; + +use function sprintf; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class UnknownTypeException extends \PHPUnit\Framework\Exception implements Exception +{ + public function __construct(string $type) + { + parent::__construct( + sprintf( + 'Class or interface "%s" does not exist', + $type + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php index 121b16936..17e3312c5 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php @@ -14,8 +14,6 @@ use const PHP_EOL; use const PHP_MAJOR_VERSION; use const PREG_OFFSET_CAPTURE; use const WSDL_CACHE_NONE; -use function array_diff_assoc; -use function array_map; use function array_merge; use function array_pop; use function array_unique; @@ -28,8 +26,8 @@ use function in_array; use function interface_exists; use function is_array; use function is_object; -use function is_string; use function md5; +use function method_exists; use function mt_rand; use function preg_match; use function preg_match_all; @@ -50,11 +48,11 @@ use Iterator; use IteratorAggregate; use PHPUnit\Framework\InvalidArgumentException; use ReflectionClass; -use ReflectionException; use ReflectionMethod; +use SebastianBergmann\Template\Exception as TemplateException; +use SebastianBergmann\Template\Template; use SoapClient; use SoapFault; -use Text_Template; use Throwable; use Traversable; @@ -118,7 +116,7 @@ EOT; /** * @var array */ - private const BLACKLISTED_METHOD_NAMES = [ + private const EXCLUDED_METHOD_NAMES = [ '__CLASS__' => true, '__DIR__' => true, '__FILE__' => true, @@ -137,24 +135,28 @@ EOT; private static $cache = []; /** - * @var Text_Template[] + * @var Template[] */ private static $templates = []; /** * Returns a mock object for the specified class. * - * @param string|string[] $type - * @param null|array $methods + * @param null|array $methods * + * @throws \PHPUnit\Framework\InvalidArgumentException + * @throws ClassAlreadyExistsException + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws DuplicateMethodException + * @throws InvalidMethodNameException + * @throws OriginalConstructorInvocationRequiredException + * @throws ReflectionException * @throws RuntimeException + * @throws UnknownTypeException */ - public function getMock($type, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false, object $proxyTarget = null, bool $allowMockingUnknownTypes = true, bool $returnValueGeneration = true): MockObject + public function getMock(string $type, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false, object $proxyTarget = null, bool $allowMockingUnknownTypes = true, bool $returnValueGeneration = true): MockObject { - if (!is_array($type) && !is_string($type)) { - throw InvalidArgumentException::create(1, 'array or string'); - } - if (!is_array($methods) && null !== $methods) { throw InvalidArgumentException::create(2, 'array'); } @@ -163,67 +165,19 @@ EOT; $type = 'Iterator'; } - if (is_array($type)) { - $type = array_unique( - array_map( - static function ($type) - { - if ($type === 'Traversable' || - $type === '\\Traversable' || - $type === '\\Iterator') { - return 'Iterator'; - } - - return $type; - }, - $type - ) - ); - } - - if (!$allowMockingUnknownTypes) { - if (is_array($type)) { - foreach ($type as $_type) { - if (!class_exists($_type, $callAutoload) && - !interface_exists($_type, $callAutoload)) { - throw new RuntimeException( - sprintf( - 'Cannot stub or mock class or interface "%s" which does not exist', - $_type - ) - ); - } - } - } elseif (!class_exists($type, $callAutoload) && !interface_exists($type, $callAutoload)) { - throw new RuntimeException( - sprintf( - 'Cannot stub or mock class or interface "%s" which does not exist', - $type - ) - ); - } + if (!$allowMockingUnknownTypes && !class_exists($type, $callAutoload) && !interface_exists($type, $callAutoload)) { + throw new UnknownTypeException($type); } if (null !== $methods) { foreach ($methods as $method) { if (!preg_match('~[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*~', (string) $method)) { - throw new RuntimeException( - sprintf( - 'Cannot stub or mock method with invalid name "%s"', - $method - ) - ); + throw new InvalidMethodNameException((string) $method); } } if ($methods !== array_unique($methods)) { - throw new RuntimeException( - sprintf( - 'Cannot stub or mock using a method list that contains duplicates: "%s" (duplicate: "%s")', - implode(', ', $methods), - implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods)))) - ) - ); + throw new DuplicateMethodException($methods); } } @@ -231,29 +185,22 @@ EOT; try { $reflector = new ReflectionClass($mockClassName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if (!$reflector->implementsInterface(MockObject::class)) { - throw new RuntimeException( - sprintf( - 'Class "%s" already exists.', - $mockClassName - ) - ); + throw new ClassAlreadyExistsException($mockClassName); } } if (!$callOriginalConstructor && $callOriginalMethods) { - throw new RuntimeException( - 'Proxying to original methods requires invoking the original constructor' - ); + throw new OriginalConstructorInvocationRequiredException; } $mock = $this->generate( @@ -278,10 +225,72 @@ EOT; ); } + /** + * @psalm-param list $interfaces + * + * @throws RuntimeException + * @throws UnknownTypeException + */ + public function getMockForInterfaces(array $interfaces, bool $callAutoload = true): MockObject + { + if (count($interfaces) < 2) { + throw new RuntimeException('At least two interfaces must be specified'); + } + + foreach ($interfaces as $interface) { + if (!interface_exists($interface, $callAutoload)) { + throw new UnknownTypeException($interface); + } + } + + sort($interfaces); + + $methods = []; + + foreach ($interfaces as $interface) { + $methods = array_merge($methods, $this->getClassMethods($interface)); + } + + if (count(array_unique($methods)) < count($methods)) { + throw new RuntimeException('Interfaces must not declare the same method'); + } + + $unqualifiedNames = []; + + foreach ($interfaces as $interface) { + $parts = explode('\\', $interface); + $unqualifiedNames[] = array_pop($parts); + } + + sort($unqualifiedNames); + + do { + $intersectionName = sprintf( + 'Intersection_%s_%s', + implode('_', $unqualifiedNames), + substr(md5((string) mt_rand()), 0, 8) + ); + } while (interface_exists($intersectionName, false)); + + $template = $this->getTemplate('intersection.tpl'); + + $template->setVar( + [ + 'intersection' => $intersectionName, + 'interfaces' => implode(', ', $interfaces), + ] + ); + + eval($template->render()); + + return $this->getMock($intersectionName); + } + /** * Returns a mock object for the specified abstract class with all abstract - * methods of the class mocked. Concrete methods to mock can be specified with - * the $mockedMethods parameter. + * methods of the class mocked. + * + * Concrete methods to mock can be specified with the $mockedMethods parameter. * * @psalm-template RealInstanceType of object * @@ -289,7 +298,17 @@ EOT; * * @psalm-return MockObject&RealInstanceType * + * @throws \PHPUnit\Framework\InvalidArgumentException + * @throws ClassAlreadyExistsException + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws DuplicateMethodException + * @throws InvalidMethodNameException + * @throws OriginalConstructorInvocationRequiredException + * @throws ReflectionException * @throws RuntimeException + * @throws UnknownClassException + * @throws UnknownTypeException */ public function getMockForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = null, bool $cloneArguments = true): MockObject { @@ -298,10 +317,10 @@ EOT; try { $reflector = new ReflectionClass($originalClassName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -331,9 +350,7 @@ EOT; ); } - throw new RuntimeException( - sprintf('Class "%s" does not exist.', $originalClassName) - ); + throw new UnknownClassException($originalClassName); } /** @@ -341,17 +358,25 @@ EOT; * of the trait mocked. Concrete methods to mock can be specified with the * `$mockedMethods` parameter. * + * @psalm-param trait-string $traitName + * + * @throws \PHPUnit\Framework\InvalidArgumentException + * @throws ClassAlreadyExistsException + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws DuplicateMethodException + * @throws InvalidMethodNameException + * @throws OriginalConstructorInvocationRequiredException + * @throws ReflectionException * @throws RuntimeException + * @throws UnknownClassException + * @throws UnknownTraitException + * @throws UnknownTypeException */ public function getMockForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = null, bool $cloneArguments = true): MockObject { if (!trait_exists($traitName, $callAutoload)) { - throw new RuntimeException( - sprintf( - 'Trait "%s" does not exist.', - $traitName - ) - ); + throw new UnknownTraitException($traitName); } $className = $this->generateClassName( @@ -379,17 +404,16 @@ EOT; /** * Returns an object for the specified trait. * + * @psalm-param trait-string $traitName + * + * @throws ReflectionException * @throws RuntimeException + * @throws UnknownTraitException */ public function getObjectForTrait(string $traitName, string $traitClassName = '', bool $callAutoload = true, bool $callOriginalConstructor = false, array $arguments = []): object { if (!trait_exists($traitName, $callAutoload)) { - throw new RuntimeException( - sprintf( - 'Trait "%s" does not exist.', - $traitName - ) - ); + throw new UnknownTraitException($traitName); } $className = $this->generateClassName( @@ -420,12 +444,14 @@ EOT; ); } - public function generate($type, array $methods = null, string $mockClassName = '', bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false): MockClass + /** + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws ReflectionException + * @throws RuntimeException + */ + public function generate(string $type, array $methods = null, string $mockClassName = '', bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false): MockClass { - if (is_array($type)) { - sort($type); - } - if ($mockClassName !== '') { return $this->generateMock( $type, @@ -439,7 +465,7 @@ EOT; } $key = md5( - is_array($type) ? implode('_', $type) : $type . + $type . serialize($methods) . serialize($callOriginalClone) . serialize($cloneArguments) . @@ -463,13 +489,12 @@ EOT; /** * @throws RuntimeException + * @throws SoapExtensionNotAvailableException */ public function generateClassFromWsdl(string $wsdlFile, string $className, array $methods = [], array $options = []): string { if (!extension_loaded('soap')) { - throw new RuntimeException( - 'The SOAP extension is required to generate a mock object from WSDL.' - ); + throw new SoapExtensionNotAvailableException; } $options = array_merge($options, ['cache_wsdl' => WSDL_CACHE_NONE]); @@ -481,7 +506,7 @@ EOT; } catch (SoapFault $e) { throw new RuntimeException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -556,7 +581,7 @@ EOT; } /** - * @throws RuntimeException + * @throws ReflectionException * * @return string[] */ @@ -565,10 +590,10 @@ EOT; try { $class = new ReflectionClass($className); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -586,7 +611,7 @@ EOT; } /** - * @throws RuntimeException + * @throws ReflectionException * * @return MockMethod[] */ @@ -595,10 +620,10 @@ EOT; try { $class = new ReflectionClass($className); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -616,7 +641,7 @@ EOT; } /** - * @throws RuntimeException + * @throws ReflectionException * * @return MockMethod[] */ @@ -625,10 +650,10 @@ EOT; try { $class = new ReflectionClass($interfaceName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -646,6 +671,8 @@ EOT; /** * @psalm-param class-string $interfaceName * + * @throws ReflectionException + * * @return ReflectionMethod[] */ private function userDefinedInterfaceMethods(string $interfaceName): array @@ -653,10 +680,10 @@ EOT; try { // @codeCoverageIgnoreStart $interface = new ReflectionClass($interfaceName); - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -675,6 +702,10 @@ EOT; return $methods; } + /** + * @throws ReflectionException + * @throws RuntimeException + */ private function getObject(MockType $mockClass, $type = '', bool $callOriginalConstructor = false, bool $callAutoload = false, array $arguments = [], bool $callOriginalMethods = false, object $proxyTarget = null, bool $returnValueGeneration = true) { $className = $mockClass->generate(); @@ -686,10 +717,10 @@ EOT; try { $class = new ReflectionClass($className); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -700,8 +731,8 @@ EOT; } else { try { $object = (new Instantiator)->instantiate($className); - } catch (InstantiatorException $exception) { - throw new RuntimeException($exception->getMessage()); + } catch (InstantiatorException $e) { + throw new RuntimeException($e->getMessage()); } } @@ -713,10 +744,10 @@ EOT; try { $class = new ReflectionClass($type); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -737,11 +768,12 @@ EOT; } /** - * @param array|string $type - * + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws ReflectionException * @throws RuntimeException */ - private function generateMock($type, ?array $explicitMethods, string $mockClassName, bool $callOriginalClone, bool $callAutoload, bool $cloneArguments, bool $callOriginalMethods): MockClass + private function generateMock(string $type, ?array $explicitMethods, string $mockClassName, bool $callOriginalClone, bool $callAutoload, bool $cloneArguments, bool $callOriginalMethods): MockClass { $classTemplate = $this->getTemplate('mocked_class.tpl'); $additionalInterfaces = []; @@ -752,85 +784,23 @@ EOT; $class = null; $mockMethods = new MockMethodSet; - if (is_array($type)) { - $interfaceMethods = []; - - foreach ($type as $_type) { - if (!interface_exists($_type, $callAutoload)) { - throw new RuntimeException( - sprintf( - 'Interface "%s" does not exist.', - $_type - ) - ); - } - - $additionalInterfaces[] = $_type; - - try { - $typeClass = new ReflectionClass($_type); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - foreach ($this->getClassMethods($_type) as $method) { - if (in_array($method, $interfaceMethods, true)) { - throw new RuntimeException( - sprintf( - 'Duplicate method "%s" not allowed.', - $method - ) - ); - } - - try { - $methodReflection = $typeClass->getMethod($method); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - if ($this->canMockMethod($methodReflection)) { - $mockMethods->addMethods( - MockMethod::fromReflection($methodReflection, $callOriginalMethods, $cloneArguments) - ); - - $interfaceMethods[] = $method; - } - } - } - - unset($interfaceMethods); - } - - $mockClassName = $this->generateClassName( + $_mockClassName = $this->generateClassName( $type, $mockClassName, 'Mock_' ); - if (class_exists($mockClassName['fullClassName'], $callAutoload)) { + if (class_exists($_mockClassName['fullClassName'], $callAutoload)) { $isClass = true; - } elseif (interface_exists($mockClassName['fullClassName'], $callAutoload)) { + } elseif (interface_exists($_mockClassName['fullClassName'], $callAutoload)) { $isInterface = true; } if (!$isClass && !$isInterface) { - $prologue = 'class ' . $mockClassName['originalClassName'] . "\n{\n}\n\n"; + $prologue = 'class ' . $_mockClassName['originalClassName'] . "\n{\n}\n\n"; - if (!empty($mockClassName['namespaceName'])) { - $prologue = 'namespace ' . $mockClassName['namespaceName'] . + if (!empty($_mockClassName['namespaceName'])) { + $prologue = 'namespace ' . $_mockClassName['namespaceName'] . " {\n\n" . $prologue . "}\n\n" . "namespace {\n\n"; @@ -840,24 +810,23 @@ EOT; $mockedCloneMethod = true; } else { try { - $class = new ReflectionClass($mockClassName['fullClassName']); + $class = new ReflectionClass($_mockClassName['fullClassName']); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if ($class->isFinal()) { - throw new RuntimeException( - sprintf( - 'Class "%s" is declared "final" and cannot be mocked.', - $mockClassName['fullClassName'] - ) - ); + throw new ClassIsFinalException($_mockClassName['fullClassName']); + } + + if (method_exists($class, 'isReadOnly') && $class->isReadOnly()) { + throw new ClassIsReadonlyException($_mockClassName['fullClassName']); } // @see https://github.com/sebastianbergmann/phpunit/issues/2995 @@ -869,26 +838,26 @@ EOT; try { $class = new ReflectionClass($actualClassName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd - foreach ($this->userDefinedInterfaceMethods($mockClassName['fullClassName']) as $method) { + foreach ($this->userDefinedInterfaceMethods($_mockClassName['fullClassName']) as $method) { $methodName = $method->getName(); if ($class->hasMethod($methodName)) { try { $classMethod = $class->getMethod($methodName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -904,9 +873,9 @@ EOT; ); } - $mockClassName = $this->generateClassName( + $_mockClassName = $this->generateClassName( $actualClassName, - $mockClassName['className'], + $_mockClassName['className'], 'Mock_' ); } @@ -926,10 +895,10 @@ EOT; try { $cloneMethod = $class->getMethod('__clone'); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -949,13 +918,13 @@ EOT; if ($isClass && $explicitMethods === []) { $mockMethods->addMethods( - ...$this->mockClassMethods($mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments) + ...$this->mockClassMethods($_mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments) ); } if ($isInterface && ($explicitMethods === [] || $explicitMethods === null)) { $mockMethods->addMethods( - ...$this->mockInterfaceMethods($mockClassName['fullClassName'], $cloneArguments) + ...$this->mockInterfaceMethods($_mockClassName['fullClassName'], $cloneArguments) ); } @@ -965,10 +934,10 @@ EOT; try { $method = $class->getMethod($methodName); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -982,7 +951,7 @@ EOT; } else { $mockMethods->addMethods( MockMethod::fromName( - $mockClassName['fullClassName'], + $_mockClassName['fullClassName'], $methodName, $cloneArguments ) @@ -1020,12 +989,12 @@ EOT; 'prologue' => $prologue ?? '', 'epilogue' => $epilogue ?? '', 'class_declaration' => $this->generateMockClassDeclaration( - $mockClassName, + $_mockClassName, $isInterface, $additionalInterfaces ), 'clone' => $cloneTrait, - 'mock_class_name' => $mockClassName['className'], + 'mock_class_name' => $_mockClassName['className'], 'mocked_methods' => $mockedMethods, 'method' => $method, ] @@ -1033,20 +1002,13 @@ EOT; return new MockClass( $classTemplate->render(), - $mockClassName['className'], + $_mockClassName['className'], $configurable ); } - /** - * @param array|string $type - */ - private function generateClassName($type, string $className, string $prefix): array + private function generateClassName(string $type, string $className, string $prefix): array { - if (is_array($type)) { - $type = implode('_', $type); - } - if ($type[0] === '\\') { $type = substr($type, 1); } @@ -1115,20 +1077,31 @@ EOT; private function canMockMethod(ReflectionMethod $method): bool { - return !($this->isConstructor($method) || $method->isFinal() || $method->isPrivate() || $this->isMethodNameBlacklisted($method->getName())); + return !($this->isConstructor($method) || $method->isFinal() || $method->isPrivate() || $this->isMethodNameExcluded($method->getName())); } - private function isMethodNameBlacklisted(string $name): bool + private function isMethodNameExcluded(string $name): bool { - return isset(self::BLACKLISTED_METHOD_NAMES[$name]); + return isset(self::EXCLUDED_METHOD_NAMES[$name]); } - private function getTemplate(string $template): Text_Template + /** + * @throws RuntimeException + */ + private function getTemplate(string $template): Template { $filename = __DIR__ . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR . $template; if (!isset(self::$templates[$filename])) { - self::$templates[$filename] = new Text_Template($filename); + try { + self::$templates[$filename] = new Template($filename); + } catch (TemplateException $e) { + throw new RuntimeException( + $e->getMessage(), + $e->getCode(), + $e + ); + } } return self::$templates[$filename]; diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/intersection.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/intersection.tpl new file mode 100644 index 000000000..75cd27a6c --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/intersection.tpl @@ -0,0 +1,5 @@ +declare(strict_types=1); + +interface {intersection} extends {interfaces} +{ +} diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl index 32304f30c..114ff8d0d 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl @@ -14,7 +14,7 @@ $__phpunit_result = $this->__phpunit_getInvocationHandler()->invoke( new \PHPUnit\Framework\MockObject\Invocation( - '{class_name}', '{method_name}', $__phpunit_arguments, '{return_declaration}', $this, {clone_arguments} + '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments} ) ); diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_never_or_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_never_or_void.tpl new file mode 100644 index 000000000..390202201 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_never_or_void.tpl @@ -0,0 +1,20 @@ + + {modifier} function {reference}{method_name}({arguments_decl}){return_declaration} + {{deprecation} + $__phpunit_arguments = [{arguments_call}]; + $__phpunit_count = func_num_args(); + + if ($__phpunit_count > {arguments_count}) { + $__phpunit_arguments_tmp = func_get_args(); + + for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) { + $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i]; + } + } + + $this->__phpunit_getInvocationHandler()->invoke( + new \PHPUnit\Framework\MockObject\Invocation( + '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments} + ) + ); + } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl deleted file mode 100644 index 6ea6f4517..000000000 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl +++ /dev/null @@ -1,20 +0,0 @@ - - {modifier} function {reference}{method_name}({arguments_decl}){return_declaration} - {{deprecation} - $__phpunit_arguments = [{arguments_call}]; - $__phpunit_count = func_num_args(); - - if ($__phpunit_count > {arguments_count}) { - $__phpunit_arguments_tmp = func_get_args(); - - for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) { - $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i]; - } - } - - $this->__phpunit_getInvocationHandler()->invoke( - new \PHPUnit\Framework\MockObject\Invocation( - '{class_name}', '{method_name}', $__phpunit_arguments, '{return_declaration}', $this, {clone_arguments} - ) - ); - } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl index 6f699becb..91bef463d 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl @@ -14,7 +14,7 @@ $this->__phpunit_getInvocationHandler()->invoke( new \PHPUnit\Framework\MockObject\Invocation( - '{class_name}', '{method_name}', $__phpunit_arguments, '{return_declaration}', $this, {clone_arguments}, true + '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}, true ) ); diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_never_or_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_never_or_void.tpl new file mode 100644 index 000000000..cce198826 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_never_or_void.tpl @@ -0,0 +1,22 @@ + + {modifier} function {reference}{method_name}({arguments_decl}){return_declaration} + { + $__phpunit_arguments = [{arguments_call}]; + $__phpunit_count = func_num_args(); + + if ($__phpunit_count > {arguments_count}) { + $__phpunit_arguments_tmp = func_get_args(); + + for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) { + $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i]; + } + } + + $this->__phpunit_getInvocationHandler()->invoke( + new \PHPUnit\Framework\MockObject\Invocation( + '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}, true + ) + ); + + call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $__phpunit_arguments); + } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl deleted file mode 100644 index b2f963dfb..000000000 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl +++ /dev/null @@ -1,22 +0,0 @@ - - {modifier} function {reference}{method_name}({arguments_decl}){return_declaration} - { - $__phpunit_arguments = [{arguments_call}]; - $__phpunit_count = func_num_args(); - - if ($__phpunit_count > {arguments_count}) { - $__phpunit_arguments_tmp = func_get_args(); - - for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) { - $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i]; - } - } - - $this->__phpunit_getInvocationHandler()->invoke( - new \PHPUnit\Framework\MockObject\Invocation( - '{class_name}', '{method_name}', $__phpunit_arguments, '{return_declaration}', $this, {clone_arguments}, true - ) - ); - - call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $__phpunit_arguments); - } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php index 098b4fc94..418d6a077 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php @@ -10,17 +10,22 @@ namespace PHPUnit\Framework\MockObject; use function array_map; +use function explode; +use function get_class; use function implode; +use function in_array; +use function interface_exists; use function is_object; -use function ltrim; use function sprintf; use function strpos; use function strtolower; use function substr; +use Doctrine\Instantiator\Instantiator; use PHPUnit\Framework\SelfDescribing; -use PHPUnit\Util\Type; +use PHPUnit\Util\Cloner; use SebastianBergmann\Exporter\Exporter; use stdClass; +use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -70,8 +75,6 @@ final class Invocation implements SelfDescribing $this->object = $object; $this->proxiedCall = $proxiedCall; - $returnType = ltrim($returnType, ': '); - if (strtolower($methodName) === '__tostring') { $returnType = 'string'; } @@ -89,7 +92,7 @@ final class Invocation implements SelfDescribing foreach ($this->parameters as $key => $value) { if (is_object($value)) { - $this->parameters[$key] = $this->cloneObject($value); + $this->parameters[$key] = Cloner::clone($value); } } } @@ -117,53 +120,145 @@ final class Invocation implements SelfDescribing public function generateReturnValue() { if ($this->isReturnTypeNullable || $this->proxiedCall) { - return; + return null; } - switch (strtolower($this->returnType)) { - case '': - case 'void': - return; + $intersection = false; + $union = false; + $unionContainsIntersections = false; - case 'string': - return ''; + if (strpos($this->returnType, '|') !== false) { + $types = explode('|', $this->returnType); + $union = true; - case 'float': - return 0.0; + if (strpos($this->returnType, '(') !== false) { + $unionContainsIntersections = true; + } + } elseif (strpos($this->returnType, '&') !== false) { + $types = explode('&', $this->returnType); + $intersection = true; + } else { + $types = [$this->returnType]; + } - case 'int': - return 0; + $types = array_map('strtolower', $types); - case 'bool': + if (!$intersection && !$unionContainsIntersections) { + if (in_array('', $types, true) || + in_array('null', $types, true) || + in_array('mixed', $types, true) || + in_array('void', $types, true)) { + return null; + } + + if (in_array('true', $types, true)) { + return true; + } + + if (in_array('false', $types, true) || + in_array('bool', $types, true)) { return false; + } - case 'array': + if (in_array('float', $types, true)) { + return 0.0; + } + + if (in_array('int', $types, true)) { + return 0; + } + + if (in_array('string', $types, true)) { + return ''; + } + + if (in_array('array', $types, true)) { return []; + } - case 'object': + if (in_array('static', $types, true)) { + try { + return (new Instantiator)->instantiate(get_class($this->object)); + } catch (Throwable $t) { + throw new RuntimeException( + $t->getMessage(), + (int) $t->getCode(), + $t + ); + } + } + + if (in_array('object', $types, true)) { return new stdClass; + } - case 'callable': - case 'closure': + if (in_array('callable', $types, true) || + in_array('closure', $types, true)) { return static function (): void { }; + } - case 'traversable': - case 'generator': - case 'iterable': - $generator = static function () + if (in_array('traversable', $types, true) || + in_array('generator', $types, true) || + in_array('iterable', $types, true)) { + $generator = static function (): \Generator { yield from []; }; return $generator(); + } - default: - $generator = new Generator; + if (!$union) { + try { + return (new Generator)->getMock($this->returnType, [], [], '', false); + } catch (Throwable $t) { + if ($t instanceof Exception) { + throw $t; + } - return $generator->getMock($this->returnType, [], [], '', false); + throw new RuntimeException( + $t->getMessage(), + (int) $t->getCode(), + $t + ); + } + } } + + if ($intersection && $this->onlyInterfaces($types)) { + try { + return (new Generator)->getMockForInterfaces($types); + } catch (Throwable $t) { + throw new RuntimeException( + sprintf( + 'Return value for %s::%s() cannot be generated: %s', + $this->className, + $this->methodName, + $t->getMessage(), + ), + (int) $t->getCode(), + ); + } + } + + $reason = ''; + + if ($union) { + $reason = ' because the declared return type is a union'; + } elseif ($intersection) { + $reason = ' because the declared return type is an intersection'; + } + + throw new RuntimeException( + sprintf( + 'Return value for %s::%s() cannot be generated%s, please configure a return value for this method', + $this->className, + $this->methodName, + $reason + ) + ); } public function toString(): string @@ -190,12 +285,17 @@ final class Invocation implements SelfDescribing return $this->object; } - private function cloneObject(object $original): object + /** + * @psalm-param non-empty-list $types + */ + private function onlyInterfaces(array $types): bool { - if (Type::isCloneable($original)) { - return clone $original; + foreach ($types as $type) { + if (!interface_exists($type)) { + return false; + } } - return $original; + return true; } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php index 77d7825a2..b9d62610a 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php @@ -9,10 +9,8 @@ */ namespace PHPUnit\Framework\MockObject; -use function sprintf; use function strtolower; use Exception; -use PHPUnit\Framework\ExpectationFailedException; use PHPUnit\Framework\MockObject\Builder\InvocationMocker; use PHPUnit\Framework\MockObject\Rule\InvocationOrder; use Throwable; @@ -85,14 +83,12 @@ final class InvocationHandler * @param string $id The identification of the matcher * @param Matcher $matcher The builder which is being registered * - * @throws RuntimeException + * @throws MatcherAlreadyRegisteredException */ public function registerMatcher(string $id, Matcher $matcher): void { if (isset($this->matcherMap[$id])) { - throw new RuntimeException( - 'Matcher with id <' . $id . '> is already registered.' - ); + throw new MatcherAlreadyRegisteredException($id); } $this->matcherMap[$id] = $matcher; @@ -112,8 +108,7 @@ final class InvocationHandler /** * @throws Exception - * - * @return mixed|void + * @throws RuntimeException */ public function invoke(Invocation $invocation) { @@ -145,13 +140,7 @@ final class InvocationHandler } if (!$this->returnValueGeneration) { - $exception = new ExpectationFailedException( - sprintf( - 'Return value inference disabled and no expectation set up for %s::%s()', - $invocation->getClassName(), - $invocation->getMethodName() - ) - ); + $exception = new ReturnValueNotConfiguredException($invocation); if (strtolower($invocation->getMethodName()) === '__tostring') { $this->deferredError = $exception; @@ -177,7 +166,7 @@ final class InvocationHandler } /** - * @throws \PHPUnit\Framework\ExpectationFailedException + * @throws Throwable */ public function verify(): void { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php index 375a35cdd..7c81a0ea0 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php @@ -12,7 +12,6 @@ namespace PHPUnit\Framework\MockObject; use function assert; use function implode; use function sprintf; -use Exception; use PHPUnit\Framework\ExpectationFailedException; use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount; use PHPUnit\Framework\MockObject\Rule\AnyParameters; @@ -105,14 +104,15 @@ final class Matcher } /** - * @throws Exception * @throws ExpectationFailedException + * @throws MatchBuilderNotFoundException + * @throws MethodNameNotConfiguredException * @throws RuntimeException */ public function invoked(Invocation $invocation) { if ($this->methodNameRule === null) { - throw new RuntimeException('No method rule is set'); + throw new MethodNameNotConfiguredException; } if ($this->afterMatchBuilderId !== null) { @@ -121,13 +121,9 @@ final class Matcher ->lookupMatcher($this->afterMatchBuilderId); if (!$matcher) { - throw new RuntimeException( - sprintf( - 'No builder found for match builder identification <%s>', - $this->afterMatchBuilderId - ) - ); + throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); } + assert($matcher instanceof self); if ($matcher->invocationRule->hasBeenInvoked()) { @@ -163,6 +159,8 @@ final class Matcher /** * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException + * @throws MatchBuilderNotFoundException + * @throws MethodNameNotConfiguredException * @throws RuntimeException */ public function matches(Invocation $invocation): bool @@ -173,13 +171,9 @@ final class Matcher ->lookupMatcher($this->afterMatchBuilderId); if (!$matcher) { - throw new RuntimeException( - sprintf( - 'No builder found for match builder identification <%s>', - $this->afterMatchBuilderId - ) - ); + throw new MatchBuilderNotFoundException($this->afterMatchBuilderId); } + assert($matcher instanceof self); if (!$matcher->invocationRule->hasBeenInvoked()) { @@ -188,7 +182,7 @@ final class Matcher } if ($this->methodNameRule === null) { - throw new RuntimeException('No method rule is set'); + throw new MethodNameNotConfiguredException; } if (!$this->invocationRule->matches($invocation)) { @@ -217,12 +211,12 @@ final class Matcher /** * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException - * @throws RuntimeException + * @throws MethodNameNotConfiguredException */ public function verify(): void { if ($this->methodNameRule === null) { - throw new RuntimeException('No method rule is set'); + throw new MethodNameNotConfiguredException; } try { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php index 6ff2b264e..4007a9f13 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php @@ -11,13 +11,13 @@ namespace PHPUnit\Framework\MockObject; use function array_diff; use function array_merge; -use function sprintf; use PHPUnit\Framework\TestCase; use ReflectionClass; -use ReflectionException; /** * @psalm-template MockedType + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class MockBuilder { @@ -111,7 +111,16 @@ final class MockBuilder /** * Creates a mock object using a fluent interface. * + * @throws \PHPUnit\Framework\InvalidArgumentException + * @throws ClassAlreadyExistsException + * @throws ClassIsFinalException + * @throws ClassIsReadonlyException + * @throws DuplicateMethodException + * @throws InvalidMethodNameException + * @throws OriginalConstructorInvocationRequiredException + * @throws ReflectionException * @throws RuntimeException + * @throws UnknownTypeException * * @psalm-return MockObject&MockedType */ @@ -140,10 +149,11 @@ final class MockBuilder /** * Creates a mock object for an abstract class using a fluent interface. * - * @throws \PHPUnit\Framework\Exception - * @throws RuntimeException - * * @psalm-return MockObject&MockedType + * + * @throws \PHPUnit\Framework\Exception + * @throws ReflectionException + * @throws RuntimeException */ public function getMockForAbstractClass(): MockObject { @@ -166,10 +176,11 @@ final class MockBuilder /** * Creates a mock object for a trait using a fluent interface. * - * @throws \PHPUnit\Framework\Exception - * @throws RuntimeException - * * @psalm-return MockObject&MockedType + * + * @throws \PHPUnit\Framework\Exception + * @throws ReflectionException + * @throws RuntimeException */ public function getMockForTrait(): MockObject { @@ -212,7 +223,8 @@ final class MockBuilder * * @param string[] $methods * - * @throws RuntimeException + * @throws CannotUseOnlyMethodsException + * @throws ReflectionException * * @return $this */ @@ -227,10 +239,10 @@ final class MockBuilder try { $reflector = new ReflectionClass($this->type); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -238,13 +250,7 @@ final class MockBuilder foreach ($methods as $method) { if (!$reflector->hasMethod($method)) { - throw new RuntimeException( - sprintf( - 'Trying to set mock method "%s" with onlyMethods, but it does not exist in class "%s". Use addMethods() for methods that don\'t exist in the class.', - $method, - $this->type - ) - ); + throw new CannotUseOnlyMethodsException($this->type, $method); } } @@ -258,6 +264,8 @@ final class MockBuilder * * @param string[] $methods * + * @throws CannotUseAddMethodsException + * @throws ReflectionException * @throws RuntimeException * * @return $this @@ -273,10 +281,10 @@ final class MockBuilder try { $reflector = new ReflectionClass($this->type); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new RuntimeException( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -284,13 +292,7 @@ final class MockBuilder foreach ($methods as $method) { if ($reflector->hasMethod($method)) { - throw new RuntimeException( - sprintf( - 'Trying to set mock method "%s" with addMethods(), but it exists in class "%s". Use onlyMethods() for methods that exist in the class.', - $method, - $this->type - ) - ); + throw new CannotUseAddMethodsException($this->type, $method); } } @@ -301,6 +303,10 @@ final class MockBuilder /** * Specifies the subset of methods to not mock. Default is to mock all of them. + * + * @deprecated https://github.com/sebastianbergmann/phpunit/pull/3687 + * + * @throws ReflectionException */ public function setMethodsExcept(array $methods = []): self { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php index 4aaac1b43..253d78460 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php @@ -23,7 +23,7 @@ final class MockClass implements MockType private $classCode; /** - * @var string + * @var class-string */ private $mockName; @@ -32,6 +32,9 @@ final class MockClass implements MockType */ private $configurableMethods; + /** + * @psalm-param class-string $mockName + */ public function __construct(string $classCode, string $mockName, array $configurableMethods) { $this->classCode = $classCode; @@ -39,6 +42,9 @@ final class MockClass implements MockType $this->configurableMethods = $configurableMethods; } + /** + * @psalm-return class-string + */ public function generate(): string { if (!class_exists($this->mockName, false)) { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php index 91a686450..2cf149ad6 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php @@ -10,25 +10,26 @@ namespace PHPUnit\Framework\MockObject; use const DIRECTORY_SEPARATOR; +use function explode; use function implode; +use function is_object; use function is_string; -use function method_exists; use function preg_match; use function preg_replace; use function sprintf; -use function str_replace; +use function strlen; +use function strpos; +use function substr; use function substr_count; use function trim; use function var_export; -use ReflectionException; use ReflectionMethod; -use ReflectionNamedType; -use ReflectionType; -use SebastianBergmann\Type\ObjectType; +use ReflectionParameter; +use SebastianBergmann\Template\Exception as TemplateException; +use SebastianBergmann\Template\Template; +use SebastianBergmann\Type\ReflectionMapper; use SebastianBergmann\Type\Type; use SebastianBergmann\Type\UnknownType; -use SebastianBergmann\Type\VoidType; -use Text_Template; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -36,7 +37,7 @@ use Text_Template; final class MockMethod { /** - * @var Text_Template[] + * @var Template[] */ private static $templates = []; @@ -56,7 +57,7 @@ final class MockMethod private $cloneArguments; /** - * @var string + * @var string string */ private $modifier; @@ -96,6 +97,7 @@ final class MockMethod private $deprecation; /** + * @throws ReflectionException * @throws RuntimeException */ public static function fromReflection(ReflectionMethod $method, bool $callOriginalMethod, bool $cloneArguments): self @@ -134,7 +136,7 @@ final class MockMethod $modifier, self::getMethodParametersForDeclaration($method), self::getMethodParametersForCall($method), - self::deriveReturnType($method), + (new ReflectionMapper)->fromReturnType($method), $reference, $callOriginalMethod, $method->isStatic(), @@ -186,9 +188,9 @@ final class MockMethod { if ($this->static) { $templateFile = 'mocked_static_method.tpl'; - } elseif ($this->returnType instanceof VoidType) { + } elseif ($this->returnType->isNever() || $this->returnType->isVoid()) { $templateFile = sprintf( - '%s_method_void.tpl', + '%s_method_never_or_void.tpl', $this->callOriginalMethod ? 'proxied' : 'mocked' ); } else { @@ -204,30 +206,23 @@ final class MockMethod $deprecation = "The {$this->className}::{$this->methodName} method is deprecated ({$this->deprecation})."; $deprecationTemplate = $this->getTemplate('deprecation.tpl'); - $deprecationTemplate->setVar([ - 'deprecation' => var_export($deprecation, true), - ]); + $deprecationTemplate->setVar( + [ + 'deprecation' => var_export($deprecation, true), + ] + ); $deprecation = $deprecationTemplate->render(); } - /** - * This is required as the version of sebastian/type used - * by PHPUnit 8.5 does now know about the mixed type. - */ - $returnTypeDeclaration = str_replace( - '?mixed', - 'mixed', - $this->returnType->getReturnTypeDeclaration() - ); - $template = $this->getTemplate($templateFile); $template->setVar( [ 'arguments_decl' => $this->argumentsForDeclaration, 'arguments_call' => $this->argumentsForCall, - 'return_declaration' => $returnTypeDeclaration, + 'return_declaration' => !empty($this->returnType->asString()) ? (': ' . $this->returnType->asString()) : '', + 'return_type' => $this->returnType->asString(), 'arguments_count' => !empty($this->argumentsForCall) ? substr_count($this->argumentsForCall, ',') + 1 : 0, 'class_name' => $this->className, 'method_name' => $this->methodName, @@ -246,12 +241,23 @@ final class MockMethod return $this->returnType; } - private function getTemplate(string $template): Text_Template + /** + * @throws RuntimeException + */ + private function getTemplate(string $template): Template { $filename = __DIR__ . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR . $template; if (!isset(self::$templates[$filename])) { - self::$templates[$filename] = new Text_Template($filename); + try { + self::$templates[$filename] = new Template($filename); + } catch (TemplateException $e) { + throw new RuntimeException( + $e->getMessage(), + $e->getCode(), + $e + ); + } } return self::$templates[$filename]; @@ -265,6 +271,7 @@ final class MockMethod private static function getMethodParametersForDeclaration(ReflectionMethod $method): string { $parameters = []; + $types = (new ReflectionMapper)->fromParameterTypes($method); foreach ($method->getParameters() as $i => $parameter) { $name = '$' . $parameter->getName(); @@ -276,46 +283,27 @@ final class MockMethod $name = '$arg' . $i; } - $nullable = ''; $default = ''; $reference = ''; $typeDeclaration = ''; - $type = null; - $typeName = null; - if ($parameter->hasType()) { - $type = $parameter->getType(); - - if ($type instanceof ReflectionNamedType) { - $typeName = $type->getName(); - } - } - - if ($parameter->isVariadic()) { - $name = '...' . $name; - } elseif ($parameter->isDefaultValueAvailable()) { - $default = ' = ' . var_export($parameter->getDefaultValue(), true); - } elseif ($parameter->isOptional()) { - $default = ' = null'; - } - - if ($type !== null) { - if ($typeName !== 'mixed' && $parameter->allowsNull()) { - $nullable = '?'; - } - - if ($typeName === 'self') { - $typeDeclaration = $method->getDeclaringClass()->getName() . ' '; - } elseif ($typeName !== null) { - $typeDeclaration = $typeName . ' '; - } + if (!$types[$i]->type()->isUnknown()) { + $typeDeclaration = $types[$i]->type()->asString() . ' '; } if ($parameter->isPassedByReference()) { $reference = '&'; } - $parameters[] = $nullable . $typeDeclaration . $reference . $name . $default; + if ($parameter->isVariadic()) { + $name = '...' . $name; + } elseif ($parameter->isDefaultValueAvailable()) { + $default = ' = ' . self::exportDefaultValue($parameter); + } elseif ($parameter->isOptional()) { + $default = ' = null'; + } + + $parameters[] = $typeDeclaration . $reference . $name . $default; } return implode(', ', $parameters); @@ -354,50 +342,39 @@ final class MockMethod return implode(', ', $parameters); } - private static function deriveReturnType(ReflectionMethod $method): Type + /** + * @throws ReflectionException + */ + private static function exportDefaultValue(ReflectionParameter $parameter): string { - $returnType = self::reflectionMethodGetReturnType($method); + try { + $defaultValue = $parameter->getDefaultValue(); - if ($returnType === null) { - return new UnknownType; - } - - // @see https://bugs.php.net/bug.php?id=70722 - if ($returnType instanceof ReflectionNamedType && $returnType->getName() === 'self') { - return ObjectType::fromName($method->getDeclaringClass()->getName(), $returnType->allowsNull()); - } - - // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/406 - if ($returnType instanceof ReflectionNamedType && $returnType->getName() === 'parent') { - $parentClass = $method->getDeclaringClass()->getParentClass(); - - if ($parentClass === false) { - throw new RuntimeException( - sprintf( - 'Cannot mock %s::%s because "parent" return type declaration is used but %s does not have a parent class', - $method->getDeclaringClass()->getName(), - $method->getName(), - $method->getDeclaringClass()->getName() - ) - ); + if (!is_object($defaultValue)) { + return (string) var_export($defaultValue, true); } - return ObjectType::fromName($parentClass->getName(), $returnType->allowsNull()); + $parameterAsString = $parameter->__toString(); + + return (string) explode( + ' = ', + substr( + substr( + $parameterAsString, + strpos($parameterAsString, ' ') + strlen(' ') + ), + 0, + -2 + ) + )[1]; + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + $e->getCode(), + $e + ); } - - return Type::fromName($returnType->getName(), $returnType->allowsNull()); - } - - private static function reflectionMethodGetReturnType(ReflectionMethod $method): ?ReflectionType - { - if ($method->hasReturnType()) { - return $method->getReturnType(); - } - - if (!method_exists($method, 'getTentativeReturnType')) { - return null; - } - - return $method->getTentativeReturnType(); + // @codeCoverageIgnoreEnd } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php index 4db11e152..094decf43 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php @@ -14,6 +14,8 @@ use PHPUnit\Framework\MockObject\Rule\InvocationOrder; /** * @method BuilderInvocationMocker method($constraint) + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ interface MockObject extends Stub { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php index 7b9f45003..7c326988f 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php @@ -22,16 +22,22 @@ final class MockTrait implements MockType private $classCode; /** - * @var string + * @var class-string */ private $mockName; + /** + * @psalm-param class-string $mockName + */ public function __construct(string $classCode, string $mockName) { $this->classCode = $classCode; $this->mockName = $mockName; } + /** + * @psalm-return class-string + */ public function generate(): string { if (!class_exists($this->mockName, false)) { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php index b35ac306d..6a03fb51a 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php @@ -14,5 +14,8 @@ namespace PHPUnit\Framework\MockObject; */ interface MockType { + /** + * @psalm-return class-string + */ public function generate(): string; } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php index 9cb8137d1..6025c0a16 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php @@ -103,12 +103,6 @@ final class ConsecutiveParameters implements ParametersRule return; } - if ($invocation === null) { - throw new ExpectationFailedException( - 'Mocked method does not exist.' - ); - } - $parameters = $this->parameterGroups[$callIndex]; if (count($invocation->getParameters()) < count($parameters)) { diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php index 3d8446c93..9b51f4ef7 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php @@ -15,8 +15,12 @@ use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4297 + * + * @codeCoverageIgnore */ -class InvokedAtIndex extends InvocationOrder +final class InvokedAtIndex extends InvocationOrder { /** * @var int diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php index 39fb33332..83ba3b8da 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php @@ -57,8 +57,12 @@ final class MethodName return $this->matchesName($invocation->getMethodName()); } + /** + * @throws \PHPUnit\Framework\ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + */ public function matchesName(string $methodName): bool { - return $this->constraint->evaluate($methodName, '', true); + return (bool) $this->constraint->evaluate($methodName, '', true); } } diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php index 0c9f1910d..70c47fe32 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php @@ -14,6 +14,9 @@ use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; use PHPUnit\Framework\MockObject\Verifiable; use PHPUnit\Framework\SelfDescribing; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ interface ParametersRule extends SelfDescribing, Verifiable { /** diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php index f7358afab..2b032e2dc 100644 --- a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php +++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php @@ -13,6 +13,8 @@ use PHPUnit\Framework\MockObject\Builder\InvocationStubber; /** * @method InvocationStubber method($constraint) + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ interface Stub { diff --git a/vendor/phpunit/phpunit/src/Framework/Reorderable.php b/vendor/phpunit/phpunit/src/Framework/Reorderable.php new file mode 100644 index 000000000..34951f8dc --- /dev/null +++ b/vendor/phpunit/phpunit/src/Framework/Reorderable.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +interface Reorderable +{ + public function sortId(): string; + + /** + * @return list + */ + public function provides(): array; + + /** + * @return list + */ + public function requires(): array; +} diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTest.php b/vendor/phpunit/phpunit/src/Framework/SkippedTest.php index c5ac84e67..a12aa402d 100644 --- a/vendor/phpunit/phpunit/src/Framework/SkippedTest.php +++ b/vendor/phpunit/phpunit/src/Framework/SkippedTest.php @@ -9,9 +9,11 @@ */ namespace PHPUnit\Framework; +use Throwable; + /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -interface SkippedTest +interface SkippedTest extends Throwable { } diff --git a/vendor/phpunit/phpunit/src/Framework/Test.php b/vendor/phpunit/phpunit/src/Framework/Test.php index 7740afc27..be0dcd0ef 100644 --- a/vendor/phpunit/phpunit/src/Framework/Test.php +++ b/vendor/phpunit/phpunit/src/Framework/Test.php @@ -12,7 +12,7 @@ namespace PHPUnit\Framework; use Countable; /** - * A Test can be run and collect its results. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ interface Test extends Countable { diff --git a/vendor/phpunit/phpunit/src/Framework/TestBuilder.php b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php index 583a9f2c4..5dd91e219 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestBuilder.php +++ b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php @@ -30,7 +30,7 @@ final class TestBuilder $className = $theClass->getName(); if (!$theClass->isInstantiable()) { - return new WarningTestCase( + return new ErrorTestCase( sprintf('Cannot instantiate class "%s".', $className) ); } @@ -99,7 +99,7 @@ final class TestBuilder $this->throwableToString($t) ); - $data = new WarningTestCase($message); + $data = new ErrorTestCase($message); } // Test method with @dataProvider. @@ -154,7 +154,7 @@ final class TestBuilder $groups = TestUtil::getGroups($className, $methodName); - if ($data instanceof WarningTestCase || + if ($data instanceof ErrorTestCase || $data instanceof SkippedTestCase || $data instanceof IncompleteTestCase) { $dataProviderTestSuite->addTest($data, $groups); diff --git a/vendor/phpunit/phpunit/src/Framework/TestCase.php b/vendor/phpunit/phpunit/src/Framework/TestCase.php index 9ec27f923..530ab6c21 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestCase.php +++ b/vendor/phpunit/phpunit/src/Framework/TestCase.php @@ -12,7 +12,6 @@ namespace PHPUnit\Framework; use const LC_ALL; use const LC_COLLATE; use const LC_CTYPE; -use const LC_MESSAGES; use const LC_MONETARY; use const LC_NUMERIC; use const LC_TIME; @@ -23,15 +22,17 @@ use function array_filter; use function array_flip; use function array_keys; use function array_merge; +use function array_pop; +use function array_search; use function array_unique; use function array_values; -use function assert; use function basename; use function call_user_func; use function chdir; use function class_exists; use function clearstatcache; use function count; +use function debug_backtrace; use function defined; use function explode; use function get_class; @@ -41,6 +42,7 @@ use function implode; use function in_array; use function ini_set; use function is_array; +use function is_callable; use function is_int; use function is_object; use function is_string; @@ -56,7 +58,6 @@ use function preg_replace; use function serialize; use function setlocale; use function sprintf; -use function strlen; use function strpos; use function substr; use function trim; @@ -90,11 +91,11 @@ use PHPUnit\Framework\MockObject\Stub\ReturnStub; use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub; use PHPUnit\Runner\BaseTestRunner; use PHPUnit\Runner\PhptTestCase; +use PHPUnit\Util\Cloner; use PHPUnit\Util\Exception as UtilException; use PHPUnit\Util\GlobalState; use PHPUnit\Util\PHP\AbstractPhpProcess; use PHPUnit\Util\Test as TestUtil; -use PHPUnit\Util\Type; use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophecy\MethodProphecy; use Prophecy\Prophecy\ObjectProphecy; @@ -105,14 +106,18 @@ use SebastianBergmann\Comparator\Comparator; use SebastianBergmann\Comparator\Factory as ComparatorFactory; use SebastianBergmann\Diff\Differ; use SebastianBergmann\Exporter\Exporter; -use SebastianBergmann\GlobalState\Blacklist; +use SebastianBergmann\GlobalState\ExcludeList; use SebastianBergmann\GlobalState\Restorer; use SebastianBergmann\GlobalState\Snapshot; use SebastianBergmann\ObjectEnumerator\Enumerator; -use Text_Template; +use SebastianBergmann\Template\Template; +use SoapClient; use Throwable; -abstract class TestCase extends Assert implements SelfDescribing, Test +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +abstract class TestCase extends Assert implements Reorderable, SelfDescribing, Test { private const LOCALE_CATEGORIES = [LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME]; @@ -124,6 +129,13 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * @var string[] */ + protected $backupGlobalsExcludeList = []; + + /** + * @var string[] + * + * @deprecated Use $backupGlobalsExcludeList instead + */ protected $backupGlobalsBlacklist = []; /** @@ -134,6 +146,13 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * @var array> */ + protected $backupStaticAttributesExcludeList = []; + + /** + * @var array> + * + * @deprecated Use $backupStaticAttributesExcludeList instead + */ protected $backupStaticAttributesBlacklist = []; /** @@ -146,6 +165,11 @@ abstract class TestCase extends Assert implements SelfDescribing, Test */ protected $preserveGlobalState = true; + /** + * @var list + */ + protected $providedTests = []; + /** * @var bool */ @@ -162,7 +186,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private $data; /** - * @var string + * @var int|string */ private $dataName; @@ -192,7 +216,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private $name = ''; /** - * @var string[] + * @var list */ private $dependencies = []; @@ -252,12 +276,12 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private $output = ''; /** - * @var string + * @var ?string */ private $outputExpectedRegex; /** - * @var string + * @var ?string */ private $outputExpectedString; @@ -282,7 +306,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private $outputRetrievedForAssertion = false; /** - * @var Snapshot + * @var ?Snapshot */ private $snapshot; @@ -326,11 +350,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test */ private $doubledTypes = []; - /** - * @var bool - */ - private $deprecatedExpectExceptionMessageRegExpUsed = false; - /** * Returns a matcher that matches when the method is executed * zero or more times. @@ -396,9 +415,27 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Returns a matcher that matches when the method is executed * at the given index. + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4297 + * + * @codeCoverageIgnore */ public static function at(int $index): InvokedAtIndexMatcher { + $stack = debug_backtrace(); + + while (!empty($stack)) { + $frame = array_pop($stack); + + if (isset($frame['object']) && $frame['object'] instanceof self) { + $frame['object']->addWarning( + 'The at() matcher has been deprecated. It will be removed in PHPUnit 10. Please refactor your test to not rely on the order in which methods are invoked.' + ); + + break; + } + } + return new InvokedAtIndexMatcher($index); } @@ -443,12 +480,11 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } /** - * @param string $name - * @param string $dataName + * @param int|string $dataName * * @internal This method is not covered by the backward compatibility promise for PHPUnit */ - public function __construct($name = null, array $data = [], $dataName = '') + public function __construct(?string $name = null, array $data = [], $dataName = '') { if ($name !== null) { $this->setName($name); @@ -518,7 +554,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -560,6 +596,30 @@ abstract class TestCase extends Assert implements SelfDescribing, Test */ public function expectException(string $exception): void { + // @codeCoverageIgnoreStart + switch ($exception) { + case Deprecated::class: + $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Deprecated is deprecated and will be removed in PHPUnit 10. Use expectDeprecation() instead.'); + + break; + + case Error::class: + $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.'); + + break; + + case Notice::class: + $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Notice is deprecated and will be removed in PHPUnit 10. Use expectNotice() instead.'); + + break; + + case WarningError::class: + $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.'); + + break; + } + // @codeCoverageIgnoreEnd + $this->expectedException = $exception; } @@ -581,16 +641,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->expectedExceptionMessageRegExp = $regularExpression; } - /** - * @deprecated Use expectExceptionMessageMatches() instead - */ - public function expectExceptionMessageRegExp(string $regularExpression): void - { - $this->deprecatedExpectExceptionMessageRegExpUsed = true; - - $this->expectExceptionMessageMatches($regularExpression); - } - /** * Sets up an expectation for an exception to be raised by the code under test. * Information for expected exception class, expected exception message, and @@ -610,7 +660,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test public function expectDeprecation(): void { - $this->expectException(Deprecated::class); + $this->expectedException = Deprecated::class; } public function expectDeprecationMessage(string $message): void @@ -625,7 +675,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test public function expectNotice(): void { - $this->expectException(Notice::class); + $this->expectedException = Notice::class; } public function expectNoticeMessage(string $message): void @@ -640,7 +690,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test public function expectWarning(): void { - $this->expectException(WarningError::class); + $this->expectedException = WarningError::class; } public function expectWarningMessage(string $message): void @@ -655,7 +705,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test public function expectError(): void { - $this->expectException(Error::class); + $this->expectedException = Error::class; } public function expectErrorMessage(string $message): void @@ -694,10 +744,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test * Runs the test case and collects the results in a TestResult object. * If no TestResult object is passed a new one will be created. * - * @throws \SebastianBergmann\CodeCoverage\CoveredCodeNotExecutedException * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException - * @throws \SebastianBergmann\CodeCoverage\MissingCoversAnnotationException - * @throws \SebastianBergmann\CodeCoverage\RuntimeException * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws CodeCoverageException @@ -709,11 +756,12 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $result = $this->createResult(); } - if (!$this instanceof WarningTestCase) { + if (!$this instanceof ErrorTestCase && !$this instanceof WarningTestCase) { $this->setTestResultObject($result); } - if (!$this instanceof WarningTestCase && + if (!$this instanceof ErrorTestCase && + !$this instanceof WarningTestCase && !$this instanceof SkippedTestCase && !$this->handleDependencies()) { return $result; @@ -728,18 +776,18 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if ($runEntireClass) { - $template = new Text_Template( + $template = new Template( __DIR__ . '/../Util/PHP/Template/TestCaseClass.tpl' ); } else { - $template = new Text_Template( + $template = new Template( __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl' ); } @@ -781,24 +829,39 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $phar = '\'\''; } - if ($result->getCodeCoverage()) { - $codeCoverageFilter = $result->getCodeCoverage()->filter(); - } else { - $codeCoverageFilter = null; + $codeCoverage = $result->getCodeCoverage(); + $codeCoverageFilter = null; + $cachesStaticAnalysis = 'false'; + $codeCoverageCacheDirectory = null; + $driverMethod = 'forLineCoverage'; + + if ($codeCoverage) { + $codeCoverageFilter = $codeCoverage->filter(); + + if ($codeCoverage->collectsBranchAndPathCoverage()) { + $driverMethod = 'forLineAndPathCoverage'; + } + + if ($codeCoverage->cachesStaticAnalysis()) { + $cachesStaticAnalysis = 'true'; + $codeCoverageCacheDirectory = $codeCoverage->cacheDirectory(); + } } - $data = var_export(serialize($this->data), true); - $dataName = var_export($this->dataName, true); - $dependencyInput = var_export(serialize($this->dependencyInput), true); - $includePath = var_export(get_include_path(), true); - $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true); + $data = var_export(serialize($this->data), true); + $dataName = var_export($this->dataName, true); + $dependencyInput = var_export(serialize($this->dependencyInput), true); + $includePath = var_export(get_include_path(), true); + $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true); + $codeCoverageCacheDirectory = var_export(serialize($codeCoverageCacheDirectory), true); // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences - $data = "'." . $data . ".'"; - $dataName = "'.(" . $dataName . ").'"; - $dependencyInput = "'." . $dependencyInput . ".'"; - $includePath = "'." . $includePath . ".'"; - $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; + $data = "'." . $data . ".'"; + $dataName = "'.(" . $dataName . ").'"; + $dependencyInput = "'." . $dependencyInput . ".'"; + $includePath = "'." . $includePath . ".'"; + $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; + $codeCoverageCacheDirectory = "'." . $codeCoverageCacheDirectory . ".'"; $configurationFilePath = $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] ?? ''; @@ -808,6 +871,9 @@ abstract class TestCase extends Assert implements SelfDescribing, Test 'filename' => $class->getFileName(), 'className' => $class->getName(), 'collectCodeCoverageInformation' => $coverage, + 'cachesStaticAnalysis' => $cachesStaticAnalysis, + 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, + 'driverMethod' => $driverMethod, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, @@ -846,20 +912,14 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Returns a builder object to create mock objects using a fluent interface. * - * @param string|string[] $className - * * @psalm-template RealInstanceType of object * - * @psalm-param class-string|string[] $className + * @psalm-param class-string $className * * @psalm-return MockBuilder */ - public function getMockBuilder($className): MockBuilder + public function getMockBuilder(string $className): MockBuilder { - if (!is_string($className)) { - $this->addWarning('Passing an array of interface names to getMockBuilder() for creating a test double that implements multiple interfaces is deprecated and will no longer be supported in PHPUnit 9.'); - } - $this->recordDoubledType($className); return new MockBuilder($this, $className); @@ -872,15 +932,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->customComparators[] = $comparator; } - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - * - * @deprecated Invoking this method has no effect; it will be removed in PHPUnit 9 - */ - public function setUseErrorHandler(bool $useErrorHandler): void - { - } - /** * @return string[] * @@ -907,17 +958,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->groups = $groups; } - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function getAnnotations(): array - { - return TestUtil::parseTestMethodAnnotations( - static::class, - $this->name - ); - } - /** * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @@ -1101,17 +1141,22 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } } - $this->setExpectedExceptionFromAnnotation(); $this->setDoesNotPerformAssertionsFromAnnotation(); foreach ($hookMethods['before'] as $method) { $this->{$method}(); } - $this->assertPreConditions(); + foreach ($hookMethods['preCondition'] as $method) { + $this->{$method}(); + } + $this->testResult = $this->runTest(); $this->verifyMockObjects(); - $this->assertPostConditions(); + + foreach ($hookMethods['postCondition'] as $method) { + $this->{$method}(); + } if (!empty($this->warnings)) { throw new Warning( @@ -1192,7 +1237,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test if (!isset($e)) { try { if ($this->outputExpectedRegex !== null) { - $this->assertRegExp($this->outputExpectedRegex, $this->output); + $this->assertMatchesRegularExpression($this->outputExpectedRegex, $this->output); } elseif ($this->outputExpectedString !== null) { $this->assertEquals($this->outputExpectedString, $this->output); } @@ -1217,10 +1262,14 @@ abstract class TestCase extends Assert implements SelfDescribing, Test public function setName(string $name): void { $this->name = $name; + + if (is_callable($this->sortId(), true)) { + $this->providedTests = [new ExecutionOrderDependency($this->sortId())]; + } } /** - * @param string[] $dependencies + * @param list $dependencies * * @internal This method is not covered by the backward compatibility promise for PHPUnit */ @@ -1229,22 +1278,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->dependencies = $dependencies; } - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function getDependencies(): array - { - return $this->dependencies; - } - - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function hasDependencies(): bool - { - return count($this->dependencies) > 0; - } - /** * @internal This method is not covered by the backward compatibility promise for PHPUnit */ @@ -1253,14 +1286,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->dependencyInput = $dependencyInput; } - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function getDependencyInput(): array - { - return $this->dependencyInput; - } - /** * @internal This method is not covered by the backward compatibility promise for PHPUnit */ @@ -1407,14 +1432,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test return !empty($this->data); } - /** - * @internal This method is not covered by the backward compatibility promise for PHPUnit - */ - public function dataDescription(): string - { - return is_string($this->dataName) ? $this->dataName : ''; - } - /** * @return int|string * @@ -1467,6 +1484,45 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->warnings[] = $warning; } + public function sortId(): string + { + $id = $this->name; + + if (strpos($id, '::') === false) { + $id = static::class . '::' . $id; + } + + if ($this->usesDataProvider()) { + $id .= $this->getDataSetAsString(false); + } + + return $id; + } + + /** + * Returns the normalized test name as class::method. + * + * @return list + */ + public function provides(): array + { + return $this->providedTests; + } + + /** + * Returns a list of normalized dependency names, class::method. + * + * This list can differ from the raw dependencies as the resolver has + * no need for the [!][shallow]clone prefix that is filtered out + * during normalization. + * + * @return list + */ + public function requires(): array + { + return $this->dependencies; + } + /** * Override to run the test and assert its state. * @@ -1541,10 +1597,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test ); } - if ($this->deprecatedExpectExceptionMessageRegExpUsed) { - $this->addWarning('expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9. Use expectExceptionMessageMatches() instead.'); - } - return; } @@ -1625,10 +1677,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test [$category, $locale] = $args; - if (defined('LC_MESSAGES')) { - $categories[] = LC_MESSAGES; - } - if (!in_array($category, self::LOCALE_CATEGORIES, true)) { throw new Exception; } @@ -1661,48 +1709,35 @@ abstract class TestCase extends Assert implements SelfDescribing, Test */ protected function createStub(string $originalClassName): Stub { - return $this->createMock($originalClassName); + return $this->createMockObject($originalClassName); } /** * Returns a mock object for the specified class. * - * @param string|string[] $originalClassName - * * @psalm-template RealInstanceType of object * - * @psalm-param class-string|string[] $originalClassName + * @psalm-param class-string $originalClassName * * @psalm-return MockObject&RealInstanceType */ - protected function createMock($originalClassName): MockObject + protected function createMock(string $originalClassName): MockObject { - if (!is_string($originalClassName)) { - $this->addWarning('Passing an array of interface names to createMock() for creating a test double that implements multiple interfaces is deprecated and will no longer be supported in PHPUnit 9.'); - } - - return $this->getMockBuilder($originalClassName) - ->disableOriginalConstructor() - ->disableOriginalClone() - ->disableArgumentCloning() - ->disallowMockingUnknownTypes() - ->getMock(); + return $this->createMockObject($originalClassName); } /** * Returns a configured mock object for the specified class. * - * @param string|string[] $originalClassName - * * @psalm-template RealInstanceType of object * - * @psalm-param class-string|string[] $originalClassName + * @psalm-param class-string $originalClassName * * @psalm-return MockObject&RealInstanceType */ - protected function createConfiguredMock($originalClassName, array $configuration): MockObject + protected function createConfiguredMock(string $originalClassName, array $configuration): MockObject { - $o = $this->createMock($originalClassName); + $o = $this->createMockObject($originalClassName); foreach ($configuration as $method => $return) { $o->method($method)->willReturn($return); @@ -1714,43 +1749,44 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Returns a partial mock object for the specified class. * - * @param string|string[] $originalClassName - * @param string[] $methods + * @param string[] $methods * * @psalm-template RealInstanceType of object * - * @psalm-param class-string|string[] $originalClassName + * @psalm-param class-string $originalClassName * * @psalm-return MockObject&RealInstanceType */ - protected function createPartialMock($originalClassName, array $methods): MockObject + protected function createPartialMock(string $originalClassName, array $methods): MockObject { - if (!is_string($originalClassName)) { - $this->addWarning('Passing an array of interface names to createPartialMock() for creating a test double that implements multiple interfaces is deprecated and will no longer be supported in PHPUnit 9.'); - } - - $class_names = is_array($originalClassName) ? $originalClassName : [$originalClassName]; - - foreach ($class_names as $class_name) { - $reflection = new ReflectionClass($class_name); - - $mockedMethodsThatDontExist = array_filter( - $methods, - static function (string $method) use ($reflection) - { - return !$reflection->hasMethod($method); - } + try { + $reflector = new ReflectionClass($originalClassName); + // @codeCoverageIgnoreStart + } catch (ReflectionException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e ); + } + // @codeCoverageIgnoreEnd - if ($mockedMethodsThatDontExist) { - $this->addWarning( - sprintf( - 'createPartialMock called with method(s) %s that do not exist in %s. This will not be allowed in future versions of PHPUnit.', - implode(', ', $mockedMethodsThatDontExist), - $class_name - ) - ); + $mockedMethodsThatDontExist = array_filter( + $methods, + static function (string $method) use ($reflector) + { + return !$reflector->hasMethod($method); } + ); + + if ($mockedMethodsThatDontExist) { + $this->addWarning( + sprintf( + 'createPartialMock() called with method(s) %s that do not exist in %s. This will not be allowed in future versions of PHPUnit.', + implode(', ', $mockedMethodsThatDontExist), + $originalClassName + ) + ); } return $this->getMockBuilder($originalClassName) @@ -1782,13 +1818,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Mocks the specified class and returns the name of the mocked class. * - * @param string $originalClassName - * @param array $methods - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param bool $cloneArguments + * @param null|array $methods $methods * * @psalm-template RealInstanceType of object * @@ -1796,7 +1826,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test * * @psalm-return class-string */ - protected function getMockClass($originalClassName, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false): string + protected function getMockClass(string $originalClassName, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = false, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = false): string { $this->recordDoubledType($originalClassName); @@ -1819,21 +1849,13 @@ abstract class TestCase extends Assert implements SelfDescribing, Test * methods of the class mocked. Concrete methods are not mocked by default. * To mock concrete methods, use the 7th parameter ($mockedMethods). * - * @param string $originalClassName - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments - * * @psalm-template RealInstanceType of object * * @psalm-param class-string $originalClassName * * @psalm-return MockObject&RealInstanceType */ - protected function getMockForAbstractClass($originalClassName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false): MockObject + protected function getMockForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject { $this->recordDoubledType($originalClassName); @@ -1856,21 +1878,15 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Returns a mock object based on the given WSDL file. * - * @param string $wsdlFile - * @param string $originalClassName - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param array $options An array of options passed to SOAPClient::_construct - * * @psalm-template RealInstanceType of object * * @psalm-param class-string|string $originalClassName * * @psalm-return MockObject&RealInstanceType */ - protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = [], $callOriginalConstructor = true, array $options = []): MockObject + protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = '', string $mockClassName = '', array $methods = [], bool $callOriginalConstructor = true, array $options = []): MockObject { - $this->recordDoubledType('SoapClient'); + $this->recordDoubledType(SoapClient::class); if ($originalClassName === '') { $fileName = pathinfo(basename(parse_url($wsdlFile, PHP_URL_PATH)), PATHINFO_FILENAME); @@ -1908,15 +1924,9 @@ abstract class TestCase extends Assert implements SelfDescribing, Test * of the trait mocked. Concrete methods to mock can be specified with the * `$mockedMethods` parameter. * - * @param string $traitName - * @param string $mockClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * @param array $mockedMethods - * @param bool $cloneArguments + * @psalm-param trait-string $traitName */ - protected function getMockForTrait($traitName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false): MockObject + protected function getMockForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject { $this->recordDoubledType($traitName); @@ -1939,15 +1949,9 @@ abstract class TestCase extends Assert implements SelfDescribing, Test /** * Returns an object for the specified trait. * - * @param string $traitName - * @param string $traitClassName - * @param bool $callOriginalConstructor - * @param bool $callOriginalClone - * @param bool $callAutoload - * - * @return object + * @psalm-param trait-string $traitName */ - protected function getObjectForTrait($traitName, array $arguments = [], $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true)/*: object*/ + protected function getObjectForTrait(string $traitName, array $arguments = [], string $traitClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true): object { $this->recordDoubledType($traitName); @@ -1961,20 +1965,22 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } /** - * @param null|string $classOrInterface - * * @throws \Prophecy\Exception\Doubler\ClassNotFoundException * @throws \Prophecy\Exception\Doubler\DoubleException * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException * * @psalm-param class-string|null $classOrInterface + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4141 */ - protected function prophesize($classOrInterface = null): ObjectProphecy + protected function prophesize(?string $classOrInterface = null): ObjectProphecy { if (!class_exists(Prophet::class)) { throw new Exception('This test uses TestCase::prophesize(), but phpspec/prophecy is not installed. Please run "composer require --dev phpspec/prophecy".'); } + $this->addWarning('PHPUnit\Framework\TestCase::prophesize() is deprecated and will be removed in PHPUnit 10. Please use the trait provided by phpspec/prophecy-phpunit.'); + if (is_string($classOrInterface)) { $this->recordDoubledType($classOrInterface); } @@ -2002,56 +2008,9 @@ abstract class TestCase extends Assert implements SelfDescribing, Test throw $t; } - private function setExpectedExceptionFromAnnotation(): void + protected function recordDoubledType(string $originalClassName): void { - if ($this->name === null) { - return; - } - - try { - $expectedException = TestUtil::getExpectedException( - static::class, - $this->name - ); - - if ($expectedException !== false) { - $this->addWarning('The @expectedException, @expectedExceptionCode, @expectedExceptionMessage, and @expectedExceptionMessageRegExp annotations are deprecated. They will be removed in PHPUnit 9. Refactor your test to use expectException(), expectExceptionCode(), expectExceptionMessage(), or expectExceptionMessageMatches() instead.'); - - $this->expectException($expectedException['class']); - - if ($expectedException['code'] !== null) { - $this->expectExceptionCode($expectedException['code']); - } - - if ($expectedException['message'] !== '') { - $this->expectExceptionMessage($expectedException['message']); - } elseif ($expectedException['message_regex'] !== '') { - $this->expectExceptionMessageMatches($expectedException['message_regex']); - } - } - } catch (UtilException $e) { - } - } - - /** - * @throws SkippedTestError - * @throws SyntheticSkippedError - * @throws Warning - */ - private function checkRequirements(): void - { - if (!$this->name || !method_exists($this, $this->name)) { - return; - } - - $missingRequirements = TestUtil::getMissingRequirements( - static::class, - $this->name - ); - - if (!empty($missingRequirements)) { - $this->markTestSkipped(implode(PHP_EOL, $missingRequirements)); - } + $this->doubledTypes[] = $originalClassName; } /** @@ -2076,8 +2035,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test foreach ($this->prophet->getProphecies() as $objectProphecy) { foreach ($objectProphecy->getMethodProphecies() as $methodProphecies) { foreach ($methodProphecies as $methodProphecy) { - assert($methodProphecy instanceof MethodProphecy); - + /* @var MethodProphecy $methodProphecy */ $this->numAssertions += count($methodProphecy->getCheckedPredictions()); } } @@ -2086,90 +2044,105 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } } + /** + * @throws SkippedTestError + * @throws SyntheticSkippedError + * @throws Warning + */ + private function checkRequirements(): void + { + if (!$this->name || !method_exists($this, $this->name)) { + return; + } + + $missingRequirements = TestUtil::getMissingRequirements( + static::class, + $this->name + ); + + if (!empty($missingRequirements)) { + $this->markTestSkipped(implode(PHP_EOL, $missingRequirements)); + } + } + private function handleDependencies(): bool { - if (!empty($this->dependencies) && !$this->inIsolation) { - $passed = $this->result->passed(); - $passedKeys = array_keys($passed); + if ([] === $this->dependencies || $this->inIsolation) { + return true; + } - foreach ($passedKeys as $key => $value) { - $pos = strpos($value, ' with data set'); + $passed = $this->result->passed(); + $passedKeys = array_keys($passed); + $numKeys = count($passedKeys); - if ($pos !== false) { - $passedKeys[$key] = substr($value, 0, $pos); - } + for ($i = 0; $i < $numKeys; $i++) { + $pos = strpos($passedKeys[$i], ' with data set'); + + if ($pos !== false) { + $passedKeys[$i] = substr($passedKeys[$i], 0, $pos); + } + } + + $passedKeys = array_flip(array_unique($passedKeys)); + + foreach ($this->dependencies as $dependency) { + if (!$dependency->isValid()) { + $this->markSkippedForNotSpecifyingDependency(); + + return false; } - $passedKeys = array_flip(array_unique($passedKeys)); + if ($dependency->targetIsClass()) { + $dependencyClassName = $dependency->getTargetClassName(); - foreach ($this->dependencies as $dependency) { - $deepClone = false; - $shallowClone = false; - - if (empty($dependency)) { - $this->markSkippedForNotSpecifyingDependency(); + if (array_search($dependencyClassName, $this->result->passedClasses(), true) === false) { + $this->markSkippedForMissingDependency($dependency); return false; } - if (strpos($dependency, 'clone ') === 0) { - $deepClone = true; - $dependency = substr($dependency, strlen('clone ')); - } elseif (strpos($dependency, '!clone ') === 0) { - $deepClone = false; - $dependency = substr($dependency, strlen('!clone ')); - } + continue; + } - if (strpos($dependency, 'shallowClone ') === 0) { - $shallowClone = true; - $dependency = substr($dependency, strlen('shallowClone ')); - } elseif (strpos($dependency, '!shallowClone ') === 0) { - $shallowClone = false; - $dependency = substr($dependency, strlen('!shallowClone ')); - } + $dependencyTarget = $dependency->getTarget(); - if (strpos($dependency, '::') === false) { - $dependency = static::class . '::' . $dependency; - } - - if (!isset($passedKeys[$dependency])) { - if (!$this->isCallableTestMethod($dependency)) { - $this->warnAboutDependencyThatDoesNotExist($dependency); - } else { - $this->markSkippedForMissingDependency($dependency); - } - - return false; - } - - if (isset($passed[$dependency])) { - if ($passed[$dependency]['size'] !== TestUtil::UNKNOWN && - $this->getSize() !== TestUtil::UNKNOWN && - $passed[$dependency]['size'] > $this->getSize()) { - $this->result->addError( - $this, - new SkippedTestError( - 'This test depends on a test that is larger than itself.' - ), - 0 - ); - - return false; - } - - if ($deepClone) { - $deepCopy = new DeepCopy; - $deepCopy->skipUncloneable(false); - - $this->dependencyInput[$dependency] = $deepCopy->copy($passed[$dependency]['result']); - } elseif ($shallowClone) { - $this->dependencyInput[$dependency] = clone $passed[$dependency]['result']; - } else { - $this->dependencyInput[$dependency] = $passed[$dependency]['result']; - } + if (!isset($passedKeys[$dependencyTarget])) { + if (!$this->isCallableTestMethod($dependencyTarget)) { + $this->markWarningForUncallableDependency($dependency); } else { - $this->dependencyInput[$dependency] = null; + $this->markSkippedForMissingDependency($dependency); } + + return false; + } + + if (isset($passed[$dependencyTarget])) { + if ($passed[$dependencyTarget]['size'] != \PHPUnit\Util\Test::UNKNOWN && + $this->getSize() != \PHPUnit\Util\Test::UNKNOWN && + $passed[$dependencyTarget]['size'] > $this->getSize()) { + $this->result->addError( + $this, + new SkippedTestError( + 'This test depends on a test that is larger than itself.' + ), + 0 + ); + + return false; + } + + if ($dependency->useDeepClone()) { + $deepCopy = new DeepCopy; + $deepCopy->skipUncloneable(false); + + $this->dependencyInput[$dependencyTarget] = $deepCopy->copy($passed[$dependencyTarget]['result']); + } elseif ($dependency->useShallowClone()) { + $this->dependencyInput[$dependencyTarget] = clone $passed[$dependencyTarget]['result']; + } else { + $this->dependencyInput[$dependencyTarget] = $passed[$dependencyTarget]['result']; + } + } else { + $this->dependencyInput[$dependencyTarget] = null; } } @@ -2193,7 +2166,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->result->endTest($this, 0); } - private function markSkippedForMissingDependency(string $dependency): void + private function markSkippedForMissingDependency(ExecutionOrderDependency $dependency): void { $this->status = BaseTestRunner::STATUS_SKIPPED; @@ -2204,7 +2177,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test new SkippedTestError( sprintf( 'This test depends on "%s" to pass.', - $dependency + $dependency->getTarget() ) ), 0 @@ -2213,7 +2186,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test $this->result->endTest($this, 0); } - private function warnAboutDependencyThatDoesNotExist(string $dependency): void + private function markWarningForUncallableDependency(ExecutionOrderDependency $dependency): void { $this->status = BaseTestRunner::STATUS_WARNING; @@ -2224,7 +2197,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test new Warning( sprintf( 'This test depends on "%s" which does not exist.', - $dependency + $dependency->getTarget() ) ), 0 @@ -2330,33 +2303,50 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private function createGlobalStateSnapshot(bool $backupGlobals): Snapshot { - $blacklist = new Blacklist; + $excludeList = new ExcludeList; - foreach ($this->backupGlobalsBlacklist as $globalVariable) { - $blacklist->addGlobalVariable($globalVariable); + foreach ($this->backupGlobalsExcludeList as $globalVariable) { + $excludeList->addGlobalVariable($globalVariable); + } + + if (!empty($this->backupGlobalsBlacklist)) { + $this->addWarning('PHPUnit\Framework\TestCase::$backupGlobalsBlacklist is deprecated and will be removed in PHPUnit 10. Please use PHPUnit\Framework\TestCase::$backupGlobalsExcludeList instead.'); + + foreach ($this->backupGlobalsBlacklist as $globalVariable) { + $excludeList->addGlobalVariable($globalVariable); + } } if (!defined('PHPUNIT_TESTSUITE')) { - $blacklist->addClassNamePrefix('PHPUnit'); - $blacklist->addClassNamePrefix('SebastianBergmann\CodeCoverage'); - $blacklist->addClassNamePrefix('SebastianBergmann\FileIterator'); - $blacklist->addClassNamePrefix('SebastianBergmann\Invoker'); - $blacklist->addClassNamePrefix('SebastianBergmann\Timer'); - $blacklist->addClassNamePrefix('PHP_Token'); - $blacklist->addClassNamePrefix('Text_Template'); - $blacklist->addClassNamePrefix('Doctrine\Instantiator'); - $blacklist->addClassNamePrefix('Prophecy'); - $blacklist->addStaticAttribute(ComparatorFactory::class, 'instance'); + $excludeList->addClassNamePrefix('PHPUnit'); + $excludeList->addClassNamePrefix('SebastianBergmann\CodeCoverage'); + $excludeList->addClassNamePrefix('SebastianBergmann\FileIterator'); + $excludeList->addClassNamePrefix('SebastianBergmann\Invoker'); + $excludeList->addClassNamePrefix('SebastianBergmann\Template'); + $excludeList->addClassNamePrefix('SebastianBergmann\Timer'); + $excludeList->addClassNamePrefix('Doctrine\Instantiator'); + $excludeList->addClassNamePrefix('Prophecy'); + $excludeList->addStaticAttribute(ComparatorFactory::class, 'instance'); - foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) { + foreach ($this->backupStaticAttributesExcludeList as $class => $attributes) { foreach ($attributes as $attribute) { - $blacklist->addStaticAttribute($class, $attribute); + $excludeList->addStaticAttribute($class, $attribute); + } + } + + if (!empty($this->backupStaticAttributesBlacklist)) { + $this->addWarning('PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist is deprecated and will be removed in PHPUnit 10. Please use PHPUnit\Framework\TestCase::$backupStaticAttributesExcludeList instead.'); + + foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) { + foreach ($attributes as $attribute) { + $excludeList->addStaticAttribute($class, $attribute); + } } } } return new Snapshot( - $blacklist, + $excludeList, $backupGlobals, (bool) $this->backupStaticAttributes, false, @@ -2465,9 +2455,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } else { foreach ($testArguments as $testArgument) { if ($testArgument instanceof MockObject) { - if (Type::isCloneable($testArgument)) { - $testArgument = clone $testArgument; - } + $testArgument = Cloner::clone($testArgument); $this->registerMockObject($testArgument); } elseif (is_array($testArgument) && !in_array($testArgument, $visited, true)) { @@ -2484,7 +2472,10 @@ abstract class TestCase extends Assert implements SelfDescribing, Test private function setDoesNotPerformAssertionsFromAnnotation(): void { - $annotations = $this->getAnnotations(); + $annotations = TestUtil::parseTestMethodAnnotations( + static::class, + $this->name + ); if (isset($annotations['method']['doesNotPerformAssertions'])) { $this->doesNotPerformAssertions = true; @@ -2542,7 +2533,7 @@ abstract class TestCase extends Assert implements SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -2564,24 +2555,6 @@ abstract class TestCase extends Assert implements SelfDescribing, Test !$this->inIsolation && !$this instanceof PhptTestCase; } - /** - * @param string|string[] $originalClassName - */ - private function recordDoubledType($originalClassName): void - { - if (is_string($originalClassName)) { - $this->doubledTypes[] = $originalClassName; - } - - if (is_array($originalClassName)) { - foreach ($originalClassName as $_originalClassName) { - if (is_string($_originalClassName)) { - $this->doubledTypes[] = $_originalClassName; - } - } - } - } - private function isCallableTestMethod(string $dependency): bool { [$className, $methodName] = explode('::', $dependency); @@ -2612,4 +2585,21 @@ abstract class TestCase extends Assert implements SelfDescribing, Test return TestUtil::isTestMethod($method); } + + /** + * @psalm-template RealInstanceType of object + * + * @psalm-param class-string $originalClassName + * + * @psalm-return MockObject&RealInstanceType + */ + private function createMockObject(string $originalClassName): MockObject + { + return $this->getMockBuilder($originalClassName) + ->disableOriginalConstructor() + ->disableOriginalClone() + ->disableArgumentCloning() + ->disallowMockingUnknownTypes() + ->getMock(); + } } diff --git a/vendor/phpunit/phpunit/src/Framework/TestFailure.php b/vendor/phpunit/phpunit/src/Framework/TestFailure.php index 5849d36ed..0764bc789 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestFailure.php +++ b/vendor/phpunit/phpunit/src/Framework/TestFailure.php @@ -71,10 +71,8 @@ final class TestFailure /** * Constructs a TestFailure with the given test and exception. - * - * @param Throwable $t */ - public function __construct(Test $failedTest, $t) + public function __construct(Test $failedTest, Throwable $t) { if ($failedTest instanceof SelfDescribing) { $this->testName = $failedTest->toString(); diff --git a/vendor/phpunit/phpunit/src/Framework/TestListener.php b/vendor/phpunit/phpunit/src/Framework/TestListener.php index a29fcdeee..eade600f2 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestListener.php +++ b/vendor/phpunit/phpunit/src/Framework/TestListener.php @@ -16,6 +16,8 @@ use Throwable; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @deprecated * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ diff --git a/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php b/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php index 7c99f5cb2..5731d98d5 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php +++ b/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php @@ -13,6 +13,8 @@ use Throwable; /** * @deprecated The `TestListener` interface is deprecated + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ trait TestListenerDefaultImplementation { diff --git a/vendor/phpunit/phpunit/src/Framework/TestResult.php b/vendor/phpunit/phpunit/src/Framework/TestResult.php index e72bd260a..4fde29fac 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestResult.php +++ b/vendor/phpunit/phpunit/src/Framework/TestResult.php @@ -23,17 +23,14 @@ use function xdebug_stop_function_monitor; use AssertionError; use Countable; use Error; -use PHPUnit\Framework\MockObject\Exception as MockObjectException; -use PHPUnit\Util\Blacklist; use PHPUnit\Util\ErrorHandler; +use PHPUnit\Util\ExcludeList; use PHPUnit\Util\Printer; use PHPUnit\Util\Test as TestUtil; use ReflectionClass; use ReflectionException; use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\CoveredCodeNotExecutedException as OriginalCoveredCodeNotExecutedException; use SebastianBergmann\CodeCoverage\Exception as OriginalCodeCoverageException; -use SebastianBergmann\CodeCoverage\MissingCoversAnnotationException as OriginalMissingCoversAnnotationException; use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; use SebastianBergmann\Invoker\Invoker; use SebastianBergmann\Invoker\TimeoutException; @@ -51,6 +48,16 @@ final class TestResult implements Countable */ private $passed = []; + /** + * @var array + */ + private $passedTestClasses = []; + + /** + * @var bool + */ + private $currentTestSuiteFailed = false; + /** * @var TestFailure[] */ @@ -98,11 +105,6 @@ final class TestResult implements Countable */ private $time = 0; - /** - * @var TestSuite - */ - private $topTestSuite; - /** * Code Coverage information. * @@ -175,6 +177,11 @@ final class TestResult implements Countable */ private $enforceTimeLimit = false; + /** + * @var bool + */ + private $forceCoversAnnotation = false; + /** * @var int */ @@ -275,8 +282,9 @@ final class TestResult implements Countable public function addError(Test $test, Throwable $t, float $time): void { if ($t instanceof RiskyTestError) { - $this->risky[] = new TestFailure($test, $t); - $notifyMethod = 'addRiskyTest'; + $this->recordRisky($test, $t); + + $notifyMethod = 'addRiskyTest'; if ($test instanceof TestCase) { $test->markAsRisky(); @@ -286,22 +294,25 @@ final class TestResult implements Countable $this->stop(); } } elseif ($t instanceof IncompleteTest) { - $this->notImplemented[] = new TestFailure($test, $t); - $notifyMethod = 'addIncompleteTest'; + $this->recordNotImplemented($test, $t); + + $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); } } elseif ($t instanceof SkippedTest) { - $this->skipped[] = new TestFailure($test, $t); - $notifyMethod = 'addSkippedTest'; + $this->recordSkipped($test, $t); + + $notifyMethod = 'addSkippedTest'; if ($this->stopOnSkipped) { $this->stop(); } } else { - $this->errors[] = new TestFailure($test, $t); - $notifyMethod = 'addError'; + $this->recordError($test, $t); + + $notifyMethod = 'addError'; if ($this->stopOnError || $this->stopOnFailure) { $this->stop(); @@ -331,7 +342,7 @@ final class TestResult implements Countable $this->stop(); } - $this->warnings[] = new TestFailure($test, $e); + $this->recordWarning($test, $e); foreach ($this->listeners as $listener) { $listener->addWarning($test, $e, $time); @@ -347,8 +358,9 @@ final class TestResult implements Countable public function addFailure(Test $test, AssertionFailedError $e, float $time): void { if ($e instanceof RiskyTestError || $e instanceof OutputError) { - $this->risky[] = new TestFailure($test, $e); - $notifyMethod = 'addRiskyTest'; + $this->recordRisky($test, $e); + + $notifyMethod = 'addRiskyTest'; if ($test instanceof TestCase) { $test->markAsRisky(); @@ -358,15 +370,17 @@ final class TestResult implements Countable $this->stop(); } } elseif ($e instanceof IncompleteTest) { - $this->notImplemented[] = new TestFailure($test, $e); - $notifyMethod = 'addIncompleteTest'; + $this->recordNotImplemented($test, $e); + + $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); } } elseif ($e instanceof SkippedTest) { - $this->skipped[] = new TestFailure($test, $e); - $notifyMethod = 'addSkippedTest'; + $this->recordSkipped($test, $e); + + $notifyMethod = 'addSkippedTest'; if ($this->stopOnSkipped) { $this->stop(); @@ -393,9 +407,7 @@ final class TestResult implements Countable */ public function startTestSuite(TestSuite $suite): void { - if ($this->topTestSuite === null) { - $this->topTestSuite = $suite; - } + $this->currentTestSuiteFailed = false; foreach ($this->listeners as $listener) { $listener->startTestSuite($suite); @@ -407,6 +419,10 @@ final class TestResult implements Countable */ public function endTestSuite(TestSuite $suite): void { + if (!$this->currentTestSuiteFailed) { + $this->passedTestClasses[] = $suite->getName(); + } + foreach ($this->listeners as $listener) { $listener->endTestSuite($suite); } @@ -450,6 +466,10 @@ final class TestResult implements Countable $this->time += $time; } + + if ($this->lastTestFailed && $test instanceof TestCase) { + $this->currentTestSuiteFailed = true; + } } /** @@ -457,7 +477,7 @@ final class TestResult implements Countable */ public function allHarmless(): bool { - return $this->riskyCount() == 0; + return $this->riskyCount() === 0; } /** @@ -473,7 +493,7 @@ final class TestResult implements Countable */ public function allCompletelyImplemented(): bool { - return $this->notImplementedCount() == 0; + return $this->notImplementedCount() === 0; } /** @@ -509,7 +529,7 @@ final class TestResult implements Countable */ public function noneSkipped(): bool { - return $this->skippedCount() == 0; + return $this->skippedCount() === 0; } /** @@ -593,11 +613,13 @@ final class TestResult implements Countable } /** - * Returns the (top) test suite. + * Returns the names of the TestSuites that have passed. + * + * This enables @depends-annotations for TestClassName::class */ - public function topTestSuite(): TestSuite + public function passedClasses(): array { - return $this->topTestSuite; + return $this->passedTestClasses; } /** @@ -612,11 +634,8 @@ final class TestResult implements Countable * Runs a TestCase. * * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException - * @throws \SebastianBergmann\CodeCoverage\RuntimeException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws CodeCoverageException - * @throws OriginalCoveredCodeNotExecutedException - * @throws OriginalMissingCoversAnnotationException * @throws UnintentionallyCoveredCodeException */ public function run(Test $test): void @@ -655,6 +674,7 @@ final class TestResult implements Countable } $collectCodeCoverage = $this->codeCoverage !== null && + !$test instanceof ErrorTestCase && !$test instanceof WarningTestCase && $isAnyCoverageRequired; @@ -663,20 +683,26 @@ final class TestResult implements Countable } $monitorFunctions = $this->beStrictAboutResourceUsageDuringSmallTests && - !$test instanceof WarningTestCase && - $size === TestUtil::SMALL && - function_exists('xdebug_start_function_monitor'); + !$test instanceof ErrorTestCase && + !$test instanceof WarningTestCase && + $size === TestUtil::SMALL && + function_exists('xdebug_start_function_monitor'); if ($monitorFunctions) { /* @noinspection ForgottenDebugOutputInspection */ xdebug_start_function_monitor(ResourceOperations::getFunctions()); } - Timer::start(); + $timer = new Timer; + $timer->start(); try { - if (!$test instanceof WarningTestCase && - $this->shouldTimeLimitBeEnforced($size)) { + $invoker = new Invoker; + + if (!$test instanceof ErrorTestCase && + !$test instanceof WarningTestCase && + $this->shouldTimeLimitBeEnforced($size) && + $invoker->canInvokeWithTimeout()) { switch ($size) { case TestUtil::SMALL: $_timeout = $this->timeoutForSmallTests; @@ -697,7 +723,6 @@ final class TestResult implements Countable $_timeout = $this->defaultTimeLimit; } - $invoker = new Invoker; $invoker->invoke([$test, 'runBare'], [], $_timeout); } else { $test->runBare(); @@ -712,12 +737,6 @@ final class TestResult implements Countable ); $risky = true; - } catch (MockObjectException $e) { - $e = new Warning( - $e->getMessage() - ); - - $warning = true; } catch (AssertionFailedError $e) { $failure = true; @@ -753,11 +772,12 @@ final class TestResult implements Countable $error = true; } - $time = Timer::stop(); + $time = $timer->stop()->asSeconds(); + $test->addToAssertionCount(Assert::getCount()); if ($monitorFunctions) { - $blacklist = new Blacklist; + $excludeList = new ExcludeList; /** @noinspection ForgottenDebugOutputInspection */ $functions = xdebug_get_monitored_functions(); @@ -766,7 +786,7 @@ final class TestResult implements Countable xdebug_stop_function_monitor(); foreach ($functions as $function) { - if (!$blacklist->isBlacklisted($function['filename'])) { + if (!$excludeList->isExcluded($function['filename'])) { $this->addFailure( $test, new RiskyTestError( @@ -784,10 +804,32 @@ final class TestResult implements Countable } if ($this->beStrictAboutTestsThatDoNotTestAnything && - $test->getNumAssertions() == 0) { + $test->getNumAssertions() === 0) { $risky = true; } + if ($this->forceCoversAnnotation && !$error && !$failure && !$warning && !$incomplete && !$skipped && !$risky) { + $annotations = TestUtil::parseTestMethodAnnotations( + get_class($test), + $test->getName(false) + ); + + if (!isset($annotations['class']['covers']) && + !isset($annotations['method']['covers']) && + !isset($annotations['class']['coversNothing']) && + !isset($annotations['method']['coversNothing'])) { + $this->addFailure( + $test, + new MissingCoversAnnotationException( + 'This test does not have a @covers annotation but is expected to have one' + ), + $time + ); + + $risky = true; + } + } + if ($collectCodeCoverage) { $append = !$risky && !$incomplete && !$skipped; $linesToBeCovered = []; @@ -822,33 +864,10 @@ final class TestResult implements Countable $linesToBeUsed ); } catch (UnintentionallyCoveredCodeException $cce) { - $this->addFailure( - $test, - new UnintentionallyCoveredCodeError( - 'This test executed code that is not listed as code to be covered or used:' . - PHP_EOL . $cce->getMessage() - ), - $time + $unintentionallyCoveredCodeError = new UnintentionallyCoveredCodeError( + 'This test executed code that is not listed as code to be covered or used:' . + PHP_EOL . $cce->getMessage() ); - } catch (OriginalCoveredCodeNotExecutedException $cce) { - $this->addFailure( - $test, - new CoveredCodeNotExecutedException( - 'This test did not execute all the code that is listed as code to be covered:' . - PHP_EOL . $cce->getMessage() - ), - $time - ); - } catch (OriginalMissingCoversAnnotationException $cce) { - if ($linesToBeCovered !== false) { - $this->addFailure( - $test, - new MissingCoversAnnotationException( - 'This test does not have a @covers annotation but is expected to have one' - ), - $time - ); - } } catch (OriginalCodeCoverageException $cce) { $error = true; @@ -868,16 +887,22 @@ final class TestResult implements Countable $this->addFailure($test, $e, $time); } elseif ($warning) { $this->addWarning($test, $e, $time); + } elseif (isset($unintentionallyCoveredCodeError)) { + $this->addFailure( + $test, + $unintentionallyCoveredCodeError, + $time + ); } elseif ($this->beStrictAboutTestsThatDoNotTestAnything && !$test->doesNotPerformAssertions() && - $test->getNumAssertions() == 0) { + $test->getNumAssertions() === 0) { try { $reflected = new ReflectionClass($test); // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -892,7 +917,7 @@ final class TestResult implements Countable } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -935,7 +960,10 @@ final class TestResult implements Countable $time ); } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof TestCase) { - $annotations = $test->getAnnotations(); + $annotations = TestUtil::parseTestMethodAnnotations( + get_class($test), + $test->getName(false) + ); if (isset($annotations['method']['todo'])) { $this->addFailure( @@ -1129,6 +1157,16 @@ final class TestResult implements Countable return $this->beStrictAboutTodoAnnotatedTests; } + public function forceCoversAnnotation(): void + { + $this->forceCoversAnnotation = true; + } + + public function forcesCoversAnnotation(): bool + { + return $this->forceCoversAnnotation; + } + /** * Enables or disables the stopping for risky tests. */ @@ -1232,6 +1270,31 @@ final class TestResult implements Countable $this->registerMockObjectsFromTestArgumentsRecursively = $flag; } + private function recordError(Test $test, Throwable $t): void + { + $this->errors[] = new TestFailure($test, $t); + } + + private function recordNotImplemented(Test $test, Throwable $t): void + { + $this->notImplemented[] = new TestFailure($test, $t); + } + + private function recordRisky(Test $test, Throwable $t): void + { + $this->risky[] = new TestFailure($test, $t); + } + + private function recordSkipped(Test $test, Throwable $t): void + { + $this->skipped[] = new TestFailure($test, $t); + } + + private function recordWarning(Test $test, Throwable $t): void + { + $this->warnings[] = new TestFailure($test, $t); + } + private function shouldTimeLimitBeEnforced(int $size): bool { if (!$this->enforceTimeLimit) { diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/vendor/phpunit/phpunit/src/Framework/TestSuite.php index 4c3075cc1..ce738533f 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestSuite.php +++ b/vendor/phpunit/phpunit/src/Framework/TestSuite.php @@ -11,23 +11,27 @@ namespace PHPUnit\Framework; use const PHP_EOL; use function array_keys; +use function array_map; use function array_merge; use function array_slice; +use function array_unique; use function basename; use function call_user_func; use function class_exists; use function count; use function dirname; -use function file_exists; use function get_declared_classes; use function implode; use function is_bool; +use function is_callable; +use function is_file; use function is_object; use function is_string; use function method_exists; use function preg_match; use function preg_quote; use function sprintf; +use function strpos; use function substr; use Iterator; use IteratorAggregate; @@ -43,9 +47,11 @@ use ReflectionMethod; use Throwable; /** + * @template-implements IteratorAggregate + * * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -class TestSuite implements IteratorAggregate, SelfDescribing, Test +class TestSuite implements IteratorAggregate, Reorderable, SelfDescribing, Test { /** * Enable or disable the backup and restoration of the $GLOBALS array. @@ -76,7 +82,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test /** * The test groups of the test suite. * - * @var array + * @psalm-var array> */ protected $groups = []; @@ -105,11 +111,14 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test protected $foundClasses = []; /** - * Last count of tests in this suite. - * - * @var null|int + * @var null|list */ - private $cachedNumTests; + protected $providedTests; + + /** + * @var null|list + */ + protected $requiredTests; /** * @var bool @@ -127,7 +136,12 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test private $declaredClassesPointer; /** - * Constructs a new TestSuite:. + * @psalm-var array + */ + private $warnings = []; + + /** + * Constructs a new TestSuite. * * - PHPUnit\Framework\TestSuite() constructs an empty TestSuite. * @@ -166,11 +180,10 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test try { $theClass = new ReflectionClass($theClass); - // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -253,22 +266,22 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd if (!$class->isAbstract()) { - $this->tests[] = $test; - $this->numTests = -1; + $this->tests[] = $test; + $this->clearCaches(); if ($test instanceof self && empty($groups)) { $groups = $test->getGroups(); } - if (empty($groups)) { - $groups = ['default']; + if ($this->containsOnlyVirtualGroups($groups)) { + $groups[] = 'default'; } foreach ($groups as $group) { @@ -288,7 +301,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test /** * Adds the tests from the given class to the suite. * - * @param object|string $testClass + * @psalm-param object|class-string $testClass * * @throws Exception */ @@ -308,7 +321,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -329,7 +342,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -352,6 +365,11 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } } + public function addWarning(string $warning): void + { + $this->warnings[] = $warning; + } + /** * Wraps both addTest() and addTestSuite * as well as the separate import statements for the user's convenience. @@ -364,14 +382,16 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test */ public function addTestFile(string $filename): void { - if (file_exists($filename) && substr($filename, -5) === '.phpt') { - $this->addTest( - new PhptTestCase($filename) - ); + if (is_file($filename) && substr($filename, -5) === '.phpt') { + $this->addTest(new PhptTestCase($filename)); + + $this->declaredClassesPointer = count(get_declared_classes()); return; } + $numTests = count($this->tests); + // The given file may contain further stub classes in addition to the // test class itself. Figure out the actual test class. $filename = FileLoader::checkAndLoad($filename); @@ -404,7 +424,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -426,7 +446,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -446,7 +466,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -456,11 +476,43 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test $this->addTest($method->invoke(null, $className)); } } elseif ($class->implementsInterface(Test::class)) { + // Do we have modern namespacing ('Foo\Bar\WhizBangTest') or old-school namespacing ('Foo_Bar_WhizBangTest')? + $isPsr0 = (!$class->inNamespace()) && (strpos($class->getName(), '_') !== false); + $expectedClassName = $isPsr0 ? $className : $shortName; + + if (($pos = strpos($expectedClassName, '.')) !== false) { + $expectedClassName = substr( + $expectedClassName, + 0, + $pos + ); + } + + if ($class->getShortName() !== $expectedClassName) { + $this->addWarning( + sprintf( + "Test case class not matching filename is deprecated\n in %s\n Class name was '%s', expected '%s'", + $filename, + $class->getShortName(), + $expectedClassName + ) + ); + } + $this->addTestSuite($class); } } } + if (count($this->tests) > ++$numTests) { + $this->addWarning( + sprintf( + "Multiple test case classes per file is deprecated\n in %s", + $filename + ) + ); + } + $this->numTests = -1; } @@ -478,22 +530,18 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test /** * Counts the number of test cases that will be run by this test. + * + * @todo refactor usage of numTests in DefaultResultPrinter */ - public function count(bool $preferCache = false): int + public function count(): int { - if ($preferCache && $this->cachedNumTests !== null) { - return $this->cachedNumTests; - } - - $numTests = 0; + $this->numTests = 0; foreach ($this as $test) { - $numTests += count($test); + $this->numTests += count($test); } - $this->cachedNumTests = $numTests; - - return $numTests; + return $this->numTests; } /** @@ -506,10 +554,18 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test /** * Returns the test groups of the suite. + * + * @psalm-return list */ public function getGroups(): array { - return array_keys($this->groups); + return array_map( + static function ($key): string + { + return (string) $key; + }, + array_keys($this->groups) + ); } public function getGroupDetails(): array @@ -529,10 +585,7 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test * Runs the tests and collects their result in a TestResult. * * @throws \PHPUnit\Framework\CodeCoverageException - * @throws \SebastianBergmann\CodeCoverage\CoveredCodeNotExecutedException * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException - * @throws \SebastianBergmann\CodeCoverage\MissingCoversAnnotationException - * @throws \SebastianBergmann\CodeCoverage\RuntimeException * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Warning @@ -553,56 +606,58 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test $result->startTestSuite($this); - try { - foreach ($hookMethods['beforeClass'] as $beforeClassMethod) { - if ($this->testCase && - class_exists($this->name, false) && - method_exists($this->name, $beforeClassMethod)) { - if ($missingRequirements = TestUtil::getMissingRequirements($this->name, $beforeClassMethod)) { - $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements)); + $test = null; + + if ($this->testCase && class_exists($this->name, false)) { + try { + foreach ($hookMethods['beforeClass'] as $beforeClassMethod) { + if (method_exists($this->name, $beforeClassMethod)) { + if ($missingRequirements = TestUtil::getMissingRequirements($this->name, $beforeClassMethod)) { + $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements)); + } + + call_user_func([$this->name, $beforeClassMethod]); + } + } + } catch (SkippedTestSuiteError $error) { + foreach ($this->tests() as $test) { + $result->startTest($test); + $result->addFailure($test, $error, 0); + $result->endTest($test, 0); + } + + $result->endTestSuite($this); + + return $result; + } catch (Throwable $t) { + $errorAdded = false; + + foreach ($this->tests() as $test) { + if ($result->shouldStop()) { + break; } - call_user_func([$this->name, $beforeClassMethod]); - } - } - } catch (SkippedTestSuiteError $error) { - foreach ($this->tests() as $test) { - $result->startTest($test); - $result->addFailure($test, $error, 0); - $result->endTest($test, 0); - } + $result->startTest($test); - $result->endTestSuite($this); + if (!$errorAdded) { + $result->addError($test, $t, 0); - return $result; - } catch (Throwable $t) { - $errorAdded = false; + $errorAdded = true; + } else { + $result->addFailure( + $test, + new SkippedTestError('Test skipped because of an error in hook method'), + 0 + ); + } - foreach ($this->tests() as $test) { - if ($result->shouldStop()) { - break; + $result->endTest($test, 0); } - $result->startTest($test); + $result->endTestSuite($this); - if (!$errorAdded) { - $result->addError($test, $t, 0); - - $errorAdded = true; - } else { - $result->addFailure( - $test, - new SkippedTestError('Test skipped because of an error in hook method'), - 0 - ); - } - - $result->endTest($test, 0); + return $result; } - - $result->endTestSuite($this); - - return $result; } foreach ($this as $test) { @@ -620,24 +675,24 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test $test->run($result); } - try { + if ($this->testCase && class_exists($this->name, false)) { foreach ($hookMethods['afterClass'] as $afterClassMethod) { - if ($this->testCase && - class_exists($this->name, false) && - method_exists($this->name, $afterClassMethod)) { - call_user_func([$this->name, $afterClassMethod]); + if (method_exists($this->name, $afterClassMethod)) { + try { + call_user_func([$this->name, $afterClassMethod]); + } catch (Throwable $t) { + $message = "Exception in {$this->name}::{$afterClassMethod}" . PHP_EOL . $t->getMessage(); + $error = new SyntheticError($message, 0, $t->getFile(), $t->getLine(), $t->getTrace()); + + $placeholderTest = clone $test; + $placeholderTest->setName($afterClassMethod); + + $result->startTest($placeholderTest); + $result->addFailure($placeholderTest, $error, 0); + $result->endTest($placeholderTest, 0); + } } } - } catch (Throwable $t) { - $message = "Exception in {$this->name}::{$afterClassMethod}" . PHP_EOL . $t->getMessage(); - $error = new SyntheticError($message, 0, $t->getFile(), $t->getLine(), $t->getTrace()); - - $placeholderTest = clone $test; - $placeholderTest->setName($afterClassMethod); - - $result->startTest($placeholderTest); - $result->addFailure($placeholderTest, $error, 0); - $result->endTest($placeholderTest, 0); } $result->endTestSuite($this); @@ -655,16 +710,6 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test $this->name = $name; } - /** - * Returns the test at the given index. - * - * @return false|Test - */ - public function testAt(int $index) - { - return $this->tests[$index] ?? false; - } - /** * Returns the tests as an enumeration. * @@ -754,6 +799,70 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test } } + /** + * @psalm-return array + */ + public function warnings(): array + { + return array_unique($this->warnings); + } + + /** + * @return list + */ + public function provides(): array + { + if ($this->providedTests === null) { + $this->providedTests = []; + + if (is_callable($this->sortId(), true)) { + $this->providedTests[] = new ExecutionOrderDependency($this->sortId()); + } + + foreach ($this->tests as $test) { + if (!($test instanceof Reorderable)) { + // @codeCoverageIgnoreStart + continue; + // @codeCoverageIgnoreEnd + } + $this->providedTests = ExecutionOrderDependency::mergeUnique($this->providedTests, $test->provides()); + } + } + + return $this->providedTests; + } + + /** + * @return list + */ + public function requires(): array + { + if ($this->requiredTests === null) { + $this->requiredTests = []; + + foreach ($this->tests as $test) { + if (!($test instanceof Reorderable)) { + // @codeCoverageIgnoreStart + continue; + // @codeCoverageIgnoreEnd + } + $this->requiredTests = ExecutionOrderDependency::mergeUnique( + ExecutionOrderDependency::filterInvalid($this->requiredTests), + $test->requires() + ); + } + + $this->requiredTests = ExecutionOrderDependency::diff($this->requiredTests, $this->provides()); + } + + return $this->requiredTests; + } + + public function sortId(): string + { + return $this->getName() . '::class'; + } + /** * Creates a default TestResult object. */ @@ -767,10 +876,6 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test */ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method): void { - if (!TestUtil::isTestMethod($method)) { - return; - } - $methodName = $method->getName(); $test = (new TestBuilder)->build($class, $methodName); @@ -786,4 +891,22 @@ class TestSuite implements IteratorAggregate, SelfDescribing, Test TestUtil::getGroups($class->getName(), $methodName) ); } + + private function clearCaches(): void + { + $this->numTests = -1; + $this->providedTests = null; + $this->requiredTests = null; + } + + private function containsOnlyVirtualGroups(array $groups): bool + { + foreach ($groups as $group) { + if (strpos($group, '__phpunit_') !== 0) { + return false; + } + } + + return true; + } } diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php index e351622f3..76b12fcfb 100644 --- a/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php +++ b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php @@ -14,6 +14,8 @@ use function count; use RecursiveIterator; /** + * @template-implements RecursiveIterator + * * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class TestSuiteIterator implements RecursiveIterator diff --git a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php index 3e5e0f71c..75a70ca5f 100644 --- a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php +++ b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php @@ -11,8 +11,8 @@ namespace PHPUnit\Runner; use function is_dir; use function is_file; +use function substr; use PHPUnit\Framework\Exception; -use PHPUnit\Framework\Test; use PHPUnit\Framework\TestSuite; use ReflectionClass; use ReflectionException; @@ -85,27 +85,33 @@ abstract class BaseTestRunner * * @throws Exception */ - public function getTest(string $suiteClassName, string $suiteClassFile = '', $suffixes = ''): ?Test + public function getTest(string $suiteClassFile, $suffixes = ''): ?TestSuite { - if (empty($suiteClassFile) && is_dir($suiteClassName) && !is_file($suiteClassName . '.php')) { + if (is_dir($suiteClassFile)) { /** @var string[] $files */ $files = (new FileIteratorFacade)->getFilesAsArray( - $suiteClassName, + $suiteClassFile, $suffixes ); - $suite = new TestSuite($suiteClassName); + $suite = new TestSuite($suiteClassFile); $suite->addTestFiles($files); return $suite; } + if (is_file($suiteClassFile) && substr($suiteClassFile, -5, 5) === '.phpt') { + $suite = new TestSuite; + $suite->addTestFile($suiteClassFile); + + return $suite; + } + try { $testClass = $this->loadSuiteClass( - $suiteClassName, $suiteClassFile ); - } catch (Exception $e) { + } catch (\PHPUnit\Exception $e) { $this->runFailed($e->getMessage()); return null; @@ -124,12 +130,7 @@ abstract class BaseTestRunner $test = $suiteMethod->invoke(null, $testClass->getName()); } catch (ReflectionException $e) { - try { - $test = new TestSuite($testClass); - } catch (Exception $e) { - $test = new TestSuite; - $test->setName($suiteClassName); - } + $test = new TestSuite($testClass); } $this->clearStatus(); @@ -140,9 +141,9 @@ abstract class BaseTestRunner /** * Returns the loaded ReflectionClass for a suite name. */ - protected function loadSuiteClass(string $suiteClassName, string $suiteClassFile = ''): ReflectionClass + protected function loadSuiteClass(string $suiteClassFile): ReflectionClass { - return $this->getLoader()->load($suiteClassName, $suiteClassFile); + return $this->getLoader()->load($suiteClassFile); } /** diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php new file mode 100644 index 000000000..88f7ccad0 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php @@ -0,0 +1,118 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Runner\Extension; + +use function class_exists; +use function sprintf; +use PHPUnit\Framework\TestListener; +use PHPUnit\Runner\Exception; +use PHPUnit\Runner\Hook; +use PHPUnit\TextUI\TestRunner; +use PHPUnit\TextUI\XmlConfiguration\Extension; +use ReflectionClass; +use ReflectionException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ExtensionHandler +{ + /** + * @throws Exception + */ + public function registerExtension(Extension $extensionConfiguration, TestRunner $runner): void + { + $extension = $this->createInstance($extensionConfiguration); + + if (!$extension instanceof Hook) { + throw new Exception( + sprintf( + 'Class "%s" does not implement a PHPUnit\Runner\Hook interface', + $extensionConfiguration->className() + ) + ); + } + + $runner->addExtension($extension); + } + + /** + * @throws Exception + * + * @deprecated + */ + public function createTestListenerInstance(Extension $listenerConfiguration): TestListener + { + $listener = $this->createInstance($listenerConfiguration); + + if (!$listener instanceof TestListener) { + throw new Exception( + sprintf( + 'Class "%s" does not implement the PHPUnit\Framework\TestListener interface', + $listenerConfiguration->className() + ) + ); + } + + return $listener; + } + + /** + * @throws Exception + */ + private function createInstance(Extension $extensionConfiguration): object + { + $this->ensureClassExists($extensionConfiguration); + + try { + $reflector = new ReflectionClass($extensionConfiguration->className()); + } catch (ReflectionException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } + + if (!$extensionConfiguration->hasArguments()) { + return $reflector->newInstance(); + } + + return $reflector->newInstanceArgs($extensionConfiguration->arguments()); + } + + /** + * @throws Exception + */ + private function ensureClassExists(Extension $extensionConfiguration): void + { + if (class_exists($extensionConfiguration->className(), false)) { + return; + } + + if ($extensionConfiguration->hasSourceFile()) { + /** + * @noinspection PhpIncludeInspection + * + * @psalm-suppress UnresolvableInclude + */ + require_once $extensionConfiguration->sourceFile(); + } + + if (!class_exists($extensionConfiguration->className())) { + throw new Exception( + sprintf( + 'Class "%s" does not exist', + $extensionConfiguration->className() + ) + ); + } + } +} diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php new file mode 100644 index 000000000..e76e12ceb --- /dev/null +++ b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Runner\Extension; + +use function is_file; +use PharIo\Manifest\ApplicationName; +use PharIo\Manifest\Exception as ManifestException; +use PharIo\Manifest\ManifestLoader; +use PharIo\Version\Version as PharIoVersion; +use PHPUnit\Runner\Version; +use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class PharLoader +{ + /** + * @psalm-return array{loadedExtensions: list, notLoadedExtensions: list} + */ + public function loadPharExtensionsInDirectory(string $directory): array + { + $loadedExtensions = []; + $notLoadedExtensions = []; + + foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) { + if (!is_file('phar://' . $file . '/manifest.xml')) { + $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; + + continue; + } + + try { + $applicationName = new ApplicationName('phpunit/phpunit'); + $version = new PharIoVersion(Version::series()); + $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); + + if (!$manifest->isExtensionFor($applicationName)) { + $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; + + continue; + } + + if (!$manifest->isExtensionFor($applicationName, $version)) { + $notLoadedExtensions[] = $file . ' is not compatible with this version of PHPUnit'; + + continue; + } + } catch (ManifestException $e) { + $notLoadedExtensions[] = $file . ': ' . $e->getMessage(); + + continue; + } + + /** + * @noinspection PhpIncludeInspection + * + * @psalm-suppress UnresolvableInclude + */ + require $file; + + $loadedExtensions[] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString(); + } + + return [ + 'loadedExtensions' => $loadedExtensions, + 'notLoadedExtensions' => $notLoadedExtensions, + ]; + } +} diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php index 82dc1b7e0..3f79da541 100644 --- a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php +++ b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php @@ -9,11 +9,12 @@ */ namespace PHPUnit\Runner\Filter; +use function assert; use function sprintf; use FilterIterator; -use InvalidArgumentException; use Iterator; use PHPUnit\Framework\TestSuite; +use PHPUnit\Runner\Exception; use RecursiveFilterIterator; use ReflectionClass; @@ -23,17 +24,19 @@ use ReflectionClass; final class Factory { /** - * @var array + * @psalm-var array */ private $filters = []; /** - * @throws InvalidArgumentException + * @param array|string $args + * + * @throws Exception */ public function addFilter(ReflectionClass $filter, $args): void { if (!$filter->isSubclassOf(RecursiveFilterIterator::class)) { - throw new InvalidArgumentException( + throw new Exception( sprintf( 'Class "%s" does not extend RecursiveFilterIterator', $filter->name @@ -51,6 +54,8 @@ final class Factory $iterator = $class->newInstance($iterator, $args, $suite); } + assert($iterator instanceof FilterIterator); + return $iterator; } } diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php index d90054d84..7057e1c47 100644 --- a/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php +++ b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php @@ -15,6 +15,7 @@ use function preg_match; use function sprintf; use function str_replace; use Exception; +use PHPUnit\Framework\ErrorTestCase; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\WarningTestCase; use PHPUnit\Util\RegularExpression; @@ -64,7 +65,7 @@ final class NameFilterIterator extends RecursiveFilterIterator $tmp = \PHPUnit\Util\Test::describe($test); - if ($test instanceof WarningTestCase) { + if ($test instanceof ErrorTestCase || $test instanceof WarningTestCase) { $name = $test->getMessage(); } elseif ($tmp[0] !== '') { $name = implode('::', $tmp); diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php index 871c8a34a..432be9a93 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterIncompleteTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php index 34f58e07e..eb789f264 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterLastTestHook extends Hook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php index f0417ac32..31cc91abf 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterRiskyTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php index f0c914f73..76980b3fc 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterSkippedTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php index b76257936..d0a10dd15 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterSuccessfulTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php index 15824b050..12ecebd32 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterTestErrorHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php index d12e553c3..94b2f3004 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterTestFailureHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php index 53effae80..3d5bcaa93 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php index ad2ab13ee..860fcceeb 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface AfterTestWarningHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php index 8d580f4f4..feeb90fba 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface BeforeFirstTestHook extends Hook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php index c69c12e0a..b7e0827d0 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface BeforeTestHook extends TestHook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php b/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php index 36da047ad..a08dc72b0 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface Hook diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php index 86cf3f8e7..31e880e2c 100644 --- a/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php +++ b/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php @@ -14,6 +14,8 @@ namespace PHPUnit\Runner; * will be removed in PHPUnit 10. There is no alternative available in this * version of PHPUnit. * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @see https://github.com/sebastianbergmann/phpunit/issues/4676 */ interface TestHook extends Hook diff --git a/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php index da7e49e71..6590102d7 100644 --- a/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php +++ b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php @@ -19,7 +19,6 @@ use function dirname; use function explode; use function extension_loaded; use function file; -use function file_exists; use function file_get_contents; use function file_put_contents; use function is_array; @@ -45,23 +44,26 @@ use function var_export; use function version_compare; use PHPUnit\Framework\Assert; use PHPUnit\Framework\AssertionFailedError; +use PHPUnit\Framework\ExecutionOrderDependency; use PHPUnit\Framework\ExpectationFailedException; use PHPUnit\Framework\IncompleteTestError; use PHPUnit\Framework\PHPTAssertionFailedError; +use PHPUnit\Framework\Reorderable; use PHPUnit\Framework\SelfDescribing; use PHPUnit\Framework\SkippedTestError; use PHPUnit\Framework\SyntheticSkippedError; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestResult; use PHPUnit\Util\PHP\AbstractPhpProcess; +use SebastianBergmann\CodeCoverage\RawCodeCoverageData; +use SebastianBergmann\Template\Template; use SebastianBergmann\Timer\Timer; -use Text_Template; use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class PhptTestCase implements SelfDescribing, Test +final class PhptTestCase implements Reorderable, SelfDescribing, Test { /** * @var string @@ -109,10 +111,7 @@ final class PhptTestCase implements SelfDescribing, Test /** * Runs a test and collects its result in a TestResult instance. * - * @throws \SebastianBergmann\CodeCoverage\CoveredCodeNotExecutedException * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException - * @throws \SebastianBergmann\CodeCoverage\MissingCoversAnnotationException - * @throws \SebastianBergmann\CodeCoverage\RuntimeException * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception @@ -173,17 +172,31 @@ final class PhptTestCase implements SelfDescribing, Test } if ($result->getCollectCodeCoverageInformation()) { - $this->renderForCoverage($code); + $codeCoverageCacheDirectory = null; + $pathCoverage = false; + + $codeCoverage = $result->getCodeCoverage(); + + if ($codeCoverage) { + if ($codeCoverage->cachesStaticAnalysis()) { + $codeCoverageCacheDirectory = $codeCoverage->cacheDirectory(); + } + + $pathCoverage = $codeCoverage->collectsBranchAndPathCoverage(); + } + + $this->renderForCoverage($code, $pathCoverage, $codeCoverageCacheDirectory); } - Timer::start(); + $timer = new Timer; + $timer->start(); $jobResult = $this->phpUtil->runJob($code, $this->stringifyIni($settings)); - $time = Timer::stop(); + $time = $timer->stop()->asSeconds(); $this->output = $jobResult['stdout'] ?? ''; - if ($result->getCollectCodeCoverageInformation() && ($coverage = $this->cleanupForCoverage())) { - $result->getCodeCoverage()->append($coverage, $this, true, [], [], true); + if (isset($codeCoverage) && ($coverage = $this->cleanupForCoverage())) { + $codeCoverage->append($coverage, $this, true, [], []); } try { @@ -266,12 +279,33 @@ final class PhptTestCase implements SelfDescribing, Test return !empty($this->output); } + public function sortId(): string + { + return $this->filename; + } + + /** + * @return list + */ + public function provides(): array + { + return []; + } + + /** + * @return list + */ + public function requires(): array + { + return []; + } + /** * Parse --INI-- section key value pairs and return as array. * - * @param array|string + * @param array|string $content */ - private function parseIniSection($content, $ini = []): array + private function parseIniSection($content, array $ini = []): array { if (is_string($content)) { $content = explode("\n", trim($content)); @@ -327,7 +361,7 @@ final class PhptTestCase implements SelfDescribing, Test $assertions = [ 'EXPECT' => 'assertEquals', 'EXPECTF' => 'assertStringMatchesFormat', - 'EXPECTREGEX' => 'assertRegExp', + 'EXPECTREGEX' => 'assertMatchesRegularExpression', ]; $actual = preg_replace('/\r\n/', "\n", trim($output)); @@ -337,7 +371,7 @@ final class PhptTestCase implements SelfDescribing, Test $sectionContent = preg_replace('/\r\n/', "\n", trim($sections[$sectionName])); $expected = $sectionName === 'EXPECTREGEX' ? "/{$sectionContent}/" : $sectionContent; - if ($expected === null) { + if ($expected === '') { throw new Exception('No PHPT expectation found'); } @@ -560,11 +594,11 @@ final class PhptTestCase implements SelfDescribing, Test ]; } - private function renderForCoverage(string &$job): void + private function renderForCoverage(string &$job, bool $pathCoverage, ?string $codeCoverageCacheDirectory): void { $files = $this->getCoverageFiles(); - $template = new Text_Template( + $template = new Template( __DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl' ); @@ -589,33 +623,42 @@ final class PhptTestCase implements SelfDescribing, Test ) . ";\n"; } + if ($codeCoverageCacheDirectory === null) { + $codeCoverageCacheDirectory = 'null'; + } else { + $codeCoverageCacheDirectory = "'" . $codeCoverageCacheDirectory . "'"; + } + $template->setVar( [ - 'composerAutoload' => $composerAutoload, - 'phar' => $phar, - 'globals' => $globals, - 'job' => $files['job'], - 'coverageFile' => $files['coverage'], + 'composerAutoload' => $composerAutoload, + 'phar' => $phar, + 'globals' => $globals, + 'job' => $files['job'], + 'coverageFile' => $files['coverage'], + 'driverMethod' => $pathCoverage ? 'forLineAndPathCoverage' : 'forLineCoverage', + 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, ] ); file_put_contents($files['job'], $job); + $job = $template->render(); } - private function cleanupForCoverage(): array + private function cleanupForCoverage(): RawCodeCoverageData { - $coverage = []; + $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); $files = $this->getCoverageFiles(); - if (file_exists($files['coverage'])) { + if (is_file($files['coverage'])) { $buffer = @file_get_contents($files['coverage']); if ($buffer !== false) { $coverage = @unserialize($buffer); if ($coverage === false) { - $coverage = []; + $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]); } } } @@ -716,6 +759,8 @@ final class PhptTestCase implements SelfDescribing, Test ]; } + $sectionOffset = null; + foreach ($search as $section) { if (!isset($sections[$section])) { continue; diff --git a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php index b658dfcc4..0f7395b2b 100644 --- a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php +++ b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php @@ -11,67 +11,53 @@ namespace PHPUnit\Runner; use function array_diff; use function array_values; +use function basename; use function class_exists; use function get_declared_classes; -use function realpath; use function sprintf; -use function str_replace; +use function stripos; use function strlen; use function substr; use PHPUnit\Framework\TestCase; use PHPUnit\Util\FileLoader; -use PHPUnit\Util\Filesystem; use ReflectionClass; use ReflectionException; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 */ final class StandardTestSuiteLoader implements TestSuiteLoader { /** - * @throws \PHPUnit\Framework\Exception * @throws Exception */ - public function load(string $suiteClassName, string $suiteClassFile = ''): ReflectionClass + public function load(string $suiteClassFile): ReflectionClass { - $suiteClassName = str_replace('.php', '', $suiteClassName); - $filename = null; - - if (empty($suiteClassFile)) { - $suiteClassFile = Filesystem::classNameToFilename( - $suiteClassName - ); - } + $suiteClassName = basename($suiteClassFile, '.php'); + $loadedClasses = get_declared_classes(); if (!class_exists($suiteClassName, false)) { - $loadedClasses = get_declared_classes(); - - $filename = FileLoader::checkAndLoad($suiteClassFile); + /* @noinspection UnusedFunctionResultInspection */ + FileLoader::checkAndLoad($suiteClassFile); $loadedClasses = array_values( array_diff(get_declared_classes(), $loadedClasses) ); + + if (empty($loadedClasses)) { + throw $this->exceptionFor($suiteClassName, $suiteClassFile); + } } - if (!empty($loadedClasses) && !class_exists($suiteClassName, false)) { + if (!class_exists($suiteClassName, false)) { $offset = 0 - strlen($suiteClassName); foreach ($loadedClasses as $loadedClass) { - try { - $class = new ReflectionClass($loadedClass); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - if (substr($loadedClass, $offset) === $suiteClassName && - $class->getFileName() == $filename) { + // @see https://github.com/sebastianbergmann/phpunit/issues/5020 + if (stripos(substr($loadedClass, $offset - 1), '\\' . $suiteClassName) === 0 || + stripos(substr($loadedClass, $offset - 1), '_' . $suiteClassName) === 0) { $suiteClassName = $loadedClass; break; @@ -79,86 +65,60 @@ final class StandardTestSuiteLoader implements TestSuiteLoader } } - if (!empty($loadedClasses) && !class_exists($suiteClassName, false)) { - $testCaseClass = TestCase::class; - - foreach ($loadedClasses as $loadedClass) { - try { - $class = new ReflectionClass($loadedClass); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - $classFile = $class->getFileName(); - - if ($class->isSubclassOf($testCaseClass) && !$class->isAbstract()) { - $suiteClassName = $loadedClass; - $testCaseClass = $loadedClass; - - if ($classFile == realpath($suiteClassFile)) { - break; - } - } - - if ($class->hasMethod('suite')) { - try { - $method = $class->getMethod('suite'); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) { - $suiteClassName = $loadedClass; - - if ($classFile == realpath($suiteClassFile)) { - break; - } - } - } - } + if (!class_exists($suiteClassName, false)) { + throw $this->exceptionFor($suiteClassName, $suiteClassFile); } - if (class_exists($suiteClassName, false)) { + try { + $class = new ReflectionClass($suiteClassName); + // @codeCoverageIgnoreStart + } catch (ReflectionException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + + if ($class->isSubclassOf(TestCase::class) && !$class->isAbstract()) { + return $class; + } + + if ($class->hasMethod('suite')) { try { - $class = new ReflectionClass($suiteClassName); + $method = $class->getMethod('suite'); // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd - if ($class->getFileName() == realpath($suiteClassFile)) { + if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) { return $class; } } - throw new Exception( - sprintf( - "Class '%s' could not be found in '%s'.", - $suiteClassName, - $suiteClassFile - ) - ); + throw $this->exceptionFor($suiteClassName, $suiteClassFile); } public function reload(ReflectionClass $aClass): ReflectionClass { return $aClass; } + + private function exceptionFor(string $className, string $filename): Exception + { + return new Exception( + sprintf( + "Class '%s' could not be found in '%s'.", + $className, + $filename + ) + ); + } } diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php index f05968892..c9d8e01b1 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php +++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php @@ -12,11 +12,13 @@ namespace PHPUnit\Runner; use ReflectionClass; /** - * An interface to define how a test suite should be loaded. + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ interface TestSuiteLoader { - public function load(string $suiteClassName, string $suiteClassFile = ''): ReflectionClass; + public function load(string $suiteClassFile): ReflectionClass; public function reload(ReflectionClass $aClass): ReflectionClass; } diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php index 9e794798a..64ad845cf 100644 --- a/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php +++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php @@ -9,21 +9,17 @@ */ namespace PHPUnit\Runner; -use function array_intersect; -use function array_map; +use function array_diff; use function array_merge; -use function array_reduce; use function array_reverse; use function array_splice; use function count; -use function get_class; use function in_array; use function max; use function shuffle; -use function strpos; -use function substr; use function usort; use PHPUnit\Framework\DataProviderTestSuite; +use PHPUnit\Framework\Reorderable; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestSuite; @@ -97,37 +93,15 @@ final class TestSuiteSorter private $cache; /** - * @var string[] A list of normalized names of tests before reordering + * @var array A list of normalized names of tests before reordering */ private $originalExecutionOrder = []; /** - * @var string[] A list of normalized names of tests affected by reordering + * @var array A list of normalized names of tests affected by reordering */ private $executionOrder = []; - /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - public static function getTestSorterUID(Test $test): string - { - if ($test instanceof PhptTestCase) { - return $test->getName(); - } - - if ($test instanceof TestCase) { - $testName = $test->getName(true); - - if (strpos($testName, '::') === false) { - $testName = get_class($test) . '::' . $testName; - } - - return $testName; - } - - return $test->getName(); - } - public function __construct(?TestResultCache $cache = null) { $this->cache = $cache ?? new NullTestResultCache; @@ -215,7 +189,7 @@ final class TestSuiteSorter $suite->setTests($this->sortDefectsFirst($suite->tests())); } - if ($resolveDependencies && !($suite instanceof DataProviderTestSuite) && $this->suiteOnlyContainsTests($suite)) { + if ($resolveDependencies && !($suite instanceof DataProviderTestSuite)) { /** @var TestCase[] $tests */ $tests = $suite->tests(); @@ -231,27 +205,17 @@ final class TestSuiteSorter $max = 0; foreach ($suite->tests() as $test) { - $testname = self::getTestSorterUID($test); + if (!$test instanceof Reorderable) { + continue; + } - if (!isset($this->defectSortOrder[$testname])) { - $this->defectSortOrder[$testname] = self::DEFECT_SORT_WEIGHT[$this->cache->getState($testname)]; - $max = max($max, $this->defectSortOrder[$testname]); + if (!isset($this->defectSortOrder[$test->sortId()])) { + $this->defectSortOrder[$test->sortId()] = self::DEFECT_SORT_WEIGHT[$this->cache->getState($test->sortId())]; + $max = max($max, $this->defectSortOrder[$test->sortId()]); } } - $this->defectSortOrder[$suite->getName()] = $max; - } - - private function suiteOnlyContainsTests(TestSuite $suite): bool - { - return array_reduce( - $suite->tests(), - static function ($carry, $test) - { - return $carry && ($test instanceof TestCase || $test instanceof DataProviderTestSuite); - }, - true - ); + $this->defectSortOrder[$suite->sortId()] = $max; } private function reverse(array $tests): array @@ -315,17 +279,22 @@ final class TestSuiteSorter } /** - * Comparator callback function to sort tests for "reach failure as fast as possible": + * Comparator callback function to sort tests for "reach failure as fast as possible". + * * 1. sort tests by defect weight defined in self::DEFECT_SORT_WEIGHT * 2. when tests are equally defective, sort the fastest to the front - * 3. do not reorder successful tests. + * 3. do not reorder successful tests * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ private function cmpDefectPriorityAndTime(Test $a, Test $b): int { - $priorityA = $this->defectSortOrder[self::getTestSorterUID($a)] ?? 0; - $priorityB = $this->defectSortOrder[self::getTestSorterUID($b)] ?? 0; + if (!($a instanceof Reorderable && $b instanceof Reorderable)) { + return 0; + } + + $priorityA = $this->defectSortOrder[$a->sortId()] ?? 0; + $priorityB = $this->defectSortOrder[$b->sortId()] ?? 0; if ($priorityB <=> $priorityA) { // Sort defect weight descending @@ -347,7 +316,11 @@ final class TestSuiteSorter */ private function cmpDuration(Test $a, Test $b): int { - return $this->cache->getTime(self::getTestSorterUID($a)) <=> $this->cache->getTime(self::getTestSorterUID($b)); + if (!($a instanceof Reorderable && $b instanceof Reorderable)) { + return 0; + } + + return $this->cache->getTime($a->sortId()) <=> $this->cache->getTime($b->sortId()); } /** @@ -384,20 +357,11 @@ final class TestSuiteSorter { $newTestOrder = []; $i = 0; + $provided = []; do { - $todoNames = array_map( - /** - * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException - */ - static function ($test) - { - return self::getTestSorterUID($test); - }, - $tests - ); - - if (!$tests[$i]->hasDependencies() || empty(array_intersect($this->getNormalizedDependencyNames($tests[$i]), $todoNames))) { + if ([] === array_diff($tests[$i]->requires(), $provided)) { + $provided = array_merge($provided, $tests[$i]->provides()); $newTestOrder = array_merge($newTestOrder, array_splice($tests, $i, 1)); $i = 0; } else { @@ -408,28 +372,6 @@ final class TestSuiteSorter return array_merge($newTestOrder, $tests); } - /** - * @param DataProviderTestSuite|TestCase $test - * - * @return array A list of full test names as "TestSuiteClassName::testMethodName" - */ - private function getNormalizedDependencyNames($test): array - { - if ($test instanceof DataProviderTestSuite) { - $testClass = substr($test->getName(), 0, strpos($test->getName(), '::')); - } else { - $testClass = get_class($test); - } - - return array_map( - static function ($name) use ($testClass) - { - return strpos($name, '::') === false ? $testClass . '::' . $name : $name; - }, - $test->getDependencies() - ); - } - /** * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ @@ -439,8 +381,8 @@ final class TestSuiteSorter if ($suite instanceof TestSuite) { foreach ($suite->tests() as $test) { - if (!($test instanceof TestSuite)) { - $tests[] = self::getTestSorterUID($test); + if (!$test instanceof TestSuite && $test instanceof Reorderable) { + $tests[] = $test->sortId(); } else { $tests = array_merge($tests, $this->calculateTestExecutionOrder($test)); } diff --git a/vendor/phpunit/phpunit/src/Runner/Version.php b/vendor/phpunit/phpunit/src/Runner/Version.php index 4e3537f81..abedc67ce 100644 --- a/vendor/phpunit/phpunit/src/Runner/Version.php +++ b/vendor/phpunit/phpunit/src/Runner/Version.php @@ -16,6 +16,9 @@ use function implode; use function strpos; use SebastianBergmann\Version as VersionId; +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ final class Version { /** @@ -38,7 +41,7 @@ final class Version } if (self::$version === '') { - self::$version = (new VersionId('8.5.31', dirname(__DIR__, 2)))->getVersion(); + self::$version = (new VersionId('9.5.27', dirname(__DIR__, 2)))->getVersion(); } return self::$version; @@ -59,13 +62,4 @@ final class Version { return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.'; } - - public static function getReleaseChannel(): string - { - if (strpos(self::$pharVersion, '-') !== false) { - return '-snapshot'; - } - - return ''; - } } diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php new file mode 100644 index 000000000..9030b1dbe --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php @@ -0,0 +1,887 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\CliArguments; + +use function array_map; +use function array_merge; +use function class_exists; +use function explode; +use function is_numeric; +use function str_replace; +use PHPUnit\Runner\TestSuiteSorter; +use PHPUnit\TextUI\DefaultResultPrinter; +use PHPUnit\TextUI\XmlConfiguration\Extension; +use PHPUnit\Util\Log\TeamCity; +use PHPUnit\Util\TestDox\CliTestDoxPrinter; +use SebastianBergmann\CliParser\Exception as CliParserException; +use SebastianBergmann\CliParser\Parser as CliParser; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Builder +{ + private const LONG_OPTIONS = [ + 'atleast-version=', + 'prepend=', + 'bootstrap=', + 'cache-result', + 'do-not-cache-result', + 'cache-result-file=', + 'check-version', + 'colors==', + 'columns=', + 'configuration=', + 'coverage-cache=', + 'warm-coverage-cache', + 'coverage-filter=', + 'coverage-clover=', + 'coverage-cobertura=', + 'coverage-crap4j=', + 'coverage-html=', + 'coverage-php=', + 'coverage-text==', + 'coverage-xml=', + 'path-coverage', + 'debug', + 'disallow-test-output', + 'disallow-resource-usage', + 'disallow-todo-tests', + 'default-time-limit=', + 'enforce-time-limit', + 'exclude-group=', + 'extensions=', + 'filter=', + 'generate-configuration', + 'globals-backup', + 'group=', + 'covers=', + 'uses=', + 'help', + 'resolve-dependencies', + 'ignore-dependencies', + 'include-path=', + 'list-groups', + 'list-suites', + 'list-tests', + 'list-tests-xml=', + 'loader=', + 'log-junit=', + 'log-teamcity=', + 'migrate-configuration', + 'no-configuration', + 'no-coverage', + 'no-logging', + 'no-interaction', + 'no-extensions', + 'order-by=', + 'printer=', + 'process-isolation', + 'repeat=', + 'dont-report-useless-tests', + 'random-order', + 'random-order-seed=', + 'reverse-order', + 'reverse-list', + 'static-backup', + 'stderr', + 'stop-on-defect', + 'stop-on-error', + 'stop-on-failure', + 'stop-on-warning', + 'stop-on-incomplete', + 'stop-on-risky', + 'stop-on-skipped', + 'fail-on-empty-test-suite', + 'fail-on-incomplete', + 'fail-on-risky', + 'fail-on-skipped', + 'fail-on-warning', + 'strict-coverage', + 'disable-coverage-ignore', + 'strict-global-state', + 'teamcity', + 'testdox', + 'testdox-group=', + 'testdox-exclude-group=', + 'testdox-html=', + 'testdox-text=', + 'testdox-xml=', + 'test-suffix=', + 'testsuite=', + 'verbose', + 'version', + 'whitelist=', + 'dump-xdebug-filter=', + ]; + + private const SHORT_OPTIONS = 'd:c:hv'; + + public function fromParameters(array $parameters, array $additionalLongOptions): Configuration + { + try { + $options = (new CliParser)->parse( + $parameters, + self::SHORT_OPTIONS, + array_merge(self::LONG_OPTIONS, $additionalLongOptions) + ); + } catch (CliParserException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } + + $argument = null; + $atLeastVersion = null; + $backupGlobals = null; + $backupStaticAttributes = null; + $beStrictAboutChangesToGlobalState = null; + $beStrictAboutResourceUsageDuringSmallTests = null; + $bootstrap = null; + $cacheResult = null; + $cacheResultFile = null; + $checkVersion = null; + $colors = null; + $columns = null; + $configuration = null; + $coverageCacheDirectory = null; + $warmCoverageCache = null; + $coverageFilter = null; + $coverageClover = null; + $coverageCobertura = null; + $coverageCrap4J = null; + $coverageHtml = null; + $coveragePhp = null; + $coverageText = null; + $coverageTextShowUncoveredFiles = null; + $coverageTextShowOnlySummary = null; + $coverageXml = null; + $pathCoverage = null; + $debug = null; + $defaultTimeLimit = null; + $disableCodeCoverageIgnore = null; + $disallowTestOutput = null; + $disallowTodoAnnotatedTests = null; + $enforceTimeLimit = null; + $excludeGroups = null; + $executionOrder = null; + $executionOrderDefects = null; + $extensions = []; + $unavailableExtensions = []; + $failOnEmptyTestSuite = null; + $failOnIncomplete = null; + $failOnRisky = null; + $failOnSkipped = null; + $failOnWarning = null; + $filter = null; + $generateConfiguration = null; + $migrateConfiguration = null; + $groups = null; + $testsCovering = null; + $testsUsing = null; + $help = null; + $includePath = null; + $iniSettings = []; + $junitLogfile = null; + $listGroups = null; + $listSuites = null; + $listTests = null; + $listTestsXml = null; + $loader = null; + $noCoverage = null; + $noExtensions = null; + $noInteraction = null; + $noLogging = null; + $printer = null; + $processIsolation = null; + $randomOrderSeed = null; + $repeat = null; + $reportUselessTests = null; + $resolveDependencies = null; + $reverseList = null; + $stderr = null; + $strictCoverage = null; + $stopOnDefect = null; + $stopOnError = null; + $stopOnFailure = null; + $stopOnIncomplete = null; + $stopOnRisky = null; + $stopOnSkipped = null; + $stopOnWarning = null; + $teamcityLogfile = null; + $testdoxExcludeGroups = null; + $testdoxGroups = null; + $testdoxHtmlFile = null; + $testdoxTextFile = null; + $testdoxXmlFile = null; + $testSuffixes = null; + $testSuite = null; + $unrecognizedOptions = []; + $unrecognizedOrderBy = null; + $useDefaultConfiguration = null; + $verbose = null; + $version = null; + $xdebugFilterFile = null; + + if (isset($options[1][0])) { + $argument = $options[1][0]; + } + + foreach ($options[0] as $option) { + switch ($option[0]) { + case '--colors': + $colors = $option[1] ?: DefaultResultPrinter::COLOR_AUTO; + + break; + + case '--bootstrap': + $bootstrap = $option[1]; + + break; + + case '--cache-result': + $cacheResult = true; + + break; + + case '--do-not-cache-result': + $cacheResult = false; + + break; + + case '--cache-result-file': + $cacheResultFile = $option[1]; + + break; + + case '--columns': + if (is_numeric($option[1])) { + $columns = (int) $option[1]; + } elseif ($option[1] === 'max') { + $columns = 'max'; + } + + break; + + case 'c': + case '--configuration': + $configuration = $option[1]; + + break; + + case '--coverage-cache': + $coverageCacheDirectory = $option[1]; + + break; + + case '--warm-coverage-cache': + $warmCoverageCache = true; + + break; + + case '--coverage-clover': + $coverageClover = $option[1]; + + break; + + case '--coverage-cobertura': + $coverageCobertura = $option[1]; + + break; + + case '--coverage-crap4j': + $coverageCrap4J = $option[1]; + + break; + + case '--coverage-html': + $coverageHtml = $option[1]; + + break; + + case '--coverage-php': + $coveragePhp = $option[1]; + + break; + + case '--coverage-text': + if ($option[1] === null) { + $option[1] = 'php://stdout'; + } + + $coverageText = $option[1]; + $coverageTextShowUncoveredFiles = false; + $coverageTextShowOnlySummary = false; + + break; + + case '--coverage-xml': + $coverageXml = $option[1]; + + break; + + case '--path-coverage': + $pathCoverage = true; + + break; + + case 'd': + $tmp = explode('=', $option[1]); + + if (isset($tmp[0])) { + if (isset($tmp[1])) { + $iniSettings[$tmp[0]] = $tmp[1]; + } else { + $iniSettings[$tmp[0]] = '1'; + } + } + + break; + + case '--debug': + $debug = true; + + break; + + case 'h': + case '--help': + $help = true; + + break; + + case '--filter': + $filter = $option[1]; + + break; + + case '--testsuite': + $testSuite = $option[1]; + + break; + + case '--generate-configuration': + $generateConfiguration = true; + + break; + + case '--migrate-configuration': + $migrateConfiguration = true; + + break; + + case '--group': + $groups = explode(',', $option[1]); + + break; + + case '--exclude-group': + $excludeGroups = explode(',', $option[1]); + + break; + + case '--covers': + $testsCovering = array_map('strtolower', explode(',', $option[1])); + + break; + + case '--uses': + $testsUsing = array_map('strtolower', explode(',', $option[1])); + + break; + + case '--test-suffix': + $testSuffixes = explode(',', $option[1]); + + break; + + case '--include-path': + $includePath = $option[1]; + + break; + + case '--list-groups': + $listGroups = true; + + break; + + case '--list-suites': + $listSuites = true; + + break; + + case '--list-tests': + $listTests = true; + + break; + + case '--list-tests-xml': + $listTestsXml = $option[1]; + + break; + + case '--printer': + $printer = $option[1]; + + break; + + case '--loader': + $loader = $option[1]; + + break; + + case '--log-junit': + $junitLogfile = $option[1]; + + break; + + case '--log-teamcity': + $teamcityLogfile = $option[1]; + + break; + + case '--order-by': + foreach (explode(',', $option[1]) as $order) { + switch ($order) { + case 'default': + $executionOrder = TestSuiteSorter::ORDER_DEFAULT; + $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT; + $resolveDependencies = true; + + break; + + case 'defects': + $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST; + + break; + + case 'depends': + $resolveDependencies = true; + + break; + + case 'duration': + $executionOrder = TestSuiteSorter::ORDER_DURATION; + + break; + + case 'no-depends': + $resolveDependencies = false; + + break; + + case 'random': + $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; + + break; + + case 'reverse': + $executionOrder = TestSuiteSorter::ORDER_REVERSED; + + break; + + case 'size': + $executionOrder = TestSuiteSorter::ORDER_SIZE; + + break; + + default: + $unrecognizedOrderBy = $order; + } + } + + break; + + case '--process-isolation': + $processIsolation = true; + + break; + + case '--repeat': + $repeat = (int) $option[1]; + + break; + + case '--stderr': + $stderr = true; + + break; + + case '--stop-on-defect': + $stopOnDefect = true; + + break; + + case '--stop-on-error': + $stopOnError = true; + + break; + + case '--stop-on-failure': + $stopOnFailure = true; + + break; + + case '--stop-on-warning': + $stopOnWarning = true; + + break; + + case '--stop-on-incomplete': + $stopOnIncomplete = true; + + break; + + case '--stop-on-risky': + $stopOnRisky = true; + + break; + + case '--stop-on-skipped': + $stopOnSkipped = true; + + break; + + case '--fail-on-empty-test-suite': + $failOnEmptyTestSuite = true; + + break; + + case '--fail-on-incomplete': + $failOnIncomplete = true; + + break; + + case '--fail-on-risky': + $failOnRisky = true; + + break; + + case '--fail-on-skipped': + $failOnSkipped = true; + + break; + + case '--fail-on-warning': + $failOnWarning = true; + + break; + + case '--teamcity': + $printer = TeamCity::class; + + break; + + case '--testdox': + $printer = CliTestDoxPrinter::class; + + break; + + case '--testdox-group': + $testdoxGroups = explode(',', $option[1]); + + break; + + case '--testdox-exclude-group': + $testdoxExcludeGroups = explode(',', $option[1]); + + break; + + case '--testdox-html': + $testdoxHtmlFile = $option[1]; + + break; + + case '--testdox-text': + $testdoxTextFile = $option[1]; + + break; + + case '--testdox-xml': + $testdoxXmlFile = $option[1]; + + break; + + case '--no-configuration': + $useDefaultConfiguration = false; + + break; + + case '--extensions': + foreach (explode(',', $option[1]) as $extensionClass) { + if (!class_exists($extensionClass)) { + $unavailableExtensions[] = $extensionClass; + + continue; + } + + $extensions[] = new Extension($extensionClass, '', []); + } + + break; + + case '--no-extensions': + $noExtensions = true; + + break; + + case '--no-coverage': + $noCoverage = true; + + break; + + case '--no-logging': + $noLogging = true; + + break; + + case '--no-interaction': + $noInteraction = true; + + break; + + case '--globals-backup': + $backupGlobals = true; + + break; + + case '--static-backup': + $backupStaticAttributes = true; + + break; + + case 'v': + case '--verbose': + $verbose = true; + + break; + + case '--atleast-version': + $atLeastVersion = $option[1]; + + break; + + case '--version': + $version = true; + + break; + + case '--dont-report-useless-tests': + $reportUselessTests = false; + + break; + + case '--strict-coverage': + $strictCoverage = true; + + break; + + case '--disable-coverage-ignore': + $disableCodeCoverageIgnore = true; + + break; + + case '--strict-global-state': + $beStrictAboutChangesToGlobalState = true; + + break; + + case '--disallow-test-output': + $disallowTestOutput = true; + + break; + + case '--disallow-resource-usage': + $beStrictAboutResourceUsageDuringSmallTests = true; + + break; + + case '--default-time-limit': + $defaultTimeLimit = (int) $option[1]; + + break; + + case '--enforce-time-limit': + $enforceTimeLimit = true; + + break; + + case '--disallow-todo-tests': + $disallowTodoAnnotatedTests = true; + + break; + + case '--reverse-list': + $reverseList = true; + + break; + + case '--check-version': + $checkVersion = true; + + break; + + case '--coverage-filter': + case '--whitelist': + if ($coverageFilter === null) { + $coverageFilter = []; + } + + $coverageFilter[] = $option[1]; + + break; + + case '--random-order': + $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; + + break; + + case '--random-order-seed': + $randomOrderSeed = (int) $option[1]; + + break; + + case '--resolve-dependencies': + $resolveDependencies = true; + + break; + + case '--ignore-dependencies': + $resolveDependencies = false; + + break; + + case '--reverse-order': + $executionOrder = TestSuiteSorter::ORDER_REVERSED; + + break; + + case '--dump-xdebug-filter': + $xdebugFilterFile = $option[1]; + + break; + + default: + $unrecognizedOptions[str_replace('--', '', $option[0])] = $option[1]; + } + } + + if (empty($extensions)) { + $extensions = null; + } + + if (empty($unavailableExtensions)) { + $unavailableExtensions = null; + } + + if (empty($iniSettings)) { + $iniSettings = null; + } + + if (empty($coverageFilter)) { + $coverageFilter = null; + } + + return new Configuration( + $argument, + $atLeastVersion, + $backupGlobals, + $backupStaticAttributes, + $beStrictAboutChangesToGlobalState, + $beStrictAboutResourceUsageDuringSmallTests, + $bootstrap, + $cacheResult, + $cacheResultFile, + $checkVersion, + $colors, + $columns, + $configuration, + $coverageClover, + $coverageCobertura, + $coverageCrap4J, + $coverageHtml, + $coveragePhp, + $coverageText, + $coverageTextShowUncoveredFiles, + $coverageTextShowOnlySummary, + $coverageXml, + $pathCoverage, + $coverageCacheDirectory, + $warmCoverageCache, + $debug, + $defaultTimeLimit, + $disableCodeCoverageIgnore, + $disallowTestOutput, + $disallowTodoAnnotatedTests, + $enforceTimeLimit, + $excludeGroups, + $executionOrder, + $executionOrderDefects, + $extensions, + $unavailableExtensions, + $failOnEmptyTestSuite, + $failOnIncomplete, + $failOnRisky, + $failOnSkipped, + $failOnWarning, + $filter, + $generateConfiguration, + $migrateConfiguration, + $groups, + $testsCovering, + $testsUsing, + $help, + $includePath, + $iniSettings, + $junitLogfile, + $listGroups, + $listSuites, + $listTests, + $listTestsXml, + $loader, + $noCoverage, + $noExtensions, + $noInteraction, + $noLogging, + $printer, + $processIsolation, + $randomOrderSeed, + $repeat, + $reportUselessTests, + $resolveDependencies, + $reverseList, + $stderr, + $strictCoverage, + $stopOnDefect, + $stopOnError, + $stopOnFailure, + $stopOnIncomplete, + $stopOnRisky, + $stopOnSkipped, + $stopOnWarning, + $teamcityLogfile, + $testdoxExcludeGroups, + $testdoxGroups, + $testdoxHtmlFile, + $testdoxTextFile, + $testdoxXmlFile, + $testSuffixes, + $testSuite, + $unrecognizedOptions, + $unrecognizedOrderBy, + $useDefaultConfiguration, + $verbose, + $version, + $coverageFilter, + $xdebugFilterFile + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php new file mode 100644 index 000000000..51bf5cb83 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php @@ -0,0 +1,2108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\CliArguments; + +use PHPUnit\TextUI\XmlConfiguration\Extension; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Configuration +{ + /** + * @var ?string + */ + private $argument; + + /** + * @var ?string + */ + private $atLeastVersion; + + /** + * @var ?bool + */ + private $backupGlobals; + + /** + * @var ?bool + */ + private $backupStaticAttributes; + + /** + * @var ?bool + */ + private $beStrictAboutChangesToGlobalState; + + /** + * @var ?bool + */ + private $beStrictAboutResourceUsageDuringSmallTests; + + /** + * @var ?string + */ + private $bootstrap; + + /** + * @var ?bool + */ + private $cacheResult; + + /** + * @var ?string + */ + private $cacheResultFile; + + /** + * @var ?bool + */ + private $checkVersion; + + /** + * @var ?string + */ + private $colors; + + /** + * @var null|int|string + */ + private $columns; + + /** + * @var ?string + */ + private $configuration; + + /** + * @var null|string[] + */ + private $coverageFilter; + + /** + * @var ?string + */ + private $coverageClover; + + /** + * @var ?string + */ + private $coverageCobertura; + + /** + * @var ?string + */ + private $coverageCrap4J; + + /** + * @var ?string + */ + private $coverageHtml; + + /** + * @var ?string + */ + private $coveragePhp; + + /** + * @var ?string + */ + private $coverageText; + + /** + * @var ?bool + */ + private $coverageTextShowUncoveredFiles; + + /** + * @var ?bool + */ + private $coverageTextShowOnlySummary; + + /** + * @var ?string + */ + private $coverageXml; + + /** + * @var ?bool + */ + private $pathCoverage; + + /** + * @var ?string + */ + private $coverageCacheDirectory; + + /** + * @var ?bool + */ + private $warmCoverageCache; + + /** + * @var ?bool + */ + private $debug; + + /** + * @var ?int + */ + private $defaultTimeLimit; + + /** + * @var ?bool + */ + private $disableCodeCoverageIgnore; + + /** + * @var ?bool + */ + private $disallowTestOutput; + + /** + * @var ?bool + */ + private $disallowTodoAnnotatedTests; + + /** + * @var ?bool + */ + private $enforceTimeLimit; + + /** + * @var null|string[] + */ + private $excludeGroups; + + /** + * @var ?int + */ + private $executionOrder; + + /** + * @var ?int + */ + private $executionOrderDefects; + + /** + * @var null|Extension[] + */ + private $extensions; + + /** + * @var null|string[] + */ + private $unavailableExtensions; + + /** + * @var ?bool + */ + private $failOnEmptyTestSuite; + + /** + * @var ?bool + */ + private $failOnIncomplete; + + /** + * @var ?bool + */ + private $failOnRisky; + + /** + * @var ?bool + */ + private $failOnSkipped; + + /** + * @var ?bool + */ + private $failOnWarning; + + /** + * @var ?string + */ + private $filter; + + /** + * @var ?bool + */ + private $generateConfiguration; + + /** + * @var ?bool + */ + private $migrateConfiguration; + + /** + * @var null|string[] + */ + private $groups; + + /** + * @var null|string[] + */ + private $testsCovering; + + /** + * @var null|string[] + */ + private $testsUsing; + + /** + * @var ?bool + */ + private $help; + + /** + * @var ?string + */ + private $includePath; + + /** + * @var null|string[] + */ + private $iniSettings; + + /** + * @var ?string + */ + private $junitLogfile; + + /** + * @var ?bool + */ + private $listGroups; + + /** + * @var ?bool + */ + private $listSuites; + + /** + * @var ?bool + */ + private $listTests; + + /** + * @var ?string + */ + private $listTestsXml; + + /** + * @var ?string + */ + private $loader; + + /** + * @var ?bool + */ + private $noCoverage; + + /** + * @var ?bool + */ + private $noExtensions; + + /** + * @var ?bool + */ + private $noInteraction; + + /** + * @var ?bool + */ + private $noLogging; + + /** + * @var ?string + */ + private $printer; + + /** + * @var ?bool + */ + private $processIsolation; + + /** + * @var ?int + */ + private $randomOrderSeed; + + /** + * @var ?int + */ + private $repeat; + + /** + * @var ?bool + */ + private $reportUselessTests; + + /** + * @var ?bool + */ + private $resolveDependencies; + + /** + * @var ?bool + */ + private $reverseList; + + /** + * @var ?bool + */ + private $stderr; + + /** + * @var ?bool + */ + private $strictCoverage; + + /** + * @var ?bool + */ + private $stopOnDefect; + + /** + * @var ?bool + */ + private $stopOnError; + + /** + * @var ?bool + */ + private $stopOnFailure; + + /** + * @var ?bool + */ + private $stopOnIncomplete; + + /** + * @var ?bool + */ + private $stopOnRisky; + + /** + * @var ?bool + */ + private $stopOnSkipped; + + /** + * @var ?bool + */ + private $stopOnWarning; + + /** + * @var ?string + */ + private $teamcityLogfile; + + /** + * @var null|string[] + */ + private $testdoxExcludeGroups; + + /** + * @var null|string[] + */ + private $testdoxGroups; + + /** + * @var ?string + */ + private $testdoxHtmlFile; + + /** + * @var ?string + */ + private $testdoxTextFile; + + /** + * @var ?string + */ + private $testdoxXmlFile; + + /** + * @var null|string[] + */ + private $testSuffixes; + + /** + * @var ?string + */ + private $testSuite; + + /** + * @var string[] + */ + private $unrecognizedOptions; + + /** + * @var ?string + */ + private $unrecognizedOrderBy; + + /** + * @var ?bool + */ + private $useDefaultConfiguration; + + /** + * @var ?bool + */ + private $verbose; + + /** + * @var ?bool + */ + private $version; + + /** + * @var ?string + */ + private $xdebugFilterFile; + + /** + * @param null|int|string $columns + */ + public function __construct(?string $argument, ?string $atLeastVersion, ?bool $backupGlobals, ?bool $backupStaticAttributes, ?bool $beStrictAboutChangesToGlobalState, ?bool $beStrictAboutResourceUsageDuringSmallTests, ?string $bootstrap, ?bool $cacheResult, ?string $cacheResultFile, ?bool $checkVersion, ?string $colors, $columns, ?string $configuration, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4J, ?string $coverageHtml, ?string $coveragePhp, ?string $coverageText, ?bool $coverageTextShowUncoveredFiles, ?bool $coverageTextShowOnlySummary, ?string $coverageXml, ?bool $pathCoverage, ?string $coverageCacheDirectory, ?bool $warmCoverageCache, ?bool $debug, ?int $defaultTimeLimit, ?bool $disableCodeCoverageIgnore, ?bool $disallowTestOutput, ?bool $disallowTodoAnnotatedTests, ?bool $enforceTimeLimit, ?array $excludeGroups, ?int $executionOrder, ?int $executionOrderDefects, ?array $extensions, ?array $unavailableExtensions, ?bool $failOnEmptyTestSuite, ?bool $failOnIncomplete, ?bool $failOnRisky, ?bool $failOnSkipped, ?bool $failOnWarning, ?string $filter, ?bool $generateConfiguration, ?bool $migrateConfiguration, ?array $groups, ?array $testsCovering, ?array $testsUsing, ?bool $help, ?string $includePath, ?array $iniSettings, ?string $junitLogfile, ?bool $listGroups, ?bool $listSuites, ?bool $listTests, ?string $listTestsXml, ?string $loader, ?bool $noCoverage, ?bool $noExtensions, ?bool $noInteraction, ?bool $noLogging, ?string $printer, ?bool $processIsolation, ?int $randomOrderSeed, ?int $repeat, ?bool $reportUselessTests, ?bool $resolveDependencies, ?bool $reverseList, ?bool $stderr, ?bool $strictCoverage, ?bool $stopOnDefect, ?bool $stopOnError, ?bool $stopOnFailure, ?bool $stopOnIncomplete, ?bool $stopOnRisky, ?bool $stopOnSkipped, ?bool $stopOnWarning, ?string $teamcityLogfile, ?array $testdoxExcludeGroups, ?array $testdoxGroups, ?string $testdoxHtmlFile, ?string $testdoxTextFile, ?string $testdoxXmlFile, ?array $testSuffixes, ?string $testSuite, array $unrecognizedOptions, ?string $unrecognizedOrderBy, ?bool $useDefaultConfiguration, ?bool $verbose, ?bool $version, ?array $coverageFilter, ?string $xdebugFilterFile) + { + $this->argument = $argument; + $this->atLeastVersion = $atLeastVersion; + $this->backupGlobals = $backupGlobals; + $this->backupStaticAttributes = $backupStaticAttributes; + $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; + $this->beStrictAboutResourceUsageDuringSmallTests = $beStrictAboutResourceUsageDuringSmallTests; + $this->bootstrap = $bootstrap; + $this->cacheResult = $cacheResult; + $this->cacheResultFile = $cacheResultFile; + $this->checkVersion = $checkVersion; + $this->colors = $colors; + $this->columns = $columns; + $this->configuration = $configuration; + $this->coverageFilter = $coverageFilter; + $this->coverageClover = $coverageClover; + $this->coverageCobertura = $coverageCobertura; + $this->coverageCrap4J = $coverageCrap4J; + $this->coverageHtml = $coverageHtml; + $this->coveragePhp = $coveragePhp; + $this->coverageText = $coverageText; + $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles; + $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary; + $this->coverageXml = $coverageXml; + $this->pathCoverage = $pathCoverage; + $this->coverageCacheDirectory = $coverageCacheDirectory; + $this->warmCoverageCache = $warmCoverageCache; + $this->debug = $debug; + $this->defaultTimeLimit = $defaultTimeLimit; + $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; + $this->disallowTestOutput = $disallowTestOutput; + $this->disallowTodoAnnotatedTests = $disallowTodoAnnotatedTests; + $this->enforceTimeLimit = $enforceTimeLimit; + $this->excludeGroups = $excludeGroups; + $this->executionOrder = $executionOrder; + $this->executionOrderDefects = $executionOrderDefects; + $this->extensions = $extensions; + $this->unavailableExtensions = $unavailableExtensions; + $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; + $this->failOnIncomplete = $failOnIncomplete; + $this->failOnRisky = $failOnRisky; + $this->failOnSkipped = $failOnSkipped; + $this->failOnWarning = $failOnWarning; + $this->filter = $filter; + $this->generateConfiguration = $generateConfiguration; + $this->migrateConfiguration = $migrateConfiguration; + $this->groups = $groups; + $this->testsCovering = $testsCovering; + $this->testsUsing = $testsUsing; + $this->help = $help; + $this->includePath = $includePath; + $this->iniSettings = $iniSettings; + $this->junitLogfile = $junitLogfile; + $this->listGroups = $listGroups; + $this->listSuites = $listSuites; + $this->listTests = $listTests; + $this->listTestsXml = $listTestsXml; + $this->loader = $loader; + $this->noCoverage = $noCoverage; + $this->noExtensions = $noExtensions; + $this->noInteraction = $noInteraction; + $this->noLogging = $noLogging; + $this->printer = $printer; + $this->processIsolation = $processIsolation; + $this->randomOrderSeed = $randomOrderSeed; + $this->repeat = $repeat; + $this->reportUselessTests = $reportUselessTests; + $this->resolveDependencies = $resolveDependencies; + $this->reverseList = $reverseList; + $this->stderr = $stderr; + $this->strictCoverage = $strictCoverage; + $this->stopOnDefect = $stopOnDefect; + $this->stopOnError = $stopOnError; + $this->stopOnFailure = $stopOnFailure; + $this->stopOnIncomplete = $stopOnIncomplete; + $this->stopOnRisky = $stopOnRisky; + $this->stopOnSkipped = $stopOnSkipped; + $this->stopOnWarning = $stopOnWarning; + $this->teamcityLogfile = $teamcityLogfile; + $this->testdoxExcludeGroups = $testdoxExcludeGroups; + $this->testdoxGroups = $testdoxGroups; + $this->testdoxHtmlFile = $testdoxHtmlFile; + $this->testdoxTextFile = $testdoxTextFile; + $this->testdoxXmlFile = $testdoxXmlFile; + $this->testSuffixes = $testSuffixes; + $this->testSuite = $testSuite; + $this->unrecognizedOptions = $unrecognizedOptions; + $this->unrecognizedOrderBy = $unrecognizedOrderBy; + $this->useDefaultConfiguration = $useDefaultConfiguration; + $this->verbose = $verbose; + $this->version = $version; + $this->xdebugFilterFile = $xdebugFilterFile; + } + + public function hasArgument(): bool + { + return $this->argument !== null; + } + + /** + * @throws Exception + */ + public function argument(): string + { + if ($this->argument === null) { + throw new Exception; + } + + return $this->argument; + } + + public function hasAtLeastVersion(): bool + { + return $this->atLeastVersion !== null; + } + + /** + * @throws Exception + */ + public function atLeastVersion(): string + { + if ($this->atLeastVersion === null) { + throw new Exception; + } + + return $this->atLeastVersion; + } + + public function hasBackupGlobals(): bool + { + return $this->backupGlobals !== null; + } + + /** + * @throws Exception + */ + public function backupGlobals(): bool + { + if ($this->backupGlobals === null) { + throw new Exception; + } + + return $this->backupGlobals; + } + + public function hasBackupStaticAttributes(): bool + { + return $this->backupStaticAttributes !== null; + } + + /** + * @throws Exception + */ + public function backupStaticAttributes(): bool + { + if ($this->backupStaticAttributes === null) { + throw new Exception; + } + + return $this->backupStaticAttributes; + } + + public function hasBeStrictAboutChangesToGlobalState(): bool + { + return $this->beStrictAboutChangesToGlobalState !== null; + } + + /** + * @throws Exception + */ + public function beStrictAboutChangesToGlobalState(): bool + { + if ($this->beStrictAboutChangesToGlobalState === null) { + throw new Exception; + } + + return $this->beStrictAboutChangesToGlobalState; + } + + public function hasBeStrictAboutResourceUsageDuringSmallTests(): bool + { + return $this->beStrictAboutResourceUsageDuringSmallTests !== null; + } + + /** + * @throws Exception + */ + public function beStrictAboutResourceUsageDuringSmallTests(): bool + { + if ($this->beStrictAboutResourceUsageDuringSmallTests === null) { + throw new Exception; + } + + return $this->beStrictAboutResourceUsageDuringSmallTests; + } + + public function hasBootstrap(): bool + { + return $this->bootstrap !== null; + } + + /** + * @throws Exception + */ + public function bootstrap(): string + { + if ($this->bootstrap === null) { + throw new Exception; + } + + return $this->bootstrap; + } + + public function hasCacheResult(): bool + { + return $this->cacheResult !== null; + } + + /** + * @throws Exception + */ + public function cacheResult(): bool + { + if ($this->cacheResult === null) { + throw new Exception; + } + + return $this->cacheResult; + } + + public function hasCacheResultFile(): bool + { + return $this->cacheResultFile !== null; + } + + /** + * @throws Exception + */ + public function cacheResultFile(): string + { + if ($this->cacheResultFile === null) { + throw new Exception; + } + + return $this->cacheResultFile; + } + + public function hasCheckVersion(): bool + { + return $this->checkVersion !== null; + } + + /** + * @throws Exception + */ + public function checkVersion(): bool + { + if ($this->checkVersion === null) { + throw new Exception; + } + + return $this->checkVersion; + } + + public function hasColors(): bool + { + return $this->colors !== null; + } + + /** + * @throws Exception + */ + public function colors(): string + { + if ($this->colors === null) { + throw new Exception; + } + + return $this->colors; + } + + public function hasColumns(): bool + { + return $this->columns !== null; + } + + /** + * @throws Exception + */ + public function columns() + { + if ($this->columns === null) { + throw new Exception; + } + + return $this->columns; + } + + public function hasConfiguration(): bool + { + return $this->configuration !== null; + } + + /** + * @throws Exception + */ + public function configuration(): string + { + if ($this->configuration === null) { + throw new Exception; + } + + return $this->configuration; + } + + public function hasCoverageFilter(): bool + { + return $this->coverageFilter !== null; + } + + /** + * @throws Exception + */ + public function coverageFilter(): array + { + if ($this->coverageFilter === null) { + throw new Exception; + } + + return $this->coverageFilter; + } + + public function hasCoverageClover(): bool + { + return $this->coverageClover !== null; + } + + /** + * @throws Exception + */ + public function coverageClover(): string + { + if ($this->coverageClover === null) { + throw new Exception; + } + + return $this->coverageClover; + } + + public function hasCoverageCobertura(): bool + { + return $this->coverageCobertura !== null; + } + + /** + * @throws Exception + */ + public function coverageCobertura(): string + { + if ($this->coverageCobertura === null) { + throw new Exception; + } + + return $this->coverageCobertura; + } + + public function hasCoverageCrap4J(): bool + { + return $this->coverageCrap4J !== null; + } + + /** + * @throws Exception + */ + public function coverageCrap4J(): string + { + if ($this->coverageCrap4J === null) { + throw new Exception; + } + + return $this->coverageCrap4J; + } + + public function hasCoverageHtml(): bool + { + return $this->coverageHtml !== null; + } + + /** + * @throws Exception + */ + public function coverageHtml(): string + { + if ($this->coverageHtml === null) { + throw new Exception; + } + + return $this->coverageHtml; + } + + public function hasCoveragePhp(): bool + { + return $this->coveragePhp !== null; + } + + /** + * @throws Exception + */ + public function coveragePhp(): string + { + if ($this->coveragePhp === null) { + throw new Exception; + } + + return $this->coveragePhp; + } + + public function hasCoverageText(): bool + { + return $this->coverageText !== null; + } + + /** + * @throws Exception + */ + public function coverageText(): string + { + if ($this->coverageText === null) { + throw new Exception; + } + + return $this->coverageText; + } + + public function hasCoverageTextShowUncoveredFiles(): bool + { + return $this->coverageTextShowUncoveredFiles !== null; + } + + /** + * @throws Exception + */ + public function coverageTextShowUncoveredFiles(): bool + { + if ($this->coverageTextShowUncoveredFiles === null) { + throw new Exception; + } + + return $this->coverageTextShowUncoveredFiles; + } + + public function hasCoverageTextShowOnlySummary(): bool + { + return $this->coverageTextShowOnlySummary !== null; + } + + /** + * @throws Exception + */ + public function coverageTextShowOnlySummary(): bool + { + if ($this->coverageTextShowOnlySummary === null) { + throw new Exception; + } + + return $this->coverageTextShowOnlySummary; + } + + public function hasCoverageXml(): bool + { + return $this->coverageXml !== null; + } + + /** + * @throws Exception + */ + public function coverageXml(): string + { + if ($this->coverageXml === null) { + throw new Exception; + } + + return $this->coverageXml; + } + + public function hasPathCoverage(): bool + { + return $this->pathCoverage !== null; + } + + /** + * @throws Exception + */ + public function pathCoverage(): bool + { + if ($this->pathCoverage === null) { + throw new Exception; + } + + return $this->pathCoverage; + } + + public function hasCoverageCacheDirectory(): bool + { + return $this->coverageCacheDirectory !== null; + } + + /** + * @throws Exception + */ + public function coverageCacheDirectory(): string + { + if ($this->coverageCacheDirectory === null) { + throw new Exception; + } + + return $this->coverageCacheDirectory; + } + + public function hasWarmCoverageCache(): bool + { + return $this->warmCoverageCache !== null; + } + + /** + * @throws Exception + */ + public function warmCoverageCache(): bool + { + if ($this->warmCoverageCache === null) { + throw new Exception; + } + + return $this->warmCoverageCache; + } + + public function hasDebug(): bool + { + return $this->debug !== null; + } + + /** + * @throws Exception + */ + public function debug(): bool + { + if ($this->debug === null) { + throw new Exception; + } + + return $this->debug; + } + + public function hasDefaultTimeLimit(): bool + { + return $this->defaultTimeLimit !== null; + } + + /** + * @throws Exception + */ + public function defaultTimeLimit(): int + { + if ($this->defaultTimeLimit === null) { + throw new Exception; + } + + return $this->defaultTimeLimit; + } + + public function hasDisableCodeCoverageIgnore(): bool + { + return $this->disableCodeCoverageIgnore !== null; + } + + /** + * @throws Exception + */ + public function disableCodeCoverageIgnore(): bool + { + if ($this->disableCodeCoverageIgnore === null) { + throw new Exception; + } + + return $this->disableCodeCoverageIgnore; + } + + public function hasDisallowTestOutput(): bool + { + return $this->disallowTestOutput !== null; + } + + /** + * @throws Exception + */ + public function disallowTestOutput(): bool + { + if ($this->disallowTestOutput === null) { + throw new Exception; + } + + return $this->disallowTestOutput; + } + + public function hasDisallowTodoAnnotatedTests(): bool + { + return $this->disallowTodoAnnotatedTests !== null; + } + + /** + * @throws Exception + */ + public function disallowTodoAnnotatedTests(): bool + { + if ($this->disallowTodoAnnotatedTests === null) { + throw new Exception; + } + + return $this->disallowTodoAnnotatedTests; + } + + public function hasEnforceTimeLimit(): bool + { + return $this->enforceTimeLimit !== null; + } + + /** + * @throws Exception + */ + public function enforceTimeLimit(): bool + { + if ($this->enforceTimeLimit === null) { + throw new Exception; + } + + return $this->enforceTimeLimit; + } + + public function hasExcludeGroups(): bool + { + return $this->excludeGroups !== null; + } + + /** + * @throws Exception + */ + public function excludeGroups(): array + { + if ($this->excludeGroups === null) { + throw new Exception; + } + + return $this->excludeGroups; + } + + public function hasExecutionOrder(): bool + { + return $this->executionOrder !== null; + } + + /** + * @throws Exception + */ + public function executionOrder(): int + { + if ($this->executionOrder === null) { + throw new Exception; + } + + return $this->executionOrder; + } + + public function hasExecutionOrderDefects(): bool + { + return $this->executionOrderDefects !== null; + } + + /** + * @throws Exception + */ + public function executionOrderDefects(): int + { + if ($this->executionOrderDefects === null) { + throw new Exception; + } + + return $this->executionOrderDefects; + } + + public function hasFailOnEmptyTestSuite(): bool + { + return $this->failOnEmptyTestSuite !== null; + } + + /** + * @throws Exception + */ + public function failOnEmptyTestSuite(): bool + { + if ($this->failOnEmptyTestSuite === null) { + throw new Exception; + } + + return $this->failOnEmptyTestSuite; + } + + public function hasFailOnIncomplete(): bool + { + return $this->failOnIncomplete !== null; + } + + /** + * @throws Exception + */ + public function failOnIncomplete(): bool + { + if ($this->failOnIncomplete === null) { + throw new Exception; + } + + return $this->failOnIncomplete; + } + + public function hasFailOnRisky(): bool + { + return $this->failOnRisky !== null; + } + + /** + * @throws Exception + */ + public function failOnRisky(): bool + { + if ($this->failOnRisky === null) { + throw new Exception; + } + + return $this->failOnRisky; + } + + public function hasFailOnSkipped(): bool + { + return $this->failOnSkipped !== null; + } + + /** + * @throws Exception + */ + public function failOnSkipped(): bool + { + if ($this->failOnSkipped === null) { + throw new Exception; + } + + return $this->failOnSkipped; + } + + public function hasFailOnWarning(): bool + { + return $this->failOnWarning !== null; + } + + /** + * @throws Exception + */ + public function failOnWarning(): bool + { + if ($this->failOnWarning === null) { + throw new Exception; + } + + return $this->failOnWarning; + } + + public function hasFilter(): bool + { + return $this->filter !== null; + } + + /** + * @throws Exception + */ + public function filter(): string + { + if ($this->filter === null) { + throw new Exception; + } + + return $this->filter; + } + + public function hasGenerateConfiguration(): bool + { + return $this->generateConfiguration !== null; + } + + /** + * @throws Exception + */ + public function generateConfiguration(): bool + { + if ($this->generateConfiguration === null) { + throw new Exception; + } + + return $this->generateConfiguration; + } + + public function hasMigrateConfiguration(): bool + { + return $this->migrateConfiguration !== null; + } + + /** + * @throws Exception + */ + public function migrateConfiguration(): bool + { + if ($this->migrateConfiguration === null) { + throw new Exception; + } + + return $this->migrateConfiguration; + } + + public function hasGroups(): bool + { + return $this->groups !== null; + } + + /** + * @throws Exception + */ + public function groups(): array + { + if ($this->groups === null) { + throw new Exception; + } + + return $this->groups; + } + + public function hasTestsCovering(): bool + { + return $this->testsCovering !== null; + } + + /** + * @throws Exception + */ + public function testsCovering(): array + { + if ($this->testsCovering === null) { + throw new Exception; + } + + return $this->testsCovering; + } + + public function hasTestsUsing(): bool + { + return $this->testsUsing !== null; + } + + /** + * @throws Exception + */ + public function testsUsing(): array + { + if ($this->testsUsing === null) { + throw new Exception; + } + + return $this->testsUsing; + } + + public function hasHelp(): bool + { + return $this->help !== null; + } + + /** + * @throws Exception + */ + public function help(): bool + { + if ($this->help === null) { + throw new Exception; + } + + return $this->help; + } + + public function hasIncludePath(): bool + { + return $this->includePath !== null; + } + + /** + * @throws Exception + */ + public function includePath(): string + { + if ($this->includePath === null) { + throw new Exception; + } + + return $this->includePath; + } + + public function hasIniSettings(): bool + { + return $this->iniSettings !== null; + } + + /** + * @throws Exception + */ + public function iniSettings(): array + { + if ($this->iniSettings === null) { + throw new Exception; + } + + return $this->iniSettings; + } + + public function hasJunitLogfile(): bool + { + return $this->junitLogfile !== null; + } + + /** + * @throws Exception + */ + public function junitLogfile(): string + { + if ($this->junitLogfile === null) { + throw new Exception; + } + + return $this->junitLogfile; + } + + public function hasListGroups(): bool + { + return $this->listGroups !== null; + } + + /** + * @throws Exception + */ + public function listGroups(): bool + { + if ($this->listGroups === null) { + throw new Exception; + } + + return $this->listGroups; + } + + public function hasListSuites(): bool + { + return $this->listSuites !== null; + } + + /** + * @throws Exception + */ + public function listSuites(): bool + { + if ($this->listSuites === null) { + throw new Exception; + } + + return $this->listSuites; + } + + public function hasListTests(): bool + { + return $this->listTests !== null; + } + + /** + * @throws Exception + */ + public function listTests(): bool + { + if ($this->listTests === null) { + throw new Exception; + } + + return $this->listTests; + } + + public function hasListTestsXml(): bool + { + return $this->listTestsXml !== null; + } + + /** + * @throws Exception + */ + public function listTestsXml(): string + { + if ($this->listTestsXml === null) { + throw new Exception; + } + + return $this->listTestsXml; + } + + public function hasLoader(): bool + { + return $this->loader !== null; + } + + /** + * @throws Exception + */ + public function loader(): string + { + if ($this->loader === null) { + throw new Exception; + } + + return $this->loader; + } + + public function hasNoCoverage(): bool + { + return $this->noCoverage !== null; + } + + /** + * @throws Exception + */ + public function noCoverage(): bool + { + if ($this->noCoverage === null) { + throw new Exception; + } + + return $this->noCoverage; + } + + public function hasNoExtensions(): bool + { + return $this->noExtensions !== null; + } + + /** + * @throws Exception + */ + public function noExtensions(): bool + { + if ($this->noExtensions === null) { + throw new Exception; + } + + return $this->noExtensions; + } + + public function hasExtensions(): bool + { + return $this->extensions !== null; + } + + /** + * @throws Exception + */ + public function extensions(): array + { + if ($this->extensions === null) { + throw new Exception; + } + + return $this->extensions; + } + + public function hasUnavailableExtensions(): bool + { + return $this->unavailableExtensions !== null; + } + + /** + * @throws Exception + */ + public function unavailableExtensions(): array + { + if ($this->unavailableExtensions === null) { + throw new Exception; + } + + return $this->unavailableExtensions; + } + + public function hasNoInteraction(): bool + { + return $this->noInteraction !== null; + } + + /** + * @throws Exception + */ + public function noInteraction(): bool + { + if ($this->noInteraction === null) { + throw new Exception; + } + + return $this->noInteraction; + } + + public function hasNoLogging(): bool + { + return $this->noLogging !== null; + } + + /** + * @throws Exception + */ + public function noLogging(): bool + { + if ($this->noLogging === null) { + throw new Exception; + } + + return $this->noLogging; + } + + public function hasPrinter(): bool + { + return $this->printer !== null; + } + + /** + * @throws Exception + */ + public function printer(): string + { + if ($this->printer === null) { + throw new Exception; + } + + return $this->printer; + } + + public function hasProcessIsolation(): bool + { + return $this->processIsolation !== null; + } + + /** + * @throws Exception + */ + public function processIsolation(): bool + { + if ($this->processIsolation === null) { + throw new Exception; + } + + return $this->processIsolation; + } + + public function hasRandomOrderSeed(): bool + { + return $this->randomOrderSeed !== null; + } + + /** + * @throws Exception + */ + public function randomOrderSeed(): int + { + if ($this->randomOrderSeed === null) { + throw new Exception; + } + + return $this->randomOrderSeed; + } + + public function hasRepeat(): bool + { + return $this->repeat !== null; + } + + /** + * @throws Exception + */ + public function repeat(): int + { + if ($this->repeat === null) { + throw new Exception; + } + + return $this->repeat; + } + + public function hasReportUselessTests(): bool + { + return $this->reportUselessTests !== null; + } + + /** + * @throws Exception + */ + public function reportUselessTests(): bool + { + if ($this->reportUselessTests === null) { + throw new Exception; + } + + return $this->reportUselessTests; + } + + public function hasResolveDependencies(): bool + { + return $this->resolveDependencies !== null; + } + + /** + * @throws Exception + */ + public function resolveDependencies(): bool + { + if ($this->resolveDependencies === null) { + throw new Exception; + } + + return $this->resolveDependencies; + } + + public function hasReverseList(): bool + { + return $this->reverseList !== null; + } + + /** + * @throws Exception + */ + public function reverseList(): bool + { + if ($this->reverseList === null) { + throw new Exception; + } + + return $this->reverseList; + } + + public function hasStderr(): bool + { + return $this->stderr !== null; + } + + /** + * @throws Exception + */ + public function stderr(): bool + { + if ($this->stderr === null) { + throw new Exception; + } + + return $this->stderr; + } + + public function hasStrictCoverage(): bool + { + return $this->strictCoverage !== null; + } + + /** + * @throws Exception + */ + public function strictCoverage(): bool + { + if ($this->strictCoverage === null) { + throw new Exception; + } + + return $this->strictCoverage; + } + + public function hasStopOnDefect(): bool + { + return $this->stopOnDefect !== null; + } + + /** + * @throws Exception + */ + public function stopOnDefect(): bool + { + if ($this->stopOnDefect === null) { + throw new Exception; + } + + return $this->stopOnDefect; + } + + public function hasStopOnError(): bool + { + return $this->stopOnError !== null; + } + + /** + * @throws Exception + */ + public function stopOnError(): bool + { + if ($this->stopOnError === null) { + throw new Exception; + } + + return $this->stopOnError; + } + + public function hasStopOnFailure(): bool + { + return $this->stopOnFailure !== null; + } + + /** + * @throws Exception + */ + public function stopOnFailure(): bool + { + if ($this->stopOnFailure === null) { + throw new Exception; + } + + return $this->stopOnFailure; + } + + public function hasStopOnIncomplete(): bool + { + return $this->stopOnIncomplete !== null; + } + + /** + * @throws Exception + */ + public function stopOnIncomplete(): bool + { + if ($this->stopOnIncomplete === null) { + throw new Exception; + } + + return $this->stopOnIncomplete; + } + + public function hasStopOnRisky(): bool + { + return $this->stopOnRisky !== null; + } + + /** + * @throws Exception + */ + public function stopOnRisky(): bool + { + if ($this->stopOnRisky === null) { + throw new Exception; + } + + return $this->stopOnRisky; + } + + public function hasStopOnSkipped(): bool + { + return $this->stopOnSkipped !== null; + } + + /** + * @throws Exception + */ + public function stopOnSkipped(): bool + { + if ($this->stopOnSkipped === null) { + throw new Exception; + } + + return $this->stopOnSkipped; + } + + public function hasStopOnWarning(): bool + { + return $this->stopOnWarning !== null; + } + + /** + * @throws Exception + */ + public function stopOnWarning(): bool + { + if ($this->stopOnWarning === null) { + throw new Exception; + } + + return $this->stopOnWarning; + } + + public function hasTeamcityLogfile(): bool + { + return $this->teamcityLogfile !== null; + } + + /** + * @throws Exception + */ + public function teamcityLogfile(): string + { + if ($this->teamcityLogfile === null) { + throw new Exception; + } + + return $this->teamcityLogfile; + } + + public function hasTestdoxExcludeGroups(): bool + { + return $this->testdoxExcludeGroups !== null; + } + + /** + * @throws Exception + */ + public function testdoxExcludeGroups(): array + { + if ($this->testdoxExcludeGroups === null) { + throw new Exception; + } + + return $this->testdoxExcludeGroups; + } + + public function hasTestdoxGroups(): bool + { + return $this->testdoxGroups !== null; + } + + /** + * @throws Exception + */ + public function testdoxGroups(): array + { + if ($this->testdoxGroups === null) { + throw new Exception; + } + + return $this->testdoxGroups; + } + + public function hasTestdoxHtmlFile(): bool + { + return $this->testdoxHtmlFile !== null; + } + + /** + * @throws Exception + */ + public function testdoxHtmlFile(): string + { + if ($this->testdoxHtmlFile === null) { + throw new Exception; + } + + return $this->testdoxHtmlFile; + } + + public function hasTestdoxTextFile(): bool + { + return $this->testdoxTextFile !== null; + } + + /** + * @throws Exception + */ + public function testdoxTextFile(): string + { + if ($this->testdoxTextFile === null) { + throw new Exception; + } + + return $this->testdoxTextFile; + } + + public function hasTestdoxXmlFile(): bool + { + return $this->testdoxXmlFile !== null; + } + + /** + * @throws Exception + */ + public function testdoxXmlFile(): string + { + if ($this->testdoxXmlFile === null) { + throw new Exception; + } + + return $this->testdoxXmlFile; + } + + public function hasTestSuffixes(): bool + { + return $this->testSuffixes !== null; + } + + /** + * @throws Exception + */ + public function testSuffixes(): array + { + if ($this->testSuffixes === null) { + throw new Exception; + } + + return $this->testSuffixes; + } + + public function hasTestSuite(): bool + { + return $this->testSuite !== null; + } + + /** + * @throws Exception + */ + public function testSuite(): string + { + if ($this->testSuite === null) { + throw new Exception; + } + + return $this->testSuite; + } + + public function unrecognizedOptions(): array + { + return $this->unrecognizedOptions; + } + + public function hasUnrecognizedOrderBy(): bool + { + return $this->unrecognizedOrderBy !== null; + } + + /** + * @throws Exception + */ + public function unrecognizedOrderBy(): string + { + if ($this->unrecognizedOrderBy === null) { + throw new Exception; + } + + return $this->unrecognizedOrderBy; + } + + public function hasUseDefaultConfiguration(): bool + { + return $this->useDefaultConfiguration !== null; + } + + /** + * @throws Exception + */ + public function useDefaultConfiguration(): bool + { + if ($this->useDefaultConfiguration === null) { + throw new Exception; + } + + return $this->useDefaultConfiguration; + } + + public function hasVerbose(): bool + { + return $this->verbose !== null; + } + + /** + * @throws Exception + */ + public function verbose(): bool + { + if ($this->verbose === null) { + throw new Exception; + } + + return $this->verbose; + } + + public function hasVersion(): bool + { + return $this->version !== null; + } + + /** + * @throws Exception + */ + public function version(): bool + { + if ($this->version === null) { + throw new Exception; + } + + return $this->version; + } + + public function hasXdebugFilterFile(): bool + { + return $this->xdebugFilterFile !== null; + } + + /** + * @throws Exception + */ + public function xdebugFilterFile(): string + { + if ($this->xdebugFilterFile === null) { + throw new Exception; + } + + return $this->xdebugFilterFile; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php new file mode 100644 index 000000000..dd5536eaa --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\CliArguments; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Exception extends RuntimeException implements \PHPUnit\Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php new file mode 100644 index 000000000..9ceb8ab47 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php @@ -0,0 +1,365 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\CliArguments; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Mapper +{ + /** + * @throws Exception + */ + public function mapToLegacyArray(Configuration $arguments): array + { + $result = [ + 'extensions' => [], + 'listGroups' => false, + 'listSuites' => false, + 'listTests' => false, + 'listTestsXml' => false, + 'loader' => null, + 'useDefaultConfiguration' => true, + 'loadedExtensions' => [], + 'unavailableExtensions' => [], + 'notLoadedExtensions' => [], + ]; + + if ($arguments->hasColors()) { + $result['colors'] = $arguments->colors(); + } + + if ($arguments->hasBootstrap()) { + $result['bootstrap'] = $arguments->bootstrap(); + } + + if ($arguments->hasCacheResult()) { + $result['cacheResult'] = $arguments->cacheResult(); + } + + if ($arguments->hasCacheResultFile()) { + $result['cacheResultFile'] = $arguments->cacheResultFile(); + } + + if ($arguments->hasColumns()) { + $result['columns'] = $arguments->columns(); + } + + if ($arguments->hasConfiguration()) { + $result['configuration'] = $arguments->configuration(); + } + + if ($arguments->hasCoverageCacheDirectory()) { + $result['coverageCacheDirectory'] = $arguments->coverageCacheDirectory(); + } + + if ($arguments->hasWarmCoverageCache()) { + $result['warmCoverageCache'] = $arguments->warmCoverageCache(); + } + + if ($arguments->hasCoverageClover()) { + $result['coverageClover'] = $arguments->coverageClover(); + } + + if ($arguments->hasCoverageCobertura()) { + $result['coverageCobertura'] = $arguments->coverageCobertura(); + } + + if ($arguments->hasCoverageCrap4J()) { + $result['coverageCrap4J'] = $arguments->coverageCrap4J(); + } + + if ($arguments->hasCoverageHtml()) { + $result['coverageHtml'] = $arguments->coverageHtml(); + } + + if ($arguments->hasCoveragePhp()) { + $result['coveragePHP'] = $arguments->coveragePhp(); + } + + if ($arguments->hasCoverageText()) { + $result['coverageText'] = $arguments->coverageText(); + } + + if ($arguments->hasCoverageTextShowUncoveredFiles()) { + $result['coverageTextShowUncoveredFiles'] = $arguments->hasCoverageTextShowUncoveredFiles(); + } + + if ($arguments->hasCoverageTextShowOnlySummary()) { + $result['coverageTextShowOnlySummary'] = $arguments->coverageTextShowOnlySummary(); + } + + if ($arguments->hasCoverageXml()) { + $result['coverageXml'] = $arguments->coverageXml(); + } + + if ($arguments->hasPathCoverage()) { + $result['pathCoverage'] = $arguments->pathCoverage(); + } + + if ($arguments->hasDebug()) { + $result['debug'] = $arguments->debug(); + } + + if ($arguments->hasHelp()) { + $result['help'] = $arguments->help(); + } + + if ($arguments->hasFilter()) { + $result['filter'] = $arguments->filter(); + } + + if ($arguments->hasTestSuite()) { + $result['testsuite'] = $arguments->testSuite(); + } + + if ($arguments->hasGroups()) { + $result['groups'] = $arguments->groups(); + } + + if ($arguments->hasExcludeGroups()) { + $result['excludeGroups'] = $arguments->excludeGroups(); + } + + if ($arguments->hasTestsCovering()) { + $result['testsCovering'] = $arguments->testsCovering(); + } + + if ($arguments->hasTestsUsing()) { + $result['testsUsing'] = $arguments->testsUsing(); + } + + if ($arguments->hasTestSuffixes()) { + $result['testSuffixes'] = $arguments->testSuffixes(); + } + + if ($arguments->hasIncludePath()) { + $result['includePath'] = $arguments->includePath(); + } + + if ($arguments->hasListGroups()) { + $result['listGroups'] = $arguments->listGroups(); + } + + if ($arguments->hasListSuites()) { + $result['listSuites'] = $arguments->listSuites(); + } + + if ($arguments->hasListTests()) { + $result['listTests'] = $arguments->listTests(); + } + + if ($arguments->hasListTestsXml()) { + $result['listTestsXml'] = $arguments->listTestsXml(); + } + + if ($arguments->hasPrinter()) { + $result['printer'] = $arguments->printer(); + } + + if ($arguments->hasLoader()) { + $result['loader'] = $arguments->loader(); + } + + if ($arguments->hasJunitLogfile()) { + $result['junitLogfile'] = $arguments->junitLogfile(); + } + + if ($arguments->hasTeamcityLogfile()) { + $result['teamcityLogfile'] = $arguments->teamcityLogfile(); + } + + if ($arguments->hasExecutionOrder()) { + $result['executionOrder'] = $arguments->executionOrder(); + } + + if ($arguments->hasExecutionOrderDefects()) { + $result['executionOrderDefects'] = $arguments->executionOrderDefects(); + } + + if ($arguments->hasExtensions()) { + $result['extensions'] = $arguments->extensions(); + } + + if ($arguments->hasUnavailableExtensions()) { + $result['unavailableExtensions'] = $arguments->unavailableExtensions(); + } + + if ($arguments->hasResolveDependencies()) { + $result['resolveDependencies'] = $arguments->resolveDependencies(); + } + + if ($arguments->hasProcessIsolation()) { + $result['processIsolation'] = $arguments->processIsolation(); + } + + if ($arguments->hasRepeat()) { + $result['repeat'] = $arguments->repeat(); + } + + if ($arguments->hasStderr()) { + $result['stderr'] = $arguments->stderr(); + } + + if ($arguments->hasStopOnDefect()) { + $result['stopOnDefect'] = $arguments->stopOnDefect(); + } + + if ($arguments->hasStopOnError()) { + $result['stopOnError'] = $arguments->stopOnError(); + } + + if ($arguments->hasStopOnFailure()) { + $result['stopOnFailure'] = $arguments->stopOnFailure(); + } + + if ($arguments->hasStopOnWarning()) { + $result['stopOnWarning'] = $arguments->stopOnWarning(); + } + + if ($arguments->hasStopOnIncomplete()) { + $result['stopOnIncomplete'] = $arguments->stopOnIncomplete(); + } + + if ($arguments->hasStopOnRisky()) { + $result['stopOnRisky'] = $arguments->stopOnRisky(); + } + + if ($arguments->hasStopOnSkipped()) { + $result['stopOnSkipped'] = $arguments->stopOnSkipped(); + } + + if ($arguments->hasFailOnEmptyTestSuite()) { + $result['failOnEmptyTestSuite'] = $arguments->failOnEmptyTestSuite(); + } + + if ($arguments->hasFailOnIncomplete()) { + $result['failOnIncomplete'] = $arguments->failOnIncomplete(); + } + + if ($arguments->hasFailOnRisky()) { + $result['failOnRisky'] = $arguments->failOnRisky(); + } + + if ($arguments->hasFailOnSkipped()) { + $result['failOnSkipped'] = $arguments->failOnSkipped(); + } + + if ($arguments->hasFailOnWarning()) { + $result['failOnWarning'] = $arguments->failOnWarning(); + } + + if ($arguments->hasTestdoxGroups()) { + $result['testdoxGroups'] = $arguments->testdoxGroups(); + } + + if ($arguments->hasTestdoxExcludeGroups()) { + $result['testdoxExcludeGroups'] = $arguments->testdoxExcludeGroups(); + } + + if ($arguments->hasTestdoxHtmlFile()) { + $result['testdoxHTMLFile'] = $arguments->testdoxHtmlFile(); + } + + if ($arguments->hasTestdoxTextFile()) { + $result['testdoxTextFile'] = $arguments->testdoxTextFile(); + } + + if ($arguments->hasTestdoxXmlFile()) { + $result['testdoxXMLFile'] = $arguments->testdoxXmlFile(); + } + + if ($arguments->hasUseDefaultConfiguration()) { + $result['useDefaultConfiguration'] = $arguments->useDefaultConfiguration(); + } + + if ($arguments->hasNoExtensions()) { + $result['noExtensions'] = $arguments->noExtensions(); + } + + if ($arguments->hasNoCoverage()) { + $result['noCoverage'] = $arguments->noCoverage(); + } + + if ($arguments->hasNoLogging()) { + $result['noLogging'] = $arguments->noLogging(); + } + + if ($arguments->hasNoInteraction()) { + $result['noInteraction'] = $arguments->noInteraction(); + } + + if ($arguments->hasBackupGlobals()) { + $result['backupGlobals'] = $arguments->backupGlobals(); + } + + if ($arguments->hasBackupStaticAttributes()) { + $result['backupStaticAttributes'] = $arguments->backupStaticAttributes(); + } + + if ($arguments->hasVerbose()) { + $result['verbose'] = $arguments->verbose(); + } + + if ($arguments->hasReportUselessTests()) { + $result['reportUselessTests'] = $arguments->reportUselessTests(); + } + + if ($arguments->hasStrictCoverage()) { + $result['strictCoverage'] = $arguments->strictCoverage(); + } + + if ($arguments->hasDisableCodeCoverageIgnore()) { + $result['disableCodeCoverageIgnore'] = $arguments->disableCodeCoverageIgnore(); + } + + if ($arguments->hasBeStrictAboutChangesToGlobalState()) { + $result['beStrictAboutChangesToGlobalState'] = $arguments->beStrictAboutChangesToGlobalState(); + } + + if ($arguments->hasDisallowTestOutput()) { + $result['disallowTestOutput'] = $arguments->disallowTestOutput(); + } + + if ($arguments->hasBeStrictAboutResourceUsageDuringSmallTests()) { + $result['beStrictAboutResourceUsageDuringSmallTests'] = $arguments->beStrictAboutResourceUsageDuringSmallTests(); + } + + if ($arguments->hasDefaultTimeLimit()) { + $result['defaultTimeLimit'] = $arguments->defaultTimeLimit(); + } + + if ($arguments->hasEnforceTimeLimit()) { + $result['enforceTimeLimit'] = $arguments->enforceTimeLimit(); + } + + if ($arguments->hasDisallowTodoAnnotatedTests()) { + $result['disallowTodoAnnotatedTests'] = $arguments->disallowTodoAnnotatedTests(); + } + + if ($arguments->hasReverseList()) { + $result['reverseList'] = $arguments->reverseList(); + } + + if ($arguments->hasCoverageFilter()) { + $result['coverageFilter'] = $arguments->coverageFilter(); + } + + if ($arguments->hasRandomOrderSeed()) { + $result['randomOrderSeed'] = $arguments->randomOrderSeed(); + } + + if ($arguments->hasXdebugFilterFile()) { + $result['xdebugFilterFile'] = $arguments->xdebugFilterFile(); + } + + return $result; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Command.php b/vendor/phpunit/phpunit/src/TextUI/Command.php index 4b8e5367c..7d766eb4b 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Command.php +++ b/vendor/phpunit/phpunit/src/TextUI/Command.php @@ -15,171 +15,68 @@ use const STDIN; use function array_keys; use function assert; use function class_exists; -use function explode; +use function copy; use function extension_loaded; use function fgets; -use function file_exists; use function file_get_contents; use function file_put_contents; +use function get_class; use function getcwd; use function ini_get; use function ini_set; +use function is_array; use function is_callable; use function is_dir; use function is_file; -use function is_numeric; use function is_string; use function printf; use function realpath; use function sort; use function sprintf; -use function str_replace; use function stream_resolve_include_path; -use function strrpos; -use function substr; +use function strpos; use function trim; use function version_compare; -use PharIo\Manifest\ApplicationName; -use PharIo\Manifest\Exception as ManifestException; -use PharIo\Manifest\ManifestLoader; -use PharIo\Version\Version as PharIoVersion; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestListener; use PHPUnit\Framework\TestSuite; +use PHPUnit\Runner\Extension\PharLoader; use PHPUnit\Runner\StandardTestSuiteLoader; use PHPUnit\Runner\TestSuiteLoader; -use PHPUnit\Runner\TestSuiteSorter; use PHPUnit\Runner\Version; -use PHPUnit\Util\Configuration; -use PHPUnit\Util\ConfigurationGenerator; +use PHPUnit\TextUI\CliArguments\Builder; +use PHPUnit\TextUI\CliArguments\Configuration; +use PHPUnit\TextUI\CliArguments\Exception as ArgumentsException; +use PHPUnit\TextUI\CliArguments\Mapper; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\FilterMapper; +use PHPUnit\TextUI\XmlConfiguration\Generator; +use PHPUnit\TextUI\XmlConfiguration\Loader; +use PHPUnit\TextUI\XmlConfiguration\Migrator; +use PHPUnit\TextUI\XmlConfiguration\PhpHandler; use PHPUnit\Util\FileLoader; use PHPUnit\Util\Filesystem; -use PHPUnit\Util\Getopt; -use PHPUnit\Util\Log\TeamCity; use PHPUnit\Util\Printer; -use PHPUnit\Util\TestDox\CliTestDoxPrinter; use PHPUnit\Util\TextTestListRenderer; +use PHPUnit\Util\Xml\SchemaDetector; use PHPUnit\Util\XmlTestListRenderer; use ReflectionClass; -use ReflectionException; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; +use SebastianBergmann\CodeCoverage\Filter; +use SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer; +use SebastianBergmann\Timer\Timer; use Throwable; /** - * A TestRunner for the Command Line Interface (CLI) - * PHP SAPI Module. + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ class Command { /** * @var array */ - protected $arguments = [ - 'listGroups' => false, - 'listSuites' => false, - 'listTests' => false, - 'listTestsXml' => false, - 'loader' => null, - 'useDefaultConfiguration' => true, - 'loadedExtensions' => [], - 'notLoadedExtensions' => [], - ]; + protected $arguments = []; /** * @var array */ - protected $options = []; - - /** - * @var array - */ - protected $longOptions = [ - 'atleast-version=' => null, - 'prepend=' => null, - 'bootstrap=' => null, - 'cache-result' => null, - 'do-not-cache-result' => null, - 'cache-result-file=' => null, - 'check-version' => null, - 'colors==' => null, - 'columns=' => null, - 'configuration=' => null, - 'coverage-clover=' => null, - 'coverage-crap4j=' => null, - 'coverage-html=' => null, - 'coverage-php=' => null, - 'coverage-text==' => null, - 'coverage-xml=' => null, - 'debug' => null, - 'disallow-test-output' => null, - 'disallow-resource-usage' => null, - 'disallow-todo-tests' => null, - 'default-time-limit=' => null, - 'enforce-time-limit' => null, - 'exclude-group=' => null, - 'filter=' => null, - 'generate-configuration' => null, - 'globals-backup' => null, - 'group=' => null, - 'help' => null, - 'resolve-dependencies' => null, - 'ignore-dependencies' => null, - 'include-path=' => null, - 'list-groups' => null, - 'list-suites' => null, - 'list-tests' => null, - 'list-tests-xml=' => null, - 'loader=' => null, - 'log-junit=' => null, - 'log-teamcity=' => null, - 'no-configuration' => null, - 'no-coverage' => null, - 'no-logging' => null, - 'no-interaction' => null, - 'no-extensions' => null, - 'order-by=' => null, - 'printer=' => null, - 'process-isolation' => null, - 'repeat=' => null, - 'dont-report-useless-tests' => null, - 'random-order' => null, - 'random-order-seed=' => null, - 'reverse-order' => null, - 'reverse-list' => null, - 'static-backup' => null, - 'stderr' => null, - 'stop-on-defect' => null, - 'stop-on-error' => null, - 'stop-on-failure' => null, - 'stop-on-warning' => null, - 'stop-on-incomplete' => null, - 'stop-on-risky' => null, - 'stop-on-skipped' => null, - 'fail-on-warning' => null, - 'fail-on-risky' => null, - 'strict-coverage' => null, - 'disable-coverage-ignore' => null, - 'strict-global-state' => null, - 'teamcity' => null, - 'testdox' => null, - 'testdox-group=' => null, - 'testdox-exclude-group=' => null, - 'testdox-html=' => null, - 'testdox-text=' => null, - 'testdox-xml=' => null, - 'test-suffix=' => null, - 'testsuite=' => null, - 'verbose' => null, - 'version' => null, - 'whitelist=' => null, - 'dump-xdebug-filter=' => null, - ]; - - /** - * @var @psalm-var list - */ - private $warnings = []; + protected $longOptions = []; /** * @var bool @@ -187,11 +84,24 @@ class Command private $versionStringPrinted = false; /** - * @throws \PHPUnit\Framework\Exception + * @psalm-var list + */ + private $warnings = []; + + /** + * @throws Exception */ public static function main(bool $exit = true): int { - return (new static)->run($_SERVER['argv'], $exit); + try { + return (new static)->run($_SERVER['argv'], $exit); + } catch (Throwable $t) { + throw new RuntimeException( + $t->getMessage(), + (int) $t->getCode(), + $t + ); + } } /** @@ -203,12 +113,11 @@ class Command $runner = $this->createRunner(); - if ($this->arguments['test'] instanceof Test) { + if ($this->arguments['test'] instanceof TestSuite) { $suite = $this->arguments['test']; } else { $suite = $runner->getTest( $this->arguments['test'], - $this->arguments['testFile'], $this->arguments['testSuffixes'] ); } @@ -232,9 +141,9 @@ class Command unset($this->arguments['test'], $this->arguments['testFile']); try { - $result = $runner->doRun($suite, $this->arguments, $this->warnings, $exit); - } catch (Exception $e) { - print $e->getMessage() . PHP_EOL; + $result = $runner->run($suite, $this->arguments, $this->warnings, $exit); + } catch (Throwable $t) { + print $t->getMessage() . PHP_EOL; } $return = TestRunner::FAILURE_EXIT; @@ -308,682 +217,199 @@ class Command protected function handleArguments(array $argv): void { try { - $this->options = Getopt::parse( - $argv, - 'd:c:hv', - array_keys($this->longOptions) - ); - } catch (Exception $t) { - $this->exitWithErrorMessage($t->getMessage()); + $arguments = (new Builder)->fromParameters($argv, array_keys($this->longOptions)); + } catch (ArgumentsException $e) { + $this->exitWithErrorMessage($e->getMessage()); } - foreach ($this->options[0] as $option) { - switch ($option[0]) { - case '--colors': - $this->arguments['colors'] = $option[1] ?: ResultPrinter::COLOR_AUTO; + assert(isset($arguments) && $arguments instanceof Configuration); - break; + if ($arguments->hasGenerateConfiguration() && $arguments->generateConfiguration()) { + $this->generateConfiguration(); + } - case '--bootstrap': - $this->arguments['bootstrap'] = $option[1]; + if ($arguments->hasAtLeastVersion()) { + if (version_compare(Version::id(), $arguments->atLeastVersion(), '>=')) { + exit(TestRunner::SUCCESS_EXIT); + } - break; + exit(TestRunner::FAILURE_EXIT); + } - case '--cache-result': - $this->arguments['cacheResult'] = true; + if ($arguments->hasVersion() && $arguments->version()) { + $this->printVersionString(); - break; + exit(TestRunner::SUCCESS_EXIT); + } - case '--do-not-cache-result': - $this->arguments['cacheResult'] = false; + if ($arguments->hasCheckVersion() && $arguments->checkVersion()) { + $this->handleVersionCheck(); + } - break; + if ($arguments->hasHelp()) { + $this->showHelp(); - case '--cache-result-file': - $this->arguments['cacheResultFile'] = $option[1]; + exit(TestRunner::SUCCESS_EXIT); + } - break; + if ($arguments->hasUnrecognizedOrderBy()) { + $this->exitWithErrorMessage( + sprintf( + 'unrecognized --order-by option: %s', + $arguments->unrecognizedOrderBy() + ) + ); + } - case '--columns': - if (is_numeric($option[1])) { - $this->arguments['columns'] = (int) $option[1]; - } elseif ($option[1] === 'max') { - $this->arguments['columns'] = 'max'; - } - - break; - - case 'c': - case '--configuration': - $this->arguments['configuration'] = $option[1]; - - break; - - case '--coverage-clover': - $this->arguments['coverageClover'] = $option[1]; - - break; - - case '--coverage-crap4j': - $this->arguments['coverageCrap4J'] = $option[1]; - - break; - - case '--coverage-html': - $this->arguments['coverageHtml'] = $option[1]; - - break; - - case '--coverage-php': - $this->arguments['coveragePHP'] = $option[1]; - - break; - - case '--coverage-text': - if ($option[1] === null) { - $option[1] = 'php://stdout'; - } - - $this->arguments['coverageText'] = $option[1]; - $this->arguments['coverageTextShowUncoveredFiles'] = false; - $this->arguments['coverageTextShowOnlySummary'] = false; - - break; - - case '--coverage-xml': - $this->arguments['coverageXml'] = $option[1]; - - break; - - case 'd': - $ini = explode('=', $option[1]); - - if (isset($ini[0])) { - if (isset($ini[1])) { - ini_set($ini[0], $ini[1]); - } else { - ini_set($ini[0], '1'); - } - } - - break; - - case '--debug': - $this->arguments['debug'] = true; - - break; - - case 'h': - case '--help': - $this->showHelp(); - - exit(TestRunner::SUCCESS_EXIT); - - break; - - case '--filter': - $this->arguments['filter'] = $option[1]; - - break; - - case '--testsuite': - $this->arguments['testsuite'] = $option[1]; - - break; - - case '--generate-configuration': - $this->printVersionString(); - - print 'Generating phpunit.xml in ' . getcwd() . PHP_EOL . PHP_EOL; - - print 'Bootstrap script (relative to path shown above; default: vendor/autoload.php): '; - $bootstrapScript = trim(fgets(STDIN)); - - print 'Tests directory (relative to path shown above; default: tests): '; - $testsDirectory = trim(fgets(STDIN)); - - print 'Source directory (relative to path shown above; default: src): '; - $src = trim(fgets(STDIN)); - - print 'Cache directory (relative to path shown above; default: .phpunit.cache): '; - $cacheDirectory = trim(fgets(STDIN)); - - if ($bootstrapScript === '') { - $bootstrapScript = 'vendor/autoload.php'; - } - - if ($testsDirectory === '') { - $testsDirectory = 'tests'; - } - - if ($src === '') { - $src = 'src'; - } - - if ($cacheDirectory === '') { - $cacheDirectory = '.phpunit.cache'; - } - - $generator = new ConfigurationGenerator; - - file_put_contents( - 'phpunit.xml', - $generator->generateDefaultConfiguration( - Version::series(), - $bootstrapScript, - $testsDirectory, - $src, - $cacheDirectory - ) - ); - - print PHP_EOL . 'Generated phpunit.xml in ' . getcwd() . PHP_EOL; - print 'Make sure to exclude the ' . $cacheDirectory . ' directory from version control.' . PHP_EOL; - - exit(TestRunner::SUCCESS_EXIT); - - break; - - case '--group': - $this->arguments['groups'] = explode(',', $option[1]); - - break; - - case '--exclude-group': - $this->arguments['excludeGroups'] = explode( - ',', - $option[1] - ); - - break; - - case '--test-suffix': - $this->arguments['testSuffixes'] = explode( - ',', - $option[1] - ); - - break; - - case '--include-path': - $includePath = $option[1]; - - break; - - case '--list-groups': - $this->arguments['listGroups'] = true; - - break; - - case '--list-suites': - $this->arguments['listSuites'] = true; - - break; - - case '--list-tests': - $this->arguments['listTests'] = true; - - break; - - case '--list-tests-xml': - $this->arguments['listTestsXml'] = $option[1]; - - break; - - case '--printer': - $this->arguments['printer'] = $option[1]; - - break; - - case '--loader': - $this->arguments['loader'] = $option[1]; - - break; - - case '--log-junit': - $this->arguments['junitLogfile'] = $option[1]; - - break; - - case '--log-teamcity': - $this->arguments['teamcityLogfile'] = $option[1]; - - break; - - case '--order-by': - $this->handleOrderByOption($option[1]); - - break; - - case '--process-isolation': - $this->arguments['processIsolation'] = true; - - break; - - case '--repeat': - $this->arguments['repeat'] = (int) $option[1]; - - break; - - case '--stderr': - $this->arguments['stderr'] = true; - - break; - - case '--stop-on-defect': - $this->arguments['stopOnDefect'] = true; - - break; - - case '--stop-on-error': - $this->arguments['stopOnError'] = true; - - break; - - case '--stop-on-failure': - $this->arguments['stopOnFailure'] = true; - - break; - - case '--stop-on-warning': - $this->arguments['stopOnWarning'] = true; - - break; - - case '--stop-on-incomplete': - $this->arguments['stopOnIncomplete'] = true; - - break; - - case '--stop-on-risky': - $this->arguments['stopOnRisky'] = true; - - break; - - case '--stop-on-skipped': - $this->arguments['stopOnSkipped'] = true; - - break; - - case '--fail-on-warning': - $this->arguments['failOnWarning'] = true; - - break; - - case '--fail-on-risky': - $this->arguments['failOnRisky'] = true; - - break; - - case '--teamcity': - $this->arguments['printer'] = TeamCity::class; - - break; - - case '--testdox': - $this->arguments['printer'] = CliTestDoxPrinter::class; - - break; - - case '--testdox-group': - $this->arguments['testdoxGroups'] = explode( - ',', - $option[1] - ); - - break; - - case '--testdox-exclude-group': - $this->arguments['testdoxExcludeGroups'] = explode( - ',', - $option[1] - ); - - break; - - case '--testdox-html': - $this->arguments['testdoxHTMLFile'] = $option[1]; - - break; - - case '--testdox-text': - $this->arguments['testdoxTextFile'] = $option[1]; - - break; - - case '--testdox-xml': - $this->arguments['testdoxXMLFile'] = $option[1]; - - break; - - case '--no-configuration': - $this->arguments['useDefaultConfiguration'] = false; - - break; - - case '--no-extensions': - $this->arguments['noExtensions'] = true; - - break; - - case '--no-coverage': - $this->arguments['noCoverage'] = true; - - break; - - case '--no-logging': - $this->arguments['noLogging'] = true; - - break; - - case '--no-interaction': - $this->arguments['noInteraction'] = true; - - break; - - case '--globals-backup': - $this->arguments['backupGlobals'] = true; - - break; - - case '--static-backup': - $this->arguments['backupStaticAttributes'] = true; - - break; - - case 'v': - case '--verbose': - $this->arguments['verbose'] = true; - - break; - - case '--atleast-version': - if (version_compare(Version::id(), $option[1], '>=')) { - exit(TestRunner::SUCCESS_EXIT); - } - - exit(TestRunner::FAILURE_EXIT); - - break; - - case '--version': - $this->printVersionString(); - - exit(TestRunner::SUCCESS_EXIT); - - break; - - case '--dont-report-useless-tests': - $this->arguments['reportUselessTests'] = false; - - break; - - case '--strict-coverage': - $this->arguments['strictCoverage'] = true; - - break; - - case '--disable-coverage-ignore': - $this->arguments['disableCodeCoverageIgnore'] = true; - - break; - - case '--strict-global-state': - $this->arguments['beStrictAboutChangesToGlobalState'] = true; - - break; - - case '--disallow-test-output': - $this->arguments['disallowTestOutput'] = true; - - break; - - case '--disallow-resource-usage': - $this->arguments['beStrictAboutResourceUsageDuringSmallTests'] = true; - - break; - - case '--default-time-limit': - $this->arguments['defaultTimeLimit'] = (int) $option[1]; - - break; - - case '--enforce-time-limit': - $this->arguments['enforceTimeLimit'] = true; - - break; - - case '--disallow-todo-tests': - $this->arguments['disallowTodoAnnotatedTests'] = true; - - break; - - case '--reverse-list': - $this->arguments['reverseList'] = true; - - break; - - case '--check-version': - $this->handleVersionCheck(); - - break; - - case '--whitelist': - $this->arguments['whitelist'] = $option[1]; - - break; - - case '--random-order': - $this->handleOrderByOption('random'); - - break; - - case '--random-order-seed': - $this->arguments['randomOrderSeed'] = (int) $option[1]; - - break; - - case '--resolve-dependencies': - $this->handleOrderByOption('depends'); - - break; - - case '--ignore-dependencies': - $this->handleOrderByOption('no-depends'); - - break; - - case '--reverse-order': - $this->handleOrderByOption('reverse'); - - break; - - case '--dump-xdebug-filter': - $this->arguments['xdebugFilterFile'] = $option[1]; - - break; - - default: - $optionName = str_replace('--', '', $option[0]); - - $handler = null; - - if (isset($this->longOptions[$optionName])) { - $handler = $this->longOptions[$optionName]; - } elseif (isset($this->longOptions[$optionName . '='])) { - $handler = $this->longOptions[$optionName . '=']; - } - - if (isset($handler) && is_callable([$this, $handler])) { - $this->{$handler}($option[1]); - } + if ($arguments->hasIniSettings()) { + foreach ($arguments->iniSettings() as $name => $value) { + ini_set($name, $value); } } + if ($arguments->hasIncludePath()) { + ini_set( + 'include_path', + $arguments->includePath() . PATH_SEPARATOR . ini_get('include_path') + ); + } + + $this->arguments = (new Mapper)->mapToLegacyArray($arguments); + + $this->handleCustomOptions($arguments->unrecognizedOptions()); $this->handleCustomTestSuite(); if (!isset($this->arguments['testSuffixes'])) { $this->arguments['testSuffixes'] = ['Test.php', '.phpt']; } - if (isset($this->options[1][0]) && - substr($this->options[1][0], -5, 5) !== '.phpt' && - substr($this->options[1][0], -4, 4) !== '.php' && - substr($this->options[1][0], -1, 1) !== '/' && - !is_dir($this->options[1][0])) { - $this->warnings[] = 'Invocation with class name is deprecated'; - } + if (!isset($this->arguments['test']) && $arguments->hasArgument()) { + $this->arguments['test'] = realpath($arguments->argument()); - if (!isset($this->arguments['test'])) { - if (isset($this->options[1][0])) { - $this->arguments['test'] = $this->options[1][0]; + if ($this->arguments['test'] === false) { + $this->exitWithErrorMessage( + sprintf( + 'Cannot open file "%s".', + $arguments->argument() + ) + ); } - - if (isset($this->options[1][1])) { - $testFile = realpath($this->options[1][1]); - - if ($testFile === false) { - $this->exitWithErrorMessage( - sprintf( - 'Cannot open file "%s".', - $this->options[1][1] - ) - ); - } - $this->arguments['testFile'] = $testFile; - } else { - $this->arguments['testFile'] = ''; - } - - if (isset($this->arguments['test']) && - is_file($this->arguments['test']) && - strrpos($this->arguments['test'], '.') !== false && - substr($this->arguments['test'], -5, 5) !== '.phpt') { - $this->arguments['testFile'] = realpath($this->arguments['test']); - $this->arguments['test'] = substr($this->arguments['test'], 0, strrpos($this->arguments['test'], '.')); - } - - if (isset($this->arguments['test']) && - is_string($this->arguments['test']) && - substr($this->arguments['test'], -5, 5) === '.phpt') { - $suite = new TestSuite; - $suite->addTestFile($this->arguments['test']); - $this->arguments['test'] = $suite; - } - } - - if (isset($includePath)) { - ini_set( - 'include_path', - $includePath . PATH_SEPARATOR . ini_get('include_path') - ); } if ($this->arguments['loader'] !== null) { $this->arguments['loader'] = $this->handleLoader($this->arguments['loader']); } - if (isset($this->arguments['configuration']) && - is_dir($this->arguments['configuration'])) { - $configurationFile = $this->arguments['configuration'] . '/phpunit.xml'; + if (isset($this->arguments['configuration'])) { + if (is_dir($this->arguments['configuration'])) { + $candidate = $this->configurationFileInDirectory($this->arguments['configuration']); - if (file_exists($configurationFile)) { - $this->arguments['configuration'] = realpath( - $configurationFile - ); - } elseif (file_exists($configurationFile . '.dist')) { - $this->arguments['configuration'] = realpath( - $configurationFile . '.dist' - ); + if ($candidate !== null) { + $this->arguments['configuration'] = $candidate; + } } - } elseif (!isset($this->arguments['configuration']) && - $this->arguments['useDefaultConfiguration']) { - if (file_exists('phpunit.xml')) { - $this->arguments['configuration'] = realpath('phpunit.xml'); - } elseif (file_exists('phpunit.xml.dist')) { - $this->arguments['configuration'] = realpath( - 'phpunit.xml.dist' - ); + } elseif ($this->arguments['useDefaultConfiguration']) { + $candidate = $this->configurationFileInDirectory(getcwd()); + + if ($candidate !== null) { + $this->arguments['configuration'] = $candidate; } } + if ($arguments->hasMigrateConfiguration() && $arguments->migrateConfiguration()) { + if (!isset($this->arguments['configuration'])) { + print 'No configuration file found to migrate.' . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); + } + + $this->migrateConfiguration(realpath($this->arguments['configuration'])); + } + if (isset($this->arguments['configuration'])) { try { - $configuration = Configuration::getInstance( - $this->arguments['configuration'] - ); - } catch (Throwable $t) { - print $t->getMessage() . PHP_EOL; + $this->arguments['configurationObject'] = (new Loader)->load($this->arguments['configuration']); + } catch (Throwable $e) { + print $e->getMessage() . PHP_EOL; exit(TestRunner::FAILURE_EXIT); } - $phpunitConfiguration = $configuration->getPHPUnitConfiguration(); + $phpunitConfiguration = $this->arguments['configurationObject']->phpunit(); - $configuration->handlePHPConfiguration(); + (new PhpHandler)->handle($this->arguments['configurationObject']->php()); - /* - * Issue #1216 - */ if (isset($this->arguments['bootstrap'])) { $this->handleBootstrap($this->arguments['bootstrap']); - } elseif (isset($phpunitConfiguration['bootstrap'])) { - $this->handleBootstrap($phpunitConfiguration['bootstrap']); + } elseif ($phpunitConfiguration->hasBootstrap()) { + $this->handleBootstrap($phpunitConfiguration->bootstrap()); } - /* - * Issue #657 - */ - if (isset($phpunitConfiguration['stderr']) && !isset($this->arguments['stderr'])) { - $this->arguments['stderr'] = $phpunitConfiguration['stderr']; + if (!isset($this->arguments['stderr'])) { + $this->arguments['stderr'] = $phpunitConfiguration->stderr(); } - if (isset($phpunitConfiguration['extensionsDirectory']) && !isset($this->arguments['noExtensions']) && extension_loaded('phar')) { - $this->handleExtensions($phpunitConfiguration['extensionsDirectory']); + if (!isset($this->arguments['noExtensions']) && $phpunitConfiguration->hasExtensionsDirectory() && extension_loaded('phar')) { + $result = (new PharLoader)->loadPharExtensionsInDirectory($phpunitConfiguration->extensionsDirectory()); + + $this->arguments['loadedExtensions'] = $result['loadedExtensions']; + $this->arguments['notLoadedExtensions'] = $result['notLoadedExtensions']; + + unset($result); } - if (isset($phpunitConfiguration['columns']) && !isset($this->arguments['columns'])) { - $this->arguments['columns'] = $phpunitConfiguration['columns']; + if (!isset($this->arguments['columns'])) { + $this->arguments['columns'] = $phpunitConfiguration->columns(); } - if (!isset($this->arguments['printer']) && isset($phpunitConfiguration['printerClass'])) { - $file = $phpunitConfiguration['printerFile'] ?? ''; + if (!isset($this->arguments['printer']) && $phpunitConfiguration->hasPrinterClass()) { + $file = $phpunitConfiguration->hasPrinterFile() ? $phpunitConfiguration->printerFile() : ''; $this->arguments['printer'] = $this->handlePrinter( - $phpunitConfiguration['printerClass'], + $phpunitConfiguration->printerClass(), $file ); } - if (isset($phpunitConfiguration['testSuiteLoaderClass'])) { - $file = $phpunitConfiguration['testSuiteLoaderFile'] ?? ''; + if ($phpunitConfiguration->hasTestSuiteLoaderClass()) { + $file = $phpunitConfiguration->hasTestSuiteLoaderFile() ? $phpunitConfiguration->testSuiteLoaderFile() : ''; $this->arguments['loader'] = $this->handleLoader( - $phpunitConfiguration['testSuiteLoaderClass'], + $phpunitConfiguration->testSuiteLoaderClass(), $file ); } - if (!isset($this->arguments['testsuite']) && isset($phpunitConfiguration['defaultTestSuite'])) { - $this->arguments['testsuite'] = $phpunitConfiguration['defaultTestSuite']; + if (!isset($this->arguments['testsuite']) && $phpunitConfiguration->hasDefaultTestSuite()) { + $this->arguments['testsuite'] = $phpunitConfiguration->defaultTestSuite(); } if (!isset($this->arguments['test'])) { - $testSuite = $configuration->getTestSuiteConfiguration($this->arguments['testsuite'] ?? ''); + try { + $this->arguments['test'] = (new TestSuiteMapper)->map( + $this->arguments['configurationObject']->testSuite(), + $this->arguments['testsuite'] ?? '' + ); + } catch (Exception $e) { + $this->printVersionString(); - if ($testSuite !== null) { - $this->arguments['test'] = $testSuite; + print $e->getMessage() . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); } } } elseif (isset($this->arguments['bootstrap'])) { $this->handleBootstrap($this->arguments['bootstrap']); } - if (isset($this->arguments['printer']) && - is_string($this->arguments['printer'])) { + if (isset($this->arguments['printer']) && is_string($this->arguments['printer'])) { $this->arguments['printer'] = $this->handlePrinter($this->arguments['printer']); } + if (isset($this->arguments['configurationObject'], $this->arguments['warmCoverageCache'])) { + $this->handleWarmCoverageCache($this->arguments['configurationObject']); + } + if (!isset($this->arguments['test'])) { $this->showHelp(); @@ -993,9 +419,13 @@ class Command /** * Handles the loading of the PHPUnit\Runner\TestSuiteLoader implementation. + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 */ protected function handleLoader(string $loaderClass, string $loaderFile = ''): ?TestSuiteLoader { + $this->warnings[] = 'Using a custom test suite loader is deprecated'; + if (!class_exists($loaderClass, false)) { if ($loaderFile == '') { $loaderFile = Filesystem::classNameToFilename( @@ -1006,6 +436,11 @@ class Command $loaderFile = stream_resolve_include_path($loaderFile); if ($loaderFile) { + /** + * @noinspection PhpIncludeInspection + * + * @psalm-suppress UnresolvableInclude + */ require $loaderFile; } } @@ -1014,10 +449,10 @@ class Command try { $class = new ReflectionClass($loaderClass); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -1054,7 +489,7 @@ class Command protected function handlePrinter(string $printerClass, string $printerFile = '') { if (!class_exists($printerClass, false)) { - if ($printerFile == '') { + if ($printerFile === '') { $printerFile = Filesystem::classNameToFilename( $printerClass ); @@ -1063,6 +498,11 @@ class Command $printerFile = stream_resolve_include_path($printerFile); if ($printerFile) { + /** + * @noinspection PhpIncludeInspection + * + * @psalm-suppress UnresolvableInclude + */ require $printerFile; } } @@ -1079,31 +519,21 @@ class Command try { $class = new ReflectionClass($printerClass); // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( + } catch (\ReflectionException $e) { + throw new ReflectionException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); // @codeCoverageIgnoreEnd } - if (!$class->implementsInterface(TestListener::class)) { + if (!$class->implementsInterface(ResultPrinter::class)) { $this->exitWithErrorMessage( sprintf( 'Could not use "%s" as printer: class does not implement %s', $printerClass, - TestListener::class - ) - ); - } - - if (!$class->isSubclassOf(Printer::class)) { - $this->exitWithErrorMessage( - sprintf( - 'Could not use "%s" as printer: class does not extend %s', - $printerClass, - Printer::class + ResultPrinter::class ) ); } @@ -1133,8 +563,21 @@ class Command { try { FileLoader::checkAndLoad($filename); - } catch (Exception $e) { - $this->exitWithErrorMessage($e->getMessage()); + } catch (Throwable $t) { + if ($t instanceof \PHPUnit\Exception) { + $this->exitWithErrorMessage($t->getMessage()); + } + + $this->exitWithErrorMessage( + sprintf( + 'Error in bootstrap script: %s:%s%s%s%s', + get_class($t), + PHP_EOL, + $t->getMessage(), + PHP_EOL, + $t->getTraceAsString() + ) + ); } } @@ -1194,43 +637,6 @@ class Command exit(TestRunner::FAILURE_EXIT); } - private function handleExtensions(string $directory): void - { - foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) { - if (!file_exists('phar://' . $file . '/manifest.xml')) { - $this->arguments['notLoadedExtensions'][] = $file . ' is not an extension for PHPUnit'; - - continue; - } - - try { - $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion(Version::series()); - $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); - - if (!$manifest->isExtensionFor($applicationName)) { - $this->arguments['notLoadedExtensions'][] = $file . ' is not an extension for PHPUnit'; - - continue; - } - - if (!$manifest->isExtensionFor($applicationName, $version)) { - $this->arguments['notLoadedExtensions'][] = $file . ' is not compatible with this version of PHPUnit'; - - continue; - } - } catch (ManifestException $e) { - $this->arguments['notLoadedExtensions'][] = $file . ': ' . $e->getMessage(); - - continue; - } - - require $file; - - $this->arguments['loadedExtensions'][] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString(); - } - } - private function handleListGroups(TestSuite $suite, bool $exit): int { $this->printVersionString(); @@ -1251,6 +657,10 @@ class Command sort($groups); foreach ($groups as $group) { + if (strpos($group, '__phpunit_') === 0) { + continue; + } + printf( ' - %s' . PHP_EOL, $group @@ -1266,6 +676,7 @@ class Command /** * @throws \PHPUnit\Framework\Exception + * @throws \PHPUnit\TextUI\XmlConfiguration\Exception */ private function handleListSuites(bool $exit): int { @@ -1283,14 +694,10 @@ class Command print 'Available test suite(s):' . PHP_EOL; - $configuration = Configuration::getInstance( - $this->arguments['configuration'] - ); - - foreach ($configuration->getTestSuiteNames() as $suiteName) { + foreach ($this->arguments['configurationObject']->testSuite() as $testSuite) { printf( ' - %s' . PHP_EOL, - $suiteName + $testSuite->name() ); } @@ -1362,58 +769,183 @@ class Command return TestRunner::SUCCESS_EXIT; } - private function handleOrderByOption(string $value): void + private function generateConfiguration(): void { - foreach (explode(',', $value) as $order) { - switch ($order) { - case 'default': - $this->arguments['executionOrder'] = TestSuiteSorter::ORDER_DEFAULT; - $this->arguments['executionOrderDefects'] = TestSuiteSorter::ORDER_DEFAULT; - $this->arguments['resolveDependencies'] = true; + $this->printVersionString(); - break; + print 'Generating phpunit.xml in ' . getcwd() . PHP_EOL . PHP_EOL; + print 'Bootstrap script (relative to path shown above; default: vendor/autoload.php): '; - case 'defects': - $this->arguments['executionOrderDefects'] = TestSuiteSorter::ORDER_DEFECTS_FIRST; + $bootstrapScript = trim(fgets(STDIN)); - break; + print 'Tests directory (relative to path shown above; default: tests): '; - case 'depends': - $this->arguments['resolveDependencies'] = true; + $testsDirectory = trim(fgets(STDIN)); - break; + print 'Source directory (relative to path shown above; default: src): '; - case 'duration': - $this->arguments['executionOrder'] = TestSuiteSorter::ORDER_DURATION; + $src = trim(fgets(STDIN)); - break; + print 'Cache directory (relative to path shown above; default: .phpunit.cache): '; - case 'no-depends': - $this->arguments['resolveDependencies'] = false; + $cacheDirectory = trim(fgets(STDIN)); - break; + if ($bootstrapScript === '') { + $bootstrapScript = 'vendor/autoload.php'; + } - case 'random': - $this->arguments['executionOrder'] = TestSuiteSorter::ORDER_RANDOMIZED; + if ($testsDirectory === '') { + $testsDirectory = 'tests'; + } - break; + if ($src === '') { + $src = 'src'; + } - case 'reverse': - $this->arguments['executionOrder'] = TestSuiteSorter::ORDER_REVERSED; + if ($cacheDirectory === '') { + $cacheDirectory = '.phpunit.cache'; + } - break; + $generator = new Generator; - case 'size': - $this->arguments['executionOrder'] = TestSuiteSorter::ORDER_SIZE; + file_put_contents( + 'phpunit.xml', + $generator->generateDefaultConfiguration( + Version::series(), + $bootstrapScript, + $testsDirectory, + $src, + $cacheDirectory + ) + ); - break; + print PHP_EOL . 'Generated phpunit.xml in ' . getcwd() . '.' . PHP_EOL; + print 'Make sure to exclude the ' . $cacheDirectory . ' directory from version control.' . PHP_EOL; - default: - $this->exitWithErrorMessage("unrecognized --order-by option: {$order}"); + exit(TestRunner::SUCCESS_EXIT); + } + + private function migrateConfiguration(string $filename): void + { + $this->printVersionString(); + + if (!(new SchemaDetector)->detect($filename)->detected()) { + print $filename . ' does not need to be migrated.' . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); + } + + copy($filename, $filename . '.bak'); + + print 'Created backup: ' . $filename . '.bak' . PHP_EOL; + + try { + file_put_contents( + $filename, + (new Migrator)->migrate($filename) + ); + + print 'Migrated configuration: ' . $filename . PHP_EOL; + } catch (Throwable $t) { + print 'Migration failed: ' . $t->getMessage() . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); + } + + exit(TestRunner::SUCCESS_EXIT); + } + + private function handleCustomOptions(array $unrecognizedOptions): void + { + foreach ($unrecognizedOptions as $name => $value) { + if (isset($this->longOptions[$name])) { + $handler = $this->longOptions[$name]; + } + + $name .= '='; + + if (isset($this->longOptions[$name])) { + $handler = $this->longOptions[$name]; + } + + if (isset($handler) && is_callable([$this, $handler])) { + $this->{$handler}($value); + + unset($handler); } } } + private function handleWarmCoverageCache(XmlConfiguration\Configuration $configuration): void + { + $this->printVersionString(); + + if (isset($this->arguments['coverageCacheDirectory'])) { + $cacheDirectory = $this->arguments['coverageCacheDirectory']; + } elseif ($configuration->codeCoverage()->hasCacheDirectory()) { + $cacheDirectory = $configuration->codeCoverage()->cacheDirectory()->path(); + } else { + print 'Cache for static analysis has not been configured' . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); + } + + $filter = new Filter; + + if ($configuration->codeCoverage()->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) { + (new FilterMapper)->map( + $filter, + $configuration->codeCoverage() + ); + } elseif (isset($this->arguments['coverageFilter'])) { + if (!is_array($this->arguments['coverageFilter'])) { + $coverageFilterDirectories = [$this->arguments['coverageFilter']]; + } else { + $coverageFilterDirectories = $this->arguments['coverageFilter']; + } + + foreach ($coverageFilterDirectories as $coverageFilterDirectory) { + $filter->includeDirectory($coverageFilterDirectory); + } + } else { + print 'Filter for code coverage has not been configured' . PHP_EOL; + + exit(TestRunner::EXCEPTION_EXIT); + } + + $timer = new Timer; + $timer->start(); + + print 'Warming cache for static analysis ... '; + + (new CacheWarmer)->warmCache( + $cacheDirectory, + !$configuration->codeCoverage()->disableCodeCoverageIgnore(), + $configuration->codeCoverage()->ignoreDeprecatedCodeUnits(), + $filter + ); + + print 'done [' . $timer->stop()->asString() . ']' . PHP_EOL; + + exit(TestRunner::SUCCESS_EXIT); + } + + private function configurationFileInDirectory(string $directory): ?string + { + $candidates = [ + $directory . '/phpunit.xml', + $directory . '/phpunit.xml.dist', + ]; + + foreach ($candidates as $candidate) { + if (is_file($candidate)) { + return realpath($candidate); + } + } + + return null; + } + /** * @psalm-param "listGroups"|"listSuites"|"listTests"|"listTestsXml"|"filter"|"groups"|"excludeGroups"|"testsuite" $key * @psalm-param list<"listGroups"|"listSuites"|"listTests"|"listTestsXml"|"filter"|"groups"|"excludeGroups"|"testsuite"> $keys diff --git a/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php new file mode 100644 index 000000000..99f0fa9d6 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php @@ -0,0 +1,593 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI; + +use const PHP_EOL; +use function array_map; +use function array_reverse; +use function count; +use function floor; +use function implode; +use function in_array; +use function is_int; +use function max; +use function preg_split; +use function sprintf; +use function str_pad; +use function str_repeat; +use function strlen; +use function trim; +use function vsprintf; +use PHPUnit\Framework\AssertionFailedError; +use PHPUnit\Framework\Exception; +use PHPUnit\Framework\InvalidArgumentException; +use PHPUnit\Framework\Test; +use PHPUnit\Framework\TestCase; +use PHPUnit\Framework\TestFailure; +use PHPUnit\Framework\TestResult; +use PHPUnit\Framework\TestSuite; +use PHPUnit\Framework\Warning; +use PHPUnit\Runner\PhptTestCase; +use PHPUnit\Util\Color; +use PHPUnit\Util\Printer; +use SebastianBergmann\Environment\Console; +use SebastianBergmann\Timer\ResourceUsageFormatter; +use SebastianBergmann\Timer\Timer; +use Throwable; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +class DefaultResultPrinter extends Printer implements ResultPrinter +{ + public const EVENT_TEST_START = 0; + + public const EVENT_TEST_END = 1; + + public const EVENT_TESTSUITE_START = 2; + + public const EVENT_TESTSUITE_END = 3; + + public const COLOR_NEVER = 'never'; + + public const COLOR_AUTO = 'auto'; + + public const COLOR_ALWAYS = 'always'; + + public const COLOR_DEFAULT = self::COLOR_NEVER; + + private const AVAILABLE_COLORS = [self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS]; + + /** + * @var int + */ + protected $column = 0; + + /** + * @var int + */ + protected $maxColumn; + + /** + * @var bool + */ + protected $lastTestFailed = false; + + /** + * @var int + */ + protected $numAssertions = 0; + + /** + * @var int + */ + protected $numTests = -1; + + /** + * @var int + */ + protected $numTestsRun = 0; + + /** + * @var int + */ + protected $numTestsWidth; + + /** + * @var bool + */ + protected $colors = false; + + /** + * @var bool + */ + protected $debug = false; + + /** + * @var bool + */ + protected $verbose = false; + + /** + * @var int + */ + private $numberOfColumns; + + /** + * @var bool + */ + private $reverse; + + /** + * @var bool + */ + private $defectListPrinted = false; + + /** + * @var Timer + */ + private $timer; + + /** + * Constructor. + * + * @param null|resource|string $out + * @param int|string $numberOfColumns + * + * @throws Exception + */ + public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false) + { + parent::__construct($out); + + if (!in_array($colors, self::AVAILABLE_COLORS, true)) { + throw InvalidArgumentException::create( + 3, + vsprintf('value from "%s", "%s" or "%s"', self::AVAILABLE_COLORS) + ); + } + + if (!is_int($numberOfColumns) && $numberOfColumns !== 'max') { + throw InvalidArgumentException::create(5, 'integer or "max"'); + } + + $console = new Console; + $maxNumberOfColumns = $console->getNumberOfColumns(); + + if ($numberOfColumns === 'max' || ($numberOfColumns !== 80 && $numberOfColumns > $maxNumberOfColumns)) { + $numberOfColumns = $maxNumberOfColumns; + } + + $this->numberOfColumns = $numberOfColumns; + $this->verbose = $verbose; + $this->debug = $debug; + $this->reverse = $reverse; + + if ($colors === self::COLOR_AUTO && $console->hasColorSupport()) { + $this->colors = true; + } else { + $this->colors = (self::COLOR_ALWAYS === $colors); + } + + $this->timer = new Timer; + + $this->timer->start(); + } + + public function printResult(TestResult $result): void + { + $this->printHeader($result); + $this->printErrors($result); + $this->printWarnings($result); + $this->printFailures($result); + $this->printRisky($result); + + if ($this->verbose) { + $this->printIncompletes($result); + $this->printSkipped($result); + } + + $this->printFooter($result); + } + + /** + * An error occurred. + */ + public function addError(Test $test, Throwable $t, float $time): void + { + $this->writeProgressWithColor('fg-red, bold', 'E'); + $this->lastTestFailed = true; + } + + /** + * A failure occurred. + */ + public function addFailure(Test $test, AssertionFailedError $e, float $time): void + { + $this->writeProgressWithColor('bg-red, fg-white', 'F'); + $this->lastTestFailed = true; + } + + /** + * A warning occurred. + */ + public function addWarning(Test $test, Warning $e, float $time): void + { + $this->writeProgressWithColor('fg-yellow, bold', 'W'); + $this->lastTestFailed = true; + } + + /** + * Incomplete test. + */ + public function addIncompleteTest(Test $test, Throwable $t, float $time): void + { + $this->writeProgressWithColor('fg-yellow, bold', 'I'); + $this->lastTestFailed = true; + } + + /** + * Risky test. + */ + public function addRiskyTest(Test $test, Throwable $t, float $time): void + { + $this->writeProgressWithColor('fg-yellow, bold', 'R'); + $this->lastTestFailed = true; + } + + /** + * Skipped test. + */ + public function addSkippedTest(Test $test, Throwable $t, float $time): void + { + $this->writeProgressWithColor('fg-cyan, bold', 'S'); + $this->lastTestFailed = true; + } + + /** + * A testsuite started. + */ + public function startTestSuite(TestSuite $suite): void + { + if ($this->numTests == -1) { + $this->numTests = count($suite); + $this->numTestsWidth = strlen((string) $this->numTests); + $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numTestsWidth); + } + } + + /** + * A testsuite ended. + */ + public function endTestSuite(TestSuite $suite): void + { + } + + /** + * A test started. + */ + public function startTest(Test $test): void + { + if ($this->debug) { + $this->write( + sprintf( + "Test '%s' started\n", + \PHPUnit\Util\Test::describeAsString($test) + ) + ); + } + } + + /** + * A test ended. + */ + public function endTest(Test $test, float $time): void + { + if ($this->debug) { + $this->write( + sprintf( + "Test '%s' ended\n", + \PHPUnit\Util\Test::describeAsString($test) + ) + ); + } + + if (!$this->lastTestFailed) { + $this->writeProgress('.'); + } + + if ($test instanceof TestCase) { + $this->numAssertions += $test->getNumAssertions(); + } elseif ($test instanceof PhptTestCase) { + $this->numAssertions++; + } + + $this->lastTestFailed = false; + + if ($test instanceof TestCase && !$test->hasExpectationOnOutput()) { + $this->write($test->getActualOutput()); + } + } + + protected function printDefects(array $defects, string $type): void + { + $count = count($defects); + + if ($count == 0) { + return; + } + + if ($this->defectListPrinted) { + $this->write("\n--\n\n"); + } + + $this->write( + sprintf( + "There %s %d %s%s:\n", + ($count == 1) ? 'was' : 'were', + $count, + $type, + ($count == 1) ? '' : 's' + ) + ); + + $i = 1; + + if ($this->reverse) { + $defects = array_reverse($defects); + } + + foreach ($defects as $defect) { + $this->printDefect($defect, $i++); + } + + $this->defectListPrinted = true; + } + + protected function printDefect(TestFailure $defect, int $count): void + { + $this->printDefectHeader($defect, $count); + $this->printDefectTrace($defect); + } + + protected function printDefectHeader(TestFailure $defect, int $count): void + { + $this->write( + sprintf( + "\n%d) %s\n", + $count, + $defect->getTestName() + ) + ); + } + + protected function printDefectTrace(TestFailure $defect): void + { + $e = $defect->thrownException(); + + $this->write((string) $e); + + while ($e = $e->getPrevious()) { + $this->write("\nCaused by\n" . trim((string) $e) . "\n"); + } + } + + protected function printErrors(TestResult $result): void + { + $this->printDefects($result->errors(), 'error'); + } + + protected function printFailures(TestResult $result): void + { + $this->printDefects($result->failures(), 'failure'); + } + + protected function printWarnings(TestResult $result): void + { + $this->printDefects($result->warnings(), 'warning'); + } + + protected function printIncompletes(TestResult $result): void + { + $this->printDefects($result->notImplemented(), 'incomplete test'); + } + + protected function printRisky(TestResult $result): void + { + $this->printDefects($result->risky(), 'risky test'); + } + + protected function printSkipped(TestResult $result): void + { + $this->printDefects($result->skipped(), 'skipped test'); + } + + protected function printHeader(TestResult $result): void + { + if (count($result) > 0) { + $this->write(PHP_EOL . PHP_EOL . (new ResourceUsageFormatter)->resourceUsage($this->timer->stop()) . PHP_EOL . PHP_EOL); + } + } + + protected function printFooter(TestResult $result): void + { + if (count($result) === 0) { + $this->writeWithColor( + 'fg-black, bg-yellow', + 'No tests executed!' + ); + + return; + } + + if ($result->wasSuccessfulAndNoTestIsRiskyOrSkippedOrIncomplete()) { + $this->writeWithColor( + 'fg-black, bg-green', + sprintf( + 'OK (%d test%s, %d assertion%s)', + count($result), + (count($result) === 1) ? '' : 's', + $this->numAssertions, + ($this->numAssertions === 1) ? '' : 's' + ) + ); + + return; + } + + $color = 'fg-black, bg-yellow'; + + if ($result->wasSuccessful()) { + if ($this->verbose || !$result->allHarmless()) { + $this->write("\n"); + } + + $this->writeWithColor( + $color, + 'OK, but incomplete, skipped, or risky tests!' + ); + } else { + $this->write("\n"); + + if ($result->errorCount()) { + $color = 'fg-white, bg-red'; + + $this->writeWithColor( + $color, + 'ERRORS!' + ); + } elseif ($result->failureCount()) { + $color = 'fg-white, bg-red'; + + $this->writeWithColor( + $color, + 'FAILURES!' + ); + } elseif ($result->warningCount()) { + $color = 'fg-black, bg-yellow'; + + $this->writeWithColor( + $color, + 'WARNINGS!' + ); + } + } + + $this->writeCountString(count($result), 'Tests', $color, true); + $this->writeCountString($this->numAssertions, 'Assertions', $color, true); + $this->writeCountString($result->errorCount(), 'Errors', $color); + $this->writeCountString($result->failureCount(), 'Failures', $color); + $this->writeCountString($result->warningCount(), 'Warnings', $color); + $this->writeCountString($result->skippedCount(), 'Skipped', $color); + $this->writeCountString($result->notImplementedCount(), 'Incomplete', $color); + $this->writeCountString($result->riskyCount(), 'Risky', $color); + $this->writeWithColor($color, '.'); + } + + protected function writeProgress(string $progress): void + { + if ($this->debug) { + return; + } + + $this->write($progress); + $this->column++; + $this->numTestsRun++; + + if ($this->column == $this->maxColumn || $this->numTestsRun == $this->numTests) { + if ($this->numTestsRun == $this->numTests) { + $this->write(str_repeat(' ', $this->maxColumn - $this->column)); + } + + $this->write( + sprintf( + ' %' . $this->numTestsWidth . 'd / %' . + $this->numTestsWidth . 'd (%3s%%)', + $this->numTestsRun, + $this->numTests, + floor(($this->numTestsRun / $this->numTests) * 100) + ) + ); + + if ($this->column == $this->maxColumn) { + $this->writeNewLine(); + } + } + } + + protected function writeNewLine(): void + { + $this->column = 0; + $this->write("\n"); + } + + /** + * Formats a buffer with a specified ANSI color sequence if colors are + * enabled. + */ + protected function colorizeTextBox(string $color, string $buffer): string + { + if (!$this->colors) { + return $buffer; + } + + $lines = preg_split('/\r\n|\r|\n/', $buffer); + $padding = max(array_map('\strlen', $lines)); + + $styledLines = []; + + foreach ($lines as $line) { + $styledLines[] = Color::colorize($color, str_pad($line, $padding)); + } + + return implode(PHP_EOL, $styledLines); + } + + /** + * Writes a buffer out with a color sequence if colors are enabled. + */ + protected function writeWithColor(string $color, string $buffer, bool $lf = true): void + { + $this->write($this->colorizeTextBox($color, $buffer)); + + if ($lf) { + $this->write(PHP_EOL); + } + } + + /** + * Writes progress with a color sequence if colors are enabled. + */ + protected function writeProgressWithColor(string $color, string $buffer): void + { + $buffer = $this->colorizeTextBox($color, $buffer); + $this->writeProgress($buffer); + } + + private function writeCountString(int $count, string $name, string $color, bool $always = false): void + { + static $first = true; + + if ($always || $count > 0) { + $this->writeWithColor( + $color, + sprintf( + '%s%s: %d', + !$first ? ', ' : '', + $name, + $count + ), + false + ); + + $first = false; + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception.php b/vendor/phpunit/phpunit/src/TextUI/Exception.php deleted file mode 100644 index 7c261e58e..000000000 --- a/vendor/phpunit/phpunit/src/TextUI/Exception.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\TextUI; - -use RuntimeException; - -/** - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Exception extends RuntimeException implements \PHPUnit\Exception -{ -} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php b/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php new file mode 100644 index 000000000..ee2ae4ffa --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI; + +use Throwable; + +/** + * @internal This interface is not covered by the backward compatibility promise for PHPUnit + */ +interface Exception extends Throwable +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php new file mode 100644 index 000000000..74e9d25dd --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI; + +use RuntimeException; + +/** + * @internal This interface is not covered by the backward compatibility promise for PHPUnit + */ +final class ReflectionException extends RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php new file mode 100644 index 000000000..790a84634 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI; + +/** + * @internal This interface is not covered by the backward compatibility promise for PHPUnit + */ +final class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php new file mode 100644 index 000000000..770ad8742 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.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 PHPUnit\TextUI; + +use function sprintf; +use RuntimeException; + +/** + * @internal This interface is not covered by the backward compatibility promise for PHPUnit + */ +final class TestDirectoryNotFoundException extends RuntimeException implements Exception +{ + public function __construct(string $path) + { + parent::__construct( + sprintf( + 'Test directory "%s" not found', + $path + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php new file mode 100644 index 000000000..7ffd2c78c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.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 PHPUnit\TextUI; + +use function sprintf; +use RuntimeException; + +/** + * @internal This interface is not covered by the backward compatibility promise for PHPUnit + */ +final class TestFileNotFoundException extends RuntimeException implements Exception +{ + public function __construct(string $path) + { + parent::__construct( + sprintf( + 'Test file "%s" not found', + $path + ) + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/Help.php b/vendor/phpunit/phpunit/src/TextUI/Help.php index 2dd895604..084f2a218 100644 --- a/vendor/phpunit/phpunit/src/TextUI/Help.php +++ b/vendor/phpunit/phpunit/src/TextUI/Help.php @@ -30,20 +30,24 @@ final class Help private const HELP_TEXT = [ 'Usage' => [ - ['text' => 'phpunit [options] UnitTest [UnitTest.php]'], + ['text' => 'phpunit [options] UnitTest.php'], ['text' => 'phpunit [options] '], ], + 'Code Coverage Options' => [ ['arg' => '--coverage-clover ', 'desc' => 'Generate code coverage report in Clover XML format'], + ['arg' => '--coverage-cobertura ', 'desc' => 'Generate code coverage report in Cobertura XML format'], ['arg' => '--coverage-crap4j ', 'desc' => 'Generate code coverage report in Crap4J XML format'], ['arg' => '--coverage-html ', 'desc' => 'Generate code coverage report in HTML format'], ['arg' => '--coverage-php ', 'desc' => 'Export PHP_CodeCoverage object to file'], ['arg' => '--coverage-text=', 'desc' => 'Generate code coverage report in text format [default: standard output]'], ['arg' => '--coverage-xml ', 'desc' => 'Generate code coverage report in PHPUnit XML format'], - ['arg' => '--whitelist ', 'desc' => 'Whitelist for code coverage analysis'], + ['arg' => '--coverage-cache ', 'desc' => 'Cache static analysis results'], + ['arg' => '--warm-coverage-cache', 'desc' => 'Warm static analysis cache'], + ['arg' => '--coverage-filter ', 'desc' => 'Include in code coverage analysis'], + ['arg' => '--path-coverage', 'desc' => 'Perform path coverage analysis'], ['arg' => '--disable-coverage-ignore', 'desc' => 'Disable annotations for ignoring code coverage'], ['arg' => '--no-coverage', 'desc' => 'Ignore code coverage configuration'], - ['arg' => '--dump-xdebug-filter ', 'desc' => 'Generate script to set Xdebug code coverage filter'], ], 'Logging Options' => [ @@ -57,14 +61,16 @@ final class Help ], 'Test Selection Options' => [ - ['arg' => '--filter ', 'desc' => 'Filter which tests to run'], + ['arg' => '--list-suites', 'desc' => 'List available test suites'], ['arg' => '--testsuite ', 'desc' => 'Filter which testsuite to run'], + ['arg' => '--list-groups', 'desc' => 'List available test groups'], ['arg' => '--group ', 'desc' => 'Only runs tests from the specified group(s)'], ['arg' => '--exclude-group ', 'desc' => 'Exclude tests from the specified group(s)'], - ['arg' => '--list-groups', 'desc' => 'List available test groups'], - ['arg' => '--list-suites', 'desc' => 'List available test suites'], + ['arg' => '--covers ', 'desc' => 'Only runs tests annotated with "@covers "'], + ['arg' => '--uses ', 'desc' => 'Only runs tests annotated with "@uses "'], ['arg' => '--list-tests', 'desc' => 'List available tests'], ['arg' => '--list-tests-xml ', 'desc' => 'List available tests in XML format'], + ['arg' => '--filter ', 'desc' => 'Filter which tests to run'], ['arg' => '--test-suffix ', 'desc' => 'Only search for test in files with specified suffix(es). Default: Test.php,.phpt'], ], @@ -75,7 +81,7 @@ final class Help ['arg' => '--disallow-test-output', 'desc' => 'Be strict about output during tests'], ['arg' => '--disallow-resource-usage', 'desc' => 'Be strict about resource usage during small tests'], ['arg' => '--enforce-time-limit', 'desc' => 'Enforce time limit based on test size'], - ['arg' => '--default-time-limit=', 'desc' => 'Timeout in seconds for tests without @small, @medium or @large'], + ['arg' => '--default-time-limit ', 'desc' => 'Timeout in seconds for tests without @small, @medium or @large'], ['arg' => '--disallow-todo-tests', 'desc' => 'Disallow @todo-annotated tests'], ['spacer' => ''], @@ -84,7 +90,7 @@ final class Help ['arg' => '--static-backup', 'desc' => 'Backup and restore static attributes for each test'], ['spacer' => ''], - ['arg' => '--colors=', 'desc' => 'Use colors in output ("never", "auto" or "always")'], + ['arg' => '--colors ', 'desc' => 'Use colors in output ("never", "auto" or "always")'], ['arg' => '--columns ', 'desc' => 'Number of columns to use for progress output'], ['arg' => '--columns max', 'desc' => 'Use maximum number of columns for progress output'], ['arg' => '--stderr', 'desc' => 'Write to STDERR instead of STDOUT'], @@ -95,13 +101,14 @@ final class Help ['arg' => '--stop-on-risky', 'desc' => 'Stop execution upon first risky test'], ['arg' => '--stop-on-skipped', 'desc' => 'Stop execution upon first skipped test'], ['arg' => '--stop-on-incomplete', 'desc' => 'Stop execution upon first incomplete test'], - ['arg' => '--fail-on-warning', 'desc' => 'Treat tests with warnings as failures'], + ['arg' => '--fail-on-incomplete', 'desc' => 'Treat incomplete tests as failures'], ['arg' => '--fail-on-risky', 'desc' => 'Treat risky tests as failures'], + ['arg' => '--fail-on-skipped', 'desc' => 'Treat skipped tests as failures'], + ['arg' => '--fail-on-warning', 'desc' => 'Treat tests with warnings as failures'], ['arg' => '-v|--verbose', 'desc' => 'Output more verbose information'], ['arg' => '--debug', 'desc' => 'Display debugging information'], ['spacer' => ''], - ['arg' => '--loader ', 'desc' => 'TestSuiteLoader implementation to use'], ['arg' => '--repeat ', 'desc' => 'Runs the test(s) repeatedly'], ['arg' => '--teamcity', 'desc' => 'Report test execution progress in TeamCity format'], ['arg' => '--testdox', 'desc' => 'Report test execution progress in TestDox format'], @@ -111,8 +118,8 @@ final class Help ['arg' => '--printer ', 'desc' => 'TestListener implementation to use'], ['spacer' => ''], - ['arg' => '--order-by=', 'desc' => 'Run tests in order: default|defects|duration|no-depends|random|reverse|size'], - ['arg' => '--random-order-seed=', 'desc' => 'Use a specific random seed for random order'], + ['arg' => '--order-by ', 'desc' => 'Run tests in order: default|defects|duration|no-depends|random|reverse|size'], + ['arg' => '--random-order-seed ', 'desc' => 'Use a specific random seed for random order'], ['arg' => '--cache-result', 'desc' => 'Write test results to cache file'], ['arg' => '--do-not-cache-result', 'desc' => 'Do not write test results to cache file'], ], @@ -122,11 +129,13 @@ final class Help ['arg' => '--bootstrap ', 'desc' => 'A PHP script that is included before the tests run'], ['arg' => '-c|--configuration ', 'desc' => 'Read configuration from XML file'], ['arg' => '--no-configuration', 'desc' => 'Ignore default configuration file (phpunit.xml)'], + ['arg' => '--extensions ', 'desc' => 'A comma separated list of PHPUnit extensions to load'], ['arg' => '--no-extensions', 'desc' => 'Do not load PHPUnit extensions'], ['arg' => '--include-path ', 'desc' => 'Prepend PHP\'s include_path with given path(s)'], ['arg' => '-d ', 'desc' => 'Sets a php.ini value'], + ['arg' => '--cache-result-file ', 'desc' => 'Specify result cache path and filename'], ['arg' => '--generate-configuration', 'desc' => 'Generate configuration file with suggested settings'], - ['arg' => '--cache-result-file=', 'desc' => 'Specify result cache path and filename'], + ['arg' => '--migrate-configuration', 'desc' => 'Migrate configuration file to current format'], ], 'Miscellaneous Options' => [ diff --git a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php index 51b033094..ec89f6006 100644 --- a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php +++ b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php @@ -9,581 +9,15 @@ */ namespace PHPUnit\TextUI; -use const PHP_EOL; -use function array_map; -use function array_reverse; -use function count; -use function floor; -use function implode; -use function in_array; -use function is_int; -use function max; -use function preg_split; -use function sprintf; -use function str_pad; -use function str_repeat; -use function strlen; -use function trim; -use function vsprintf; -use PHPUnit\Framework\AssertionFailedError; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\InvalidArgumentException; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestFailure; use PHPUnit\Framework\TestListener; use PHPUnit\Framework\TestResult; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Framework\Warning; -use PHPUnit\Runner\PhptTestCase; -use PHPUnit\Util\Color; -use PHPUnit\Util\Printer; -use SebastianBergmann\Environment\Console; -use SebastianBergmann\Timer\Timer; -use Throwable; /** - * @internal This class is not covered by the backward compatibility promise for PHPUnit + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ -class ResultPrinter extends Printer implements TestListener +interface ResultPrinter extends TestListener { - public const EVENT_TEST_START = 0; + public function printResult(TestResult $result): void; - public const EVENT_TEST_END = 1; - - public const EVENT_TESTSUITE_START = 2; - - public const EVENT_TESTSUITE_END = 3; - - public const COLOR_NEVER = 'never'; - - public const COLOR_AUTO = 'auto'; - - public const COLOR_ALWAYS = 'always'; - - public const COLOR_DEFAULT = self::COLOR_NEVER; - - private const AVAILABLE_COLORS = [self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS]; - - /** - * @var int - */ - protected $column = 0; - - /** - * @var int - */ - protected $maxColumn; - - /** - * @var bool - */ - protected $lastTestFailed = false; - - /** - * @var int - */ - protected $numAssertions = 0; - - /** - * @var int - */ - protected $numTests = -1; - - /** - * @var int - */ - protected $numTestsRun = 0; - - /** - * @var int - */ - protected $numTestsWidth; - - /** - * @var bool - */ - protected $colors = false; - - /** - * @var bool - */ - protected $debug = false; - - /** - * @var bool - */ - protected $verbose = false; - - /** - * @var int - */ - private $numberOfColumns; - - /** - * @var bool - */ - private $reverse; - - /** - * @var bool - */ - private $defectListPrinted = false; - - /** - * Constructor. - * - * @param null|resource|string $out - * @param int|string $numberOfColumns - * - * @throws Exception - */ - public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false) - { - parent::__construct($out); - - if (!in_array($colors, self::AVAILABLE_COLORS, true)) { - throw InvalidArgumentException::create( - 3, - vsprintf('value from "%s", "%s" or "%s"', self::AVAILABLE_COLORS) - ); - } - - if (!is_int($numberOfColumns) && $numberOfColumns !== 'max') { - throw InvalidArgumentException::create(5, 'integer or "max"'); - } - - $console = new Console; - $maxNumberOfColumns = $console->getNumberOfColumns(); - - if ($numberOfColumns === 'max' || ($numberOfColumns !== 80 && $numberOfColumns > $maxNumberOfColumns)) { - $numberOfColumns = $maxNumberOfColumns; - } - - $this->numberOfColumns = $numberOfColumns; - $this->verbose = $verbose; - $this->debug = $debug; - $this->reverse = $reverse; - - if ($colors === self::COLOR_AUTO && $console->hasColorSupport()) { - $this->colors = true; - } else { - $this->colors = (self::COLOR_ALWAYS === $colors); - } - } - - /** - * @throws \SebastianBergmann\Timer\RuntimeException - */ - public function printResult(TestResult $result): void - { - $this->printHeader($result); - $this->printErrors($result); - $this->printWarnings($result); - $this->printFailures($result); - $this->printRisky($result); - - if ($this->verbose) { - $this->printIncompletes($result); - $this->printSkipped($result); - } - - $this->printFooter($result); - } - - /** - * An error occurred. - */ - public function addError(Test $test, Throwable $t, float $time): void - { - $this->writeProgressWithColor('fg-red, bold', 'E'); - $this->lastTestFailed = true; - } - - /** - * A failure occurred. - */ - public function addFailure(Test $test, AssertionFailedError $e, float $time): void - { - $this->writeProgressWithColor('bg-red, fg-white', 'F'); - $this->lastTestFailed = true; - } - - /** - * A warning occurred. - */ - public function addWarning(Test $test, Warning $e, float $time): void - { - $this->writeProgressWithColor('fg-yellow, bold', 'W'); - $this->lastTestFailed = true; - } - - /** - * Incomplete test. - */ - public function addIncompleteTest(Test $test, Throwable $t, float $time): void - { - $this->writeProgressWithColor('fg-yellow, bold', 'I'); - $this->lastTestFailed = true; - } - - /** - * Risky test. - */ - public function addRiskyTest(Test $test, Throwable $t, float $time): void - { - $this->writeProgressWithColor('fg-yellow, bold', 'R'); - $this->lastTestFailed = true; - } - - /** - * Skipped test. - */ - public function addSkippedTest(Test $test, Throwable $t, float $time): void - { - $this->writeProgressWithColor('fg-cyan, bold', 'S'); - $this->lastTestFailed = true; - } - - /** - * A testsuite started. - */ - public function startTestSuite(TestSuite $suite): void - { - if ($this->numTests == -1) { - $this->numTests = count($suite); - $this->numTestsWidth = strlen((string) $this->numTests); - $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numTestsWidth); - } - } - - /** - * A testsuite ended. - */ - public function endTestSuite(TestSuite $suite): void - { - } - - /** - * A test started. - */ - public function startTest(Test $test): void - { - if ($this->debug) { - $this->write( - sprintf( - "Test '%s' started\n", - \PHPUnit\Util\Test::describeAsString($test) - ) - ); - } - } - - /** - * A test ended. - */ - public function endTest(Test $test, float $time): void - { - if ($this->debug) { - $this->write( - sprintf( - "Test '%s' ended\n", - \PHPUnit\Util\Test::describeAsString($test) - ) - ); - } - - if (!$this->lastTestFailed) { - $this->writeProgress('.'); - } - - if ($test instanceof TestCase) { - $this->numAssertions += $test->getNumAssertions(); - } elseif ($test instanceof PhptTestCase) { - $this->numAssertions++; - } - - $this->lastTestFailed = false; - - if ($test instanceof TestCase && !$test->hasExpectationOnOutput()) { - $this->write($test->getActualOutput()); - } - } - - protected function printDefects(array $defects, string $type): void - { - $count = count($defects); - - if ($count == 0) { - return; - } - - if ($this->defectListPrinted) { - $this->write("\n--\n\n"); - } - - $this->write( - sprintf( - "There %s %d %s%s:\n", - ($count == 1) ? 'was' : 'were', - $count, - $type, - ($count == 1) ? '' : 's' - ) - ); - - $i = 1; - - if ($this->reverse) { - $defects = array_reverse($defects); - } - - foreach ($defects as $defect) { - $this->printDefect($defect, $i++); - } - - $this->defectListPrinted = true; - } - - protected function printDefect(TestFailure $defect, int $count): void - { - $this->printDefectHeader($defect, $count); - $this->printDefectTrace($defect); - } - - protected function printDefectHeader(TestFailure $defect, int $count): void - { - $this->write( - sprintf( - "\n%d) %s\n", - $count, - $defect->getTestName() - ) - ); - } - - protected function printDefectTrace(TestFailure $defect): void - { - $e = $defect->thrownException(); - $this->write((string) $e); - - while ($e = $e->getPrevious()) { - $this->write("\nCaused by\n" . trim((string) $e) . "\n"); - } - } - - protected function printErrors(TestResult $result): void - { - $this->printDefects($result->errors(), 'error'); - } - - protected function printFailures(TestResult $result): void - { - $this->printDefects($result->failures(), 'failure'); - } - - protected function printWarnings(TestResult $result): void - { - $this->printDefects($result->warnings(), 'warning'); - } - - protected function printIncompletes(TestResult $result): void - { - $this->printDefects($result->notImplemented(), 'incomplete test'); - } - - protected function printRisky(TestResult $result): void - { - $this->printDefects($result->risky(), 'risky test'); - } - - protected function printSkipped(TestResult $result): void - { - $this->printDefects($result->skipped(), 'skipped test'); - } - - /** - * @throws \SebastianBergmann\Timer\RuntimeException - */ - protected function printHeader(TestResult $result): void - { - if (count($result) > 0) { - $this->write(PHP_EOL . PHP_EOL . Timer::resourceUsage() . PHP_EOL . PHP_EOL); - } - } - - protected function printFooter(TestResult $result): void - { - if (count($result) === 0) { - $this->writeWithColor( - 'fg-black, bg-yellow', - 'No tests executed!' - ); - - return; - } - - if ($result->wasSuccessfulAndNoTestIsRiskyOrSkippedOrIncomplete()) { - $this->writeWithColor( - 'fg-black, bg-green', - sprintf( - 'OK (%d test%s, %d assertion%s)', - count($result), - (count($result) == 1) ? '' : 's', - $this->numAssertions, - ($this->numAssertions == 1) ? '' : 's' - ) - ); - - return; - } - - $color = 'fg-black, bg-yellow'; - - if ($result->wasSuccessful()) { - if ($this->verbose || !$result->allHarmless()) { - $this->write("\n"); - } - - $this->writeWithColor( - $color, - 'OK, but incomplete, skipped, or risky tests!' - ); - } else { - $this->write("\n"); - - if ($result->errorCount()) { - $color = 'fg-white, bg-red'; - - $this->writeWithColor( - $color, - 'ERRORS!' - ); - } elseif ($result->failureCount()) { - $color = 'fg-white, bg-red'; - - $this->writeWithColor( - $color, - 'FAILURES!' - ); - } elseif ($result->warningCount()) { - $color = 'fg-black, bg-yellow'; - - $this->writeWithColor( - $color, - 'WARNINGS!' - ); - } - } - - $this->writeCountString(count($result), 'Tests', $color, true); - $this->writeCountString($this->numAssertions, 'Assertions', $color, true); - $this->writeCountString($result->errorCount(), 'Errors', $color); - $this->writeCountString($result->failureCount(), 'Failures', $color); - $this->writeCountString($result->warningCount(), 'Warnings', $color); - $this->writeCountString($result->skippedCount(), 'Skipped', $color); - $this->writeCountString($result->notImplementedCount(), 'Incomplete', $color); - $this->writeCountString($result->riskyCount(), 'Risky', $color); - $this->writeWithColor($color, '.'); - } - - protected function writeProgress(string $progress): void - { - if ($this->debug) { - return; - } - - $this->write($progress); - $this->column++; - $this->numTestsRun++; - - if ($this->column == $this->maxColumn || $this->numTestsRun == $this->numTests) { - if ($this->numTestsRun == $this->numTests) { - $this->write(str_repeat(' ', $this->maxColumn - $this->column)); - } - - $this->write( - sprintf( - ' %' . $this->numTestsWidth . 'd / %' . - $this->numTestsWidth . 'd (%3s%%)', - $this->numTestsRun, - $this->numTests, - floor(($this->numTestsRun / $this->numTests) * 100) - ) - ); - - if ($this->column == $this->maxColumn) { - $this->writeNewLine(); - } - } - } - - protected function writeNewLine(): void - { - $this->column = 0; - $this->write("\n"); - } - - /** - * Formats a buffer with a specified ANSI color sequence if colors are - * enabled. - */ - protected function colorizeTextBox(string $color, string $buffer): string - { - if (!$this->colors) { - return $buffer; - } - - $lines = preg_split('/\r\n|\r|\n/', $buffer); - $padding = max(array_map('\strlen', $lines)); - - $styledLines = []; - - foreach ($lines as $line) { - $styledLines[] = Color::colorize($color, str_pad($line, $padding)); - } - - return implode(PHP_EOL, $styledLines); - } - - /** - * Writes a buffer out with a color sequence if colors are enabled. - */ - protected function writeWithColor(string $color, string $buffer, bool $lf = true): void - { - $this->write($this->colorizeTextBox($color, $buffer)); - - if ($lf) { - $this->write(PHP_EOL); - } - } - - /** - * Writes progress with a color sequence if colors are enabled. - */ - protected function writeProgressWithColor(string $color, string $buffer): void - { - $buffer = $this->colorizeTextBox($color, $buffer); - $this->writeProgress($buffer); - } - - private function writeCountString(int $count, string $name, string $color, bool $always = false): void - { - static $first = true; - - if ($always || $count > 0) { - $this->writeWithColor( - $color, - sprintf( - '%s%s: %d', - !$first ? ', ' : '', - $name, - $count - ), - false - ); - - $first = false; - } - } + public function write(string $buffer): void; } diff --git a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php index ebf0e8dda..b0dd9bcc6 100644 --- a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php +++ b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php @@ -10,36 +10,33 @@ namespace PHPUnit\TextUI; use const PHP_EOL; -use const PHP_MAJOR_VERSION; use const PHP_SAPI; +use const PHP_VERSION; use function array_diff; +use function array_map; +use function array_merge; use function assert; use function class_exists; use function count; use function dirname; -use function extension_loaded; use function file_put_contents; use function htmlspecialchars; -use function ini_get; +use function is_array; use function is_int; use function is_string; -use function is_subclass_of; use function mt_srand; use function range; use function realpath; use function sprintf; -use function strpos; use function time; use PHPUnit\Framework\Exception; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestListener; use PHPUnit\Framework\TestResult; use PHPUnit\Framework\TestSuite; use PHPUnit\Runner\AfterLastTestHook; use PHPUnit\Runner\BaseTestRunner; use PHPUnit\Runner\BeforeFirstTestHook; use PHPUnit\Runner\DefaultTestResultCache; +use PHPUnit\Runner\Extension\ExtensionHandler; use PHPUnit\Runner\Filter\ExcludeGroupFilterIterator; use PHPUnit\Runner\Filter\Factory; use PHPUnit\Runner\Filter\IncludeGroupFilterIterator; @@ -53,7 +50,10 @@ use PHPUnit\Runner\TestListenerAdapter; use PHPUnit\Runner\TestSuiteLoader; use PHPUnit\Runner\TestSuiteSorter; use PHPUnit\Runner\Version; -use PHPUnit\Util\Configuration; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\FilterMapper; +use PHPUnit\TextUI\XmlConfiguration\Configuration; +use PHPUnit\TextUI\XmlConfiguration\Loader; +use PHPUnit\TextUI\XmlConfiguration\PhpHandler; use PHPUnit\Util\Filesystem; use PHPUnit\Util\Log\JUnit; use PHPUnit\Util\Log\TeamCity; @@ -63,12 +63,15 @@ use PHPUnit\Util\TestDox\HtmlResultPrinter; use PHPUnit\Util\TestDox\TextResultPrinter; use PHPUnit\Util\TestDox\XmlResultPrinter; use PHPUnit\Util\XdebugFilterScriptGenerator; +use PHPUnit\Util\Xml\SchemaDetector; use ReflectionClass; use ReflectionException; use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Driver\Selector; use SebastianBergmann\CodeCoverage\Exception as CodeCoverageException; use SebastianBergmann\CodeCoverage\Filter as CodeCoverageFilter; use SebastianBergmann\CodeCoverage\Report\Clover as CloverReport; +use SebastianBergmann\CodeCoverage\Report\Cobertura as CoberturaReport; use SebastianBergmann\CodeCoverage\Report\Crap4j as Crap4jReport; use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport; use SebastianBergmann\CodeCoverage\Report\PHP as PhpReport; @@ -101,15 +104,10 @@ final class TestRunner extends BaseTestRunner private $loader; /** - * @psalm-var Printer&TestListener + * @var ResultPrinter */ private $printer; - /** - * @var Runtime - */ - private $runtime; - /** * @var bool */ @@ -120,6 +118,11 @@ final class TestRunner extends BaseTestRunner */ private $extensions = []; + /** + * @var Timer + */ + private $timer; + public function __construct(TestSuiteLoader $loader = null, CodeCoverageFilter $filter = null) { if ($filter === null) { @@ -128,14 +131,15 @@ final class TestRunner extends BaseTestRunner $this->codeCoverageFilter = $filter; $this->loader = $loader; - $this->runtime = new Runtime; + $this->timer = new Timer; } /** * @throws \PHPUnit\Runner\Exception + * @throws \PHPUnit\TextUI\XmlConfiguration\Exception * @throws Exception */ - public function doRun(Test $suite, array $arguments = [], array $warnings = [], bool $exit = true): TestResult + public function run(TestSuite $suite, array $arguments = [], array $warnings = [], bool $exit = true): TestResult { if (isset($arguments['configuration'])) { $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] = $arguments['configuration']; @@ -143,6 +147,8 @@ final class TestRunner extends BaseTestRunner $this->handleConfiguration($arguments); + $warnings = array_merge($warnings, $arguments['warnings']); + if (is_int($arguments['columns']) && $arguments['columns'] < 16) { $arguments['columns'] = 16; $tooFewColumnsRequested = true; @@ -152,18 +158,16 @@ final class TestRunner extends BaseTestRunner $GLOBALS['__PHPUNIT_BOOTSTRAP'] = $arguments['bootstrap']; } - if ($suite instanceof TestCase || $suite instanceof TestSuite) { - if ($arguments['backupGlobals'] === true) { - $suite->setBackupGlobals(true); - } + if ($arguments['backupGlobals'] === true) { + $suite->setBackupGlobals(true); + } - if ($arguments['backupStaticAttributes'] === true) { - $suite->setBackupStaticAttributes(true); - } + if ($arguments['backupStaticAttributes'] === true) { + $suite->setBackupStaticAttributes(true); + } - if ($arguments['beStrictAboutChangesToGlobalState'] === true) { - $suite->setBeStrictAboutChangesToGlobalState(true); - } + if ($arguments['beStrictAboutChangesToGlobalState'] === true) { + $suite->setBeStrictAboutChangesToGlobalState(true); } if ($arguments['executionOrder'] === TestSuiteSorter::ORDER_RANDOMIZED) { @@ -172,8 +176,10 @@ final class TestRunner extends BaseTestRunner if ($arguments['cacheResult']) { if (!isset($arguments['cacheResultFile'])) { - if (isset($arguments['configuration']) && $arguments['configuration'] instanceof Configuration) { - $cacheLocation = $arguments['configuration']->getFilename(); + if (isset($arguments['configurationObject'])) { + assert($arguments['configurationObject'] instanceof Configuration); + + $cacheLocation = $arguments['configurationObject']->filename(); } else { $cacheLocation = $_SERVER['PHP_SELF']; } @@ -287,27 +293,28 @@ final class TestRunner extends BaseTestRunner if ($this->printer === null) { if (isset($arguments['printer'])) { - if ($arguments['printer'] instanceof Printer && $arguments['printer'] instanceof TestListener) { + if ($arguments['printer'] instanceof ResultPrinter) { $this->printer = $arguments['printer']; } elseif (is_string($arguments['printer']) && class_exists($arguments['printer'], false)) { try { - new ReflectionClass($arguments['printer']); + $reflector = new ReflectionClass($arguments['printer']); + + if ($reflector->implementsInterface(ResultPrinter::class)) { + $this->printer = $this->createPrinter($arguments['printer'], $arguments); + } + // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } // @codeCoverageIgnoreEnd - - if (is_subclass_of($arguments['printer'], ResultPrinter::class)) { - $this->printer = $this->createPrinter($arguments['printer'], $arguments); - } } } else { - $this->printer = $this->createPrinter(ResultPrinter::class, $arguments); + $this->printer = $this->createPrinter(DefaultResultPrinter::class, $arguments); } } @@ -320,13 +327,213 @@ final class TestRunner extends BaseTestRunner $this->write(Version::getVersionString() . "\n"); - if ($arguments['verbose']) { - $this->writeMessage('Runtime', $this->runtime->getNameWithVersionAndCodeCoverageDriver()); + foreach ($arguments['listeners'] as $listener) { + $result->addListener($listener); + } + + $result->addListener($this->printer); + + $coverageFilterFromConfigurationFile = false; + $coverageFilterFromOption = false; + $codeCoverageReports = 0; + + if (isset($arguments['testdoxHTMLFile'])) { + $result->addListener( + new HtmlResultPrinter( + $arguments['testdoxHTMLFile'], + $arguments['testdoxGroups'], + $arguments['testdoxExcludeGroups'] + ) + ); + } + + if (isset($arguments['testdoxTextFile'])) { + $result->addListener( + new TextResultPrinter( + $arguments['testdoxTextFile'], + $arguments['testdoxGroups'], + $arguments['testdoxExcludeGroups'] + ) + ); + } + + if (isset($arguments['testdoxXMLFile'])) { + $result->addListener( + new XmlResultPrinter( + $arguments['testdoxXMLFile'] + ) + ); + } + + if (isset($arguments['teamcityLogfile'])) { + $result->addListener( + new TeamCity($arguments['teamcityLogfile']) + ); + } + + if (isset($arguments['junitLogfile'])) { + $result->addListener( + new JUnit( + $arguments['junitLogfile'], + $arguments['reportUselessTests'] + ) + ); + } + + if (isset($arguments['coverageClover'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coverageCobertura'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coverageCrap4J'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coverageHtml'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coveragePHP'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coverageText'])) { + $codeCoverageReports++; + } + + if (isset($arguments['coverageXml'])) { + $codeCoverageReports++; + } + + if ($codeCoverageReports > 0 || isset($arguments['xdebugFilterFile'])) { + if (isset($arguments['coverageFilter'])) { + if (!is_array($arguments['coverageFilter'])) { + $coverageFilterDirectories = [$arguments['coverageFilter']]; + } else { + $coverageFilterDirectories = $arguments['coverageFilter']; + } + + foreach ($coverageFilterDirectories as $coverageFilterDirectory) { + $this->codeCoverageFilter->includeDirectory($coverageFilterDirectory); + } + + $coverageFilterFromOption = true; + } + + if (isset($arguments['configurationObject'])) { + assert($arguments['configurationObject'] instanceof Configuration); + + $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage(); + + if ($codeCoverageConfiguration->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) { + $coverageFilterFromConfigurationFile = true; + + (new FilterMapper)->map( + $this->codeCoverageFilter, + $codeCoverageConfiguration + ); + } + } + } + + if ($codeCoverageReports > 0) { + try { + if (isset($codeCoverageConfiguration) && + ($codeCoverageConfiguration->pathCoverage() || (isset($arguments['pathCoverage']) && $arguments['pathCoverage'] === true))) { + $codeCoverageDriver = (new Selector)->forLineAndPathCoverage($this->codeCoverageFilter); + } else { + $codeCoverageDriver = (new Selector)->forLineCoverage($this->codeCoverageFilter); + } + + $codeCoverage = new CodeCoverage( + $codeCoverageDriver, + $this->codeCoverageFilter + ); + + if (isset($codeCoverageConfiguration) && $codeCoverageConfiguration->hasCacheDirectory()) { + $codeCoverage->cacheStaticAnalysis($codeCoverageConfiguration->cacheDirectory()->path()); + } + + if (isset($arguments['coverageCacheDirectory'])) { + $codeCoverage->cacheStaticAnalysis($arguments['coverageCacheDirectory']); + } + + $codeCoverage->excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(Comparator::class); + + if ($arguments['strictCoverage']) { + $codeCoverage->enableCheckForUnintentionallyCoveredCode(); + } + + if (isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) { + if ($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage']) { + $codeCoverage->ignoreDeprecatedCode(); + } else { + $codeCoverage->doNotIgnoreDeprecatedCode(); + } + } + + if (isset($arguments['disableCodeCoverageIgnore'])) { + if ($arguments['disableCodeCoverageIgnore']) { + $codeCoverage->disableAnnotationsForIgnoringCode(); + } else { + $codeCoverage->enableAnnotationsForIgnoringCode(); + } + } + + if (isset($arguments['configurationObject'])) { + $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage(); + + if ($codeCoverageConfiguration->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) { + if ($codeCoverageConfiguration->includeUncoveredFiles()) { + $codeCoverage->includeUncoveredFiles(); + } else { + $codeCoverage->excludeUncoveredFiles(); + } + + if ($codeCoverageConfiguration->processUncoveredFiles()) { + $codeCoverage->processUncoveredFiles(); + } else { + $codeCoverage->doNotProcessUncoveredFiles(); + } + } + } + + if ($this->codeCoverageFilter->isEmpty()) { + if (!$coverageFilterFromConfigurationFile && !$coverageFilterFromOption) { + $warnings[] = 'No filter is configured, code coverage will not be processed'; + } else { + $warnings[] = 'Incorrect filter configuration, code coverage will not be processed'; + } + + unset($codeCoverage); + } + } catch (CodeCoverageException $e) { + $warnings[] = $e->getMessage(); + } + } + + if ($arguments['verbose']) { + if (PHP_SAPI === 'phpdbg') { + $this->writeMessage('Runtime', 'PHPDBG ' . PHP_VERSION); + } else { + $runtime = 'PHP ' . PHP_VERSION; + + if (isset($codeCoverageDriver)) { + $runtime .= ' with ' . $codeCoverageDriver->nameAndVersion(); + } + + $this->writeMessage('Runtime', $runtime); + } + + if (isset($arguments['configurationObject'])) { + assert($arguments['configurationObject'] instanceof Configuration); - if (isset($arguments['configuration'])) { $this->writeMessage( 'Configuration', - $arguments['configuration']->getFilename() + $arguments['configurationObject']->filename() ); } @@ -345,250 +552,52 @@ final class TestRunner extends BaseTestRunner } } - foreach ($warnings as $warning) { - $this->writeMessage('Warning', $warning); - } - if ($arguments['executionOrder'] === TestSuiteSorter::ORDER_RANDOMIZED) { $this->writeMessage( - 'Random seed', + 'Random Seed', (string) $arguments['randomOrderSeed'] ); } if (isset($tooFewColumnsRequested)) { - $this->writeMessage('Error', 'Less than 16 columns requested, number of columns set to 16'); + $warnings[] = 'Less than 16 columns requested, number of columns set to 16'; } - if ($this->runtime->discardsComments()) { - $this->writeMessage('Warning', 'opcache.save_comments=0 set; annotations will not work'); - } - - if (isset($arguments['configuration']) && $arguments['configuration']->hasValidationErrors()) { - $this->write( - "\n Warning - The configuration file did not pass validation!\n The following problems have been detected:\n" - ); - - foreach ($arguments['configuration']->getValidationErrors() as $line => $errors) { - $this->write(sprintf("\n Line %d:\n", $line)); - - foreach ($errors as $msg) { - $this->write(sprintf(" - %s\n", $msg)); - } - } - - $this->write("\n Test results may not be as expected.\n\n"); + if ((new Runtime)->discardsComments()) { + $warnings[] = 'opcache.save_comments=0 set; annotations will not work'; } if (isset($arguments['conflictBetweenPrinterClassAndTestdox'])) { - $this->writeMessage('Warning', 'Directives printerClass and testdox are mutually exclusive'); + $warnings[] = 'Directives printerClass and testdox are mutually exclusive'; } - foreach ($arguments['listeners'] as $listener) { - $result->addListener($listener); + foreach ($warnings as $warning) { + $this->writeMessage('Warning', $warning); } - $result->addListener($this->printer); + if (isset($arguments['configurationObject'])) { + assert($arguments['configurationObject'] instanceof Configuration); - $codeCoverageReports = 0; + if ($arguments['configurationObject']->hasValidationErrors()) { + if ((new SchemaDetector)->detect($arguments['configurationObject']->filename())->detected()) { + $this->writeMessage('Warning', 'Your XML configuration validates against a deprecated schema.'); + $this->writeMessage('Suggestion', 'Migrate your XML configuration using "--migrate-configuration"!'); + } else { + $this->write( + "\n Warning - The configuration file did not pass validation!\n The following problems have been detected:\n" + ); - if (!isset($arguments['noLogging'])) { - if (isset($arguments['testdoxHTMLFile'])) { - $result->addListener( - new HtmlResultPrinter( - $arguments['testdoxHTMLFile'], - $arguments['testdoxGroups'], - $arguments['testdoxExcludeGroups'] - ) - ); - } + $this->write($arguments['configurationObject']->validationErrors()); - if (isset($arguments['testdoxTextFile'])) { - $result->addListener( - new TextResultPrinter( - $arguments['testdoxTextFile'], - $arguments['testdoxGroups'], - $arguments['testdoxExcludeGroups'] - ) - ); - } - - if (isset($arguments['testdoxXMLFile'])) { - $result->addListener( - new XmlResultPrinter( - $arguments['testdoxXMLFile'] - ) - ); - } - - if (isset($arguments['teamcityLogfile'])) { - $result->addListener( - new TeamCity($arguments['teamcityLogfile']) - ); - } - - if (isset($arguments['junitLogfile'])) { - $result->addListener( - new JUnit( - $arguments['junitLogfile'], - $arguments['reportUselessTests'] - ) - ); - } - - if (isset($arguments['coverageClover'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageCrap4J'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageHtml'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coveragePHP'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageText'])) { - $codeCoverageReports++; - } - - if (isset($arguments['coverageXml'])) { - $codeCoverageReports++; - } - } - - if (isset($arguments['noCoverage'])) { - $codeCoverageReports = 0; - } - - if ($codeCoverageReports > 0 && PHP_MAJOR_VERSION < 8 && !$this->runtime->canCollectCodeCoverage()) { - $this->writeMessage('Error', 'No code coverage driver is available'); - - $codeCoverageReports = 0; - } - - if ($codeCoverageReports > 0 || isset($arguments['xdebugFilterFile'])) { - $whitelistFromConfigurationFile = false; - $whitelistFromOption = false; - - if (isset($arguments['whitelist'])) { - $this->codeCoverageFilter->addDirectoryToWhitelist($arguments['whitelist']); - - $whitelistFromOption = true; - } - - if (isset($arguments['configuration'])) { - $filterConfiguration = $arguments['configuration']->getFilterConfiguration(); - - if (!empty($filterConfiguration['whitelist'])) { - $whitelistFromConfigurationFile = true; - } - - if (!empty($filterConfiguration['whitelist'])) { - foreach ($filterConfiguration['whitelist']['include']['directory'] as $dir) { - $this->codeCoverageFilter->addDirectoryToWhitelist( - $dir['path'], - $dir['suffix'], - $dir['prefix'] - ); - } - - foreach ($filterConfiguration['whitelist']['include']['file'] as $file) { - $this->codeCoverageFilter->addFileToWhitelist($file); - } - - foreach ($filterConfiguration['whitelist']['exclude']['directory'] as $dir) { - $this->codeCoverageFilter->removeDirectoryFromWhitelist( - $dir['path'], - $dir['suffix'], - $dir['prefix'] - ); - } - - foreach ($filterConfiguration['whitelist']['exclude']['file'] as $file) { - $this->codeCoverageFilter->removeFileFromWhitelist($file); - } + $this->write("\n Test results may not be as expected.\n\n"); } } } - if ($codeCoverageReports > 0) { - if (PHP_MAJOR_VERSION >= 8) { - $this->writeMessage('Error', 'This version of PHPUnit does not support code coverage on PHP 8'); + if (isset($arguments['xdebugFilterFile'], $codeCoverageConfiguration)) { + $this->write(PHP_EOL . 'Please note that --dump-xdebug-filter and --prepend are deprecated and will be removed in PHPUnit 10.' . PHP_EOL); - $codeCoverageReports = 0; - } else { - try { - $codeCoverage = new CodeCoverage( - null, - $this->codeCoverageFilter - ); - - $codeCoverage->setUnintentionallyCoveredSubclassesWhitelist( - [Comparator::class] - ); - - $codeCoverage->setCheckForUnintentionallyCoveredCode( - $arguments['strictCoverage'] - ); - - $codeCoverage->setCheckForMissingCoversAnnotation( - $arguments['strictCoverage'] - ); - - if (isset($arguments['forceCoversAnnotation'])) { - $codeCoverage->setForceCoversAnnotation( - $arguments['forceCoversAnnotation'] - ); - } - - if (isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) { - $codeCoverage->setIgnoreDeprecatedCode( - $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] - ); - } - - if (isset($arguments['disableCodeCoverageIgnore'])) { - $codeCoverage->setDisableIgnoredLines(true); - } - - if (!empty($filterConfiguration['whitelist'])) { - $codeCoverage->setAddUncoveredFilesFromWhitelist( - $filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist'] - ); - - $codeCoverage->setProcessUncoveredFilesFromWhitelist( - $filterConfiguration['whitelist']['processUncoveredFilesFromWhitelist'] - ); - } - - if (!$this->codeCoverageFilter->hasWhitelist()) { - if (!$whitelistFromConfigurationFile && !$whitelistFromOption) { - $this->writeMessage('Error', 'No whitelist is configured, no code coverage will be generated.'); - } else { - $this->writeMessage('Error', 'Incorrect whitelist config, no code coverage will be generated.'); - } - - $codeCoverageReports = 0; - - unset($codeCoverage); - } - } catch (CodeCoverageException $e) { - $this->writeMessage('Error', $e->getMessage()); - - $codeCoverageReports = 0; - } - } - } - - if (isset($arguments['xdebugFilterFile'], $filterConfiguration)) { - $this->write("\n"); - - $script = (new XdebugFilterScriptGenerator)->generate($filterConfiguration['whitelist']); + $script = (new XdebugFilterScriptGenerator)->generate($codeCoverageConfiguration); if ($arguments['xdebugFilterFile'] !== 'php://stdout' && $arguments['xdebugFilterFile'] !== 'php://stderr' && !Filesystem::createDirectory(dirname($arguments['xdebugFilterFile']))) { $this->write(sprintf('Cannot write Xdebug filter script to %s ' . PHP_EOL, $arguments['xdebugFilterFile'])); @@ -598,7 +607,7 @@ final class TestRunner extends BaseTestRunner file_put_contents($arguments['xdebugFilterFile'], $script); - $this->write(sprintf('Wrote Xdebug filter script to %s ' . PHP_EOL, $arguments['xdebugFilterFile'])); + $this->write(sprintf('Wrote Xdebug filter script to %s ' . PHP_EOL . PHP_EOL, $arguments['xdebugFilterFile'])); exit(self::SUCCESS_EXIT); } @@ -607,10 +616,6 @@ final class TestRunner extends BaseTestRunner if (isset($codeCoverage)) { $result->setCodeCoverage($codeCoverage); - - if ($codeCoverageReports > 1 && isset($arguments['cacheTokens'])) { - $codeCoverage->setCacheTokens($arguments['cacheTokens']); - } } $result->beStrictAboutTestsThatDoNotTestAnything($arguments['reportUselessTests']); @@ -618,32 +623,41 @@ final class TestRunner extends BaseTestRunner $result->beStrictAboutTodoAnnotatedTests($arguments['disallowTodoAnnotatedTests']); $result->beStrictAboutResourceUsageDuringSmallTests($arguments['beStrictAboutResourceUsageDuringSmallTests']); - if ($arguments['enforceTimeLimit'] === true) { - if (!class_exists(Invoker::class)) { - $this->writeMessage('Error', 'Package phpunit/php-invoker is required for enforcing time limits'); - } - - if (!extension_loaded('pcntl') || strpos(ini_get('disable_functions'), 'pcntl') !== false) { - $this->writeMessage('Error', 'PHP extension pcntl is required for enforcing time limits'); - } + if ($arguments['enforceTimeLimit'] === true && !(new Invoker)->canInvokeWithTimeout()) { + $this->writeMessage('Error', 'PHP extension pcntl is required for enforcing time limits'); } + $result->enforceTimeLimit($arguments['enforceTimeLimit']); $result->setDefaultTimeLimit($arguments['defaultTimeLimit']); $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']); $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']); $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']); - if ($suite instanceof TestSuite) { - $this->processSuiteFilters($suite, $arguments); - $suite->setRunTestInSeparateProcess($arguments['processIsolation']); + if (isset($arguments['forceCoversAnnotation']) && $arguments['forceCoversAnnotation'] === true) { + $result->forceCoversAnnotation(); } + $this->processSuiteFilters($suite, $arguments); + $suite->setRunTestInSeparateProcess($arguments['processIsolation']); + foreach ($this->extensions as $extension) { if ($extension instanceof BeforeFirstTestHook) { $extension->executeBeforeFirstTest(); } } + $testSuiteWarningsPrinted = false; + + foreach ($suite->warnings() as $warning) { + $this->writeMessage('Warning', $warning); + + $testSuiteWarningsPrinted = true; + } + + if ($testSuiteWarningsPrinted) { + $this->write(PHP_EOL); + } + $suite->run($result); foreach ($this->extensions as $extension) { @@ -653,10 +667,7 @@ final class TestRunner extends BaseTestRunner } $result->flushListeners(); - - if ($this->printer instanceof ResultPrinter) { - $this->printer->printResult($result); - } + $this->printer->printResult($result); if (isset($codeCoverage)) { if (isset($arguments['coverageClover'])) { @@ -674,6 +685,21 @@ final class TestRunner extends BaseTestRunner } } + if (isset($arguments['coverageCobertura'])) { + $this->codeCoverageGenerationStart('Cobertura XML'); + + try { + $writer = new CoberturaReport; + $writer->process($codeCoverage, $arguments['coverageCobertura']); + + $this->codeCoverageGenerationSucceeded(); + + unset($writer); + } catch (CodeCoverageException $e) { + $this->codeCoverageGenerationFailed($e); + } + } + if (isset($arguments['coverageCrap4J'])) { $this->codeCoverageGenerationStart('Crap4J XML'); @@ -730,7 +756,7 @@ final class TestRunner extends BaseTestRunner if (isset($arguments['coverageText'])) { if ($arguments['coverageText'] === 'php://stdout') { $outputStream = $this->printer; - $colors = $arguments['colors'] && $arguments['colors'] !== ResultPrinter::COLOR_NEVER; + $colors = $arguments['colors'] && $arguments['colors'] !== DefaultResultPrinter::COLOR_NEVER; } else { $outputStream = new Printer($arguments['coverageText']); $colors = false; @@ -765,6 +791,10 @@ final class TestRunner extends BaseTestRunner } if ($exit) { + if (isset($arguments['failOnEmptyTestSuite']) && $arguments['failOnEmptyTestSuite'] === true && count($result) === 0) { + exit(self::FAILURE_EXIT); + } + if ($result->wasSuccessfulIgnoringWarnings()) { if ($arguments['failOnRisky'] && !$result->allHarmless()) { exit(self::FAILURE_EXIT); @@ -774,6 +804,14 @@ final class TestRunner extends BaseTestRunner exit(self::FAILURE_EXIT); } + if ($arguments['failOnIncomplete'] && $result->notImplementedCount() > 0) { + exit(self::FAILURE_EXIT); + } + + if ($arguments['failOnSkipped'] && $result->skippedCount() > 0) { + exit(self::FAILURE_EXIT); + } + exit(self::SUCCESS_EXIT); } @@ -789,11 +827,6 @@ final class TestRunner extends BaseTestRunner return $result; } - public function setPrinter(ResultPrinter $resultPrinter): void - { - $this->printer = $resultPrinter; - } - /** * Returns the loader to be used. */ @@ -841,199 +874,129 @@ final class TestRunner extends BaseTestRunner } /** + * @throws \PHPUnit\TextUI\XmlConfiguration\Exception * @throws Exception */ private function handleConfiguration(array &$arguments): void { - if (isset($arguments['configuration']) && - !$arguments['configuration'] instanceof Configuration) { - $arguments['configuration'] = Configuration::getInstance( - $arguments['configuration'] - ); + if (!isset($arguments['configurationObject']) && isset($arguments['configuration'])) { + $arguments['configurationObject'] = (new Loader)->load($arguments['configuration']); + } + + if (!isset($arguments['warnings'])) { + $arguments['warnings'] = []; } $arguments['debug'] = $arguments['debug'] ?? false; $arguments['filter'] = $arguments['filter'] ?? false; $arguments['listeners'] = $arguments['listeners'] ?? []; - if (isset($arguments['configuration'])) { - $arguments['configuration']->handlePHPConfiguration(); + if (isset($arguments['configurationObject'])) { + (new PhpHandler)->handle($arguments['configurationObject']->php()); - $phpunitConfiguration = $arguments['configuration']->getPHPUnitConfiguration(); + $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage(); - if (isset($phpunitConfiguration['backupGlobals']) && !isset($arguments['backupGlobals'])) { - $arguments['backupGlobals'] = $phpunitConfiguration['backupGlobals']; + if (!isset($arguments['noCoverage'])) { + if (!isset($arguments['coverageClover']) && $codeCoverageConfiguration->hasClover()) { + $arguments['coverageClover'] = $codeCoverageConfiguration->clover()->target()->path(); + } + + if (!isset($arguments['coverageCobertura']) && $codeCoverageConfiguration->hasCobertura()) { + $arguments['coverageCobertura'] = $codeCoverageConfiguration->cobertura()->target()->path(); + } + + if (!isset($arguments['coverageCrap4J']) && $codeCoverageConfiguration->hasCrap4j()) { + $arguments['coverageCrap4J'] = $codeCoverageConfiguration->crap4j()->target()->path(); + + if (!isset($arguments['crap4jThreshold'])) { + $arguments['crap4jThreshold'] = $codeCoverageConfiguration->crap4j()->threshold(); + } + } + + if (!isset($arguments['coverageHtml']) && $codeCoverageConfiguration->hasHtml()) { + $arguments['coverageHtml'] = $codeCoverageConfiguration->html()->target()->path(); + + if (!isset($arguments['reportLowUpperBound'])) { + $arguments['reportLowUpperBound'] = $codeCoverageConfiguration->html()->lowUpperBound(); + } + + if (!isset($arguments['reportHighLowerBound'])) { + $arguments['reportHighLowerBound'] = $codeCoverageConfiguration->html()->highLowerBound(); + } + } + + if (!isset($arguments['coveragePHP']) && $codeCoverageConfiguration->hasPhp()) { + $arguments['coveragePHP'] = $codeCoverageConfiguration->php()->target()->path(); + } + + if (!isset($arguments['coverageText']) && $codeCoverageConfiguration->hasText()) { + $arguments['coverageText'] = $codeCoverageConfiguration->text()->target()->path(); + $arguments['coverageTextShowUncoveredFiles'] = $codeCoverageConfiguration->text()->showUncoveredFiles(); + $arguments['coverageTextShowOnlySummary'] = $codeCoverageConfiguration->text()->showOnlySummary(); + } + + if (!isset($arguments['coverageXml']) && $codeCoverageConfiguration->hasXml()) { + $arguments['coverageXml'] = $codeCoverageConfiguration->xml()->target()->path(); + } } - if (isset($phpunitConfiguration['backupStaticAttributes']) && !isset($arguments['backupStaticAttributes'])) { - $arguments['backupStaticAttributes'] = $phpunitConfiguration['backupStaticAttributes']; + $phpunitConfiguration = $arguments['configurationObject']->phpunit(); + + $arguments['backupGlobals'] = $arguments['backupGlobals'] ?? $phpunitConfiguration->backupGlobals(); + $arguments['backupStaticAttributes'] = $arguments['backupStaticAttributes'] ?? $phpunitConfiguration->backupStaticAttributes(); + $arguments['beStrictAboutChangesToGlobalState'] = $arguments['beStrictAboutChangesToGlobalState'] ?? $phpunitConfiguration->beStrictAboutChangesToGlobalState(); + $arguments['cacheResult'] = $arguments['cacheResult'] ?? $phpunitConfiguration->cacheResult(); + $arguments['colors'] = $arguments['colors'] ?? $phpunitConfiguration->colors(); + $arguments['convertDeprecationsToExceptions'] = $arguments['convertDeprecationsToExceptions'] ?? $phpunitConfiguration->convertDeprecationsToExceptions(); + $arguments['convertErrorsToExceptions'] = $arguments['convertErrorsToExceptions'] ?? $phpunitConfiguration->convertErrorsToExceptions(); + $arguments['convertNoticesToExceptions'] = $arguments['convertNoticesToExceptions'] ?? $phpunitConfiguration->convertNoticesToExceptions(); + $arguments['convertWarningsToExceptions'] = $arguments['convertWarningsToExceptions'] ?? $phpunitConfiguration->convertWarningsToExceptions(); + $arguments['processIsolation'] = $arguments['processIsolation'] ?? $phpunitConfiguration->processIsolation(); + $arguments['stopOnDefect'] = $arguments['stopOnDefect'] ?? $phpunitConfiguration->stopOnDefect(); + $arguments['stopOnError'] = $arguments['stopOnError'] ?? $phpunitConfiguration->stopOnError(); + $arguments['stopOnFailure'] = $arguments['stopOnFailure'] ?? $phpunitConfiguration->stopOnFailure(); + $arguments['stopOnWarning'] = $arguments['stopOnWarning'] ?? $phpunitConfiguration->stopOnWarning(); + $arguments['stopOnIncomplete'] = $arguments['stopOnIncomplete'] ?? $phpunitConfiguration->stopOnIncomplete(); + $arguments['stopOnRisky'] = $arguments['stopOnRisky'] ?? $phpunitConfiguration->stopOnRisky(); + $arguments['stopOnSkipped'] = $arguments['stopOnSkipped'] ?? $phpunitConfiguration->stopOnSkipped(); + $arguments['failOnEmptyTestSuite'] = $arguments['failOnEmptyTestSuite'] ?? $phpunitConfiguration->failOnEmptyTestSuite(); + $arguments['failOnIncomplete'] = $arguments['failOnIncomplete'] ?? $phpunitConfiguration->failOnIncomplete(); + $arguments['failOnRisky'] = $arguments['failOnRisky'] ?? $phpunitConfiguration->failOnRisky(); + $arguments['failOnSkipped'] = $arguments['failOnSkipped'] ?? $phpunitConfiguration->failOnSkipped(); + $arguments['failOnWarning'] = $arguments['failOnWarning'] ?? $phpunitConfiguration->failOnWarning(); + $arguments['enforceTimeLimit'] = $arguments['enforceTimeLimit'] ?? $phpunitConfiguration->enforceTimeLimit(); + $arguments['defaultTimeLimit'] = $arguments['defaultTimeLimit'] ?? $phpunitConfiguration->defaultTimeLimit(); + $arguments['timeoutForSmallTests'] = $arguments['timeoutForSmallTests'] ?? $phpunitConfiguration->timeoutForSmallTests(); + $arguments['timeoutForMediumTests'] = $arguments['timeoutForMediumTests'] ?? $phpunitConfiguration->timeoutForMediumTests(); + $arguments['timeoutForLargeTests'] = $arguments['timeoutForLargeTests'] ?? $phpunitConfiguration->timeoutForLargeTests(); + $arguments['reportUselessTests'] = $arguments['reportUselessTests'] ?? $phpunitConfiguration->beStrictAboutTestsThatDoNotTestAnything(); + $arguments['strictCoverage'] = $arguments['strictCoverage'] ?? $phpunitConfiguration->beStrictAboutCoversAnnotation(); + $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] = $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] ?? $codeCoverageConfiguration->ignoreDeprecatedCodeUnits(); + $arguments['disallowTestOutput'] = $arguments['disallowTestOutput'] ?? $phpunitConfiguration->beStrictAboutOutputDuringTests(); + $arguments['disallowTodoAnnotatedTests'] = $arguments['disallowTodoAnnotatedTests'] ?? $phpunitConfiguration->beStrictAboutTodoAnnotatedTests(); + $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $arguments['beStrictAboutResourceUsageDuringSmallTests'] ?? $phpunitConfiguration->beStrictAboutResourceUsageDuringSmallTests(); + $arguments['verbose'] = $arguments['verbose'] ?? $phpunitConfiguration->verbose(); + $arguments['reverseDefectList'] = $arguments['reverseDefectList'] ?? $phpunitConfiguration->reverseDefectList(); + $arguments['forceCoversAnnotation'] = $arguments['forceCoversAnnotation'] ?? $phpunitConfiguration->forceCoversAnnotation(); + $arguments['disableCodeCoverageIgnore'] = $arguments['disableCodeCoverageIgnore'] ?? $codeCoverageConfiguration->disableCodeCoverageIgnore(); + $arguments['registerMockObjectsFromTestArgumentsRecursively'] = $arguments['registerMockObjectsFromTestArgumentsRecursively'] ?? $phpunitConfiguration->registerMockObjectsFromTestArgumentsRecursively(); + $arguments['noInteraction'] = $arguments['noInteraction'] ?? $phpunitConfiguration->noInteraction(); + $arguments['executionOrder'] = $arguments['executionOrder'] ?? $phpunitConfiguration->executionOrder(); + $arguments['resolveDependencies'] = $arguments['resolveDependencies'] ?? $phpunitConfiguration->resolveDependencies(); + + if (!isset($arguments['bootstrap']) && $phpunitConfiguration->hasBootstrap()) { + $arguments['bootstrap'] = $phpunitConfiguration->bootstrap(); } - if (isset($phpunitConfiguration['beStrictAboutChangesToGlobalState']) && !isset($arguments['beStrictAboutChangesToGlobalState'])) { - $arguments['beStrictAboutChangesToGlobalState'] = $phpunitConfiguration['beStrictAboutChangesToGlobalState']; + if (!isset($arguments['cacheResultFile']) && $phpunitConfiguration->hasCacheResultFile()) { + $arguments['cacheResultFile'] = $phpunitConfiguration->cacheResultFile(); } - if (isset($phpunitConfiguration['bootstrap']) && !isset($arguments['bootstrap'])) { - $arguments['bootstrap'] = $phpunitConfiguration['bootstrap']; + if (!isset($arguments['executionOrderDefects'])) { + $arguments['executionOrderDefects'] = $phpunitConfiguration->defectsFirst() ? TestSuiteSorter::ORDER_DEFECTS_FIRST : TestSuiteSorter::ORDER_DEFAULT; } - if (isset($phpunitConfiguration['cacheResult']) && !isset($arguments['cacheResult'])) { - $arguments['cacheResult'] = $phpunitConfiguration['cacheResult']; - } - - if (isset($phpunitConfiguration['cacheResultFile']) && !isset($arguments['cacheResultFile'])) { - $arguments['cacheResultFile'] = $phpunitConfiguration['cacheResultFile']; - } - - if (isset($phpunitConfiguration['cacheTokens']) && !isset($arguments['cacheTokens'])) { - $arguments['cacheTokens'] = $phpunitConfiguration['cacheTokens']; - } - - if (isset($phpunitConfiguration['cacheTokens']) && !isset($arguments['cacheTokens'])) { - $arguments['cacheTokens'] = $phpunitConfiguration['cacheTokens']; - } - - if (isset($phpunitConfiguration['colors']) && !isset($arguments['colors'])) { - $arguments['colors'] = $phpunitConfiguration['colors']; - } - - if (isset($phpunitConfiguration['convertDeprecationsToExceptions']) && !isset($arguments['convertDeprecationsToExceptions'])) { - $arguments['convertDeprecationsToExceptions'] = $phpunitConfiguration['convertDeprecationsToExceptions']; - } - - if (isset($phpunitConfiguration['convertErrorsToExceptions']) && !isset($arguments['convertErrorsToExceptions'])) { - $arguments['convertErrorsToExceptions'] = $phpunitConfiguration['convertErrorsToExceptions']; - } - - if (isset($phpunitConfiguration['convertNoticesToExceptions']) && !isset($arguments['convertNoticesToExceptions'])) { - $arguments['convertNoticesToExceptions'] = $phpunitConfiguration['convertNoticesToExceptions']; - } - - if (isset($phpunitConfiguration['convertWarningsToExceptions']) && !isset($arguments['convertWarningsToExceptions'])) { - $arguments['convertWarningsToExceptions'] = $phpunitConfiguration['convertWarningsToExceptions']; - } - - if (isset($phpunitConfiguration['processIsolation']) && !isset($arguments['processIsolation'])) { - $arguments['processIsolation'] = $phpunitConfiguration['processIsolation']; - } - - if (isset($phpunitConfiguration['stopOnDefect']) && !isset($arguments['stopOnDefect'])) { - $arguments['stopOnDefect'] = $phpunitConfiguration['stopOnDefect']; - } - - if (isset($phpunitConfiguration['stopOnError']) && !isset($arguments['stopOnError'])) { - $arguments['stopOnError'] = $phpunitConfiguration['stopOnError']; - } - - if (isset($phpunitConfiguration['stopOnFailure']) && !isset($arguments['stopOnFailure'])) { - $arguments['stopOnFailure'] = $phpunitConfiguration['stopOnFailure']; - } - - if (isset($phpunitConfiguration['stopOnWarning']) && !isset($arguments['stopOnWarning'])) { - $arguments['stopOnWarning'] = $phpunitConfiguration['stopOnWarning']; - } - - if (isset($phpunitConfiguration['stopOnIncomplete']) && !isset($arguments['stopOnIncomplete'])) { - $arguments['stopOnIncomplete'] = $phpunitConfiguration['stopOnIncomplete']; - } - - if (isset($phpunitConfiguration['stopOnRisky']) && !isset($arguments['stopOnRisky'])) { - $arguments['stopOnRisky'] = $phpunitConfiguration['stopOnRisky']; - } - - if (isset($phpunitConfiguration['stopOnSkipped']) && !isset($arguments['stopOnSkipped'])) { - $arguments['stopOnSkipped'] = $phpunitConfiguration['stopOnSkipped']; - } - - if (isset($phpunitConfiguration['failOnWarning']) && !isset($arguments['failOnWarning'])) { - $arguments['failOnWarning'] = $phpunitConfiguration['failOnWarning']; - } - - if (isset($phpunitConfiguration['failOnRisky']) && !isset($arguments['failOnRisky'])) { - $arguments['failOnRisky'] = $phpunitConfiguration['failOnRisky']; - } - - if (isset($phpunitConfiguration['timeoutForSmallTests']) && !isset($arguments['timeoutForSmallTests'])) { - $arguments['timeoutForSmallTests'] = $phpunitConfiguration['timeoutForSmallTests']; - } - - if (isset($phpunitConfiguration['timeoutForMediumTests']) && !isset($arguments['timeoutForMediumTests'])) { - $arguments['timeoutForMediumTests'] = $phpunitConfiguration['timeoutForMediumTests']; - } - - if (isset($phpunitConfiguration['timeoutForLargeTests']) && !isset($arguments['timeoutForLargeTests'])) { - $arguments['timeoutForLargeTests'] = $phpunitConfiguration['timeoutForLargeTests']; - } - - if (isset($phpunitConfiguration['reportUselessTests']) && !isset($arguments['reportUselessTests'])) { - $arguments['reportUselessTests'] = $phpunitConfiguration['reportUselessTests']; - } - - if (isset($phpunitConfiguration['strictCoverage']) && !isset($arguments['strictCoverage'])) { - $arguments['strictCoverage'] = $phpunitConfiguration['strictCoverage']; - } - - if (isset($phpunitConfiguration['ignoreDeprecatedCodeUnitsFromCodeCoverage']) && !isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) { - $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] = $phpunitConfiguration['ignoreDeprecatedCodeUnitsFromCodeCoverage']; - } - - if (isset($phpunitConfiguration['disallowTestOutput']) && !isset($arguments['disallowTestOutput'])) { - $arguments['disallowTestOutput'] = $phpunitConfiguration['disallowTestOutput']; - } - - if (isset($phpunitConfiguration['defaultTimeLimit']) && !isset($arguments['defaultTimeLimit'])) { - $arguments['defaultTimeLimit'] = $phpunitConfiguration['defaultTimeLimit']; - } - - if (isset($phpunitConfiguration['enforceTimeLimit']) && !isset($arguments['enforceTimeLimit'])) { - $arguments['enforceTimeLimit'] = $phpunitConfiguration['enforceTimeLimit']; - } - - if (isset($phpunitConfiguration['disallowTodoAnnotatedTests']) && !isset($arguments['disallowTodoAnnotatedTests'])) { - $arguments['disallowTodoAnnotatedTests'] = $phpunitConfiguration['disallowTodoAnnotatedTests']; - } - - if (isset($phpunitConfiguration['beStrictAboutResourceUsageDuringSmallTests']) && !isset($arguments['beStrictAboutResourceUsageDuringSmallTests'])) { - $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $phpunitConfiguration['beStrictAboutResourceUsageDuringSmallTests']; - } - - if (isset($phpunitConfiguration['verbose']) && !isset($arguments['verbose'])) { - $arguments['verbose'] = $phpunitConfiguration['verbose']; - } - - if (isset($phpunitConfiguration['reverseDefectList']) && !isset($arguments['reverseList'])) { - $arguments['reverseList'] = $phpunitConfiguration['reverseDefectList']; - } - - if (isset($phpunitConfiguration['forceCoversAnnotation']) && !isset($arguments['forceCoversAnnotation'])) { - $arguments['forceCoversAnnotation'] = $phpunitConfiguration['forceCoversAnnotation']; - } - - if (isset($phpunitConfiguration['disableCodeCoverageIgnore']) && !isset($arguments['disableCodeCoverageIgnore'])) { - $arguments['disableCodeCoverageIgnore'] = $phpunitConfiguration['disableCodeCoverageIgnore']; - } - - if (isset($phpunitConfiguration['registerMockObjectsFromTestArgumentsRecursively']) && !isset($arguments['registerMockObjectsFromTestArgumentsRecursively'])) { - $arguments['registerMockObjectsFromTestArgumentsRecursively'] = $phpunitConfiguration['registerMockObjectsFromTestArgumentsRecursively']; - } - - if (isset($phpunitConfiguration['executionOrder']) && !isset($arguments['executionOrder'])) { - $arguments['executionOrder'] = $phpunitConfiguration['executionOrder']; - } - - if (isset($phpunitConfiguration['executionOrderDefects']) && !isset($arguments['executionOrderDefects'])) { - $arguments['executionOrderDefects'] = $phpunitConfiguration['executionOrderDefects']; - } - - if (isset($phpunitConfiguration['resolveDependencies']) && !isset($arguments['resolveDependencies'])) { - $arguments['resolveDependencies'] = $phpunitConfiguration['resolveDependencies']; - } - - if (isset($phpunitConfiguration['noInteraction']) && !isset($arguments['noInteraction'])) { - $arguments['noInteraction'] = $phpunitConfiguration['noInteraction']; - } - - if (isset($phpunitConfiguration['conflictBetweenPrinterClassAndTestdox'])) { + if ($phpunitConfiguration->conflictBetweenPrinterClassAndTestdox()) { $arguments['conflictBetweenPrinterClassAndTestdox'] = true; } @@ -1043,198 +1006,91 @@ final class TestRunner extends BaseTestRunner $groupCliArgs = $arguments['groups']; } - $groupConfiguration = $arguments['configuration']->getGroupConfiguration(); + $groupConfiguration = $arguments['configurationObject']->groups(); - if (!empty($groupConfiguration['include']) && !isset($arguments['groups'])) { - $arguments['groups'] = $groupConfiguration['include']; + if (!isset($arguments['groups']) && $groupConfiguration->hasInclude()) { + $arguments['groups'] = $groupConfiguration->include()->asArrayOfStrings(); } - if (!empty($groupConfiguration['exclude']) && !isset($arguments['excludeGroups'])) { - $arguments['excludeGroups'] = array_diff($groupConfiguration['exclude'], $groupCliArgs); + if (!isset($arguments['excludeGroups']) && $groupConfiguration->hasExclude()) { + $arguments['excludeGroups'] = array_diff($groupConfiguration->exclude()->asArrayOfStrings(), $groupCliArgs); } - foreach ($arguments['configuration']->getExtensionConfiguration() as $extension) { - if ($extension['file'] !== '' && !class_exists($extension['class'], false)) { - require_once $extension['file']; - } + $extensionHandler = new ExtensionHandler; - if (!class_exists($extension['class'])) { - throw new Exception( - sprintf( - 'Class "%s" does not exist', - $extension['class'] - ) - ); - } - - try { - $extensionClass = new ReflectionClass($extension['class']); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - if (!$extensionClass->implementsInterface(Hook::class)) { - throw new Exception( - sprintf( - 'Class "%s" does not implement a PHPUnit\Runner\Hook interface', - $extension['class'] - ) - ); - } - - if (count($extension['arguments']) === 0) { - $extensionObject = $extensionClass->newInstance(); - } else { - $extensionObject = $extensionClass->newInstanceArgs( - $extension['arguments'] - ); - } - - assert($extensionObject instanceof Hook); - - $this->addExtension($extensionObject); + foreach ($arguments['configurationObject']->extensions() as $extension) { + $extensionHandler->registerExtension($extension, $this); } - foreach ($arguments['configuration']->getListenerConfiguration() as $listener) { - if ($listener['file'] !== '' && !class_exists($listener['class'], false)) { - require_once $listener['file']; - } - - if (!class_exists($listener['class'])) { - throw new Exception( - sprintf( - 'Class "%s" does not exist', - $listener['class'] - ) - ); - } - - try { - $listenerClass = new ReflectionClass($listener['class']); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - if (!$listenerClass->implementsInterface(TestListener::class)) { - throw new Exception( - sprintf( - 'Class "%s" does not implement the PHPUnit\Framework\TestListener interface', - $listener['class'] - ) - ); - } - - if (count($listener['arguments']) === 0) { - $listener = new $listener['class']; - } else { - $listener = $listenerClass->newInstanceArgs( - $listener['arguments'] - ); - } - - $arguments['listeners'][] = $listener; + foreach ($arguments['configurationObject']->listeners() as $listener) { + $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener); } - $loggingConfiguration = $arguments['configuration']->getLoggingConfiguration(); + unset($extensionHandler); - if (isset($loggingConfiguration['coverage-clover']) && !isset($arguments['coverageClover'])) { - $arguments['coverageClover'] = $loggingConfiguration['coverage-clover']; - } - - if (isset($loggingConfiguration['coverage-crap4j']) && !isset($arguments['coverageCrap4J'])) { - $arguments['coverageCrap4J'] = $loggingConfiguration['coverage-crap4j']; - - if (isset($loggingConfiguration['crap4jThreshold']) && !isset($arguments['crap4jThreshold'])) { - $arguments['crap4jThreshold'] = $loggingConfiguration['crap4jThreshold']; - } - } - - if (isset($loggingConfiguration['coverage-html']) && !isset($arguments['coverageHtml'])) { - if (isset($loggingConfiguration['lowUpperBound']) && !isset($arguments['reportLowUpperBound'])) { - $arguments['reportLowUpperBound'] = $loggingConfiguration['lowUpperBound']; - } - - if (isset($loggingConfiguration['highLowerBound']) && !isset($arguments['reportHighLowerBound'])) { - $arguments['reportHighLowerBound'] = $loggingConfiguration['highLowerBound']; - } - - $arguments['coverageHtml'] = $loggingConfiguration['coverage-html']; - } - - if (isset($loggingConfiguration['coverage-php']) && !isset($arguments['coveragePHP'])) { - $arguments['coveragePHP'] = $loggingConfiguration['coverage-php']; - } - - if (isset($loggingConfiguration['coverage-text']) && !isset($arguments['coverageText'])) { - $arguments['coverageText'] = $loggingConfiguration['coverage-text']; - $arguments['coverageTextShowUncoveredFiles'] = $loggingConfiguration['coverageTextShowUncoveredFiles'] ?? false; - $arguments['coverageTextShowOnlySummary'] = $loggingConfiguration['coverageTextShowOnlySummary'] ?? false; - } - - if (isset($loggingConfiguration['coverage-xml']) && !isset($arguments['coverageXml'])) { - $arguments['coverageXml'] = $loggingConfiguration['coverage-xml']; - } - - if (isset($loggingConfiguration['plain'])) { - $arguments['listeners'][] = new ResultPrinter( - $loggingConfiguration['plain'], - true + foreach ($arguments['unavailableExtensions'] as $extension) { + $arguments['warnings'][] = sprintf( + 'Extension "%s" is not available', + $extension ); } - if (isset($loggingConfiguration['teamcity']) && !isset($arguments['teamcityLogfile'])) { - $arguments['teamcityLogfile'] = $loggingConfiguration['teamcity']; + $loggingConfiguration = $arguments['configurationObject']->logging(); + + if (!isset($arguments['noLogging'])) { + if ($loggingConfiguration->hasText()) { + $arguments['listeners'][] = new DefaultResultPrinter( + $loggingConfiguration->text()->target()->path(), + true + ); + } + + if (!isset($arguments['teamcityLogfile']) && $loggingConfiguration->hasTeamCity()) { + $arguments['teamcityLogfile'] = $loggingConfiguration->teamCity()->target()->path(); + } + + if (!isset($arguments['junitLogfile']) && $loggingConfiguration->hasJunit()) { + $arguments['junitLogfile'] = $loggingConfiguration->junit()->target()->path(); + } + + if (!isset($arguments['testdoxHTMLFile']) && $loggingConfiguration->hasTestDoxHtml()) { + $arguments['testdoxHTMLFile'] = $loggingConfiguration->testDoxHtml()->target()->path(); + } + + if (!isset($arguments['testdoxTextFile']) && $loggingConfiguration->hasTestDoxText()) { + $arguments['testdoxTextFile'] = $loggingConfiguration->testDoxText()->target()->path(); + } + + if (!isset($arguments['testdoxXMLFile']) && $loggingConfiguration->hasTestDoxXml()) { + $arguments['testdoxXMLFile'] = $loggingConfiguration->testDoxXml()->target()->path(); + } } - if (isset($loggingConfiguration['junit']) && !isset($arguments['junitLogfile'])) { - $arguments['junitLogfile'] = $loggingConfiguration['junit']; + $testdoxGroupConfiguration = $arguments['configurationObject']->testdoxGroups(); + + if (!isset($arguments['testdoxGroups']) && $testdoxGroupConfiguration->hasInclude()) { + $arguments['testdoxGroups'] = $testdoxGroupConfiguration->include()->asArrayOfStrings(); } - if (isset($loggingConfiguration['testdox-html']) && !isset($arguments['testdoxHTMLFile'])) { - $arguments['testdoxHTMLFile'] = $loggingConfiguration['testdox-html']; - } - - if (isset($loggingConfiguration['testdox-text']) && !isset($arguments['testdoxTextFile'])) { - $arguments['testdoxTextFile'] = $loggingConfiguration['testdox-text']; - } - - if (isset($loggingConfiguration['testdox-xml']) && !isset($arguments['testdoxXMLFile'])) { - $arguments['testdoxXMLFile'] = $loggingConfiguration['testdox-xml']; - } - - $testdoxGroupConfiguration = $arguments['configuration']->getTestdoxGroupConfiguration(); - - if (isset($testdoxGroupConfiguration['include']) && - !isset($arguments['testdoxGroups'])) { - $arguments['testdoxGroups'] = $testdoxGroupConfiguration['include']; - } - - if (isset($testdoxGroupConfiguration['exclude']) && - !isset($arguments['testdoxExcludeGroups'])) { - $arguments['testdoxExcludeGroups'] = $testdoxGroupConfiguration['exclude']; + if (!isset($arguments['testdoxExcludeGroups']) && $testdoxGroupConfiguration->hasExclude()) { + $arguments['testdoxExcludeGroups'] = $testdoxGroupConfiguration->exclude()->asArrayOfStrings(); } } - $arguments['addUncoveredFilesFromWhitelist'] = $arguments['addUncoveredFilesFromWhitelist'] ?? true; + $extensionHandler = new ExtensionHandler; + + foreach ($arguments['extensions'] as $extension) { + $extensionHandler->registerExtension($extension, $this); + } + + unset($extensionHandler); + $arguments['backupGlobals'] = $arguments['backupGlobals'] ?? null; $arguments['backupStaticAttributes'] = $arguments['backupStaticAttributes'] ?? null; $arguments['beStrictAboutChangesToGlobalState'] = $arguments['beStrictAboutChangesToGlobalState'] ?? null; $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $arguments['beStrictAboutResourceUsageDuringSmallTests'] ?? false; $arguments['cacheResult'] = $arguments['cacheResult'] ?? true; - $arguments['cacheTokens'] = $arguments['cacheTokens'] ?? false; - $arguments['colors'] = $arguments['colors'] ?? ResultPrinter::COLOR_DEFAULT; + $arguments['colors'] = $arguments['colors'] ?? DefaultResultPrinter::COLOR_DEFAULT; $arguments['columns'] = $arguments['columns'] ?? 80; $arguments['convertDeprecationsToExceptions'] = $arguments['convertDeprecationsToExceptions'] ?? false; $arguments['convertErrorsToExceptions'] = $arguments['convertErrorsToExceptions'] ?? true; @@ -1248,12 +1104,13 @@ final class TestRunner extends BaseTestRunner $arguments['excludeGroups'] = $arguments['excludeGroups'] ?? []; $arguments['executionOrder'] = $arguments['executionOrder'] ?? TestSuiteSorter::ORDER_DEFAULT; $arguments['executionOrderDefects'] = $arguments['executionOrderDefects'] ?? TestSuiteSorter::ORDER_DEFAULT; + $arguments['failOnIncomplete'] = $arguments['failOnIncomplete'] ?? false; $arguments['failOnRisky'] = $arguments['failOnRisky'] ?? false; + $arguments['failOnSkipped'] = $arguments['failOnSkipped'] ?? false; $arguments['failOnWarning'] = $arguments['failOnWarning'] ?? false; $arguments['groups'] = $arguments['groups'] ?? []; $arguments['noInteraction'] = $arguments['noInteraction'] ?? false; $arguments['processIsolation'] = $arguments['processIsolation'] ?? false; - $arguments['processUncoveredFilesFromWhitelist'] = $arguments['processUncoveredFilesFromWhitelist'] ?? false; $arguments['randomOrderSeed'] = $arguments['randomOrderSeed'] ?? time(); $arguments['registerMockObjectsFromTestArgumentsRecursively'] = $arguments['registerMockObjectsFromTestArgumentsRecursively'] ?? false; $arguments['repeat'] = $arguments['repeat'] ?? false; @@ -1287,7 +1144,9 @@ final class TestRunner extends BaseTestRunner { if (!$arguments['filter'] && empty($arguments['groups']) && - empty($arguments['excludeGroups'])) { + empty($arguments['excludeGroups']) && + empty($arguments['testsCovering']) && + empty($arguments['testsUsing'])) { return; } @@ -1307,6 +1166,32 @@ final class TestRunner extends BaseTestRunner ); } + if (!empty($arguments['testsCovering'])) { + $filterFactory->addFilter( + new ReflectionClass(IncludeGroupFilterIterator::class), + array_map( + static function (string $name): string + { + return '__phpunit_covers_' . $name; + }, + $arguments['testsCovering'] + ) + ); + } + + if (!empty($arguments['testsUsing'])) { + $filterFactory->addFilter( + new ReflectionClass(IncludeGroupFilterIterator::class), + array_map( + static function (string $name): string + { + return '__phpunit_uses_' . $name; + }, + $arguments['testsUsing'] + ) + ); + } + if ($arguments['filter']) { $filterFactory->addFilter( new ReflectionClass(NameFilterIterator::class), @@ -1334,16 +1219,9 @@ final class TestRunner extends BaseTestRunner $this->messagePrinted = true; } - /** - * @template T as Printer - * - * @param class-string $class - * - * @return T - */ - private function createPrinter(string $class, array $arguments): Printer + private function createPrinter(string $class, array $arguments): ResultPrinter { - return new $class( + $object = new $class( (isset($arguments['stderr']) && $arguments['stderr'] === true) ? 'php://stderr' : null, $arguments['verbose'], $arguments['colors'], @@ -1351,6 +1229,10 @@ final class TestRunner extends BaseTestRunner $arguments['columns'], $arguments['reverseList'] ); + + assert($object instanceof ResultPrinter); + + return $object; } private function codeCoverageGenerationStart(string $format): void @@ -1362,7 +1244,7 @@ final class TestRunner extends BaseTestRunner ) ); - Timer::start(); + $this->timer->start(); } private function codeCoverageGenerationSucceeded(): void @@ -1370,7 +1252,7 @@ final class TestRunner extends BaseTestRunner $this->write( sprintf( "done [%s]\n", - Timer::secondsToTimeString(Timer::stop()) + $this->timer->stop()->asString() ) ); } @@ -1380,7 +1262,7 @@ final class TestRunner extends BaseTestRunner $this->write( sprintf( "failed [%s]\n%s\n", - Timer::secondsToTimeString(Timer::stop()), + $this->timer->stop()->asString(), $e->getMessage() ) ); diff --git a/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php b/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php new file mode 100644 index 000000000..170e6602b --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.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 PHPUnit\TextUI; + +use const PHP_VERSION; +use function explode; +use function in_array; +use function is_dir; +use function is_file; +use function strpos; +use function version_compare; +use PHPUnit\Framework\Exception as FrameworkException; +use PHPUnit\Framework\TestSuite as TestSuiteObject; +use PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection; +use SebastianBergmann\FileIterator\Facade; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class TestSuiteMapper +{ + /** + * @throws RuntimeException + * @throws TestDirectoryNotFoundException + * @throws TestFileNotFoundException + */ + public function map(TestSuiteCollection $configuration, string $filter): TestSuiteObject + { + try { + $filterAsArray = $filter ? explode(',', $filter) : []; + $result = new TestSuiteObject; + + foreach ($configuration as $testSuiteConfiguration) { + if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) { + continue; + } + + $testSuite = new TestSuiteObject($testSuiteConfiguration->name()); + $testSuiteEmpty = true; + + $exclude = []; + + foreach ($testSuiteConfiguration->exclude()->asArray() as $file) { + $exclude[] = $file->path(); + } + + foreach ($testSuiteConfiguration->directories() as $directory) { + if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()->asString())) { + continue; + } + + $files = (new Facade)->getFilesAsArray( + $directory->path(), + $directory->suffix(), + $directory->prefix(), + $exclude + ); + + if (!empty($files)) { + $testSuite->addTestFiles($files); + + $testSuiteEmpty = false; + } elseif (strpos($directory->path(), '*') === false && !is_dir($directory->path())) { + throw new TestDirectoryNotFoundException($directory->path()); + } + } + + foreach ($testSuiteConfiguration->files() as $file) { + if (!is_file($file->path())) { + throw new TestFileNotFoundException($file->path()); + } + + if (!version_compare(PHP_VERSION, $file->phpVersion(), $file->phpVersionOperator()->asString())) { + continue; + } + + $testSuite->addTestFile($file->path()); + + $testSuiteEmpty = false; + } + + if (!$testSuiteEmpty) { + $result->addTest($testSuite); + } + } + + return $result; + } catch (FrameworkException $e) { + throw new RuntimeException( + $e->getMessage(), + $e->getCode(), + $e + ); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php new file mode 100644 index 000000000..80abfac7d --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php @@ -0,0 +1,363 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage; + +use function count; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\DirectoryCollection; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml; +use PHPUnit\TextUI\XmlConfiguration\Directory; +use PHPUnit\TextUI\XmlConfiguration\Exception; +use PHPUnit\TextUI\XmlConfiguration\FileCollection; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class CodeCoverage +{ + /** + * @var ?Directory + */ + private $cacheDirectory; + + /** + * @var DirectoryCollection + */ + private $directories; + + /** + * @var FileCollection + */ + private $files; + + /** + * @var DirectoryCollection + */ + private $excludeDirectories; + + /** + * @var FileCollection + */ + private $excludeFiles; + + /** + * @var bool + */ + private $pathCoverage; + + /** + * @var bool + */ + private $includeUncoveredFiles; + + /** + * @var bool + */ + private $processUncoveredFiles; + + /** + * @var bool + */ + private $ignoreDeprecatedCodeUnits; + + /** + * @var bool + */ + private $disableCodeCoverageIgnore; + + /** + * @var ?Clover + */ + private $clover; + + /** + * @var ?Cobertura + */ + private $cobertura; + + /** + * @var ?Crap4j + */ + private $crap4j; + + /** + * @var ?Html + */ + private $html; + + /** + * @var ?Php + */ + private $php; + + /** + * @var ?Text + */ + private $text; + + /** + * @var ?Xml + */ + private $xml; + + public function __construct(?Directory $cacheDirectory, DirectoryCollection $directories, FileCollection $files, DirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $pathCoverage, bool $includeUncoveredFiles, bool $processUncoveredFiles, bool $ignoreDeprecatedCodeUnits, bool $disableCodeCoverageIgnore, ?Clover $clover, ?Cobertura $cobertura, ?Crap4j $crap4j, ?Html $html, ?Php $php, ?Text $text, ?Xml $xml) + { + $this->cacheDirectory = $cacheDirectory; + $this->directories = $directories; + $this->files = $files; + $this->excludeDirectories = $excludeDirectories; + $this->excludeFiles = $excludeFiles; + $this->pathCoverage = $pathCoverage; + $this->includeUncoveredFiles = $includeUncoveredFiles; + $this->processUncoveredFiles = $processUncoveredFiles; + $this->ignoreDeprecatedCodeUnits = $ignoreDeprecatedCodeUnits; + $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore; + $this->clover = $clover; + $this->cobertura = $cobertura; + $this->crap4j = $crap4j; + $this->html = $html; + $this->php = $php; + $this->text = $text; + $this->xml = $xml; + } + + /** + * @psalm-assert-if-true !null $this->cacheDirectory + */ + public function hasCacheDirectory(): bool + { + return $this->cacheDirectory !== null; + } + + /** + * @throws Exception + */ + public function cacheDirectory(): Directory + { + if (!$this->hasCacheDirectory()) { + throw new Exception( + 'No cache directory has been configured' + ); + } + + return $this->cacheDirectory; + } + + public function hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport(): bool + { + return count($this->directories) > 0 || count($this->files) > 0; + } + + public function directories(): DirectoryCollection + { + return $this->directories; + } + + public function files(): FileCollection + { + return $this->files; + } + + public function excludeDirectories(): DirectoryCollection + { + return $this->excludeDirectories; + } + + public function excludeFiles(): FileCollection + { + return $this->excludeFiles; + } + + public function pathCoverage(): bool + { + return $this->pathCoverage; + } + + public function includeUncoveredFiles(): bool + { + return $this->includeUncoveredFiles; + } + + public function ignoreDeprecatedCodeUnits(): bool + { + return $this->ignoreDeprecatedCodeUnits; + } + + public function disableCodeCoverageIgnore(): bool + { + return $this->disableCodeCoverageIgnore; + } + + public function processUncoveredFiles(): bool + { + return $this->processUncoveredFiles; + } + + /** + * @psalm-assert-if-true !null $this->clover + */ + public function hasClover(): bool + { + return $this->clover !== null; + } + + /** + * @throws Exception + */ + public function clover(): Clover + { + if (!$this->hasClover()) { + throw new Exception( + 'Code Coverage report "Clover XML" has not been configured' + ); + } + + return $this->clover; + } + + /** + * @psalm-assert-if-true !null $this->cobertura + */ + public function hasCobertura(): bool + { + return $this->cobertura !== null; + } + + /** + * @throws Exception + */ + public function cobertura(): Cobertura + { + if (!$this->hasCobertura()) { + throw new Exception( + 'Code Coverage report "Cobertura XML" has not been configured' + ); + } + + return $this->cobertura; + } + + /** + * @psalm-assert-if-true !null $this->crap4j + */ + public function hasCrap4j(): bool + { + return $this->crap4j !== null; + } + + /** + * @throws Exception + */ + public function crap4j(): Crap4j + { + if (!$this->hasCrap4j()) { + throw new Exception( + 'Code Coverage report "Crap4J" has not been configured' + ); + } + + return $this->crap4j; + } + + /** + * @psalm-assert-if-true !null $this->html + */ + public function hasHtml(): bool + { + return $this->html !== null; + } + + /** + * @throws Exception + */ + public function html(): Html + { + if (!$this->hasHtml()) { + throw new Exception( + 'Code Coverage report "HTML" has not been configured' + ); + } + + return $this->html; + } + + /** + * @psalm-assert-if-true !null $this->php + */ + public function hasPhp(): bool + { + return $this->php !== null; + } + + /** + * @throws Exception + */ + public function php(): Php + { + if (!$this->hasPhp()) { + throw new Exception( + 'Code Coverage report "PHP" has not been configured' + ); + } + + return $this->php; + } + + /** + * @psalm-assert-if-true !null $this->text + */ + public function hasText(): bool + { + return $this->text !== null; + } + + /** + * @throws Exception + */ + public function text(): Text + { + if (!$this->hasText()) { + throw new Exception( + 'Code Coverage report "Text" has not been configured' + ); + } + + return $this->text; + } + + /** + * @psalm-assert-if-true !null $this->xml + */ + public function hasXml(): bool + { + return $this->xml !== null; + } + + /** + * @throws Exception + */ + public function xml(): Xml + { + if (!$this->hasXml()) { + throw new Exception( + 'Code Coverage report "XML" has not been configured' + ); + } + + return $this->xml; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php new file mode 100644 index 000000000..91659f4dc --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Directory +{ + /** + * @var string + */ + private $path; + + /** + * @var string + */ + private $prefix; + + /** + * @var string + */ + private $suffix; + + /** + * @var string + */ + private $group; + + public function __construct(string $path, string $prefix, string $suffix, string $group) + { + $this->path = $path; + $this->prefix = $prefix; + $this->suffix = $suffix; + $this->group = $group; + } + + public function path(): string + { + return $this->path; + } + + public function prefix(): string + { + return $this->prefix; + } + + public function suffix(): string + { + return $this->suffix; + } + + public function group(): string + { + return $this->group; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php new file mode 100644 index 000000000..88ec1e384 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class DirectoryCollection implements Countable, IteratorAggregate +{ + /** + * @var Directory[] + */ + private $directories; + + /** + * @param Directory[] $directories + */ + public static function fromArray(array $directories): self + { + return new self(...$directories); + } + + private function __construct(Directory ...$directories) + { + $this->directories = $directories; + } + + /** + * @return Directory[] + */ + public function asArray(): array + { + return $this->directories; + } + + public function count(): int + { + return count($this->directories); + } + + public function getIterator(): DirectoryCollectionIterator + { + return new DirectoryCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php new file mode 100644 index 000000000..f2fee25d4 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class DirectoryCollectionIterator implements Countable, Iterator +{ + /** + * @var Directory[] + */ + private $directories; + + /** + * @var int + */ + private $position; + + public function __construct(DirectoryCollection $directories) + { + $this->directories = $directories->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->directories); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Directory + { + return $this->directories[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php new file mode 100644 index 000000000..102c96ebc --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage; + +use SebastianBergmann\CodeCoverage\Filter; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class FilterMapper +{ + public function map(Filter $filter, CodeCoverage $configuration): void + { + foreach ($configuration->directories() as $directory) { + $filter->includeDirectory( + $directory->path(), + $directory->suffix(), + $directory->prefix() + ); + } + + foreach ($configuration->files() as $file) { + $filter->includeFile($file->path()); + } + + foreach ($configuration->excludeDirectories() as $directory) { + $filter->excludeDirectory( + $directory->path(), + $directory->suffix(), + $directory->prefix() + ); + } + + foreach ($configuration->excludeFiles() as $file) { + $filter->excludeFile($file->path()); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php new file mode 100644 index 000000000..b1094ec31 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Clover +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php new file mode 100644 index 000000000..f831ac098 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Cobertura +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php new file mode 100644 index 000000000..4904775dd --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Crap4j +{ + /** + * @var File + */ + private $target; + + /** + * @var int + */ + private $threshold; + + public function __construct(File $target, int $threshold) + { + $this->target = $target; + $this->threshold = $threshold; + } + + public function target(): File + { + return $this->target; + } + + public function threshold(): int + { + return $this->threshold; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php new file mode 100644 index 000000000..ce3d0284a --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\Directory; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Html +{ + /** + * @var Directory + */ + private $target; + + /** + * @var int + */ + private $lowUpperBound; + + /** + * @var int + */ + private $highLowerBound; + + public function __construct(Directory $target, int $lowUpperBound, int $highLowerBound) + { + $this->target = $target; + $this->lowUpperBound = $lowUpperBound; + $this->highLowerBound = $highLowerBound; + } + + public function target(): Directory + { + return $this->target; + } + + public function lowUpperBound(): int + { + return $this->lowUpperBound; + } + + public function highLowerBound(): int + { + return $this->highLowerBound; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php new file mode 100644 index 000000000..dc5d32eab --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Php +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php new file mode 100644 index 000000000..cb7470d3b --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Text +{ + /** + * @var File + */ + private $target; + + /** + * @var bool + */ + private $showUncoveredFiles; + + /** + * @var bool + */ + private $showOnlySummary; + + public function __construct(File $target, bool $showUncoveredFiles, bool $showOnlySummary) + { + $this->target = $target; + $this->showUncoveredFiles = $showUncoveredFiles; + $this->showOnlySummary = $showOnlySummary; + } + + public function target(): File + { + return $this->target; + } + + public function showUncoveredFiles(): bool + { + return $this->showUncoveredFiles; + } + + public function showOnlySummary(): bool + { + return $this->showOnlySummary; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php new file mode 100644 index 000000000..34073bd59 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report; + +use PHPUnit\TextUI\XmlConfiguration\Directory; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Xml +{ + /** + * @var Directory + */ + private $target; + + public function __construct(Directory $target) + { + $this->target = $target; + } + + public function target(): Directory + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php new file mode 100644 index 000000000..4067e2f89 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php @@ -0,0 +1,152 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; +use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; +use PHPUnit\Util\Xml\ValidationResult; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Configuration +{ + /** + * @var string + */ + private $filename; + + /** + * @var ValidationResult + */ + private $validationResult; + + /** + * @var ExtensionCollection + */ + private $extensions; + + /** + * @var CodeCoverage + */ + private $codeCoverage; + + /** + * @var Groups + */ + private $groups; + + /** + * @var Groups + */ + private $testdoxGroups; + + /** + * @var ExtensionCollection + */ + private $listeners; + + /** + * @var Logging + */ + private $logging; + + /** + * @var Php + */ + private $php; + + /** + * @var PHPUnit + */ + private $phpunit; + + /** + * @var TestSuiteCollection + */ + private $testSuite; + + public function __construct(string $filename, ValidationResult $validationResult, ExtensionCollection $extensions, CodeCoverage $codeCoverage, Groups $groups, Groups $testdoxGroups, ExtensionCollection $listeners, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite) + { + $this->filename = $filename; + $this->validationResult = $validationResult; + $this->extensions = $extensions; + $this->codeCoverage = $codeCoverage; + $this->groups = $groups; + $this->testdoxGroups = $testdoxGroups; + $this->listeners = $listeners; + $this->logging = $logging; + $this->php = $php; + $this->phpunit = $phpunit; + $this->testSuite = $testSuite; + } + + public function filename(): string + { + return $this->filename; + } + + public function hasValidationErrors(): bool + { + return $this->validationResult->hasValidationErrors(); + } + + public function validationErrors(): string + { + return $this->validationResult->asString(); + } + + public function extensions(): ExtensionCollection + { + return $this->extensions; + } + + public function codeCoverage(): CodeCoverage + { + return $this->codeCoverage; + } + + public function groups(): Groups + { + return $this->groups; + } + + public function testdoxGroups(): Groups + { + return $this->testdoxGroups; + } + + public function listeners(): ExtensionCollection + { + return $this->listeners; + } + + public function logging(): Logging + { + return $this->logging; + } + + public function php(): Php + { + return $this->php; + } + + public function phpunit(): PHPUnit + { + return $this->phpunit; + } + + public function testSuite(): TestSuiteCollection + { + return $this->testSuite; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php new file mode 100644 index 000000000..162b37e88 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Exception extends RuntimeException implements \PHPUnit\Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php new file mode 100644 index 000000000..b0fdf64fb --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Directory +{ + /** + * @var string + */ + private $path; + + public function __construct(string $path) + { + $this->path = $path; + } + + public function path(): string + { + return $this->path; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php new file mode 100644 index 000000000..cb8408925 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class DirectoryCollection implements Countable, IteratorAggregate +{ + /** + * @var Directory[] + */ + private $directories; + + /** + * @param Directory[] $directories + */ + public static function fromArray(array $directories): self + { + return new self(...$directories); + } + + private function __construct(Directory ...$directories) + { + $this->directories = $directories; + } + + /** + * @return Directory[] + */ + public function asArray(): array + { + return $this->directories; + } + + public function count(): int + { + return count($this->directories); + } + + public function getIterator(): DirectoryCollectionIterator + { + return new DirectoryCollectionIterator($this); + } + + public function isEmpty(): bool + { + return $this->count() === 0; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php new file mode 100644 index 000000000..4b0927447 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class DirectoryCollectionIterator implements Countable, Iterator +{ + /** + * @var Directory[] + */ + private $directories; + + /** + * @var int + */ + private $position; + + public function __construct(DirectoryCollection $directories) + { + $this->directories = $directories->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->directories); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Directory + { + return $this->directories[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php new file mode 100644 index 000000000..6bdd1c249 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class File +{ + /** + * @var string + */ + private $path; + + public function __construct(string $path) + { + $this->path = $path; + } + + public function path(): string + { + return $this->path; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php new file mode 100644 index 000000000..60e7e401b --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class FileCollection implements Countable, IteratorAggregate +{ + /** + * @var File[] + */ + private $files; + + /** + * @param File[] $files + */ + public static function fromArray(array $files): self + { + return new self(...$files); + } + + private function __construct(File ...$files) + { + $this->files = $files; + } + + /** + * @return File[] + */ + public function asArray(): array + { + return $this->files; + } + + public function count(): int + { + return count($this->files); + } + + public function getIterator(): FileCollectionIterator + { + return new FileCollectionIterator($this); + } + + public function isEmpty(): bool + { + return $this->count() === 0; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php new file mode 100644 index 000000000..0ce4273d1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class FileCollectionIterator implements Countable, Iterator +{ + /** + * @var File[] + */ + private $files; + + /** + * @var int + */ + private $position; + + public function __construct(FileCollection $files) + { + $this->files = $files->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->files); + } + + public function key(): int + { + return $this->position; + } + + public function current(): File + { + return $this->files[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php new file mode 100644 index 000000000..cc77b1a3c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function str_replace; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Generator +{ + /** + * @var string + */ + private const TEMPLATE = <<<'EOT' + + + + + {tests_directory} + + + + + + {src_directory} + + + + +EOT; + + public function generateDefaultConfiguration(string $phpunitVersion, string $bootstrapScript, string $testsDirectory, string $srcDirectory, string $cacheDirectory): string + { + return str_replace( + [ + '{phpunit_version}', + '{bootstrap_script}', + '{tests_directory}', + '{src_directory}', + '{cache_directory}', + ], + [ + $phpunitVersion, + $bootstrapScript, + $testsDirectory, + $srcDirectory, + $cacheDirectory, + ], + self::TEMPLATE + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php new file mode 100644 index 000000000..bb0d9252a --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Group +{ + /** + * @var string + */ + private $name; + + public function __construct(string $name) + { + $this->name = $name; + } + + public function name(): string + { + return $this->name; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php new file mode 100644 index 000000000..735d8af18 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class GroupCollection implements IteratorAggregate +{ + /** + * @var Group[] + */ + private $groups; + + /** + * @param Group[] $groups + */ + public static function fromArray(array $groups): self + { + return new self(...$groups); + } + + private function __construct(Group ...$groups) + { + $this->groups = $groups; + } + + /** + * @return Group[] + */ + public function asArray(): array + { + return $this->groups; + } + + /** + * @return string[] + */ + public function asArrayOfStrings(): array + { + $result = []; + + foreach ($this->groups as $group) { + $result[] = $group->name(); + } + + return $result; + } + + public function isEmpty(): bool + { + return empty($this->groups); + } + + public function getIterator(): GroupCollectionIterator + { + return new GroupCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php new file mode 100644 index 000000000..843a708e5 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class GroupCollectionIterator implements Countable, Iterator +{ + /** + * @var Group[] + */ + private $groups; + + /** + * @var int + */ + private $position; + + public function __construct(GroupCollection $groups) + { + $this->groups = $groups->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->groups); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Group + { + return $this->groups[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php new file mode 100644 index 000000000..0604ce328 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.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 PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Groups +{ + /** + * @var GroupCollection + */ + private $include; + + /** + * @var GroupCollection + */ + private $exclude; + + public function __construct(GroupCollection $include, GroupCollection $exclude) + { + $this->include = $include; + $this->exclude = $exclude; + } + + public function hasInclude(): bool + { + return !$this->include->isEmpty(); + } + + public function include(): GroupCollection + { + return $this->include; + } + + public function hasExclude(): bool + { + return !$this->exclude->isEmpty(); + } + + public function exclude(): GroupCollection + { + return $this->exclude; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php new file mode 100644 index 000000000..c1877317d --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php @@ -0,0 +1,1264 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use const DIRECTORY_SEPARATOR; +use const PHP_VERSION; +use function assert; +use function defined; +use function dirname; +use function explode; +use function is_file; +use function is_numeric; +use function preg_match; +use function stream_resolve_include_path; +use function strlen; +use function strpos; +use function strtolower; +use function substr; +use function trim; +use DOMDocument; +use DOMElement; +use DOMNodeList; +use DOMXPath; +use PHPUnit\Runner\TestSuiteSorter; +use PHPUnit\Runner\Version; +use PHPUnit\TextUI\DefaultResultPrinter; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\Directory as FilterDirectory; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\DirectoryCollection as FilterDirectoryCollection; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html as CodeCoverageHtml; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php as CodeCoveragePhp; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text as CodeCoverageText; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml as CodeCoverageXml; +use PHPUnit\TextUI\XmlConfiguration\Logging\Junit; +use PHPUnit\TextUI\XmlConfiguration\Logging\Logging; +use PHPUnit\TextUI\XmlConfiguration\Logging\TeamCity; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Xml as TestDoxXml; +use PHPUnit\TextUI\XmlConfiguration\Logging\Text; +use PHPUnit\TextUI\XmlConfiguration\TestSuite as TestSuiteConfiguration; +use PHPUnit\Util\TestDox\CliTestDoxPrinter; +use PHPUnit\Util\VersionComparisonOperator; +use PHPUnit\Util\Xml; +use PHPUnit\Util\Xml\Exception as XmlException; +use PHPUnit\Util\Xml\Loader as XmlLoader; +use PHPUnit\Util\Xml\SchemaFinder; +use PHPUnit\Util\Xml\Validator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Loader +{ + /** + * @throws Exception + */ + public function load(string $filename): Configuration + { + try { + $document = (new XmlLoader)->loadFile($filename, false, true, true); + } catch (XmlException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } + + $xpath = new DOMXPath($document); + + try { + $xsdFilename = (new SchemaFinder)->find(Version::series()); + } catch (XmlException $e) { + throw new Exception( + $e->getMessage(), + $e->getCode(), + $e + ); + } + + return new Configuration( + $filename, + (new Validator)->validate($document, $xsdFilename), + $this->extensions($filename, $xpath), + $this->codeCoverage($filename, $xpath, $document), + $this->groups($xpath), + $this->testdoxGroups($xpath), + $this->listeners($filename, $xpath), + $this->logging($filename, $xpath), + $this->php($filename, $xpath), + $this->phpunit($filename, $document), + $this->testSuite($filename, $xpath) + ); + } + + public function logging(string $filename, DOMXPath $xpath): Logging + { + if ($xpath->query('logging/log')->length !== 0) { + return $this->legacyLogging($filename, $xpath); + } + + $junit = null; + $element = $this->element($xpath, 'logging/junit'); + + if ($element) { + $junit = new Junit( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $text = null; + $element = $this->element($xpath, 'logging/text'); + + if ($element) { + $text = new Text( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $teamCity = null; + $element = $this->element($xpath, 'logging/teamcity'); + + if ($element) { + $teamCity = new TeamCity( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $testDoxHtml = null; + $element = $this->element($xpath, 'logging/testdoxHtml'); + + if ($element) { + $testDoxHtml = new TestDoxHtml( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $testDoxText = null; + $element = $this->element($xpath, 'logging/testdoxText'); + + if ($element) { + $testDoxText = new TestDoxText( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $testDoxXml = null; + $element = $this->element($xpath, 'logging/testdoxXml'); + + if ($element) { + $testDoxXml = new TestDoxXml( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + return new Logging( + $junit, + $text, + $teamCity, + $testDoxHtml, + $testDoxText, + $testDoxXml + ); + } + + public function legacyLogging(string $filename, DOMXPath $xpath): Logging + { + $junit = null; + $teamCity = null; + $testDoxHtml = null; + $testDoxText = null; + $testDoxXml = null; + $text = null; + + foreach ($xpath->query('logging/log') as $log) { + assert($log instanceof DOMElement); + + $type = (string) $log->getAttribute('type'); + $target = (string) $log->getAttribute('target'); + + if (!$target) { + continue; + } + + $target = $this->toAbsolutePath($filename, $target); + + switch ($type) { + case 'plain': + $text = new Text( + new File($target) + ); + + break; + + case 'junit': + $junit = new Junit( + new File($target) + ); + + break; + + case 'teamcity': + $teamCity = new TeamCity( + new File($target) + ); + + break; + + case 'testdox-html': + $testDoxHtml = new TestDoxHtml( + new File($target) + ); + + break; + + case 'testdox-text': + $testDoxText = new TestDoxText( + new File($target) + ); + + break; + + case 'testdox-xml': + $testDoxXml = new TestDoxXml( + new File($target) + ); + + break; + } + } + + return new Logging( + $junit, + $text, + $teamCity, + $testDoxHtml, + $testDoxText, + $testDoxXml + ); + } + + private function extensions(string $filename, DOMXPath $xpath): ExtensionCollection + { + $extensions = []; + + foreach ($xpath->query('extensions/extension') as $extension) { + assert($extension instanceof DOMElement); + + $extensions[] = $this->getElementConfigurationParameters($filename, $extension); + } + + return ExtensionCollection::fromArray($extensions); + } + + private function getElementConfigurationParameters(string $filename, DOMElement $element): Extension + { + /** @psalm-var class-string $class */ + $class = (string) $element->getAttribute('class'); + $file = ''; + $arguments = $this->getConfigurationArguments($filename, $element->childNodes); + + if ($element->getAttribute('file')) { + $file = $this->toAbsolutePath( + $filename, + (string) $element->getAttribute('file'), + true + ); + } + + return new Extension($class, $file, $arguments); + } + + private function toAbsolutePath(string $filename, string $path, bool $useIncludePath = false): string + { + $path = trim($path); + + if (strpos($path, '/') === 0) { + return $path; + } + + // Matches the following on Windows: + // - \\NetworkComputer\Path + // - \\.\D: + // - \\.\c: + // - C:\Windows + // - C:\windows + // - C:/windows + // - c:/windows + if (defined('PHP_WINDOWS_VERSION_BUILD') && + ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]\:[/\\\]#i', substr($path, 0, 3))))) { + return $path; + } + + if (strpos($path, '://') !== false) { + return $path; + } + + $file = dirname($filename) . DIRECTORY_SEPARATOR . $path; + + if ($useIncludePath && !is_file($file)) { + $includePathFile = stream_resolve_include_path($path); + + if ($includePathFile) { + $file = $includePathFile; + } + } + + return $file; + } + + private function getConfigurationArguments(string $filename, DOMNodeList $nodes): array + { + $arguments = []; + + if ($nodes->length === 0) { + return $arguments; + } + + foreach ($nodes as $node) { + if (!$node instanceof DOMElement) { + continue; + } + + if ($node->tagName !== 'arguments') { + continue; + } + + foreach ($node->childNodes as $argument) { + if (!$argument instanceof DOMElement) { + continue; + } + + if ($argument->tagName === 'file' || $argument->tagName === 'directory') { + $arguments[] = $this->toAbsolutePath($filename, (string) $argument->textContent); + } else { + $arguments[] = Xml::xmlToVariable($argument); + } + } + } + + return $arguments; + } + + private function codeCoverage(string $filename, DOMXPath $xpath, DOMDocument $document): CodeCoverage + { + if ($xpath->query('filter/whitelist')->length !== 0) { + return $this->legacyCodeCoverage($filename, $xpath, $document); + } + + $cacheDirectory = null; + $pathCoverage = false; + $includeUncoveredFiles = true; + $processUncoveredFiles = false; + $ignoreDeprecatedCodeUnits = false; + $disableCodeCoverageIgnore = false; + + $element = $this->element($xpath, 'coverage'); + + if ($element) { + $cacheDirectory = $this->getStringAttribute($element, 'cacheDirectory'); + + if ($cacheDirectory !== null) { + $cacheDirectory = new Directory( + $this->toAbsolutePath($filename, $cacheDirectory) + ); + } + + $pathCoverage = $this->getBooleanAttribute( + $element, + 'pathCoverage', + false + ); + + $includeUncoveredFiles = $this->getBooleanAttribute( + $element, + 'includeUncoveredFiles', + true + ); + + $processUncoveredFiles = $this->getBooleanAttribute( + $element, + 'processUncoveredFiles', + false + ); + + $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute( + $element, + 'ignoreDeprecatedCodeUnits', + false + ); + + $disableCodeCoverageIgnore = $this->getBooleanAttribute( + $element, + 'disableCodeCoverageIgnore', + false + ); + } + + $clover = null; + $element = $this->element($xpath, 'coverage/report/clover'); + + if ($element) { + $clover = new Clover( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $cobertura = null; + $element = $this->element($xpath, 'coverage/report/cobertura'); + + if ($element) { + $cobertura = new Cobertura( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $crap4j = null; + $element = $this->element($xpath, 'coverage/report/crap4j'); + + if ($element) { + $crap4j = new Crap4j( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ), + $this->getIntegerAttribute($element, 'threshold', 30) + ); + } + + $html = null; + $element = $this->element($xpath, 'coverage/report/html'); + + if ($element) { + $html = new CodeCoverageHtml( + new Directory( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputDirectory') + ) + ), + $this->getIntegerAttribute($element, 'lowUpperBound', 50), + $this->getIntegerAttribute($element, 'highLowerBound', 90) + ); + } + + $php = null; + $element = $this->element($xpath, 'coverage/report/php'); + + if ($element) { + $php = new CodeCoveragePhp( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ) + ); + } + + $text = null; + $element = $this->element($xpath, 'coverage/report/text'); + + if ($element) { + $text = new CodeCoverageText( + new File( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputFile') + ) + ), + $this->getBooleanAttribute($element, 'showUncoveredFiles', false), + $this->getBooleanAttribute($element, 'showOnlySummary', false) + ); + } + + $xml = null; + $element = $this->element($xpath, 'coverage/report/xml'); + + if ($element) { + $xml = new CodeCoverageXml( + new Directory( + $this->toAbsolutePath( + $filename, + (string) $this->getStringAttribute($element, 'outputDirectory') + ) + ) + ); + } + + return new CodeCoverage( + $cacheDirectory, + $this->readFilterDirectories($filename, $xpath, 'coverage/include/directory'), + $this->readFilterFiles($filename, $xpath, 'coverage/include/file'), + $this->readFilterDirectories($filename, $xpath, 'coverage/exclude/directory'), + $this->readFilterFiles($filename, $xpath, 'coverage/exclude/file'), + $pathCoverage, + $includeUncoveredFiles, + $processUncoveredFiles, + $ignoreDeprecatedCodeUnits, + $disableCodeCoverageIgnore, + $clover, + $cobertura, + $crap4j, + $html, + $php, + $text, + $xml + ); + } + + /** + * @deprecated + */ + private function legacyCodeCoverage(string $filename, DOMXPath $xpath, DOMDocument $document): CodeCoverage + { + $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute( + $document->documentElement, + 'ignoreDeprecatedCodeUnitsFromCodeCoverage', + false + ); + + $disableCodeCoverageIgnore = $this->getBooleanAttribute( + $document->documentElement, + 'disableCodeCoverageIgnore', + false + ); + + $includeUncoveredFiles = true; + $processUncoveredFiles = false; + + $element = $this->element($xpath, 'filter/whitelist'); + + if ($element) { + if ($element->hasAttribute('addUncoveredFilesFromWhitelist')) { + $includeUncoveredFiles = (bool) $this->getBoolean( + (string) $element->getAttribute('addUncoveredFilesFromWhitelist'), + true + ); + } + + if ($element->hasAttribute('processUncoveredFilesFromWhitelist')) { + $processUncoveredFiles = (bool) $this->getBoolean( + (string) $element->getAttribute('processUncoveredFilesFromWhitelist'), + false + ); + } + } + + $clover = null; + $cobertura = null; + $crap4j = null; + $html = null; + $php = null; + $text = null; + $xml = null; + + foreach ($xpath->query('logging/log') as $log) { + assert($log instanceof DOMElement); + + $type = (string) $log->getAttribute('type'); + $target = (string) $log->getAttribute('target'); + + if (!$target) { + continue; + } + + $target = $this->toAbsolutePath($filename, $target); + + switch ($type) { + case 'coverage-clover': + $clover = new Clover( + new File($target) + ); + + break; + + case 'coverage-cobertura': + $cobertura = new Cobertura( + new File($target) + ); + + break; + + case 'coverage-crap4j': + $crap4j = new Crap4j( + new File($target), + $this->getIntegerAttribute($log, 'threshold', 30) + ); + + break; + + case 'coverage-html': + $html = new CodeCoverageHtml( + new Directory($target), + $this->getIntegerAttribute($log, 'lowUpperBound', 50), + $this->getIntegerAttribute($log, 'highLowerBound', 90) + ); + + break; + + case 'coverage-php': + $php = new CodeCoveragePhp( + new File($target) + ); + + break; + + case 'coverage-text': + $text = new CodeCoverageText( + new File($target), + $this->getBooleanAttribute($log, 'showUncoveredFiles', false), + $this->getBooleanAttribute($log, 'showOnlySummary', false) + ); + + break; + + case 'coverage-xml': + $xml = new CodeCoverageXml( + new Directory($target) + ); + + break; + } + } + + return new CodeCoverage( + null, + $this->readFilterDirectories($filename, $xpath, 'filter/whitelist/directory'), + $this->readFilterFiles($filename, $xpath, 'filter/whitelist/file'), + $this->readFilterDirectories($filename, $xpath, 'filter/whitelist/exclude/directory'), + $this->readFilterFiles($filename, $xpath, 'filter/whitelist/exclude/file'), + false, + $includeUncoveredFiles, + $processUncoveredFiles, + $ignoreDeprecatedCodeUnits, + $disableCodeCoverageIgnore, + $clover, + $cobertura, + $crap4j, + $html, + $php, + $text, + $xml + ); + } + + /** + * If $value is 'false' or 'true', this returns the value that $value represents. + * Otherwise, returns $default, which may be a string in rare cases. + * + * @see \PHPUnit\TextUI\XmlConfigurationTest::testPHPConfigurationIsReadCorrectly + * + * @param bool|string $default + * + * @return bool|string + */ + private function getBoolean(string $value, $default) + { + if (strtolower($value) === 'false') { + return false; + } + + if (strtolower($value) === 'true') { + return true; + } + + return $default; + } + + private function readFilterDirectories(string $filename, DOMXPath $xpath, string $query): FilterDirectoryCollection + { + $directories = []; + + foreach ($xpath->query($query) as $directoryNode) { + assert($directoryNode instanceof DOMElement); + + $directoryPath = (string) $directoryNode->textContent; + + if (!$directoryPath) { + continue; + } + + $directories[] = new FilterDirectory( + $this->toAbsolutePath($filename, $directoryPath), + $directoryNode->hasAttribute('prefix') ? (string) $directoryNode->getAttribute('prefix') : '', + $directoryNode->hasAttribute('suffix') ? (string) $directoryNode->getAttribute('suffix') : '.php', + $directoryNode->hasAttribute('group') ? (string) $directoryNode->getAttribute('group') : 'DEFAULT' + ); + } + + return FilterDirectoryCollection::fromArray($directories); + } + + private function readFilterFiles(string $filename, DOMXPath $xpath, string $query): FileCollection + { + $files = []; + + foreach ($xpath->query($query) as $file) { + $filePath = (string) $file->textContent; + + if ($filePath) { + $files[] = new File($this->toAbsolutePath($filename, $filePath)); + } + } + + return FileCollection::fromArray($files); + } + + private function groups(DOMXPath $xpath): Groups + { + return $this->parseGroupConfiguration($xpath, 'groups'); + } + + private function testdoxGroups(DOMXPath $xpath): Groups + { + return $this->parseGroupConfiguration($xpath, 'testdoxGroups'); + } + + private function parseGroupConfiguration(DOMXPath $xpath, string $root): Groups + { + $include = []; + $exclude = []; + + foreach ($xpath->query($root . '/include/group') as $group) { + $include[] = new Group((string) $group->textContent); + } + + foreach ($xpath->query($root . '/exclude/group') as $group) { + $exclude[] = new Group((string) $group->textContent); + } + + return new Groups( + GroupCollection::fromArray($include), + GroupCollection::fromArray($exclude) + ); + } + + private function listeners(string $filename, DOMXPath $xpath): ExtensionCollection + { + $listeners = []; + + foreach ($xpath->query('listeners/listener') as $listener) { + assert($listener instanceof DOMElement); + + $listeners[] = $this->getElementConfigurationParameters($filename, $listener); + } + + return ExtensionCollection::fromArray($listeners); + } + + private function getBooleanAttribute(DOMElement $element, string $attribute, bool $default): bool + { + if (!$element->hasAttribute($attribute)) { + return $default; + } + + return (bool) $this->getBoolean( + (string) $element->getAttribute($attribute), + false + ); + } + + private function getIntegerAttribute(DOMElement $element, string $attribute, int $default): int + { + if (!$element->hasAttribute($attribute)) { + return $default; + } + + return $this->getInteger( + (string) $element->getAttribute($attribute), + $default + ); + } + + private function getStringAttribute(DOMElement $element, string $attribute): ?string + { + if (!$element->hasAttribute($attribute)) { + return null; + } + + return (string) $element->getAttribute($attribute); + } + + private function getInteger(string $value, int $default): int + { + if (is_numeric($value)) { + return (int) $value; + } + + return $default; + } + + private function php(string $filename, DOMXPath $xpath): Php + { + $includePaths = []; + + foreach ($xpath->query('php/includePath') as $includePath) { + $path = (string) $includePath->textContent; + + if ($path) { + $includePaths[] = new Directory($this->toAbsolutePath($filename, $path)); + } + } + + $iniSettings = []; + + foreach ($xpath->query('php/ini') as $ini) { + assert($ini instanceof DOMElement); + + $iniSettings[] = new IniSetting( + (string) $ini->getAttribute('name'), + (string) $ini->getAttribute('value') + ); + } + + $constants = []; + + foreach ($xpath->query('php/const') as $const) { + assert($const instanceof DOMElement); + + $value = (string) $const->getAttribute('value'); + + $constants[] = new Constant( + (string) $const->getAttribute('name'), + $this->getBoolean($value, $value) + ); + } + + $variables = [ + 'var' => [], + 'env' => [], + 'post' => [], + 'get' => [], + 'cookie' => [], + 'server' => [], + 'files' => [], + 'request' => [], + ]; + + foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { + foreach ($xpath->query('php/' . $array) as $var) { + assert($var instanceof DOMElement); + + $name = (string) $var->getAttribute('name'); + $value = (string) $var->getAttribute('value'); + $force = false; + $verbatim = false; + + if ($var->hasAttribute('force')) { + $force = (bool) $this->getBoolean($var->getAttribute('force'), false); + } + + if ($var->hasAttribute('verbatim')) { + $verbatim = $this->getBoolean($var->getAttribute('verbatim'), false); + } + + if (!$verbatim) { + $value = $this->getBoolean($value, $value); + } + + $variables[$array][] = new Variable($name, $value, $force); + } + } + + return new Php( + DirectoryCollection::fromArray($includePaths), + IniSettingCollection::fromArray($iniSettings), + ConstantCollection::fromArray($constants), + VariableCollection::fromArray($variables['var']), + VariableCollection::fromArray($variables['env']), + VariableCollection::fromArray($variables['post']), + VariableCollection::fromArray($variables['get']), + VariableCollection::fromArray($variables['cookie']), + VariableCollection::fromArray($variables['server']), + VariableCollection::fromArray($variables['files']), + VariableCollection::fromArray($variables['request']), + ); + } + + private function phpunit(string $filename, DOMDocument $document): PHPUnit + { + $executionOrder = TestSuiteSorter::ORDER_DEFAULT; + $defectsFirst = false; + $resolveDependencies = $this->getBooleanAttribute($document->documentElement, 'resolveDependencies', true); + + if ($document->documentElement->hasAttribute('executionOrder')) { + foreach (explode(',', $document->documentElement->getAttribute('executionOrder')) as $order) { + switch ($order) { + case 'default': + $executionOrder = TestSuiteSorter::ORDER_DEFAULT; + $defectsFirst = false; + $resolveDependencies = true; + + break; + + case 'depends': + $resolveDependencies = true; + + break; + + case 'no-depends': + $resolveDependencies = false; + + break; + + case 'defects': + $defectsFirst = true; + + break; + + case 'duration': + $executionOrder = TestSuiteSorter::ORDER_DURATION; + + break; + + case 'random': + $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED; + + break; + + case 'reverse': + $executionOrder = TestSuiteSorter::ORDER_REVERSED; + + break; + + case 'size': + $executionOrder = TestSuiteSorter::ORDER_SIZE; + + break; + } + } + } + + $printerClass = $this->getStringAttribute($document->documentElement, 'printerClass'); + $testdox = $this->getBooleanAttribute($document->documentElement, 'testdox', false); + $conflictBetweenPrinterClassAndTestdox = false; + + if ($testdox) { + if ($printerClass !== null) { + $conflictBetweenPrinterClassAndTestdox = true; + } + + $printerClass = CliTestDoxPrinter::class; + } + + $cacheResultFile = $this->getStringAttribute($document->documentElement, 'cacheResultFile'); + + if ($cacheResultFile !== null) { + $cacheResultFile = $this->toAbsolutePath($filename, $cacheResultFile); + } + + $bootstrap = $this->getStringAttribute($document->documentElement, 'bootstrap'); + + if ($bootstrap !== null) { + $bootstrap = $this->toAbsolutePath($filename, $bootstrap); + } + + $extensionsDirectory = $this->getStringAttribute($document->documentElement, 'extensionsDirectory'); + + if ($extensionsDirectory !== null) { + $extensionsDirectory = $this->toAbsolutePath($filename, $extensionsDirectory); + } + + $testSuiteLoaderFile = $this->getStringAttribute($document->documentElement, 'testSuiteLoaderFile'); + + if ($testSuiteLoaderFile !== null) { + $testSuiteLoaderFile = $this->toAbsolutePath($filename, $testSuiteLoaderFile); + } + + $printerFile = $this->getStringAttribute($document->documentElement, 'printerFile'); + + if ($printerFile !== null) { + $printerFile = $this->toAbsolutePath($filename, $printerFile); + } + + return new PHPUnit( + $this->getBooleanAttribute($document->documentElement, 'cacheResult', true), + $cacheResultFile, + $this->getColumns($document), + $this->getColors($document), + $this->getBooleanAttribute($document->documentElement, 'stderr', false), + $this->getBooleanAttribute($document->documentElement, 'noInteraction', false), + $this->getBooleanAttribute($document->documentElement, 'verbose', false), + $this->getBooleanAttribute($document->documentElement, 'reverseDefectList', false), + $this->getBooleanAttribute($document->documentElement, 'convertDeprecationsToExceptions', false), + $this->getBooleanAttribute($document->documentElement, 'convertErrorsToExceptions', true), + $this->getBooleanAttribute($document->documentElement, 'convertNoticesToExceptions', true), + $this->getBooleanAttribute($document->documentElement, 'convertWarningsToExceptions', true), + $this->getBooleanAttribute($document->documentElement, 'forceCoversAnnotation', false), + $bootstrap, + $this->getBooleanAttribute($document->documentElement, 'processIsolation', false), + $this->getBooleanAttribute($document->documentElement, 'failOnEmptyTestSuite', false), + $this->getBooleanAttribute($document->documentElement, 'failOnIncomplete', false), + $this->getBooleanAttribute($document->documentElement, 'failOnRisky', false), + $this->getBooleanAttribute($document->documentElement, 'failOnSkipped', false), + $this->getBooleanAttribute($document->documentElement, 'failOnWarning', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnDefect', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnError', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnFailure', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnWarning', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnIncomplete', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnRisky', false), + $this->getBooleanAttribute($document->documentElement, 'stopOnSkipped', false), + $extensionsDirectory, + $this->getStringAttribute($document->documentElement, 'testSuiteLoaderClass'), + $testSuiteLoaderFile, + $printerClass, + $printerFile, + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutChangesToGlobalState', false), + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutOutputDuringTests', false), + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutResourceUsageDuringSmallTests', false), + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutTestsThatDoNotTestAnything', true), + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutTodoAnnotatedTests', false), + $this->getBooleanAttribute($document->documentElement, 'beStrictAboutCoversAnnotation', false), + $this->getBooleanAttribute($document->documentElement, 'enforceTimeLimit', false), + $this->getIntegerAttribute($document->documentElement, 'defaultTimeLimit', 1), + $this->getIntegerAttribute($document->documentElement, 'timeoutForSmallTests', 1), + $this->getIntegerAttribute($document->documentElement, 'timeoutForMediumTests', 10), + $this->getIntegerAttribute($document->documentElement, 'timeoutForLargeTests', 60), + $this->getStringAttribute($document->documentElement, 'defaultTestSuite'), + $executionOrder, + $resolveDependencies, + $defectsFirst, + $this->getBooleanAttribute($document->documentElement, 'backupGlobals', false), + $this->getBooleanAttribute($document->documentElement, 'backupStaticAttributes', false), + $this->getBooleanAttribute($document->documentElement, 'registerMockObjectsFromTestArgumentsRecursively', false), + $conflictBetweenPrinterClassAndTestdox + ); + } + + private function getColors(DOMDocument $document): string + { + $colors = DefaultResultPrinter::COLOR_DEFAULT; + + if ($document->documentElement->hasAttribute('colors')) { + /* only allow boolean for compatibility with previous versions + 'always' only allowed from command line */ + if ($this->getBoolean($document->documentElement->getAttribute('colors'), false)) { + $colors = DefaultResultPrinter::COLOR_AUTO; + } else { + $colors = DefaultResultPrinter::COLOR_NEVER; + } + } + + return $colors; + } + + /** + * @return int|string + */ + private function getColumns(DOMDocument $document) + { + $columns = 80; + + if ($document->documentElement->hasAttribute('columns')) { + $columns = (string) $document->documentElement->getAttribute('columns'); + + if ($columns !== 'max') { + $columns = $this->getInteger($columns, 80); + } + } + + return $columns; + } + + private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollection + { + $testSuites = []; + + foreach ($this->getTestSuiteElements($xpath) as $element) { + $exclude = []; + + foreach ($element->getElementsByTagName('exclude') as $excludeNode) { + $excludeFile = (string) $excludeNode->textContent; + + if ($excludeFile) { + $exclude[] = new File($this->toAbsolutePath($filename, $excludeFile)); + } + } + + $directories = []; + + foreach ($element->getElementsByTagName('directory') as $directoryNode) { + assert($directoryNode instanceof DOMElement); + + $directory = (string) $directoryNode->textContent; + + if (empty($directory)) { + continue; + } + + $prefix = ''; + + if ($directoryNode->hasAttribute('prefix')) { + $prefix = (string) $directoryNode->getAttribute('prefix'); + } + + $suffix = 'Test.php'; + + if ($directoryNode->hasAttribute('suffix')) { + $suffix = (string) $directoryNode->getAttribute('suffix'); + } + + $phpVersion = PHP_VERSION; + + if ($directoryNode->hasAttribute('phpVersion')) { + $phpVersion = (string) $directoryNode->getAttribute('phpVersion'); + } + + $phpVersionOperator = new VersionComparisonOperator('>='); + + if ($directoryNode->hasAttribute('phpVersionOperator')) { + $phpVersionOperator = new VersionComparisonOperator((string) $directoryNode->getAttribute('phpVersionOperator')); + } + + $directories[] = new TestDirectory( + $this->toAbsolutePath($filename, $directory), + $prefix, + $suffix, + $phpVersion, + $phpVersionOperator + ); + } + + $files = []; + + foreach ($element->getElementsByTagName('file') as $fileNode) { + assert($fileNode instanceof DOMElement); + + $file = (string) $fileNode->textContent; + + if (empty($file)) { + continue; + } + + $phpVersion = PHP_VERSION; + + if ($fileNode->hasAttribute('phpVersion')) { + $phpVersion = (string) $fileNode->getAttribute('phpVersion'); + } + + $phpVersionOperator = new VersionComparisonOperator('>='); + + if ($fileNode->hasAttribute('phpVersionOperator')) { + $phpVersionOperator = new VersionComparisonOperator((string) $fileNode->getAttribute('phpVersionOperator')); + } + + $files[] = new TestFile( + $this->toAbsolutePath($filename, $file), + $phpVersion, + $phpVersionOperator + ); + } + + $testSuites[] = new TestSuiteConfiguration( + (string) $element->getAttribute('name'), + TestDirectoryCollection::fromArray($directories), + TestFileCollection::fromArray($files), + FileCollection::fromArray($exclude) + ); + } + + return TestSuiteCollection::fromArray($testSuites); + } + + /** + * @return DOMElement[] + */ + private function getTestSuiteElements(DOMXPath $xpath): array + { + /** @var DOMElement[] $elements */ + $elements = []; + + $testSuiteNodes = $xpath->query('testsuites/testsuite'); + + if ($testSuiteNodes->length === 0) { + $testSuiteNodes = $xpath->query('testsuite'); + } + + if ($testSuiteNodes->length === 1) { + $element = $testSuiteNodes->item(0); + + assert($element instanceof DOMElement); + + $elements[] = $element; + } else { + foreach ($testSuiteNodes as $testSuiteNode) { + assert($testSuiteNode instanceof DOMElement); + + $elements[] = $testSuiteNode; + } + } + + return $elements; + } + + private function element(DOMXPath $xpath, string $element): ?DOMElement + { + $nodes = $xpath->query($element); + + if ($nodes->length === 1) { + $node = $nodes->item(0); + + assert($node instanceof DOMElement); + + return $node; + } + + return null; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php new file mode 100644 index 000000000..9fca18523 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Junit +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php new file mode 100644 index 000000000..bce030193 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php @@ -0,0 +1,147 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging; + +use PHPUnit\TextUI\XmlConfiguration\Exception; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText; +use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Xml as TestDoxXml; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Logging +{ + /** + * @var ?Junit + */ + private $junit; + + /** + * @var ?Text + */ + private $text; + + /** + * @var ?TeamCity + */ + private $teamCity; + + /** + * @var ?TestDoxHtml + */ + private $testDoxHtml; + + /** + * @var ?TestDoxText + */ + private $testDoxText; + + /** + * @var ?TestDoxXml + */ + private $testDoxXml; + + public function __construct(?Junit $junit, ?Text $text, ?TeamCity $teamCity, ?TestDoxHtml $testDoxHtml, ?TestDoxText $testDoxText, ?TestDoxXml $testDoxXml) + { + $this->junit = $junit; + $this->text = $text; + $this->teamCity = $teamCity; + $this->testDoxHtml = $testDoxHtml; + $this->testDoxText = $testDoxText; + $this->testDoxXml = $testDoxXml; + } + + public function hasJunit(): bool + { + return $this->junit !== null; + } + + public function junit(): Junit + { + if ($this->junit === null) { + throw new Exception('Logger "JUnit XML" is not configured'); + } + + return $this->junit; + } + + public function hasText(): bool + { + return $this->text !== null; + } + + public function text(): Text + { + if ($this->text === null) { + throw new Exception('Logger "Text" is not configured'); + } + + return $this->text; + } + + public function hasTeamCity(): bool + { + return $this->teamCity !== null; + } + + public function teamCity(): TeamCity + { + if ($this->teamCity === null) { + throw new Exception('Logger "Team City" is not configured'); + } + + return $this->teamCity; + } + + public function hasTestDoxHtml(): bool + { + return $this->testDoxHtml !== null; + } + + public function testDoxHtml(): TestDoxHtml + { + if ($this->testDoxHtml === null) { + throw new Exception('Logger "TestDox HTML" is not configured'); + } + + return $this->testDoxHtml; + } + + public function hasTestDoxText(): bool + { + return $this->testDoxText !== null; + } + + public function testDoxText(): TestDoxText + { + if ($this->testDoxText === null) { + throw new Exception('Logger "TestDox Text" is not configured'); + } + + return $this->testDoxText; + } + + public function hasTestDoxXml(): bool + { + return $this->testDoxXml !== null; + } + + public function testDoxXml(): TestDoxXml + { + if ($this->testDoxXml === null) { + throw new Exception('Logger "TestDox XML" is not configured'); + } + + return $this->testDoxXml; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php new file mode 100644 index 000000000..804a7ea66 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class TeamCity +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php new file mode 100644 index 000000000..5b198352c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Html +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php new file mode 100644 index 000000000..5c742d3a7 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Text +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php new file mode 100644 index 000000000..92dd3b7ba --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Xml +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php new file mode 100644 index 000000000..fd37942f7 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration\Logging; + +use PHPUnit\TextUI\XmlConfiguration\File; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Text +{ + /** + * @var File + */ + private $target; + + public function __construct(File $target) + { + $this->target = $target; + } + + public function target(): File + { + return $this->target; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php new file mode 100644 index 000000000..abef49f10 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function array_key_exists; +use function sprintf; +use function version_compare; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MigrationBuilder +{ + private const AVAILABLE_MIGRATIONS = [ + '8.5' => [ + RemoveLogTypes::class, + ], + + '9.2' => [ + RemoveCacheTokensAttribute::class, + IntroduceCoverageElement::class, + MoveAttributesFromRootToCoverage::class, + MoveAttributesFromFilterWhitelistToCoverage::class, + MoveWhitelistDirectoriesToCoverage::class, + MoveWhitelistExcludesToCoverage::class, + RemoveEmptyFilter::class, + CoverageCloverToReport::class, + CoverageCrap4jToReport::class, + CoverageHtmlToReport::class, + CoveragePhpToReport::class, + CoverageTextToReport::class, + CoverageXmlToReport::class, + ConvertLogTypes::class, + UpdateSchemaLocationTo93::class, + ], + ]; + + /** + * @throws MigrationBuilderException + */ + public function build(string $fromVersion): array + { + if (!array_key_exists($fromVersion, self::AVAILABLE_MIGRATIONS)) { + throw new MigrationBuilderException( + sprintf( + 'Migration from schema version %s is not supported', + $fromVersion + ) + ); + } + + $stack = []; + + foreach (self::AVAILABLE_MIGRATIONS as $version => $migrations) { + if (version_compare($version, $fromVersion, '<')) { + continue; + } + + foreach ($migrations as $migration) { + $stack[] = new $migration; + } + } + + return $stack; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php new file mode 100644 index 000000000..3d3c767af --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MigrationBuilderException extends RuntimeException implements \PHPUnit\Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php new file mode 100644 index 000000000..f92b2db30 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MigrationException extends RuntimeException implements \PHPUnit\Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php new file mode 100644 index 000000000..697bbe082 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class ConvertLogTypes implements Migration +{ + public function migrate(DOMDocument $document): void + { + $logging = $document->getElementsByTagName('logging')->item(0); + + if (!$logging instanceof DOMElement) { + return; + } + $types = [ + 'junit' => 'junit', + 'teamcity' => 'teamcity', + 'testdox-html' => 'testdoxHtml', + 'testdox-text' => 'testdoxText', + 'testdox-xml' => 'testdoxXml', + 'plain' => 'text', + ]; + + $logNodes = []; + + foreach ($logging->getElementsByTagName('log') as $logNode) { + if (!isset($types[$logNode->getAttribute('type')])) { + continue; + } + + $logNodes[] = $logNode; + } + + foreach ($logNodes as $oldNode) { + $newLogNode = $document->createElement($types[$oldNode->getAttribute('type')]); + $newLogNode->setAttribute('outputFile', $oldNode->getAttribute('target')); + + $logging->replaceChild($newLogNode, $oldNode); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php new file mode 100644 index 000000000..5f1522b9c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoverageCloverToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-clover'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $clover = $logNode->ownerDocument->createElement('clover'); + $clover->setAttribute('outputFile', $logNode->getAttribute('target')); + + return $clover; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php new file mode 100644 index 000000000..afbaaec18 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoverageCrap4jToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-crap4j'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $crap4j = $logNode->ownerDocument->createElement('crap4j'); + $crap4j->setAttribute('outputFile', $logNode->getAttribute('target')); + + $this->migrateAttributes($logNode, $crap4j, ['threshold']); + + return $crap4j; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php new file mode 100644 index 000000000..7e12095b4 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoverageHtmlToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-html'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $html = $logNode->ownerDocument->createElement('html'); + $html->setAttribute('outputDirectory', $logNode->getAttribute('target')); + + $this->migrateAttributes($logNode, $html, ['lowUpperBound', 'highLowerBound']); + + return $html; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php new file mode 100644 index 000000000..bfa10030b --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoveragePhpToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-php'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $php = $logNode->ownerDocument->createElement('php'); + $php->setAttribute('outputFile', $logNode->getAttribute('target')); + + return $php; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php new file mode 100644 index 000000000..063d8df0c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoverageTextToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-text'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $text = $logNode->ownerDocument->createElement('text'); + $text->setAttribute('outputFile', $logNode->getAttribute('target')); + + $this->migrateAttributes($logNode, $text, ['showUncoveredFiles', 'showOnlySummary']); + + return $text; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php new file mode 100644 index 000000000..480d7777e --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class CoverageXmlToReport extends LogToReportMigration +{ + protected function forType(): string + { + return 'coverage-xml'; + } + + protected function toReportFormat(DOMElement $logNode): DOMElement + { + $xml = $logNode->ownerDocument->createElement('xml'); + $xml->setAttribute('outputDirectory', $logNode->getAttribute('target')); + + return $xml; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php new file mode 100644 index 000000000..867a84417 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class IntroduceCoverageElement implements Migration +{ + public function migrate(DOMDocument $document): void + { + $coverage = $document->createElement('coverage'); + + $document->documentElement->insertBefore( + $coverage, + $document->documentElement->firstChild + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php new file mode 100644 index 000000000..e987308b7 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function sprintf; +use DOMDocument; +use DOMElement; +use DOMXPath; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +abstract class LogToReportMigration implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $coverage = $document->getElementsByTagName('coverage')->item(0); + + if (!$coverage instanceof DOMElement) { + throw new MigrationException('Unexpected state - No coverage element'); + } + + $logNode = $this->findLogNode($document); + + if ($logNode === null) { + return; + } + + $reportChild = $this->toReportFormat($logNode); + + $report = $coverage->getElementsByTagName('report')->item(0); + + if ($report === null) { + $report = $coverage->appendChild($document->createElement('report')); + } + + $report->appendChild($reportChild); + $logNode->parentNode->removeChild($logNode); + } + + protected function migrateAttributes(DOMElement $src, DOMElement $dest, array $attributes): void + { + foreach ($attributes as $attr) { + if (!$src->hasAttribute($attr)) { + continue; + } + + $dest->setAttribute($attr, $src->getAttribute($attr)); + $src->removeAttribute($attr); + } + } + + abstract protected function forType(): string; + + abstract protected function toReportFormat(DOMElement $logNode): DOMElement; + + private function findLogNode(DOMDocument $document): ?DOMElement + { + $logNode = (new DOMXPath($document))->query( + sprintf('//logging/log[@type="%s"]', $this->forType()) + )->item(0); + + if (!$logNode instanceof DOMElement) { + return null; + } + + return $logNode; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php new file mode 100644 index 000000000..fa4092a9f --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +interface Migration +{ + public function migrate(DOMDocument $document): void; +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php new file mode 100644 index 000000000..a7aab5e51 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MoveAttributesFromFilterWhitelistToCoverage implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $whitelist = $document->getElementsByTagName('whitelist')->item(0); + + if (!$whitelist) { + return; + } + + $coverage = $document->getElementsByTagName('coverage')->item(0); + + if (!$coverage instanceof DOMElement) { + throw new MigrationException('Unexpected state - No coverage element'); + } + + $map = [ + 'addUncoveredFilesFromWhitelist' => 'includeUncoveredFiles', + 'processUncoveredFilesFromWhitelist' => 'processUncoveredFiles', + ]; + + foreach ($map as $old => $new) { + if (!$whitelist->hasAttribute($old)) { + continue; + } + + $coverage->setAttribute($new, $whitelist->getAttribute($old)); + $whitelist->removeAttribute($old); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php new file mode 100644 index 000000000..b86b259c3 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MoveAttributesFromRootToCoverage implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $map = [ + 'disableCodeCoverageIgnore' => 'disableCodeCoverageIgnore', + 'ignoreDeprecatedCodeUnitsFromCodeCoverage' => 'ignoreDeprecatedCodeUnits', + ]; + + $root = $document->documentElement; + + $coverage = $document->getElementsByTagName('coverage')->item(0); + + if (!$coverage instanceof DOMElement) { + throw new MigrationException('Unexpected state - No coverage element'); + } + + foreach ($map as $old => $new) { + if (!$root->hasAttribute($old)) { + continue; + } + + $coverage->setAttribute($new, $root->getAttribute($old)); + $root->removeAttribute($old); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php new file mode 100644 index 000000000..14e6cec83 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; +use DOMElement; +use PHPUnit\Util\Xml\SnapshotNodeList; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MoveWhitelistDirectoriesToCoverage implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $whitelist = $document->getElementsByTagName('whitelist')->item(0); + + if ($whitelist === null) { + return; + } + + $coverage = $document->getElementsByTagName('coverage')->item(0); + + if (!$coverage instanceof DOMElement) { + throw new MigrationException('Unexpected state - No coverage element'); + } + + $include = $document->createElement('include'); + $coverage->appendChild($include); + + foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { + if (!$child instanceof DOMElement || $child->nodeName !== 'directory') { + continue; + } + + $include->appendChild($child); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php new file mode 100644 index 000000000..c55315fa0 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function assert; +use function in_array; +use DOMDocument; +use DOMElement; +use PHPUnit\Util\Xml\SnapshotNodeList; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class MoveWhitelistExcludesToCoverage implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $whitelist = $document->getElementsByTagName('whitelist')->item(0); + + if ($whitelist === null) { + return; + } + + $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); + + if ($excludeNodes->count() === 0) { + return; + } + + $coverage = $document->getElementsByTagName('coverage')->item(0); + + if (!$coverage instanceof DOMElement) { + throw new MigrationException('Unexpected state - No coverage element'); + } + + $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); + + if ($targetExclude === null) { + $targetExclude = $coverage->appendChild( + $document->createElement('exclude') + ); + } + + foreach ($excludeNodes as $excludeNode) { + assert($excludeNode instanceof DOMElement); + + foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { + if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], true)) { + continue; + } + + $targetExclude->appendChild($child); + } + + if ($excludeNode->getElementsByTagName('*')->count() !== 0) { + throw new MigrationException('Dangling child elements in exclude found.'); + } + + $whitelist->removeChild($excludeNode); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php new file mode 100644 index 000000000..0eec12ac1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class RemoveCacheTokensAttribute implements Migration +{ + public function migrate(DOMDocument $document): void + { + $root = $document->documentElement; + + if ($root->hasAttribute('cacheTokens')) { + $root->removeAttribute('cacheTokens'); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php new file mode 100644 index 000000000..8f1a6d547 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.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 PHPUnit\TextUI\XmlConfiguration; + +use function sprintf; +use DOMDocument; +use DOMElement; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class RemoveEmptyFilter implements Migration +{ + /** + * @throws MigrationException + */ + public function migrate(DOMDocument $document): void + { + $whitelist = $document->getElementsByTagName('whitelist')->item(0); + + if ($whitelist instanceof DOMElement) { + $this->ensureEmpty($whitelist); + $whitelist->parentNode->removeChild($whitelist); + } + + $filter = $document->getElementsByTagName('filter')->item(0); + + if ($filter instanceof DOMElement) { + $this->ensureEmpty($filter); + $filter->parentNode->removeChild($filter); + } + } + + /** + * @throws MigrationException + */ + private function ensureEmpty(DOMElement $element): void + { + if ($element->attributes->length > 0) { + throw new MigrationException(sprintf('%s element has unexpected attributes', $element->nodeName)); + } + + if ($element->getElementsByTagName('*')->length > 0) { + throw new MigrationException(sprintf('%s element has unexpected children', $element->nodeName)); + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php new file mode 100644 index 000000000..962ff13c3 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function assert; +use DOMDocument; +use DOMElement; +use PHPUnit\Util\Xml\SnapshotNodeList; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class RemoveLogTypes implements Migration +{ + public function migrate(DOMDocument $document): void + { + $logging = $document->getElementsByTagName('logging')->item(0); + + if (!$logging instanceof DOMElement) { + return; + } + + foreach (SnapshotNodeList::fromNodeList($logging->getElementsByTagName('log')) as $logNode) { + assert($logNode instanceof DOMElement); + + switch ($logNode->getAttribute('type')) { + case 'json': + case 'tap': + $logging->removeChild($logNode); + } + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php new file mode 100644 index 000000000..2e86ab6e9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class UpdateSchemaLocationTo93 implements Migration +{ + public function migrate(DOMDocument $document): void + { + $document->documentElement->setAttributeNS( + 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:noNamespaceSchemaLocation', + 'https://schema.phpunit.de/9.3/phpunit.xsd' + ); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php new file mode 100644 index 000000000..d173e7af2 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function sprintf; +use PHPUnit\Util\Xml\Exception as XmlException; +use PHPUnit\Util\Xml\Loader as XmlLoader; +use PHPUnit\Util\Xml\SchemaDetector; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Migrator +{ + /** + * @throws Exception + * @throws MigrationBuilderException + * @throws MigrationException + * @throws XmlException + */ + public function migrate(string $filename): string + { + $origin = (new SchemaDetector)->detect($filename); + + if (!$origin->detected()) { + throw new Exception( + sprintf( + '"%s" is not a valid PHPUnit XML configuration file that can be migrated', + $filename, + ) + ); + } + + $configurationDocument = (new XmlLoader)->loadFile( + $filename, + false, + true, + true + ); + + foreach ((new MigrationBuilder)->build($origin->version()) as $migration) { + $migration->migrate($configurationDocument); + } + + $configurationDocument->formatOutput = true; + $configurationDocument->preserveWhiteSpace = false; + + return $configurationDocument->saveXML(); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php new file mode 100644 index 000000000..6d4bc94cc --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Constant +{ + /** + * @var string + */ + private $name; + + /** + * @var mixed + */ + private $value; + + public function __construct(string $name, $value) + { + $this->name = $name; + $this->value = $value; + } + + public function name(): string + { + return $this->name; + } + + public function value() + { + return $this->value; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php new file mode 100644 index 000000000..440b0b0bf --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class ConstantCollection implements Countable, IteratorAggregate +{ + /** + * @var Constant[] + */ + private $constants; + + /** + * @param Constant[] $constants + */ + public static function fromArray(array $constants): self + { + return new self(...$constants); + } + + private function __construct(Constant ...$constants) + { + $this->constants = $constants; + } + + /** + * @return Constant[] + */ + public function asArray(): array + { + return $this->constants; + } + + public function count(): int + { + return count($this->constants); + } + + public function getIterator(): ConstantCollectionIterator + { + return new ConstantCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php new file mode 100644 index 000000000..623de961c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class ConstantCollectionIterator implements Countable, Iterator +{ + /** + * @var Constant[] + */ + private $constants; + + /** + * @var int + */ + private $position; + + public function __construct(ConstantCollection $constants) + { + $this->constants = $constants->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->constants); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Constant + { + return $this->constants[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php new file mode 100644 index 000000000..4786618d1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class IniSetting +{ + /** + * @var string + */ + private $name; + + /** + * @var string + */ + private $value; + + public function __construct(string $name, string $value) + { + $this->name = $name; + $this->value = $value; + } + + public function name(): string + { + return $this->name; + } + + public function value(): string + { + return $this->value; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php new file mode 100644 index 000000000..28e40d93a --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class IniSettingCollection implements Countable, IteratorAggregate +{ + /** + * @var IniSetting[] + */ + private $iniSettings; + + /** + * @param IniSetting[] $iniSettings + */ + public static function fromArray(array $iniSettings): self + { + return new self(...$iniSettings); + } + + private function __construct(IniSetting ...$iniSettings) + { + $this->iniSettings = $iniSettings; + } + + /** + * @return IniSetting[] + */ + public function asArray(): array + { + return $this->iniSettings; + } + + public function count(): int + { + return count($this->iniSettings); + } + + public function getIterator(): IniSettingCollectionIterator + { + return new IniSettingCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php new file mode 100644 index 000000000..6c348b48a --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class IniSettingCollectionIterator implements Countable, Iterator +{ + /** + * @var IniSetting[] + */ + private $iniSettings; + + /** + * @var int + */ + private $position; + + public function __construct(IniSettingCollection $iniSettings) + { + $this->iniSettings = $iniSettings->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->iniSettings); + } + + public function key(): int + { + return $this->position; + } + + public function current(): IniSetting + { + return $this->iniSettings[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php new file mode 100644 index 000000000..c1e9c6fd1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php @@ -0,0 +1,143 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Php +{ + /** + * @var DirectoryCollection + */ + private $includePaths; + + /** + * @var IniSettingCollection + */ + private $iniSettings; + + /** + * @var ConstantCollection + */ + private $constants; + + /** + * @var VariableCollection + */ + private $globalVariables; + + /** + * @var VariableCollection + */ + private $envVariables; + + /** + * @var VariableCollection + */ + private $postVariables; + + /** + * @var VariableCollection + */ + private $getVariables; + + /** + * @var VariableCollection + */ + private $cookieVariables; + + /** + * @var VariableCollection + */ + private $serverVariables; + + /** + * @var VariableCollection + */ + private $filesVariables; + + /** + * @var VariableCollection + */ + private $requestVariables; + + public function __construct(DirectoryCollection $includePaths, IniSettingCollection $iniSettings, ConstantCollection $constants, VariableCollection $globalVariables, VariableCollection $envVariables, VariableCollection $postVariables, VariableCollection $getVariables, VariableCollection $cookieVariables, VariableCollection $serverVariables, VariableCollection $filesVariables, VariableCollection $requestVariables) + { + $this->includePaths = $includePaths; + $this->iniSettings = $iniSettings; + $this->constants = $constants; + $this->globalVariables = $globalVariables; + $this->envVariables = $envVariables; + $this->postVariables = $postVariables; + $this->getVariables = $getVariables; + $this->cookieVariables = $cookieVariables; + $this->serverVariables = $serverVariables; + $this->filesVariables = $filesVariables; + $this->requestVariables = $requestVariables; + } + + public function includePaths(): DirectoryCollection + { + return $this->includePaths; + } + + public function iniSettings(): IniSettingCollection + { + return $this->iniSettings; + } + + public function constants(): ConstantCollection + { + return $this->constants; + } + + public function globalVariables(): VariableCollection + { + return $this->globalVariables; + } + + public function envVariables(): VariableCollection + { + return $this->envVariables; + } + + public function postVariables(): VariableCollection + { + return $this->postVariables; + } + + public function getVariables(): VariableCollection + { + return $this->getVariables; + } + + public function cookieVariables(): VariableCollection + { + return $this->cookieVariables; + } + + public function serverVariables(): VariableCollection + { + return $this->serverVariables; + } + + public function filesVariables(): VariableCollection + { + return $this->filesVariables; + } + + public function requestVariables(): VariableCollection + { + return $this->requestVariables; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php new file mode 100644 index 000000000..5fb0c72b2 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use const PATH_SEPARATOR; +use function constant; +use function define; +use function defined; +use function getenv; +use function implode; +use function ini_get; +use function ini_set; +use function putenv; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class PhpHandler +{ + public function handle(Php $configuration): void + { + $this->handleIncludePaths($configuration->includePaths()); + $this->handleIniSettings($configuration->iniSettings()); + $this->handleConstants($configuration->constants()); + $this->handleGlobalVariables($configuration->globalVariables()); + $this->handleServerVariables($configuration->serverVariables()); + $this->handleEnvVariables($configuration->envVariables()); + $this->handleVariables('_POST', $configuration->postVariables()); + $this->handleVariables('_GET', $configuration->getVariables()); + $this->handleVariables('_COOKIE', $configuration->cookieVariables()); + $this->handleVariables('_FILES', $configuration->filesVariables()); + $this->handleVariables('_REQUEST', $configuration->requestVariables()); + } + + private function handleIncludePaths(DirectoryCollection $includePaths): void + { + if (!$includePaths->isEmpty()) { + $includePathsAsStrings = []; + + foreach ($includePaths as $includePath) { + $includePathsAsStrings[] = $includePath->path(); + } + + ini_set( + 'include_path', + implode(PATH_SEPARATOR, $includePathsAsStrings) . + PATH_SEPARATOR . + ini_get('include_path') + ); + } + } + + private function handleIniSettings(IniSettingCollection $iniSettings): void + { + foreach ($iniSettings as $iniSetting) { + $value = $iniSetting->value(); + + if (defined($value)) { + $value = (string) constant($value); + } + + ini_set($iniSetting->name(), $value); + } + } + + private function handleConstants(ConstantCollection $constants): void + { + foreach ($constants as $constant) { + if (!defined($constant->name())) { + define($constant->name(), $constant->value()); + } + } + } + + private function handleGlobalVariables(VariableCollection $variables): void + { + foreach ($variables as $variable) { + $GLOBALS[$variable->name()] = $variable->value(); + } + } + + private function handleServerVariables(VariableCollection $variables): void + { + foreach ($variables as $variable) { + $_SERVER[$variable->name()] = $variable->value(); + } + } + + private function handleVariables(string $target, VariableCollection $variables): void + { + foreach ($variables as $variable) { + $GLOBALS[$target][$variable->name()] = $variable->value(); + } + } + + private function handleEnvVariables(VariableCollection $variables): void + { + foreach ($variables as $variable) { + $name = $variable->name(); + $value = $variable->value(); + $force = $variable->force(); + + if ($force || getenv($name) === false) { + putenv("{$name}={$value}"); + } + + $value = getenv($name); + + if ($force || !isset($_ENV[$name])) { + $_ENV[$name] = $value; + } + } + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php new file mode 100644 index 000000000..37c572ae3 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Variable +{ + /** + * @var string + */ + private $name; + + /** + * @var mixed + */ + private $value; + + /** + * @var bool + */ + private $force; + + public function __construct(string $name, $value, bool $force) + { + $this->name = $name; + $this->value = $value; + $this->force = $force; + } + + public function name(): string + { + return $this->name; + } + + public function value() + { + return $this->value; + } + + public function force(): bool + { + return $this->force; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php new file mode 100644 index 000000000..6662db649 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class VariableCollection implements Countable, IteratorAggregate +{ + /** + * @var Variable[] + */ + private $variables; + + /** + * @param Variable[] $variables + */ + public static function fromArray(array $variables): self + { + return new self(...$variables); + } + + private function __construct(Variable ...$variables) + { + $this->variables = $variables; + } + + /** + * @return Variable[] + */ + public function asArray(): array + { + return $this->variables; + } + + public function count(): int + { + return count($this->variables); + } + + public function getIterator(): VariableCollectionIterator + { + return new VariableCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php new file mode 100644 index 000000000..032d0be1e --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class VariableCollectionIterator implements Countable, Iterator +{ + /** + * @var Variable[] + */ + private $variables; + + /** + * @var int + */ + private $position; + + public function __construct(VariableCollection $variables) + { + $this->variables = $variables->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->variables); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Variable + { + return $this->variables[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php new file mode 100644 index 000000000..09fe8cc91 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class Extension +{ + /** + * @var string + * + * @psalm-var class-string + */ + private $className; + + /** + * @var string + */ + private $sourceFile; + + /** + * @var array + */ + private $arguments; + + /** + * @psalm-param class-string $className + */ + public function __construct(string $className, string $sourceFile, array $arguments) + { + $this->className = $className; + $this->sourceFile = $sourceFile; + $this->arguments = $arguments; + } + + /** + * @psalm-return class-string + */ + public function className(): string + { + return $this->className; + } + + public function hasSourceFile(): bool + { + return $this->sourceFile !== ''; + } + + public function sourceFile(): string + { + return $this->sourceFile; + } + + public function hasArguments(): bool + { + return !empty($this->arguments); + } + + public function arguments(): array + { + return $this->arguments; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php new file mode 100644 index 000000000..76d07ebc9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class ExtensionCollection implements IteratorAggregate +{ + /** + * @var Extension[] + */ + private $extensions; + + /** + * @param Extension[] $extensions + */ + public static function fromArray(array $extensions): self + { + return new self(...$extensions); + } + + private function __construct(Extension ...$extensions) + { + $this->extensions = $extensions; + } + + /** + * @return Extension[] + */ + public function asArray(): array + { + return $this->extensions; + } + + public function getIterator(): ExtensionCollectionIterator + { + return new ExtensionCollectionIterator($this); + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php new file mode 100644 index 000000000..a9fc1af8e --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class ExtensionCollectionIterator implements Countable, Iterator +{ + /** + * @var Extension[] + */ + private $extensions; + + /** + * @var int + */ + private $position; + + public function __construct(ExtensionCollection $extensions) + { + $this->extensions = $extensions->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->extensions); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Extension + { + return $this->extensions[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php new file mode 100644 index 000000000..5b3ce9b8d --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php @@ -0,0 +1,715 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class PHPUnit +{ + /** + * @var bool + */ + private $cacheResult; + + /** + * @var ?string + */ + private $cacheResultFile; + + /** + * @var int|string + */ + private $columns; + + /** + * @var string + */ + private $colors; + + /** + * @var bool + */ + private $stderr; + + /** + * @var bool + */ + private $noInteraction; + + /** + * @var bool + */ + private $verbose; + + /** + * @var bool + */ + private $reverseDefectList; + + /** + * @var bool + */ + private $convertDeprecationsToExceptions; + + /** + * @var bool + */ + private $convertErrorsToExceptions; + + /** + * @var bool + */ + private $convertNoticesToExceptions; + + /** + * @var bool + */ + private $convertWarningsToExceptions; + + /** + * @var bool + */ + private $forceCoversAnnotation; + + /** + * @var ?string + */ + private $bootstrap; + + /** + * @var bool + */ + private $processIsolation; + + /** + * @var bool + */ + private $failOnEmptyTestSuite; + + /** + * @var bool + */ + private $failOnIncomplete; + + /** + * @var bool + */ + private $failOnRisky; + + /** + * @var bool + */ + private $failOnSkipped; + + /** + * @var bool + */ + private $failOnWarning; + + /** + * @var bool + */ + private $stopOnDefect; + + /** + * @var bool + */ + private $stopOnError; + + /** + * @var bool + */ + private $stopOnFailure; + + /** + * @var bool + */ + private $stopOnWarning; + + /** + * @var bool + */ + private $stopOnIncomplete; + + /** + * @var bool + */ + private $stopOnRisky; + + /** + * @var bool + */ + private $stopOnSkipped; + + /** + * @var ?string + */ + private $extensionsDirectory; + + /** + * @var ?string + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + private $testSuiteLoaderClass; + + /** + * @var ?string + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + private $testSuiteLoaderFile; + + /** + * @var ?string + */ + private $printerClass; + + /** + * @var ?string + */ + private $printerFile; + + /** + * @var bool + */ + private $beStrictAboutChangesToGlobalState; + + /** + * @var bool + */ + private $beStrictAboutOutputDuringTests; + + /** + * @var bool + */ + private $beStrictAboutResourceUsageDuringSmallTests; + + /** + * @var bool + */ + private $beStrictAboutTestsThatDoNotTestAnything; + + /** + * @var bool + */ + private $beStrictAboutTodoAnnotatedTests; + + /** + * @var bool + */ + private $beStrictAboutCoversAnnotation; + + /** + * @var bool + */ + private $enforceTimeLimit; + + /** + * @var int + */ + private $defaultTimeLimit; + + /** + * @var int + */ + private $timeoutForSmallTests; + + /** + * @var int + */ + private $timeoutForMediumTests; + + /** + * @var int + */ + private $timeoutForLargeTests; + + /** + * @var ?string + */ + private $defaultTestSuite; + + /** + * @var int + */ + private $executionOrder; + + /** + * @var bool + */ + private $resolveDependencies; + + /** + * @var bool + */ + private $defectsFirst; + + /** + * @var bool + */ + private $backupGlobals; + + /** + * @var bool + */ + private $backupStaticAttributes; + + /** + * @var bool + */ + private $registerMockObjectsFromTestArgumentsRecursively; + + /** + * @var bool + */ + private $conflictBetweenPrinterClassAndTestdox; + + public function __construct(bool $cacheResult, ?string $cacheResultFile, $columns, string $colors, bool $stderr, bool $noInteraction, bool $verbose, bool $reverseDefectList, bool $convertDeprecationsToExceptions, bool $convertErrorsToExceptions, bool $convertNoticesToExceptions, bool $convertWarningsToExceptions, bool $forceCoversAnnotation, ?string $bootstrap, bool $processIsolation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnError, bool $stopOnFailure, bool $stopOnWarning, bool $stopOnIncomplete, bool $stopOnRisky, bool $stopOnSkipped, ?string $extensionsDirectory, ?string $testSuiteLoaderClass, ?string $testSuiteLoaderFile, ?string $printerClass, ?string $printerFile, bool $beStrictAboutChangesToGlobalState, bool $beStrictAboutOutputDuringTests, bool $beStrictAboutResourceUsageDuringSmallTests, bool $beStrictAboutTestsThatDoNotTestAnything, bool $beStrictAboutTodoAnnotatedTests, bool $beStrictAboutCoversAnnotation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, ?string $defaultTestSuite, int $executionOrder, bool $resolveDependencies, bool $defectsFirst, bool $backupGlobals, bool $backupStaticAttributes, bool $registerMockObjectsFromTestArgumentsRecursively, bool $conflictBetweenPrinterClassAndTestdox) + { + $this->cacheResult = $cacheResult; + $this->cacheResultFile = $cacheResultFile; + $this->columns = $columns; + $this->colors = $colors; + $this->stderr = $stderr; + $this->noInteraction = $noInteraction; + $this->verbose = $verbose; + $this->reverseDefectList = $reverseDefectList; + $this->convertDeprecationsToExceptions = $convertDeprecationsToExceptions; + $this->convertErrorsToExceptions = $convertErrorsToExceptions; + $this->convertNoticesToExceptions = $convertNoticesToExceptions; + $this->convertWarningsToExceptions = $convertWarningsToExceptions; + $this->forceCoversAnnotation = $forceCoversAnnotation; + $this->bootstrap = $bootstrap; + $this->processIsolation = $processIsolation; + $this->failOnEmptyTestSuite = $failOnEmptyTestSuite; + $this->failOnIncomplete = $failOnIncomplete; + $this->failOnRisky = $failOnRisky; + $this->failOnSkipped = $failOnSkipped; + $this->failOnWarning = $failOnWarning; + $this->stopOnDefect = $stopOnDefect; + $this->stopOnError = $stopOnError; + $this->stopOnFailure = $stopOnFailure; + $this->stopOnWarning = $stopOnWarning; + $this->stopOnIncomplete = $stopOnIncomplete; + $this->stopOnRisky = $stopOnRisky; + $this->stopOnSkipped = $stopOnSkipped; + $this->extensionsDirectory = $extensionsDirectory; + $this->testSuiteLoaderClass = $testSuiteLoaderClass; + $this->testSuiteLoaderFile = $testSuiteLoaderFile; + $this->printerClass = $printerClass; + $this->printerFile = $printerFile; + $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; + $this->beStrictAboutOutputDuringTests = $beStrictAboutOutputDuringTests; + $this->beStrictAboutResourceUsageDuringSmallTests = $beStrictAboutResourceUsageDuringSmallTests; + $this->beStrictAboutTestsThatDoNotTestAnything = $beStrictAboutTestsThatDoNotTestAnything; + $this->beStrictAboutTodoAnnotatedTests = $beStrictAboutTodoAnnotatedTests; + $this->beStrictAboutCoversAnnotation = $beStrictAboutCoversAnnotation; + $this->enforceTimeLimit = $enforceTimeLimit; + $this->defaultTimeLimit = $defaultTimeLimit; + $this->timeoutForSmallTests = $timeoutForSmallTests; + $this->timeoutForMediumTests = $timeoutForMediumTests; + $this->timeoutForLargeTests = $timeoutForLargeTests; + $this->defaultTestSuite = $defaultTestSuite; + $this->executionOrder = $executionOrder; + $this->resolveDependencies = $resolveDependencies; + $this->defectsFirst = $defectsFirst; + $this->backupGlobals = $backupGlobals; + $this->backupStaticAttributes = $backupStaticAttributes; + $this->registerMockObjectsFromTestArgumentsRecursively = $registerMockObjectsFromTestArgumentsRecursively; + $this->conflictBetweenPrinterClassAndTestdox = $conflictBetweenPrinterClassAndTestdox; + } + + public function cacheResult(): bool + { + return $this->cacheResult; + } + + /** + * @psalm-assert-if-true !null $this->cacheResultFile + */ + public function hasCacheResultFile(): bool + { + return $this->cacheResultFile !== null; + } + + /** + * @throws Exception + */ + public function cacheResultFile(): string + { + if (!$this->hasCacheResultFile()) { + throw new Exception('Cache result file is not configured'); + } + + return (string) $this->cacheResultFile; + } + + public function columns() + { + return $this->columns; + } + + public function colors(): string + { + return $this->colors; + } + + public function stderr(): bool + { + return $this->stderr; + } + + public function noInteraction(): bool + { + return $this->noInteraction; + } + + public function verbose(): bool + { + return $this->verbose; + } + + public function reverseDefectList(): bool + { + return $this->reverseDefectList; + } + + public function convertDeprecationsToExceptions(): bool + { + return $this->convertDeprecationsToExceptions; + } + + public function convertErrorsToExceptions(): bool + { + return $this->convertErrorsToExceptions; + } + + public function convertNoticesToExceptions(): bool + { + return $this->convertNoticesToExceptions; + } + + public function convertWarningsToExceptions(): bool + { + return $this->convertWarningsToExceptions; + } + + public function forceCoversAnnotation(): bool + { + return $this->forceCoversAnnotation; + } + + /** + * @psalm-assert-if-true !null $this->bootstrap + */ + public function hasBootstrap(): bool + { + return $this->bootstrap !== null; + } + + /** + * @throws Exception + */ + public function bootstrap(): string + { + if (!$this->hasBootstrap()) { + throw new Exception('Bootstrap script is not configured'); + } + + return (string) $this->bootstrap; + } + + public function processIsolation(): bool + { + return $this->processIsolation; + } + + public function failOnEmptyTestSuite(): bool + { + return $this->failOnEmptyTestSuite; + } + + public function failOnIncomplete(): bool + { + return $this->failOnIncomplete; + } + + public function failOnRisky(): bool + { + return $this->failOnRisky; + } + + public function failOnSkipped(): bool + { + return $this->failOnSkipped; + } + + public function failOnWarning(): bool + { + return $this->failOnWarning; + } + + public function stopOnDefect(): bool + { + return $this->stopOnDefect; + } + + public function stopOnError(): bool + { + return $this->stopOnError; + } + + public function stopOnFailure(): bool + { + return $this->stopOnFailure; + } + + public function stopOnWarning(): bool + { + return $this->stopOnWarning; + } + + public function stopOnIncomplete(): bool + { + return $this->stopOnIncomplete; + } + + public function stopOnRisky(): bool + { + return $this->stopOnRisky; + } + + public function stopOnSkipped(): bool + { + return $this->stopOnSkipped; + } + + /** + * @psalm-assert-if-true !null $this->extensionsDirectory + */ + public function hasExtensionsDirectory(): bool + { + return $this->extensionsDirectory !== null; + } + + /** + * @throws Exception + */ + public function extensionsDirectory(): string + { + if (!$this->hasExtensionsDirectory()) { + throw new Exception('Extensions directory is not configured'); + } + + return (string) $this->extensionsDirectory; + } + + /** + * @psalm-assert-if-true !null $this->testSuiteLoaderClass + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + public function hasTestSuiteLoaderClass(): bool + { + return $this->testSuiteLoaderClass !== null; + } + + /** + * @throws Exception + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + public function testSuiteLoaderClass(): string + { + if (!$this->hasTestSuiteLoaderClass()) { + throw new Exception('TestSuiteLoader class is not configured'); + } + + return (string) $this->testSuiteLoaderClass; + } + + /** + * @psalm-assert-if-true !null $this->testSuiteLoaderFile + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + public function hasTestSuiteLoaderFile(): bool + { + return $this->testSuiteLoaderFile !== null; + } + + /** + * @throws Exception + * + * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039 + */ + public function testSuiteLoaderFile(): string + { + if (!$this->hasTestSuiteLoaderFile()) { + throw new Exception('TestSuiteLoader sourcecode file is not configured'); + } + + return (string) $this->testSuiteLoaderFile; + } + + /** + * @psalm-assert-if-true !null $this->printerClass + */ + public function hasPrinterClass(): bool + { + return $this->printerClass !== null; + } + + /** + * @throws Exception + */ + public function printerClass(): string + { + if (!$this->hasPrinterClass()) { + throw new Exception('ResultPrinter class is not configured'); + } + + return (string) $this->printerClass; + } + + /** + * @psalm-assert-if-true !null $this->printerFile + */ + public function hasPrinterFile(): bool + { + return $this->printerFile !== null; + } + + /** + * @throws Exception + */ + public function printerFile(): string + { + if (!$this->hasPrinterFile()) { + throw new Exception('ResultPrinter sourcecode file is not configured'); + } + + return (string) $this->printerFile; + } + + public function beStrictAboutChangesToGlobalState(): bool + { + return $this->beStrictAboutChangesToGlobalState; + } + + public function beStrictAboutOutputDuringTests(): bool + { + return $this->beStrictAboutOutputDuringTests; + } + + public function beStrictAboutResourceUsageDuringSmallTests(): bool + { + return $this->beStrictAboutResourceUsageDuringSmallTests; + } + + public function beStrictAboutTestsThatDoNotTestAnything(): bool + { + return $this->beStrictAboutTestsThatDoNotTestAnything; + } + + public function beStrictAboutTodoAnnotatedTests(): bool + { + return $this->beStrictAboutTodoAnnotatedTests; + } + + public function beStrictAboutCoversAnnotation(): bool + { + return $this->beStrictAboutCoversAnnotation; + } + + public function enforceTimeLimit(): bool + { + return $this->enforceTimeLimit; + } + + public function defaultTimeLimit(): int + { + return $this->defaultTimeLimit; + } + + public function timeoutForSmallTests(): int + { + return $this->timeoutForSmallTests; + } + + public function timeoutForMediumTests(): int + { + return $this->timeoutForMediumTests; + } + + public function timeoutForLargeTests(): int + { + return $this->timeoutForLargeTests; + } + + /** + * @psalm-assert-if-true !null $this->defaultTestSuite + */ + public function hasDefaultTestSuite(): bool + { + return $this->defaultTestSuite !== null; + } + + /** + * @throws Exception + */ + public function defaultTestSuite(): string + { + if (!$this->hasDefaultTestSuite()) { + throw new Exception('Default test suite is not configured'); + } + + return (string) $this->defaultTestSuite; + } + + public function executionOrder(): int + { + return $this->executionOrder; + } + + public function resolveDependencies(): bool + { + return $this->resolveDependencies; + } + + public function defectsFirst(): bool + { + return $this->defectsFirst; + } + + public function backupGlobals(): bool + { + return $this->backupGlobals; + } + + public function backupStaticAttributes(): bool + { + return $this->backupStaticAttributes; + } + + public function registerMockObjectsFromTestArgumentsRecursively(): bool + { + return $this->registerMockObjectsFromTestArgumentsRecursively; + } + + public function conflictBetweenPrinterClassAndTestdox(): bool + { + return $this->conflictBetweenPrinterClassAndTestdox; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php new file mode 100644 index 000000000..ecefbb7c9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use PHPUnit\Util\VersionComparisonOperator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class TestDirectory +{ + /** + * @var string + */ + private $path; + + /** + * @var string + */ + private $prefix; + + /** + * @var string + */ + private $suffix; + + /** + * @var string + */ + private $phpVersion; + + /** + * @var VersionComparisonOperator + */ + private $phpVersionOperator; + + public function __construct(string $path, string $prefix, string $suffix, string $phpVersion, VersionComparisonOperator $phpVersionOperator) + { + $this->path = $path; + $this->prefix = $prefix; + $this->suffix = $suffix; + $this->phpVersion = $phpVersion; + $this->phpVersionOperator = $phpVersionOperator; + } + + public function path(): string + { + return $this->path; + } + + public function prefix(): string + { + return $this->prefix; + } + + public function suffix(): string + { + return $this->suffix; + } + + public function phpVersion(): string + { + return $this->phpVersion; + } + + public function phpVersionOperator(): VersionComparisonOperator + { + return $this->phpVersionOperator; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php new file mode 100644 index 000000000..5f581c210 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class TestDirectoryCollection implements Countable, IteratorAggregate +{ + /** + * @var TestDirectory[] + */ + private $directories; + + /** + * @param TestDirectory[] $directories + */ + public static function fromArray(array $directories): self + { + return new self(...$directories); + } + + private function __construct(TestDirectory ...$directories) + { + $this->directories = $directories; + } + + /** + * @return TestDirectory[] + */ + public function asArray(): array + { + return $this->directories; + } + + public function count(): int + { + return count($this->directories); + } + + public function getIterator(): TestDirectoryCollectionIterator + { + return new TestDirectoryCollectionIterator($this); + } + + public function isEmpty(): bool + { + return $this->count() === 0; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php new file mode 100644 index 000000000..b2312a384 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class TestDirectoryCollectionIterator implements Countable, Iterator +{ + /** + * @var TestDirectory[] + */ + private $directories; + + /** + * @var int + */ + private $position; + + public function __construct(TestDirectoryCollection $directories) + { + $this->directories = $directories->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->directories); + } + + public function key(): int + { + return $this->position; + } + + public function current(): TestDirectory + { + return $this->directories[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php new file mode 100644 index 000000000..21d1cf7b1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use PHPUnit\Util\VersionComparisonOperator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class TestFile +{ + /** + * @var string + */ + private $path; + + /** + * @var string + */ + private $phpVersion; + + /** + * @var VersionComparisonOperator + */ + private $phpVersionOperator; + + public function __construct(string $path, string $phpVersion, VersionComparisonOperator $phpVersionOperator) + { + $this->path = $path; + $this->phpVersion = $phpVersion; + $this->phpVersionOperator = $phpVersionOperator; + } + + public function path(): string + { + return $this->path; + } + + public function phpVersion(): string + { + return $this->phpVersion; + } + + public function phpVersionOperator(): VersionComparisonOperator + { + return $this->phpVersionOperator; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php new file mode 100644 index 000000000..27ba9bd28 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class TestFileCollection implements Countable, IteratorAggregate +{ + /** + * @var TestFile[] + */ + private $files; + + /** + * @param TestFile[] $files + */ + public static function fromArray(array $files): self + { + return new self(...$files); + } + + private function __construct(TestFile ...$files) + { + $this->files = $files; + } + + /** + * @return TestFile[] + */ + public function asArray(): array + { + return $this->files; + } + + public function count(): int + { + return count($this->files); + } + + public function getIterator(): TestFileCollectionIterator + { + return new TestFileCollectionIterator($this); + } + + public function isEmpty(): bool + { + return $this->count() === 0; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php new file mode 100644 index 000000000..45a5f160c --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class TestFileCollectionIterator implements Countable, Iterator +{ + /** + * @var TestFile[] + */ + private $files; + + /** + * @var int + */ + private $position; + + public function __construct(TestFileCollection $files) + { + $this->files = $files->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->files); + } + + public function key(): int + { + return $this->position; + } + + public function current(): TestFile + { + return $this->files[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php new file mode 100644 index 000000000..035376cbb --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class TestSuite +{ + /** + * @var string + */ + private $name; + + /** + * @var TestDirectoryCollection + */ + private $directories; + + /** + * @var TestFileCollection + */ + private $files; + + /** + * @var FileCollection + */ + private $exclude; + + public function __construct(string $name, TestDirectoryCollection $directories, TestFileCollection $files, FileCollection $exclude) + { + $this->name = $name; + $this->directories = $directories; + $this->files = $files; + $this->exclude = $exclude; + } + + public function name(): string + { + return $this->name; + } + + public function directories(): TestDirectoryCollection + { + return $this->directories; + } + + public function files(): TestFileCollection + { + return $this->files; + } + + public function exclude(): FileCollection + { + return $this->exclude; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php new file mode 100644 index 000000000..f632e5194 --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + * + * @template-implements IteratorAggregate + */ +final class TestSuiteCollection implements Countable, IteratorAggregate +{ + /** + * @var TestSuite[] + */ + private $testSuites; + + /** + * @param TestSuite[] $testSuites + */ + public static function fromArray(array $testSuites): self + { + return new self(...$testSuites); + } + + private function __construct(TestSuite ...$testSuites) + { + $this->testSuites = $testSuites; + } + + /** + * @return TestSuite[] + */ + public function asArray(): array + { + return $this->testSuites; + } + + public function count(): int + { + return count($this->testSuites); + } + + public function getIterator(): TestSuiteCollectionIterator + { + return new TestSuiteCollectionIterator($this); + } + + public function isEmpty(): bool + { + return $this->count() === 0; + } +} diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php new file mode 100644 index 000000000..42d03db0f --- /dev/null +++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\TextUI\XmlConfiguration; + +use function count; +use function iterator_count; +use Countable; +use Iterator; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements Iterator + */ +final class TestSuiteCollectionIterator implements Countable, Iterator +{ + /** + * @var TestSuite[] + */ + private $testSuites; + + /** + * @var int + */ + private $position; + + public function __construct(TestSuiteCollection $testSuites) + { + $this->testSuites = $testSuites->asArray(); + } + + public function count(): int + { + return iterator_count($this); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return $this->position < count($this->testSuites); + } + + public function key(): int + { + return $this->position; + } + + public function current(): TestSuite + { + return $this->testSuites[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php b/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php index 22d33130f..648f9edc6 100644 --- a/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php +++ b/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php @@ -18,16 +18,12 @@ use function array_merge; use function array_pop; use function array_slice; use function array_values; -use function constant; use function count; -use function defined; use function explode; use function file; use function implode; use function is_array; use function is_int; -use function is_numeric; -use function is_string; use function json_decode; use function json_last_error; use function json_last_error_msg; @@ -43,7 +39,6 @@ use function strlen; use function strpos; use function strtolower; use function substr; -use function substr_count; use function trim; use PharIo\Version\VersionConstraintParser; use PHPUnit\Framework\InvalidDataProviderException; @@ -84,8 +79,6 @@ final class DocBlock private const REGEX_TEST_WITH = '/@testWith\s+/'; - private const REGEX_EXPECTED_EXCEPTION = '(@expectedException\s+([:.\w\\\\x7f-\xff]+)(?:[\t ]+(\S*))?(?:[\t ]+(\S*))?\s*$)m'; - /** @var string */ private $docComment; @@ -239,7 +232,6 @@ final class DocBlock ]; $recordedOffsets[$matches['name'] . '_constraint'] = $offset; } catch (\PharIo\Version\Exception $e) { - /* @TODO this catch is currently not valid, see https://github.com/phar-io/version/issues/16 */ throw new Warning($e->getMessage(), $e->getCode(), $e); } } @@ -280,61 +272,6 @@ final class DocBlock ); } - /** - * @return array|bool - * - * @psalm-return false|array{ - * class: class-string, - * code: int|string|null, - * message: string, - * message_regex: string - * } - */ - public function expectedException() - { - $docComment = (string) substr($this->docComment, 3, -2); - - if (1 !== preg_match(self::REGEX_EXPECTED_EXCEPTION, $docComment, $matches)) { - return false; - } - - /** @psalm-var class-string $class */ - $class = $matches[1]; - $annotations = $this->symbolAnnotations(); - $code = null; - $message = ''; - $messageRegExp = ''; - - if (isset($matches[2])) { - $message = trim($matches[2]); - } elseif (isset($annotations['expectedExceptionMessage'])) { - $message = $this->parseAnnotationContent($annotations['expectedExceptionMessage'][0]); - } - - if (isset($annotations['expectedExceptionMessageRegExp'])) { - $messageRegExp = $this->parseAnnotationContent($annotations['expectedExceptionMessageRegExp'][0]); - } - - if (isset($matches[3])) { - $code = $matches[3]; - } elseif (isset($annotations['expectedExceptionCode'])) { - $code = $this->parseAnnotationContent($annotations['expectedExceptionCode'][0]); - } - - if (is_numeric($code)) { - $code = (int) $code; - } elseif (is_string($code) && defined($code)) { - $code = (int) constant($code); - } - - return [ - 'class' => $class, - 'code' => $code, - 'message' => $message, - 'message_regex' => $messageRegExp, - ]; - } - /** * Returns the provided data for a method. * @@ -420,21 +357,14 @@ final class DocBlock return 1 === preg_match('/@after\b/', $this->docComment); } - /** - * Parse annotation content to use constant/class constant values. - * - * Constants are specified using a starting '@'. For example: @ClassName::CONST_NAME - * - * If the constant is not found the string is used as is to ensure maximum BC. - */ - private function parseAnnotationContent(string $message): string + public function isToBeExecutedAsPreCondition(): bool { - if (defined($message) && - (strpos($message, '::') !== false && substr_count($message, '::') + 1 === 2)) { - return constant($message); - } + return 1 === preg_match('/@preCondition\b/', $this->docComment); + } - return $message; + public function isToBeExecutedAsPostCondition(): bool + { + return 1 === preg_match('/@postCondition\b/', $this->docComment); } private function getDataFromDataProviderAnnotation(string $docComment): ?array @@ -480,7 +410,7 @@ final class DocBlock } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); // @codeCoverageIgnoreEnd diff --git a/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php b/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php index 798305be4..8ee6c8395 100644 --- a/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php +++ b/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php @@ -58,7 +58,7 @@ final class Registry } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -84,7 +84,7 @@ final class Registry } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Util/Blacklist.php b/vendor/phpunit/phpunit/src/Util/Blacklist.php index dd89dcd55..3b416e142 100644 --- a/vendor/phpunit/phpunit/src/Util/Blacklist.php +++ b/vendor/phpunit/phpunit/src/Util/Blacklist.php @@ -9,145 +9,17 @@ */ namespace PHPUnit\Util; -use const DIRECTORY_SEPARATOR; -use function class_exists; -use function defined; -use function dirname; -use function strpos; -use function sys_get_temp_dir; -use Composer\Autoload\ClassLoader; -use DeepCopy\DeepCopy; -use Doctrine\Instantiator\Instantiator; -use PharIo\Manifest\Manifest; -use PharIo\Version\Version as PharIoVersion; -use PHP_Token; -use phpDocumentor\Reflection\DocBlock; -use phpDocumentor\Reflection\Project; -use phpDocumentor\Reflection\Type; -use PHPUnit\Framework\TestCase; -use Prophecy\Prophet; -use ReflectionClass; -use ReflectionException; -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeUnitReverseLookup\Wizard; -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Diff\Diff; -use SebastianBergmann\Environment\Runtime; -use SebastianBergmann\Exporter\Exporter; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; -use SebastianBergmann\GlobalState\Snapshot; -use SebastianBergmann\Invoker\Invoker; -use SebastianBergmann\ObjectEnumerator\Enumerator; -use SebastianBergmann\RecursionContext\Context; -use SebastianBergmann\ResourceOperations\ResourceOperations; -use SebastianBergmann\Timer\Timer; -use SebastianBergmann\Type\TypeName; -use SebastianBergmann\Version; -use Text_Template; -use TheSeer\Tokenizer\Tokenizer; -use Webmozart\Assert\Assert; - /** - * @internal This class is not covered by the backward compatibility promise for PHPUnit + * @deprecated Use ExcludeList instead + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Blacklist { - /** - * @var array - */ - public static $blacklistedClassNames = [ - // composer - ClassLoader::class => 1, - - // doctrine/instantiator - Instantiator::class => 1, - - // myclabs/deepcopy - DeepCopy::class => 1, - - // phar-io/manifest - Manifest::class => 1, - - // phar-io/version - PharIoVersion::class => 1, - - // phpdocumentor/reflection-common - Project::class => 1, - - // phpdocumentor/reflection-docblock - DocBlock::class => 1, - - // phpdocumentor/type-resolver - Type::class => 1, - - // phpspec/prophecy - Prophet::class => 1, - - // phpunit/phpunit - TestCase::class => 2, - - // phpunit/php-code-coverage - CodeCoverage::class => 1, - - // phpunit/php-file-iterator - FileIteratorFacade::class => 1, - - // phpunit/php-invoker - Invoker::class => 1, - - // phpunit/php-text-template - Text_Template::class => 1, - - // phpunit/php-timer - Timer::class => 1, - - // phpunit/php-token-stream - PHP_Token::class => 1, - - // sebastian/code-unit-reverse-lookup - Wizard::class => 1, - - // sebastian/comparator - Comparator::class => 1, - - // sebastian/diff - Diff::class => 1, - - // sebastian/environment - Runtime::class => 1, - - // sebastian/exporter - Exporter::class => 1, - - // sebastian/global-state - Snapshot::class => 1, - - // sebastian/object-enumerator - Enumerator::class => 1, - - // sebastian/recursion-context - Context::class => 1, - - // sebastian/resource-operations - ResourceOperations::class => 1, - - // sebastian/type - TypeName::class => 1, - - // sebastian/version - Version::class => 1, - - // theseer/tokenizer - Tokenizer::class => 1, - - // webmozart/assert - Assert::class => 1, - ]; - - /** - * @var string[] - */ - private static $directories; + public static function addDirectory(string $directory): void + { + ExcludeList::addDirectory($directory); + } /** * @throws Exception @@ -156,9 +28,7 @@ final class Blacklist */ public function getBlacklistedDirectories(): array { - $this->initialize(); - - return self::$directories; + return (new ExcludeList)->getExcludedDirectories(); } /** @@ -166,59 +36,6 @@ final class Blacklist */ public function isBlacklisted(string $file): bool { - if (defined('PHPUNIT_TESTSUITE')) { - return false; - } - - $this->initialize(); - - foreach (self::$directories as $directory) { - if (strpos($file, $directory) === 0) { - return true; - } - } - - return false; - } - - /** - * @throws Exception - */ - private function initialize(): void - { - if (self::$directories === null) { - self::$directories = []; - - foreach (self::$blacklistedClassNames as $className => $parent) { - if (!class_exists($className)) { - continue; - } - - try { - $directory = (new ReflectionClass($className))->getFileName(); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - for ($i = 0; $i < $parent; $i++) { - $directory = dirname($directory); - } - - self::$directories[] = $directory; - } - - // Hide process isolation workaround on Windows. - if (DIRECTORY_SEPARATOR === '\\') { - // tempnam() prefix is limited to first 3 chars. - // @see https://php.net/manual/en/function.tempnam.php - self::$directories[] = sys_get_temp_dir() . '\\PHP'; - } - } + return (new ExcludeList)->isExcluded($file); } } diff --git a/vendor/phpunit/phpunit/src/Util/Cloner.php b/vendor/phpunit/phpunit/src/Util/Cloner.php new file mode 100644 index 000000000..38bd59ff9 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Cloner.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util; + +use Throwable; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Cloner +{ + /** + * @psalm-template OriginalType + * + * @psalm-param OriginalType $original + * + * @psalm-return OriginalType + */ + public static function clone(object $original): object + { + try { + return clone $original; + } catch (Throwable $t) { + return $original; + } + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Configuration.php b/vendor/phpunit/phpunit/src/Util/Configuration.php deleted file mode 100644 index 1cb5f772d..000000000 --- a/vendor/phpunit/phpunit/src/Util/Configuration.php +++ /dev/null @@ -1,1231 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use const DIRECTORY_SEPARATOR; -use const PATH_SEPARATOR; -use const PHP_VERSION; -use function assert; -use function constant; -use function count; -use function define; -use function defined; -use function dirname; -use function explode; -use function file_exists; -use function file_get_contents; -use function getenv; -use function implode; -use function in_array; -use function ini_get; -use function ini_set; -use function is_numeric; -use function libxml_clear_errors; -use function libxml_get_errors; -use function libxml_use_internal_errors; -use function preg_match; -use function putenv; -use function realpath; -use function sprintf; -use function stream_resolve_include_path; -use function strlen; -use function strpos; -use function strtolower; -use function strtoupper; -use function substr; -use function trim; -use function version_compare; -use DOMDocument; -use DOMElement; -use DOMNodeList; -use DOMXPath; -use LibXMLError; -use PHPUnit\Framework\Exception; -use PHPUnit\Framework\TestSuite; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\ResultPrinter; -use PHPUnit\Util\TestDox\CliTestDoxPrinter; -use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; - -/** - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Configuration -{ - /** - * @var self[] - */ - private static $instances = []; - - /** - * @var DOMDocument - */ - private $document; - - /** - * @var DOMXPath - */ - private $xpath; - - /** - * @var string - */ - private $filename; - - /** - * @var LibXMLError[] - */ - private $errors = []; - - /** - * Returns a PHPUnit configuration object. - * - * @throws Exception - */ - public static function getInstance(string $filename): self - { - $realPath = realpath($filename); - - if ($realPath === false) { - throw new Exception( - sprintf( - 'Could not read "%s".', - $filename - ) - ); - } - - if (!isset(self::$instances[$realPath])) { - self::$instances[$realPath] = new self($realPath); - } - - return self::$instances[$realPath]; - } - - /** - * Loads a PHPUnit configuration file. - * - * @throws Exception - */ - private function __construct(string $filename) - { - $this->filename = $filename; - $this->document = Xml::loadFile($filename, false, true, true); - $this->xpath = new DOMXPath($this->document); - - $this->validateConfigurationAgainstSchema(); - } - - /** - * @codeCoverageIgnore - */ - private function __clone() - { - } - - public function hasValidationErrors(): bool - { - return count($this->errors) > 0; - } - - public function getValidationErrors(): array - { - $result = []; - - foreach ($this->errors as $error) { - if (!isset($result[$error->line])) { - $result[$error->line] = []; - } - $result[$error->line][] = trim($error->message); - } - - return $result; - } - - /** - * Returns the real path to the configuration file. - */ - public function getFilename(): string - { - return $this->filename; - } - - public function getExtensionConfiguration(): array - { - $result = []; - - foreach ($this->xpath->query('extensions/extension') as $extension) { - $result[] = $this->getElementConfigurationParameters($extension); - } - - return $result; - } - - /** - * Returns the configuration for SUT filtering. - */ - public function getFilterConfiguration(): array - { - $addUncoveredFilesFromWhitelist = true; - $processUncoveredFilesFromWhitelist = false; - $includeDirectory = []; - $includeFile = []; - $excludeDirectory = []; - $excludeFile = []; - - $tmp = $this->xpath->query('filter/whitelist'); - - if ($tmp->length === 1) { - if ($tmp->item(0)->hasAttribute('addUncoveredFilesFromWhitelist')) { - $addUncoveredFilesFromWhitelist = $this->getBoolean( - (string) $tmp->item(0)->getAttribute( - 'addUncoveredFilesFromWhitelist' - ), - true - ); - } - - if ($tmp->item(0)->hasAttribute('processUncoveredFilesFromWhitelist')) { - $processUncoveredFilesFromWhitelist = $this->getBoolean( - (string) $tmp->item(0)->getAttribute( - 'processUncoveredFilesFromWhitelist' - ), - false - ); - } - - $includeDirectory = $this->readFilterDirectories( - 'filter/whitelist/directory' - ); - - $includeFile = $this->readFilterFiles( - 'filter/whitelist/file' - ); - - $excludeDirectory = $this->readFilterDirectories( - 'filter/whitelist/exclude/directory' - ); - - $excludeFile = $this->readFilterFiles( - 'filter/whitelist/exclude/file' - ); - } - - return [ - 'whitelist' => [ - 'addUncoveredFilesFromWhitelist' => $addUncoveredFilesFromWhitelist, - 'processUncoveredFilesFromWhitelist' => $processUncoveredFilesFromWhitelist, - 'include' => [ - 'directory' => $includeDirectory, - 'file' => $includeFile, - ], - 'exclude' => [ - 'directory' => $excludeDirectory, - 'file' => $excludeFile, - ], - ], - ]; - } - - /** - * Returns the configuration for groups. - */ - public function getGroupConfiguration(): array - { - return $this->parseGroupConfiguration('groups'); - } - - /** - * Returns the configuration for testdox groups. - */ - public function getTestdoxGroupConfiguration(): array - { - return $this->parseGroupConfiguration('testdoxGroups'); - } - - /** - * Returns the configuration for listeners. - */ - public function getListenerConfiguration(): array - { - $result = []; - - foreach ($this->xpath->query('listeners/listener') as $listener) { - $result[] = $this->getElementConfigurationParameters($listener); - } - - return $result; - } - - /** - * Returns the logging configuration. - */ - public function getLoggingConfiguration(): array - { - $result = []; - - foreach ($this->xpath->query('logging/log') as $log) { - assert($log instanceof DOMElement); - - $type = (string) $log->getAttribute('type'); - $target = (string) $log->getAttribute('target'); - - if (!$target) { - continue; - } - - $target = $this->toAbsolutePath($target); - - if ($type === 'coverage-html') { - if ($log->hasAttribute('lowUpperBound')) { - $result['lowUpperBound'] = $this->getInteger( - (string) $log->getAttribute('lowUpperBound'), - 50 - ); - } - - if ($log->hasAttribute('highLowerBound')) { - $result['highLowerBound'] = $this->getInteger( - (string) $log->getAttribute('highLowerBound'), - 90 - ); - } - } elseif ($type === 'coverage-crap4j') { - if ($log->hasAttribute('threshold')) { - $result['crap4jThreshold'] = $this->getInteger( - (string) $log->getAttribute('threshold'), - 30 - ); - } - } elseif ($type === 'coverage-text') { - if ($log->hasAttribute('showUncoveredFiles')) { - $result['coverageTextShowUncoveredFiles'] = $this->getBoolean( - (string) $log->getAttribute('showUncoveredFiles'), - false - ); - } - - if ($log->hasAttribute('showOnlySummary')) { - $result['coverageTextShowOnlySummary'] = $this->getBoolean( - (string) $log->getAttribute('showOnlySummary'), - false - ); - } - } - - $result[$type] = $target; - } - - return $result; - } - - /** - * Returns the PHP configuration. - */ - public function getPHPConfiguration(): array - { - $result = [ - 'include_path' => [], - 'ini' => [], - 'const' => [], - 'var' => [], - 'env' => [], - 'post' => [], - 'get' => [], - 'cookie' => [], - 'server' => [], - 'files' => [], - 'request' => [], - ]; - - foreach ($this->xpath->query('php/includePath') as $includePath) { - $path = (string) $includePath->textContent; - - if ($path) { - $result['include_path'][] = $this->toAbsolutePath($path); - } - } - - foreach ($this->xpath->query('php/ini') as $ini) { - assert($ini instanceof DOMElement); - - $name = (string) $ini->getAttribute('name'); - $value = (string) $ini->getAttribute('value'); - - $result['ini'][$name]['value'] = $value; - } - - foreach ($this->xpath->query('php/const') as $const) { - assert($const instanceof DOMElement); - - $name = (string) $const->getAttribute('name'); - $value = (string) $const->getAttribute('value'); - - $result['const'][$name]['value'] = $this->getBoolean($value, $value); - } - - foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { - foreach ($this->xpath->query('php/' . $array) as $var) { - assert($var instanceof DOMElement); - - $name = (string) $var->getAttribute('name'); - $value = (string) $var->getAttribute('value'); - $verbatim = false; - - if ($var->hasAttribute('verbatim')) { - $verbatim = $this->getBoolean($var->getAttribute('verbatim'), false); - $result[$array][$name]['verbatim'] = $verbatim; - } - - if ($var->hasAttribute('force')) { - $force = $this->getBoolean($var->getAttribute('force'), false); - $result[$array][$name]['force'] = $force; - } - - if (!$verbatim) { - $value = $this->getBoolean($value, $value); - } - - $result[$array][$name]['value'] = $value; - } - } - - return $result; - } - - /** - * Handles the PHP configuration. - */ - public function handlePHPConfiguration(): void - { - $configuration = $this->getPHPConfiguration(); - - if (!empty($configuration['include_path'])) { - ini_set( - 'include_path', - implode(PATH_SEPARATOR, $configuration['include_path']) . - PATH_SEPARATOR . - ini_get('include_path') - ); - } - - foreach ($configuration['ini'] as $name => $data) { - $value = $data['value']; - - if (defined($value)) { - $value = (string) constant($value); - } - - ini_set($name, $value); - } - - foreach ($configuration['const'] as $name => $data) { - $value = $data['value']; - - if (!defined($name)) { - define($name, $value); - } - } - - foreach ($configuration['var'] as $name => $data) { - $GLOBALS[$name] = $data['value']; - } - - foreach ($configuration['server'] as $name => $data) { - $_SERVER[$name] = $data['value']; - } - - foreach (['post', 'get', 'cookie', 'files', 'request'] as $array) { - $target = &$GLOBALS['_' . strtoupper($array)]; - - foreach ($configuration[$array] as $name => $data) { - $target[$name] = $data['value']; - } - } - - foreach ($configuration['env'] as $name => $data) { - $value = $data['value']; - $force = $data['force'] ?? false; - - if ($force || getenv($name) === false) { - putenv("{$name}={$value}"); - } - - $value = getenv($name); - - if (!isset($_ENV[$name])) { - $_ENV[$name] = $value; - } - - if ($force) { - $_ENV[$name] = $value; - } - } - } - - /** - * Returns the PHPUnit configuration. - */ - public function getPHPUnitConfiguration(): array - { - $result = []; - $root = $this->document->documentElement; - - if ($root->hasAttribute('cacheTokens')) { - $result['cacheTokens'] = $this->getBoolean( - (string) $root->getAttribute('cacheTokens'), - false - ); - } - - if ($root->hasAttribute('columns')) { - $columns = (string) $root->getAttribute('columns'); - - if ($columns === 'max') { - $result['columns'] = 'max'; - } else { - $result['columns'] = $this->getInteger($columns, 80); - } - } - - if ($root->hasAttribute('colors')) { - /* only allow boolean for compatibility with previous versions - 'always' only allowed from command line */ - if ($this->getBoolean($root->getAttribute('colors'), false)) { - $result['colors'] = ResultPrinter::COLOR_AUTO; - } else { - $result['colors'] = ResultPrinter::COLOR_NEVER; - } - } - - /* - * @see https://github.com/sebastianbergmann/phpunit/issues/657 - */ - if ($root->hasAttribute('stderr')) { - $result['stderr'] = $this->getBoolean( - (string) $root->getAttribute('stderr'), - false - ); - } - - if ($root->hasAttribute('backupGlobals')) { - $result['backupGlobals'] = $this->getBoolean( - (string) $root->getAttribute('backupGlobals'), - false - ); - } - - if ($root->hasAttribute('backupStaticAttributes')) { - $result['backupStaticAttributes'] = $this->getBoolean( - (string) $root->getAttribute('backupStaticAttributes'), - false - ); - } - - if ($root->getAttribute('bootstrap')) { - $result['bootstrap'] = $this->toAbsolutePath( - (string) $root->getAttribute('bootstrap') - ); - } - - if ($root->hasAttribute('convertDeprecationsToExceptions')) { - $result['convertDeprecationsToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertDeprecationsToExceptions'), - false - ); - } - - if ($root->hasAttribute('convertErrorsToExceptions')) { - $result['convertErrorsToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertErrorsToExceptions'), - true - ); - } - - if ($root->hasAttribute('convertNoticesToExceptions')) { - $result['convertNoticesToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertNoticesToExceptions'), - true - ); - } - - if ($root->hasAttribute('convertWarningsToExceptions')) { - $result['convertWarningsToExceptions'] = $this->getBoolean( - (string) $root->getAttribute('convertWarningsToExceptions'), - true - ); - } - - if ($root->hasAttribute('forceCoversAnnotation')) { - $result['forceCoversAnnotation'] = $this->getBoolean( - (string) $root->getAttribute('forceCoversAnnotation'), - false - ); - } - - if ($root->hasAttribute('disableCodeCoverageIgnore')) { - $result['disableCodeCoverageIgnore'] = $this->getBoolean( - (string) $root->getAttribute('disableCodeCoverageIgnore'), - false - ); - } - - if ($root->hasAttribute('processIsolation')) { - $result['processIsolation'] = $this->getBoolean( - (string) $root->getAttribute('processIsolation'), - false - ); - } - - if ($root->hasAttribute('stopOnDefect')) { - $result['stopOnDefect'] = $this->getBoolean( - (string) $root->getAttribute('stopOnDefect'), - false - ); - } - - if ($root->hasAttribute('stopOnError')) { - $result['stopOnError'] = $this->getBoolean( - (string) $root->getAttribute('stopOnError'), - false - ); - } - - if ($root->hasAttribute('stopOnFailure')) { - $result['stopOnFailure'] = $this->getBoolean( - (string) $root->getAttribute('stopOnFailure'), - false - ); - } - - if ($root->hasAttribute('stopOnWarning')) { - $result['stopOnWarning'] = $this->getBoolean( - (string) $root->getAttribute('stopOnWarning'), - false - ); - } - - if ($root->hasAttribute('stopOnIncomplete')) { - $result['stopOnIncomplete'] = $this->getBoolean( - (string) $root->getAttribute('stopOnIncomplete'), - false - ); - } - - if ($root->hasAttribute('stopOnRisky')) { - $result['stopOnRisky'] = $this->getBoolean( - (string) $root->getAttribute('stopOnRisky'), - false - ); - } - - if ($root->hasAttribute('stopOnSkipped')) { - $result['stopOnSkipped'] = $this->getBoolean( - (string) $root->getAttribute('stopOnSkipped'), - false - ); - } - - if ($root->hasAttribute('failOnWarning')) { - $result['failOnWarning'] = $this->getBoolean( - (string) $root->getAttribute('failOnWarning'), - false - ); - } - - if ($root->hasAttribute('failOnRisky')) { - $result['failOnRisky'] = $this->getBoolean( - (string) $root->getAttribute('failOnRisky'), - false - ); - } - - if ($root->hasAttribute('testSuiteLoaderClass')) { - $result['testSuiteLoaderClass'] = (string) $root->getAttribute( - 'testSuiteLoaderClass' - ); - } - - if ($root->hasAttribute('defaultTestSuite')) { - $result['defaultTestSuite'] = (string) $root->getAttribute( - 'defaultTestSuite' - ); - } - - if ($root->getAttribute('testSuiteLoaderFile')) { - $result['testSuiteLoaderFile'] = $this->toAbsolutePath( - (string) $root->getAttribute('testSuiteLoaderFile') - ); - } - - if ($root->hasAttribute('printerClass')) { - $result['printerClass'] = (string) $root->getAttribute( - 'printerClass' - ); - } - - if ($root->getAttribute('printerFile')) { - $result['printerFile'] = $this->toAbsolutePath( - (string) $root->getAttribute('printerFile') - ); - } - - if ($root->hasAttribute('beStrictAboutChangesToGlobalState')) { - $result['beStrictAboutChangesToGlobalState'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutChangesToGlobalState'), - false - ); - } - - if ($root->hasAttribute('beStrictAboutOutputDuringTests')) { - $result['disallowTestOutput'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutOutputDuringTests'), - false - ); - } - - if ($root->hasAttribute('beStrictAboutResourceUsageDuringSmallTests')) { - $result['beStrictAboutResourceUsageDuringSmallTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutResourceUsageDuringSmallTests'), - false - ); - } - - if ($root->hasAttribute('beStrictAboutTestsThatDoNotTestAnything')) { - $result['reportUselessTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutTestsThatDoNotTestAnything'), - true - ); - } - - if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) { - $result['disallowTodoAnnotatedTests'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutTodoAnnotatedTests'), - false - ); - } - - if ($root->hasAttribute('beStrictAboutCoversAnnotation')) { - $result['strictCoverage'] = $this->getBoolean( - (string) $root->getAttribute('beStrictAboutCoversAnnotation'), - false - ); - } - - if ($root->hasAttribute('defaultTimeLimit')) { - $result['defaultTimeLimit'] = $this->getInteger( - (string) $root->getAttribute('defaultTimeLimit'), - 1 - ); - } - - if ($root->hasAttribute('enforceTimeLimit')) { - $result['enforceTimeLimit'] = $this->getBoolean( - (string) $root->getAttribute('enforceTimeLimit'), - false - ); - } - - if ($root->hasAttribute('ignoreDeprecatedCodeUnitsFromCodeCoverage')) { - $result['ignoreDeprecatedCodeUnitsFromCodeCoverage'] = $this->getBoolean( - (string) $root->getAttribute('ignoreDeprecatedCodeUnitsFromCodeCoverage'), - false - ); - } - - if ($root->hasAttribute('timeoutForSmallTests')) { - $result['timeoutForSmallTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForSmallTests'), - 1 - ); - } - - if ($root->hasAttribute('timeoutForMediumTests')) { - $result['timeoutForMediumTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForMediumTests'), - 10 - ); - } - - if ($root->hasAttribute('timeoutForLargeTests')) { - $result['timeoutForLargeTests'] = $this->getInteger( - (string) $root->getAttribute('timeoutForLargeTests'), - 60 - ); - } - - if ($root->hasAttribute('reverseDefectList')) { - $result['reverseDefectList'] = $this->getBoolean( - (string) $root->getAttribute('reverseDefectList'), - false - ); - } - - if ($root->hasAttribute('verbose')) { - $result['verbose'] = $this->getBoolean( - (string) $root->getAttribute('verbose'), - false - ); - } - - if ($root->hasAttribute('testdox')) { - $testdox = $this->getBoolean( - (string) $root->getAttribute('testdox'), - false - ); - - if ($testdox) { - if (isset($result['printerClass'])) { - $result['conflictBetweenPrinterClassAndTestdox'] = true; - } else { - $result['printerClass'] = CliTestDoxPrinter::class; - } - } - } - - if ($root->hasAttribute('registerMockObjectsFromTestArgumentsRecursively')) { - $result['registerMockObjectsFromTestArgumentsRecursively'] = $this->getBoolean( - (string) $root->getAttribute('registerMockObjectsFromTestArgumentsRecursively'), - false - ); - } - - if ($root->hasAttribute('extensionsDirectory')) { - $result['extensionsDirectory'] = $this->toAbsolutePath( - (string) $root->getAttribute( - 'extensionsDirectory' - ) - ); - } - - if ($root->hasAttribute('cacheResult')) { - $result['cacheResult'] = $this->getBoolean( - (string) $root->getAttribute('cacheResult'), - true - ); - } - - if ($root->hasAttribute('cacheResultFile')) { - $result['cacheResultFile'] = $this->toAbsolutePath( - (string) $root->getAttribute('cacheResultFile') - ); - } - - if ($root->hasAttribute('executionOrder')) { - foreach (explode(',', $root->getAttribute('executionOrder')) as $order) { - switch ($order) { - case 'default': - $result['executionOrder'] = TestSuiteSorter::ORDER_DEFAULT; - $result['executionOrderDefects'] = TestSuiteSorter::ORDER_DEFAULT; - $result['resolveDependencies'] = false; - - break; - - case 'defects': - $result['executionOrderDefects'] = TestSuiteSorter::ORDER_DEFECTS_FIRST; - - break; - - case 'depends': - $result['resolveDependencies'] = true; - - break; - - case 'duration': - $result['executionOrder'] = TestSuiteSorter::ORDER_DURATION; - - break; - - case 'no-depends': - $result['resolveDependencies'] = false; - - break; - - case 'random': - $result['executionOrder'] = TestSuiteSorter::ORDER_RANDOMIZED; - - break; - - case 'reverse': - $result['executionOrder'] = TestSuiteSorter::ORDER_REVERSED; - - break; - - case 'size': - $result['executionOrder'] = TestSuiteSorter::ORDER_SIZE; - - break; - } - } - } - - if ($root->hasAttribute('resolveDependencies')) { - $result['resolveDependencies'] = $this->getBoolean( - (string) $root->getAttribute('resolveDependencies'), - false - ); - } - - if ($root->hasAttribute('noInteraction')) { - $result['noInteraction'] = $this->getBoolean( - (string) $root->getAttribute('noInteraction'), - false - ); - } - - return $result; - } - - /** - * Returns the test suite configuration. - * - * @throws Exception - */ - public function getTestSuiteConfiguration(string $testSuiteFilter = ''): TestSuite - { - $testSuiteNodes = $this->xpath->query('testsuites/testsuite'); - - if ($testSuiteNodes->length === 0) { - $testSuiteNodes = $this->xpath->query('testsuite'); - } - - if ($testSuiteNodes->length === 1) { - return $this->getTestSuite($testSuiteNodes->item(0), $testSuiteFilter); - } - - $suite = new TestSuite; - - foreach ($testSuiteNodes as $testSuiteNode) { - $suite->addTestSuite( - $this->getTestSuite($testSuiteNode, $testSuiteFilter) - ); - } - - return $suite; - } - - /** - * Returns the test suite names from the configuration. - */ - public function getTestSuiteNames(): array - { - $names = []; - - foreach ($this->xpath->query('*/testsuite') as $node) { - /* @var DOMElement $node */ - $names[] = $node->getAttribute('name'); - } - - return $names; - } - - private function validateConfigurationAgainstSchema(): void - { - $original = libxml_use_internal_errors(true); - $xsdFilename = __DIR__ . '/../../phpunit.xsd'; - - if (defined('__PHPUNIT_PHAR_ROOT__')) { - $xsdFilename = __PHPUNIT_PHAR_ROOT__ . '/phpunit.xsd'; - } - - $this->document->schemaValidateSource(file_get_contents($xsdFilename)); - $this->errors = libxml_get_errors(); - libxml_clear_errors(); - libxml_use_internal_errors($original); - } - - /** - * Collects and returns the configuration arguments from the PHPUnit - * XML configuration. - */ - private function getConfigurationArguments(DOMNodeList $nodes): array - { - $arguments = []; - - if ($nodes->length === 0) { - return $arguments; - } - - foreach ($nodes as $node) { - if (!$node instanceof DOMElement) { - continue; - } - - if ($node->tagName !== 'arguments') { - continue; - } - - foreach ($node->childNodes as $argument) { - if (!$argument instanceof DOMElement) { - continue; - } - - if ($argument->tagName === 'file' || $argument->tagName === 'directory') { - $arguments[] = $this->toAbsolutePath((string) $argument->textContent); - } else { - $arguments[] = Xml::xmlToVariable($argument); - } - } - } - - return $arguments; - } - - /** - * @throws \PHPUnit\Framework\Exception - */ - private function getTestSuite(DOMElement $testSuiteNode, string $testSuiteFilter = ''): TestSuite - { - if ($testSuiteNode->hasAttribute('name')) { - $suite = new TestSuite( - (string) $testSuiteNode->getAttribute('name') - ); - } else { - $suite = new TestSuite; - } - - $exclude = []; - - foreach ($testSuiteNode->getElementsByTagName('exclude') as $excludeNode) { - $excludeFile = (string) $excludeNode->textContent; - - if ($excludeFile) { - $exclude[] = $this->toAbsolutePath($excludeFile); - } - } - - $fileIteratorFacade = new FileIteratorFacade; - $testSuiteFilter = $testSuiteFilter ? explode(',', $testSuiteFilter) : []; - - foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - if (!empty($testSuiteFilter) && !in_array($directoryNode->parentNode->getAttribute('name'), $testSuiteFilter, true)) { - continue; - } - - $directory = (string) $directoryNode->textContent; - - if (empty($directory)) { - continue; - } - - if (!$this->satisfiesPhpVersion($directoryNode)) { - continue; - } - - $files = $fileIteratorFacade->getFilesAsArray( - $this->toAbsolutePath($directory), - $directoryNode->hasAttribute('suffix') ? (string) $directoryNode->getAttribute('suffix') : 'Test.php', - $directoryNode->hasAttribute('prefix') ? (string) $directoryNode->getAttribute('prefix') : '', - $exclude - ); - - $suite->addTestFiles($files); - } - - foreach ($testSuiteNode->getElementsByTagName('file') as $fileNode) { - assert($fileNode instanceof DOMElement); - - if (!empty($testSuiteFilter) && !in_array($fileNode->parentNode->getAttribute('name'), $testSuiteFilter, true)) { - continue; - } - - $file = (string) $fileNode->textContent; - - if (empty($file)) { - continue; - } - - $file = $fileIteratorFacade->getFilesAsArray( - $this->toAbsolutePath($file) - ); - - if (!isset($file[0])) { - continue; - } - - $file = $file[0]; - - if (!$this->satisfiesPhpVersion($fileNode)) { - continue; - } - - $suite->addTestFile($file); - } - - return $suite; - } - - private function satisfiesPhpVersion(DOMElement $node): bool - { - $phpVersion = PHP_VERSION; - $phpVersionOperator = '>='; - - if ($node->hasAttribute('phpVersion')) { - $phpVersion = (string) $node->getAttribute('phpVersion'); - } - - if ($node->hasAttribute('phpVersionOperator')) { - $phpVersionOperator = (string) $node->getAttribute('phpVersionOperator'); - } - - return version_compare(PHP_VERSION, $phpVersion, (new VersionComparisonOperator($phpVersionOperator))->asString()); - } - - /** - * if $value is 'false' or 'true', this returns the value that $value represents. - * Otherwise, returns $default, which may be a string in rare cases. - * See PHPUnit\Util\ConfigurationTest::testPHPConfigurationIsReadCorrectly. - * - * @param bool|string $default - * - * @return bool|string - */ - private function getBoolean(string $value, $default) - { - if (strtolower($value) === 'false') { - return false; - } - - if (strtolower($value) === 'true') { - return true; - } - - return $default; - } - - private function getInteger(string $value, int $default): int - { - if (is_numeric($value)) { - return (int) $value; - } - - return $default; - } - - private function readFilterDirectories(string $query): array - { - $directories = []; - - foreach ($this->xpath->query($query) as $directoryNode) { - assert($directoryNode instanceof DOMElement); - - $directoryPath = (string) $directoryNode->textContent; - - if (!$directoryPath) { - continue; - } - - $directories[] = [ - 'path' => $this->toAbsolutePath($directoryPath), - 'prefix' => $directoryNode->hasAttribute('prefix') ? (string) $directoryNode->getAttribute('prefix') : '', - 'suffix' => $directoryNode->hasAttribute('suffix') ? (string) $directoryNode->getAttribute('suffix') : '.php', - 'group' => $directoryNode->hasAttribute('group') ? (string) $directoryNode->getAttribute('group') : 'DEFAULT', - ]; - } - - return $directories; - } - - /** - * @return string[] - */ - private function readFilterFiles(string $query): array - { - $files = []; - - foreach ($this->xpath->query($query) as $file) { - $filePath = (string) $file->textContent; - - if ($filePath) { - $files[] = $this->toAbsolutePath($filePath); - } - } - - return $files; - } - - private function toAbsolutePath(string $path, bool $useIncludePath = false): string - { - $path = trim($path); - - if (strpos($path, '/') === 0) { - return $path; - } - - // Matches the following on Windows: - // - \\NetworkComputer\Path - // - \\.\D: - // - \\.\c: - // - C:\Windows - // - C:\windows - // - C:/windows - // - c:/windows - if (defined('PHP_WINDOWS_VERSION_BUILD') && - ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]\:[/\\\]#i', substr($path, 0, 3))))) { - return $path; - } - - if (strpos($path, '://') !== false) { - return $path; - } - - $file = dirname($this->filename) . DIRECTORY_SEPARATOR . $path; - - if ($useIncludePath && !file_exists($file)) { - $includePathFile = stream_resolve_include_path($path); - - if ($includePathFile) { - $file = $includePathFile; - } - } - - return $file; - } - - private function parseGroupConfiguration(string $root): array - { - $groups = [ - 'include' => [], - 'exclude' => [], - ]; - - foreach ($this->xpath->query($root . '/include/group') as $group) { - $groups['include'][] = (string) $group->textContent; - } - - foreach ($this->xpath->query($root . '/exclude/group') as $group) { - $groups['exclude'][] = (string) $group->textContent; - } - - return $groups; - } - - private function getElementConfigurationParameters(DOMElement $element): array - { - $class = (string) $element->getAttribute('class'); - $file = ''; - $arguments = $this->getConfigurationArguments($element->childNodes); - - if ($element->getAttribute('file')) { - $file = $this->toAbsolutePath( - (string) $element->getAttribute('file'), - true - ); - } - - return [ - 'class' => $class, - 'file' => $file, - 'arguments' => $arguments, - ]; - } -} diff --git a/vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php b/vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php deleted file mode 100644 index 779eec31e..000000000 --- a/vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function str_replace; - -/** - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class ConfigurationGenerator -{ - /** - * @var string - */ - private const TEMPLATE = <<<'EOT' - - - - - {tests_directory} - - - - - - {src_directory} - - - - -EOT; - - public function generateDefaultConfiguration(string $phpunitVersion, string $bootstrapScript, string $testsDirectory, string $srcDirectory, string $cacheDirectory): string - { - return str_replace( - [ - '{phpunit_version}', - '{bootstrap_script}', - '{tests_directory}', - '{src_directory}', - '{cache_directory}', - ], - [ - $phpunitVersion, - $bootstrapScript, - $testsDirectory, - $srcDirectory, - $cacheDirectory, - ], - self::TEMPLATE - ); - } -} diff --git a/vendor/phpunit/phpunit/src/Util/ExcludeList.php b/vendor/phpunit/phpunit/src/Util/ExcludeList.php new file mode 100644 index 000000000..91a5a66b4 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/ExcludeList.php @@ -0,0 +1,253 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util; + +use const DIRECTORY_SEPARATOR; +use function class_exists; +use function defined; +use function dirname; +use function is_dir; +use function realpath; +use function sprintf; +use function strpos; +use function sys_get_temp_dir; +use Composer\Autoload\ClassLoader; +use DeepCopy\DeepCopy; +use Doctrine\Instantiator\Instantiator; +use PharIo\Manifest\Manifest; +use PharIo\Version\Version as PharIoVersion; +use phpDocumentor\Reflection\DocBlock; +use phpDocumentor\Reflection\Project; +use phpDocumentor\Reflection\Type; +use PhpParser\Parser; +use PHPUnit\Framework\TestCase; +use Prophecy\Prophet; +use ReflectionClass; +use SebastianBergmann\CliParser\Parser as CliParser; +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeUnit\CodeUnit; +use SebastianBergmann\CodeUnitReverseLookup\Wizard; +use SebastianBergmann\Comparator\Comparator; +use SebastianBergmann\Complexity\Calculator; +use SebastianBergmann\Diff\Diff; +use SebastianBergmann\Environment\Runtime; +use SebastianBergmann\Exporter\Exporter; +use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; +use SebastianBergmann\GlobalState\Snapshot; +use SebastianBergmann\Invoker\Invoker; +use SebastianBergmann\LinesOfCode\Counter; +use SebastianBergmann\ObjectEnumerator\Enumerator; +use SebastianBergmann\RecursionContext\Context; +use SebastianBergmann\ResourceOperations\ResourceOperations; +use SebastianBergmann\Template\Template; +use SebastianBergmann\Timer\Timer; +use SebastianBergmann\Type\TypeName; +use SebastianBergmann\Version; +use TheSeer\Tokenizer\Tokenizer; +use Webmozart\Assert\Assert; + +/** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + */ +final class ExcludeList +{ + /** + * @var array + */ + private const EXCLUDED_CLASS_NAMES = [ + // composer + ClassLoader::class => 1, + + // doctrine/instantiator + Instantiator::class => 1, + + // myclabs/deepcopy + DeepCopy::class => 1, + + // nikic/php-parser + Parser::class => 1, + + // phar-io/manifest + Manifest::class => 1, + + // phar-io/version + PharIoVersion::class => 1, + + // phpdocumentor/reflection-common + Project::class => 1, + + // phpdocumentor/reflection-docblock + DocBlock::class => 1, + + // phpdocumentor/type-resolver + Type::class => 1, + + // phpspec/prophecy + Prophet::class => 1, + + // phpunit/phpunit + TestCase::class => 2, + + // phpunit/php-code-coverage + CodeCoverage::class => 1, + + // phpunit/php-file-iterator + FileIteratorFacade::class => 1, + + // phpunit/php-invoker + Invoker::class => 1, + + // phpunit/php-text-template + Template::class => 1, + + // phpunit/php-timer + Timer::class => 1, + + // sebastian/cli-parser + CliParser::class => 1, + + // sebastian/code-unit + CodeUnit::class => 1, + + // sebastian/code-unit-reverse-lookup + Wizard::class => 1, + + // sebastian/comparator + Comparator::class => 1, + + // sebastian/complexity + Calculator::class => 1, + + // sebastian/diff + Diff::class => 1, + + // sebastian/environment + Runtime::class => 1, + + // sebastian/exporter + Exporter::class => 1, + + // sebastian/global-state + Snapshot::class => 1, + + // sebastian/lines-of-code + Counter::class => 1, + + // sebastian/object-enumerator + Enumerator::class => 1, + + // sebastian/recursion-context + Context::class => 1, + + // sebastian/resource-operations + ResourceOperations::class => 1, + + // sebastian/type + TypeName::class => 1, + + // sebastian/version + Version::class => 1, + + // theseer/tokenizer + Tokenizer::class => 1, + + // webmozart/assert + Assert::class => 1, + ]; + + /** + * @var string[] + */ + private static $directories = []; + + /** + * @var bool + */ + private static $initialized = false; + + public static function addDirectory(string $directory): void + { + if (!is_dir($directory)) { + throw new Exception( + sprintf( + '"%s" is not a directory', + $directory + ) + ); + } + + self::$directories[] = realpath($directory); + } + + /** + * @throws Exception + * + * @return string[] + */ + public function getExcludedDirectories(): array + { + $this->initialize(); + + return self::$directories; + } + + /** + * @throws Exception + */ + public function isExcluded(string $file): bool + { + if (defined('PHPUNIT_TESTSUITE')) { + return false; + } + + $this->initialize(); + + foreach (self::$directories as $directory) { + if (strpos($file, $directory) === 0) { + return true; + } + } + + return false; + } + + /** + * @throws Exception + */ + private function initialize(): void + { + if (self::$initialized) { + return; + } + + foreach (self::EXCLUDED_CLASS_NAMES as $className => $parent) { + if (!class_exists($className)) { + continue; + } + + $directory = (new ReflectionClass($className))->getFileName(); + + for ($i = 0; $i < $parent; $i++) { + $directory = dirname($directory); + } + + self::$directories[] = $directory; + } + + // Hide process isolation workaround on Windows. + if (DIRECTORY_SEPARATOR === '\\') { + // tempnam() prefix is limited to first 3 chars. + // @see https://php.net/manual/en/function.tempnam.php + self::$directories[] = sys_get_temp_dir() . '\\PHP'; + } + + self::$initialized = true; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/FileLoader.php b/vendor/phpunit/phpunit/src/Util/FileLoader.php index 1390d8cf4..8abdc91cf 100644 --- a/vendor/phpunit/phpunit/src/Util/FileLoader.php +++ b/vendor/phpunit/phpunit/src/Util/FileLoader.php @@ -16,7 +16,6 @@ use function fopen; use function get_defined_vars; use function sprintf; use function stream_resolve_include_path; -use PHPUnit\Framework\Exception; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -37,15 +36,11 @@ final class FileLoader { $includePathFilename = stream_resolve_include_path($filename); - if (!$includePathFilename) { - throw new Exception( - sprintf('Cannot open file "%s".' . "\n", $filename) - ); - } - $localFile = __DIR__ . DIRECTORY_SEPARATOR . $filename; - if ($includePathFilename === $localFile || !self::isReadable($includePathFilename)) { + if (!$includePathFilename || + $includePathFilename === $localFile || + !self::isReadable($includePathFilename)) { throw new Exception( sprintf('Cannot open file "%s".' . "\n", $filename) ); @@ -63,6 +58,11 @@ final class FileLoader { $oldVariableNames = array_keys(get_defined_vars()); + /** + * @noinspection PhpIncludeInspection + * + * @psalm-suppress UnresolvableInclude + */ include_once $filename; $newVariables = get_defined_vars(); diff --git a/vendor/phpunit/phpunit/src/Util/Filesystem.php b/vendor/phpunit/phpunit/src/Util/Filesystem.php index cd0c125f7..35b2690b1 100644 --- a/vendor/phpunit/phpunit/src/Util/Filesystem.php +++ b/vendor/phpunit/phpunit/src/Util/Filesystem.php @@ -20,9 +20,10 @@ use function str_replace; final class Filesystem { /** - * Maps class names to source file names: + * Maps class names to source file names. + * * - PEAR CS: Foo_Bar_Baz -> Foo/Bar/Baz.php - * - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php. + * - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php */ public static function classNameToFilename(string $className): string { diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php index 06f58d55d..42563937d 100644 --- a/vendor/phpunit/phpunit/src/Util/Filter.php +++ b/vendor/phpunit/phpunit/src/Util/Filter.php @@ -57,11 +57,11 @@ final class Filter ); } - $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : false; - $blacklist = new Blacklist; + $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : false; + $excludeList = new ExcludeList; foreach ($eTrace as $frame) { - if (self::shouldPrintFrame($frame, $prefix, $blacklist)) { + if (self::shouldPrintFrame($frame, $prefix, $excludeList)) { $filteredStacktrace .= sprintf( "%s:%s\n", $frame['file'], @@ -73,7 +73,7 @@ final class Filter return $filteredStacktrace; } - private static function shouldPrintFrame($frame, $prefix, Blacklist $blacklist): bool + private static function shouldPrintFrame(array $frame, $prefix, ExcludeList $excludeList): bool { if (!isset($frame['file'])) { return false; @@ -90,16 +90,16 @@ final class Filter } return is_file($file) && - self::fileIsBlacklisted($file, $blacklist) && + self::fileIsExcluded($file, $excludeList) && $fileIsNotPrefixed && $file !== $script; } - private static function fileIsBlacklisted($file, Blacklist $blacklist): bool + private static function fileIsExcluded(string $file, ExcludeList $excludeList): bool { - return (empty($GLOBALS['__PHPUNIT_ISOLATION_BLACKLIST']) || - !in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_BLACKLIST'], true)) && - !$blacklist->isBlacklisted($file); + return (empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) || + !in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) && + !$excludeList->isExcluded($file); } private static function frameExists(array $trace, string $file, int $line): bool diff --git a/vendor/phpunit/phpunit/src/Util/Getopt.php b/vendor/phpunit/phpunit/src/Util/Getopt.php deleted file mode 100644 index 878e2a43f..000000000 --- a/vendor/phpunit/phpunit/src/Util/Getopt.php +++ /dev/null @@ -1,197 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Util; - -use function array_map; -use function array_merge; -use function array_shift; -use function array_slice; -use function count; -use function current; -use function explode; -use function key; -use function next; -use function preg_replace; -use function reset; -use function sort; -use function strlen; -use function strpos; -use function strstr; -use function substr; -use PHPUnit\Framework\Exception; - -/** - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class Getopt -{ - /** - * @throws Exception - */ - public static function parse(array $args, string $short_options, array $long_options = null): array - { - if (empty($args)) { - return [[], []]; - } - - $opts = []; - $non_opts = []; - - if ($long_options) { - sort($long_options); - } - - if (isset($args[0][0]) && $args[0][0] !== '-') { - array_shift($args); - } - - reset($args); - - $args = array_map('trim', $args); - - /* @noinspection ComparisonOperandsOrderInspection */ - while (false !== $arg = current($args)) { - $i = key($args); - next($args); - - if ($arg === '') { - continue; - } - - if ($arg === '--') { - $non_opts = array_merge($non_opts, array_slice($args, $i + 1)); - - break; - } - - if ($arg[0] !== '-' || (strlen($arg) > 1 && $arg[1] === '-' && !$long_options)) { - $non_opts[] = $args[$i]; - - continue; - } - - if (strlen($arg) > 1 && $arg[1] === '-') { - self::parseLongOption( - substr($arg, 2), - $long_options, - $opts, - $args - ); - } else { - self::parseShortOption( - substr($arg, 1), - $short_options, - $opts, - $args - ); - } - } - - return [$opts, $non_opts]; - } - - /** - * @throws Exception - */ - private static function parseShortOption(string $arg, string $short_options, array &$opts, array &$args): void - { - $argLen = strlen($arg); - - for ($i = 0; $i < $argLen; $i++) { - $opt = $arg[$i]; - $opt_arg = null; - - if ($arg[$i] === ':' || ($spec = strstr($short_options, $opt)) === false) { - throw new Exception( - "unrecognized option -- {$opt}" - ); - } - - if (strlen($spec) > 1 && $spec[1] === ':') { - if ($i + 1 < $argLen) { - $opts[] = [$opt, substr($arg, $i + 1)]; - - break; - } - - if (!(strlen($spec) > 2 && $spec[2] === ':')) { - /* @noinspection ComparisonOperandsOrderInspection */ - if (false === $opt_arg = current($args)) { - throw new Exception( - "option requires an argument -- {$opt}" - ); - } - - next($args); - } - } - - $opts[] = [$opt, $opt_arg]; - } - } - - /** - * @throws Exception - */ - private static function parseLongOption(string $arg, array $long_options, array &$opts, array &$args): void - { - $count = count($long_options); - $list = explode('=', $arg); - $opt = $list[0]; - $opt_arg = null; - - if (count($list) > 1) { - $opt_arg = $list[1]; - } - - $opt_len = strlen($opt); - - foreach ($long_options as $i => $long_opt) { - $opt_start = substr($long_opt, 0, $opt_len); - - if ($opt_start !== $opt) { - continue; - } - - $opt_rest = substr($long_opt, $opt_len); - - if ($opt_rest !== '' && $i + 1 < $count && $opt[0] !== '=' && strpos($long_options[$i + 1], $opt) === 0) { - throw new Exception( - "option --{$opt} is ambiguous" - ); - } - - if (substr($long_opt, -1) === '=') { - /* @noinspection StrlenInEmptyStringCheckContextInspection */ - if (substr($long_opt, -2) !== '==' && !strlen((string) $opt_arg)) { - /* @noinspection ComparisonOperandsOrderInspection */ - if (false === $opt_arg = current($args)) { - throw new Exception( - "option --{$opt} requires an argument" - ); - } - - next($args); - } - } elseif ($opt_arg) { - throw new Exception( - "option --{$opt} doesn't allow an argument" - ); - } - - $full_option = '--' . preg_replace('/={1,2}$/', '', $long_opt); - $opts[] = [$full_option, $opt_arg]; - - return; - } - - throw new Exception("unrecognized option --{$opt}"); - } -} diff --git a/vendor/phpunit/phpunit/src/Util/GlobalState.php b/vendor/phpunit/phpunit/src/Util/GlobalState.php index 5f483f301..cc5c22286 100644 --- a/vendor/phpunit/phpunit/src/Util/GlobalState.php +++ b/vendor/phpunit/phpunit/src/Util/GlobalState.php @@ -10,8 +10,8 @@ namespace PHPUnit\Util; use function array_keys; +use function array_reverse; use function array_shift; -use function count; use function defined; use function get_defined_constants; use function get_included_files; @@ -62,9 +62,9 @@ final class GlobalState */ public static function processIncludedFilesAsString(array $files): string { - $blacklist = new Blacklist; - $prefix = false; - $result = ''; + $excludeList = new ExcludeList; + $prefix = false; + $result = ''; if (defined('__PHPUNIT_PHAR__')) { $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; @@ -78,11 +78,9 @@ final class GlobalState array_shift($files); } - for ($i = count($files) - 1; $i >= 0; $i--) { - $file = $files[$i]; - - if (!empty($GLOBALS['__PHPUNIT_ISOLATION_BLACKLIST']) && - in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_BLACKLIST'], true)) { + foreach (array_reverse($files) as $file) { + if (!empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) && + in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) { continue; } @@ -95,7 +93,7 @@ final class GlobalState continue; } - if (!$blacklist->isBlacklisted($file) && is_file($file)) { + if (!$excludeList->isExcluded($file) && is_file($file)) { $result = 'require_once \'' . $file . "';\n" . $result; } } @@ -158,11 +156,11 @@ final class GlobalState } } - $blacklist = self::SUPER_GLOBAL_ARRAYS; - $blacklist[] = 'GLOBALS'; + $excludeList = self::SUPER_GLOBAL_ARRAYS; + $excludeList[] = 'GLOBALS'; foreach (array_keys($GLOBALS) as $key) { - if (!$GLOBALS[$key] instanceof Closure && !in_array($key, $blacklist, true)) { + if (!$GLOBALS[$key] instanceof Closure && !in_array($key, $excludeList, true)) { $result .= sprintf( '$GLOBALS[\'%s\'] = %s;' . "\n", $key, diff --git a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php index 710e2c47d..3ceb5e845 100644 --- a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php +++ b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php @@ -14,6 +14,7 @@ use function get_class; use function method_exists; use function sprintf; use function str_replace; +use function trim; use DOMDocument; use DOMElement; use PHPUnit\Framework\AssertionFailedError; @@ -133,7 +134,7 @@ final class JUnit extends Printer implements TestListener */ public function addError(Test $test, Throwable $t, float $time): void { - $this->doAddFault($test, $t, $time, 'error'); + $this->doAddFault($test, $t, 'error'); $this->testSuiteErrors[$this->testSuiteLevel]++; } @@ -142,7 +143,7 @@ final class JUnit extends Printer implements TestListener */ public function addWarning(Test $test, Warning $e, float $time): void { - $this->doAddFault($test, $e, $time, 'warning'); + $this->doAddFault($test, $e, 'warning'); $this->testSuiteWarnings[$this->testSuiteLevel]++; } @@ -151,7 +152,7 @@ final class JUnit extends Printer implements TestListener */ public function addFailure(Test $test, AssertionFailedError $e, float $time): void { - $this->doAddFault($test, $e, $time, 'failure'); + $this->doAddFault($test, $e, 'failure'); $this->testSuiteFailures[$this->testSuiteLevel]++; } @@ -168,22 +169,11 @@ final class JUnit extends Printer implements TestListener */ public function addRiskyTest(Test $test, Throwable $t, float $time): void { - if (!$this->reportRiskyTests || $this->currentTestCase === null) { + if (!$this->reportRiskyTests) { return; } - $error = $this->document->createElement( - 'error', - Xml::prepareString( - "Risky Test\n" . - Filter::getFilteredStacktrace($t) - ) - ); - - $error->setAttribute('type', get_class($t)); - - $this->currentTestCase->appendChild($error); - + $this->doAddFault($test, $t, 'error'); $this->testSuiteErrors[$this->testSuiteLevel]++; } @@ -302,7 +292,7 @@ final class JUnit extends Printer implements TestListener } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -317,7 +307,7 @@ final class JUnit extends Printer implements TestListener } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -388,7 +378,7 @@ final class JUnit extends Printer implements TestListener return $this->document->saveXML(); } - private function doAddFault(Test $test, Throwable $t, float $time, $type): void + private function doAddFault(Test $test, Throwable $t, string $type): void { if ($this->currentTestCase === null) { return; @@ -400,8 +390,10 @@ final class JUnit extends Printer implements TestListener $buffer = ''; } - $buffer .= TestFailure::exceptionToString($t) . "\n" . - Filter::getFilteredStacktrace($t); + $buffer .= trim( + TestFailure::exceptionToString($t) . "\n" . + Filter::getFilteredStacktrace($t) + ); $fault = $this->document->createElement( $type, diff --git a/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php b/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php index 695760d95..0efe3438a 100644 --- a/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php +++ b/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php @@ -31,7 +31,7 @@ use PHPUnit\Framework\TestFailure; use PHPUnit\Framework\TestResult; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; -use PHPUnit\TextUI\ResultPrinter; +use PHPUnit\TextUI\DefaultResultPrinter; use PHPUnit\Util\Exception; use PHPUnit\Util\Filter; use ReflectionClass; @@ -42,7 +42,7 @@ use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class TeamCity extends ResultPrinter +final class TeamCity extends DefaultResultPrinter { /** * @var bool @@ -59,9 +59,6 @@ final class TeamCity extends ResultPrinter */ private $flowId; - /** - * @throws \SebastianBergmann\Timer\RuntimeException - */ public function printResult(TestResult $result): void { $this->printHeader($result); @@ -163,7 +160,7 @@ final class TeamCity extends ResultPrinter } } - public function printIgnoredTest($testName, Throwable $t, float $time): void + public function printIgnoredTest(string $testName, Throwable $t, float $time): void { $this->printEvent( 'testIgnored', @@ -369,7 +366,7 @@ final class TeamCity extends ResultPrinter } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php index b835043d8..c4dc11146 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php +++ b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php @@ -214,6 +214,9 @@ class DefaultPhpProcess extends AbstractPhpProcess return ['stdout' => $stdout, 'stderr' => $stderr]; } + /** + * @param resource $pipe + */ protected function process($pipe, string $job): void { fwrite($pipe, $job); diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl index 14c3e7e6e..f23a0d1ae 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl +++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl @@ -1,15 +1,18 @@ {driverMethod}($filter), + $filter + ); + + if ({codeCoverageCacheDirectory}) { + $coverage->cacheStaticAnalysis({codeCoverageCacheDirectory}); + } + $coverage->start(__FILE__); } -register_shutdown_function(function() use ($coverage) { - $output = null; - if ($coverage) { - $output = $coverage->stop(); +register_shutdown_function( + function() use ($coverage) { + $output = null; + + if ($coverage) { + $output = $coverage->stop(); + } + + file_put_contents('{coverageFile}', serialize($output)); } - file_put_contents('{coverageFile}', serialize($output)); -}); +); ob_end_clean(); diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl index 5d2ea0252..95035e505 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl +++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl @@ -1,5 +1,8 @@ setCodeCoverage( - new CodeCoverage( - null, - unserialize('{codeCoverageFilter}') - ) + $filter = unserialize('{codeCoverageFilter}'); + + $codeCoverage = new CodeCoverage( + (new Selector)->{driverMethod}($filter), + $filter ); + + if ({cachesStaticAnalysis}) { + $codeCoverage->cacheStaticAnalysis(unserialize('{codeCoverageCacheDirectory}')); + } + + $result->setCodeCoverage($codeCoverage); } $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything}); @@ -82,8 +91,10 @@ function __phpunit_run_isolated_test() $configurationFilePath = '{configurationFilePath}'; if ('' !== $configurationFilePath) { - $configuration = PHPUnit\Util\Configuration::getInstance($configurationFilePath); - $configuration->handlePHPConfiguration(); + $configuration = (new Loader)->load($configurationFilePath); + + (new PhpHandler)->handle($configuration->php()); + unset($configuration); } diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl index 9dd6c9203..da824e720 100644 --- a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl +++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl @@ -1,6 +1,9 @@ setCodeCoverage( - new CodeCoverage( - null, - unserialize('{codeCoverageFilter}') - ) + $filter = unserialize('{codeCoverageFilter}'); + + $codeCoverage = new CodeCoverage( + (new Selector)->{driverMethod}($filter), + $filter ); + + if ({cachesStaticAnalysis}) { + $codeCoverage->cacheStaticAnalysis(unserialize('{codeCoverageCacheDirectory}')); + } + + $result->setCodeCoverage($codeCoverage); } $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything}); @@ -85,8 +94,10 @@ function __phpunit_run_isolated_test() $configurationFilePath = '{configurationFilePath}'; if ('' !== $configurationFilePath) { - $configuration = PHPUnit\Util\Configuration::getInstance($configurationFilePath); - $configuration->handlePHPConfiguration(); + $configuration = (new Loader)->load($configurationFilePath); + + (new PhpHandler)->handle($configuration->php()); + unset($configuration); } diff --git a/vendor/phpunit/phpunit/src/Util/Printer.php b/vendor/phpunit/phpunit/src/Util/Printer.php index c99abfed5..77b5745ad 100644 --- a/vendor/phpunit/phpunit/src/Util/Printer.php +++ b/vendor/phpunit/phpunit/src/Util/Printer.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\Util; +use const ENT_COMPAT; use const ENT_SUBSTITUTE; use const PHP_SAPI; use function assert; @@ -16,8 +17,6 @@ use function count; use function dirname; use function explode; use function fclose; -use function fflush; -use function flush; use function fopen; use function fsockopen; use function fwrite; @@ -28,7 +27,6 @@ use function sprintf; use function str_replace; use function strncmp; use function strpos; -use PHPUnit\Framework\Exception; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -36,129 +34,83 @@ use PHPUnit\Framework\Exception; class Printer { /** - * If true, flush output after every write. - * + * @psalm-var closed-resource|resource + */ + private $stream; + + /** * @var bool */ - protected $autoFlush = false; + private $isPhpStream; /** - * @psalm-var resource|closed-resource - */ - protected $out; - - /** - * @var string - */ - protected $outTarget; - - /** - * Constructor. - * * @param null|resource|string $out * * @throws Exception */ public function __construct($out = null) { - if ($out === null) { + if (is_resource($out)) { + $this->stream = $out; + return; } - if (is_string($out) === false) { - $this->out = $out; - + if (!is_string($out)) { return; } if (strpos($out, 'socket://') === 0) { - $out = explode(':', str_replace('socket://', '', $out)); + $tmp = explode(':', str_replace('socket://', '', $out)); - if (count($out) !== 2) { - throw new Exception; + if (count($tmp) !== 2) { + throw new Exception( + sprintf( + '"%s" does not match "socket://hostname:port" format', + $out + ) + ); } - $this->out = fsockopen($out[0], $out[1]); - } else { - if (strpos($out, 'php://') === false && !Filesystem::createDirectory(dirname($out))) { - throw new Exception(sprintf('Directory "%s" was not created', dirname($out))); - } + $this->stream = fsockopen($tmp[0], (int) $tmp[1]); - $this->out = fopen($out, 'wt'); + return; } - $this->outTarget = $out; - } - - /** - * Flush buffer and close output if it's not to a PHP stream. - */ - public function flush(): void - { - if ($this->out && strncmp($this->outTarget, 'php://', 6) !== 0) { - assert(is_resource($this->out)); - - fclose($this->out); + if (strpos($out, 'php://') === false && !Filesystem::createDirectory(dirname($out))) { + throw new Exception( + sprintf( + 'Directory "%s" was not created', + dirname($out) + ) + ); } - } - /** - * Performs a safe, incremental flush. - * - * Do not confuse this function with the flush() function of this class, - * since the flush() function may close the file being written to, rendering - * the current object no longer usable. - */ - public function incrementalFlush(): void - { - if ($this->out) { - assert(is_resource($this->out)); - - fflush($this->out); - } else { - flush(); - } + $this->stream = fopen($out, 'wb'); + $this->isPhpStream = strncmp($out, 'php://', 6) !== 0; } public function write(string $buffer): void { - if ($this->out) { - assert(is_resource($this->out)); + if ($this->stream) { + assert(is_resource($this->stream)); - fwrite($this->out, $buffer); - - if ($this->autoFlush) { - $this->incrementalFlush(); - } + fwrite($this->stream, $buffer); } else { if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') { - $buffer = htmlspecialchars($buffer, ENT_SUBSTITUTE); + $buffer = htmlspecialchars($buffer, ENT_COMPAT | ENT_SUBSTITUTE); } print $buffer; - - if ($this->autoFlush) { - $this->incrementalFlush(); - } } } - /** - * Check auto-flush mode. - */ - public function getAutoFlush(): bool + public function flush(): void { - return $this->autoFlush; - } + if ($this->stream && $this->isPhpStream) { + assert(is_resource($this->stream)); - /** - * Set auto-flushing mode. - * - * If set, *incremental* flushes will be done after each write. This should - * not be confused with the different effects of this class' flush() method. - */ - public function setAutoFlush(bool $autoFlush): void - { - $this->autoFlush = $autoFlush; + fclose($this->stream); + } } } diff --git a/vendor/phpunit/phpunit/src/Util/Reflection.php b/vendor/phpunit/phpunit/src/Util/Reflection.php index 2f66082ed..3ffc2d5e1 100644 --- a/vendor/phpunit/phpunit/src/Util/Reflection.php +++ b/vendor/phpunit/phpunit/src/Util/Reflection.php @@ -42,7 +42,7 @@ final class Reflection { $methods = []; - // PHP <7.2.18 and <7.3.5 throw error when null is passed + // PHP <7.3.5 throw error when null is passed // to ReflectionClass::getMethods() when strict_types is enabled. $classMethods = $filter === null ? $class->getMethods() : $class->getMethods($filter); diff --git a/vendor/phpunit/phpunit/src/Util/Test.php b/vendor/phpunit/phpunit/src/Util/Test.php index 0a8e3c5d8..f089f6d43 100644 --- a/vendor/phpunit/phpunit/src/Util/Test.php +++ b/vendor/phpunit/phpunit/src/Util/Test.php @@ -14,13 +14,10 @@ use const PHP_VERSION; use function addcslashes; use function array_flip; use function array_key_exists; -use function array_keys; use function array_merge; use function array_unique; use function array_unshift; use function class_exists; -use function class_implements; -use function class_parents; use function count; use function explode; use function extension_loaded; @@ -34,14 +31,14 @@ use function method_exists; use function phpversion; use function preg_match; use function preg_replace; -use function range; use function sprintf; -use function str_replace; use function strncmp; use function strpos; -use function trait_exists; +use function strtolower; +use function trim; use function version_compare; use PHPUnit\Framework\CodeCoverageException; +use PHPUnit\Framework\ExecutionOrderDependency; use PHPUnit\Framework\InvalidCoversTargetException; use PHPUnit\Framework\SelfDescribing; use PHPUnit\Framework\TestCase; @@ -50,8 +47,10 @@ use PHPUnit\Runner\Version; use PHPUnit\Util\Annotation\Registry; use ReflectionClass; use ReflectionException; -use ReflectionFunction; use ReflectionMethod; +use SebastianBergmann\CodeUnit\CodeUnitCollection; +use SebastianBergmann\CodeUnit\InvalidCodeUnitException; +use SebastianBergmann\CodeUnit\Mapper; use SebastianBergmann\Environment\OperatingSystem; /** @@ -144,12 +143,16 @@ final class Test public static function requiresCodeCoverageDataCollection(TestCase $test): bool { - $annotations = $test->getAnnotations(); + $annotations = self::parseTestMethodAnnotations( + get_class($test), + $test->getName(false) + ); // If there is no @covers annotation but a @coversNothing annotation on // the test method then code coverage data does not need to be collected if (isset($annotations['method']['coversNothing'])) { - return false; + // @see https://github.com/sebastianbergmann/phpunit/issues/4947#issuecomment-1084480950 + // return false; } // If there is at least one @covers annotation then @@ -161,7 +164,8 @@ final class Test // If there is no @covers annotation but a @coversNothing annotation // then code coverage data does not need to be collected if (isset($annotations['class']['coversNothing'])) { - return false; + // @see https://github.com/sebastianbergmann/phpunit/issues/4947#issuecomment-1084480950 + // return false; } // If there is no @coversNothing annotation then @@ -312,22 +316,6 @@ final class Test return $missing; } - /** - * Returns the expected exception for a test. - * - * @return array|false - * - * @deprecated - * - * @codeCoverageIgnore - * - * @psalm-param class-string $className - */ - public static function getExpectedException(string $className, string $methodName) - { - return Registry::getInstance()->forMethod($className, $methodName)->expectedException(); - } - /** * Returns the provided data for a method. * @@ -389,7 +377,11 @@ final class Test ]; } - /** @psalm-param class-string $className */ + /** + * @psalm-param class-string $className + * + * @return ExecutionOrderDependency[] + */ public static function getDependencies(string $className, string $methodName): array { $annotations = self::parseTestMethodAnnotations( @@ -397,15 +389,22 @@ final class Test $methodName ); - $dependencies = $annotations['class']['depends'] ?? []; + $dependsAnnotations = $annotations['class']['depends'] ?? []; if (isset($annotations['method']['depends'])) { - $dependencies = array_merge( - $dependencies, + $dependsAnnotations = array_merge( + $dependsAnnotations, $annotations['method']['depends'] ); } + // Normalize dependency name to className::methodName + $dependencies = []; + + foreach ($dependsAnnotations as $value) { + $dependencies[] = ExecutionOrderDependency::createFromDependsAnnotation($className, $value); + } + return array_unique($dependencies); } @@ -451,6 +450,20 @@ final class Test } } + foreach (['method', 'class'] as $element) { + if (isset($annotations[$element]['covers'])) { + foreach ($annotations[$element]['covers'] as $coversTarget) { + $groups[] = ['__phpunit_covers_' . self::canonicalizeName($coversTarget)]; + } + } + + if (isset($annotations[$element]['uses'])) { + foreach ($annotations[$element]['uses'] as $usesTarget) { + $groups[] = ['__phpunit_uses_' . self::canonicalizeName($usesTarget)]; + } + } + } + return array_unique(array_merge([], ...$groups)); } @@ -540,6 +553,17 @@ final class Test ); } + if ($docBlock->isToBeExecutedAsPreCondition()) { + array_unshift( + self::$hookMethods[$className]['preCondition'], + $method->getName() + ); + } + + if ($docBlock->isToBeExecutedAsPostCondition()) { + self::$hookMethods[$className]['postCondition'][] = $method->getName(); + } + if ($docBlock->isToBeExecutedAfterTest()) { self::$hookMethods[$className]['after'][] = $method->getName(); } @@ -605,7 +629,8 @@ final class Test $list = array_merge($list, $annotations['method'][$mode]); } - $codeList = []; + $codeUnits = CodeUnitCollection::fromArray([]); + $mapper = new Mapper; foreach (array_unique($list) as $element) { if ($classShortcut && strncmp($element, '::', 2) === 0) { @@ -625,19 +650,33 @@ final class Test ); } - $codeList[] = self::resolveElementToReflectionObjects($element); + try { + $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($element)); + } catch (InvalidCodeUnitException $e) { + throw new InvalidCoversTargetException( + sprintf( + '"@%s %s" is invalid', + $mode, + $element + ), + $e->getCode(), + $e + ); + } } - return self::resolveReflectionObjectsToLines(array_merge([], ...$codeList)); + return $mapper->codeUnitsToSourceLines($codeUnits); } private static function emptyHookMethodsArray(): array { return [ - 'beforeClass' => ['setUpBeforeClass'], - 'before' => ['setUp'], - 'after' => ['tearDown'], - 'afterClass' => ['tearDownAfterClass'], + 'beforeClass' => ['setUpBeforeClass'], + 'before' => ['setUp'], + 'preCondition' => ['assertPreConditions'], + 'postCondition' => ['assertPostConditions'], + 'after' => ['tearDown'], + 'afterClass' => ['tearDownAfterClass'], ]; } @@ -672,200 +711,6 @@ final class Test return null; } - /** - * @throws InvalidCoversTargetException - */ - private static function resolveElementToReflectionObjects(string $element): array - { - $codeToCoverList = []; - - if (function_exists($element) && strpos($element, '\\') !== false) { - try { - $codeToCoverList[] = new ReflectionFunction($element); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - } elseif (strpos($element, '::') !== false) { - [$className, $methodName] = explode('::', $element); - - if (isset($methodName[0]) && $methodName[0] === '<') { - $classes = [$className]; - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className) && - !trait_exists($className)) { - throw new InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - try { - $methods = (new ReflectionClass($className))->getMethods(); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - - $inverse = isset($methodName[1]) && $methodName[1] === '!'; - $visibility = 'isPublic'; - - if (strpos($methodName, 'protected')) { - $visibility = 'isProtected'; - } elseif (strpos($methodName, 'private')) { - $visibility = 'isPrivate'; - } - - foreach ($methods as $method) { - if ($inverse && !$method->{$visibility}()) { - $codeToCoverList[] = $method; - } elseif (!$inverse && $method->{$visibility}()) { - $codeToCoverList[] = $method; - } - } - } - } else { - $classes = [$className]; - - foreach ($classes as $className) { - if ($className === '' && function_exists($methodName)) { - try { - $codeToCoverList[] = new ReflectionFunction( - $methodName - ); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - } else { - if (!((class_exists($className) || interface_exists($className) || trait_exists($className)) && - method_exists($className, $methodName))) { - throw new InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing method "%s::%s".', - $className, - $methodName - ) - ); - } - - try { - $codeToCoverList[] = new ReflectionMethod( - $className, - $methodName - ); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - } - } - } - } else { - $extended = false; - - if (strpos($element, '') !== false) { - $element = str_replace('', '', $element); - $extended = true; - } - - $classes = [$element]; - - if ($extended) { - $classes = array_merge( - $classes, - class_implements($element), - class_parents($element) - ); - } - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className) && - !trait_exists($className)) { - throw new InvalidCoversTargetException( - sprintf( - 'Trying to @cover or @use not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - try { - $codeToCoverList[] = new ReflectionClass($className); - // @codeCoverageIgnoreStart - } catch (ReflectionException $e) { - throw new Exception( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - } - // @codeCoverageIgnoreEnd - } - } - - return $codeToCoverList; - } - - private static function resolveReflectionObjectsToLines(array $reflectors): array - { - $result = []; - - foreach ($reflectors as $reflector) { - if ($reflector instanceof ReflectionClass) { - foreach ($reflector->getTraits() as $trait) { - $reflectors[] = $trait; - } - } - } - - foreach ($reflectors as $reflector) { - $filename = $reflector->getFileName(); - - if (!isset($result[$filename])) { - $result[$filename] = []; - } - - $result[$filename] = array_merge( - $result[$filename], - range($reflector->getStartLine(), $reflector->getEndLine()) - ); - } - - foreach ($result as $filename => $lineNumbers) { - $result[$filename] = array_keys(array_flip($lineNumbers)); - } - - return $result; - } - /** * Trims any extensions from version string that follows after * the .[.] format. @@ -930,4 +775,9 @@ final class Test return $a; } + + private static function canonicalizeName(string $name): string + { + return strtolower(trim($name, '\\')); + } } diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php index 5c6621190..def16c398 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php @@ -27,6 +27,7 @@ use PHPUnit\Framework\TestResult; use PHPUnit\Runner\BaseTestRunner; use PHPUnit\Runner\PhptTestCase; use PHPUnit\Util\Color; +use SebastianBergmann\Timer\ResourceUsageFormatter; use SebastianBergmann\Timer\Timer; use Throwable; @@ -114,8 +115,25 @@ class CliTestDoxPrinter extends TestDoxPrinter private $nonSuccessfulTestResults = []; /** - * @throws \SebastianBergmann\Timer\RuntimeException + * @var Timer */ + private $timer; + + /** + * @param null|resource|string $out + * @param int|string $numberOfColumns + * + * @throws \PHPUnit\Framework\Exception + */ + public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false) + { + parent::__construct($out, $verbose, $colors, $debug, $numberOfColumns, $reverse); + + $this->timer = new Timer; + + $this->timer->start(); + } + public function printResult(TestResult $result): void { $this->printHeader($result); @@ -125,12 +143,9 @@ class CliTestDoxPrinter extends TestDoxPrinter $this->printFooter($result); } - /** - * @throws \SebastianBergmann\Timer\RuntimeException - */ protected function printHeader(TestResult $result): void { - $this->write("\n" . Timer::resourceUsage() . "\n\n"); + $this->write("\n" . (new ResourceUsageFormatter)->resourceUsage($this->timer->stop()) . "\n\n"); } protected function formatClassName(Test $test): string diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php index 354d045da..013d1de81 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php @@ -10,6 +10,7 @@ namespace PHPUnit\Util\TestDox; use function sprintf; +use PHPUnit\Framework\TestResult; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit @@ -80,6 +81,10 @@ EOT; EOT; + public function printResult(TestResult $result): void + { + } + /** * Handler for 'start run' event. */ @@ -105,7 +110,7 @@ EOT; /** * Handler for 'on test' event. */ - protected function onTest($name, bool $success = true): void + protected function onTest(string $name, bool $success = true): void { $this->write( sprintf( diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php index ca5af055a..742071498 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php @@ -62,7 +62,7 @@ final class NamePrettifier */ private $useColor; - public function __construct($useColor = false) + public function __construct(bool $useColor = false) { $this->useColor = $useColor; } @@ -122,7 +122,11 @@ final class NamePrettifier */ public function prettifyTestCase(TestCase $test): string { - $annotations = $test->getAnnotations(); + $annotations = Test::parseTestMethodAnnotations( + get_class($test), + $test->getName(false) + ); + $annotationWithPlaceholders = false; $callback = static function (string $variable): string @@ -238,7 +242,7 @@ final class NamePrettifier } catch (ReflectionException $e) { throw new UtilException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } @@ -258,7 +262,7 @@ final class NamePrettifier } catch (ReflectionException $e) { throw new UtilException( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php index 1c2a5c93d..c4b63644f 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php @@ -12,20 +12,21 @@ namespace PHPUnit\Util\TestDox; use function get_class; use function in_array; use PHPUnit\Framework\AssertionFailedError; +use PHPUnit\Framework\ErrorTestCase; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestListener; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; use PHPUnit\Framework\WarningTestCase; use PHPUnit\Runner\BaseTestRunner; +use PHPUnit\TextUI\ResultPrinter as ResultPrinterInterface; use PHPUnit\Util\Printer; use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -abstract class ResultPrinter extends Printer implements TestListener +abstract class ResultPrinter extends Printer implements ResultPrinterInterface { /** * @var NamePrettifier @@ -289,7 +290,7 @@ abstract class ResultPrinter extends Printer implements TestListener /** * Handler for 'on test' event. */ - protected function onTest($name, bool $success = true): void + protected function onTest(string $name, bool $success = true): void { } @@ -313,7 +314,7 @@ abstract class ResultPrinter extends Printer implements TestListener return false; } - if ($test instanceof WarningTestCase) { + if ($test instanceof ErrorTestCase || $test instanceof WarningTestCase) { return false; } diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php index 41d60670b..bd64785c9 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php @@ -13,9 +13,11 @@ use const PHP_EOL; use function array_map; use function get_class; use function implode; +use function method_exists; use function preg_split; use function trim; use PHPUnit\Framework\AssertionFailedError; +use PHPUnit\Framework\Reorderable; use PHPUnit\Framework\Test; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestResult; @@ -23,14 +25,13 @@ use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; use PHPUnit\Runner\BaseTestRunner; use PHPUnit\Runner\PhptTestCase; -use PHPUnit\Runner\TestSuiteSorter; -use PHPUnit\TextUI\ResultPrinter; +use PHPUnit\TextUI\DefaultResultPrinter; use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -class TestDoxPrinter extends ResultPrinter +class TestDoxPrinter extends DefaultResultPrinter { /** * @var NamePrettifier @@ -79,6 +80,7 @@ class TestDoxPrinter extends ResultPrinter /** * @param null|resource|string $out + * @param int|string $numberOfColumns * * @throws \PHPUnit\Framework\Exception */ @@ -187,7 +189,7 @@ class TestDoxPrinter extends ResultPrinter */ protected function registerTestResult(Test $test, ?Throwable $t, int $status, float $time, bool $verbose): void { - $testName = TestSuiteSorter::getTestSorterUID($test); + $testName = $test instanceof Reorderable ? $test->sortId() : $test->getName(); $result = [ 'className' => $this->formatClassName($test), @@ -209,7 +211,7 @@ class TestDoxPrinter extends ResultPrinter protected function formatTestName(Test $test): string { - return $test->getName(); + return method_exists($test, 'getName') ? $test->getName() : ''; } protected function formatClassName(Test $test): string @@ -237,7 +239,8 @@ class TestDoxPrinter extends ResultPrinter } if ($this->testFlushIndex > 0) { - if ($this->enableOutputBuffer) { + if ($this->enableOutputBuffer && + isset($this->originalExecutionOrder[$this->testFlushIndex - 1])) { $prevResult = $this->getTestResultByName($this->originalExecutionOrder[$this->testFlushIndex - 1]); } else { $prevResult = $this->testResults[$this->testFlushIndex - 1]; diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php index ee080039a..8a1893e55 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php @@ -9,11 +9,17 @@ */ namespace PHPUnit\Util\TestDox; +use PHPUnit\Framework\TestResult; + /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class TextResultPrinter extends ResultPrinter { + public function printResult(TestResult $result): void + { + } + /** * Handler for 'start class' event. */ @@ -25,7 +31,7 @@ final class TextResultPrinter extends ResultPrinter /** * Handler for 'on test' event. */ - protected function onTest($name, bool $success = true): void + protected function onTest(string $name, bool $success = true): void { if ($success) { $this->write(' [x] '); diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php index fc511edd4..265fe41f3 100644 --- a/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php +++ b/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php @@ -12,6 +12,7 @@ namespace PHPUnit\Util\TestDox; use function array_filter; use function get_class; use function implode; +use function strpos; use DOMDocument; use DOMElement; use PHPUnit\Framework\AssertionFailedError; @@ -21,7 +22,9 @@ use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestListener; use PHPUnit\Framework\TestSuite; use PHPUnit\Framework\Warning; +use PHPUnit\Framework\WarningTestCase; use PHPUnit\Util\Printer; +use PHPUnit\Util\Test as TestUtil; use ReflectionClass; use ReflectionException; use Throwable; @@ -152,7 +155,7 @@ final class XmlResultPrinter extends Printer implements TestListener */ public function endTest(Test $test, float $time): void { - if (!$test instanceof TestCase) { + if (!$test instanceof TestCase || $test instanceof WarningTestCase) { return; } @@ -160,7 +163,7 @@ final class XmlResultPrinter extends Printer implements TestListener $test->getGroups(), static function ($group) { - return !($group === 'small' || $group === 'medium' || $group === 'large'); + return !($group === 'small' || $group === 'medium' || $group === 'large' || strpos($group, '__phpunit_') === 0); } ); @@ -183,7 +186,10 @@ final class XmlResultPrinter extends Printer implements TestListener $testNode->appendChild($groupNode); } - $annotations = $test->getAnnotations(); + $annotations = TestUtil::parseTestMethodAnnotations( + get_class($test), + $test->getName(false) + ); foreach (['class', 'method'] as $type) { foreach ($annotations[$type] as $annotation => $values) { @@ -233,7 +239,7 @@ final class XmlResultPrinter extends Printer implements TestListener } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Util/Type.php b/vendor/phpunit/phpunit/src/Util/Type.php index 01a6b1931..ec6a1d78a 100644 --- a/vendor/phpunit/phpunit/src/Util/Type.php +++ b/vendor/phpunit/phpunit/src/Util/Type.php @@ -9,8 +9,6 @@ */ namespace PHPUnit\Util; -use Throwable; - /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ @@ -38,15 +36,4 @@ final class Type return false; } } - - public static function isCloneable(object $object): bool - { - try { - $clone = clone $object; - } catch (Throwable $t) { - return false; - } - - return $clone instanceof $object; - } } diff --git a/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php index df495a19b..8b10d4152 100644 --- a/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php +++ b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php @@ -16,16 +16,17 @@ use function implode; use function is_string; use function realpath; use function sprintf; +use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage as FilterConfiguration; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @deprecated */ final class XdebugFilterScriptGenerator { - public function generate(array $filterData): string + public function generate(FilterConfiguration $filter): string { - $items = $this->getWhitelistItems($filterData); - $files = array_map( static function ($item) { @@ -34,7 +35,7 @@ final class XdebugFilterScriptGenerator $item ); }, - $items + $this->getItems($filter) ); $files = implode(",\n", $files); @@ -56,27 +57,23 @@ if (!\\function_exists('xdebug_set_filter')) { EOF; } - private function getWhitelistItems(array $filterData): array + private function getItems(FilterConfiguration $filter): array { $files = []; - if (isset($filterData['include']['directory'])) { - foreach ($filterData['include']['directory'] as $directory) { - $path = realpath($directory['path']); + foreach ($filter->directories() as $directory) { + $path = realpath($directory->path()); - if (is_string($path)) { - $files[] = sprintf( - addslashes('%s' . DIRECTORY_SEPARATOR), - $path - ); - } + if (is_string($path)) { + $files[] = sprintf( + addslashes('%s' . DIRECTORY_SEPARATOR), + $path + ); } } - if (isset($filterData['include']['directory'])) { - foreach ($filterData['include']['file'] as $file) { - $files[] = $file; - } + foreach ($filter->files() as $file) { + $files[] = $file->path(); } return $files; diff --git a/vendor/phpunit/phpunit/src/Util/Xml.php b/vendor/phpunit/phpunit/src/Util/Xml.php index 1bf6a6146..54d721562 100644 --- a/vendor/phpunit/phpunit/src/Util/Xml.php +++ b/vendor/phpunit/phpunit/src/Util/Xml.php @@ -11,29 +11,18 @@ namespace PHPUnit\Util; use const ENT_QUOTES; use function assert; -use function chdir; use function class_exists; -use function dirname; -use function error_reporting; -use function file_get_contents; -use function getcwd; -use function gettype; use function htmlspecialchars; -use function is_string; -use function libxml_get_errors; -use function libxml_use_internal_errors; use function mb_convert_encoding; use function ord; use function preg_replace; use function settype; -use function sprintf; use function strlen; use DOMCharacterData; use DOMDocument; use DOMElement; use DOMNode; use DOMText; -use PHPUnit\Framework\Exception; use ReflectionClass; use ReflectionException; @@ -42,127 +31,17 @@ use ReflectionException; */ final class Xml { + /** + * @deprecated Only used by assertEqualXMLStructure() + */ public static function import(DOMElement $element): DOMElement { return (new DOMDocument)->importNode($element, true); } /** - * Load an $actual document into a DOMDocument. This is called - * from the selector assertions. - * - * If $actual is already a DOMDocument, it is returned with - * no changes. Otherwise, $actual is loaded into a new DOMDocument - * as either HTML or XML, depending on the value of $isHtml. If $isHtml is - * false and $xinclude is true, xinclude is performed on the loaded - * DOMDocument. - * - * Note: prior to PHPUnit 3.3.0, this method loaded a file and - * not a string as it currently does. To load a file into a - * DOMDocument, use loadFile() instead. - * - * @param DOMDocument|string $actual - * - * @throws Exception + * @deprecated Only used by assertEqualXMLStructure() */ - public static function load($actual, bool $isHtml = false, string $filename = '', bool $xinclude = false, bool $strict = false): DOMDocument - { - if ($actual instanceof DOMDocument) { - return $actual; - } - - if (!is_string($actual)) { - throw new Exception('Could not load XML from ' . gettype($actual)); - } - - if ($actual === '') { - throw new Exception('Could not load XML from empty string'); - } - - // Required for XInclude on Windows. - if ($xinclude) { - $cwd = getcwd(); - @chdir(dirname($filename)); - } - - $document = new DOMDocument; - $document->preserveWhiteSpace = false; - - $internal = libxml_use_internal_errors(true); - $message = ''; - $reporting = error_reporting(0); - - if ($filename !== '') { - // Required for XInclude - $document->documentURI = $filename; - } - - if ($isHtml) { - $loaded = $document->loadHTML($actual); - } else { - $loaded = $document->loadXML($actual); - } - - if (!$isHtml && $xinclude) { - $document->xinclude(); - } - - foreach (libxml_get_errors() as $error) { - $message .= "\n" . $error->message; - } - - libxml_use_internal_errors($internal); - error_reporting($reporting); - - if (isset($cwd)) { - @chdir($cwd); - } - - if ($loaded === false || ($strict && $message !== '')) { - if ($filename !== '') { - throw new Exception( - sprintf( - 'Could not load "%s".%s', - $filename, - $message !== '' ? "\n" . $message : '' - ) - ); - } - - if ($message === '') { - $message = 'Could not load XML for unknown reason'; - } - - throw new Exception($message); - } - - return $document; - } - - /** - * Loads an XML (or HTML) file into a DOMDocument object. - * - * @throws Exception - */ - public static function loadFile(string $filename, bool $isHtml = false, bool $xinclude = false, bool $strict = false): DOMDocument - { - $reporting = error_reporting(0); - $contents = file_get_contents($filename); - - error_reporting($reporting); - - if ($contents === false) { - throw new Exception( - sprintf( - 'Could not read "%s".', - $filename - ) - ); - } - - return self::load($contents, $isHtml, $filename, $xinclude, $strict); - } - public static function removeCharacterDataNodes(DOMNode $node): void { if ($node->hasChildNodes()) { @@ -247,7 +126,7 @@ final class Xml } catch (ReflectionException $e) { throw new Exception( $e->getMessage(), - (int) $e->getCode(), + $e->getCode(), $e ); } diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Exception.php b/vendor/phpunit/phpunit/src/Util/Xml/Exception.php new file mode 100644 index 000000000..09b73d8fa --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/Exception.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +use RuntimeException; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Exception extends RuntimeException implements \PHPUnit\Exception +{ +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php new file mode 100644 index 000000000..0949f5684 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class FailedSchemaDetectionResult extends SchemaDetectionResult +{ +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Loader.php b/vendor/phpunit/phpunit/src/Util/Xml/Loader.php new file mode 100644 index 000000000..8d43d3278 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/Loader.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 PHPUnit\Util\Xml; + +use function chdir; +use function dirname; +use function error_reporting; +use function file_get_contents; +use function getcwd; +use function libxml_get_errors; +use function libxml_use_internal_errors; +use function sprintf; +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Loader +{ + /** + * @throws Exception + */ + public function loadFile(string $filename, bool $isHtml = false, bool $xinclude = false, bool $strict = false): DOMDocument + { + $reporting = error_reporting(0); + $contents = file_get_contents($filename); + + error_reporting($reporting); + + if ($contents === false) { + throw new Exception( + sprintf( + 'Could not read "%s".', + $filename + ) + ); + } + + return $this->load($contents, $isHtml, $filename, $xinclude, $strict); + } + + /** + * @throws Exception + */ + public function load(string $actual, bool $isHtml = false, string $filename = '', bool $xinclude = false, bool $strict = false): DOMDocument + { + if ($actual === '') { + throw new Exception('Could not load XML from empty string'); + } + + // Required for XInclude on Windows. + if ($xinclude) { + $cwd = getcwd(); + @chdir(dirname($filename)); + } + + $document = new DOMDocument; + $document->preserveWhiteSpace = false; + + $internal = libxml_use_internal_errors(true); + $message = ''; + $reporting = error_reporting(0); + + if ($filename !== '') { + // Required for XInclude + $document->documentURI = $filename; + } + + if ($isHtml) { + $loaded = $document->loadHTML($actual); + } else { + $loaded = $document->loadXML($actual); + } + + if (!$isHtml && $xinclude) { + $document->xinclude(); + } + + foreach (libxml_get_errors() as $error) { + $message .= "\n" . $error->message; + } + + libxml_use_internal_errors($internal); + error_reporting($reporting); + + if (isset($cwd)) { + @chdir($cwd); + } + + if ($loaded === false || ($strict && $message !== '')) { + if ($filename !== '') { + throw new Exception( + sprintf( + 'Could not load "%s".%s', + $filename, + $message !== '' ? "\n" . $message : '' + ) + ); + } + + if ($message === '') { + $message = 'Could not load XML for unknown reason'; + } + + throw new Exception($message); + } + + return $document; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php new file mode 100644 index 000000000..442aae49c --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +abstract class SchemaDetectionResult +{ + public function detected(): bool + { + return false; + } + + /** + * @throws Exception + */ + public function version(): string + { + throw new Exception('No supported schema was detected'); + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php new file mode 100644 index 000000000..5864695b4 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class SchemaDetector +{ + /** + * @throws Exception + */ + public function detect(string $filename): SchemaDetectionResult + { + $document = (new Loader)->loadFile( + $filename, + false, + true, + true + ); + + foreach (['9.2', '8.5'] as $candidate) { + $schema = (new SchemaFinder)->find($candidate); + + if (!(new Validator)->validate($document, $schema)->hasValidationErrors()) { + return new SuccessfulSchemaDetectionResult($candidate); + } + } + + return new FailedSchemaDetectionResult; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php new file mode 100644 index 000000000..1e7b73c59 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +use function defined; +use function is_file; +use function sprintf; +use PHPUnit\Runner\Version; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class SchemaFinder +{ + /** + * @throws Exception + */ + public function find(string $version): string + { + if ($version === Version::series()) { + $filename = $this->path() . 'phpunit.xsd'; + } else { + $filename = $this->path() . 'schema/' . $version . '.xsd'; + } + + if (!is_file($filename)) { + throw new Exception( + sprintf( + 'Schema for PHPUnit %s is not available', + $version + ) + ); + } + + return $filename; + } + + private function path(): string + { + if (defined('__PHPUNIT_PHAR_ROOT__')) { + return __PHPUNIT_PHAR_ROOT__ . '/'; + } + + return __DIR__ . '/../../../'; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php b/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php new file mode 100644 index 000000000..e383678df --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +use function count; +use ArrayIterator; +use Countable; +use DOMNode; +use DOMNodeList; +use IteratorAggregate; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @template-implements IteratorAggregate + */ +final class SnapshotNodeList implements Countable, IteratorAggregate +{ + /** + * @var DOMNode[] + */ + private $nodes = []; + + public static function fromNodeList(DOMNodeList $list): self + { + $snapshot = new self; + + foreach ($list as $node) { + $snapshot->nodes[] = $node; + } + + return $snapshot; + } + + public function count(): int + { + return count($this->nodes); + } + + public function getIterator(): ArrayIterator + { + return new ArrayIterator($this->nodes); + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php new file mode 100644 index 000000000..8b517e29a --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class SuccessfulSchemaDetectionResult extends SchemaDetectionResult +{ + /** + * @var string + */ + private $version; + + public function __construct(string $version) + { + $this->version = $version; + } + + public function detected(): bool + { + return true; + } + + public function version(): string + { + return $this->version; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php b/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php new file mode 100644 index 000000000..3292267bd --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +use function sprintf; +use function trim; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @psalm-immutable + */ +final class ValidationResult +{ + /** + * @psalm-var array> + */ + private $validationErrors = []; + + /** + * @psalm-param array $errors + */ + public static function fromArray(array $errors): self + { + $validationErrors = []; + + foreach ($errors as $error) { + if (!isset($validationErrors[$error->line])) { + $validationErrors[$error->line] = []; + } + + $validationErrors[$error->line][] = trim($error->message); + } + + return new self($validationErrors); + } + + private function __construct(array $validationErrors) + { + $this->validationErrors = $validationErrors; + } + + public function hasValidationErrors(): bool + { + return !empty($this->validationErrors); + } + + public function asString(): string + { + $buffer = ''; + + foreach ($this->validationErrors as $line => $validationErrorsOnLine) { + $buffer .= sprintf(PHP_EOL . ' Line %d:' . PHP_EOL, $line); + + foreach ($validationErrorsOnLine as $validationError) { + $buffer .= sprintf(' - %s' . PHP_EOL, $validationError); + } + } + + return $buffer; + } +} diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Validator.php b/vendor/phpunit/phpunit/src/Util/Xml/Validator.php new file mode 100644 index 000000000..b3c4e05b1 --- /dev/null +++ b/vendor/phpunit/phpunit/src/Util/Xml/Validator.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Util\Xml; + +use function file_get_contents; +use function libxml_clear_errors; +use function libxml_get_errors; +use function libxml_use_internal_errors; +use DOMDocument; + +/** + * @internal This class is not covered by the backward compatibility promise for PHPUnit + */ +final class Validator +{ + public function validate(DOMDocument $document, string $xsdFilename): ValidationResult + { + $originalErrorHandling = libxml_use_internal_errors(true); + + $document->schemaValidateSource(file_get_contents($xsdFilename)); + + $errors = libxml_get_errors(); + libxml_clear_errors(); + libxml_use_internal_errors($originalErrorHandling); + + return ValidationResult::fromArray($errors); + } +} diff --git a/vendor/psr/event-dispatcher/.editorconfig b/vendor/psr/event-dispatcher/.editorconfig new file mode 100644 index 000000000..164f092d6 --- /dev/null +++ b/vendor/psr/event-dispatcher/.editorconfig @@ -0,0 +1,15 @@ +; This file is for unifying the coding style for different editors and IDEs. +; More information at http://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_size = 4 +indent_style = space +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab diff --git a/vendor/psr/event-dispatcher/.gitignore b/vendor/psr/event-dispatcher/.gitignore new file mode 100644 index 000000000..3a9875b46 --- /dev/null +++ b/vendor/psr/event-dispatcher/.gitignore @@ -0,0 +1,2 @@ +/vendor/ +composer.lock diff --git a/vendor/psr/event-dispatcher/LICENSE b/vendor/psr/event-dispatcher/LICENSE new file mode 100644 index 000000000..3f1559b2a --- /dev/null +++ b/vendor/psr/event-dispatcher/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 PHP-FIG + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/psr/event-dispatcher/README.md b/vendor/psr/event-dispatcher/README.md new file mode 100644 index 000000000..294214afb --- /dev/null +++ b/vendor/psr/event-dispatcher/README.md @@ -0,0 +1,6 @@ +PSR Event Dispatcher +==================== + +This repository holds the interfaces related to [PSR-14](http://www.php-fig.org/psr/psr-14/). + +Note that this is not an Event Dispatcher implementation of its own. It is merely interfaces that describe the components of an Event Dispatcher. See the specification for more details. diff --git a/vendor/psr/event-dispatcher/composer.json b/vendor/psr/event-dispatcher/composer.json new file mode 100644 index 000000000..667a71448 --- /dev/null +++ b/vendor/psr/event-dispatcher/composer.json @@ -0,0 +1,26 @@ +{ + "name": "psr/event-dispatcher", + "description": "Standard interfaces for event handling.", + "type": "library", + "keywords": ["psr", "psr-14", "events"], + "license": "MIT", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "require": { + "php": ">=7.2.0" + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php b/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php new file mode 100644 index 000000000..4306fa915 --- /dev/null +++ b/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php @@ -0,0 +1,21 @@ + [ - 'src/', - 'vendor/dnoegel/php-xdg-base-dir/src/', - 'vendor/doctrine/instantiator/src/', - 'vendor/hoa/console/', - 'vendor/jakub-onderka/php-console-color/src/', - 'vendor/jakub-onderka/php-console-highlighter/src/', - 'vendor/nikic/php-parser/lib/', - 'vendor/phpdocumentor/reflection-docblock/', - 'vendor/symfony/console/', - 'vendor/symfony/filesystem/', - 'vendor/symfony/finder/', - 'vendor/symfony/var-dumper/', - ], - - // A directory list that defines files that will be excluded - // from static analysis, but whose class and method - // information should be included. - // - // Generally, you'll want to include the directories for - // third-party code (such as "vendor/") in this list. - // - // n.b.: If you'd like to parse but not analyze 3rd - // party code, directories containing that code - // should be added to both the `directory_list` - // and `exclude_analysis_directory_list` arrays. - "exclude_analysis_directory_list" => [ - 'vendor/' - ], -]; diff --git a/vendor/psy/psysh/.php_cs b/vendor/psy/psysh/.php_cs deleted file mode 100644 index 421c31d2a..000000000 --- a/vendor/psy/psysh/.php_cs +++ /dev/null @@ -1,32 +0,0 @@ -in(__DIR__) - ->name('.php_cs') - ->name('build-manual') - ->name('build-phar') - ->exclude('build-vendor'); - -$header = <<setRules(array( - '@Symfony' => true, - 'array_syntax' => array('syntax' => 'short'), - 'binary_operator_spaces' => false, - 'concat_space' => array('spacing' => 'one'), - 'header_comment' => array('header' => $header), - 'increment_style' => array('style' => 'post'), - 'method_argument_space' => array('keep_multiple_spaces_after_comma' => true), - 'ordered_imports' => true, - 'pre_increment' => false, - 'yoda_style' => false, - )) - ->setFinder($finder); diff --git a/vendor/psy/psysh/.styleci.yml b/vendor/psy/psysh/.styleci.yml deleted file mode 100644 index 96fc96bf4..000000000 --- a/vendor/psy/psysh/.styleci.yml +++ /dev/null @@ -1,29 +0,0 @@ -preset: symfony - -enabled: - - align_double_arrow - - concat_with_spaces - - short_array_syntax - - ordered_use - - strict - -disabled: - - blank_line_before_break - - blank_line_before_continue - - blank_line_before_throw - - blank_line_before_try - - concat_without_spaces - - method_argument_space - - pre_increment - - unalign_double_arrow - - unalign_equals - - yoda_style - - property_separation - - const_separation - -finder: - name: - - "*.php" - - ".php_cs" - - "build-manual" - - "build-phar" diff --git a/vendor/psy/psysh/.travis.yml b/vendor/psy/psysh/.travis.yml deleted file mode 100644 index 660937b4f..000000000 --- a/vendor/psy/psysh/.travis.yml +++ /dev/null @@ -1,47 +0,0 @@ -language: php - -sudo: false - -matrix: - include: - - php: 5.4 - dist: trusty - - php: 5.4 - env: 'COMPOSER_FLAGS="--prefer-lowest --prefer-stable"' - dist: trusty - - php: 5.5 - dist: trusty - - php: 5.6 - - php: 7.0 - - php: 7.1 - - php: 7.2 - - php: hhvm - dist: trusty - allow_failures: - - php: 5.4 - env: 'COMPOSER_FLAGS="--prefer-lowest --prefer-stable"' - - php: hhvm - fast_finish: true - -install: travis_retry composer update --no-interaction $COMPOSER_FLAGS - -script: - - vendor/bin/phpunit --verbose --coverage-clover=coverage.xml - - '[[ $TRAVIS_PHP_VERSION = 7.2* ]] && make build -j 4 || true' - -after_success: - - bash <(curl -s https://codecov.io/bash) - -before_deploy: make dist -j 4 - -deploy: - provider: releases - api_key: - secure: LL8koDM1xDqzF9t0URHvmMPyWjojyd4PeZ7IW7XYgyvD6n1H6GYrVAeKCh5wfUKFbwHoa9s5AAn6pLzra00bODVkPTmUH+FSMWz9JKLw9ODAn8HvN7C+IooxmeClGHFZc0TfHfya8/D1E9C1iXtGGEoE/GqtaYq/z0C1DLpO0OU= - file_glob: true - file: dist/psysh-*.tar.gz - skip_cleanup: true - on: - tags: true - repo: bobthecow/psysh - condition: $TRAVIS_PHP_VERSION = 7.2* diff --git a/vendor/psy/psysh/LICENSE b/vendor/psy/psysh/LICENSE index 2c6a45137..f2afd1c2c 100644 --- a/vendor/psy/psysh/LICENSE +++ b/vendor/psy/psysh/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2012-2018 Justin Hileman +Copyright (c) 2012-2022 Justin Hileman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/psy/psysh/Makefile b/vendor/psy/psysh/Makefile deleted file mode 100644 index a1fdb42ed..000000000 --- a/vendor/psy/psysh/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -PSYSH_SRC = bin src box.json.dist composer.json build/stub -PSYSH_SRC_FILES = $(shell find src -type f -name "*.php") -VERSION = $(shell git describe --tag --always --dirty=-dev) - -COMPOSER_OPTS = --no-interaction --no-progress --verbose -COMPOSER_REQUIRE_OPTS = $(COMPOSER_OPTS) --no-update -COMPOSER_UPDATE_OPTS = $(COMPOSER_OPTS) --prefer-stable --no-dev --classmap-authoritative --prefer-dist - - -# Commands - -.PHONY: help clean build dist -.DEFAULT_GOAL := help - -help: - @echo "\033[33mUsage:\033[0m\n make TARGET\n\n\033[33mTargets:\033[0m" - @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-7s\033[0m %s\n", $$1, $$2}' - -clean: ## Clean all created artifacts - rm -rf build/* - rm -rf dist/* - rm -rf vendor-bin/*/vendor/ - -build: ## Compile PHARs -build: build/psysh/psysh build/psysh-compat/psysh build/psysh-php54/psysh build/psysh-php54-compat/psysh - -dist: ## Build tarballs for distribution -dist: dist/psysh-$(VERSION).tar.gz dist/psysh-$(VERSION)-compat.tar.gz dist/psysh-$(VERSION)-php54.tar.gz dist/psysh-$(VERSION)-php54-compat.tar.gz - - -# All the composer stuffs - -composer.lock: composer.json - composer install - touch $@ - -vendor/autoload.php: composer.lock - composer install - touch $@ - -vendor/bin/box: vendor/autoload.php - composer bin box install - touch $@ - - -# Lots of PHARs - -build/stub: bin/build-stub bin/psysh LICENSE - bin/build-stub - -build/psysh: $(PSYSH_SRC) $(PSYSH_SRC_FILES) - rm -rf $@ || true - mkdir $@ - cp -R $(PSYSH_SRC) $@/ - composer config --working-dir $@ platform.php 7.0 - composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) php:'>=7.0.0' - composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS) - -build/psysh-compat: $(PSYSH_SRC) $(PSYSH_SRC_FILES) - rm -rf $@ || true - mkdir $@ - cp -R $(PSYSH_SRC) $@/ - composer config --working-dir $@ platform.php 7.0 - composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) php:'>=7.0.0' - composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) symfony/polyfill-iconv symfony/polyfill-mbstring hoa/console - composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS) - -build/psysh-php54: $(PSYSH_SRC) $(PSYSH_SRC_FILES) - rm -rf $@ || true - mkdir $@ - cp -R $(PSYSH_SRC) $@/ - composer config --working-dir $@ platform.php 5.4 - composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS) - -build/psysh-php54-compat: $(PSYSH_SRC) $(PSYSH_SRC_FILES) - rm -rf $@ || true - mkdir $@ - cp -R $(PSYSH_SRC) $@/ - composer config --working-dir $@ platform.php 5.4 - composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) symfony/polyfill-iconv symfony/polyfill-mbstring hoa/console:^2.15 - composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS) - -build/%/psysh: vendor/bin/box build/% - vendor/bin/box compile --working-dir $(dir $@) - - -# Dist packages - -dist/psysh-$(VERSION).tar.gz: build/psysh/psysh - @mkdir -p $(@D) - tar -C $(dir $<) -czf $@ $(notdir $<) - -dist/psysh-$(VERSION)-%.tar.gz: build/psysh-%/psysh - @mkdir -p $(@D) - tar -C $(dir $<) -czf $@ $(notdir $<) diff --git a/vendor/psy/psysh/README.md b/vendor/psy/psysh/README.md index 710434caf..fc731d115 100644 --- a/vendor/psy/psysh/README.md +++ b/vendor/psy/psysh/README.md @@ -7,7 +7,7 @@ PsySH is a runtime developer console, interactive debugger and [REPL](https://en [![Monthly downloads](http://img.shields.io/packagist/dm/psy/psysh.svg?style=flat-square)](https://packagist.org/packages/psy/psysh) [![Made out of awesome](https://img.shields.io/badge/made_out_of_awesome-✓-brightgreen.svg?style=flat-square)](http://psysh.org) -[![Build status](https://img.shields.io/travis/bobthecow/psysh/master.svg?style=flat-square)](http://travis-ci.org/bobthecow/psysh) +[![Build status](https://img.shields.io/github/actions/workflow/status/bobthecow/psysh/tests.yml?branch=main&style=flat-square)](https://github.com/bobthecow/psysh/actions?query=branch:main) [![StyleCI](https://styleci.io/repos/4549925/shield)](https://styleci.io/repos/4549925) @@ -24,11 +24,13 @@ PsySH is a runtime developer console, interactive debugger and [REPL](https://en * [⏳ Managing history](https://github.com/bobthecow/psysh/wiki/History) * [💲 System shell integration](https://github.com/bobthecow/psysh/wiki/Shell-integration) * [🎥 Tutorials & guides](https://github.com/bobthecow/psysh/wiki/Tutorials) + * [🐛 Troubleshooting](https://github.com/bobthecow/psysh/wiki/Troubleshooting) ### [📢 Commands](https://github.com/bobthecow/psysh/wiki/Commands) ### [🛠 Configuration](https://github.com/bobthecow/psysh/wiki/Configuration) * [🎛 Config options](https://github.com/bobthecow/psysh/wiki/Config-options) + * [🎨 Themes](https://github.com/bobthecow/psysh/wiki/Themes) * [📄 Sample config file](https://github.com/bobthecow/psysh/wiki/Sample-config) ### [🔌 Integrations](https://github.com/bobthecow/psysh/wiki/Integrations) diff --git a/vendor/psy/psysh/bin/build-stub b/vendor/psy/psysh/bin/build-stub deleted file mode 100755 index 0d26110ea..000000000 --- a/vendor/psy/psysh/bin/build-stub +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env php ->> \*/}sm', $autoload, $content); -$content = preg_replace('/\\(c\\) .*?with this source code./sm', $license, $content); - -$content .= '__HALT_COMPILER();'; - -@mkdir(dirname(__DIR__) . '/build'); - -file_put_contents(dirname(__DIR__) . '/build/stub', $content); diff --git a/vendor/psy/psysh/bin/psysh b/vendor/psy/psysh/bin/psysh index 7dbd203e7..1205b6316 100755 --- a/vendor/psy/psysh/bin/psysh +++ b/vendor/psy/psysh/bin/psysh @@ -4,7 +4,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2017 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -20,7 +20,7 @@ call_user_func(function () { foreach ($argv as $i => $arg) { if ($arg === '--cwd') { if ($i >= count($argv) - 1) { - echo 'Missing --cwd argument.' . PHP_EOL; + fwrite(STDERR, 'Missing --cwd argument.' . PHP_EOL); exit(1); } $cwd = $argv[$i + 1]; @@ -43,14 +43,21 @@ call_user_func(function () { $chunks = explode('/', $cwd); while (!empty($chunks)) { $path = implode('/', $chunks); + $prettyPath = $path; + if (isset($_SERVER['HOME']) && $_SERVER['HOME']) { + $prettyPath = preg_replace('/^' . preg_quote($_SERVER['HOME'], '/') . '/', '~', $path); + } // Find composer.json if (is_file($path . '/composer.json')) { if ($cfg = json_decode(file_get_contents($path . '/composer.json'), true)) { if (isset($cfg['name']) && $cfg['name'] === 'psy/psysh') { - // We're inside the psysh project. Let's use the local - // Composer autoload. + // We're inside the psysh project. Let's use the local Composer autoload. if (is_file($path . '/vendor/autoload.php')) { + if (realpath($path) !== realpath(__DIR__ . '/..')) { + fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL); + } + require $path . '/vendor/autoload.php'; } @@ -64,9 +71,12 @@ call_user_func(function () { if ($cfg = json_decode(file_get_contents($path . '/composer.lock'), true)) { foreach (array_merge($cfg['packages'], $cfg['packages-dev']) as $pkg) { if (isset($pkg['name']) && $pkg['name'] === 'psy/psysh') { - // We're inside a project which requires psysh. We'll - // use the local Composer autoload. + // We're inside a project which requires psysh. We'll use the local Composer autoload. if (is_file($path . '/vendor/autoload.php')) { + if (realpath($path . '/vendor') !== realpath(__DIR__ . '/../../..')) { + fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL); + } + require $path . '/vendor/autoload.php'; } @@ -89,8 +99,8 @@ if (!class_exists('Psy\Shell')) { } elseif (is_file(__DIR__ . '/../../../autoload.php')) { require __DIR__ . '/../../../autoload.php'; } else { - echo 'PsySH dependencies not found, be sure to run `composer install`.' . PHP_EOL; - echo 'See https://getcomposer.org to get Composer.' . PHP_EOL; + fwrite(STDERR, 'PsySH dependencies not found, be sure to run `composer install`.' . PHP_EOL); + fwrite(STDERR, 'See https://getcomposer.org to get Composer.' . PHP_EOL); exit(1); } /* >>> */ @@ -99,14 +109,14 @@ if (!class_exists('Psy\Shell')) { // If the psysh binary was included directly, assume they just wanted an // autoloader and bail early. // -// Keep this PHP 5.3 code around for a while in case someone is using a globally -// installed psysh as a bin launcher for older local versions. +// Keep this PHP 5.3 and 5.4 code around for a while in case someone is using a +// globally installed psysh as a bin launcher for older local versions. if (version_compare(PHP_VERSION, '5.3.6', '<')) { $trace = debug_backtrace(); } elseif (version_compare(PHP_VERSION, '5.4.0', '<')) { $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); } else { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); } if (Psy\Shell::isIncluded($trace)) { @@ -120,17 +130,17 @@ unset($trace); // If the local version is too old, we can't do this if (!function_exists('Psy\bin')) { - $argv = $_SERVER['argv']; + $argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : array(); $first = array_shift($argv); if (preg_match('/php(\.exe)?$/', $first)) { array_shift($argv); } array_unshift($argv, 'vendor/bin/psysh'); - echo 'A local PsySH dependency was found, but it cannot be loaded. Please update to' . PHP_EOL; - echo 'the latest version, or run the local copy directly, e.g.:' . PHP_EOL; - echo PHP_EOL; - echo ' ' . implode(' ', $argv) . PHP_EOL; + fwrite(STDERR, 'A local PsySH dependency was found, but it cannot be loaded. Please update to' . PHP_EOL); + fwrite(STDERR, 'the latest version, or run the local copy directly, e.g.:' . PHP_EOL); + fwrite(STDERR, PHP_EOL); + fwrite(STDERR, ' ' . implode(' ', $argv) . PHP_EOL); exit(1); } diff --git a/vendor/psy/psysh/box.json.dist b/vendor/psy/psysh/box.json.dist deleted file mode 100644 index e302f265e..000000000 --- a/vendor/psy/psysh/box.json.dist +++ /dev/null @@ -1,12 +0,0 @@ -{ - "stub": "stub", - "output": "psysh", - "compactors": [ - "KevinGH\\Box\\Compactor\\Php" - ], - "blacklist": [ - "grammar", - "test_old", - "Documentation" - ] -} diff --git a/vendor/psy/psysh/composer.json b/vendor/psy/psysh/composer.json index 5f71bf3d8..c076d041f 100644 --- a/vendor/psy/psysh/composer.json +++ b/vendor/psy/psysh/composer.json @@ -13,26 +13,21 @@ } ], "require": { - "php": ">=5.4.0", + "php": "^8.0 || ^7.0.8", "ext-json": "*", "ext-tokenizer": "*", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "dnoegel/php-xdg-base-dir": "0.1.*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*" + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "nikic/php-parser": "^4.0 || ^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0", - "hoa/console": "~2.15|~3.16", "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-pdo-sqlite": "The doc command requires SQLite to work." }, "autoload": { "files": ["src/functions.php"], @@ -46,9 +41,17 @@ } }, "bin": ["bin/psysh"], + "config": { + "allow-plugins": { + "bamarni/composer-bin-plugin": true + } + }, "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-main": "0.11.x-dev" } + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" } } diff --git a/vendor/psy/psysh/phpunit.xml.dist b/vendor/psy/psysh/phpunit.xml.dist deleted file mode 100644 index 3534fca27..000000000 --- a/vendor/psy/psysh/phpunit.xml.dist +++ /dev/null @@ -1,12 +0,0 @@ - - - - ./test - - - - - ./src - - - diff --git a/vendor/psy/psysh/src/CodeCleaner.php b/vendor/psy/psysh/src/CodeCleaner.php index e44c2c18e..60fe888f7 100644 --- a/vendor/psy/psysh/src/CodeCleaner.php +++ b/vendor/psy/psysh/src/CodeCleaner.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -18,24 +18,26 @@ use Psy\CodeCleaner\AbstractClassPass; use Psy\CodeCleaner\AssignThisVariablePass; use Psy\CodeCleaner\CalledClassPass; use Psy\CodeCleaner\CallTimePassByReferencePass; +use Psy\CodeCleaner\EmptyArrayDimFetchPass; use Psy\CodeCleaner\ExitPass; use Psy\CodeCleaner\FinalClassPass; use Psy\CodeCleaner\FunctionContextPass; use Psy\CodeCleaner\FunctionReturnInWriteContextPass; use Psy\CodeCleaner\ImplicitReturnPass; use Psy\CodeCleaner\InstanceOfPass; +use Psy\CodeCleaner\IssetPass; +use Psy\CodeCleaner\LabelContextPass; use Psy\CodeCleaner\LeavePsyshAlonePass; -use Psy\CodeCleaner\LegacyEmptyPass; use Psy\CodeCleaner\ListPass; use Psy\CodeCleaner\LoopContextPass; use Psy\CodeCleaner\MagicConstantsPass; use Psy\CodeCleaner\NamespacePass; use Psy\CodeCleaner\PassableByReferencePass; use Psy\CodeCleaner\RequirePass; +use Psy\CodeCleaner\ReturnTypePass; use Psy\CodeCleaner\StrictTypesPass; use Psy\CodeCleaner\UseStatementPass; use Psy\CodeCleaner\ValidClassNamePass; -use Psy\CodeCleaner\ValidConstantPass; use Psy\CodeCleaner\ValidConstructorPass; use Psy\CodeCleaner\ValidFunctionNamePass; use Psy\Exception\ParseErrorException; @@ -46,6 +48,7 @@ use Psy\Exception\ParseErrorException; */ class CodeCleaner { + private $yolo = false; private $parser; private $printer; private $traverser; @@ -54,19 +57,22 @@ class CodeCleaner /** * CodeCleaner constructor. * - * @param Parser $parser A PhpParser Parser instance. One will be created if not explicitly supplied - * @param Printer $printer A PhpParser Printer instance. One will be created if not explicitly supplied - * @param NodeTraverser $traverser A PhpParser NodeTraverser instance. One will be created if not explicitly supplied + * @param Parser|null $parser A PhpParser Parser instance. One will be created if not explicitly supplied + * @param Printer|null $printer A PhpParser Printer instance. One will be created if not explicitly supplied + * @param NodeTraverser|null $traverser A PhpParser NodeTraverser instance. One will be created if not explicitly supplied + * @param bool $yolo run without input validation */ - public function __construct(Parser $parser = null, Printer $printer = null, NodeTraverser $traverser = null) + public function __construct(Parser $parser = null, Printer $printer = null, NodeTraverser $traverser = null, bool $yolo = false) { + $this->yolo = $yolo; + if ($parser === null) { $parserFactory = new ParserFactory(); - $parser = $parserFactory->createParser(); + $parser = $parserFactory->createParser(); } - $this->parser = $parser; - $this->printer = $printer ?: new Printer(); + $this->parser = $parser; + $this->printer = $printer ?: new Printer(); $this->traverser = $traverser ?: new NodeTraverser(); foreach ($this->getDefaultPasses() as $pass) { @@ -74,15 +80,29 @@ class CodeCleaner } } + /** + * Check whether this CodeCleaner is in YOLO mode. + * + * @return bool + */ + public function yolo(): bool + { + return $this->yolo; + } + /** * Get default CodeCleaner passes. * * @return array */ - private function getDefaultPasses() + private function getDefaultPasses(): array { + if ($this->yolo) { + return $this->getYoloPasses(); + } + $useStatementPass = new UseStatementPass(); - $namespacePass = new NamespacePass($this); + $namespacePass = new NamespacePass($this); // Try to add implicit `use` statements and an implicit namespace, // based on the file in which the `debug` call was made. @@ -98,11 +118,14 @@ class CodeCleaner new FunctionContextPass(), new FunctionReturnInWriteContextPass(), new InstanceOfPass(), + new IssetPass(), + new LabelContextPass(), new LeavePsyshAlonePass(), - new LegacyEmptyPass(), new ListPass(), new LoopContextPass(), new PassableByReferencePass(), + new ReturnTypePass(), + new EmptyArrayDimFetchPass(), new ValidConstructorPass(), // Rewriting shenanigans @@ -116,11 +139,40 @@ class CodeCleaner // Namespace-aware validation (which depends on aforementioned shenanigans) new ValidClassNamePass(), - new ValidConstantPass(), new ValidFunctionNamePass(), ]; } + /** + * A set of code cleaner passes that don't try to do any validation, and + * only do minimal rewriting to make things work inside the REPL. + * + * This list should stay in sync with the "rewriting shenanigans" in + * getDefaultPasses above. + * + * @return array + */ + private function getYoloPasses(): array + { + $useStatementPass = new UseStatementPass(); + $namespacePass = new NamespacePass($this); + + // Try to add implicit `use` statements and an implicit namespace, + // based on the file in which the `debug` call was made. + $this->addImplicitDebugContext([$useStatementPass, $namespacePass]); + + return [ + new LeavePsyshAlonePass(), + $useStatementPass, // must run before the namespace pass + new ExitPass(), + new ImplicitReturnPass(), + new MagicConstantsPass(), + $namespacePass, // must run after the implicit return pass + new RequirePass(), + new StrictTypesPass(), + ]; + } + /** * "Warm up" code cleaner passes when we're coming from a debug call. * @@ -157,8 +209,6 @@ class CodeCleaner $traverser->traverse($stmts); } catch (\Throwable $e) { // Don't care. - } catch (\Exception $e) { - // Still don't care. } } @@ -169,7 +219,7 @@ class CodeCleaner */ private static function getDebugFile() { - $trace = \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); foreach (\array_reverse($trace) as $stackFrame) { if (!self::isDebugCall($stackFrame)) { @@ -193,13 +243,13 @@ class CodeCleaner * * @return bool */ - private static function isDebugCall(array $stackFrame) + private static function isDebugCall(array $stackFrame): bool { - $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; + $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; $function = isset($stackFrame['function']) ? $stackFrame['function'] : null; - return ($class === null && $function === 'Psy\debug') || - ($class === 'Psy\Shell' && $function === 'debug'); + return ($class === null && $function === 'Psy\\debug') || + ($class === Shell::class && $function === 'debug'); } /** @@ -212,9 +262,9 @@ class CodeCleaner * * @return string|false Cleaned PHP code, False if the input is incomplete */ - public function clean(array $codeLines, $requireSemicolons = false) + public function clean(array $codeLines, bool $requireSemicolons = false) { - $stmts = $this->parse('parse('traverser->traverse($stmts); // Work around https://github.com/nikic/PHP-Parser/issues/399 - $oldLocale = \setlocale(LC_NUMERIC, 0); - \setlocale(LC_NUMERIC, 'C'); + $oldLocale = \setlocale(\LC_NUMERIC, 0); + \setlocale(\LC_NUMERIC, 'C'); $code = $this->printer->prettyPrint($stmts); // Now put the locale back - \setlocale(LC_NUMERIC, $oldLocale); + \setlocale(\LC_NUMERIC, $oldLocale); return $code; } @@ -237,9 +287,9 @@ class CodeCleaner /** * Set the current local namespace. * - * @param null|array $namespace (default: null) + * @param array|null $namespace (default: null) * - * @return null|array + * @return array|null */ public function setNamespace(array $namespace = null) { @@ -249,7 +299,7 @@ class CodeCleaner /** * Get the current local namespace. * - * @return null|array + * @return array|null */ public function getNamespace() { @@ -269,7 +319,7 @@ class CodeCleaner * * @return array|false A set of statements, or false if incomplete */ - protected function parse($code, $requireSemicolons = false) + protected function parse(string $code, bool $requireSemicolons = false) { try { return $this->parser->parse($code); @@ -296,14 +346,14 @@ class CodeCleaner try { // Unexpected EOF, try again with an implicit semicolon - return $this->parser->parse($code . ';'); + return $this->parser->parse($code.';'); } catch (\PhpParser\Error $e) { return false; } } } - private function parseErrorIsEOF(\PhpParser\Error $e) + private function parseErrorIsEOF(\PhpParser\Error $e): bool { $msg = $e->getRawMessage(); @@ -322,27 +372,27 @@ class CodeCleaner * * @return bool */ - private function parseErrorIsUnclosedString(\PhpParser\Error $e, $code) + private function parseErrorIsUnclosedString(\PhpParser\Error $e, string $code): bool { if ($e->getRawMessage() !== 'Syntax error, unexpected T_ENCAPSED_AND_WHITESPACE') { return false; } try { - $this->parser->parse($code . "';"); - } catch (\Exception $e) { + $this->parser->parse($code."';"); + } catch (\Throwable $e) { return false; } return true; } - private function parseErrorIsUnterminatedComment(\PhpParser\Error $e, $code) + private function parseErrorIsUnterminatedComment(\PhpParser\Error $e, $code): bool { return $e->getRawMessage() === 'Unterminated comment'; } - private function parseErrorIsTrailingComma(\PhpParser\Error $e, $code) + private function parseErrorIsTrailingComma(\PhpParser\Error $e, $code): bool { return ($e->getRawMessage() === 'A trailing comma is not allowed here') && (\substr(\rtrim($code), -1) === ','); } diff --git a/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php b/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php index 81d12b6a5..516addff8 100644 --- a/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -25,9 +25,11 @@ class AbstractClassPass extends CodeCleanerPass private $abstractMethods; /** - * @throws RuntimeException if the node is an abstract function with a body + * @throws FatalErrorException if the node is an abstract function with a body * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -41,16 +43,18 @@ class AbstractClassPass extends CodeCleanerPass if ($node->stmts !== null) { $msg = \sprintf('Abstract function %s cannot contain body', $name); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } } } /** - * @throws RuntimeException if the node is a non-abstract class with abstract methods + * @throws FatalErrorException if the node is a non-abstract class with abstract methods * * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { @@ -64,7 +68,7 @@ class AbstractClassPass extends CodeCleanerPass ($count === 1) ? '' : 's', \implode(', ', $this->abstractMethods) ); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php b/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php index 4c42d97f3..468b35145 100644 --- a/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,14 +26,16 @@ class AssignThisVariablePass extends CodeCleanerPass /** * Validate that the user input does not assign the `$this` variable. * - * @throws RuntimeException if the user assign the `$this` variable + * @throws FatalErrorException if the user assign the `$this` variable * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { if ($node instanceof Assign && $node->var instanceof Variable && $node->var->name === 'this') { - throw new FatalErrorException('Cannot re-assign $this', 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException('Cannot re-assign $this', 0, \E_ERROR, null, $node->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php b/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php index cff2c519b..96cba59a9 100644 --- a/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -15,6 +15,7 @@ use PhpParser\Node; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\StaticCall; +use PhpParser\Node\VariadicPlaceholder; use Psy\Exception\FatalErrorException; /** @@ -31,9 +32,11 @@ class CallTimePassByReferencePass extends CodeCleanerPass /** * Validate of use call-time pass-by-reference. * - * @throws RuntimeException if the user used call-time pass-by-reference + * @throws FatalErrorException if the user used call-time pass-by-reference * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -42,8 +45,12 @@ class CallTimePassByReferencePass extends CodeCleanerPass } foreach ($node->args as $arg) { + if ($arg instanceof VariadicPlaceholder) { + continue; + } + if ($arg->byRef) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php b/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php index e78f08d07..b1754b3dd 100644 --- a/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -17,6 +17,7 @@ use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Name; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Trait_; +use PhpParser\Node\VariadicPlaceholder; use Psy\Exception\ErrorException; /** @@ -29,6 +30,8 @@ class CalledClassPass extends CodeCleanerPass /** * @param array $nodes + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { @@ -39,6 +42,8 @@ class CalledClassPass extends CodeCleanerPass * @throws ErrorException if get_class or get_called_class is called without an object from outside a class * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -61,13 +66,15 @@ class CalledClassPass extends CodeCleanerPass $name = \strtolower($node->name); if (\in_array($name, ['get_class', 'get_called_class'])) { $msg = \sprintf('%s() called without object from outside a class', $name); - throw new ErrorException($msg, 0, E_USER_WARNING, null, $node->getLine()); + throw new ErrorException($msg, 0, \E_USER_WARNING, null, $node->getLine()); } } } /** * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { @@ -76,8 +83,12 @@ class CalledClassPass extends CodeCleanerPass } } - private function isNull(Node $node) + private function isNull(Node $node): bool { + if ($node instanceof VariadicPlaceholder) { + return false; + } + return $node->value instanceof ConstFetch && \strtolower($node->value->name) === 'null'; } } diff --git a/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php b/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php index 58e5d05ec..9b3bd7f88 100644 --- a/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php b/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php new file mode 100644 index 000000000..9d7e557ab --- /dev/null +++ b/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php @@ -0,0 +1,55 @@ +theseOnesAreFine = []; + } + + /** + * @throws FatalErrorException if the user used empty empty array dim fetch outside of assignment + * + * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) + */ + public function enterNode(Node $node) + { + if ($node instanceof Assign && $node->var instanceof ArrayDimFetch) { + $this->theseOnesAreFine[] = $node->var; + } + + if ($node instanceof ArrayDimFetch && $node->dim === null) { + if (!\in_array($node, $this->theseOnesAreFine)) { + throw new FatalErrorException(self::EXCEPTION_MESSAGE, $node->getLine()); + } + } + } +} diff --git a/vendor/psy/psysh/src/CodeCleaner/ExitPass.php b/vendor/psy/psysh/src/CodeCleaner/ExitPass.php index 349a5c571..eb500efa6 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ExitPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ExitPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -15,6 +15,7 @@ use PhpParser\Node; use PhpParser\Node\Expr\Exit_; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name\FullyQualified as FullyQualifiedName; +use Psy\Exception\BreakException; class ExitPass extends CodeCleanerPass { @@ -22,11 +23,13 @@ class ExitPass extends CodeCleanerPass * Converts exit calls to BreakExceptions. * * @param \PhpParser\Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { if ($node instanceof Exit_) { - return new StaticCall(new FullyQualifiedName('Psy\Exception\BreakException'), 'exitShell'); + return new StaticCall(new FullyQualifiedName(BreakException::class), 'exitShell'); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php b/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php index 23f143be5..3771de7d8 100644 --- a/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,6 +24,8 @@ class FinalClassPass extends CodeCleanerPass /** * @param array $nodes + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { @@ -31,9 +33,11 @@ class FinalClassPass extends CodeCleanerPass } /** - * @throws RuntimeException if the node is a class that extends a final class + * @throws FatalErrorException if the node is a class that extends a final class * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -42,7 +46,7 @@ class FinalClassPass extends CodeCleanerPass $extends = (string) $node->extends; if ($this->isFinalClass($extends)) { $msg = \sprintf('Class %s may not inherit from final class (%s)', $node->name, $extends); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } @@ -57,7 +61,7 @@ class FinalClassPass extends CodeCleanerPass * * @return bool */ - private function isFinalClass($name) + private function isFinalClass(string $name): bool { if (!\class_exists($name)) { return isset($this->finalClasses[\strtolower($name)]); diff --git a/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php b/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php index adff5ca10..f998f7871 100644 --- a/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,12 +23,17 @@ class FunctionContextPass extends CodeCleanerPass /** * @param array $nodes + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { $this->functionDepth = 0; } + /** + * @return int|Node|null Replacement node (or special return value) + */ public function enterNode(Node $node) { if ($node instanceof FunctionLike) { @@ -45,12 +50,14 @@ class FunctionContextPass extends CodeCleanerPass // It causes fatal error. if ($node instanceof Yield_) { $msg = 'The "yield" expression can only be used inside a function'; - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } /** * @param \PhpParser\Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { diff --git a/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php b/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php index 87e5e7abf..ff63cae9d 100644 --- a/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,12 +14,12 @@ namespace Psy\CodeCleaner; use PhpParser\Node; use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\Assign; -use PhpParser\Node\Expr\Empty_; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\Isset_; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Stmt\Unset_; +use PhpParser\Node\VariadicPlaceholder; use Psy\Exception\FatalErrorException; /** @@ -29,33 +29,31 @@ use Psy\Exception\FatalErrorException; */ class FunctionReturnInWriteContextPass extends CodeCleanerPass { - const PHP55_MESSAGE = 'Cannot use isset() on the result of a function call (you can use "null !== func()" instead)'; + const ISSET_MESSAGE = 'Cannot use isset() on the result of an expression (you can use "null !== expression" instead)'; const EXCEPTION_MESSAGE = "Can't use function return value in write context"; - private $atLeastPhp55; - - public function __construct() - { - $this->atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>='); - } - /** * Validate that the functions are used correctly. * * @throws FatalErrorException if a function is passed as an argument reference * @throws FatalErrorException if a function is used as an argument in the isset - * @throws FatalErrorException if a function is used as an argument in the empty, only for PHP < 5.5 * @throws FatalErrorException if a value is assigned to a function * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { if ($node instanceof Array_ || $this->isCallNode($node)) { $items = $node instanceof Array_ ? $node->items : $node->args; foreach ($items as $item) { + if ($item instanceof VariadicPlaceholder) { + continue; + } + if ($item && $item->byRef && $this->isCallNode($item->value)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } } } elseif ($node instanceof Isset_ || $node instanceof Unset_) { @@ -64,17 +62,15 @@ class FunctionReturnInWriteContextPass extends CodeCleanerPass continue; } - $msg = ($node instanceof Isset_ && $this->atLeastPhp55) ? self::PHP55_MESSAGE : self::EXCEPTION_MESSAGE; - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + $msg = $node instanceof Isset_ ? self::ISSET_MESSAGE : self::EXCEPTION_MESSAGE; + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } - } elseif ($node instanceof Empty_ && !$this->atLeastPhp55 && $this->isCallNode($node->expr)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); // @codeCoverageIgnore } elseif ($node instanceof Assign && $this->isCallNode($node->var)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } } - private function isCallNode(Node $node) + private function isCallNode(Node $node): bool { return $node instanceof FuncCall || $node instanceof MethodCall || $node instanceof StaticCall; } diff --git a/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php b/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php index 06b069780..0b405cf91 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -32,7 +32,7 @@ class ImplicitReturnPass extends CodeCleanerPass * * @return array */ - public function beforeTraverse(array $nodes) + public function beforeTraverse(array $nodes): array { return $this->addImplicitReturn($nodes); } @@ -42,7 +42,7 @@ class ImplicitReturnPass extends CodeCleanerPass * * @return array */ - private function addImplicitReturn(array $nodes) + private function addImplicitReturn(array $nodes): array { // If nodes is empty, it can't have a return value. if (empty($nodes)) { @@ -118,7 +118,7 @@ class ImplicitReturnPass extends CodeCleanerPass * * @return bool */ - private static function isNonExpressionStmt(Node $node) + private static function isNonExpressionStmt(Node $node): bool { return $node instanceof Stmt && !$node instanceof Expression && diff --git a/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php b/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php index 44e24cae7..738489ff6 100644 --- a/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -12,6 +12,9 @@ namespace Psy\CodeCleaner; use PhpParser\Node; +use PhpParser\Node\Expr\Array_; +use PhpParser\Node\Expr\BinaryOp; +use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Expr\ConstFetch; use PhpParser\Node\Expr\Instanceof_; use PhpParser\Node\Scalar; @@ -27,21 +30,40 @@ class InstanceOfPass extends CodeCleanerPass { const EXCEPTION_MSG = 'instanceof expects an object instance, constant given'; + private $atLeastPhp73; + + public function __construct() + { + $this->atLeastPhp73 = \version_compare(\PHP_VERSION, '7.3', '>='); + } + /** * Validate that the instanceof statement does not receive a scalar value or a non-class constant. * * @throws FatalErrorException if a scalar or a non-class constant is given * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { + // Basically everything is allowed in PHP 7.3 :) + if ($this->atLeastPhp73) { + return; + } + if (!$node instanceof Instanceof_) { return; } - if (($node->expr instanceof Scalar && !$node->expr instanceof Encapsed) || $node->expr instanceof ConstFetch) { - throw new FatalErrorException(self::EXCEPTION_MSG, 0, E_ERROR, null, $node->getLine()); + if (($node->expr instanceof Scalar && !$node->expr instanceof Encapsed) || + $node->expr instanceof BinaryOp || + $node->expr instanceof Array_ || + $node->expr instanceof ConstFetch || + $node->expr instanceof ClassConstFetch + ) { + throw new FatalErrorException(self::EXCEPTION_MSG, 0, \E_ERROR, null, $node->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/IssetPass.php b/vendor/psy/psysh/src/CodeCleaner/IssetPass.php new file mode 100644 index 000000000..9aa347123 --- /dev/null +++ b/vendor/psy/psysh/src/CodeCleaner/IssetPass.php @@ -0,0 +1,49 @@ +vars as $var) { + if (!$var instanceof Variable && !$var instanceof ArrayDimFetch && !$var instanceof PropertyFetch && !$var instanceof NullsafePropertyFetch) { + throw new FatalErrorException(self::EXCEPTION_MSG, 0, \E_ERROR, null, $node->getLine()); + } + } + } +} diff --git a/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php b/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php new file mode 100644 index 000000000..23e7fd743 --- /dev/null +++ b/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php @@ -0,0 +1,101 @@ +functionDepth = 0; + $this->labelDeclarations = []; + $this->labelGotos = []; + } + + /** + * @return int|Node|null Replacement node (or special return value) + */ + public function enterNode(Node $node) + { + if ($node instanceof FunctionLike) { + $this->functionDepth++; + + return; + } + + // node is inside function context + if ($this->functionDepth !== 0) { + return; + } + + if ($node instanceof Goto_) { + $this->labelGotos[\strtolower($node->name)] = $node->getLine(); + } elseif ($node instanceof Label) { + $this->labelDeclarations[\strtolower($node->name)] = $node->getLine(); + } + } + + /** + * @param \PhpParser\Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) + */ + public function leaveNode(Node $node) + { + if ($node instanceof FunctionLike) { + $this->functionDepth--; + } + } + + /** + * @return Node[]|null Array of nodes + */ + public function afterTraverse(array $nodes) + { + foreach ($this->labelGotos as $name => $line) { + if (!isset($this->labelDeclarations[$name])) { + $msg = "'goto' to undefined label '{$name}'"; + throw new FatalErrorException($msg, 0, \E_ERROR, null, $line); + } + } + } +} diff --git a/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php b/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php index 08f6fbee0..e23ad0f02 100644 --- a/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,6 +26,8 @@ class LeavePsyshAlonePass extends CodeCleanerPass * @throws RuntimeException if the user is messing with $__psysh__ * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { diff --git a/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php b/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php deleted file mode 100644 index 9793d8c4c..000000000 --- a/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php +++ /dev/null @@ -1,73 +0,0 @@ -atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>='); - } - - /** - * Validate use of empty in PHP < 5.5. - * - * @throws ParseErrorException if the user used empty with anything but a variable - * - * @param Node $node - */ - public function enterNode(Node $node) - { - if ($this->atLeastPhp55) { - return; - } - - if (!$node instanceof Empty_) { - return; - } - - if (!$node->expr instanceof Variable) { - $msg = \sprintf('syntax error, unexpected %s', $this->getUnexpectedThing($node->expr)); - - throw new ParseErrorException($msg, $node->expr->getLine()); - } - } - - private function getUnexpectedThing(Node $node) - { - switch ($node->getType()) { - case 'Scalar_String': - case 'Scalar_LNumber': - case 'Scalar_DNumber': - return \json_encode($node->value); - - case 'Expr_ConstFetch': - return (string) $node->name; - - default: - return $node->getType(); - } - } -} diff --git a/vendor/psy/psysh/src/CodeCleaner/ListPass.php b/vendor/psy/psysh/src/CodeCleaner/ListPass.php index b0d1d73e4..e380ad6c3 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ListPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ListPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -33,7 +33,7 @@ class ListPass extends CodeCleanerPass public function __construct() { - $this->atLeastPhp71 = \version_compare(PHP_VERSION, '7.1', '>='); + $this->atLeastPhp71 = \version_compare(\PHP_VERSION, '7.1', '>='); } /** @@ -42,6 +42,8 @@ class ListPass extends CodeCleanerPass * @throws ParseErrorException if the user used empty with anything but a variable * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -97,7 +99,7 @@ class ListPass extends CodeCleanerPass * * @return bool */ - private static function isValidArrayItem(Expr $item) + private static function isValidArrayItem(Expr $item): bool { $value = ($item instanceof ArrayItem) ? $item->value : $item; diff --git a/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php b/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php index 933278e73..e30f1019c 100644 --- a/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -32,6 +32,8 @@ class LoopContextPass extends CodeCleanerPass /** * {@inheritdoc} + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { @@ -45,6 +47,8 @@ class LoopContextPass extends CodeCleanerPass * @throws FatalErrorException if the node is a break or continue and has an argument less than 1 * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -63,23 +67,23 @@ class LoopContextPass extends CodeCleanerPass if ($this->loopDepth === 0) { $msg = \sprintf("'%s' not in the 'loop' or 'switch' context", $operator); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } if ($node->num instanceof LNumber || $node->num instanceof DNumber) { $num = $node->num->value; if ($node->num instanceof DNumber || $num < 1) { $msg = \sprintf("'%s' operator accepts only positive numbers", $operator); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } if ($num > $this->loopDepth) { $msg = \sprintf("Cannot '%s' %d levels", $operator, $num); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } elseif ($node->num) { $msg = \sprintf("'%s' operator with non-constant operand is no longer supported", $operator); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } break; } @@ -87,6 +91,8 @@ class LoopContextPass extends CodeCleanerPass /** * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { diff --git a/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php b/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php index 50936b2cc..ea1f60c47 100644 --- a/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -29,7 +29,7 @@ class MagicConstantsPass extends CodeCleanerPass * * @param Node $node * - * @return null|FuncCall|String_ + * @return FuncCall|String_|null */ public function enterNode(Node $node) { diff --git a/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php b/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php index 6679206dc..1def387f6 100644 --- a/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -29,10 +29,12 @@ abstract class NamespaceAwarePass extends CodeCleanerPass * use afterTraverse or call parent::beforeTraverse() when overloading. * * Reset the namespace and the current scope before beginning analysis + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { - $this->namespace = []; + $this->namespace = []; $this->currentScope = []; } @@ -41,6 +43,8 @@ abstract class NamespaceAwarePass extends CodeCleanerPass * leaveNode or call parent::enterNode() when overloading * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -56,7 +60,7 @@ abstract class NamespaceAwarePass extends CodeCleanerPass * * @return string */ - protected function getFullyQualifiedName($name) + protected function getFullyQualifiedName($name): string { if ($name instanceof FullyQualifiedName) { return \implode('\\', $name->parts); diff --git a/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php b/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php index d26f07cce..b3d5648af 100644 --- a/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\CodeCleaner; +use PhpParser\Node; use PhpParser\Node\Name; use PhpParser\Node\Stmt\Namespace_; use Psy\CodeCleaner; @@ -46,6 +47,8 @@ class NamespacePass extends CodeCleanerPass * is encountered. * * @param array $nodes + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { @@ -78,7 +81,7 @@ class NamespacePass extends CodeCleanerPass * Remember the namespace and (re)set the namespace on the CodeCleaner as * well. * - * @param null|Name $namespace + * @param Name|null $namespace */ private function setNamespace($namespace) { diff --git a/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php b/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php index 90325701e..26cce8de9 100644 --- a/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php +++ b/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,10 +26,10 @@ class NoReturnValue /** * Get PhpParser AST expression for creating a new NoReturnValue. * - * @return PhpParser\Node\Expr\New_ + * @return New_ */ - public static function create() + public static function create(): New_ { - return new New_(new FullyQualifiedName('Psy\CodeCleaner\NoReturnValue')); + return new New_(new FullyQualifiedName(self::class)); } } diff --git a/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php b/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php index 5b5dc0868..8feddd865 100644 --- a/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,6 +13,8 @@ namespace Psy\CodeCleaner; use PhpParser\Node; use PhpParser\Node\Expr; +use PhpParser\Node\Expr\Array_; +use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; @@ -32,6 +34,8 @@ class PassableByReferencePass extends CodeCleanerPass * @throws FatalErrorException if non-variables are passed by reference * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -59,15 +63,20 @@ class PassableByReferencePass extends CodeCleanerPass if (\array_key_exists($key, $node->args)) { $arg = $node->args[$key]; if ($param->isPassedByReference() && !$this->isPassableByReference($arg)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } } } } } - private function isPassableByReference(Node $arg) + private function isPassableByReference(Node $arg): bool { + // Unpacked arrays can be passed by reference + if ($arg->value instanceof Array_) { + return $arg->unpack; + } + // FuncCall, MethodCall and StaticCall are all PHP _warnings_ not fatal errors, so we'll let // PHP handle those ones :) return $arg->value instanceof ClassConstFetch || @@ -75,7 +84,8 @@ class PassableByReferencePass extends CodeCleanerPass $arg->value instanceof Variable || $arg->value instanceof FuncCall || $arg->value instanceof MethodCall || - $arg->value instanceof StaticCall; + $arg->value instanceof StaticCall || + $arg->value instanceof ArrayDimFetch; } /** @@ -102,7 +112,7 @@ class PassableByReferencePass extends CodeCleanerPass } elseif (++$nonPassable > 2) { // There can be *at most* two non-passable-by-reference args in a row. This is about // as close as we can get to validating the arguments for this function :-/ - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php index 31c156a37..e685dc0aa 100644 --- a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -19,7 +19,6 @@ use PhpParser\Node\Name\FullyQualified as FullyQualifiedName; use PhpParser\Node\Scalar\LNumber; use Psy\Exception\ErrorException; use Psy\Exception\FatalErrorException; -use Psy\Shell; /** * Add runtime validation for `require` and `require_once` calls. @@ -30,6 +29,8 @@ class RequirePass extends CodeCleanerPass /** * {@inheritdoc} + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $origNode) { @@ -49,7 +50,7 @@ class RequirePass extends CodeCleanerPass * $foo = require \Psy\CodeCleaner\RequirePass::resolve($bar) */ $node->expr = new StaticCall( - new FullyQualifiedName('Psy\CodeCleaner\RequirePass'), + new FullyQualifiedName(self::class), 'resolve', [new Arg($origNode->expr), new Arg(new LNumber($origNode->getLine()))], $origNode->getAttributes() @@ -63,15 +64,18 @@ class RequirePass extends CodeCleanerPass * * If $file can be resolved, return $file. Otherwise throw a fatal error exception. * + * If $file collides with a path in the currently running PsySH phar, it will be resolved + * relative to the include path, to prevent PHP from grabbing the phar version of the file. + * * @throws FatalErrorException when unable to resolve include path for $file * @throws ErrorException if $file is empty and E_WARNING is included in error_reporting level * * @param string $file * @param int $lineNumber Line number of the original require expression * - * @return string Exactly the same as $file + * @return string Exactly the same as $file, unless $file collides with a path in the currently running phar */ - public static function resolve($file, $lineNumber = null) + public static function resolve($file, $lineNumber = null): string { $file = (string) $file; @@ -79,23 +83,51 @@ class RequirePass extends CodeCleanerPass // @todo Shell::handleError would be better here, because we could // fake the file and line number, but we can't call it statically. // So we're duplicating some of the logics here. - if (E_WARNING & \error_reporting()) { - ErrorException::throwException(E_WARNING, 'Filename cannot be empty', null, $lineNumber); + if (\E_WARNING & \error_reporting()) { + ErrorException::throwException(\E_WARNING, 'Filename cannot be empty', null, $lineNumber); } // @todo trigger an error as fallback? this is pretty ugly… // trigger_error('Filename cannot be empty', E_USER_WARNING); } - if ($file === '' || !\stream_resolve_include_path($file)) { + $resolvedPath = \stream_resolve_include_path($file); + if ($file === '' || !$resolvedPath) { $msg = \sprintf("Failed opening required '%s'", $file); - throw new FatalErrorException($msg, 0, E_ERROR, null, $lineNumber); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $lineNumber); + } + + // Special case: if the path is not already relative or absolute, and it would resolve to + // something inside the currently running phar (e.g. `vendor/autoload.php`), we'll resolve + // it relative to the include path so PHP won't grab the phar version. + // + // Note that this only works if the phar has `psysh` in the path. We might want to lift this + // restriction and special case paths that would collide with any running phar? + if ($resolvedPath !== $file && $file[0] !== '.') { + $runningPhar = \Phar::running(); + if (\strpos($runningPhar, 'psysh') !== false && \is_file($runningPhar.\DIRECTORY_SEPARATOR.$file)) { + foreach (self::getIncludePath() as $prefix) { + $resolvedPath = $prefix.\DIRECTORY_SEPARATOR.$file; + if (\is_file($resolvedPath)) { + return $resolvedPath; + } + } + } } return $file; } - private function isRequireNode(Node $node) + private function isRequireNode(Node $node): bool { return $node instanceof Include_ && \in_array($node->type, self::$requireTypes); } + + private static function getIncludePath(): array + { + if (\PATH_SEPARATOR === ':') { + return \preg_split('#:(?!//)#', \get_include_path()); + } + + return \explode(\PATH_SEPARATOR, \get_include_path()); + } } diff --git a/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php b/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php new file mode 100644 index 000000000..f6f52b92c --- /dev/null +++ b/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php @@ -0,0 +1,127 @@ +atLeastPhp71 = \version_compare(\PHP_VERSION, '7.1', '>='); + } + + /** + * {@inheritdoc} + * + * @return int|Node|null Replacement node (or special return value) + */ + public function enterNode(Node $node) + { + if (!$this->atLeastPhp71) { + return; // @codeCoverageIgnore + } + + if ($this->isFunctionNode($node)) { + $this->returnTypeStack[] = $node->returnType; + + return; + } + + if (!empty($this->returnTypeStack) && $node instanceof Return_) { + $expectedType = \end($this->returnTypeStack); + if ($expectedType === null) { + return; + } + + $msg = null; + + if ($this->typeName($expectedType) === 'void') { + // Void functions + if ($expectedType instanceof NullableType) { + $msg = self::NULLABLE_VOID_MESSAGE; + } elseif ($node->expr instanceof ConstFetch && \strtolower($node->expr->name) === 'null') { + $msg = self::VOID_NULL_MESSAGE; + } elseif ($node->expr !== null) { + $msg = self::VOID_MESSAGE; + } + } else { + // Everything else + if ($node->expr === null) { + $msg = $expectedType instanceof NullableType ? self::NULLABLE_MESSAGE : self::MESSAGE; + } + } + + if ($msg !== null) { + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); + } + } + } + + /** + * {@inheritdoc} + * + * @return int|Node|Node[]|null Replacement node (or special return value) + */ + public function leaveNode(Node $node) + { + if (!$this->atLeastPhp71) { + return; // @codeCoverageIgnore + } + + if (!empty($this->returnTypeStack) && $this->isFunctionNode($node)) { + \array_pop($this->returnTypeStack); + } + } + + private function isFunctionNode(Node $node): bool + { + return $node instanceof Function_ || $node instanceof Closure; + } + + private function typeName(Node $node): string + { + if ($node instanceof UnionType) { + return \implode('|', \array_map([$this, 'typeName'], $node->types)); + } + + if ($node instanceof NullableType) { + return \strtolower($node->type->name); + } + + if ($node instanceof Identifier) { + return \strtolower($node->name); + } + + throw new \InvalidArgumentException('Unable to find type name'); + } +} diff --git a/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php b/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php index 058a5a829..fbdbde314 100644 --- a/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\CodeCleaner; +use PhpParser\Node; use PhpParser\Node\Identifier; use PhpParser\Node\Scalar\LNumber; use PhpParser\Node\Stmt\Declare_; @@ -32,12 +33,6 @@ class StrictTypesPass extends CodeCleanerPass const EXCEPTION_MESSAGE = 'strict_types declaration must have 0 or 1 as its value'; private $strictTypes = false; - private $atLeastPhp7; - - public function __construct() - { - $this->atLeastPhp7 = \version_compare(PHP_VERSION, '7.0', '>='); - } /** * If this is a standalone strict types declaration, remember it for later. @@ -48,16 +43,14 @@ class StrictTypesPass extends CodeCleanerPass * @throws FatalErrorException if an invalid `strict_types` declaration is found * * @param array $nodes + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { - if (!$this->atLeastPhp7) { - return; // @codeCoverageIgnore - } - $prependStrictTypes = $this->strictTypes; - foreach ($nodes as $key => $node) { + foreach ($nodes as $node) { if ($node instanceof Declare_) { foreach ($node->declares as $declare) { // For PHP Parser 4.x @@ -65,7 +58,7 @@ class StrictTypesPass extends CodeCleanerPass if ($declareKey === 'strict_types') { $value = $declare->value; if (!$value instanceof LNumber || ($value->value !== 0 && $value->value !== 1)) { - throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, \E_ERROR, null, $node->getLine()); } $this->strictTypes = $value->value === 1; diff --git a/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php b/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php index 64ac5be6d..0e9518471 100644 --- a/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -17,6 +17,7 @@ use PhpParser\Node\Name\FullyQualified as FullyQualifiedName; use PhpParser\Node\Stmt\GroupUse; use PhpParser\Node\Stmt\Namespace_; use PhpParser\Node\Stmt\Use_; +use PhpParser\Node\Stmt\UseUse; use PhpParser\NodeTraverser; /** @@ -31,8 +32,8 @@ use PhpParser\NodeTraverser; */ class UseStatementPass extends CodeCleanerPass { - private $aliases = []; - private $lastAliases = []; + private $aliases = []; + private $lastAliases = []; private $lastNamespace = null; /** @@ -43,13 +44,15 @@ class UseStatementPass extends CodeCleanerPass * work like you'd expect. * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { if ($node instanceof Namespace_) { // If this is the same namespace as last namespace, let's do ourselves // a favor and reload all the aliases... - if (\strtolower($node->name) === \strtolower($this->lastNamespace)) { + if (\strtolower($node->name ?: '') === \strtolower($this->lastNamespace ?: '')) { $this->aliases = $this->lastAliases; } } @@ -62,21 +65,23 @@ class UseStatementPass extends CodeCleanerPass * remembered aliases to the code. * * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { + // Store a reference to every "use" statement, because we'll need them in a bit. if ($node instanceof Use_) { - // Store a reference to every "use" statement, because we'll need - // them in a bit. foreach ($node->uses as $use) { $alias = $use->alias ?: \end($use->name->parts); $this->aliases[\strtolower($alias)] = $use->name; } return NodeTraverser::REMOVE_NODE; - } elseif ($node instanceof GroupUse) { - // Expand every "use" statement in the group into a full, standalone - // "use" and store 'em with the others. + } + + // Expand every "use" statement in the group into a full, standalone "use" and store 'em with the others. + if ($node instanceof GroupUse) { foreach ($node->uses as $use) { $alias = $use->alias ?: \end($use->name->parts); $this->aliases[\strtolower($alias)] = Name::concat($node->prefix, $use->name, [ @@ -86,23 +91,32 @@ class UseStatementPass extends CodeCleanerPass } return NodeTraverser::REMOVE_NODE; - } elseif ($node instanceof Namespace_) { - // Start fresh, since we're done with this namespace. + } + + // Start fresh, since we're done with this namespace. + if ($node instanceof Namespace_) { $this->lastNamespace = $node->name; - $this->lastAliases = $this->aliases; - $this->aliases = []; - } else { - foreach ($node as $name => $subNode) { - if ($subNode instanceof Name) { - // Implicitly thunk all aliases. - if ($replacement = $this->findAlias($subNode)) { - $node->$name = $replacement; - } + $this->lastAliases = $this->aliases; + $this->aliases = []; + + return; + } + + // Do nothing with UseUse; this an entry in the list of uses in the use statement. + if ($node instanceof UseUse) { + return; + } + + // For everything else, we'll implicitly thunk all aliases into fully-qualified names. + foreach ($node as $name => $subNode) { + if ($subNode instanceof Name) { + if ($replacement = $this->findAlias($subNode)) { + $node->$name = $replacement; } } - - return $node; } + + return $node; } /** @@ -118,8 +132,8 @@ class UseStatementPass extends CodeCleanerPass foreach ($this->aliases as $alias => $prefix) { if ($that === $alias) { return new FullyQualifiedName($prefix->toString()); - } elseif (\substr($that, 0, \strlen($alias) + 1) === $alias . '\\') { - return new FullyQualifiedName($prefix->toString() . \substr($name, \strlen($alias))); + } elseif (\substr($that, 0, \strlen($alias) + 1) === $alias.'\\') { + return new FullyQualifiedName($prefix->toString().\substr($name, \strlen($alias))); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php index 9578c9a86..e64789617 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,9 +13,7 @@ namespace Psy\CodeCleaner; use PhpParser\Node; use PhpParser\Node\Expr; -use PhpParser\Node\Expr\ClassConstFetch; -use PhpParser\Node\Expr\New_; -use PhpParser\Node\Expr\StaticCall; +use PhpParser\Node\Expr\Ternary; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Do_; @@ -34,17 +32,11 @@ use Psy\Exception\FatalErrorException; */ class ValidClassNamePass extends NamespaceAwarePass { - const CLASS_TYPE = 'class'; + const CLASS_TYPE = 'class'; const INTERFACE_TYPE = 'interface'; - const TRAIT_TYPE = 'trait'; + const TRAIT_TYPE = 'trait'; private $conditionalScopes = 0; - private $atLeastPhp55; - - public function __construct() - { - $this->atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>='); - } /** * Validate class, interface and trait definitions. @@ -54,6 +46,8 @@ class ValidClassNamePass extends NamespaceAwarePass * trait methods. * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -61,51 +55,42 @@ class ValidClassNamePass extends NamespaceAwarePass if (self::isConditional($node)) { $this->conditionalScopes++; - } else { - // @todo add an "else" here which adds a runtime check for instances where we can't tell - // whether a class is being redefined by static analysis alone. - if ($this->conditionalScopes === 0) { - if ($node instanceof Class_) { - $this->validateClassStatement($node); - } elseif ($node instanceof Interface_) { - $this->validateInterfaceStatement($node); - } elseif ($node instanceof Trait_) { - $this->validateTraitStatement($node); - } + + return; + } + + if ($this->conditionalScopes === 0) { + if ($node instanceof Class_) { + $this->validateClassStatement($node); + } elseif ($node instanceof Interface_) { + $this->validateInterfaceStatement($node); + } elseif ($node instanceof Trait_) { + $this->validateTraitStatement($node); } } } /** - * Validate `new` expressions, class constant fetches, and static calls. - * - * @throws FatalErrorException if a class, interface or trait is referenced which does not exist - * @throws FatalErrorException if a class extends something that is not a class - * @throws FatalErrorException if a class implements something that is not an interface - * @throws FatalErrorException if an interface extends something that is not an interface - * @throws FatalErrorException if a class, interface or trait redefines an existing class, interface or trait name - * * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { if (self::isConditional($node)) { $this->conditionalScopes--; - } elseif ($node instanceof New_) { - $this->validateNewExpression($node); - } elseif ($node instanceof ClassConstFetch) { - $this->validateClassConstFetchExpression($node); - } elseif ($node instanceof StaticCall) { - $this->validateStaticCallExpression($node); + + return; } } - private static function isConditional(Node $node) + private static function isConditional(Node $node): bool { return $node instanceof If_ || $node instanceof While_ || $node instanceof Do_ || - $node instanceof Switch_; + $node instanceof Switch_ || + $node instanceof Ternary; } /** @@ -143,50 +128,6 @@ class ValidClassNamePass extends NamespaceAwarePass $this->ensureCanDefine($stmt, self::TRAIT_TYPE); } - /** - * Validate a `new` expression. - * - * @param New_ $stmt - */ - protected function validateNewExpression(New_ $stmt) - { - // if class name is an expression or an anonymous class, give it a pass for now - if (!$stmt->class instanceof Expr && !$stmt->class instanceof Class_) { - $this->ensureClassExists($this->getFullyQualifiedName($stmt->class), $stmt); - } - } - - /** - * Validate a class constant fetch expression's class. - * - * @param ClassConstFetch $stmt - */ - protected function validateClassConstFetchExpression(ClassConstFetch $stmt) - { - // there is no need to check exists for ::class const for php 5.5 or newer - if (\strtolower($stmt->name) === 'class' && $this->atLeastPhp55) { - return; - } - - // if class name is an expression, give it a pass for now - if (!$stmt->class instanceof Expr) { - $this->ensureClassOrInterfaceExists($this->getFullyQualifiedName($stmt->class), $stmt); - } - } - - /** - * Validate a class constant fetch expression's class. - * - * @param StaticCall $stmt - */ - protected function validateStaticCallExpression(StaticCall $stmt) - { - // if class name is an expression, give it a pass for now - if (!$stmt->class instanceof Expr) { - $this->ensureMethodExists($this->getFullyQualifiedName($stmt->class), $stmt->name, $stmt); - } - } - /** * Ensure that no class, interface or trait name collides with a new definition. * @@ -195,8 +136,13 @@ class ValidClassNamePass extends NamespaceAwarePass * @param Stmt $stmt * @param string $scopeType */ - protected function ensureCanDefine(Stmt $stmt, $scopeType = self::CLASS_TYPE) + protected function ensureCanDefine(Stmt $stmt, string $scopeType = self::CLASS_TYPE) { + // Anonymous classes don't have a name, and uniqueness shouldn't be enforced. + if ($stmt->name === null) { + return; + } + $name = $this->getFullyQualifiedName($stmt->name); // check for name collisions @@ -226,7 +172,7 @@ class ValidClassNamePass extends NamespaceAwarePass * @param string $name * @param Stmt $stmt */ - protected function ensureClassExists($name, $stmt) + protected function ensureClassExists(string $name, Stmt $stmt) { if (!$this->classExists($name)) { throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); @@ -241,7 +187,7 @@ class ValidClassNamePass extends NamespaceAwarePass * @param string $name * @param Stmt $stmt */ - protected function ensureClassOrInterfaceExists($name, $stmt) + protected function ensureClassOrInterfaceExists(string $name, Stmt $stmt) { if (!$this->classExists($name) && !$this->interfaceExists($name)) { throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); @@ -256,7 +202,7 @@ class ValidClassNamePass extends NamespaceAwarePass * @param string $name * @param Stmt $stmt */ - protected function ensureClassOrTraitExists($name, $stmt) + protected function ensureClassOrTraitExists(string $name, Stmt $stmt) { if (!$this->classExists($name) && !$this->traitExists($name)) { throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt); @@ -272,7 +218,7 @@ class ValidClassNamePass extends NamespaceAwarePass * @param string $name * @param Stmt $stmt */ - protected function ensureMethodExists($class, $name, $stmt) + protected function ensureMethodExists(string $class, string $name, Stmt $stmt) { $this->ensureClassOrTraitExists($class, $stmt); @@ -304,7 +250,7 @@ class ValidClassNamePass extends NamespaceAwarePass * @param Interface_[] $interfaces * @param Stmt $stmt */ - protected function ensureInterfacesExist($interfaces, $stmt) + protected function ensureInterfacesExist(array $interfaces, Stmt $stmt) { foreach ($interfaces as $interface) { /** @var string $name */ @@ -321,11 +267,13 @@ class ValidClassNamePass extends NamespaceAwarePass * @deprecated No longer used. Scope type should be passed into ensureCanDefine directly. * @codeCoverageIgnore * + * @throws FatalErrorException + * * @param Stmt $stmt * * @return string */ - protected function getScopeType(Stmt $stmt) + protected function getScopeType(Stmt $stmt): string { if ($stmt instanceof Class_) { return self::CLASS_TYPE; @@ -334,6 +282,8 @@ class ValidClassNamePass extends NamespaceAwarePass } elseif ($stmt instanceof Trait_) { return self::TRAIT_TYPE; } + + throw $this->createError('Unsupported statement type', $stmt); } /** @@ -345,7 +295,7 @@ class ValidClassNamePass extends NamespaceAwarePass * * @return bool */ - protected function classExists($name) + protected function classExists(string $name): bool { // Give `self`, `static` and `parent` a pass. This will actually let // some errors through, since we're not checking whether the keyword is @@ -364,7 +314,7 @@ class ValidClassNamePass extends NamespaceAwarePass * * @return bool */ - protected function interfaceExists($name) + protected function interfaceExists(string $name): bool { return \interface_exists($name) || $this->findInScope($name) === self::INTERFACE_TYPE; } @@ -376,7 +326,7 @@ class ValidClassNamePass extends NamespaceAwarePass * * @return bool */ - protected function traitExists($name) + protected function traitExists(string $name): bool { return \trait_exists($name) || $this->findInScope($name) === self::TRAIT_TYPE; } @@ -388,7 +338,7 @@ class ValidClassNamePass extends NamespaceAwarePass * * @return string|null */ - protected function findInScope($name) + protected function findInScope(string $name) { $name = \strtolower($name); if (isset($this->currentScope[$name])) { @@ -404,8 +354,8 @@ class ValidClassNamePass extends NamespaceAwarePass * * @return FatalErrorException */ - protected function createError($msg, $stmt) + protected function createError(string $msg, Stmt $stmt): FatalErrorException { - return new FatalErrorException($msg, 0, E_ERROR, null, $stmt->getLine()); + return new FatalErrorException($msg, 0, \E_ERROR, null, $stmt->getLine()); } } diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php b/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php deleted file mode 100644 index 2d5e3e6d9..000000000 --- a/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php +++ /dev/null @@ -1,90 +0,0 @@ -name->parts) > 1) { - $name = $this->getFullyQualifiedName($node->name); - if (!\defined($name)) { - $msg = \sprintf('Undefined constant %s', $name); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); - } - } elseif ($node instanceof ClassConstFetch) { - $this->validateClassConstFetchExpression($node); - } - } - - /** - * Validate a class constant fetch expression. - * - * @throws FatalErrorException if a class constant is not defined - * - * @param ClassConstFetch $stmt - */ - protected function validateClassConstFetchExpression(ClassConstFetch $stmt) - { - // For PHP Parser 4.x - $constName = $stmt->name instanceof Identifier ? $stmt->name->toString() : $stmt->name; - - // give the `class` pseudo-constant a pass - if ($constName === 'class') { - return; - } - - // if class name is an expression, give it a pass for now - if (!$stmt->class instanceof Expr) { - $className = $this->getFullyQualifiedName($stmt->class); - - // if the class doesn't exist, don't throw an exception… it might be - // defined in the same line it's used or something stupid like that. - if (\class_exists($className) || \interface_exists($className)) { - $refl = new \ReflectionClass($className); - if (!$refl->hasConstant($constName)) { - $constType = \class_exists($className) ? 'Class' : 'Interface'; - $msg = \sprintf('%s constant \'%s::%s\' not found', $constType, $className, $constName); - throw new FatalErrorException($msg, 0, E_ERROR, null, $stmt->getLine()); - } - } - } - } -} diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php b/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php index a079e26c9..1a27aba91 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -35,6 +35,9 @@ class ValidConstructorPass extends CodeCleanerPass { private $namespace; + /** + * @return Node[]|null Array of nodes + */ public function beforeTraverse(array $nodes) { $this->namespace = []; @@ -47,6 +50,8 @@ class ValidConstructorPass extends CodeCleanerPass * @throws FatalErrorException the constructor function has a return type * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -94,7 +99,7 @@ class ValidConstructorPass extends CodeCleanerPass \implode('\\', \array_merge($this->namespace, (array) $className)), $constructor->name ); - throw new FatalErrorException($msg, 0, E_ERROR, null, $classNode->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $classNode->getLine()); } if (\method_exists($constructor, 'getReturnType') && $constructor->getReturnType()) { @@ -106,7 +111,7 @@ class ValidConstructorPass extends CodeCleanerPass \implode('\\', \array_merge($this->namespace, (array) $className)), $constructor->name ); - throw new FatalErrorException($msg, 0, E_ERROR, null, $classNode->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $classNode->getLine()); } } } diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php b/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php index dd1e05763..4fb10043f 100644 --- a/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php +++ b/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -12,9 +12,6 @@ namespace Psy\CodeCleaner; use PhpParser\Node; -use PhpParser\Node\Expr; -use PhpParser\Node\Expr\FuncCall; -use PhpParser\Node\Expr\Variable; use PhpParser\Node\Stmt\Do_; use PhpParser\Node\Stmt\Function_; use PhpParser\Node\Stmt\If_; @@ -35,7 +32,11 @@ class ValidFunctionNamePass extends NamespaceAwarePass /** * Store newly defined function names on the way in, to allow recursion. * + * @throws FatalErrorException if a function is redefined in a non-conditional scope + * * @param Node $node + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -52,7 +53,7 @@ class ValidFunctionNamePass extends NamespaceAwarePass if (\function_exists($name) || isset($this->currentScope[\strtolower($name)])) { $msg = \sprintf('Cannot redeclare %s()', $name); - throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine()); + throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine()); } } @@ -61,29 +62,14 @@ class ValidFunctionNamePass extends NamespaceAwarePass } /** - * Validate that function calls will succeed. - * - * @throws FatalErrorException if a function is redefined - * @throws FatalErrorException if the function name is a string (not an expression) and is not defined - * * @param Node $node + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { if (self::isConditional($node)) { $this->conditionalScopes--; - } elseif ($node instanceof FuncCall) { - // if function name is an expression or a variable, give it a pass for now. - $name = $node->name; - if (!$name instanceof Expr && !$name instanceof Variable) { - $shortName = \implode('\\', $name->parts); - $fullName = $this->getFullyQualifiedName($name); - $inScope = isset($this->currentScope[\strtolower($fullName)]); - if (!$inScope && !\function_exists($shortName) && !\function_exists($fullName)) { - $message = \sprintf('Call to undefined function %s()', $name); - throw new FatalErrorException($message, 0, E_ERROR, null, $node->getLine()); - } - } } } diff --git a/vendor/psy/psysh/src/Command/BufferCommand.php b/vendor/psy/psysh/src/Command/BufferCommand.php index 169ea7a40..dc7d13387 100644 --- a/vendor/psy/psysh/src/Command/BufferCommand.php +++ b/vendor/psy/psysh/src/Command/BufferCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\Command; +use Psy\Exception\RuntimeException; use Psy\Output\ShellOutput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; @@ -46,12 +47,19 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { - $buf = $this->getApplication()->getCodeBuffer(); + $app = $this->getApplication(); + if (!$app instanceof \Psy\Shell) { + throw new RuntimeException('Buffer command requires a \Psy\Shell application'); + } + + $buf = $app->getCodeBuffer(); if ($input->getOption('clear')) { - $this->getApplication()->resetCodeBuffer(); + $app->resetCodeBuffer(); $output->writeln($this->formatLines($buf, 'urgent'), ShellOutput::NUMBER_LINES); } else { $output->writeln($this->formatLines($buf), ShellOutput::NUMBER_LINES); @@ -68,7 +76,7 @@ HELP * * @return array Formatted strings */ - protected function formatLines(array $lines, $type = 'return') + protected function formatLines(array $lines, string $type = 'return'): array { $template = \sprintf('<%s>%%s', $type, $type); diff --git a/vendor/psy/psysh/src/Command/ClearCommand.php b/vendor/psy/psysh/src/Command/ClearCommand.php index eb138576d..d0f9f1e5d 100644 --- a/vendor/psy/psysh/src/Command/ClearCommand.php +++ b/vendor/psy/psysh/src/Command/ClearCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -41,6 +41,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { diff --git a/vendor/psy/psysh/src/Command/Command.php b/vendor/psy/psysh/src/Command/Command.php index be013a1b9..ec219ecb3 100644 --- a/vendor/psy/psysh/src/Command/Command.php +++ b/vendor/psy/psysh/src/Command/Command.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -27,7 +27,7 @@ abstract class Command extends BaseCommand /** * Sets the application instance for this command. * - * @param Application $application An Application instance + * @param Application|null $application An Application instance * * @api */ @@ -43,11 +43,11 @@ abstract class Command extends BaseCommand /** * {@inheritdoc} */ - public function asText() + public function asText(): string { $messages = [ 'Usage:', - ' ' . $this->getSynopsis(), + ' '.$this->getSynopsis(), '', ]; @@ -65,7 +65,7 @@ abstract class Command extends BaseCommand if ($help = $this->getProcessedHelp()) { $messages[] = 'Help:'; - $messages[] = ' ' . \str_replace("\n", "\n ", $help) . "\n"; + $messages[] = ' '.\str_replace("\n", "\n ", $help)."\n"; } return \implode("\n", $messages); @@ -74,7 +74,7 @@ abstract class Command extends BaseCommand /** * {@inheritdoc} */ - private function getArguments() + private function getArguments(): array { $hidden = $this->getHiddenArguments(); @@ -88,7 +88,7 @@ abstract class Command extends BaseCommand * * @return array */ - protected function getHiddenArguments() + protected function getHiddenArguments(): array { return ['command']; } @@ -96,7 +96,7 @@ abstract class Command extends BaseCommand /** * {@inheritdoc} */ - private function getOptions() + private function getOptions(): array { $hidden = $this->getHiddenOptions(); @@ -110,7 +110,7 @@ abstract class Command extends BaseCommand * * @return array */ - protected function getHiddenOptions() + protected function getHiddenOptions(): array { return ['verbose']; } @@ -120,9 +120,9 @@ abstract class Command extends BaseCommand * * @return string */ - private function aliasesAsText() + private function aliasesAsText(): string { - return 'Aliases: ' . \implode(', ', $this->getAliases()) . '' . PHP_EOL; + return 'Aliases: '.\implode(', ', $this->getAliases()).''.\PHP_EOL; } /** @@ -130,7 +130,7 @@ abstract class Command extends BaseCommand * * @return string */ - private function argumentsAsText() + private function argumentsAsText(): string { $max = $this->getMaxWidth(); $messages = []; @@ -145,15 +145,15 @@ abstract class Command extends BaseCommand $default = ''; } - $description = \str_replace("\n", "\n" . \str_pad('', $max + 2, ' '), $argument->getDescription()); + $description = \str_replace("\n", "\n".\str_pad('', $max + 2, ' '), $argument->getDescription()); - $messages[] = \sprintf(" %-${max}s %s%s", $argument->getName(), $description, $default); + $messages[] = \sprintf(" %-{$max}s %s%s", $argument->getName(), $description, $default); } $messages[] = ''; } - return \implode(PHP_EOL, $messages); + return \implode(\PHP_EOL, $messages); } /** @@ -161,7 +161,7 @@ abstract class Command extends BaseCommand * * @return string */ - private function optionsAsText() + private function optionsAsText(): string { $max = $this->getMaxWidth(); $messages = []; @@ -178,12 +178,12 @@ abstract class Command extends BaseCommand } $multiple = $option->isArray() ? ' (multiple values allowed)' : ''; - $description = \str_replace("\n", "\n" . \str_pad('', $max + 2, ' '), $option->getDescription()); + $description = \str_replace("\n", "\n".\str_pad('', $max + 2, ' '), $option->getDescription()); $optionMax = $max - \strlen($option->getName()) - 2; $messages[] = \sprintf( - " %s %-${optionMax}s%s%s%s", - '--' . $option->getName(), + " %s %-{$optionMax}s%s%s%s", + '--'.$option->getName(), $option->getShortcut() ? \sprintf('(-%s) ', $option->getShortcut()) : '', $description, $default, @@ -194,7 +194,7 @@ abstract class Command extends BaseCommand $messages[] = ''; } - return \implode(PHP_EOL, $messages); + return \implode(\PHP_EOL, $messages); } /** @@ -202,7 +202,7 @@ abstract class Command extends BaseCommand * * @return int */ - private function getMaxWidth() + private function getMaxWidth(): int { $max = 0; @@ -229,10 +229,10 @@ abstract class Command extends BaseCommand * * @return string */ - private function formatDefaultValue($default) + private function formatDefaultValue($default): string { if (\is_array($default) && $default === \array_values($default)) { - return \sprintf("array('%s')", \implode("', '", $default)); + return \sprintf("['%s']", \implode("', '", $default)); } return \str_replace("\n", '', \var_export($default, true)); @@ -247,15 +247,22 @@ abstract class Command extends BaseCommand */ protected function getTable(OutputInterface $output) { - if (!\class_exists('Symfony\Component\Console\Helper\Table')) { + if (!\class_exists(Table::class)) { return $this->getTableHelper(); } $style = new TableStyle(); - $style - ->setVerticalBorderChar(' ') - ->setHorizontalBorderChar('') - ->setCrossingChar(''); + + // Symfony 4.1 deprecated single-argument style setters. + if (\method_exists($style, 'setVerticalBorderChars')) { + $style->setVerticalBorderChars(' '); + $style->setHorizontalBorderChars(''); + $style->setCrossingChars('', '', '', '', '', '', '', '', ''); + } else { + $style->setVerticalBorderChar(' '); + $style->setHorizontalBorderChar(''); + $style->setCrossingChar(''); + } $table = new Table($output); @@ -269,7 +276,7 @@ abstract class Command extends BaseCommand * * @return TableHelper */ - protected function getTableHelper() + protected function getTableHelper(): TableHelper { $table = $this->getApplication()->getHelperSet()->get('table'); diff --git a/vendor/psy/psysh/src/Command/DocCommand.php b/vendor/psy/psysh/src/Command/DocCommand.php index 605917ae5..1ece5da74 100644 --- a/vendor/psy/psysh/src/Command/DocCommand.php +++ b/vendor/psy/psysh/src/Command/DocCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,8 +14,12 @@ namespace Psy\Command; use Psy\Formatter\DocblockFormatter; use Psy\Formatter\SignatureFormatter; use Psy\Input\CodeArgument; +use Psy\Output\ShellOutput; +use Psy\Reflection\ReflectionClassConstant; +use Psy\Reflection\ReflectionConstant_; use Psy\Reflection\ReflectionLanguageConstruct; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -23,6 +27,8 @@ use Symfony\Component\Console\Output\OutputInterface; */ class DocCommand extends ReflectingCommand { + const INHERIT_DOC_TAG = '{@inheritdoc}'; + /** * {@inheritdoc} */ @@ -32,6 +38,7 @@ class DocCommand extends ReflectingCommand ->setName('doc') ->setAliases(['rtfm', 'man']) ->setDefinition([ + new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show documentation for superclasses as well as the current class.'), new CodeArgument('target', CodeArgument::REQUIRED, 'Function, class, instance, constant, method or property to document.'), ]) ->setDescription('Read the documentation for an object, class, constant, method or property.') @@ -53,6 +60,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -67,18 +76,51 @@ HELP $db = $this->getApplication()->getManualDb(); - $output->page(function ($output) use ($reflector, $doc, $db) { - $output->writeln(SignatureFormatter::format($reflector)); - $output->writeln(''); + if ($output instanceof ShellOutput) { + $output->startPaging(); + } - if (empty($doc) && !$db) { - $output->writeln('PHP manual not found'); - $output->writeln(' To document core PHP functionality, download the PHP reference manual:'); - $output->writeln(' https://github.com/bobthecow/psysh/wiki/PHP-manual'); - } else { - $output->writeln($doc); + // Maybe include the declaring class + if ($reflector instanceof \ReflectionMethod || $reflector instanceof \ReflectionProperty) { + $output->writeln(SignatureFormatter::format($reflector->getDeclaringClass())); + } + + $output->writeln(SignatureFormatter::format($reflector)); + $output->writeln(''); + + if (empty($doc) && !$db) { + $output->writeln('PHP manual not found'); + $output->writeln(' To document core PHP functionality, download the PHP reference manual:'); + $output->writeln(' https://github.com/bobthecow/psysh/wiki/PHP-manual'); + } else { + $output->writeln($doc); + } + + // Implicit --all if the original docblock has an {@inheritdoc} tag. + if ($input->getOption('all') || \stripos($doc, self::INHERIT_DOC_TAG) !== false) { + $parent = $reflector; + foreach ($this->getParentReflectors($reflector) as $parent) { + $output->writeln(''); + $output->writeln('---'); + $output->writeln(''); + + // Maybe include the declaring class + if ($parent instanceof \ReflectionMethod || $parent instanceof \ReflectionProperty) { + $output->writeln(SignatureFormatter::format($parent->getDeclaringClass())); + } + + $output->writeln(SignatureFormatter::format($parent)); + $output->writeln(''); + + if ($doc = $this->getManualDoc($parent) ?: DocblockFormatter::format($parent)) { + $output->writeln($doc); + } } - }); + } + + if ($output instanceof ShellOutput) { + $output->stopPaging(); + } // Set some magic local variables $this->setCommandScopeVariables($reflector); @@ -89,29 +131,29 @@ HELP private function getManualDoc($reflector) { switch (\get_class($reflector)) { - case 'ReflectionClass': - case 'ReflectionObject': - case 'ReflectionFunction': + case \ReflectionClass::class: + case \ReflectionObject::class: + case \ReflectionFunction::class: $id = $reflector->name; break; - case 'ReflectionMethod': - $id = $reflector->class . '::' . $reflector->name; + case \ReflectionMethod::class: + $id = $reflector->class.'::'.$reflector->name; break; - case 'ReflectionProperty': - $id = $reflector->class . '::$' . $reflector->name; + case \ReflectionProperty::class: + $id = $reflector->class.'::$'.$reflector->name; break; - case 'ReflectionClassConstant': - case 'Psy\Reflection\ReflectionClassConstant': + case \ReflectionClassConstant::class: + case ReflectionClassConstant::class: // @todo this is going to collide with ReflectionMethod ids // someday... start running the query by id + type if the DB // supports it. - $id = $reflector->class . '::' . $reflector->name; + $id = $reflector->class.'::'.$reflector->name; break; - case 'Psy\Reflection\ReflectionConstant_': + case ReflectionConstant_::class: $id = $reflector->name; break; @@ -122,12 +164,91 @@ HELP return $this->getManualDocById($id); } + /** + * Get all all parent Reflectors for a given Reflector. + * + * For example, passing a Class, Object or TraitReflector will yield all + * traits and parent classes. Passing a Method or PropertyReflector will + * yield Reflectors for the same-named method or property on all traits and + * parent classes. + * + * @return \Generator a whole bunch of \Reflector instances + */ + private function getParentReflectors($reflector): \Generator + { + $seenClasses = []; + + switch (\get_class($reflector)) { + case \ReflectionClass::class: + case \ReflectionObject::class: + foreach ($reflector->getTraits() as $trait) { + if (!\in_array($trait->getName(), $seenClasses)) { + $seenClasses[] = $trait->getName(); + yield $trait; + } + } + + foreach ($reflector->getInterfaces() as $interface) { + if (!\in_array($interface->getName(), $seenClasses)) { + $seenClasses[] = $interface->getName(); + yield $interface; + } + } + + while ($reflector = $reflector->getParentClass()) { + yield $reflector; + + foreach ($reflector->getTraits() as $trait) { + if (!\in_array($trait->getName(), $seenClasses)) { + $seenClasses[] = $trait->getName(); + yield $trait; + } + } + + foreach ($reflector->getInterfaces() as $interface) { + if (!\in_array($interface->getName(), $seenClasses)) { + $seenClasses[] = $interface->getName(); + yield $interface; + } + } + } + + return; + + case \ReflectionMethod::class: + foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) { + if ($parent->hasMethod($reflector->getName())) { + $parentMethod = $parent->getMethod($reflector->getName()); + if (!\in_array($parentMethod->getDeclaringClass()->getName(), $seenClasses)) { + $seenClasses[] = $parentMethod->getDeclaringClass()->getName(); + yield $parentMethod; + } + } + } + + return; + + case \ReflectionProperty::class: + foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) { + if ($parent->hasProperty($reflector->getName())) { + $parentProperty = $parent->getProperty($reflector->getName()); + if (!\in_array($parentProperty->getDeclaringClass()->getName(), $seenClasses)) { + $seenClasses[] = $parentProperty->getDeclaringClass()->getName(); + yield $parentProperty; + } + } + } + break; + } + } + private function getManualDocById($id) { if ($db = $this->getApplication()->getManualDb()) { - return $db - ->query(\sprintf('SELECT doc FROM php_manual WHERE id = %s', $db->quote($id))) - ->fetchColumn(0); + $result = $db->query(\sprintf('SELECT doc FROM php_manual WHERE id = %s', $db->quote($id))); + if ($result !== false) { + return $result->fetchColumn(0); + } } } } diff --git a/vendor/psy/psysh/src/Command/DumpCommand.php b/vendor/psy/psysh/src/Command/DumpCommand.php index da7e9deee..4b960d369 100644 --- a/vendor/psy/psysh/src/Command/DumpCommand.php +++ b/vendor/psy/psysh/src/Command/DumpCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -66,10 +66,12 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { - $depth = $input->getOption('depth'); + $depth = $input->getOption('depth'); $target = $this->resolveCode($input->getArgument('target')); $output->page($this->presenter->present($target, $depth, $input->getOption('all') ? Presenter::VERBOSE : 0)); @@ -87,9 +89,9 @@ HELP * * @return mixed */ - protected function resolveTarget($name) + protected function resolveTarget(string $name) { - @\trigger_error('`resolveTarget` is deprecated; use `resolveCode` instead.', E_USER_DEPRECATED); + @\trigger_error('`resolveTarget` is deprecated; use `resolveCode` instead.', \E_USER_DEPRECATED); return $this->resolveCode($name); } diff --git a/vendor/psy/psysh/src/Command/EditCommand.php b/vendor/psy/psysh/src/Command/EditCommand.php index 7bd2007de..e83202a05 100644 --- a/vendor/psy/psysh/src/Command/EditCommand.php +++ b/vendor/psy/psysh/src/Command/EditCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -74,6 +74,8 @@ class EditCommand extends Command implements ContextAware * @param InputInterface $input * @param OutputInterface $output * + * @return int 0 if everything went fine, or an exit code + * * @throws \InvalidArgumentException when both exec and no-exec flags are given or if a given variable is not found in the current context * @throws \UnexpectedValueException if file_get_contents on the edited file returns false instead of a string */ @@ -115,7 +117,7 @@ class EditCommand extends Command implements ContextAware * * @return bool */ - private function shouldExecuteFile($execOption, $noExecOption, $filePath) + private function shouldExecuteFile(bool $execOption, bool $noExecOption, string $filePath = null): bool { if ($execOption) { return true; @@ -136,11 +138,11 @@ class EditCommand extends Command implements ContextAware * * @throws \InvalidArgumentException If the variable is not found in the current context */ - private function extractFilePath($fileArgument) + private function extractFilePath(string $fileArgument = null) { // If the file argument was a variable, get it from the context if ($fileArgument !== null && - \strlen($fileArgument) > 0 && + $fileArgument !== '' && $fileArgument[0] === '$') { $fileArgument = $this->context->get(\preg_replace('/^\$/', '', $fileArgument)); } @@ -150,18 +152,19 @@ class EditCommand extends Command implements ContextAware /** * @param string $filePath - * @param string $shouldRemoveFile + * @param bool $shouldRemoveFile * * @return string * * @throws \UnexpectedValueException if file_get_contents on $filePath returns false instead of a string */ - private function editFile($filePath, $shouldRemoveFile) + private function editFile(string $filePath, bool $shouldRemoveFile): string { $escapedFilePath = \escapeshellarg($filePath); + $editor = (isset($_SERVER['EDITOR']) && $_SERVER['EDITOR']) ? $_SERVER['EDITOR'] : 'nano'; $pipes = []; - $proc = \proc_open((\getenv('EDITOR') ?: 'nano') . " {$escapedFilePath}", [STDIN, STDOUT, STDERR], $pipes); + $proc = \proc_open("{$editor} {$escapedFilePath}", [\STDIN, \STDOUT, \STDERR], $pipes); \proc_close($proc); $editedContent = @\file_get_contents($filePath); diff --git a/vendor/psy/psysh/src/Command/ExitCommand.php b/vendor/psy/psysh/src/Command/ExitCommand.php index 433988612..266acf48c 100644 --- a/vendor/psy/psysh/src/Command/ExitCommand.php +++ b/vendor/psy/psysh/src/Command/ExitCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -44,6 +44,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { diff --git a/vendor/psy/psysh/src/Command/HelpCommand.php b/vendor/psy/psysh/src/Command/HelpCommand.php index 8ad3e8275..7250c88bb 100644 --- a/vendor/psy/psysh/src/Command/HelpCommand.php +++ b/vendor/psy/psysh/src/Command/HelpCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\Command; +use Psy\Output\ShellOutput; use Symfony\Component\Console\Helper\TableHelper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -45,13 +46,15 @@ class HelpCommand extends Command * * @param Command $command */ - public function setCommand($command) + public function setCommand(Command $command) { $this->command = $command; } /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -86,13 +89,19 @@ class HelpCommand extends Command ]); } - $output->startPaging(); + if ($output instanceof ShellOutput) { + $output->startPaging(); + } + if ($table instanceof TableHelper) { $table->render($output); } else { $table->render(); } - $output->stopPaging(); + + if ($output instanceof ShellOutput) { + $output->stopPaging(); + } } return 0; diff --git a/vendor/psy/psysh/src/Command/HistoryCommand.php b/vendor/psy/psysh/src/Command/HistoryCommand.php index bd6d245c4..087c25498 100644 --- a/vendor/psy/psysh/src/Command/HistoryCommand.php +++ b/vendor/psy/psysh/src/Command/HistoryCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -60,19 +60,19 @@ class HistoryCommand extends Command ->setName('history') ->setAliases(['hist']) ->setDefinition([ - new InputOption('show', 's', InputOption::VALUE_REQUIRED, 'Show the given range of lines.'), - new InputOption('head', 'H', InputOption::VALUE_REQUIRED, 'Display the first N items.'), - new InputOption('tail', 'T', InputOption::VALUE_REQUIRED, 'Display the last N items.'), + new InputOption('show', 's', InputOption::VALUE_REQUIRED, 'Show the given range of lines.'), + new InputOption('head', 'H', InputOption::VALUE_REQUIRED, 'Display the first N items.'), + new InputOption('tail', 'T', InputOption::VALUE_REQUIRED, 'Display the last N items.'), $grep, $insensitive, $invert, - new InputOption('no-numbers', 'N', InputOption::VALUE_NONE, 'Omit line numbers.'), + new InputOption('no-numbers', 'N', InputOption::VALUE_NONE, 'Omit line numbers.'), - new InputOption('save', '', InputOption::VALUE_REQUIRED, 'Save history to a file.'), - new InputOption('replay', '', InputOption::VALUE_NONE, 'Replay.'), - new InputOption('clear', '', InputOption::VALUE_NONE, 'Clear the history.'), + new InputOption('save', '', InputOption::VALUE_REQUIRED, 'Save history to a file.'), + new InputOption('replay', '', InputOption::VALUE_NONE, 'Replay.'), + new InputOption('clear', '', InputOption::VALUE_NONE, 'Clear the history.'), ]) ->setDescription('Show the Psy Shell history.') ->setHelp( @@ -90,6 +90,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -105,14 +107,14 @@ HELP $this->filter->bind($input); if ($this->filter->hasFilter()) { - $matches = []; + $matches = []; $highlighted = []; foreach ($history as $i => $line) { if ($this->filter->match($line, $matches)) { if (isset($matches[0])) { $chunks = \explode($matches[0], $history[$i]); $chunks = \array_map([__CLASS__, 'escape'], $chunks); - $glue = \sprintf('%s', self::escape($matches[0])); + $glue = \sprintf('%s', self::escape($matches[0])); $highlighted[$i] = \implode($glue, $chunks); } @@ -124,7 +126,7 @@ HELP if ($save = $input->getOption('save')) { $output->writeln(\sprintf('Saving history in %s...', $save)); - \file_put_contents($save, \implode(PHP_EOL, $history) . PHP_EOL); + \file_put_contents($save, \implode(\PHP_EOL, $history).\PHP_EOL); $output->writeln('History saved.'); } elseif ($input->getOption('replay')) { if (!($input->getOption('show') || $input->getOption('head') || $input->getOption('tail'))) { @@ -156,7 +158,7 @@ HELP * * @return array [ start, end ] */ - private function extractRange($range) + private function extractRange(string $range): array { if (\preg_match('/^\d+$/', $range)) { return [$range, $range + 1]; @@ -164,25 +166,25 @@ HELP $matches = []; if ($range !== '..' && \preg_match('/^(\d*)\.\.(\d*)$/', $range, $matches)) { - $start = $matches[1] ? \intval($matches[1]) : 0; - $end = $matches[2] ? \intval($matches[2]) + 1 : PHP_INT_MAX; + $start = $matches[1] ? (int) $matches[1] : 0; + $end = $matches[2] ? (int) $matches[2] + 1 : \PHP_INT_MAX; return [$start, $end]; } - throw new \InvalidArgumentException('Unexpected range: ' . $range); + throw new \InvalidArgumentException('Unexpected range: '.$range); } /** * Retrieve a slice of the readline history. * - * @param string $show - * @param string $head - * @param string $tail + * @param string|null $show + * @param string|null $head + * @param string|null $tail * - * @return array A slilce of history + * @return array A slice of history */ - private function getHistorySlice($show, $head, $tail) + private function getHistorySlice($show, $head, $tail): array { $history = $this->readline->listHistory(); @@ -197,15 +199,15 @@ HELP throw new \InvalidArgumentException('Please specify an integer argument for --head'); } - $start = 0; - $length = \intval($head); + $start = 0; + $length = (int) $head; } elseif ($tail) { if (!\preg_match('/^\d+$/', $tail)) { throw new \InvalidArgumentException('Please specify an integer argument for --tail'); } - $start = \count($history) - $tail; - $length = \intval($tail) + 1; + $start = \count($history) - $tail; + $length = (int) $tail + 1; } else { return $history; } @@ -229,7 +231,7 @@ HELP } if ($count > 1) { - throw new \InvalidArgumentException('Please specify only one of --' . \implode(', --', $options)); + throw new \InvalidArgumentException('Please specify only one of --'.\implode(', --', $options)); } } @@ -241,7 +243,7 @@ HELP $this->readline->clearHistory(); } - public static function escape($string) + public static function escape(string $string): string { return OutputFormatter::escape($string); } diff --git a/vendor/psy/psysh/src/Command/ListCommand.php b/vendor/psy/psysh/src/Command/ListCommand.php index fd938a126..c5dd0d91a 100644 --- a/vendor/psy/psysh/src/Command/ListCommand.php +++ b/vendor/psy/psysh/src/Command/ListCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -22,6 +22,7 @@ use Psy\Command\ListCommand\VariableEnumerator; use Psy\Exception\RuntimeException; use Psy\Input\CodeArgument; use Psy\Input\FilterOptions; +use Psy\Output\ShellOutput; use Psy\VarDumper\Presenter; use Psy\VarDumper\PresenterAware; use Symfony\Component\Console\Formatter\OutputFormatter; @@ -57,33 +58,33 @@ class ListCommand extends ReflectingCommand implements PresenterAware $this ->setName('ls') - ->setAliases(['list', 'dir']) + ->setAliases(['dir']) ->setDefinition([ new CodeArgument('target', CodeArgument::OPTIONAL, 'A target class or object to list.'), - new InputOption('vars', '', InputOption::VALUE_NONE, 'Display variables.'), - new InputOption('constants', 'c', InputOption::VALUE_NONE, 'Display defined constants.'), - new InputOption('functions', 'f', InputOption::VALUE_NONE, 'Display defined functions.'), - new InputOption('classes', 'k', InputOption::VALUE_NONE, 'Display declared classes.'), - new InputOption('interfaces', 'I', InputOption::VALUE_NONE, 'Display declared interfaces.'), - new InputOption('traits', 't', InputOption::VALUE_NONE, 'Display declared traits.'), + new InputOption('vars', '', InputOption::VALUE_NONE, 'Display variables.'), + new InputOption('constants', 'c', InputOption::VALUE_NONE, 'Display defined constants.'), + new InputOption('functions', 'f', InputOption::VALUE_NONE, 'Display defined functions.'), + new InputOption('classes', 'k', InputOption::VALUE_NONE, 'Display declared classes.'), + new InputOption('interfaces', 'I', InputOption::VALUE_NONE, 'Display declared interfaces.'), + new InputOption('traits', 't', InputOption::VALUE_NONE, 'Display declared traits.'), - new InputOption('no-inherit', '', InputOption::VALUE_NONE, 'Exclude inherited methods, properties and constants.'), + new InputOption('no-inherit', '', InputOption::VALUE_NONE, 'Exclude inherited methods, properties and constants.'), - new InputOption('properties', 'p', InputOption::VALUE_NONE, 'Display class or object properties (public properties by default).'), - new InputOption('methods', 'm', InputOption::VALUE_NONE, 'Display class or object methods (public methods by default).'), + new InputOption('properties', 'p', InputOption::VALUE_NONE, 'Display class or object properties (public properties by default).'), + new InputOption('methods', 'm', InputOption::VALUE_NONE, 'Display class or object methods (public methods by default).'), $grep, $insensitive, $invert, - new InputOption('globals', 'g', InputOption::VALUE_NONE, 'Include global variables.'), - new InputOption('internal', 'n', InputOption::VALUE_NONE, 'Limit to internal functions and classes.'), - new InputOption('user', 'u', InputOption::VALUE_NONE, 'Limit to user-defined constants, functions and classes.'), - new InputOption('category', 'C', InputOption::VALUE_REQUIRED, 'Limit to constants in a specific category (e.g. "date").'), + new InputOption('globals', 'g', InputOption::VALUE_NONE, 'Include global variables.'), + new InputOption('internal', 'n', InputOption::VALUE_NONE, 'Limit to internal functions and classes.'), + new InputOption('user', 'u', InputOption::VALUE_NONE, 'Limit to user-defined constants, functions and classes.'), + new InputOption('category', 'C', InputOption::VALUE_REQUIRED, 'Limit to constants in a specific category (e.g. "date").'), - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Include private and protected methods and properties.'), - new InputOption('long', 'l', InputOption::VALUE_NONE, 'List in long format: includes class names and method signatures.'), + new InputOption('all', 'a', InputOption::VALUE_NONE, 'Include private and protected methods and properties.'), + new InputOption('long', 'l', InputOption::VALUE_NONE, 'List in long format: includes class names and method signatures.'), ]) ->setDescription('List local, instance or class variables, methods and constants.') ->setHelp( @@ -111,6 +112,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -126,7 +129,7 @@ HELP } // @todo something cleaner than this :-/ - if ($input->getOption('long')) { + if ($output instanceof ShellOutput && $input->getOption('long')) { $output->startPaging(); } @@ -134,7 +137,7 @@ HELP $this->$method($output, $enumerator->enumerate($input, $reflector, $target)); } - if ($input->getOption('long')) { + if ($output instanceof ShellOutput && $input->getOption('long')) { $output->stopPaging(); } @@ -171,11 +174,11 @@ HELP * Write the list items to $output. * * @param OutputInterface $output - * @param null|array $result List of enumerated items + * @param array $result List of enumerated items */ - protected function write(OutputInterface $output, array $result = null) + protected function write(OutputInterface $output, array $result) { - if ($result === null) { + if (\count($result) === 0) { return; } @@ -191,11 +194,11 @@ HELP * Items are listed one per line, and include the item signature. * * @param OutputInterface $output - * @param null|array $result List of enumerated items + * @param array $result List of enumerated items */ - protected function writeLong(OutputInterface $output, array $result = null) + protected function writeLong(OutputInterface $output, array $result) { - if ($result === null) { + if (\count($result) === 0) { return; } @@ -225,7 +228,7 @@ HELP * * @return string */ - private function formatItemName($item) + private function formatItemName(array $item): string { return \sprintf('<%s>%s', $item['style'], OutputFormatter::escape($item['name']), $item['style']); } @@ -243,7 +246,7 @@ HELP // if no target is passed, there can be no properties or methods foreach (['properties', 'methods', 'no-inherit'] as $option) { if ($input->getOption($option)) { - throw new RuntimeException('--' . $option . ' does not make sense without a specified target'); + throw new RuntimeException('--'.$option.' does not make sense without a specified target'); } } @@ -257,22 +260,23 @@ HELP $input->setOption('vars', true); } else { // if a target is passed, classes, functions, etc don't make sense - foreach (['vars', 'globals', 'functions', 'classes', 'interfaces', 'traits'] as $option) { + foreach (['vars', 'globals'] as $option) { if ($input->getOption($option)) { - throw new RuntimeException('--' . $option . ' does not make sense with a specified target'); + throw new RuntimeException('--'.$option.' does not make sense with a specified target'); } } - foreach (['constants', 'properties', 'methods'] as $option) { + // @todo ensure that 'functions', 'classes', 'interfaces', 'traits' only accept namespace target? + foreach (['constants', 'properties', 'methods', 'functions', 'classes', 'interfaces', 'traits'] as $option) { if ($input->getOption($option)) { return; } } // default to --constants --properties --methods if no other options are passed - $input->setOption('constants', true); + $input->setOption('constants', true); $input->setOption('properties', true); - $input->setOption('methods', true); + $input->setOption('methods', true); } } } diff --git a/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php index a1d82ead6..a63448811 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -22,30 +22,29 @@ class ClassConstantEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { // only list constants when a Reflector is present. - if ($reflector === null) { - return; + return []; } // We can only list constants on actual class (or object) reflectors. if (!$reflector instanceof \ReflectionClass) { // @todo handle ReflectionExtension as well - return; + return []; } // only list constants if we are specifically asked if (!$input->getOption('constants')) { - return; + return []; } $noInherit = $input->getOption('no-inherit'); $constants = $this->prepareConstants($this->getConstants($reflector, $noInherit)); if (empty($constants)) { - return; + return []; } $ret = []; @@ -62,7 +61,7 @@ class ClassConstantEnumerator extends Enumerator * * @return array */ - protected function getConstants(\Reflector $reflector, $noInherit = false) + protected function getConstants(\Reflector $reflector, bool $noInherit = false): array { $className = $reflector->getName(); @@ -77,7 +76,7 @@ class ClassConstantEnumerator extends Enumerator $constants[$name] = $constReflector; } - \ksort($constants, SORT_NATURAL | SORT_FLAG_CASE); + \ksort($constants, \SORT_NATURAL | \SORT_FLAG_CASE); return $constants; } @@ -89,7 +88,7 @@ class ClassConstantEnumerator extends Enumerator * * @return array */ - protected function prepareConstants(array $constants) + protected function prepareConstants(array $constants): array { // My kingdom for a generator. $ret = []; @@ -114,12 +113,10 @@ class ClassConstantEnumerator extends Enumerator * * @return string */ - protected function getKindLabel(\ReflectionClass $reflector) + protected function getKindLabel(\ReflectionClass $reflector): string { if ($reflector->isInterface()) { return 'Interface Constants'; - } elseif (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) { - return 'Trait Constants'; } else { return 'Class Constants'; } diff --git a/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php index 8ab6d7a95..c6a7c252b 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\Command\ListCommand; +use Psy\Reflection\ReflectionNamespace; use Symfony\Component\Console\Input\InputInterface; /** @@ -21,37 +22,31 @@ class ClassEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { - // only list classes when no Reflector is present. - // - // @todo make a NamespaceReflector and pass that in for commands like: - // - // ls --classes Foo - // - // ... for listing classes in the Foo namespace - - if ($reflector !== null || $target !== null) { - return; + // if we have a reflector, ensure that it's a namespace reflector + if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) { + return []; } - $user = $input->getOption('user'); $internal = $input->getOption('internal'); + $user = $input->getOption('user'); + $prefix = $reflector === null ? null : \strtolower($reflector->getName()).'\\'; $ret = []; // only list classes, interfaces and traits if we are specifically asked if ($input->getOption('classes')) { - $ret = \array_merge($ret, $this->filterClasses('Classes', \get_declared_classes(), $internal, $user)); + $ret = \array_merge($ret, $this->filterClasses('Classes', \get_declared_classes(), $internal, $user, $prefix)); } if ($input->getOption('interfaces')) { - $ret = \array_merge($ret, $this->filterClasses('Interfaces', \get_declared_interfaces(), $internal, $user)); + $ret = \array_merge($ret, $this->filterClasses('Interfaces', \get_declared_interfaces(), $internal, $user, $prefix)); } if ($input->getOption('traits')) { - $ret = \array_merge($ret, $this->filterClasses('Traits', \get_declared_traits(), $internal, $user)); + $ret = \array_merge($ret, $this->filterClasses('Traits', \get_declared_traits(), $internal, $user, $prefix)); } return \array_map([$this, 'prepareClasses'], \array_filter($ret)); @@ -67,15 +62,20 @@ class ClassEnumerator extends Enumerator * @param array $classes * @param bool $internal * @param bool $user + * @param string $prefix * * @return array */ - protected function filterClasses($key, $classes, $internal, $user) + protected function filterClasses(string $key, array $classes, bool $internal, bool $user, string $prefix = null): array { $ret = []; if ($internal) { - $ret['Internal ' . $key] = \array_filter($classes, function ($class) { + $ret['Internal '.$key] = \array_filter($classes, function ($class) use ($prefix) { + if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) { + return false; + } + $refl = new \ReflectionClass($class); return $refl->isInternal(); @@ -83,7 +83,11 @@ class ClassEnumerator extends Enumerator } if ($user) { - $ret['User ' . $key] = \array_filter($classes, function ($class) { + $ret['User '.$key] = \array_filter($classes, function ($class) use ($prefix) { + if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) { + return false; + } + $refl = new \ReflectionClass($class); return !$refl->isInternal(); @@ -91,7 +95,9 @@ class ClassEnumerator extends Enumerator } if (!$user && !$internal) { - $ret[$key] = $classes; + $ret[$key] = \array_filter($classes, function ($class) use ($prefix) { + return $prefix === null || \strpos(\strtolower($class), $prefix) === 0; + }); } return $ret; @@ -104,7 +110,7 @@ class ClassEnumerator extends Enumerator * * @return array */ - protected function prepareClasses(array $classes) + protected function prepareClasses(array $classes): array { \natcasesort($classes); diff --git a/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php index ad4ce0d12..01b6186e9 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\Command\ListCommand; +use Psy\Reflection\ReflectionNamespace; use Symfony\Component\Console\Input\InputInterface; /** @@ -18,31 +19,64 @@ use Symfony\Component\Console\Input\InputInterface; */ class ConstantEnumerator extends Enumerator { + // Because `Json` is ugly. + private static $categoryLabels = [ + 'libxml' => 'libxml', + 'openssl' => 'OpenSSL', + 'pcre' => 'PCRE', + 'sqlite3' => 'SQLite3', + 'curl' => 'cURL', + 'dom' => 'DOM', + 'ftp' => 'FTP', + 'gd' => 'GD', + 'gmp' => 'GMP', + 'iconv' => 'iconv', + 'json' => 'JSON', + 'ldap' => 'LDAP', + 'mbstring' => 'mbstring', + 'odbc' => 'ODBC', + 'pcntl' => 'PCNTL', + 'pgsql' => 'pgsql', + 'posix' => 'POSIX', + 'mysqli' => 'mysqli', + 'soap' => 'SOAP', + 'exif' => 'EXIF', + 'sysvmsg' => 'sysvmsg', + 'xml' => 'XML', + 'xsl' => 'XSL', + ]; + /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { - // only list constants when no Reflector is present. - // - // @todo make a NamespaceReflector and pass that in for commands like: - // - // ls --constants Foo - // - // ... for listing constants in the Foo namespace - if ($reflector !== null || $target !== null) { - return; + // if we have a reflector, ensure that it's a namespace reflector + if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) { + return []; } // only list constants if we are specifically asked if (!$input->getOption('constants')) { - return; + return []; } - $user = $input->getOption('user'); + $user = $input->getOption('user'); $internal = $input->getOption('internal'); $category = $input->getOption('category'); + if ($category) { + $category = \strtolower($category); + + if ($category === 'internal') { + $internal = true; + $category = null; + } elseif ($category === 'user') { + $user = true; + $category = null; + } + } + $ret = []; if ($user) { @@ -50,11 +84,12 @@ class ConstantEnumerator extends Enumerator } if ($internal) { - $ret['Interal Constants'] = $this->getConstants('internal'); + $ret['Internal Constants'] = $this->getConstants('internal'); } if ($category) { - $label = \ucfirst($category) . ' Constants'; + $caseCategory = \array_key_exists($category, self::$categoryLabels) ? self::$categoryLabels[$category] : \ucfirst($category); + $label = $caseCategory.' Constants'; $ret[$label] = $this->getConstants($category); } @@ -62,6 +97,18 @@ class ConstantEnumerator extends Enumerator $ret['Constants'] = $this->getConstants(); } + if ($reflector !== null) { + $prefix = \strtolower($reflector->getName()).'\\'; + + foreach ($ret as $key => $names) { + foreach (\array_keys($names) as $name) { + if (\strpos(\strtolower($name), $prefix) !== 0) { + unset($ret[$key][$name]); + } + } + } + } + return \array_map([$this, 'prepareConstants'], \array_filter($ret)); } @@ -75,7 +122,7 @@ class ConstantEnumerator extends Enumerator * * @return array */ - protected function getConstants($category = null) + protected function getConstants(string $category = null): array { if (!$category) { return \get_defined_constants(); @@ -86,10 +133,16 @@ class ConstantEnumerator extends Enumerator if ($category === 'internal') { unset($consts['user']); - return \call_user_func_array('array_merge', $consts); + return \array_merge(...\array_values($consts)); } - return isset($consts[$category]) ? $consts[$category] : []; + foreach ($consts as $key => $value) { + if (\strtolower($key) === $category) { + return $value; + } + } + + return []; } /** @@ -99,7 +152,7 @@ class ConstantEnumerator extends Enumerator * * @return array */ - protected function prepareConstants(array $constants) + protected function prepareConstants(array $constants): array { // My kingdom for a generator. $ret = []; diff --git a/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php b/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php index 616543d0d..05322b984 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,13 +23,13 @@ use Symfony\Component\Console\Input\InputInterface; abstract class Enumerator { // Output styles - const IS_PUBLIC = 'public'; + const IS_PUBLIC = 'public'; const IS_PROTECTED = 'protected'; - const IS_PRIVATE = 'private'; - const IS_GLOBAL = 'global'; - const IS_CONSTANT = 'const'; - const IS_CLASS = 'class'; - const IS_FUNCTION = 'function'; + const IS_PRIVATE = 'private'; + const IS_GLOBAL = 'global'; + const IS_CONSTANT = 'const'; + const IS_CLASS = 'class'; + const IS_FUNCTION = 'function'; private $filter; private $presenter; @@ -48,13 +48,13 @@ abstract class Enumerator /** * Return a list of categorized things with the given input options and target. * - * @param InputInterface $input - * @param \Reflector $reflector - * @param mixed $target + * @param InputInterface $input + * @param \Reflector|null $reflector + * @param mixed $target * * @return array */ - public function enumerate(InputInterface $input, \Reflector $reflector = null, $target = null) + public function enumerate(InputInterface $input, \Reflector $reflector = null, $target = null): array { $this->filter->bind($input); @@ -76,13 +76,13 @@ abstract class Enumerator * ], * ] * - * @param InputInterface $input - * @param \Reflector $reflector - * @param mixed $target + * @param InputInterface $input + * @param \Reflector|null $reflector + * @param mixed $target * * @return array */ - abstract protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null); + abstract protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array; protected function showItem($name) { diff --git a/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php index 6c3fa5ea9..f4323f232 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,6 +11,7 @@ namespace Psy\Command\ListCommand; +use Psy\Reflection\ReflectionNamespace; use Symfony\Component\Console\Input\InputInterface; /** @@ -21,40 +22,34 @@ class FunctionEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { - // only list functions when no Reflector is present. - // - // @todo make a NamespaceReflector and pass that in for commands like: - // - // ls --functions Foo - // - // ... for listing functions in the Foo namespace - - if ($reflector !== null || $target !== null) { - return; + // if we have a reflector, ensure that it's a namespace reflector + if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) { + return []; } // only list functions if we are specifically asked if (!$input->getOption('functions')) { - return; + return []; } if ($input->getOption('user')) { - $label = 'User Functions'; + $label = 'User Functions'; $functions = $this->getFunctions('user'); } elseif ($input->getOption('internal')) { - $label = 'Internal Functions'; + $label = 'Internal Functions'; $functions = $this->getFunctions('internal'); } else { - $label = 'Functions'; + $label = 'Functions'; $functions = $this->getFunctions(); } - $functions = $this->prepareFunctions($functions); + $prefix = $reflector === null ? null : \strtolower($reflector->getName()).'\\'; + $functions = $this->prepareFunctions($functions, $prefix); if (empty($functions)) { - return; + return []; } $ret = []; @@ -68,11 +63,11 @@ class FunctionEnumerator extends Enumerator * * Optionally limit functions to "user" or "internal" functions. * - * @param null|string $type "user" or "internal" (default: both) + * @param string|null $type "user" or "internal" (default: both) * * @return array */ - protected function getFunctions($type = null) + protected function getFunctions(string $type = null): array { $funcs = \get_defined_functions(); @@ -86,11 +81,12 @@ class FunctionEnumerator extends Enumerator /** * Prepare formatted function array. * - * @param array $functions + * @param array $functions + * @param string $prefix * * @return array */ - protected function prepareFunctions(array $functions) + protected function prepareFunctions(array $functions, string $prefix = null): array { \natcasesort($functions); @@ -98,12 +94,20 @@ class FunctionEnumerator extends Enumerator $ret = []; foreach ($functions as $name) { + if ($prefix !== null && \strpos(\strtolower($name), $prefix) !== 0) { + continue; + } + if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_FUNCTION, - 'value' => $this->presentSignature($name), - ]; + try { + $ret[$name] = [ + 'name' => $name, + 'style' => self::IS_FUNCTION, + 'value' => $this->presentSignature($name), + ]; + } catch (\Throwable $e) { + // Ignore failures. + } } } diff --git a/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php index f51791cb6..a643cc1f9 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,22 +21,22 @@ class GlobalVariableEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { // only list globals when no Reflector is present. if ($reflector !== null || $target !== null) { - return; + return []; } // only list globals if we are specifically asked if (!$input->getOption('globals')) { - return; + return []; } $globals = $this->prepareGlobals($this->getGlobals()); if (empty($globals)) { - return; + return []; } return [ @@ -49,7 +49,7 @@ class GlobalVariableEnumerator extends Enumerator * * @return array */ - protected function getGlobals() + protected function getGlobals(): array { global $GLOBALS; @@ -71,14 +71,14 @@ class GlobalVariableEnumerator extends Enumerator * * @return array */ - protected function prepareGlobals($globals) + protected function prepareGlobals(array $globals): array { // My kingdom for a generator. $ret = []; foreach ($globals as $name => $value) { if ($this->showItem($name)) { - $fname = '$' . $name; + $fname = '$'.$name; $ret[$fname] = [ 'name' => $fname, 'style' => self::IS_GLOBAL, diff --git a/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php deleted file mode 100644 index 4531fce83..000000000 --- a/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php +++ /dev/null @@ -1,89 +0,0 @@ -getOption('interfaces')) { - return; - } - - $interfaces = $this->prepareInterfaces(\get_declared_interfaces()); - - if (empty($interfaces)) { - return; - } - - return [ - 'Interfaces' => $interfaces, - ]; - } - - /** - * Prepare formatted interface array. - * - * @param array $interfaces - * - * @return array - */ - protected function prepareInterfaces(array $interfaces) - { - \natcasesort($interfaces); - - // My kingdom for a generator. - $ret = []; - - foreach ($interfaces as $name) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_CLASS, - 'value' => $this->presentSignature($name), - ]; - } - } - - return $ret; - } -} diff --git a/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php index 49d7e104e..a2e333175 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,30 +21,29 @@ class MethodEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { // only list methods when a Reflector is present. - if ($reflector === null) { - return; + return []; } // We can only list methods on actual class (or object) reflectors. if (!$reflector instanceof \ReflectionClass) { - return; + return []; } // only list methods if we are specifically asked if (!$input->getOption('methods')) { - return; + return []; } - $showAll = $input->getOption('all'); + $showAll = $input->getOption('all'); $noInherit = $input->getOption('no-inherit'); - $methods = $this->prepareMethods($this->getMethods($showAll, $reflector, $noInherit)); + $methods = $this->prepareMethods($this->getMethods($showAll, $reflector, $noInherit)); if (empty($methods)) { - return; + return []; } $ret = []; @@ -62,13 +61,15 @@ class MethodEnumerator extends Enumerator * * @return array */ - protected function getMethods($showAll, \Reflector $reflector, $noInherit = false) + protected function getMethods(bool $showAll, \Reflector $reflector, bool $noInherit = false): array { $className = $reflector->getName(); $methods = []; foreach ($reflector->getMethods() as $name => $method) { - if ($noInherit && $method->getDeclaringClass()->getName() !== $className) { + // For some reason PHP reflection shows private methods from the parent class, even + // though they're effectively worthless. Let's suppress them here, like --no-inherit + if (($noInherit || $method->isPrivate()) && $method->getDeclaringClass()->getName() !== $className) { continue; } @@ -77,7 +78,7 @@ class MethodEnumerator extends Enumerator } } - \ksort($methods, SORT_NATURAL | SORT_FLAG_CASE); + \ksort($methods, \SORT_NATURAL | \SORT_FLAG_CASE); return $methods; } @@ -89,7 +90,7 @@ class MethodEnumerator extends Enumerator * * @return array */ - protected function prepareMethods(array $methods) + protected function prepareMethods(array $methods): array { // My kingdom for a generator. $ret = []; @@ -114,7 +115,7 @@ class MethodEnumerator extends Enumerator * * @return string */ - protected function getKindLabel(\ReflectionClass $reflector) + protected function getKindLabel(\ReflectionClass $reflector): string { if ($reflector->isInterface()) { return 'Interface Methods'; @@ -132,7 +133,7 @@ class MethodEnumerator extends Enumerator * * @return string */ - private function getVisibilityStyle(\ReflectionMethod $method) + private function getVisibilityStyle(\ReflectionMethod $method): string { if ($method->isPublic()) { return self::IS_PUBLIC; diff --git a/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php index d56caded6..1258448e3 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,30 +21,30 @@ class PropertyEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { // only list properties when a Reflector is present. if ($reflector === null) { - return; + return []; } // We can only list properties on actual class (or object) reflectors. if (!$reflector instanceof \ReflectionClass) { - return; + return []; } // only list properties if we are specifically asked if (!$input->getOption('properties')) { - return; + return []; } - $showAll = $input->getOption('all'); - $noInherit = $input->getOption('no-inherit'); + $showAll = $input->getOption('all'); + $noInherit = $input->getOption('no-inherit'); $properties = $this->prepareProperties($this->getProperties($showAll, $reflector, $noInherit), $target); if (empty($properties)) { - return; + return []; } $ret = []; @@ -62,7 +62,7 @@ class PropertyEnumerator extends Enumerator * * @return array */ - protected function getProperties($showAll, \Reflector $reflector, $noInherit = false) + protected function getProperties(bool $showAll, \Reflector $reflector, bool $noInherit = false): array { $className = $reflector->getName(); @@ -77,7 +77,7 @@ class PropertyEnumerator extends Enumerator } } - \ksort($properties, SORT_NATURAL | SORT_FLAG_CASE); + \ksort($properties, \SORT_NATURAL | \SORT_FLAG_CASE); return $properties; } @@ -89,14 +89,14 @@ class PropertyEnumerator extends Enumerator * * @return array */ - protected function prepareProperties(array $properties, $target = null) + protected function prepareProperties(array $properties, $target = null): array { // My kingdom for a generator. $ret = []; foreach ($properties as $name => $property) { if ($this->showItem($name)) { - $fname = '$' . $name; + $fname = '$'.$name; $ret[$fname] = [ 'name' => $fname, 'style' => $this->getVisibilityStyle($property), @@ -115,11 +115,9 @@ class PropertyEnumerator extends Enumerator * * @return string */ - protected function getKindLabel(\ReflectionClass $reflector) + protected function getKindLabel(\ReflectionClass $reflector): string { - if ($reflector->isInterface()) { - return 'Interface Properties'; - } elseif (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) { + if (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) { return 'Trait Properties'; } else { return 'Class Properties'; @@ -133,7 +131,7 @@ class PropertyEnumerator extends Enumerator * * @return string */ - private function getVisibilityStyle(\ReflectionProperty $property) + private function getVisibilityStyle(\ReflectionProperty $property): string { if ($property->isPublic()) { return self::IS_PUBLIC; @@ -152,9 +150,13 @@ class PropertyEnumerator extends Enumerator * * @return string */ - protected function presentValue(\ReflectionProperty $property, $target) + protected function presentValue(\ReflectionProperty $property, $target): string { - // If $target is a class, trait or interface (try to) get the default + if (!$target) { + return ''; + } + + // If $target is a class or trait (try to) get the default // value for the property. if (!\is_object($target)) { try { @@ -163,9 +165,9 @@ class PropertyEnumerator extends Enumerator if (\array_key_exists($property->name, $props)) { $suffix = $property->isStatic() ? '' : ' '; - return $this->presentRef($props[$property->name]) . $suffix; + return $this->presentRef($props[$property->name]).$suffix; } - } catch (\Exception $e) { + } catch (\Throwable $e) { // Well, we gave it a shot. } diff --git a/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php deleted file mode 100644 index 3ee601558..000000000 --- a/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php +++ /dev/null @@ -1,89 +0,0 @@ -getOption('traits')) { - return; - } - - $traits = $this->prepareTraits(\get_declared_traits()); - - if (empty($traits)) { - return; - } - - return [ - 'Traits' => $traits, - ]; - } - - /** - * Prepare formatted trait array. - * - * @param array $traits - * - * @return array - */ - protected function prepareTraits(array $traits) - { - \natcasesort($traits); - - // My kingdom for a generator. - $ret = []; - - foreach ($traits as $name) { - if ($this->showItem($name)) { - $ret[$name] = [ - 'name' => $name, - 'style' => self::IS_CLASS, - 'value' => $this->presentSignature($name), - ]; - } - } - - return $ret; - } -} diff --git a/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php index 0586c203e..ecc69040f 100644 --- a/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php +++ b/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -45,23 +45,23 @@ class VariableEnumerator extends Enumerator /** * {@inheritdoc} */ - protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null) + protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null): array { // only list variables when no Reflector is present. if ($reflector !== null || $target !== null) { - return; + return []; } // only list variables if we are specifically asked if (!$input->getOption('vars')) { - return; + return []; } - $showAll = $input->getOption('all'); + $showAll = $input->getOption('all'); $variables = $this->prepareVariables($this->getVariables($showAll)); if (empty($variables)) { - return; + return []; } return [ @@ -76,7 +76,7 @@ class VariableEnumerator extends Enumerator * * @return array */ - protected function getVariables($showAll) + protected function getVariables(bool $showAll): array { $scopeVars = $this->context->getAll(); \uksort($scopeVars, function ($a, $b) { @@ -117,13 +117,13 @@ class VariableEnumerator extends Enumerator * * @return array */ - protected function prepareVariables(array $variables) + protected function prepareVariables(array $variables): array { // My kingdom for a generator. $ret = []; foreach ($variables as $name => $val) { if ($this->showItem($name)) { - $fname = '$' . $name; + $fname = '$'.$name; $ret[$fname] = [ 'name' => $fname, 'style' => \in_array($name, self::$specialNames) ? self::IS_PRIVATE : self::IS_PUBLIC, diff --git a/vendor/psy/psysh/src/Command/ParseCommand.php b/vendor/psy/psysh/src/Command/ParseCommand.php index 8de79736a..c2f8ab0f4 100644 --- a/vendor/psy/psysh/src/Command/ParseCommand.php +++ b/vendor/psy/psysh/src/Command/ParseCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -46,7 +46,7 @@ class ParseCommand extends Command implements ContextAware, PresenterAware public function __construct($name = null) { $this->parserFactory = new ParserFactory(); - $this->parsers = []; + $this->parsers = []; parent::__construct($name); } @@ -70,14 +70,14 @@ class ParseCommand extends Command implements ContextAware, PresenterAware { $this->presenter = clone $presenter; $this->presenter->addCasters([ - 'PhpParser\Node' => function (Node $node, array $a) { + Node::class => function (Node $node, array $a) { $a = [ - Caster::PREFIX_VIRTUAL . 'type' => $node->getType(), - Caster::PREFIX_VIRTUAL . 'attributes' => $node->getAttributes(), + Caster::PREFIX_VIRTUAL.'type' => $node->getType(), + Caster::PREFIX_VIRTUAL.'attributes' => $node->getAttributes(), ]; foreach ($node->getSubNodeNames() as $name) { - $a[Caster::PREFIX_VIRTUAL . $name] = $node->$name; + $a[Caster::PREFIX_VIRTUAL.$name] = $node->$name; } return $a; @@ -90,23 +90,17 @@ class ParseCommand extends Command implements ContextAware, PresenterAware */ protected function configure() { - $definition = [ - new CodeArgument('code', CodeArgument::REQUIRED, 'PHP code to parse.'), - new InputOption('depth', '', InputOption::VALUE_REQUIRED, 'Depth to parse.', 10), - ]; - - if ($this->parserFactory->hasKindsSupport()) { - $msg = 'One of PhpParser\\ParserFactory constants: ' - . \implode(', ', ParserFactory::getPossibleKinds()) - . " (default is based on current interpreter's version)."; - $defaultKind = $this->parserFactory->getDefaultKind(); - - $definition[] = new InputOption('kind', '', InputOption::VALUE_REQUIRED, $msg, $defaultKind); - } + $kindMsg = 'One of PhpParser\\ParserFactory constants: ' + .\implode(', ', ParserFactory::getPossibleKinds()) + ." (default is based on current interpreter's version)."; $this ->setName('parse') - ->setDefinition($definition) + ->setDefinition([ + new CodeArgument('code', CodeArgument::REQUIRED, 'PHP code to parse.'), + new InputOption('depth', '', InputOption::VALUE_REQUIRED, 'Depth to parse.', 10), + new InputOption('kind', '', InputOption::VALUE_REQUIRED, $kindMsg, $this->parserFactory->getDefaultKind()), + ]) ->setDescription('Parse PHP code and show the abstract syntax tree.') ->setHelp( <<<'HELP' @@ -128,13 +122,13 @@ HELP protected function execute(InputInterface $input, OutputInterface $output) { $code = $input->getArgument('code'); - if (\strpos('parserFactory->hasKindsSupport() ? $input->getOption('kind') : null; - $depth = $input->getOption('depth'); - $nodes = $this->parse($this->getParser($parserKind), $code); + $parserKind = $input->getOption('kind'); + $depth = $input->getOption('depth'); + $nodes = $this->parse($this->getParser($parserKind), $code); $output->page($this->presenter->present($nodes, $depth)); $this->context->setReturnValue($nodes); @@ -150,7 +144,7 @@ HELP * * @return array Statements */ - private function parse(Parser $parser, $code) + private function parse(Parser $parser, string $code): array { try { return $parser->parse($code); @@ -160,7 +154,7 @@ HELP } // If we got an unexpected EOF, let's try it again with a semicolon. - return $parser->parse($code . ';'); + return $parser->parse($code.';'); } } @@ -171,7 +165,7 @@ HELP * * @return Parser */ - private function getParser($kind = null) + private function getParser(string $kind = null): Parser { if (!\array_key_exists($kind, $this->parsers)) { $this->parsers[$kind] = $this->parserFactory->createParser($kind); diff --git a/vendor/psy/psysh/src/Command/PsyVersionCommand.php b/vendor/psy/psysh/src/Command/PsyVersionCommand.php index 737475b48..c78889c8b 100644 --- a/vendor/psy/psysh/src/Command/PsyVersionCommand.php +++ b/vendor/psy/psysh/src/Command/PsyVersionCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/Command/ReflectingCommand.php b/vendor/psy/psysh/src/Command/ReflectingCommand.php index 328632805..806833426 100644 --- a/vendor/psy/psysh/src/Command/ReflectingCommand.php +++ b/vendor/psy/psysh/src/Command/ReflectingCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -16,6 +16,9 @@ use Psy\Context; use Psy\ContextAware; use Psy\Exception\ErrorException; use Psy\Exception\RuntimeException; +use Psy\Exception\UnexpectedTargetException; +use Psy\Reflection\ReflectionClassConstant; +use Psy\Reflection\ReflectionConstant_; use Psy\Util\Mirror; /** @@ -23,9 +26,9 @@ use Psy\Util\Mirror; */ abstract class ReflectingCommand extends Command implements ContextAware { - const CLASS_OR_FUNC = '/^[\\\\\w]+$/'; - const CLASS_MEMBER = '/^([\\\\\w]+)::(\w+)$/'; - const CLASS_STATIC = '/^([\\\\\w]+)::\$(\w+)$/'; + const CLASS_OR_FUNC = '/^[\\\\\w]+$/'; + const CLASS_MEMBER = '/^([\\\\\w]+)::(\w+)$/'; + const CLASS_STATIC = '/^([\\\\\w]+)::\$(\w+)$/'; const INSTANCE_MEMBER = '/^(\$\w+)(::|->)(\w+)$/'; /** @@ -54,10 +57,10 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return array (class or instance name, member name, kind) */ - protected function getTarget($valueName) + protected function getTarget(string $valueName): array { $valueName = \trim($valueName); - $matches = []; + $matches = []; switch (true) { case \preg_match(self::CLASS_OR_FUNC, $valueName, $matches): return [$this->resolveName($matches[0], true), null, 0]; @@ -92,7 +95,7 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return string */ - protected function resolveName($name, $includeFunctions = false) + protected function resolveName(string $name, bool $includeFunctions = false): string { $shell = $this->getApplication(); @@ -107,15 +110,24 @@ abstract class ReflectingCommand extends Command implements ContextAware } $msg = \sprintf('Cannot use "%s" when no class scope is active', \strtolower($name)); - throw new ErrorException($msg, 0, E_USER_ERROR, "eval()'d code", 1); + throw new ErrorException($msg, 0, \E_USER_ERROR, "eval()'d code", 1); } if (\substr($name, 0, 1) === '\\') { return $name; } + // Check $name against the current namespace and use statements. + if (self::couldBeClassName($name)) { + try { + $name = $this->resolveCode($name.'::class'); + } catch (RuntimeException $e) { + // /shrug + } + } + if ($namespace = $shell->getNamespace()) { - $fullName = $namespace . '\\' . $name; + $fullName = $namespace.'\\'.$name; if (\class_exists($fullName) || \interface_exists($fullName) || ($includeFunctions && \function_exists($fullName))) { return $fullName; @@ -125,6 +137,15 @@ abstract class ReflectingCommand extends Command implements ContextAware return $name; } + /** + * Check whether a given name could be a class name. + */ + protected function couldBeClassName(string $name): bool + { + // Regex based on https://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class + return \preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*(\\\\[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)*$/', $name) === 1; + } + /** * Get a Reflector and documentation for a function, class or instance, constant, method or property. * @@ -132,7 +153,7 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return array (value, Reflector) */ - protected function getTargetAndReflector($valueName) + protected function getTargetAndReflector(string $valueName): array { list($value, $member, $kind) = $this->getTarget($valueName); @@ -148,16 +169,16 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return mixed Variable value */ - protected function resolveCode($code) + protected function resolveCode(string $code) { try { $value = $this->getApplication()->execute($code, true); - } catch (\Exception $e) { + } catch (\Throwable $e) { // Swallow all exceptions? } if (!isset($value) || $value instanceof NoReturnValue) { - throw new RuntimeException('Unknown target: ' . $code); + throw new RuntimeException('Unknown target: '.$code); } return $value; @@ -166,18 +187,18 @@ abstract class ReflectingCommand extends Command implements ContextAware /** * Resolve code to an object in the current scope. * - * @throws RuntimeException when the code resolves to a non-object value + * @throws UnexpectedTargetException when the code resolves to a non-object value * * @param string $code * * @return object Variable instance */ - private function resolveObject($code) + private function resolveObject(string $code) { $value = $this->resolveCode($code); if (!\is_object($value)) { - throw new RuntimeException('Unable to inspect a non-object'); + throw new UnexpectedTargetException($value, 'Unable to inspect a non-object'); } return $value; @@ -190,9 +211,9 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return mixed Variable instance */ - protected function resolveInstance($name) + protected function resolveInstance(string $name) { - @\trigger_error('`resolveInstance` is deprecated; use `resolveCode` instead.', E_USER_DEPRECATED); + @\trigger_error('`resolveInstance` is deprecated; use `resolveCode` instead.', \E_USER_DEPRECATED); return $this->resolveCode($name); } @@ -204,7 +225,7 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return mixed */ - protected function getScopeVariable($name) + protected function getScopeVariable(string $name) { return $this->context->get($name); } @@ -214,7 +235,7 @@ abstract class ReflectingCommand extends Command implements ContextAware * * @return array */ - protected function getScopeVariables() + protected function getScopeVariables(): array { return $this->context->getAll(); } @@ -231,15 +252,15 @@ abstract class ReflectingCommand extends Command implements ContextAware $vars = []; switch (\get_class($reflector)) { - case 'ReflectionClass': - case 'ReflectionObject': + case \ReflectionClass::class: + case \ReflectionObject::class: $vars['__class'] = $reflector->name; if ($reflector->inNamespace()) { $vars['__namespace'] = $reflector->getNamespaceName(); } break; - case 'ReflectionMethod': + case \ReflectionMethod::class: $vars['__method'] = \sprintf('%s::%s', $reflector->class, $reflector->name); $vars['__class'] = $reflector->class; $classReflector = $reflector->getDeclaringClass(); @@ -248,14 +269,14 @@ abstract class ReflectingCommand extends Command implements ContextAware } break; - case 'ReflectionFunction': + case \ReflectionFunction::class: $vars['__function'] = $reflector->name; if ($reflector->inNamespace()) { $vars['__namespace'] = $reflector->getNamespaceName(); } break; - case 'ReflectionGenerator': + case \ReflectionGenerator::class: $funcReflector = $reflector->getFunction(); $vars['__function'] = $funcReflector->name; if ($funcReflector->inNamespace()) { @@ -264,13 +285,13 @@ abstract class ReflectingCommand extends Command implements ContextAware if ($fileName = $reflector->getExecutingFile()) { $vars['__file'] = $fileName; $vars['__line'] = $reflector->getExecutingLine(); - $vars['__dir'] = \dirname($fileName); + $vars['__dir'] = \dirname($fileName); } break; - case 'ReflectionProperty': - case 'ReflectionClassConstant': - case 'Psy\Reflection\ReflectionClassConstant': + case \ReflectionProperty::class: + case \ReflectionClassConstant::class: + case ReflectionClassConstant::class: $classReflector = $reflector->getDeclaringClass(); $vars['__class'] = $classReflector->name; if ($classReflector->inNamespace()) { @@ -279,11 +300,11 @@ abstract class ReflectingCommand extends Command implements ContextAware // no line for these, but this'll do if ($fileName = $reflector->getDeclaringClass()->getFileName()) { $vars['__file'] = $fileName; - $vars['__dir'] = \dirname($fileName); + $vars['__dir'] = \dirname($fileName); } break; - case 'Psy\Reflection\ReflectionConstant_': + case ReflectionConstant_::class: if ($reflector->inNamespace()) { $vars['__namespace'] = $reflector->getNamespaceName(); } @@ -294,7 +315,7 @@ abstract class ReflectingCommand extends Command implements ContextAware if ($fileName = $reflector->getFileName()) { $vars['__file'] = $fileName; $vars['__line'] = $reflector->getStartLine(); - $vars['__dir'] = \dirname($fileName); + $vars['__dir'] = \dirname($fileName); } } diff --git a/vendor/psy/psysh/src/Command/ShowCommand.php b/vendor/psy/psysh/src/Command/ShowCommand.php index c0934ab2c..c7253e0c9 100644 --- a/vendor/psy/psysh/src/Command/ShowCommand.php +++ b/vendor/psy/psysh/src/Command/ShowCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,10 +11,8 @@ namespace Psy\Command; -use JakubOnderka\PhpConsoleHighlighter\Highlighter; -use Psy\Configuration; -use Psy\ConsoleColorFactory; use Psy\Exception\RuntimeException; +use Psy\Exception\UnexpectedTargetException; use Psy\Formatter\CodeFormatter; use Psy\Formatter\SignatureFormatter; use Psy\Input\CodeArgument; @@ -28,18 +26,14 @@ use Symfony\Component\Console\Output\OutputInterface; */ class ShowCommand extends ReflectingCommand { - private $colorMode; - private $highlighter; private $lastException; private $lastExceptionIndex; /** - * @param null|string $colorMode (default: null) + * @param string|null $colorMode (deprecated and ignored) */ public function __construct($colorMode = null) { - $this->colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO; - parent::__construct(); } @@ -52,7 +46,7 @@ class ShowCommand extends ReflectingCommand ->setName('show') ->setDefinition([ new CodeArgument('target', CodeArgument::OPTIONAL, 'Function, class, instance, constant, method or property to show.'), - new InputOption('ex', null, InputOption::VALUE_OPTIONAL, 'Show last exception context. Optionally specify a stack index.', 1), + new InputOption('ex', null, InputOption::VALUE_OPTIONAL, 'Show last exception context. Optionally specify a stack index.', 1), ]) ->setDescription('Show the code for an object, class, constant, method or property.') ->setHelp( @@ -75,6 +69,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -114,13 +110,33 @@ HELP private function writeCodeContext(InputInterface $input, OutputInterface $output) { - list($target, $reflector) = $this->getTargetAndReflector($input->getArgument('target')); + try { + list($target, $reflector) = $this->getTargetAndReflector($input->getArgument('target')); + } catch (UnexpectedTargetException $e) { + // If we didn't get a target and Reflector, maybe we got a filename? + $target = $e->getTarget(); + if (\is_string($target) && \is_file($target) && $code = @\file_get_contents($target)) { + $file = \realpath($target); + if ($file !== $this->context->get('__file')) { + $this->context->setCommandScopeVariables([ + '__file' => $file, + '__dir' => \dirname($file), + ]); + } + + $output->page(CodeFormatter::formatCode($code)); + + return; + } else { + throw $e; + } + } // Set some magic local variables $this->setCommandScopeVariables($reflector); try { - $output->page(CodeFormatter::format($reflector, $this->colorMode), OutputInterface::OUTPUT_RAW); + $output->page(CodeFormatter::format($reflector)); } catch (RuntimeException $e) { $output->writeln(SignatureFormatter::format($reflector)); throw $e; @@ -143,7 +159,7 @@ HELP $index = 0; } } else { - $index = \max(0, \intval($input->getOption('ex')) - 1); + $index = \max(0, (int) $input->getOption('ex') - 1); } $trace = $exception->getTrace(); @@ -173,7 +189,7 @@ HELP $line = isset($trace[$index]['line']) ? $trace[$index]['line'] : 'n/a'; $output->writeln(\sprintf( - 'From %s:%d at level %d of backtrace (of %d).', + 'From %s:%d at level %d of backtrace (of %d):', OutputFormatter::escape($file), OutputFormatter::escape($line), $index + 1, @@ -181,16 +197,16 @@ HELP )); } - private function replaceCwd($file) + private function replaceCwd(string $file): string { if ($cwd = \getcwd()) { - $cwd = \rtrim($cwd, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + $cwd = \rtrim($cwd, \DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR; } if ($cwd === false) { return $file; } else { - return \preg_replace('/^' . \preg_quote($cwd, '/') . '/', '', $file); + return \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); } } @@ -219,17 +235,10 @@ HELP return; } - $output->write($this->getHighlighter()->getCodeSnippet($code, $line, 5, 5), false, OutputInterface::OUTPUT_RAW); - } + $startLine = \max($line - 5, 0); + $endLine = $line + 5; - private function getHighlighter() - { - if (!$this->highlighter) { - $factory = new ConsoleColorFactory($this->colorMode); - $this->highlighter = new Highlighter($factory->getConsoleColor()); - } - - return $this->highlighter; + $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $line), false); } private function setCommandScopeVariablesFromContext(array $context) @@ -247,7 +256,7 @@ HELP if ($namespace = $refl->getNamespaceName()) { $vars['__namespace'] = $namespace; } - } catch (\Exception $e) { + } catch (\Throwable $e) { // oh well } } elseif (isset($context['function'])) { @@ -258,7 +267,7 @@ HELP if ($namespace = $refl->getNamespaceName()) { $vars['__namespace'] = $namespace; } - } catch (\Exception $e) { + } catch (\Throwable $e) { // oh well } } @@ -283,7 +292,7 @@ HELP $this->context->setCommandScopeVariables($vars); } - private function extractEvalFileAndLine($file) + private function extractEvalFileAndLine(string $file) { if (\preg_match('/(.*)\\((\\d+)\\) : eval\\(\\)\'d code$/', $file, $matches)) { return [$matches[1], $matches[2]]; diff --git a/vendor/psy/psysh/src/Command/SudoCommand.php b/vendor/psy/psysh/src/Command/SudoCommand.php index 95b2146a7..6a7c6d181 100644 --- a/vendor/psy/psysh/src/Command/SudoCommand.php +++ b/vendor/psy/psysh/src/Command/SudoCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -95,6 +95,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -109,8 +111,8 @@ HELP $code = $history[\count($history) - 2]; } - if (\strpos('traverser->traverse($this->parse($code)); @@ -129,7 +131,7 @@ HELP * * @return array Statements */ - private function parse($code) + private function parse(string $code): array { try { return $this->parser->parse($code); @@ -139,7 +141,7 @@ HELP } // If we got an unexpected EOF, let's try it again with a semicolon. - return $this->parser->parse($code . ';'); + return $this->parser->parse($code.';'); } } } diff --git a/vendor/psy/psysh/src/Command/ThrowUpCommand.php b/vendor/psy/psysh/src/Command/ThrowUpCommand.php index 201cd926d..615be6b2f 100644 --- a/vendor/psy/psysh/src/Command/ThrowUpCommand.php +++ b/vendor/psy/psysh/src/Command/ThrowUpCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,7 +13,6 @@ namespace Psy\Command; use PhpParser\Node\Arg; use PhpParser\Node\Expr\New_; -use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Name\FullyQualified as FullyQualifiedName; use PhpParser\Node\Scalar\String_; @@ -21,6 +20,7 @@ use PhpParser\Node\Stmt\Throw_; use PhpParser\PrettyPrinter\Standard as Printer; use Psy\Context; use Psy\ContextAware; +use Psy\Exception\ThrowUpException; use Psy\Input\CodeArgument; use Psy\ParserFactory; use Symfony\Component\Console\Input\InputInterface; @@ -31,18 +31,9 @@ use Symfony\Component\Console\Output\OutputInterface; */ class ThrowUpCommand extends Command implements ContextAware { - const THROW_CLASS = 'Psy\Exception\ThrowUpException'; - private $parser; private $printer; - /** - * Context instance (for ContextAware interface). - * - * @var Context - */ - protected $context; - /** * {@inheritdoc} */ @@ -50,20 +41,20 @@ class ThrowUpCommand extends Command implements ContextAware { $parserFactory = new ParserFactory(); - $this->parser = $parserFactory->createParser(); + $this->parser = $parserFactory->createParser(); $this->printer = new Printer(); parent::__construct($name); } /** - * ContextAware interface. + * @deprecated throwUp no longer needs to be ContextAware * * @param Context $context */ public function setContext(Context $context) { - $this->context = $context; + // Do nothing } /** @@ -95,12 +86,14 @@ HELP /** * {@inheritdoc} * - * @throws InvalidArgumentException if there is no exception to throw + * @return int 0 if everything went fine, or an exit code + * + * @throws \InvalidArgumentException if there is no exception to throw */ protected function execute(InputInterface $input, OutputInterface $output) { $args = $this->prepareArgs($input->getArgument('exception')); - $throwStmt = new Throw_(new StaticCall(new FullyQualifiedName(self::THROW_CLASS), 'fromThrowable', $args)); + $throwStmt = new Throw_(new New_(new FullyQualifiedName(ThrowUpException::class), $args)); $throwCode = $this->printer->prettyPrint([$throwStmt]); $shell = $this->getApplication(); @@ -114,21 +107,21 @@ HELP * * If no argument was given, this falls back to `$_e` * - * @throws InvalidArgumentException if there is no exception to throw + * @throws \InvalidArgumentException if there is no exception to throw * * @param string $code * * @return Arg[] */ - private function prepareArgs($code = null) + private function prepareArgs(string $code = null): array { if (!$code) { // Default to last exception if nothing else was supplied return [new Arg(new Variable('_e'))]; } - if (\strpos('parse($code); @@ -145,7 +138,7 @@ HELP // Allow throwing via a string, e.g. `throw-up "SUP"` if ($expr instanceof String_) { - return [new New_(new FullyQualifiedName('Exception'), $args)]; + return [new New_(new FullyQualifiedName(\Exception::class), $args)]; } return $args; @@ -158,7 +151,7 @@ HELP * * @return array Statements */ - private function parse($code) + private function parse(string $code): array { try { return $this->parser->parse($code); @@ -168,7 +161,7 @@ HELP } // If we got an unexpected EOF, let's try it again with a semicolon. - return $this->parser->parse($code . ';'); + return $this->parser->parse($code.';'); } } } diff --git a/vendor/psy/psysh/src/Command/TimeitCommand.php b/vendor/psy/psysh/src/Command/TimeitCommand.php index 2bbc26ca1..ddc882d98 100644 --- a/vendor/psy/psysh/src/Command/TimeitCommand.php +++ b/vendor/psy/psysh/src/Command/TimeitCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -25,7 +25,7 @@ use Symfony\Component\Console\Output\OutputInterface; */ class TimeitCommand extends Command { - const RESULT_MSG = 'Command took %.6f seconds to complete.'; + const RESULT_MSG = 'Command took %.6f seconds to complete.'; const AVG_RESULT_MSG = 'Command took %.6f seconds on average (%.6f median; %.6f total) to complete.'; private static $start = null; @@ -76,6 +76,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -167,7 +169,7 @@ HELP * * @return string */ - private function instrumentCode($code) + private function instrumentCode(string $code): string { return $this->printer->prettyPrint($this->traverser->traverse($this->parse($code))); } @@ -179,9 +181,9 @@ HELP * * @return array Statements */ - private function parse($code) + private function parse(string $code): array { - $code = 'parser->parse($code); @@ -191,7 +193,7 @@ HELP } // If we got an unexpected EOF, let's try it again with a semicolon. - return $this->parser->parse($code . ';'); + return $this->parser->parse($code.';'); } } } diff --git a/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php b/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php index 841ba135d..b1dba5152 100644 --- a/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php +++ b/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,6 +21,7 @@ use PhpParser\Node\Stmt\Expression; use PhpParser\Node\Stmt\Return_; use PhpParser\NodeVisitorAbstract; use Psy\CodeCleaner\NoReturnValue; +use Psy\Command\TimeitCommand; /** * A node visitor for instrumenting code to be executed by the `timeit` command. @@ -34,6 +35,8 @@ class TimeitVisitor extends NodeVisitorAbstract /** * {@inheritdoc} + * + * @return Node[]|null Array of nodes */ public function beforeTraverse(array $nodes) { @@ -42,6 +45,8 @@ class TimeitVisitor extends NodeVisitorAbstract /** * {@inheritdoc} + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -61,6 +66,8 @@ class TimeitVisitor extends NodeVisitorAbstract /** * {@inheritdoc} + * + * @return int|Node|Node[]|null Replacement node (or special return value) */ public function leaveNode(Node $node) { @@ -71,6 +78,8 @@ class TimeitVisitor extends NodeVisitorAbstract /** * {@inheritdoc} + * + * @return Node[]|null Array of nodes */ public function afterTraverse(array $nodes) { @@ -97,11 +106,11 @@ class TimeitVisitor extends NodeVisitorAbstract /** * Get PhpParser AST nodes for a `markStart` call. * - * @return PhpParser\Node\Expr\StaticCall + * @return \PhpParser\Node\Expr\StaticCall */ - private function getStartCall() + private function getStartCall(): StaticCall { - return new StaticCall(new FullyQualifiedName('Psy\Command\TimeitCommand'), 'markStart'); + return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markStart'); } /** @@ -111,15 +120,15 @@ class TimeitVisitor extends NodeVisitorAbstract * * @param Expr|null $arg * - * @return PhpParser\Node\Expr\StaticCall + * @return \PhpParser\Node\Expr\StaticCall */ - private function getEndCall(Expr $arg = null) + private function getEndCall(Expr $arg = null): StaticCall { if ($arg === null) { $arg = NoReturnValue::create(); } - return new StaticCall(new FullyQualifiedName('Psy\Command\TimeitCommand'), 'markEnd', [new Arg($arg)]); + return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markEnd', [new Arg($arg)]); } /** @@ -127,13 +136,13 @@ class TimeitVisitor extends NodeVisitorAbstract * * Wrap $expr in a PhpParser\Node\Stmt\Expression if the class exists. * - * @param PhpParser\Node $expr - * @param array $attrs + * @param \PhpParser\Node $expr + * @param array $attrs * - * @return PhpParser\Node\Expr|PhpParser\Node\Stmt\Expression + * @return \PhpParser\Node\Expr|\PhpParser\Node\Stmt\Expression */ - private function maybeExpression($expr, $attrs = []) + private function maybeExpression(Node $expr, array $attrs = []) { - return \class_exists('PhpParser\Node\Stmt\Expression') ? new Expression($expr, $attrs) : $expr; + return \class_exists(Expression::class) ? new Expression($expr, $attrs) : $expr; } } diff --git a/vendor/psy/psysh/src/Command/TraceCommand.php b/vendor/psy/psysh/src/Command/TraceCommand.php index b85a07f8f..7e960ee32 100644 --- a/vendor/psy/psysh/src/Command/TraceCommand.php +++ b/vendor/psy/psysh/src/Command/TraceCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,9 +11,9 @@ namespace Psy\Command; +use Psy\Formatter\TraceFormatter; use Psy\Input\FilterOptions; use Psy\Output\ShellOutput; -use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; @@ -45,8 +45,8 @@ class TraceCommand extends Command $this ->setName('trace') ->setDefinition([ - new InputOption('include-psy', 'p', InputOption::VALUE_NONE, 'Include Psy in the call stack.'), - new InputOption('num', 'n', InputOption::VALUE_REQUIRED, 'Only include NUM lines.'), + new InputOption('include-psy', 'p', InputOption::VALUE_NONE, 'Include Psy in the call stack.'), + new InputOption('num', 'n', InputOption::VALUE_REQUIRED, 'Only include NUM lines.'), $grep, $insensitive, @@ -68,6 +68,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -79,91 +81,19 @@ HELP } /** - * Get a backtrace for an exception. + * Get a backtrace for an exception or error. * * Optionally limit the number of rows to include with $count, and exclude * Psy from the trace. * - * @param \Exception $e The exception with a backtrace + * @param \Throwable $e The exception or error with a backtrace * @param int $count (default: PHP_INT_MAX) * @param bool $includePsy (default: true) * * @return array Formatted stacktrace lines */ - protected function getBacktrace(\Exception $e, $count = null, $includePsy = true) + protected function getBacktrace(\Throwable $e, int $count = null, bool $includePsy = true): array { - if ($cwd = \getcwd()) { - $cwd = \rtrim($cwd, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - } - - if ($count === null) { - $count = PHP_INT_MAX; - } - - $lines = []; - - $trace = $e->getTrace(); - \array_unshift($trace, [ - 'function' => '', - 'file' => $e->getFile() !== null ? $e->getFile() : 'n/a', - 'line' => $e->getLine() !== null ? $e->getLine() : 'n/a', - 'args' => [], - ]); - - if (!$includePsy) { - for ($i = \count($trace) - 1; $i >= 0; $i--) { - $thing = isset($trace[$i]['class']) ? $trace[$i]['class'] : $trace[$i]['function']; - if (\preg_match('/\\\\?Psy\\\\/', $thing)) { - $trace = \array_slice($trace, $i + 1); - break; - } - } - } - - for ($i = 0, $count = \min($count, \count($trace)); $i < $count; $i++) { - $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : ''; - $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : ''; - $function = $trace[$i]['function']; - $file = isset($trace[$i]['file']) ? $this->replaceCwd($cwd, $trace[$i]['file']) : 'n/a'; - $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a'; - - // Leave execution loop out of the `eval()'d code` lines - if (\preg_match("#/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code$#", \str_replace('\\', '/', $file))) { - $file = "eval()'d code"; - } - - // Skip any lines that don't match our filter options - if (!$this->filter->match(\sprintf('%s%s%s() at %s:%s', $class, $type, $function, $file, $line))) { - continue; - } - - $lines[] = \sprintf( - ' %s%s%s() at %s:%s', - OutputFormatter::escape($class), - OutputFormatter::escape($type), - OutputFormatter::escape($function), - OutputFormatter::escape($file), - OutputFormatter::escape($line) - ); - } - - return $lines; - } - - /** - * Replace the given directory from the start of a filepath. - * - * @param string $cwd - * @param string $file - * - * @return string - */ - private function replaceCwd($cwd, $file) - { - if ($cwd === false) { - return $file; - } else { - return \preg_replace('/^' . \preg_quote($cwd, '/') . '/', '', $file); - } + return TraceFormatter::formatTrace($e, $this->filter, $count, $includePsy); } } diff --git a/vendor/psy/psysh/src/Command/WhereamiCommand.php b/vendor/psy/psysh/src/Command/WhereamiCommand.php index ccc451079..8afc67876 100644 --- a/vendor/psy/psysh/src/Command/WhereamiCommand.php +++ b/vendor/psy/psysh/src/Command/WhereamiCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,9 +11,9 @@ namespace Psy\Command; -use JakubOnderka\PhpConsoleHighlighter\Highlighter; -use Psy\Configuration; -use Psy\ConsoleColorFactory; +use Psy\Formatter\CodeFormatter; +use Psy\Output\ShellOutput; +use Psy\Shell; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; @@ -23,16 +23,14 @@ use Symfony\Component\Console\Output\OutputInterface; */ class WhereamiCommand extends Command { - private $colorMode; private $backtrace; /** - * @param null|string $colorMode (default: null) + * @param string|null $colorMode (deprecated and ignored) */ public function __construct($colorMode = null) { - $this->colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO; - $this->backtrace = \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + $this->backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); parent::__construct(); } @@ -46,17 +44,20 @@ class WhereamiCommand extends Command ->setName('whereami') ->setDefinition([ new InputOption('num', 'n', InputOption::VALUE_OPTIONAL, 'Number of lines before and after.', '5'), + new InputOption('file', 'f|a', InputOption::VALUE_NONE, 'Show the full source for the current file.'), ]) ->setDescription('Show where you are in the code.') ->setHelp( <<<'HELP' Show where you are in the code. -Optionally, include how many lines before and after you want to display. +Optionally, include the number of lines before and after you want to display, +or --file for the whole file. e.g. > whereami > whereami -n10 +> whereami --file HELP ); } @@ -66,7 +67,7 @@ HELP * * @return array */ - protected function trace() + protected function trace(): array { foreach (\array_reverse($this->backtrace) as $stackFrame) { if ($this->isDebugCall($stackFrame)) { @@ -77,13 +78,13 @@ HELP return \end($this->backtrace); } - private static function isDebugCall(array $stackFrame) + private static function isDebugCall(array $stackFrame): bool { - $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; + $class = isset($stackFrame['class']) ? $stackFrame['class'] : null; $function = isset($stackFrame['function']) ? $stackFrame['function'] : null; - return ($class === null && $function === 'Psy\debug') || - ($class === 'Psy\Shell' && \in_array($function, ['__construct', 'debug'])); + return ($class === null && $function === 'Psy\\debug') || + ($class === Shell::class && \in_array($function, ['__construct', 'debug'])); } /** @@ -91,7 +92,7 @@ HELP * * @return array */ - protected function fileInfo() + protected function fileInfo(): array { $stackFrame = $this->trace(); if (\preg_match('/eval\(/', $stackFrame['file'])) { @@ -108,22 +109,33 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { - $info = $this->fileInfo(); - $num = $input->getOption('num'); - $factory = new ConsoleColorFactory($this->colorMode); - $colors = $factory->getConsoleColor(); - $highlighter = new Highlighter($colors); - $contents = \file_get_contents($info['file']); + $info = $this->fileInfo(); + $num = $input->getOption('num'); + $lineNum = $info['line']; + $startLine = \max($lineNum - $num, 1); + $endLine = $lineNum + $num; + $code = \file_get_contents($info['file']); - $output->startPaging(); - $output->writeln(''); - $output->writeln(\sprintf('From %s:%s:', $this->replaceCwd($info['file']), $info['line'])); - $output->writeln(''); - $output->write($highlighter->getCodeSnippet($contents, $info['line'], $num, $num), false, OutputInterface::OUTPUT_RAW); - $output->stopPaging(); + if ($input->getOption('file')) { + $startLine = 1; + $endLine = null; + } + + if ($output instanceof ShellOutput) { + $output->startPaging(); + } + + $output->writeln(\sprintf('From %s:%s:', $this->replaceCwd($info['file']), $lineNum)); + $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $lineNum), false); + + if ($output instanceof ShellOutput) { + $output->stopPaging(); + } return 0; } @@ -135,15 +147,15 @@ HELP * * @return string */ - private function replaceCwd($file) + private function replaceCwd(string $file): string { $cwd = \getcwd(); if ($cwd === false) { return $file; } - $cwd = \rtrim($cwd, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + $cwd = \rtrim($cwd, \DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR; - return \preg_replace('/^' . \preg_quote($cwd, '/') . '/', '', $file); + return \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); } } diff --git a/vendor/psy/psysh/src/Command/WtfCommand.php b/vendor/psy/psysh/src/Command/WtfCommand.php index a937af0ea..6626fb1bf 100644 --- a/vendor/psy/psysh/src/Command/WtfCommand.php +++ b/vendor/psy/psysh/src/Command/WtfCommand.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -54,7 +54,7 @@ class WtfCommand extends TraceCommand implements ContextAware ->setAliases(['last-exception', 'wtf?']) ->setDefinition([ new InputArgument('incredulity', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Number of lines to show.'), - new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show entire backtrace.'), + new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show entire backtrace.'), $grep, $insensitive, @@ -81,6 +81,8 @@ HELP /** * {@inheritdoc} + * + * @return int 0 if everything went fine, or an exit code */ protected function execute(InputInterface $input, OutputInterface $output) { @@ -92,19 +94,23 @@ HELP } $exception = $this->context->getLastException(); - $count = $input->getOption('all') ? PHP_INT_MAX : \max(3, \pow(2, \strlen($incredulity) + 1)); + $count = $input->getOption('all') ? \PHP_INT_MAX : \max(3, \pow(2, \strlen($incredulity) + 1)); $shell = $this->getApplication(); - $output->startPaging(); + + if ($output instanceof ShellOutput) { + $output->startPaging(); + } + do { $traceCount = \count($exception->getTrace()); - $showLines = $count; + $showLines = $count; // Show the whole trace if we'd only be hiding a few lines if ($traceCount < \max($count * 1.2, $count + 2)) { - $showLines = PHP_INT_MAX; + $showLines = \PHP_INT_MAX; } - $trace = $this->getBacktrace($exception, $showLines); + $trace = $this->getBacktrace($exception, $showLines); $moreLines = $traceCount - \count($trace); $output->writeln($shell->formatException($exception)); @@ -120,7 +126,10 @@ HELP $output->writeln(''); } } while ($exception = $exception->getPrevious()); - $output->stopPaging(); + + if ($output instanceof ShellOutput) { + $output->stopPaging(); + } return 0; } diff --git a/vendor/psy/psysh/src/ConfigPaths.php b/vendor/psy/psysh/src/ConfigPaths.php index c4de2d576..01260c6d1 100644 --- a/vendor/psy/psysh/src/ConfigPaths.php +++ b/vendor/psy/psysh/src/ConfigPaths.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,13 +11,93 @@ namespace Psy; -use XdgBaseDir\Xdg; - /** * A Psy Shell configuration path helper. */ class ConfigPaths { + private $configDir; + private $dataDir; + private $runtimeDir; + private $env; + + /** + * ConfigPaths constructor. + * + * Optionally provide `configDir`, `dataDir` and `runtimeDir` overrides. + * + * @see self::overrideDirs + * + * @param string[] $overrides Directory overrides + * @param EnvInterface $env + */ + public function __construct(array $overrides = [], EnvInterface $env = null) + { + $this->overrideDirs($overrides); + $this->env = $env ?: new SuperglobalsEnv(); + } + + /** + * Provide `configDir`, `dataDir` and `runtimeDir` overrides. + * + * If a key is set but empty, the override will be removed. If it is not set + * at all, any existing override will persist. + * + * @param string[] $overrides Directory overrides + */ + public function overrideDirs(array $overrides) + { + if (\array_key_exists('configDir', $overrides)) { + $this->configDir = $overrides['configDir'] ?: null; + } + + if (\array_key_exists('dataDir', $overrides)) { + $this->dataDir = $overrides['dataDir'] ?: null; + } + + if (\array_key_exists('runtimeDir', $overrides)) { + $this->runtimeDir = $overrides['runtimeDir'] ?: null; + } + } + + /** + * Get the current home directory. + * + * @return string|null + */ + public function homeDir() + { + if ($homeDir = $this->getEnv('HOME') ?: $this->windowsHomeDir()) { + return \strtr($homeDir, '\\', '/'); + } + + return null; + } + + private function windowsHomeDir() + { + if (\defined('PHP_WINDOWS_VERSION_MAJOR')) { + $homeDrive = $this->getEnv('HOMEDRIVE'); + $homePath = $this->getEnv('HOMEPATH'); + if ($homeDrive && $homePath) { + return $homeDrive.'/'.$homePath; + } + } + + return null; + } + + private function homeConfigDir() + { + if ($homeConfigDir = $this->getEnv('XDG_CONFIG_HOME')) { + return $homeConfigDir; + } + + $homeDir = $this->homeDir(); + + return $homeDir === '/' ? $homeDir.'.config' : $homeDir.'/.config'; + } + /** * Get potential config directory paths. * @@ -28,11 +108,23 @@ class ConfigPaths * * @return string[] */ - public static function getConfigDirs() + public function configDirs(): array { - $xdg = new Xdg(); + if ($this->configDir !== null) { + return [$this->configDir]; + } - return self::getDirNames($xdg->getConfigDirs()); + $configDirs = $this->getEnvArray('XDG_CONFIG_DIRS') ?: ['/etc/xdg']; + + return $this->allDirNames(\array_merge([$this->homeConfigDir()], $configDirs)); + } + + /** + * @deprecated + */ + public static function getConfigDirs(): array + { + return (new self())->configDirs(); } /** @@ -43,13 +135,14 @@ class ConfigPaths * * http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html * + * @deprecated + * * @return string[] */ - public static function getHomeConfigDirs() + public static function getHomeConfigDirs(): array { - $xdg = new Xdg(); - - return self::getDirNames([$xdg->getHomeConfigDir()]); + // Not quite the same, but this is deprecated anyway /shrug + return self::getConfigDirs(); } /** @@ -60,13 +153,18 @@ class ConfigPaths * config directory (`%APPDATA%/PsySH` on Windows, `~/.config/psysh` * everywhere else). * - * @see self::getHomeConfigDirs + * @see self::homeConfigDir * * @return string */ - public static function getCurrentConfigDir() + public function currentConfigDir(): string { - $configDirs = self::getHomeConfigDirs(); + if ($this->configDir !== null) { + return $this->configDir; + } + + $configDirs = $this->allDirNames([$this->homeConfigDir()]); + foreach ($configDirs as $configDir) { if (@\is_dir($configDir)) { return $configDir; @@ -76,19 +174,32 @@ class ConfigPaths return $configDirs[0]; } + /** + * @deprecated + */ + public static function getCurrentConfigDir(): string + { + return (new self())->currentConfigDir(); + } + /** * Find real config files in config directories. * - * @param string[] $names Config file names - * @param string $configDir Optionally use a specific config directory + * @param string[] $names Config file names * * @return string[] */ - public static function getConfigFiles(array $names, $configDir = null) + public function configFiles(array $names): array { - $dirs = ($configDir === null) ? self::getConfigDirs() : [$configDir]; + return $this->allRealFiles($this->configDirs(), $names); + } - return self::getRealFiles($dirs, $names); + /** + * @deprecated + */ + public static function getConfigFiles(array $names, $configDir = null): array + { + return (new self(['configDir' => $configDir]))->configFiles($names); } /** @@ -103,90 +214,159 @@ class ConfigPaths * * @return string[] */ - public static function getDataDirs() + public function dataDirs(): array { - $xdg = new Xdg(); + if ($this->dataDir !== null) { + return [$this->dataDir]; + } - return self::getDirNames($xdg->getDataDirs()); + $homeDataDir = $this->getEnv('XDG_DATA_HOME') ?: $this->homeDir().'/.local/share'; + $dataDirs = $this->getEnvArray('XDG_DATA_DIRS') ?: ['/usr/local/share', '/usr/share']; + + return $this->allDirNames(\array_merge([$homeDataDir], $dataDirs)); + } + + /** + * @deprecated + */ + public static function getDataDirs(): array + { + return (new self())->dataDirs(); } /** * Find real data files in config directories. * - * @param string[] $names Config file names - * @param string $dataDir Optionally use a specific config directory + * @param string[] $names Config file names * * @return string[] */ - public static function getDataFiles(array $names, $dataDir = null) + public function dataFiles(array $names): array { - $dirs = ($dataDir === null) ? self::getDataDirs() : [$dataDir]; + return $this->allRealFiles($this->dataDirs(), $names); + } - return self::getRealFiles($dirs, $names); + /** + * @deprecated + */ + public static function getDataFiles(array $names, $dataDir = null): array + { + return (new self(['dataDir' => $dataDir]))->dataFiles($names); } /** * Get a runtime directory. * - * Defaults to `/psysh` inside the system's temp dir. + * Defaults to `/psysh` inside the system's temp dir. * * @return string */ - public static function getRuntimeDir() + public function runtimeDir(): string { - $xdg = new Xdg(); - - \set_error_handler(['Psy\Exception\ErrorException', 'throwException']); - - try { - // XDG doesn't really work on Windows, sometimes complains about - // permissions, sometimes tries to remove non-empty directories. - // It's a bit flaky. So we'll give this a shot first... - $runtimeDir = $xdg->getRuntimeDir(false); - } catch (\Exception $e) { - // Well. That didn't work. Fall back to a boring old folder in the - // system temp dir. - $runtimeDir = \sys_get_temp_dir(); + if ($this->runtimeDir !== null) { + return $this->runtimeDir; } - \restore_error_handler(); + // Fallback to a boring old folder in the system temp dir. + $runtimeDir = $this->getEnv('XDG_RUNTIME_DIR') ?: \sys_get_temp_dir(); - return \strtr($runtimeDir, '\\', '/') . '/psysh'; + return \strtr($runtimeDir, '\\', '/').'/psysh'; } - private static function getDirNames(array $baseDirs) + /** + * @deprecated + */ + public static function getRuntimeDir(): string + { + return (new self())->runtimeDir(); + } + + /** + * Get a list of directories in PATH. + * + * If $PATH is unset/empty it defaults to '/usr/sbin:/usr/bin:/sbin:/bin'. + * + * @return string[] + */ + public function pathDirs(): array + { + return $this->getEnvArray('PATH') ?: ['/usr/sbin', '/usr/bin', '/sbin', '/bin']; + } + + /** + * Locate a command (an executable) in $PATH. + * + * Behaves like 'command -v COMMAND' or 'which COMMAND'. + * If $PATH is unset/empty it defaults to '/usr/sbin:/usr/bin:/sbin:/bin'. + * + * @param string $command the executable to locate + * + * @return string + */ + public function which($command) + { + foreach ($this->pathDirs() as $path) { + $fullpath = $path.\DIRECTORY_SEPARATOR.$command; + if (@\is_file($fullpath) && @\is_executable($fullpath)) { + return $fullpath; + } + } + + return null; + } + + /** + * Get all PsySH directory name candidates given a list of base directories. + * + * This expects that XDG-compatible directory paths will be passed in. + * `psysh` will be added to each of $baseDirs, and we'll throw in `~/.psysh` + * and a couple of Windows-friendly paths as well. + * + * @param string[] $baseDirs base directory paths + * + * @return string[] + */ + private function allDirNames(array $baseDirs): array { $dirs = \array_map(function ($dir) { - return \strtr($dir, '\\', '/') . '/psysh'; + return \strtr($dir, '\\', '/').'/psysh'; }, $baseDirs); // Add ~/.psysh - if ($home = \getenv('HOME')) { - $dirs[] = \strtr($home, '\\', '/') . '/.psysh'; + if ($home = $this->getEnv('HOME')) { + $dirs[] = \strtr($home, '\\', '/').'/.psysh'; } // Add some Windows specific ones :) if (\defined('PHP_WINDOWS_VERSION_MAJOR')) { - if ($appData = \getenv('APPDATA')) { + if ($appData = $this->getEnv('APPDATA')) { // AppData gets preference - \array_unshift($dirs, \strtr($appData, '\\', '/') . '/PsySH'); + \array_unshift($dirs, \strtr($appData, '\\', '/').'/PsySH'); } - $dir = \strtr(\getenv('HOMEDRIVE') . '/' . \getenv('HOMEPATH'), '\\', '/') . '/.psysh'; - if (!\in_array($dir, $dirs)) { - $dirs[] = $dir; + if ($windowsHomeDir = $this->windowsHomeDir()) { + $dir = \strtr($windowsHomeDir, '\\', '/').'/.psysh'; + if (!\in_array($dir, $dirs)) { + $dirs[] = $dir; + } } } return $dirs; } - private static function getRealFiles(array $dirNames, array $fileNames) + /** + * Given a list of directories, and a list of filenames, find the ones that + * are real files. + * + * @return string[] + */ + private function allRealFiles(array $dirNames, array $fileNames): array { $files = []; foreach ($dirNames as $dir) { foreach ($fileNames as $name) { - $file = $dir . '/' . $name; + $file = $dir.'/'.$name; if (@\is_file($file)) { $files[] = $file; } @@ -196,6 +376,31 @@ class ConfigPaths return $files; } + /** + * Ensure that $dir exists and is writable. + * + * Generates E_USER_NOTICE error if the directory is not writable or creatable. + * + * @param string $dir + * + * @return bool False if directory exists but is not writeable, or cannot be created + */ + public static function ensureDir(string $dir): bool + { + if (!\is_dir($dir)) { + // Just try making it and see if it works + @\mkdir($dir, 0700, true); + } + + if (!\is_dir($dir) || !\is_writable($dir)) { + \trigger_error(\sprintf('Writing to directory %s is not allowed.', $dir), \E_USER_NOTICE); + + return false; + } + + return true; + } + /** * Ensure that $file exists and is writable, make the parent directory if necessary. * @@ -205,28 +410,19 @@ class ConfigPaths * * @return string|false Full path to $file, or false if file is not writable */ - public static function touchFileWithMkdir($file) + public static function touchFileWithMkdir(string $file) { if (\file_exists($file)) { if (\is_writable($file)) { return $file; } - \trigger_error(\sprintf('Writing to %s is not allowed.', $file), E_USER_NOTICE); + \trigger_error(\sprintf('Writing to %s is not allowed.', $file), \E_USER_NOTICE); return false; } - $dir = \dirname($file); - - if (!\is_dir($dir)) { - // Just try making it and see if it works - @\mkdir($dir, 0700, true); - } - - if (!\is_dir($dir) || !\is_writable($dir)) { - \trigger_error(\sprintf('Writing to %s is not allowed.', $dir), E_USER_NOTICE); - + if (!self::ensureDir(\dirname($file))) { return false; } @@ -234,4 +430,18 @@ class ConfigPaths return $file; } + + private function getEnv($key) + { + return $this->env->get($key); + } + + private function getEnvArray($key) + { + if ($value = $this->getEnv($key)) { + return \explode(\PATH_SEPARATOR, $value); + } + + return null; + } } diff --git a/vendor/psy/psysh/src/Configuration.php b/vendor/psy/psysh/src/Configuration.php index 00ddbc173..afe36727a 100644 --- a/vendor/psy/psysh/src/Configuration.php +++ b/vendor/psy/psysh/src/Configuration.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,18 +13,19 @@ namespace Psy; use Psy\Exception\DeprecatedException; use Psy\Exception\RuntimeException; +use Psy\ExecutionLoop\ProcessForker; use Psy\Output\OutputPager; use Psy\Output\ShellOutput; -use Psy\Readline\GNUReadline; -use Psy\Readline\HoaConsole; -use Psy\Readline\Libedit; -use Psy\Readline\Readline; +use Psy\Output\Theme; use Psy\TabCompletion\AutoCompleter; use Psy\VarDumper\Presenter; use Psy\VersionUpdater\Checker; use Psy\VersionUpdater\GitHubChecker; use Psy\VersionUpdater\IntervalChecker; use Psy\VersionUpdater\NoopChecker; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -32,10 +33,20 @@ use Symfony\Component\Console\Output\OutputInterface; */ class Configuration { - const COLOR_MODE_AUTO = 'auto'; - const COLOR_MODE_FORCED = 'forced'; + const COLOR_MODE_AUTO = 'auto'; + const COLOR_MODE_FORCED = 'forced'; const COLOR_MODE_DISABLED = 'disabled'; + const INTERACTIVE_MODE_AUTO = 'auto'; + const INTERACTIVE_MODE_FORCED = 'forced'; + const INTERACTIVE_MODE_DISABLED = 'disabled'; + + const VERBOSITY_QUIET = 'quiet'; + const VERBOSITY_NORMAL = 'normal'; + const VERBOSITY_VERBOSE = 'verbose'; + const VERBOSITY_VERY_VERBOSE = 'very_verbose'; + const VERBOSITY_DEBUG = 'debug'; + private static $AVAILABLE_OPTIONS = [ 'codeCleaner', 'colorMode', @@ -45,20 +56,27 @@ class Configuration 'eraseDuplicates', 'errorLoggingLevel', 'forceArrayIndexes', + 'formatterStyles', + 'historyFile', 'historySize', + 'interactiveMode', 'manualDbFile', 'pager', 'prompt', + 'rawOutput', 'requireSemicolons', 'runtimeDir', 'startupMessage', + 'theme', 'updateCheck', 'useBracketedPaste', 'usePcntl', 'useReadline', 'useTabCompletion', 'useUnicode', + 'verbosity', 'warnOnMultipleConfigs', + 'yolo', ]; private $defaultIncludes; @@ -76,17 +94,27 @@ class Configuration private $useBracketedPaste; private $hasPcntl; private $usePcntl; - private $newCommands = []; + private $newCommands = []; + private $pipedInput; + private $pipedOutput; + private $rawOutput = false; private $requireSemicolons = false; private $useUnicode; private $useTabCompletion; private $newMatchers = []; - private $errorLoggingLevel = E_ALL; + private $errorLoggingLevel = \E_ALL; private $warnOnMultipleConfigs = false; - private $colorMode; + private $colorMode = self::COLOR_MODE_AUTO; + private $interactiveMode = self::INTERACTIVE_MODE_AUTO; private $updateCheck; private $startupMessage; private $forceArrayIndexes = false; + /** @deprecated */ + private $formatterStyles = []; + private $verbosity = self::VERBOSITY_NORMAL; + private $yolo = false; + /** @var Theme */ + private $theme; // services private $readline; @@ -99,6 +127,7 @@ class Configuration private $autoCompleter; private $checker; private $prompt; + private $configPaths; /** * Construct a Configuration instance. @@ -109,18 +138,18 @@ class Configuration */ public function __construct(array $config = []) { - $this->setColorMode(self::COLOR_MODE_AUTO); + $this->configPaths = new ConfigPaths(); // explicit configFile option if (isset($config['configFile'])) { $this->configFile = $config['configFile']; - } elseif ($configFile = \getenv('PSYSH_CONFIG')) { - $this->configFile = $configFile; + } elseif (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) { + $this->configFile = $_SERVER['PSYSH_CONFIG']; } // legacy baseDir option if (isset($config['baseDir'])) { - $msg = "The 'baseDir' configuration option is deprecated; " . + $msg = "The 'baseDir' configuration option is deprecated; ". "please specify 'configDir' and 'dataDir' options instead"; throw new DeprecatedException($msg); } @@ -132,6 +161,215 @@ class Configuration $this->init(); } + /** + * Construct a Configuration object from Symfony Console input. + * + * This is great for adding psysh-compatible command line options to framework- or app-specific + * wrappers. + * + * $input should already be bound to an appropriate InputDefinition (see self::getInputOptions + * if you want to build your own) before calling this method. It's not required, but things work + * a lot better if we do. + * + * @see self::getInputOptions + * + * @throws \InvalidArgumentException + * + * @param InputInterface $input + * + * @return self + */ + public static function fromInput(InputInterface $input): self + { + $config = new self(['configFile' => self::getConfigFileFromInput($input)]); + + // Handle --color and --no-color (and --ansi and --no-ansi aliases) + if (self::getOptionFromInput($input, ['color', 'ansi'])) { + $config->setColorMode(self::COLOR_MODE_FORCED); + } elseif (self::getOptionFromInput($input, ['no-color', 'no-ansi'])) { + $config->setColorMode(self::COLOR_MODE_DISABLED); + } + + // Handle verbosity options + if ($verbosity = self::getVerbosityFromInput($input)) { + $config->setVerbosity($verbosity); + } + + // Handle interactive mode + if (self::getOptionFromInput($input, ['interactive', 'interaction'], ['-a', '-i'])) { + $config->setInteractiveMode(self::INTERACTIVE_MODE_FORCED); + } elseif (self::getOptionFromInput($input, ['no-interactive', 'no-interaction'], ['-n'])) { + $config->setInteractiveMode(self::INTERACTIVE_MODE_DISABLED); + } + + // Handle --compact + if (self::getOptionFromInput($input, ['compact'])) { + $config->setTheme('compact'); + } + + // Handle --raw-output + // @todo support raw output with interactive input? + if (!$config->getInputInteractive()) { + if (self::getOptionFromInput($input, ['raw-output'], ['-r'])) { + $config->setRawOutput(true); + } + } + + // Handle --yolo + if (self::getOptionFromInput($input, ['yolo'])) { + $config->setYolo(true); + } + + return $config; + } + + /** + * Get the desired config file from the given input. + * + * @return string|null config file path, or null if none is specified + */ + private static function getConfigFileFromInput(InputInterface $input) + { + // Best case, input is properly bound and validated. + if ($input->hasOption('config')) { + return $input->getOption('config'); + } + + return $input->getParameterOption('--config', null, true) ?: $input->getParameterOption('-c', null, true); + } + + /** + * Get a boolean option from the given input. + * + * This helper allows fallback for unbound and unvalidated input. It's not perfect--for example, + * it can't deal with several short options squished together--but it's better than falling over + * any time someone gives us unbound input. + * + * @return bool true if the option (or an alias) is present + */ + private static function getOptionFromInput(InputInterface $input, array $names, array $otherParams = []): bool + { + // Best case, input is properly bound and validated. + foreach ($names as $name) { + if ($input->hasOption($name) && $input->getOption($name)) { + return true; + } + } + + foreach ($names as $name) { + $otherParams[] = '--'.$name; + } + + foreach ($otherParams as $name) { + if ($input->hasParameterOption($name, true)) { + return true; + } + } + + return false; + } + + /** + * Get the desired verbosity from the given input. + * + * This is a bit more complext than the other options parsers. It handles `--quiet` and + * `--verbose`, along with their short aliases, and fancy things like `-vvv`. + * + * @return string|null configuration constant, or null if no verbosity option is specified + */ + private static function getVerbosityFromInput(InputInterface $input) + { + // --quiet wins! + if (self::getOptionFromInput($input, ['quiet'], ['-q'])) { + return self::VERBOSITY_QUIET; + } + + // Best case, input is properly bound and validated. + // + // Note that if the `--verbose` option is incorrectly defined as `VALUE_NONE` rather than + // `VALUE_OPTIONAL` (as it is in Symfony Console by default) it doesn't actually work with + // multiple verbosity levels as it claims. + // + // We can detect this by checking whether the the value === true, and fall back to unbound + // parsing for this option. + if ($input->hasOption('verbose') && $input->getOption('verbose') !== true) { + switch ($input->getOption('verbose')) { + case '-1': + return self::VERBOSITY_QUIET; + case '0': // explicitly normal, overrides config file default + return self::VERBOSITY_NORMAL; + case '1': + case null: // `--verbose` and `-v` + return self::VERBOSITY_VERBOSE; + case '2': + case 'v': // `-vv` + return self::VERBOSITY_VERY_VERBOSE; + case '3': + case 'vv': // `-vvv` + return self::VERBOSITY_DEBUG; + default: // implicitly normal, config file default wins + return; + } + } + + // quiet and normal have to come before verbose, because it eats everything else. + if ($input->hasParameterOption('--verbose=-1', true) || $input->getParameterOption('--verbose', false, true) === '-1') { + return self::VERBOSITY_QUIET; + } + + if ($input->hasParameterOption('--verbose=0', true) || $input->getParameterOption('--verbose', false, true) === '0') { + return self::VERBOSITY_NORMAL; + } + + // `-vvv`, `-vv` and `-v` have to come in descending length order, because `hasParameterOption` matches prefixes. + if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || $input->getParameterOption('--verbose', false, true) === '3') { + return self::VERBOSITY_DEBUG; + } + + if ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || $input->getParameterOption('--verbose', false, true) === '2') { + return self::VERBOSITY_VERY_VERBOSE; + } + + if ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true)) { + return self::VERBOSITY_VERBOSE; + } + } + + /** + * Get a list of input options expected when initializing Configuration via input. + * + * @see self::fromInput + * + * @return InputOption[] + */ + public static function getInputOptions(): array + { + return [ + new InputOption('config', 'c', InputOption::VALUE_REQUIRED, 'Use an alternate PsySH config file location.'), + new InputOption('cwd', null, InputOption::VALUE_REQUIRED, 'Use an alternate working directory.'), + + new InputOption('color', null, InputOption::VALUE_NONE, 'Force colors in output.'), + new InputOption('no-color', null, InputOption::VALUE_NONE, 'Disable colors in output.'), + // --ansi and --no-ansi aliases to match Symfony, Composer, etc. + new InputOption('ansi', null, InputOption::VALUE_NONE, 'Force colors in output.'), + new InputOption('no-ansi', null, InputOption::VALUE_NONE, 'Disable colors in output.'), + + new InputOption('quiet', 'q', InputOption::VALUE_NONE, 'Shhhhhh.'), + new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_OPTIONAL, 'Increase the verbosity of messages.', '0'), + new InputOption('compact', null, InputOption::VALUE_NONE, 'Run PsySH with compact output.'), + new InputOption('interactive', 'i|a', InputOption::VALUE_NONE, 'Force PsySH to run in interactive mode.'), + new InputOption('no-interactive', 'n', InputOption::VALUE_NONE, 'Run PsySH without interactive input. Requires input from stdin.'), + // --interaction and --no-interaction aliases for compatibility with Symfony, Composer, etc + new InputOption('interaction', null, InputOption::VALUE_NONE, 'Force PsySH to run in interactive mode.'), + new InputOption('no-interaction', null, InputOption::VALUE_NONE, 'Run PsySH without interactive input. Requires input from stdin.'), + new InputOption('raw-output', 'r', InputOption::VALUE_NONE, 'Print var_export-style return values (for non-interactive input)'), + + new InputOption('self-update', 'u', InputOption::VALUE_NONE, 'Update to the latest version'), + + new InputOption('yolo', null, InputOption::VALUE_NONE, 'Run PsySH with minimal input validation. You probably don\'t want this.'), + ]; + } + /** * Initialize the configuration. * @@ -146,7 +384,7 @@ class Configuration { // feature detection $this->hasReadline = \function_exists('readline'); - $this->hasPcntl = \function_exists('pcntl_signal') && \function_exists('posix_getpid'); + $this->hasPcntl = ProcessForker::isSupported(); if ($configFile = $this->getConfigFile()) { $this->loadConfigFile($configFile); @@ -155,6 +393,12 @@ class Configuration if (!$this->configFile && $localConfig = $this->getLocalConfigFile()) { $this->loadConfigFile($localConfig); } + + $this->configPaths->overrideDirs([ + 'configDir' => $this->configDir, + 'dataDir' => $this->dataDir, + 'runtimeDir' => $this->runtimeDir, + ]); } /** @@ -169,7 +413,7 @@ class Configuration * * ~/.config/psysh/config.php * - * @return string + * @return string|null */ public function getConfigFile() { @@ -177,12 +421,12 @@ class Configuration return $this->configFile; } - $files = ConfigPaths::getConfigFiles(['config.php', 'rc.php'], $this->configDir); + $files = $this->configPaths->configFiles(['config.php', 'rc.php']); if (!empty($files)) { if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple configuration files found: %s. Using %s', \implode($files, ', '), $files[0]); - \trigger_error($msg, E_USER_NOTICE); + $msg = \sprintf('Multiple configuration files found: %s. Using %s', \implode(', ', $files), $files[0]); + \trigger_error($msg, \E_USER_NOTICE); } return $files[0]; @@ -195,11 +439,11 @@ class Configuration * Searches for a project specific config file `.psysh.php` in the current * working directory. * - * @return string + * @return string|null */ public function getLocalConfigFile() { - $localConfig = \getcwd() . '/.psysh.php'; + $localConfig = \getcwd().'/.psysh.php'; if (@\is_file($localConfig)) { return $localConfig; @@ -215,7 +459,7 @@ class Configuration { foreach (self::$AVAILABLE_OPTIONS as $option) { if (isset($options[$option])) { - $method = 'set' . \ucfirst($option); + $method = 'set'.\ucfirst($option); $this->$method($options[$option]); } } @@ -223,14 +467,14 @@ class Configuration // legacy `tabCompletion` option if (isset($options['tabCompletion'])) { $msg = '`tabCompletion` is deprecated; use `useTabCompletion` instead.'; - @\trigger_error($msg, E_USER_DEPRECATED); + @\trigger_error($msg, \E_USER_DEPRECATED); $this->setUseTabCompletion($options['tabCompletion']); } foreach (['commands', 'matchers', 'casters'] as $option) { if (isset($options[$option])) { - $method = 'add' . \ucfirst($option); + $method = 'add'.\ucfirst($option); $this->$method($options[$option]); } } @@ -238,7 +482,7 @@ class Configuration // legacy `tabCompletionMatchers` option if (isset($options['tabCompletionMatchers'])) { $msg = '`tabCompletionMatchers` is deprecated; use `matchers` instead.'; - @\trigger_error($msg, E_USER_DEPRECATED); + @\trigger_error($msg, \E_USER_DEPRECATED); $this->addMatchers($options['tabCompletionMatchers']); } @@ -251,12 +495,16 @@ class Configuration * The config file may directly manipulate the configuration, or may return * an array of options which will be merged with the current configuration. * - * @throws \InvalidArgumentException if the config file returns a non-array result + * @throws \InvalidArgumentException if the config file does not exist or returns a non-array result * * @param string $file */ - public function loadConfigFile($file) + public function loadConfigFile(string $file) { + if (!\is_file($file)) { + throw new \InvalidArgumentException(\sprintf('Invalid configuration file specified, %s does not exist', $file)); + } + $__psysh_config_file__ = $file; $load = function ($config) use ($__psysh_config_file__) { $result = require $__psysh_config_file__; @@ -290,7 +538,7 @@ class Configuration * * @return array */ - public function getDefaultIncludes() + public function getDefaultIncludes(): array { return $this->defaultIncludes ?: []; } @@ -300,15 +548,21 @@ class Configuration * * @param string $dir */ - public function setConfigDir($dir) + public function setConfigDir(string $dir) { $this->configDir = (string) $dir; + + $this->configPaths->overrideDirs([ + 'configDir' => $this->configDir, + 'dataDir' => $this->dataDir, + 'runtimeDir' => $this->runtimeDir, + ]); } /** * Get the current configuration directory, if any is explicitly set. * - * @return string + * @return string|null */ public function getConfigDir() { @@ -320,15 +574,21 @@ class Configuration * * @param string $dir */ - public function setDataDir($dir) + public function setDataDir(string $dir) { $this->dataDir = (string) $dir; + + $this->configPaths->overrideDirs([ + 'configDir' => $this->configDir, + 'dataDir' => $this->dataDir, + 'runtimeDir' => $this->runtimeDir, + ]); } /** * Get the current data directory, if any is explicitly set. * - * @return string + * @return string|null */ public function getDataDir() { @@ -340,9 +600,15 @@ class Configuration * * @param string $dir */ - public function setRuntimeDir($dir) + public function setRuntimeDir(string $dir) { $this->runtimeDir = (string) $dir; + + $this->configPaths->overrideDirs([ + 'configDir' => $this->configDir, + 'dataDir' => $this->dataDir, + 'runtimeDir' => $this->runtimeDir, + ]); } /** @@ -351,19 +617,21 @@ class Configuration * Defaults to `/psysh` inside the system's temp dir unless explicitly * overridden. * + * @throws RuntimeException if no temporary directory is set and it is not possible to create one + * * @return string */ - public function getRuntimeDir() + public function getRuntimeDir(): string { - if (!isset($this->runtimeDir)) { - $this->runtimeDir = ConfigPaths::getRuntimeDir(); + $runtimeDir = $this->configPaths->runtimeDir(); + + if (!\is_dir($runtimeDir)) { + if (!@\mkdir($runtimeDir, 0700, true)) { + throw new RuntimeException(\sprintf('Unable to create PsySH runtime directory. Make sure PHP is able to write to %s in order to continue.', \dirname($runtimeDir))); + } } - if (!\is_dir($this->runtimeDir)) { - \mkdir($this->runtimeDir, 0700, true); - } - - return $this->runtimeDir; + return $runtimeDir; } /** @@ -371,7 +639,7 @@ class Configuration * * @param string $file */ - public function setHistoryFile($file) + public function setHistoryFile(string $file) { $this->historyFile = ConfigPaths::touchFileWithMkdir($file); } @@ -384,25 +652,24 @@ class Configuration * * @return string */ - public function getHistoryFile() + public function getHistoryFile(): string { if (isset($this->historyFile)) { return $this->historyFile; } - $files = ConfigPaths::getConfigFiles(['psysh_history', 'history'], $this->configDir); + $files = $this->configPaths->configFiles(['psysh_history', 'history']); if (!empty($files)) { if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple history files found: %s. Using %s', \implode($files, ', '), $files[0]); - \trigger_error($msg, E_USER_NOTICE); + $msg = \sprintf('Multiple history files found: %s. Using %s', \implode(', ', $files), $files[0]); + \trigger_error($msg, \E_USER_NOTICE); } $this->setHistoryFile($files[0]); } else { // fallback: create our own history file - $dir = $this->configDir ?: ConfigPaths::getCurrentConfigDir(); - $this->setHistoryFile($dir . '/psysh_history'); + $this->setHistoryFile($this->configPaths->currentConfigDir().'/psysh_history'); } return $this->historyFile; @@ -413,7 +680,7 @@ class Configuration * * @param int $value */ - public function setHistorySize($value) + public function setHistorySize(int $value) { $this->historySize = (int) $value; } @@ -433,7 +700,7 @@ class Configuration * * @param bool $value */ - public function setEraseDuplicates($value) + public function setEraseDuplicates(bool $value) { $this->eraseDuplicates = (bool) $value; } @@ -441,7 +708,7 @@ class Configuration /** * Get whether readline erases old duplicate history entries. * - * @return bool + * @return bool|null */ public function getEraseDuplicates() { @@ -460,9 +727,9 @@ class Configuration * * @return string Temporary file name */ - public function getTempFile($type, $pid) + public function getTempFile(string $type, int $pid): string { - return \tempnam($this->getRuntimeDir(), $type . '_' . $pid . '_'); + return \tempnam($this->getRuntimeDir(), $type.'_'.$pid.'_'); } /** @@ -475,7 +742,7 @@ class Configuration * * @return string Pipe name */ - public function getPipe($type, $pid) + public function getPipe(string $type, int $pid): string { return \sprintf('%s/%s_%s', $this->getRuntimeDir(), $type, $pid); } @@ -485,7 +752,7 @@ class Configuration * * @return bool True if Readline is available */ - public function hasReadline() + public function hasReadline(): bool { return $this->hasReadline; } @@ -495,7 +762,7 @@ class Configuration * * @param bool $useReadline */ - public function setUseReadline($useReadline) + public function setUseReadline(bool $useReadline) { $this->useReadline = (bool) $useReadline; } @@ -508,7 +775,7 @@ class Configuration * * @return bool True if the current Shell should use Readline */ - public function useReadline() + public function useReadline(): bool { return isset($this->useReadline) ? ($this->hasReadline && $this->useReadline) : $this->hasReadline; } @@ -516,9 +783,9 @@ class Configuration /** * Set the Psy Shell readline service. * - * @param Readline $readline + * @param Readline\Readline $readline */ - public function setReadline(Readline $readline) + public function setReadline(Readline\Readline $readline) { $this->readline = $readline; } @@ -532,9 +799,9 @@ class Configuration * * Libedit * * A transient array-based readline emulation. * - * @return Readline + * @return Readline\Readline */ - public function getReadline() + public function getReadline(): Readline\Readline { if (!isset($this->readline)) { $className = $this->getReadlineClass(); @@ -555,19 +822,21 @@ class Configuration * * @return string */ - private function getReadlineClass() + private function getReadlineClass(): string { if ($this->useReadline()) { - if (GNUReadline::isSupported()) { - return 'Psy\Readline\GNUReadline'; - } elseif (Libedit::isSupported()) { - return 'Psy\Readline\Libedit'; - } elseif (HoaConsole::isSupported()) { - return 'Psy\Readline\HoaConsole'; + if (Readline\GNUReadline::isSupported()) { + return Readline\GNUReadline::class; + } elseif (Readline\Libedit::isSupported()) { + return Readline\Libedit::class; } } - return 'Psy\Readline\Transient'; + if (Readline\Userland::isSupported()) { + return Readline\Userland::class; + } + + return Readline\Transient::class; } /** @@ -577,7 +846,7 @@ class Configuration * * @param bool $useBracketedPaste */ - public function setUseBracketedPaste($useBracketedPaste) + public function setUseBracketedPaste(bool $useBracketedPaste) { $this->useBracketedPaste = (bool) $useBracketedPaste; } @@ -597,15 +866,14 @@ class Configuration * * @return bool True if the shell should use bracketed paste */ - public function useBracketedPaste() + public function useBracketedPaste(): bool { - // For now, only the GNU readline implementation supports bracketed paste. - $supported = ($this->getReadlineClass() === 'Psy\Readline\GNUReadline'); + $readlineClass = $this->getReadlineClass(); - return $supported && $this->useBracketedPaste; + return $this->useBracketedPaste && $readlineClass::supportsBracketedPaste(); // @todo mebbe turn this on by default some day? - // return isset($this->useBracketedPaste) ? ($supported && $this->useBracketedPaste) : $supported; + // return $readlineClass::supportsBracketedPaste() && $this->useBracketedPaste !== false; } /** @@ -613,7 +881,7 @@ class Configuration * * @return bool True if Pcntl is available */ - public function hasPcntl() + public function hasPcntl(): bool { return $this->hasPcntl; } @@ -623,7 +891,7 @@ class Configuration * * @param bool $usePcntl */ - public function setUsePcntl($usePcntl) + public function setUsePcntl(bool $usePcntl) { $this->usePcntl = (bool) $usePcntl; } @@ -636,9 +904,42 @@ class Configuration * * @return bool True if the current Shell should use Pcntl */ - public function usePcntl() + public function usePcntl(): bool { - return isset($this->usePcntl) ? ($this->hasPcntl && $this->usePcntl) : $this->hasPcntl; + if (!isset($this->usePcntl)) { + // Unless pcntl is explicitly *enabled*, don't use it while XDebug is debugging. + // See https://github.com/bobthecow/psysh/issues/742 + if (\function_exists('xdebug_is_debugger_active') && \xdebug_is_debugger_active()) { + return false; + } + + return $this->hasPcntl; + } + + return $this->hasPcntl && $this->usePcntl; + } + + /** + * Check whether to use raw output. + * + * This is set by the --raw-output (-r) flag, and really only makes sense + * when non-interactive, e.g. executing stdin. + * + * @return bool true if raw output is enabled + */ + public function rawOutput(): bool + { + return $this->rawOutput; + } + + /** + * Enable or disable raw output. + * + * @param bool $rawOutput + */ + public function setRawOutput(bool $rawOutput) + { + $this->rawOutput = (bool) $rawOutput; } /** @@ -648,7 +949,7 @@ class Configuration * * @param bool $requireSemicolons */ - public function setRequireSemicolons($requireSemicolons) + public function setRequireSemicolons(bool $requireSemicolons) { $this->requireSemicolons = (bool) $requireSemicolons; } @@ -662,7 +963,7 @@ class Configuration * * @return bool */ - public function requireSemicolons() + public function requireSemicolons(): bool { return $this->requireSemicolons; } @@ -675,7 +976,7 @@ class Configuration * * @param bool $useUnicode */ - public function setUseUnicode($useUnicode) + public function setUseUnicode(bool $useUnicode) { $this->useUnicode = (bool) $useUnicode; } @@ -688,7 +989,7 @@ class Configuration * * @return bool */ - public function useUnicode() + public function useUnicode(): bool { if (isset($this->useUnicode)) { return $this->useUnicode; @@ -703,19 +1004,18 @@ class Configuration * * @see self::errorLoggingLevel * - * @param bool $errorLoggingLevel + * @param int $errorLoggingLevel */ public function setErrorLoggingLevel($errorLoggingLevel) { - $this->errorLoggingLevel = (E_ALL | E_STRICT) & $errorLoggingLevel; + $this->errorLoggingLevel = (\E_ALL | \E_STRICT) & $errorLoggingLevel; } /** * Get the current error logging level. * * By default, PsySH will automatically log all errors, regardless of the - * current `error_reporting` level. Additionally, if the `error_reporting` - * level warrants, an ErrorException will be thrown. + * current `error_reporting` level. * * Set `errorLoggingLevel` to 0 to prevent logging non-thrown errors. Set it * to any valid error_reporting value to log only errors which match that @@ -725,7 +1025,7 @@ class Configuration * * @return int */ - public function errorLoggingLevel() + public function errorLoggingLevel(): int { return $this->errorLoggingLevel; } @@ -747,21 +1047,39 @@ class Configuration * * @return CodeCleaner */ - public function getCodeCleaner() + public function getCodeCleaner(): CodeCleaner { if (!isset($this->cleaner)) { - $this->cleaner = new CodeCleaner(); + $this->cleaner = new CodeCleaner(null, null, null, $this->yolo()); } return $this->cleaner; } + /** + * Enable or disable running PsySH without input validation. + * + * You don't want this. + */ + public function setYolo($yolo) + { + $this->yolo = (bool) $yolo; + } + + /** + * Check whether to disable input validation. + */ + public function yolo(): bool + { + return $this->yolo; + } + /** * Enable or disable tab completion. * * @param bool $useTabCompletion */ - public function setUseTabCompletion($useTabCompletion) + public function setUseTabCompletion(bool $useTabCompletion) { $this->useTabCompletion = (bool) $useTabCompletion; } @@ -771,7 +1089,7 @@ class Configuration * * @param bool $useTabCompletion */ - public function setTabCompletion($useTabCompletion) + public function setTabCompletion(bool $useTabCompletion) { $this->setUseTabCompletion($useTabCompletion); } @@ -784,7 +1102,7 @@ class Configuration * * @return bool True if the current Shell should use tab completion */ - public function useTabCompletion() + public function useTabCompletion(): bool { return isset($this->useTabCompletion) ? ($this->hasReadline && $this->useTabCompletion) : $this->hasReadline; } @@ -794,7 +1112,7 @@ class Configuration * * @return bool */ - public function getTabCompletion() + public function getTabCompletion(): bool { return $this->useTabCompletion(); } @@ -807,27 +1125,44 @@ class Configuration public function setOutput(ShellOutput $output) { $this->output = $output; + $this->pipedOutput = null; // Reset cached pipe info + + if (isset($this->theme)) { + $output->setTheme($this->theme); + } + + $this->applyFormatterStyles(); } /** * Get a Shell Output service instance. * * If none has been explicitly provided, this will create a new instance - * with VERBOSITY_NORMAL and the output page supplied by self::getPager + * with the configured verbosity and output pager supplied by self::getPager * + * @see self::verbosity * @see self::getPager * * @return ShellOutput */ - public function getOutput() + public function getOutput(): ShellOutput { if (!isset($this->output)) { - $this->output = new ShellOutput( - OutputInterface::VERBOSITY_NORMAL, - $this->getOutputDecorated(), + $this->setOutput(new ShellOutput( + $this->getOutputVerbosity(), null, - $this->getPager() - ); + null, + $this->getPager() ?: null, + $this->theme() + )); + + // This is racy because `getOutputDecorated` needs access to the + // output stream to figure out if it's piped or not, so create it + // first, then update after we have a stream. + $decorated = $this->getOutputDecorated(); + if ($decorated !== null) { + $this->output->setDecorated($decorated); + } } return $this->output; @@ -836,16 +1171,36 @@ class Configuration /** * Get the decoration (i.e. color) setting for the Shell Output service. * - * @return null|bool 3-state boolean corresponding to the current color mode + * @return bool|null 3-state boolean corresponding to the current color mode */ public function getOutputDecorated() { - if ($this->colorMode() === self::COLOR_MODE_AUTO) { - return; - } elseif ($this->colorMode() === self::COLOR_MODE_FORCED) { - return true; - } elseif ($this->colorMode() === self::COLOR_MODE_DISABLED) { - return false; + switch ($this->colorMode()) { + case self::COLOR_MODE_FORCED: + return true; + case self::COLOR_MODE_DISABLED: + return false; + case self::COLOR_MODE_AUTO: + default: + return $this->outputIsPiped() ? false : null; + } + } + + /** + * Get the interactive setting for shell input. + * + * @return bool + */ + public function getInputInteractive(): bool + { + switch ($this->interactiveMode()) { + case self::INTERACTIVE_MODE_FORCED: + return true; + case self::INTERACTIVE_MODE_DISABLED: + return false; + case self::INTERACTIVE_MODE_AUTO: + default: + return !$this->inputIsPiped(); } } @@ -855,13 +1210,19 @@ class Configuration * If a string is supplied, a ProcOutputPager will be used which shells out * to the specified command. * + * `cat` is special-cased to use the PassthruPager directly. + * * @throws \InvalidArgumentException if $pager is not a string or OutputPager instance * - * @param string|OutputPager $pager + * @param string|OutputPager|false $pager */ public function setPager($pager) { - if ($pager && !\is_string($pager) && !$pager instanceof OutputPager) { + if ($pager === null || $pager === false || $pager === 'cat') { + $pager = false; + } + + if ($pager !== false && !\is_string($pager) && !$pager instanceof OutputPager) { throw new \InvalidArgumentException('Unexpected pager instance'); } @@ -874,17 +1235,21 @@ class Configuration * If no Pager has been explicitly provided, and Pcntl is available, this * will default to `cli.pager` ini value, falling back to `which less`. * - * @return string|OutputPager + * @return string|OutputPager|false */ public function getPager() { if (!isset($this->pager) && $this->usePcntl()) { + if (\getenv('TERM') === 'dumb') { + return false; + } + if ($pager = \ini_get('cli.pager')) { // use the default pager $this->pager = $pager; - } elseif ($less = \exec('which less 2>/dev/null')) { + } elseif ($less = $this->configPaths->which('less')) { // check for the presence of less... - $this->pager = $less . ' -R -S -F -X'; + $this->pager = $less.' -R -F -X'; } } @@ -906,7 +1271,7 @@ class Configuration * * @return AutoCompleter */ - public function getAutoCompleter() + public function getAutoCompleter(): AutoCompleter { if (!isset($this->autoCompleter)) { $this->autoCompleter = new AutoCompleter(); @@ -920,7 +1285,7 @@ class Configuration * * @return array */ - public function getTabCompletionMatchers() + public function getTabCompletionMatchers(): array { return []; } @@ -1015,7 +1380,7 @@ class Configuration * * @param string $filename */ - public function setManualDbFile($filename) + public function setManualDbFile(string $filename) { $this->manualDbFile = (string) $filename; } @@ -1023,7 +1388,7 @@ class Configuration /** * Get the current PHP manual database file. * - * @return string Default: '~/.local/share/psysh/php_manual.sqlite' + * @return string|null Default: '~/.local/share/psysh/php_manual.sqlite' */ public function getManualDbFile() { @@ -1031,11 +1396,11 @@ class Configuration return $this->manualDbFile; } - $files = ConfigPaths::getDataFiles(['php_manual.sqlite'], $this->dataDir); + $files = $this->configPaths->dataFiles(['php_manual.sqlite']); if (!empty($files)) { if ($this->warnOnMultipleConfigs && \count($files) > 1) { - $msg = \sprintf('Multiple manual database files found: %s. Using %s', \implode($files, ', '), $files[0]); - \trigger_error($msg, E_USER_NOTICE); + $msg = \sprintf('Multiple manual database files found: %s. Using %s', \implode(', ', $files), $files[0]); + \trigger_error($msg, \E_USER_NOTICE); } return $this->manualDbFile = $files[0]; @@ -1045,15 +1410,15 @@ class Configuration /** * Get a PHP manual database connection. * - * @return \PDO + * @return \PDO|null */ public function getManualDb() { if (!isset($this->manualDb)) { $dbFile = $this->getManualDbFile(); - if (\is_file($dbFile)) { + if ($dbFile !== null && \is_file($dbFile)) { try { - $this->manualDb = new \PDO('sqlite:' . $dbFile); + $this->manualDb = new \PDO('sqlite:'.$dbFile); } catch (\PDOException $e) { if ($e->getMessage() === 'could not find driver') { throw new RuntimeException('SQLite PDO driver not found', 0, $e); @@ -1082,7 +1447,7 @@ class Configuration * * @return Presenter */ - public function getPresenter() + public function getPresenter(): Presenter { if (!isset($this->presenter)) { $this->presenter = new Presenter($this->getOutput()->getFormatter(), $this->forceArrayIndexes()); @@ -1098,7 +1463,7 @@ class Configuration * * @param bool $warnOnMultipleConfigs */ - public function setWarnOnMultipleConfigs($warnOnMultipleConfigs) + public function setWarnOnMultipleConfigs(bool $warnOnMultipleConfigs) { $this->warnOnMultipleConfigs = (bool) $warnOnMultipleConfigs; } @@ -1115,7 +1480,7 @@ class Configuration * * @return bool */ - public function warnOnMultipleConfigs() + public function warnOnMultipleConfigs(): bool { return $this->warnOnMultipleConfigs; } @@ -1125,7 +1490,7 @@ class Configuration * * @param string $colorMode */ - public function setColorMode($colorMode) + public function setColorMode(string $colorMode) { $validColorModes = [ self::COLOR_MODE_AUTO, @@ -1133,11 +1498,11 @@ class Configuration self::COLOR_MODE_DISABLED, ]; - if (\in_array($colorMode, $validColorModes)) { - $this->colorMode = $colorMode; - } else { - throw new \InvalidArgumentException('invalid color mode: ' . $colorMode); + if (!\in_array($colorMode, $validColorModes)) { + throw new \InvalidArgumentException('Invalid color mode: '.$colorMode); } + + $this->colorMode = $colorMode; } /** @@ -1145,11 +1510,43 @@ class Configuration * * @return string */ - public function colorMode() + public function colorMode(): string { return $this->colorMode; } + /** + * Set the shell's interactive mode. + * + * @throws \InvalidArgumentException if interactive mode isn't disabled, forced, or auto + * + * @param string $interactiveMode + */ + public function setInteractiveMode(string $interactiveMode) + { + $validInteractiveModes = [ + self::INTERACTIVE_MODE_AUTO, + self::INTERACTIVE_MODE_FORCED, + self::INTERACTIVE_MODE_DISABLED, + ]; + + if (!\in_array($interactiveMode, $validInteractiveModes)) { + throw new \InvalidArgumentException('Invalid interactive mode: '.$interactiveMode); + } + + $this->interactiveMode = $interactiveMode; + } + + /** + * Get the current interactive mode. + * + * @return string + */ + public function interactiveMode(): string + { + return $this->interactiveMode; + } + /** * Set an update checker service instance. * @@ -1167,7 +1564,7 @@ class Configuration * * @return Checker */ - public function getChecker() + public function getChecker(): Checker { if (!isset($this->checker)) { $interval = $this->getUpdateCheck(); @@ -1204,7 +1601,7 @@ class Configuration * * @return string */ - public function getUpdateCheck() + public function getUpdateCheck(): string { return isset($this->updateCheck) ? $this->updateCheck : Checker::WEEKLY; } @@ -1212,11 +1609,11 @@ class Configuration /** * Set the update check interval. * - * @throws \InvalidArgumentDescription if the update check interval is unknown + * @throws \InvalidArgumentException if the update check interval is unknown * * @param string $interval */ - public function setUpdateCheck($interval) + public function setUpdateCheck(string $interval) { $validIntervals = [ Checker::ALWAYS, @@ -1227,7 +1624,7 @@ class Configuration ]; if (!\in_array($interval, $validIntervals)) { - throw new \InvalidArgumentException('invalid update check interval: ' . $interval); + throw new \InvalidArgumentException('Invalid update check interval: '.$interval); } $this->updateCheck = $interval; @@ -1240,9 +1637,7 @@ class Configuration */ public function getUpdateCheckCacheFile() { - $dir = $this->configDir ?: ConfigPaths::getCurrentConfigDir(); - - return ConfigPaths::touchFileWithMkdir($dir . '/update_check.json'); + return ConfigPaths::touchFileWithMkdir($this->configPaths->currentConfigDir().'/update_check.json'); } /** @@ -1250,7 +1645,7 @@ class Configuration * * @param string $message */ - public function setStartupMessage($message) + public function setStartupMessage(string $message) { $this->startupMessage = $message; } @@ -1270,7 +1665,7 @@ class Configuration * * @param string $prompt */ - public function setPrompt($prompt) + public function setPrompt(string $prompt) { $this->prompt = $prompt; } @@ -1278,7 +1673,7 @@ class Configuration /** * Get the prompt. * - * @return string + * @return string|null */ public function getPrompt() { @@ -1290,7 +1685,7 @@ class Configuration * * @return bool */ - public function forceArrayIndexes() + public function forceArrayIndexes(): bool { return $this->forceArrayIndexes; } @@ -1300,8 +1695,204 @@ class Configuration * * @param bool $forceArrayIndexes */ - public function setForceArrayIndexes($forceArrayIndexes) + public function setForceArrayIndexes(bool $forceArrayIndexes) { $this->forceArrayIndexes = $forceArrayIndexes; } + + /** + * Set the current output Theme. + * + * @param Theme|string|array $theme Theme (or Theme config) + */ + public function setTheme($theme) + { + if (!$theme instanceof Theme) { + $theme = new Theme($theme); + } + + $this->theme = $theme; + + if (isset($this->output)) { + $this->output->setTheme($theme); + $this->applyFormatterStyles(); + } + } + + /** + * Get the current output Theme. + */ + public function theme(): Theme + { + if (!isset($this->theme)) { + $this->theme = new Theme(); + } + + return $this->theme; + } + + /** + * Set the shell output formatter styles. + * + * Accepts a map from style name to [fg, bg, options], for example: + * + * [ + * 'error' => ['white', 'red', ['bold']], + * 'warning' => ['black', 'yellow'], + * ] + * + * Foreground, background or options can be null, or even omitted entirely. + * + * @deprecated The `formatterStyles` configuration has been replaced by Themes and support will + * eventually be removed. In the meantime, styles are applied first by the Theme, then + * overridden by any explicitly defined formatter styles. + */ + public function setFormatterStyles(array $formatterStyles) + { + foreach ($formatterStyles as $name => $style) { + $this->formatterStyles[$name] = new OutputFormatterStyle(...$style); + } + + if (isset($this->output)) { + $this->applyFormatterStyles(); + } + } + + /** + * Internal method for applying output formatter style customization. + * + * This is called on initialization of the shell output, and again if the + * formatter styles config is updated. + * + * @deprecated The `formatterStyles` configuration has been replaced by Themes and support will + * eventually be removed. In the meantime, styles are applied first by the Theme, then + * overridden by any explicitly defined formatter styles. + */ + private function applyFormatterStyles() + { + $formatter = $this->output->getFormatter(); + foreach ($this->formatterStyles as $name => $style) { + $formatter->setStyle($name, $style); + } + + $errorFormatter = $this->output->getErrorOutput()->getFormatter(); + foreach (Theme::ERROR_STYLES as $name) { + if (isset($this->formatterStyles[$name])) { + $errorFormatter->setStyle($name, $this->formatterStyles[$name]); + } + } + } + + /** + * Get the configured output verbosity. + * + * @return string + */ + public function verbosity(): string + { + return $this->verbosity; + } + + /** + * Set the shell output verbosity. + * + * Accepts OutputInterface verbosity constants. + * + * @throws \InvalidArgumentException if verbosity level is invalid + * + * @param string $verbosity + */ + public function setVerbosity(string $verbosity) + { + $validVerbosityLevels = [ + self::VERBOSITY_QUIET, + self::VERBOSITY_NORMAL, + self::VERBOSITY_VERBOSE, + self::VERBOSITY_VERY_VERBOSE, + self::VERBOSITY_DEBUG, + ]; + + if (!\in_array($verbosity, $validVerbosityLevels)) { + throw new \InvalidArgumentException('Invalid verbosity level: '.$verbosity); + } + + $this->verbosity = $verbosity; + + if (isset($this->output)) { + $this->output->setVerbosity($this->getOutputVerbosity()); + } + } + + /** + * Map the verbosity configuration to OutputInterface verbosity constants. + * + * @return int OutputInterface verbosity level + */ + public function getOutputVerbosity(): int + { + switch ($this->verbosity()) { + case self::VERBOSITY_QUIET: + return OutputInterface::VERBOSITY_QUIET; + case self::VERBOSITY_VERBOSE: + return OutputInterface::VERBOSITY_VERBOSE; + case self::VERBOSITY_VERY_VERBOSE: + return OutputInterface::VERBOSITY_VERY_VERBOSE; + case self::VERBOSITY_DEBUG: + return OutputInterface::VERBOSITY_DEBUG; + case self::VERBOSITY_NORMAL: + default: + return OutputInterface::VERBOSITY_NORMAL; + } + } + + /** + * Guess whether stdin is piped. + * + * This is mostly useful for deciding whether to use non-interactive mode. + * + * @return bool + */ + public function inputIsPiped(): bool + { + if ($this->pipedInput === null) { + $this->pipedInput = \defined('STDIN') && static::looksLikeAPipe(\STDIN); + } + + return $this->pipedInput; + } + + /** + * Guess whether shell output is piped. + * + * This is mostly useful for deciding whether to use non-decorated output. + * + * @return bool + */ + public function outputIsPiped(): bool + { + if ($this->pipedOutput === null) { + $this->pipedOutput = static::looksLikeAPipe($this->getOutput()->getStream()); + } + + return $this->pipedOutput; + } + + /** + * Guess whether an input or output stream is piped. + * + * @param resource|int $stream + * + * @return bool + */ + private static function looksLikeAPipe($stream): bool + { + if (\function_exists('posix_isatty')) { + return !\posix_isatty($stream); + } + + $stat = \fstat($stream); + $mode = $stat['mode'] & 0170000; + + return $mode === 0010000 || $mode === 0040000 || $mode === 0100000 || $mode === 0120000; + } } diff --git a/vendor/psy/psysh/src/ConsoleColorFactory.php b/vendor/psy/psysh/src/ConsoleColorFactory.php deleted file mode 100644 index 76ad3b512..000000000 --- a/vendor/psy/psysh/src/ConsoleColorFactory.php +++ /dev/null @@ -1,82 +0,0 @@ -colorMode = $colorMode; - } - - /** - * Get a `ConsoleColor` instance configured according to the given color - * mode. - * - * @return ConsoleColor - */ - public function getConsoleColor() - { - if ($this->colorMode === Configuration::COLOR_MODE_AUTO) { - return $this->getDefaultConsoleColor(); - } elseif ($this->colorMode === Configuration::COLOR_MODE_FORCED) { - return $this->getForcedConsoleColor(); - } elseif ($this->colorMode === Configuration::COLOR_MODE_DISABLED) { - return $this->getDisabledConsoleColor(); - } - } - - private function getDefaultConsoleColor() - { - $color = new ConsoleColor(); - $color->addTheme(Highlighter::LINE_NUMBER, ['blue']); - $color->addTheme(Highlighter::TOKEN_KEYWORD, ['yellow']); - $color->addTheme(Highlighter::TOKEN_STRING, ['green']); - $color->addTheme(Highlighter::TOKEN_COMMENT, ['dark_gray']); - - return $color; - } - - private function getForcedConsoleColor() - { - $color = $this->getDefaultConsoleColor(); - $color->setForceStyle(true); - - return $color; - } - - private function getDisabledConsoleColor() - { - $color = new ConsoleColor(); - - $color->addTheme(Highlighter::TOKEN_STRING, ['none']); - $color->addTheme(Highlighter::TOKEN_COMMENT, ['none']); - $color->addTheme(Highlighter::TOKEN_KEYWORD, ['none']); - $color->addTheme(Highlighter::TOKEN_DEFAULT, ['none']); - $color->addTheme(Highlighter::TOKEN_HTML, ['none']); - $color->addTheme(Highlighter::ACTUAL_LINE_MARK, ['none']); - $color->addTheme(Highlighter::LINE_NUMBER, ['none']); - - return $color; - } -} diff --git a/vendor/psy/psysh/src/Context.php b/vendor/psy/psysh/src/Context.php index 104dc8ffa..3c6636c8d 100644 --- a/vendor/psy/psysh/src/Context.php +++ b/vendor/psy/psysh/src/Context.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,7 +21,7 @@ class Context { private static $specialNames = ['_', '_e', '__out', '__psysh__', 'this']; - // Whitelist a very limited number of command-scope magic variable names. + // Include a very limited number of command-scope magic variable names. // This might be a bad idea, but future me can sort it out. private static $commandScopeNames = [ '__function', '__method', '__class', '__namespace', '__file', '__line', '__dir', @@ -38,13 +38,13 @@ class Context /** * Get a context variable. * - * @throws InvalidArgumentException If the variable is not found in the current context + * @throws \InvalidArgumentException If the variable is not found in the current context * * @param string $name * * @return mixed */ - public function get($name) + public function get(string $name) { switch ($name) { case '_': @@ -87,7 +87,7 @@ class Context break; } - throw new \InvalidArgumentException('Unknown variable: $' . $name); + throw new \InvalidArgumentException('Unknown variable: $'.$name); } /** @@ -95,7 +95,7 @@ class Context * * @return array */ - public function getAll() + public function getAll(): array { return \array_merge($this->scopeVariables, $this->getSpecialVariables()); } @@ -105,7 +105,7 @@ class Context * * @return array */ - public function getSpecialVariables() + public function getSpecialVariables(): array { $vars = [ '_' => $this->returnValue, @@ -168,21 +168,21 @@ class Context } /** - * Set the most recent Exception. + * Set the most recent Exception or Error. * - * @param \Exception $e + * @param \Throwable $e */ - public function setLastException(\Exception $e) + public function setLastException(\Throwable $e) { $this->lastException = $e; } /** - * Get the most recent Exception. + * Get the most recent Exception or Error. * * @throws \InvalidArgumentException If no Exception has been caught * - * @return null|\Exception + * @return \Throwable|null */ public function getLastException() { @@ -198,7 +198,7 @@ class Context * * @param string $lastStdout */ - public function setLastStdout($lastStdout) + public function setLastStdout(string $lastStdout) { $this->lastStdout = $lastStdout; } @@ -208,7 +208,7 @@ class Context * * @throws \InvalidArgumentException If no output has happened yet * - * @return null|string + * @return string|null */ public function getLastStdout() { @@ -288,7 +288,7 @@ class Context * * @return array */ - public function getCommandScopeVariables() + public function getCommandScopeVariables(): array { return $this->commandScopeVariables; } @@ -301,7 +301,7 @@ class Context * * @return array Array of unused variable names */ - public function getUnusedCommandScopeVariableNames() + public function getUnusedCommandScopeVariableNames(): array { return \array_diff(self::$commandScopeNames, \array_keys($this->commandScopeVariables)); } @@ -313,7 +313,7 @@ class Context * * @return bool */ - public static function isSpecialVariableName($name) + public static function isSpecialVariableName(string $name): bool { return \in_array($name, self::$specialNames) || \in_array($name, self::$commandScopeNames); } diff --git a/vendor/psy/psysh/src/ContextAware.php b/vendor/psy/psysh/src/ContextAware.php index 748f13aa3..5f6d7df35 100644 --- a/vendor/psy/psysh/src/ContextAware.php +++ b/vendor/psy/psysh/src/ContextAware.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/EnvInterface.php b/vendor/psy/psysh/src/EnvInterface.php new file mode 100644 index 000000000..340ca3ae2 --- /dev/null +++ b/vendor/psy/psysh/src/EnvInterface.php @@ -0,0 +1,25 @@ +rawMessage = $message; parent::__construct(\sprintf('Exit: %s', $message), $code, $previous); @@ -32,7 +32,7 @@ class BreakException extends \Exception implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->rawMessage; } diff --git a/vendor/psy/psysh/src/Exception/DeprecatedException.php b/vendor/psy/psysh/src/Exception/DeprecatedException.php index 8ac0104b9..a0397eafb 100644 --- a/vendor/psy/psysh/src/Exception/DeprecatedException.php +++ b/vendor/psy/psysh/src/Exception/DeprecatedException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/Exception/ErrorException.php b/vendor/psy/psysh/src/Exception/ErrorException.php index 822fa9275..f916076ff 100644 --- a/vendor/psy/psysh/src/Exception/ErrorException.php +++ b/vendor/psy/psysh/src/Exception/ErrorException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,14 +21,14 @@ class ErrorException extends \ErrorException implements Exception /** * Construct a Psy ErrorException. * - * @param string $message (default: "") - * @param int $code (default: 0) - * @param int $severity (default: 1) - * @param string $filename (default: null) - * @param int $lineno (default: null) - * @param Exception $previous (default: null) + * @param string $message (default: "") + * @param int $code (default: 0) + * @param int $severity (default: 1) + * @param string|null $filename (default: null) + * @param int|null $lineno (default: null) + * @param \Throwable|null $previous (default: null) */ - public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null) + public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, \Throwable $previous = null) { $this->rawMessage = $message; @@ -37,28 +37,28 @@ class ErrorException extends \ErrorException implements Exception } switch ($severity) { - case E_STRICT: + case \E_STRICT: $type = 'Strict error'; break; - case E_NOTICE: - case E_USER_NOTICE: + case \E_NOTICE: + case \E_USER_NOTICE: $type = 'Notice'; break; - case E_WARNING: - case E_CORE_WARNING: - case E_COMPILE_WARNING: - case E_USER_WARNING: + case \E_WARNING: + case \E_CORE_WARNING: + case \E_COMPILE_WARNING: + case \E_USER_WARNING: $type = 'Warning'; break; - case E_DEPRECATED: - case E_USER_DEPRECATED: + case \E_DEPRECATED: + case \E_USER_DEPRECATED: $type = 'Deprecated'; break; - case E_RECOVERABLE_ERROR: + case \E_RECOVERABLE_ERROR: $type = 'Recoverable fatal error'; break; @@ -67,7 +67,7 @@ class ErrorException extends \ErrorException implements Exception break; } - $message = \sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in ' . $filename : '', $lineno); + $message = \sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in '.$filename : '', $lineno); parent::__construct($message, $code, $severity, $filename, $lineno, $previous); } @@ -76,7 +76,7 @@ class ErrorException extends \ErrorException implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->rawMessage; } @@ -86,9 +86,9 @@ class ErrorException extends \ErrorException implements Exception * * This allows us to: * - * set_error_handler(array('Psy\Exception\ErrorException', 'throwException')); + * set_error_handler([ErrorException::class, 'throwException']); * - * @throws ErrorException + * @throws self * * @param int $errno Error type * @param string $errstr Message @@ -103,11 +103,13 @@ class ErrorException extends \ErrorException implements Exception /** * Create an ErrorException from an Error. * + * @deprecated psySH no longer wraps Errors + * * @param \Error $e * - * @return ErrorException + * @return self */ - public static function fromError(\Error $e) + public static function fromError(\Error $e): self { return new self($e->getMessage(), $e->getCode(), 1, $e->getFile(), $e->getLine(), $e); } diff --git a/vendor/psy/psysh/src/Exception/Exception.php b/vendor/psy/psysh/src/Exception/Exception.php index de6895479..0f2e0d972 100644 --- a/vendor/psy/psysh/src/Exception/Exception.php +++ b/vendor/psy/psysh/src/Exception/Exception.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/Exception/FatalErrorException.php b/vendor/psy/psysh/src/Exception/FatalErrorException.php index 48a4e2b81..d5245e77e 100644 --- a/vendor/psy/psysh/src/Exception/FatalErrorException.php +++ b/vendor/psy/psysh/src/Exception/FatalErrorException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,14 +21,14 @@ class FatalErrorException extends \ErrorException implements Exception /** * Create a fatal error. * - * @param string $message (default: "") - * @param int $code (default: 0) - * @param int $severity (default: 1) - * @param string $filename (default: null) - * @param int $lineno (default: null) - * @param \Exception $previous (default: null) + * @param string $message (default: "") + * @param int $code (default: 0) + * @param int $severity (default: 1) + * @param string|null $filename (default: null) + * @param int|null $lineno (default: null) + * @param \Throwable|null $previous (default: null) */ - public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null) + public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, \Throwable $previous = null) { // Since these are basically always PHP Parser Node line numbers, treat -1 as null. if ($lineno === -1) { @@ -45,7 +45,7 @@ class FatalErrorException extends \ErrorException implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->rawMessage; } diff --git a/vendor/psy/psysh/src/Exception/ParseErrorException.php b/vendor/psy/psysh/src/Exception/ParseErrorException.php index cb6380e6b..ff4695ce8 100644 --- a/vendor/psy/psysh/src/Exception/ParseErrorException.php +++ b/vendor/psy/psysh/src/Exception/ParseErrorException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -22,7 +22,7 @@ class ParseErrorException extends \PhpParser\Error implements Exception * @param string $message (default: "") * @param int $line (default: -1) */ - public function __construct($message = '', $line = -1) + public function __construct(string $message = '', int $line = -1) { $message = \sprintf('PHP Parse error: %s', $message); parent::__construct($message, $line); @@ -33,9 +33,9 @@ class ParseErrorException extends \PhpParser\Error implements Exception * * @param \PhpParser\Error $e * - * @return ParseErrorException + * @return self */ - public static function fromParseError(\PhpParser\Error $e) + public static function fromParseError(\PhpParser\Error $e): self { return new self($e->getRawMessage(), $e->getStartLine()); } diff --git a/vendor/psy/psysh/src/Exception/RuntimeException.php b/vendor/psy/psysh/src/Exception/RuntimeException.php index 09e68483e..c54a4018f 100644 --- a/vendor/psy/psysh/src/Exception/RuntimeException.php +++ b/vendor/psy/psysh/src/Exception/RuntimeException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,11 +21,11 @@ class RuntimeException extends \RuntimeException implements Exception /** * Make this bad boy. * - * @param string $message (default: "") - * @param int $code (default: 0) - * @param \Exception $previous (default: null) + * @param string $message (default: "") + * @param int $code (default: 0) + * @param \Throwable|null $previous (default: null) */ - public function __construct($message = '', $code = 0, \Exception $previous = null) + public function __construct(string $message = '', int $code = 0, \Throwable $previous = null) { $this->rawMessage = $message; parent::__construct($message, $code, $previous); @@ -36,7 +36,7 @@ class RuntimeException extends \RuntimeException implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->rawMessage; } diff --git a/vendor/psy/psysh/src/Exception/ThrowUpException.php b/vendor/psy/psysh/src/Exception/ThrowUpException.php index b0ca490a7..9c846ec14 100644 --- a/vendor/psy/psysh/src/Exception/ThrowUpException.php +++ b/vendor/psy/psysh/src/Exception/ThrowUpException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -19,10 +19,10 @@ class ThrowUpException extends \Exception implements Exception /** * {@inheritdoc} */ - public function __construct(\Exception $exception) + public function __construct(\Throwable $throwable) { - $message = \sprintf("Throwing %s with message '%s'", \get_class($exception), $exception->getMessage()); - parent::__construct($message, $exception->getCode(), $exception); + $message = \sprintf("Throwing %s with message '%s'", \get_class($throwable), $throwable->getMessage()); + parent::__construct($message, $throwable->getCode(), $throwable); } /** @@ -30,7 +30,7 @@ class ThrowUpException extends \Exception implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->getPrevious()->getMessage(); } @@ -38,11 +38,13 @@ class ThrowUpException extends \Exception implements Exception /** * Create a ThrowUpException from a Throwable. * + * @deprecated psySH no longer wraps Throwables + * * @param \Throwable $throwable * - * @return ThrowUpException + * @return self */ - public static function fromThrowable($throwable) + public static function fromThrowable($throwable): self { if ($throwable instanceof \Error) { $throwable = ErrorException::fromError($throwable); diff --git a/vendor/psy/psysh/src/Exception/TypeErrorException.php b/vendor/psy/psysh/src/Exception/TypeErrorException.php index b6894983f..d012cc3b3 100644 --- a/vendor/psy/psysh/src/Exception/TypeErrorException.php +++ b/vendor/psy/psysh/src/Exception/TypeErrorException.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -21,14 +21,17 @@ class TypeErrorException extends \Exception implements Exception /** * Constructor! * - * @param string $message (default: "") - * @param int $code (default: 0) + * @deprecated psySH no longer wraps TypeErrors + * + * @param string $message (default: "") + * @param int $code (default: 0) + * @param \Throwable|null $previous (default: null) */ - public function __construct($message = '', $code = 0) + public function __construct(string $message = '', int $code = 0, \Throwable $previous = null) { $this->rawMessage = $message; $message = \preg_replace('/, called in .*?: eval\\(\\)\'d code/', '', $message); - parent::__construct(\sprintf('TypeError: %s', $message), $code); + parent::__construct(\sprintf('TypeError: %s', $message), $code, $previous); } /** @@ -36,7 +39,7 @@ class TypeErrorException extends \Exception implements Exception * * @return string */ - public function getRawMessage() + public function getRawMessage(): string { return $this->rawMessage; } @@ -44,12 +47,14 @@ class TypeErrorException extends \Exception implements Exception /** * Create a TypeErrorException from a TypeError. * + * @deprecated psySH no longer wraps TypeErrors + * * @param \TypeError $e * - * @return TypeErrorException + * @return self */ - public static function fromTypeError(\TypeError $e) + public static function fromTypeError(\TypeError $e): self { - return new self($e->getMessage(), $e->getCode()); + return new self($e->getMessage(), $e->getCode(), $e); } } diff --git a/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php b/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php new file mode 100644 index 000000000..8f88de536 --- /dev/null +++ b/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php @@ -0,0 +1,37 @@ +target = $target; + parent::__construct($message, $code, $previous); + } + + /** + * @return mixed + */ + public function getTarget() + { + return $this->target; + } +} diff --git a/vendor/psy/psysh/src/ExecutionClosure.php b/vendor/psy/psysh/src/ExecutionClosure.php index 5c7cd25ac..1418d3df4 100644 --- a/vendor/psy/psysh/src/ExecutionClosure.php +++ b/vendor/psy/psysh/src/ExecutionClosure.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -37,28 +37,19 @@ class ExecutionClosure \set_error_handler([$__psysh__, 'handleError']); // Evaluate the current code buffer - $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: ExecutionClosure::NOOP_INPUT)); + $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: self::NOOP_INPUT)); } catch (\Throwable $_e) { // Clean up on our way out. - \restore_error_handler(); if (\ob_get_level() > 0) { \ob_end_clean(); } throw $_e; - } catch (\Exception $_e) { - // Clean up on our way out. + } finally { + // Won't be needing this anymore \restore_error_handler(); - if (\ob_get_level() > 0) { - \ob_end_clean(); - } - - throw $_e; } - // Won't be needing this anymore - \restore_error_handler(); - // Flush stdout (write to shell output, plus save to magic variable) \ob_end_flush(); @@ -72,21 +63,18 @@ class ExecutionClosure /** * Set the closure instance. * - * @param Shell $psysh + * @param Shell $shell * @param \Closure $closure */ protected function setClosure(Shell $shell, \Closure $closure) { - if (self::shouldBindClosure()) { - $that = $shell->getBoundObject(); - if (\is_object($that)) { - $closure = $closure->bindTo($that, \get_class($that)); - } else { - $closure = $closure->bindTo(null, $shell->getBoundClass()); - } - } + $that = $shell->getBoundObject(); - $this->closure = $closure; + if (\is_object($that)) { + $this->closure = $closure->bindTo($that, \get_class($that)); + } else { + $this->closure = $closure->bindTo(null, $shell->getBoundClass()); + } } /** @@ -100,20 +88,4 @@ class ExecutionClosure return $closure(); } - - /** - * Decide whether to bind the execution closure. - * - * @return bool - */ - protected static function shouldBindClosure() - { - // skip binding on HHVM < 3.5.0 - // see https://github.com/facebook/hhvm/issues/1203 - if (\defined('HHVM_VERSION')) { - return \version_compare(HHVM_VERSION, '3.5.0', '>='); - } - - return true; - } } diff --git a/vendor/psy/psysh/src/ExecutionLoop.php b/vendor/psy/psysh/src/ExecutionLoop.php deleted file mode 100644 index 2e4307cb7..000000000 --- a/vendor/psy/psysh/src/ExecutionLoop.php +++ /dev/null @@ -1,67 +0,0 @@ -loadIncludes($shell); - - $closure = new ExecutionLoopClosure($shell); - $closure->execute(); - } - - /** - * Load user-defined includes. - * - * @param Shell $shell - */ - protected function loadIncludes(Shell $shell) - { - // Load user-defined includes - $load = function (Shell $__psysh__) { - \set_error_handler([$__psysh__, 'handleError']); - foreach ($__psysh__->getIncludes() as $__psysh_include__) { - try { - include $__psysh_include__; - } catch (\Error $_e) { - $__psysh__->writeException(ErrorException::fromError($_e)); - } catch (\Exception $_e) { - $__psysh__->writeException($_e); - } - } - \restore_error_handler(); - unset($__psysh_include__); - - // Override any new local variables with pre-defined scope variables - \extract($__psysh__->getScopeVariables(false)); - - // ... then add the whole mess of variables back. - $__psysh__->setScopeVariables(\get_defined_vars()); - }; - - $load($shell); - } -} diff --git a/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php b/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php index 3617fa243..cd6e0024f 100644 --- a/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php +++ b/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -35,14 +35,14 @@ abstract class AbstractListener implements Listener /** * {@inheritdoc} */ - public function onInput(Shell $shell, $input) + public function onInput(Shell $shell, string $input) { } /** * {@inheritdoc} */ - public function onExecute(Shell $shell, $code) + public function onExecute(Shell $shell, string $code) { } diff --git a/vendor/psy/psysh/src/ExecutionLoop/Listener.php b/vendor/psy/psysh/src/ExecutionLoop/Listener.php index 3886a208b..632ef719e 100644 --- a/vendor/psy/psysh/src/ExecutionLoop/Listener.php +++ b/vendor/psy/psysh/src/ExecutionLoop/Listener.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ interface Listener * * @return bool */ - public static function isSupported(); + public static function isSupported(): bool; /** * Called once before the REPL session starts. @@ -49,7 +49,7 @@ interface Listener * * @return string|null User input override */ - public function onInput(Shell $shell, $input); + public function onInput(Shell $shell, string $input); /** * Called before executing user code. @@ -65,7 +65,7 @@ interface Listener * * @return string|null User code override */ - public function onExecute(Shell $shell, $code); + public function onExecute(Shell $shell, string $code); /** * Called at the end of each loop. diff --git a/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php b/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php index 470479594..dd66db8b8 100644 --- a/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php +++ b/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,18 +26,80 @@ class ProcessForker extends AbstractListener private $savegame; private $up; + private static $pcntlFunctions = [ + 'pcntl_fork', + 'pcntl_signal_dispatch', + 'pcntl_signal', + 'pcntl_waitpid', + 'pcntl_wexitstatus', + ]; + + private static $posixFunctions = [ + 'posix_getpid', + 'posix_kill', + ]; + /** * Process forker is supported if pcntl and posix extensions are available. * * @return bool */ - public static function isSupported() + public static function isSupported(): bool { - return \function_exists('pcntl_signal') && \function_exists('posix_getpid'); + return self::isPcntlSupported() && !self::disabledPcntlFunctions() && self::isPosixSupported() && !self::disabledPosixFunctions(); } /** - * Forks into a master and a loop process. + * Verify that all required pcntl functions are, in fact, available. + */ + public static function isPcntlSupported(): bool + { + foreach (self::$pcntlFunctions as $func) { + if (!\function_exists($func)) { + return false; + } + } + + return true; + } + + /** + * Check whether required pcntl functions are disabled. + */ + public static function disabledPcntlFunctions() + { + return self::checkDisabledFunctions(self::$pcntlFunctions); + } + + /** + * Verify that all required posix functions are, in fact, available. + */ + public static function isPosixSupported(): bool + { + foreach (self::$posixFunctions as $func) { + if (!\function_exists($func)) { + return false; + } + } + + return true; + } + + /** + * Check whether required posix functions are disabled. + */ + public static function disabledPosixFunctions() + { + return self::checkDisabledFunctions(self::$posixFunctions); + } + + private static function checkDisabledFunctions(array $functions): array + { + return \array_values(\array_intersect($functions, \array_map('strtolower', \array_map('trim', \explode(',', \ini_get('disable_functions')))))); + } + + /** + * Forks into a main and a loop process. * * The loop process will handle the evaluation of all instructions, then * return its state via a socket upon completion. @@ -46,7 +108,7 @@ class ProcessForker extends AbstractListener */ public function beforeRun(Shell $shell) { - list($up, $down) = \stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP); + list($up, $down) = \stream_socket_pair(\STREAM_PF_UNIX, \STREAM_SOCK_STREAM, \STREAM_IPPROTO_IP); if (!$up) { throw new \RuntimeException('Unable to create socket pair'); @@ -62,8 +124,8 @@ class ProcessForker extends AbstractListener \fclose($up); // Wait for a return value from the loop process. - $read = [$down]; - $write = null; + $read = [$down]; + $write = null; $except = null; do { @@ -95,8 +157,11 @@ class ProcessForker extends AbstractListener } // This is the child process. It's going to do all the work. - if (\function_exists('setproctitle')) { - setproctitle('psysh (loop)'); + if (!@\cli_set_process_title('psysh (loop)')) { + // Fall back to `setproctitle` if that wasn't succesful. + if (\function_exists('setproctitle')) { + @\setproctitle('psysh (loop)'); + } } // We won't be needing this one. @@ -125,7 +190,7 @@ class ProcessForker extends AbstractListener { // if there's an old savegame hanging around, let's kill it. if (isset($this->savegame)) { - \posix_kill($this->savegame, SIGKILL); + \posix_kill($this->savegame, \SIGKILL); \pcntl_signal_dispatch(); } } @@ -143,7 +208,7 @@ class ProcessForker extends AbstractListener \fwrite($this->up, $this->serializeReturn($shell->getScopeVariables(false))); \fclose($this->up); - \posix_kill(\posix_getpid(), SIGKILL); + \posix_kill(\posix_getpid(), \SIGKILL); } } @@ -168,7 +233,7 @@ class ProcessForker extends AbstractListener // worker exited cleanly, let's bail if (!\pcntl_wexitstatus($status)) { - \posix_kill(\posix_getpid(), SIGKILL); + \posix_kill(\posix_getpid(), \SIGKILL); } // worker didn't exit cleanly, we'll need to have another go @@ -188,7 +253,7 @@ class ProcessForker extends AbstractListener * * @return string */ - private function serializeReturn(array $return) + private function serializeReturn(array $return): string { $serializable = []; @@ -203,14 +268,19 @@ class ProcessForker extends AbstractListener continue; } + if (\version_compare(\PHP_VERSION, '8.1', '>=') && $value instanceof \UnitEnum) { + // Enums defined in the REPL session can't be unserialized. + $ref = new \ReflectionObject($value); + if (\strpos($ref->getFileName(), ": eval()'d code") !== false) { + continue; + } + } + try { @\serialize($value); $serializable[$key] = $value; } catch (\Throwable $e) { // we'll just ignore this one... - } catch (\Exception $e) { - // and this one too... - // @todo remove this once we don't support PHP 5.x anymore :) } } diff --git a/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php b/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php index d80480b0a..0854ba76f 100644 --- a/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php +++ b/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -28,9 +28,10 @@ class RunkitReloader extends AbstractListener * * @return bool */ - public static function isSupported() + public static function isSupported(): bool { - return \extension_loaded('runkit'); + // runkit_import was removed in runkit7-4.0.0a1 + return \extension_loaded('runkit') || \extension_loaded('runkit7') && \function_exists('runkit_import'); } /** @@ -50,7 +51,7 @@ class RunkitReloader extends AbstractListener * @param Shell $shell * @param string $input */ - public function onInput(Shell $shell, $input) + public function onInput(Shell $shell, string $input) { $this->reload($shell); } @@ -101,14 +102,22 @@ class RunkitReloader extends AbstractListener // } foreach ($modified as $file) { - runkit_import($file, ( + $flags = ( RUNKIT_IMPORT_FUNCTIONS | RUNKIT_IMPORT_CLASSES | RUNKIT_IMPORT_CLASS_METHODS | RUNKIT_IMPORT_CLASS_CONSTS | RUNKIT_IMPORT_CLASS_PROPS | RUNKIT_IMPORT_OVERRIDE - )); + ); + + // these two const cannot be used with RUNKIT_IMPORT_OVERRIDE in runkit7 + if (\extension_loaded('runkit7')) { + $flags &= ~RUNKIT_IMPORT_CLASS_PROPS & ~RUNKIT_IMPORT_CLASS_STATIC_PROPS; + runkit7_import($file, $flags); + } else { + runkit_import($file, $flags); + } } } @@ -121,12 +130,12 @@ class RunkitReloader extends AbstractListener * * @return bool */ - private function lintFile($file) + private function lintFile(string $file): bool { // first try to parse it try { $this->parser->parse(\file_get_contents($file)); - } catch (\Exception $e) { + } catch (\Throwable $e) { return false; } diff --git a/vendor/psy/psysh/src/ExecutionLoopClosure.php b/vendor/psy/psysh/src/ExecutionLoopClosure.php index 5b8238cf6..8fac095ae 100644 --- a/vendor/psy/psysh/src/ExecutionLoopClosure.php +++ b/vendor/psy/psysh/src/ExecutionLoopClosure.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -12,9 +12,7 @@ namespace Psy; use Psy\Exception\BreakException; -use Psy\Exception\ErrorException; use Psy\Exception\ThrowUpException; -use Psy\Exception\TypeErrorException; /** * The Psy Shell's execution loop scope. @@ -33,7 +31,7 @@ class ExecutionLoopClosure extends ExecutionClosure // Restore execution scope variables \extract($__psysh__->getScopeVariables(false)); - do { + while (true) { $__psysh__->beforeLoop(); try { @@ -55,25 +53,16 @@ class ExecutionLoopClosure extends ExecutionClosure $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: ExecutionClosure::NOOP_INPUT)); } catch (\Throwable $_e) { // Clean up on our way out. - \restore_error_handler(); if (\ob_get_level() > 0) { \ob_end_clean(); } throw $_e; - } catch (\Exception $_e) { - // Clean up on our way out. + } finally { + // Won't be needing this anymore \restore_error_handler(); - if (\ob_get_level() > 0) { - \ob_end_clean(); - } - - throw $_e; } - // Won't be needing this anymore - \restore_error_handler(); - // Flush stdout (write to shell output, plus save to magic variable) \ob_end_flush(); @@ -89,16 +78,12 @@ class ExecutionLoopClosure extends ExecutionClosure $__psysh__->writeException($_e); throw $_e; - } catch (\TypeError $_e) { - $__psysh__->writeException(TypeErrorException::fromTypeError($_e)); - } catch (\Error $_e) { - $__psysh__->writeException(ErrorException::fromError($_e)); - } catch (\Exception $_e) { + } catch (\Throwable $_e) { $__psysh__->writeException($_e); } $__psysh__->afterLoop(); - } while (true); + } }); } } diff --git a/vendor/psy/psysh/src/Formatter/CodeFormatter.php b/vendor/psy/psysh/src/Formatter/CodeFormatter.php index 2ac37cc9d..3d1f611ff 100644 --- a/vendor/psy/psysh/src/Formatter/CodeFormatter.php +++ b/vendor/psy/psysh/src/Formatter/CodeFormatter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,48 +11,298 @@ namespace Psy\Formatter; -use JakubOnderka\PhpConsoleHighlighter\Highlighter; -use Psy\Configuration; -use Psy\ConsoleColorFactory; use Psy\Exception\RuntimeException; +use Symfony\Component\Console\Formatter\OutputFormatter; /** * A pretty-printer for code. */ -class CodeFormatter implements Formatter +class CodeFormatter implements ReflectorFormatter { + const LINE_MARKER = ' > '; + const NO_LINE_MARKER = ' '; + + const HIGHLIGHT_DEFAULT = 'default'; + const HIGHLIGHT_KEYWORD = 'keyword'; + + const HIGHLIGHT_PUBLIC = 'public'; + const HIGHLIGHT_PROTECTED = 'protected'; + const HIGHLIGHT_PRIVATE = 'private'; + + const HIGHLIGHT_CONST = 'const'; + const HIGHLIGHT_NUMBER = 'number'; + const HIGHLIGHT_STRING = 'string'; + const HIGHLIGHT_COMMENT = 'comment'; + const HIGHLIGHT_INLINE_HTML = 'inline_html'; + + private static $tokenMap = [ + // Not highlighted + \T_OPEN_TAG => self::HIGHLIGHT_DEFAULT, + \T_OPEN_TAG_WITH_ECHO => self::HIGHLIGHT_DEFAULT, + \T_CLOSE_TAG => self::HIGHLIGHT_DEFAULT, + \T_STRING => self::HIGHLIGHT_DEFAULT, + \T_VARIABLE => self::HIGHLIGHT_DEFAULT, + \T_NS_SEPARATOR => self::HIGHLIGHT_DEFAULT, + + // Visibility + \T_PUBLIC => self::HIGHLIGHT_PUBLIC, + \T_PROTECTED => self::HIGHLIGHT_PROTECTED, + \T_PRIVATE => self::HIGHLIGHT_PRIVATE, + + // Constants + \T_DIR => self::HIGHLIGHT_CONST, + \T_FILE => self::HIGHLIGHT_CONST, + \T_METHOD_C => self::HIGHLIGHT_CONST, + \T_NS_C => self::HIGHLIGHT_CONST, + \T_LINE => self::HIGHLIGHT_CONST, + \T_CLASS_C => self::HIGHLIGHT_CONST, + \T_FUNC_C => self::HIGHLIGHT_CONST, + \T_TRAIT_C => self::HIGHLIGHT_CONST, + + // Types + \T_DNUMBER => self::HIGHLIGHT_NUMBER, + \T_LNUMBER => self::HIGHLIGHT_NUMBER, + \T_ENCAPSED_AND_WHITESPACE => self::HIGHLIGHT_STRING, + \T_CONSTANT_ENCAPSED_STRING => self::HIGHLIGHT_STRING, + + // Comments + \T_COMMENT => self::HIGHLIGHT_COMMENT, + \T_DOC_COMMENT => self::HIGHLIGHT_COMMENT, + + // @todo something better here? + \T_INLINE_HTML => self::HIGHLIGHT_INLINE_HTML, + ]; + /** - * Format the code represented by $reflector. + * Format the code represented by $reflector for shell output. * * @param \Reflector $reflector - * @param null|string $colorMode (default: null) + * @param string|null $colorMode (deprecated and ignored) * * @return string formatted code */ - public static function format(\Reflector $reflector, $colorMode = null) + public static function format(\Reflector $reflector, string $colorMode = null): string { - if (!self::isReflectable($reflector)) { - throw new RuntimeException('Source code unavailable'); + if (self::isReflectable($reflector)) { + if ($code = @\file_get_contents($reflector->getFileName())) { + return self::formatCode($code, self::getStartLine($reflector), $reflector->getEndLine()); + } } - $colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO; + throw new RuntimeException('Source code unavailable'); + } - if ($fileName = $reflector->getFileName()) { - if (!\is_file($fileName)) { - throw new RuntimeException('Source code unavailable'); + /** + * Format code for shell output. + * + * Optionally, restrict by $startLine and $endLine line numbers, or pass $markLine to add a line marker. + * + * @param string $code + * @param int $startLine + * @param int|null $endLine + * @param int|null $markLine + * + * @return string formatted code + */ + public static function formatCode(string $code, int $startLine = 1, int $endLine = null, int $markLine = null): string + { + $spans = self::tokenizeSpans($code); + $lines = self::splitLines($spans, $startLine, $endLine); + $lines = self::formatLines($lines); + $lines = self::numberLines($lines, $markLine); + + return \implode('', \iterator_to_array($lines)); + } + + /** + * Get the start line for a given Reflector. + * + * Tries to incorporate doc comments if possible. + * + * This is typehinted as \Reflector but we've narrowed the input via self::isReflectable already. + * + * @param \ReflectionClass|\ReflectionFunctionAbstract $reflector + * + * @return int + */ + private static function getStartLine(\Reflector $reflector): int + { + $startLine = $reflector->getStartLine(); + + if ($docComment = $reflector->getDocComment()) { + $startLine -= \preg_match_all('/(\r\n?|\n)/', $docComment) + 1; + } + + return \max($startLine, 1); + } + + /** + * Split code into highlight spans. + * + * Tokenize via \token_get_all, then map these tokens to internal highlight types, combining + * adjacent spans of the same highlight type. + * + * @todo consider switching \token_get_all() out for PHP-Parser-based formatting at some point. + * + * @param string $code + * + * @return \Generator [$spanType, $spanText] highlight spans + */ + private static function tokenizeSpans(string $code): \Generator + { + $spanType = null; + $buffer = ''; + + foreach (\token_get_all($code) as $token) { + $nextType = self::nextHighlightType($token, $spanType); + $spanType = $spanType ?: $nextType; + + if ($spanType !== $nextType) { + yield [$spanType, $buffer]; + $spanType = $nextType; + $buffer = ''; } - $file = \file_get_contents($fileName); - $start = $reflector->getStartLine(); - $end = $reflector->getEndLine() - $start; + $buffer .= \is_array($token) ? $token[1] : $token; + } - $factory = new ConsoleColorFactory($colorMode); - $colors = $factory->getConsoleColor(); - $highlighter = new Highlighter($colors); + if ($spanType !== null && $buffer !== '') { + yield [$spanType, $buffer]; + } + } - return $highlighter->getCodeSnippet($file, $start, 0, $end); - } else { - throw new RuntimeException('Source code unavailable'); + /** + * Given a token and the current highlight span type, compute the next type. + * + * @param array|string $token \token_get_all token + * @param string|null $currentType + * + * @return string|null + */ + private static function nextHighlightType($token, $currentType) + { + if ($token === '"') { + return self::HIGHLIGHT_STRING; + } + + if (\is_array($token)) { + if ($token[0] === \T_WHITESPACE) { + return $currentType; + } + + if (\array_key_exists($token[0], self::$tokenMap)) { + return self::$tokenMap[$token[0]]; + } + } + + return self::HIGHLIGHT_KEYWORD; + } + + /** + * Group highlight spans into an array of lines. + * + * Optionally, restrict by start and end line numbers. + * + * @param \Generator $spans as [$spanType, $spanText] pairs + * @param int $startLine + * @param int|null $endLine + * + * @return \Generator lines, each an array of [$spanType, $spanText] pairs + */ + private static function splitLines(\Generator $spans, int $startLine = 1, int $endLine = null): \Generator + { + $lineNum = 1; + $buffer = []; + + foreach ($spans as list($spanType, $spanText)) { + foreach (\preg_split('/(\r\n?|\n)/', $spanText) as $index => $spanLine) { + if ($index > 0) { + if ($lineNum >= $startLine) { + yield $lineNum => $buffer; + } + + $lineNum++; + $buffer = []; + + if ($endLine !== null && $lineNum > $endLine) { + return; + } + } + + if ($spanLine !== '') { + $buffer[] = [$spanType, $spanLine]; + } + } + } + + if (!empty($buffer)) { + yield $lineNum => $buffer; + } + } + + /** + * Format lines of highlight spans for shell output. + * + * @param \Generator $spanLines lines, each an array of [$spanType, $spanText] pairs + * + * @return \Generator Formatted lines + */ + private static function formatLines(\Generator $spanLines): \Generator + { + foreach ($spanLines as $lineNum => $spanLine) { + $line = ''; + + foreach ($spanLine as list($spanType, $spanText)) { + if ($spanType === self::HIGHLIGHT_DEFAULT) { + $line .= OutputFormatter::escape($spanText); + } else { + $line .= \sprintf('<%s>%s', $spanType, OutputFormatter::escape($spanText), $spanType); + } + } + + yield $lineNum => $line.\PHP_EOL; + } + } + + /** + * Prepend line numbers to formatted lines. + * + * Lines must be in an associative array with the correct keys in order to be numbered properly. + * + * Optionally, pass $markLine to add a line marker. + * + * @param \Generator $lines Formatted lines + * @param int|null $markLine + * + * @return \Generator Numbered, formatted lines + */ + private static function numberLines(\Generator $lines, int $markLine = null): \Generator + { + $lines = \iterator_to_array($lines); + + // Figure out how much space to reserve for line numbers. + \end($lines); + $pad = \strlen(\key($lines)); + + // If $markLine is before or after our line range, don't bother reserving space for the marker. + if ($markLine !== null) { + if ($markLine > \key($lines)) { + $markLine = null; + } + + \reset($lines); + if ($markLine < \key($lines)) { + $markLine = null; + } + } + + foreach ($lines as $lineNum => $line) { + $mark = ''; + if ($markLine !== null) { + $mark = ($markLine === $lineNum) ? self::LINE_MARKER : self::NO_LINE_MARKER; + } + + yield \sprintf("%s: %s", $mark, $lineNum, $line); } } @@ -63,9 +313,8 @@ class CodeFormatter implements Formatter * * @return bool */ - private static function isReflectable(\Reflector $reflector) + private static function isReflectable(\Reflector $reflector): bool { - return $reflector instanceof \ReflectionClass || - $reflector instanceof \ReflectionFunctionAbstract; + return ($reflector instanceof \ReflectionClass || $reflector instanceof \ReflectionFunctionAbstract) && \is_file($reflector->getFileName()); } } diff --git a/vendor/psy/psysh/src/Formatter/DocblockFormatter.php b/vendor/psy/psysh/src/Formatter/DocblockFormatter.php index 39ea60e54..05a73bd81 100644 --- a/vendor/psy/psysh/src/Formatter/DocblockFormatter.php +++ b/vendor/psy/psysh/src/Formatter/DocblockFormatter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -17,7 +17,7 @@ use Symfony\Component\Console\Formatter\OutputFormatter; /** * A pretty-printer for docblocks. */ -class DocblockFormatter implements Formatter +class DocblockFormatter implements ReflectorFormatter { private static $vectorParamTemplates = [ 'type' => 'info', @@ -31,10 +31,10 @@ class DocblockFormatter implements Formatter * * @return string Formatted docblock */ - public static function format(\Reflector $reflector) + public static function format(\Reflector $reflector): string { $docblock = new Docblock($reflector); - $chunks = []; + $chunks = []; if (!empty($docblock->desc)) { $chunks[] = 'Description:'; @@ -71,7 +71,7 @@ class DocblockFormatter implements Formatter * * @return string */ - private static function formatVector(array $vector, array $lines) + private static function formatVector(array $vector, array $lines): string { $template = [' ']; foreach ($vector as $type) { @@ -89,7 +89,13 @@ class DocblockFormatter implements Formatter $template = \implode(' ', $template); return \implode("\n", \array_map(function ($line) use ($template) { - $escaped = \array_map(['Symfony\Component\Console\Formatter\OutputFormatter', 'escape'], $line); + $escaped = \array_map(function ($l) { + if ($l === null) { + return ''; + } + + return OutputFormatter::escape($l); + }, $line); return \rtrim(\vsprintf($template, $escaped)); }, $lines)); @@ -103,7 +109,7 @@ class DocblockFormatter implements Formatter * * @return string formatted tags */ - private static function formatTags(array $skip, array $tags) + private static function formatTags(array $skip, array $tags): string { $chunks = []; @@ -130,7 +136,7 @@ class DocblockFormatter implements Formatter * * @return string */ - private static function getVectorParamTemplate($type, $max) + private static function getVectorParamTemplate(string $type, int $max): string { if (!isset(self::$vectorParamTemplates[$type])) { return \sprintf('%%-%ds', $max); @@ -147,9 +153,9 @@ class DocblockFormatter implements Formatter * * @return string */ - private static function indent($text, $indent = ' ') + private static function indent(string $text, string $indent = ' '): string { - return $indent . \str_replace("\n", "\n" . $indent, $text); + return $indent.\str_replace("\n", "\n".$indent, $text); } /** @@ -159,7 +165,7 @@ class DocblockFormatter implements Formatter * * @return string */ - private static function inflect($text) + private static function inflect(string $text): string { $words = \trim(\preg_replace('/[\s_-]+/', ' ', \preg_replace('/([a-z])([A-Z])/', '$1 $2', $text))); diff --git a/vendor/psy/psysh/src/Formatter/Formatter.php b/vendor/psy/psysh/src/Formatter/Formatter.php index 08a8e4c16..a8a37bc06 100644 --- a/vendor/psy/psysh/src/Formatter/Formatter.php +++ b/vendor/psy/psysh/src/Formatter/Formatter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,13 +13,9 @@ namespace Psy\Formatter; /** * Formatter interface. + * + * @deprecated this interface only exists for backwards compatibility. Use ReflectorFormatter. */ -interface Formatter +interface Formatter extends ReflectorFormatter { - /** - * @param \Reflector $reflector - * - * @return string - */ - public static function format(\Reflector $reflector); } diff --git a/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php b/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php new file mode 100644 index 000000000..cafc140c4 --- /dev/null +++ b/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php @@ -0,0 +1,25 @@ +getName(); } @@ -79,16 +79,8 @@ class SignatureFormatter implements Formatter * * @return string Formatted modifiers */ - private static function formatModifiers(\Reflector $reflector) + private static function formatModifiers(\Reflector $reflector): string { - if ($reflector instanceof \ReflectionClass && $reflector->isTrait()) { - // For some reason, PHP 5.x returns `abstract public` modifiers for - // traits. Let's just ignore that business entirely. - if (\version_compare(PHP_VERSION, '7.0.0', '<')) { - return []; - } - } - return \implode(' ', \array_map(function ($modifier) { return \sprintf('%s', $modifier); }, \Reflection::getModifierNames($reflector->getModifiers()))); @@ -101,7 +93,7 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatClass(\ReflectionClass $reflector) + private static function formatClass(\ReflectionClass $reflector): string { $chunks = []; @@ -126,7 +118,7 @@ class SignatureFormatter implements Formatter if (!empty($interfaces)) { \sort($interfaces); - $chunks[] = 'implements'; + $chunks[] = $reflector->isInterface() ? 'extends' : 'implements'; $chunks[] = \implode(', ', \array_map(function ($name) { return \sprintf('%s', $name); }, $interfaces)); @@ -142,7 +134,7 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatClassConstant($reflector) + private static function formatClassConstant($reflector): string { $value = $reflector->getValue(); $style = self::getTypeStyle($value); @@ -163,7 +155,7 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatConstant($reflector) + private static function formatConstant(ReflectionConstant_ $reflector): string { $value = $reflector->getValue(); $style = self::getTypeStyle($value); @@ -184,13 +176,13 @@ class SignatureFormatter implements Formatter * * @return string */ - private static function getTypeStyle($value) + private static function getTypeStyle($value): string { if (\is_int($value) || \is_float($value)) { return 'number'; } elseif (\is_string($value)) { return 'string'; - } elseif (\is_bool($value) || \is_null($value)) { + } elseif (\is_bool($value) || $value === null) { return 'bool'; } else { return 'strong'; // @codeCoverageIgnore @@ -204,7 +196,7 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatProperty(\ReflectionProperty $reflector) + private static function formatProperty(\ReflectionProperty $reflector): string { return \sprintf( '%s $%s', @@ -220,16 +212,33 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatFunction(\ReflectionFunctionAbstract $reflector) + private static function formatFunction(\ReflectionFunctionAbstract $reflector): string { return \sprintf( - 'function %s%s(%s)', + 'function %s%s(%s)%s', $reflector->returnsReference() ? '&' : '', self::formatName($reflector), - \implode(', ', self::formatFunctionParams($reflector)) + \implode(', ', self::formatFunctionParams($reflector)), + self::formatFunctionReturnType($reflector) ); } + /** + * Format a function signature's return type (if available). + * + * @param \ReflectionFunctionAbstract $reflector + * + * @return string Formatted return type + */ + private static function formatFunctionReturnType(\ReflectionFunctionAbstract $reflector): string + { + if (!\method_exists($reflector, 'hasReturnType') || !$reflector->hasReturnType()) { + return ''; + } + + return \sprintf(': %s', self::formatReflectionType($reflector->getReturnType())); + } + /** * Format a method signature. * @@ -237,7 +246,7 @@ class SignatureFormatter implements Formatter * * @return string Formatted signature */ - private static function formatMethod(\ReflectionMethod $reflector) + private static function formatMethod(\ReflectionMethod $reflector): string { return \sprintf( '%s %s', @@ -253,18 +262,22 @@ class SignatureFormatter implements Formatter * * @return array */ - private static function formatFunctionParams(\ReflectionFunctionAbstract $reflector) + private static function formatFunctionParams(\ReflectionFunctionAbstract $reflector): array { $params = []; foreach ($reflector->getParameters() as $param) { $hint = ''; try { - if ($param->isArray()) { - $hint = 'array '; - } elseif ($class = $param->getClass()) { - $hint = \sprintf('%s ', $class->getName()); + if (\method_exists($param, 'getType')) { + $hint = self::formatReflectionType($param->getType()); + } else { + if ($param->isArray()) { + $hint = 'array'; + } elseif ($class = $param->getClass()) { + $hint = \sprintf('%s', $class->getName()); + } } - } catch (\Exception $e) { + } catch (\Throwable $e) { // sometimes we just don't know... // bad class names, or autoloaded classes that haven't been loaded yet, or whathaveyou. // come to think of it, the only time I've seen this is with the intl extension. @@ -272,22 +285,22 @@ class SignatureFormatter implements Formatter // Hax: we'll try to extract it :P // @codeCoverageIgnoreStart - $chunks = \explode('$' . $param->getName(), (string) $param); + $chunks = \explode('$'.$param->getName(), (string) $param); $chunks = \explode(' ', \trim($chunks[0])); - $guess = \end($chunks); + $guess = \end($chunks); - $hint = \sprintf('%s ', $guess); + $hint = \sprintf('%s', OutputFormatter::escape($guess)); // @codeCoverageIgnoreEnd } if ($param->isOptional()) { if (!$param->isDefaultValueAvailable()) { - $value = 'unknown'; + $value = 'unknown'; $typeStyle = 'urgent'; } else { - $value = $param->getDefaultValue(); + $value = $param->getDefaultValue(); $typeStyle = self::getTypeStyle($value); - $value = \is_array($value) ? 'array()' : \is_null($value) ? 'null' : \var_export($value, true); + $value = \is_array($value) ? '[]' : ($value === null ? 'null' : \var_export($value, true)); } $default = \sprintf(' = <%s>%s', $typeStyle, OutputFormatter::escape($value), $typeStyle); } else { @@ -295,9 +308,10 @@ class SignatureFormatter implements Formatter } $params[] = \sprintf( - '%s%s$%s%s', + '%s%s%s$%s%s', $param->isPassedByReference() ? '&' : '', $hint, + $hint !== '' ? ' ' : '', $param->getName(), $default ); @@ -305,4 +319,33 @@ class SignatureFormatter implements Formatter return $params; } + + /** + * Print function param or return type(s). + * + * @param \ReflectionType $type + * + * @return string + */ + private static function formatReflectionType(\ReflectionType $type = null): string + { + if ($type === null) { + return ''; + } + + $types = $type instanceof \ReflectionUnionType ? $type->getTypes() : [$type]; + $formattedTypes = []; + + foreach ($types as $type) { + $typeStyle = $type->isBuiltin() ? 'keyword' : 'class'; + + // PHP 7.0 didn't have `getName` on reflection types, so wheee! + $typeName = \method_exists($type, 'getName') ? $type->getName() : (string) $type; + + // @todo Do we want to include the ? for nullable types? Maybe only sometimes? + $formattedTypes[] = \sprintf('<%s>%s', $typeStyle, OutputFormatter::escape($typeName), $typeStyle); + } + + return \implode('|', $formattedTypes); + } } diff --git a/vendor/psy/psysh/src/Formatter/TraceFormatter.php b/vendor/psy/psysh/src/Formatter/TraceFormatter.php new file mode 100644 index 000000000..7575068e7 --- /dev/null +++ b/vendor/psy/psysh/src/Formatter/TraceFormatter.php @@ -0,0 +1,96 @@ +getTrace(); + \array_unshift($trace, [ + 'function' => '', + 'file' => $throwable->getFile() !== null ? $throwable->getFile() : 'n/a', + 'line' => $throwable->getLine() !== null ? $throwable->getLine() : 'n/a', + 'args' => [], + ]); + + if (!$includePsy) { + for ($i = \count($trace) - 1; $i >= 0; $i--) { + $thing = isset($trace[$i]['class']) ? $trace[$i]['class'] : $trace[$i]['function']; + if (\preg_match('/\\\\?Psy\\\\/', $thing)) { + $trace = \array_slice($trace, $i + 1); + break; + } + } + } + + for ($i = 0, $count = \min($count, \count($trace)); $i < $count; $i++) { + $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : ''; + $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : ''; + $function = $trace[$i]['function']; + $file = isset($trace[$i]['file']) ? $trace[$i]['file'] : 'n/a'; + $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a'; + + // Make file paths relative to cwd + if ($cwd !== false) { + $file = \preg_replace('/^'.\preg_quote($cwd, '/').'/', '', $file); + } + + // Leave execution loop out of the `eval()'d code` lines + if (\preg_match("#/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code$#", \str_replace('\\', '/', $file))) { + $file = "eval()'d code"; + } + + // Skip any lines that don't match our filter options + if ($filter !== null && !$filter->match(\sprintf('%s%s%s() at %s:%s', $class, $type, $function, $file, $line))) { + continue; + } + + $lines[] = \sprintf( + ' %s%s%s() at %s:%s', + OutputFormatter::escape($class), + OutputFormatter::escape($type), + OutputFormatter::escape($function), + OutputFormatter::escape($file), + OutputFormatter::escape($line) + ); + } + + return $lines; + } +} diff --git a/vendor/psy/psysh/src/Input/CodeArgument.php b/vendor/psy/psysh/src/Input/CodeArgument.php index cfeb9e16d..f9c8bcdbc 100644 --- a/vendor/psy/psysh/src/Input/CodeArgument.php +++ b/vendor/psy/psysh/src/Input/CodeArgument.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -39,7 +39,7 @@ class CodeArgument extends InputArgument * * @throws \InvalidArgumentException When argument mode is not valid */ - public function __construct($name, $mode = null, $description = '', $default = null) + public function __construct(string $name, int $mode = null, string $description = '', $default = null) { if ($mode & InputArgument::IS_ARRAY) { throw new \InvalidArgumentException('Argument mode IS_ARRAY is not valid'); diff --git a/vendor/psy/psysh/src/Input/FilterOptions.php b/vendor/psy/psysh/src/Input/FilterOptions.php index d77a04fb7..f630d3b9b 100644 --- a/vendor/psy/psysh/src/Input/FilterOptions.php +++ b/vendor/psy/psysh/src/Input/FilterOptions.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -31,12 +31,12 @@ class FilterOptions * * @return InputOption[] */ - public static function getOptions() + public static function getOptions(): array { return [ - new InputOption('grep', 'G', InputOption::VALUE_REQUIRED, 'Limit to items matching the given pattern (string or regex).'), - new InputOption('insensitive', 'i', InputOption::VALUE_NONE, 'Case-insensitive search (requires --grep).'), - new InputOption('invert', 'v', InputOption::VALUE_NONE, 'Inverted search (requires --grep).'), + new InputOption('grep', 'G', InputOption::VALUE_REQUIRED, 'Limit to items matching the given pattern (string or regex).'), + new InputOption('insensitive', 'i', InputOption::VALUE_NONE, 'Case-insensitive search (requires --grep).'), + new InputOption('invert', 'v', InputOption::VALUE_NONE, 'Inverted search (requires --grep).'), ]; } @@ -56,7 +56,7 @@ class FilterOptions } if (!$this->stringIsRegex($pattern)) { - $pattern = '/' . \preg_quote($pattern, '/') . '/'; + $pattern = '/'.\preg_quote($pattern, '/').'/'; } if ($insensitive = $input->getOption('insensitive')) { @@ -65,10 +65,10 @@ class FilterOptions $this->validateRegex($pattern); - $this->filter = true; - $this->pattern = $pattern; + $this->filter = true; + $this->pattern = $pattern; $this->insensitive = $insensitive; - $this->invert = $input->getOption('invert'); + $this->invert = $input->getOption('invert'); } /** @@ -76,7 +76,7 @@ class FilterOptions * * @return bool */ - public function hasFilter() + public function hasFilter(): bool { return $this->filter; } @@ -89,7 +89,7 @@ class FilterOptions * * @return bool */ - public function match($string, array &$matches = null) + public function match(string $string, array &$matches = null): bool { return $this->filter === false || (\preg_match($this->pattern, $string, $matches) xor $this->invert); } @@ -97,16 +97,16 @@ class FilterOptions /** * Validate that grep, invert and insensitive input options are consistent. * - * @param InputInterface $input + * @throws RuntimeException if input is invalid * - * @return bool + * @param InputInterface $input */ private function validateInput(InputInterface $input) { if (!$input->getOption('grep')) { foreach (['invert', 'insensitive'] as $option) { if ($input->getOption($option)) { - throw new RuntimeException('--' . $option . ' does not make sense without --grep'); + throw new RuntimeException('--'.$option.' does not make sense without --grep'); } } } @@ -119,7 +119,7 @@ class FilterOptions * * @return bool */ - private function stringIsRegex($string) + private function stringIsRegex(string $string): bool { return \substr($string, 0, 1) === '/' && \substr($string, -1) === '/' && \strlen($string) >= 3; } @@ -127,19 +127,19 @@ class FilterOptions /** * Validate that $pattern is a valid regular expression. * - * @param string $pattern + * @throws RuntimeException if pattern is invalid * - * @return bool + * @param string $pattern */ - private function validateRegex($pattern) + private function validateRegex(string $pattern) { - \set_error_handler(['Psy\Exception\ErrorException', 'throwException']); + \set_error_handler([ErrorException::class, 'throwException']); try { \preg_match($pattern, ''); } catch (ErrorException $e) { - \restore_error_handler(); throw new RuntimeException(\str_replace('preg_match(): ', 'Invalid regular expression: ', $e->getRawMessage())); + } finally { + \restore_error_handler(); } - \restore_error_handler(); } } diff --git a/vendor/psy/psysh/src/Input/ShellInput.php b/vendor/psy/psysh/src/Input/ShellInput.php index 8675f4d12..af21f448a 100644 --- a/vendor/psy/psysh/src/Input/ShellInput.php +++ b/vendor/psy/psysh/src/Input/ShellInput.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -33,7 +33,7 @@ class ShellInput extends StringInput * * @param string $input An array of parameters from the CLI (in the argv format) */ - public function __construct($input) + public function __construct(string $input) { parent::__construct($input); @@ -50,7 +50,7 @@ class ShellInput extends StringInput $hasCodeArgument = false; if ($definition->getArgumentCount() > 0) { - $args = $definition->getArguments(); + $args = $definition->getArguments(); $lastArg = \array_pop($args); foreach ($args as $arg) { if ($arg instanceof CodeArgument) { @@ -81,24 +81,24 @@ class ShellInput extends StringInput * * @throws \InvalidArgumentException When unable to parse input (should never happen) */ - private function tokenize($input) + private function tokenize(string $input): array { $tokens = []; $length = \strlen($input); $cursor = 0; while ($cursor < $length) { - if (\preg_match('/\s+/A', $input, $match, null, $cursor)) { - } elseif (\preg_match('/([^="\'\s]+?)(=?)(' . StringInput::REGEX_QUOTED_STRING . '+)/A', $input, $match, null, $cursor)) { + if (\preg_match('/\s+/A', $input, $match, 0, $cursor)) { + } elseif (\preg_match('/([^="\'\s]+?)(=?)('.StringInput::REGEX_QUOTED_STRING.'+)/A', $input, $match, 0, $cursor)) { $tokens[] = [ - $match[1] . $match[2] . \stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, \strlen($match[3]) - 2))), + $match[1].$match[2].\stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, \strlen($match[3]) - 2))), \stripcslashes(\substr($input, $cursor)), ]; - } elseif (\preg_match('/' . StringInput::REGEX_QUOTED_STRING . '/A', $input, $match, null, $cursor)) { + } elseif (\preg_match('/'.StringInput::REGEX_QUOTED_STRING.'/A', $input, $match, 0, $cursor)) { $tokens[] = [ \stripcslashes(\substr($match[0], 1, \strlen($match[0]) - 2)), \stripcslashes(\substr($input, $cursor)), ]; - } elseif (\preg_match('/' . StringInput::REGEX_STRING . '/A', $input, $match, null, $cursor)) { + } elseif (\preg_match('/'.StringInput::REGEX_STRING.'/A', $input, $match, 0, $cursor)) { $tokens[] = [ \stripcslashes($match[1]), \stripcslashes(\substr($input, $cursor)), @@ -150,7 +150,7 @@ class ShellInput extends StringInput * * @throws \RuntimeException When too many arguments are given */ - private function parseShellArgument($token, $rest) + private function parseShellArgument(string $token, string $rest) { $c = \count($this->arguments); @@ -200,7 +200,7 @@ class ShellInput extends StringInput * * @param string $token The current token */ - private function parseShortOption($token) + private function parseShortOption(string $token) { $name = \substr($token, 1); @@ -223,7 +223,7 @@ class ShellInput extends StringInput * * @throws \RuntimeException When option given doesn't exist */ - private function parseShortOptionSet($name) + private function parseShortOptionSet(string $name) { $len = \strlen($name); for ($i = 0; $i < $len; $i++) { @@ -247,17 +247,12 @@ class ShellInput extends StringInput * * @param string $token The current token */ - private function parseLongOption($token) + private function parseLongOption(string $token) { $name = \substr($token, 2); if (false !== $pos = \strpos($name, '=')) { - if (0 === \strlen($value = \substr($name, $pos + 1))) { - // if no value after "=" then substr() returns "" since php7 only, false before - // see http://php.net/manual/fr/migration70.incompatible.php#119151 - if (PHP_VERSION_ID < 70000 && false === $value) { - $value = ''; - } + if (($value = \substr($name, $pos + 1)) === '') { \array_unshift($this->parsed, [$value, null]); } $this->addLongOption(\substr($name, 0, $pos), $value); @@ -274,7 +269,7 @@ class ShellInput extends StringInput * * @throws \RuntimeException When option given doesn't exist */ - private function addShortOption($shortcut, $value) + private function addShortOption(string $shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { throw new \RuntimeException(\sprintf('The "-%s" option does not exist.', $shortcut)); @@ -291,7 +286,7 @@ class ShellInput extends StringInput * * @throws \RuntimeException When option given doesn't exist */ - private function addLongOption($name, $value) + private function addLongOption(string $name, $value) { if (!$this->definition->hasOption($name)) { throw new \RuntimeException(\sprintf('The "--%s" option does not exist.', $name)); @@ -315,7 +310,7 @@ class ShellInput extends StringInput } } - if (null === $value) { + if ($value === null) { if ($option->isValueRequired()) { throw new \RuntimeException(\sprintf('The "--%s" option requires a value.', $name)); } diff --git a/vendor/psy/psysh/src/Input/SilentInput.php b/vendor/psy/psysh/src/Input/SilentInput.php index c6f234ba9..cf19409b3 100644 --- a/vendor/psy/psysh/src/Input/SilentInput.php +++ b/vendor/psy/psysh/src/Input/SilentInput.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -27,7 +27,7 @@ class SilentInput * * @param string $inputString */ - public function __construct($inputString) + public function __construct(string $inputString) { $this->inputString = $inputString; } @@ -37,7 +37,7 @@ class SilentInput * * @return string */ - public function __toString() + public function __toString(): string { return $this->inputString; } diff --git a/vendor/psy/psysh/src/Output/OutputPager.php b/vendor/psy/psysh/src/Output/OutputPager.php index a2f12aead..67f523d00 100644 --- a/vendor/psy/psysh/src/Output/OutputPager.php +++ b/vendor/psy/psysh/src/Output/OutputPager.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/Output/PassthruPager.php b/vendor/psy/psysh/src/Output/PassthruPager.php index 2dcb74398..b27142599 100644 --- a/vendor/psy/psysh/src/Output/PassthruPager.php +++ b/vendor/psy/psysh/src/Output/PassthruPager.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/Output/ProcOutputPager.php b/vendor/psy/psysh/src/Output/ProcOutputPager.php index a047b1c3f..5e562b94e 100644 --- a/vendor/psy/psysh/src/Output/ProcOutputPager.php +++ b/vendor/psy/psysh/src/Output/ProcOutputPager.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -32,12 +32,12 @@ class ProcOutputPager extends StreamOutput implements OutputPager * Constructor. * * @param StreamOutput $output - * @param string $cmd Pager process command (default: 'less -R -S -F -X') + * @param string $cmd Pager process command (default: 'less -R -F -X') */ - public function __construct(StreamOutput $output, $cmd = 'less -R -S -F -X') + public function __construct(StreamOutput $output, string $cmd = 'less -R -F -X') { $this->stream = $output->getStream(); - $this->cmd = $cmd; + $this->cmd = $cmd; } /** @@ -51,9 +51,10 @@ class ProcOutputPager extends StreamOutput implements OutputPager public function doWrite($message, $newline) { $pipe = $this->getPipe(); - if (false === @\fwrite($pipe, $message . ($newline ? PHP_EOL : ''))) { + if (false === @\fwrite($pipe, $message.($newline ? \PHP_EOL : ''))) { // @codeCoverageIgnoreStart // should never happen + $this->close(); throw new \RuntimeException('Unable to write output'); // @codeCoverageIgnoreEnd } @@ -77,7 +78,8 @@ class ProcOutputPager extends StreamOutput implements OutputPager } } - unset($this->pipe, $this->proc); + $this->pipe = null; + $this->proc = null; } /** diff --git a/vendor/psy/psysh/src/Output/ShellOutput.php b/vendor/psy/psysh/src/Output/ShellOutput.php index 5881a5c20..960ba5a7a 100644 --- a/vendor/psy/psysh/src/Output/ShellOutput.php +++ b/vendor/psy/psysh/src/Output/ShellOutput.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,8 +11,8 @@ namespace Psy\Output; +use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Output\ConsoleOutput; /** @@ -23,20 +23,26 @@ class ShellOutput extends ConsoleOutput const NUMBER_LINES = 128; private $paging = 0; + + /** @var OutputPager */ private $pager; + /** @var Theme */ + private $theme; + /** * Construct a ShellOutput instance. * - * @param mixed $verbosity (default: self::VERBOSITY_NORMAL) - * @param bool $decorated (default: null) - * @param OutputFormatterInterface $formatter (default: null) - * @param null|string|OutputPager $pager (default: null) + * @param mixed $verbosity (default: self::VERBOSITY_NORMAL) + * @param bool|null $decorated (default: null) + * @param OutputFormatterInterface|null $formatter (default: null) + * @param string|OutputPager|null $pager (default: null) */ - public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null, $pager = null) + public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null, $pager = null, $theme = null) { parent::__construct($verbosity, $decorated, $formatter); + $this->theme = $theme ?? new Theme('modern'); $this->initFormatters(); if ($pager === null) { @@ -46,7 +52,7 @@ class ShellOutput extends ConsoleOutput } elseif ($pager instanceof OutputPager) { $this->pager = $pager; } else { - throw new \InvalidArgumentException('Unexpected pager parameter: ' . $pager); + throw new \InvalidArgumentException('Unexpected pager parameter: '.$pager); } } @@ -63,7 +69,7 @@ class ShellOutput extends ConsoleOutput * @param string|array|\Closure $messages A string, array of strings or a callback * @param int $type (default: 0) */ - public function page($messages, $type = 0) + public function page($messages, int $type = 0) { if (\is_string($messages)) { $messages = (array) $messages; @@ -126,7 +132,7 @@ class ShellOutput extends ConsoleOutput $template = $this->isDecorated() ? ": %s" : "%{$pad}s: %s"; if ($type & self::OUTPUT_RAW) { - $messages = \array_map(['Symfony\Component\Console\Formatter\OutputFormatter', 'escape'], $messages); + $messages = \array_map([OutputFormatter::class, 'escape'], $messages); } foreach ($messages as $i => $line) { @@ -157,6 +163,15 @@ class ShellOutput extends ConsoleOutput } } + /** + * Set the output Theme. + */ + public function setTheme(Theme $theme) + { + $this->theme = $theme; + $this->initFormatters(); + } + /** * Flush and close the output pager. */ @@ -172,33 +187,24 @@ class ShellOutput extends ConsoleOutput */ private function initFormatters() { - $formatter = $this->getFormatter(); + $useGrayFallback = !$this->grayExists(); + $this->theme->applyStyles($this->getFormatter(), $useGrayFallback); + $this->theme->applyErrorStyles($this->getErrorOutput()->getFormatter(), $useGrayFallback); + } - $formatter->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); - $formatter->setStyle('error', new OutputFormatterStyle('black', 'red', ['bold'])); - $formatter->setStyle('aside', new OutputFormatterStyle('blue')); - $formatter->setStyle('strong', new OutputFormatterStyle(null, null, ['bold'])); - $formatter->setStyle('return', new OutputFormatterStyle('cyan')); - $formatter->setStyle('urgent', new OutputFormatterStyle('red')); - $formatter->setStyle('hidden', new OutputFormatterStyle('black')); + /** + * Checks if the "gray" color exists on the output. + * + * @return bool + */ + private function grayExists(): bool + { + try { + $this->write(''); + } catch (\InvalidArgumentException $e) { + return false; + } - // Visibility - $formatter->setStyle('public', new OutputFormatterStyle(null, null, ['bold'])); - $formatter->setStyle('protected', new OutputFormatterStyle('yellow')); - $formatter->setStyle('private', new OutputFormatterStyle('red')); - $formatter->setStyle('global', new OutputFormatterStyle('cyan', null, ['bold'])); - $formatter->setStyle('const', new OutputFormatterStyle('cyan')); - $formatter->setStyle('class', new OutputFormatterStyle('blue', null, ['underscore'])); - $formatter->setStyle('function', new OutputFormatterStyle(null)); - $formatter->setStyle('default', new OutputFormatterStyle(null)); - - // Types - $formatter->setStyle('number', new OutputFormatterStyle('magenta')); - $formatter->setStyle('string', new OutputFormatterStyle('green')); - $formatter->setStyle('bool', new OutputFormatterStyle('cyan')); - $formatter->setStyle('keyword', new OutputFormatterStyle('yellow')); - $formatter->setStyle('comment', new OutputFormatterStyle('blue')); - $formatter->setStyle('object', new OutputFormatterStyle('blue')); - $formatter->setStyle('resource', new OutputFormatterStyle('yellow')); + return true; } } diff --git a/vendor/psy/psysh/src/Output/Theme.php b/vendor/psy/psysh/src/Output/Theme.php new file mode 100644 index 000000000..89cae6b72 --- /dev/null +++ b/vendor/psy/psysh/src/Output/Theme.php @@ -0,0 +1,285 @@ + true, + ]; + + const CLASSIC_THEME = [ + 'compact' => true, + + 'prompt' => '>>> ', + 'bufferPrompt' => '... ', + 'replayPrompt' => '--> ', + 'returnValue' => '=> ', + ]; + + const DEFAULT_STYLES = [ + 'info' => ['white', 'blue', ['bold']], + 'warning' => ['black', 'yellow'], + 'error' => ['white', 'red', ['bold']], + 'whisper' => ['gray'], + + 'aside' => ['blue'], + 'strong' => [null, null, ['bold']], + 'return' => ['cyan'], + 'urgent' => ['red'], + 'hidden' => ['black'], + + // Visibility + 'public' => [null, null, ['bold']], + 'protected' => ['yellow'], + 'private' => ['red'], + 'global' => ['cyan', null, ['bold']], + 'const' => ['cyan'], + 'class' => ['blue', null, ['underscore']], + 'function' => [null], + 'default' => [null], + + // Types + 'number' => ['magenta'], + 'integer' => ['magenta'], + 'float' => ['yellow'], + 'string' => ['green'], + 'bool' => ['cyan'], + 'keyword' => ['yellow'], + 'comment' => ['blue'], + 'object' => ['blue'], + 'resource' => ['yellow'], + + // Code-specific formatting + 'inline_html' => ['cyan'], + ]; + + const ERROR_STYLES = ['info', 'warning', 'error', 'whisper']; + + private $compact = false; + + private $prompt = '> '; + private $bufferPrompt = '. '; + private $replayPrompt = '- '; + private $returnValue = '= '; + + private $grayFallback = 'blue'; + + private $styles = []; + + /** + * @param string|array $config theme name or config options + */ + public function __construct($config = 'modern') + { + if (\is_string($config)) { + switch ($config) { + case 'modern': + $config = static::MODERN_THEME; + break; + + case 'compact': + $config = static::COMPACT_THEME; + break; + + case 'classic': + $config = static::CLASSIC_THEME; + break; + + default: + \trigger_error(\sprintf('Unknown theme: %s', $config), \E_USER_NOTICE); + $config = static::MODERN_THEME; + break; + } + } + + if (!\is_array($config)) { + throw new \InvalidArgumentException('Invalid theme config'); + } + + foreach ($config as $name => $value) { + switch ($name) { + case 'compact': + $this->setCompact($value); + break; + + case 'prompt': + $this->setPrompt($value); + break; + + case 'bufferPrompt': + $this->setBufferPrompt($value); + break; + + case 'replayPrompt': + $this->setReplayPrompt($value); + break; + + case 'returnValue': + $this->setReturnValue($value); + break; + + case 'grayFallback': + $this->setGrayFallback($value); + break; + + case 'compact': + $this->setCompact($value); + break; + } + } + + $this->setStyles($config['styles'] ?? []); + } + + /** + * Enable or disable compact output. + */ + public function setCompact(bool $compact) + { + $this->compact = $compact; + } + + /** + * Get whether to use compact output. + */ + public function compact(): bool + { + return $this->compact; + } + + /** + * Set the prompt string. + */ + public function setPrompt(string $prompt) + { + $this->prompt = $prompt; + } + + /** + * Get the prompt string. + */ + public function prompt(): string + { + return $this->prompt; + } + + /** + * Set the buffer prompt string (used for multi-line input continuation). + */ + public function setBufferPrompt(string $bufferPrompt) + { + $this->bufferPrompt = $bufferPrompt; + } + + /** + * Get the buffer prompt string (used for multi-line input continuation). + */ + public function bufferPrompt(): string + { + return $this->bufferPrompt; + } + + /** + * Set the prompt string used when replaying history. + */ + public function setReplayPrompt(string $replayPrompt) + { + $this->replayPrompt = $replayPrompt; + } + + /** + * Get the prompt string used when replaying history. + */ + public function replayPrompt(): string + { + return $this->replayPrompt; + } + + /** + * Set the return value marker. + */ + public function setReturnValue(string $returnValue) + { + $this->returnValue = $returnValue; + } + + /** + * Get the return value marker. + */ + public function returnValue(): string + { + return $this->returnValue; + } + + /** + * Set the fallback color when "gray" is unavailable. + */ + public function setGrayFallback(string $grayFallback) + { + $this->grayFallback = $grayFallback; + } + + /** + * Set the shell output formatter styles. + * + * Accepts a map from style name to [fg, bg, options], for example: + * + * [ + * 'error' => ['white', 'red', ['bold']], + * 'warning' => ['black', 'yellow'], + * ] + * + * Foreground, background or options can be null, or even omitted entirely. + */ + public function setStyles(array $styles) + { + foreach (\array_keys(static::DEFAULT_STYLES) as $name) { + $this->styles[$name] = $styles[$name] ?? static::DEFAULT_STYLES[$name]; + } + } + + /** + * Apply the current output formatter styles. + */ + public function applyStyles(OutputFormatterInterface $formatter, bool $useGrayFallback) + { + foreach (\array_keys(static::DEFAULT_STYLES) as $name) { + $formatter->setStyle($name, new OutputFormatterStyle(...$this->getStyle($name, $useGrayFallback))); + } + } + + /** + * Apply the current output formatter error styles. + */ + public function applyErrorStyles(OutputFormatterInterface $errorFormatter, bool $useGrayFallback) + { + foreach (static::ERROR_STYLES as $name) { + $errorFormatter->setStyle($name, new OutputFormatterStyle(...$this->getStyle($name, $useGrayFallback))); + } + } + + private function getStyle(string $name, bool $useGrayFallback): array + { + return \array_map(function ($style) use ($useGrayFallback) { + return ($useGrayFallback && $style === 'gray') ? $this->grayFallback : $style; + }, $this->styles[$name]); + } +} diff --git a/vendor/psy/psysh/src/ParserFactory.php b/vendor/psy/psysh/src/ParserFactory.php index 263da2022..fb348dd9e 100644 --- a/vendor/psy/psysh/src/ParserFactory.php +++ b/vendor/psy/psysh/src/ParserFactory.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,7 +11,6 @@ namespace Psy; -use PhpParser\Lexer; use PhpParser\Parser; use PhpParser\ParserFactory as OriginalParserFactory; @@ -20,8 +19,8 @@ use PhpParser\ParserFactory as OriginalParserFactory; */ class ParserFactory { - const ONLY_PHP5 = 'ONLY_PHP5'; - const ONLY_PHP7 = 'ONLY_PHP7'; + const ONLY_PHP5 = 'ONLY_PHP5'; + const ONLY_PHP7 = 'ONLY_PHP7'; const PREFER_PHP5 = 'PREFER_PHP5'; const PREFER_PHP7 = 'PREFER_PHP7'; @@ -30,23 +29,11 @@ class ParserFactory * * @return array */ - public static function getPossibleKinds() + public static function getPossibleKinds(): array { return ['ONLY_PHP5', 'ONLY_PHP7', 'PREFER_PHP5', 'PREFER_PHP7']; } - /** - * Is this parser factory supports kinds? - * - * PHP parser < 2.0 doesn't support kinds, >= 2.0 — does. - * - * @return bool - */ - public function hasKindsSupport() - { - return \class_exists('PhpParser\ParserFactory'); - } - /** * Default kind (if supported, based on current interpreter's version). * @@ -54,9 +41,7 @@ class ParserFactory */ public function getDefaultKind() { - if ($this->hasKindsSupport()) { - return \version_compare(PHP_VERSION, '7.0', '>=') ? static::ONLY_PHP7 : static::ONLY_PHP5; - } + return static::ONLY_PHP7; } /** @@ -66,26 +51,18 @@ class ParserFactory * * @return Parser */ - public function createParser($kind = null) + public function createParser($kind = null): Parser { - if ($this->hasKindsSupport()) { - $originalFactory = new OriginalParserFactory(); + $originalFactory = new OriginalParserFactory(); - $kind = $kind ?: $this->getDefaultKind(); + $kind = $kind ?: $this->getDefaultKind(); - if (!\in_array($kind, static::getPossibleKinds())) { - throw new \InvalidArgumentException('Unknown parser kind'); - } - - $parser = $originalFactory->create(\constant('PhpParser\ParserFactory::' . $kind)); - } else { - if ($kind !== null) { - throw new \InvalidArgumentException('Install PHP Parser v2.x to specify parser kind'); - } - - $parser = new Parser(new Lexer()); + if (!\in_array($kind, static::getPossibleKinds())) { + throw new \InvalidArgumentException('Unknown parser kind'); } + $parser = $originalFactory->create(\constant(OriginalParserFactory::class.'::'.$kind)); + return $parser; } } diff --git a/vendor/psy/psysh/src/Readline/GNUReadline.php b/vendor/psy/psysh/src/Readline/GNUReadline.php index 1cec3c63a..83044e803 100644 --- a/vendor/psy/psysh/src/Readline/GNUReadline.php +++ b/vendor/psy/psysh/src/Readline/GNUReadline.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,7 +14,7 @@ namespace Psy\Readline; /** * A Readline interface implementation for GNU Readline. * - * This is by far the coolest way to do it, but it doesn't work with new PHP. + * This is by far the coolest way to do it, if you can. * * Oh well. */ @@ -32,31 +32,41 @@ class GNUReadline implements Readline * decided it would be awesome to swap out GNU Readline for Libedit, but * they ended up shipping an incomplete implementation. So we've got this. * + * NOTE: As of PHP 7.4, PHP sometimes has history support in the Libedit + * wrapper, so that will use the GNUReadline implementation as well! + * * @return bool */ - public static function isSupported() + public static function isSupported(): bool { - return \function_exists('readline_list_history'); + return \function_exists('readline') && \function_exists('readline_list_history'); } /** - * GNU Readline constructor. + * Check whether this readline implementation supports bracketed paste. * - * @param string|false $historyFile - * @param int $historySize - * @param bool $eraseDups + * Currently, the GNU readline implementation does, but the libedit wrapper does not. + * + * @return bool */ + public static function supportsBracketedPaste(): bool + { + return self::isSupported() && \stripos(\readline_info('library_version') ?: '', 'editline') === false; + } + public function __construct($historyFile = null, $historySize = 0, $eraseDups = false) { $this->historyFile = ($historyFile !== null) ? $historyFile : false; $this->historySize = $historySize; - $this->eraseDups = $eraseDups; + $this->eraseDups = $eraseDups; + + \readline_info('readline_name', 'psysh'); } /** * {@inheritdoc} */ - public function addHistory($line) + public function addHistory(string $line): bool { if ($res = \readline_add_history($line)) { $this->writeHistory(); @@ -68,7 +78,7 @@ class GNUReadline implements Readline /** * {@inheritdoc} */ - public function clearHistory() + public function clearHistory(): bool { if ($res = \readline_clear_history()) { $this->writeHistory(); @@ -80,25 +90,17 @@ class GNUReadline implements Readline /** * {@inheritdoc} */ - public function listHistory() + public function listHistory(): array { - return readline_list_history(); + return \readline_list_history(); } /** * {@inheritdoc} */ - public function readHistory() + public function readHistory(): bool { - // Workaround PHP bug #69054 - // - // If open_basedir is set, readline_read_history() segfaults. This was fixed in 5.6.7: - // - // https://github.com/php/php-src/blob/423a057023ef3c00d2ffc16a6b43ba01d0f71796/NEWS#L19-L21 - // - if (\version_compare(PHP_VERSION, '5.6.7', '>=') || !\ini_get('open_basedir')) { - \readline_read_history(); - } + \readline_read_history(); \readline_clear_history(); return \readline_read_history($this->historyFile); @@ -107,7 +109,7 @@ class GNUReadline implements Readline /** * {@inheritdoc} */ - public function readline($prompt = null) + public function readline(string $prompt = null) { return \readline($prompt); } @@ -123,7 +125,7 @@ class GNUReadline implements Readline /** * {@inheritdoc} */ - public function writeHistory() + public function writeHistory(): bool { // We have to write history first, since it is used // by Libedit to list history diff --git a/vendor/psy/psysh/src/Readline/Hoa/Autocompleter.php b/vendor/psy/psysh/src/Readline/Hoa/Autocompleter.php new file mode 100644 index 000000000..6955de622 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Autocompleter.php @@ -0,0 +1,57 @@ +setAutocompleters($autocompleters); + + return; + } + + /** + * Complete a word. + * Returns null for no word, a full-word or an array of full-words. + */ + public function complete(&$prefix) + { + foreach ($this->getAutocompleters() as $autocompleter) { + $preg = \preg_match( + '#('.$autocompleter->getWordDefinition().')$#u', + $prefix, + $match + ); + + if (0 === $preg) { + continue; + } + + $_prefix = $match[0]; + + if (null === $out = $autocompleter->complete($_prefix)) { + continue; + } + + $prefix = $_prefix; + + return $out; + } + + return null; + } + + /** + * Set/initialize list of autocompleters. + */ + protected function setAutocompleters(array $autocompleters) + { + $old = $this->_autocompleters; + $this->_autocompleters = new \ArrayObject($autocompleters); + + return $old; + } + + /** + * Get list of autocompleters. + */ + public function getAutocompleters() + { + return $this->_autocompleters; + } + + /** + * Get definition of a word. + */ + public function getWordDefinition(): string + { + return '.*'; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php b/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php new file mode 100644 index 000000000..a922b7898 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/AutocompleterPath.php @@ -0,0 +1,194 @@ +setRoot($root); + } + + if (null !== $iteratorFactory) { + $this->setIteratorFactory($iteratorFactory); + } + } + + /** + * Complete a word. + * Returns null for no word, a full-word or an array of full-words. + */ + public function complete(&$prefix) + { + $root = $this->getRoot(); + + if (static::PWD === $root) { + $root = \getcwd(); + } + + $path = $root.\DIRECTORY_SEPARATOR.$prefix; + + if (!\is_dir($path)) { + $path = \dirname($path).\DIRECTORY_SEPARATOR; + $prefix = \basename($prefix); + } else { + $prefix = null; + } + + $iteratorFactory = $this->getIteratorFactory() ?: + static::getDefaultIteratorFactory(); + + try { + $iterator = $iteratorFactory($path); + $out = []; + $length = \mb_strlen($prefix); + + foreach ($iterator as $fileinfo) { + $filename = $fileinfo->getFilename(); + + if (null === $prefix || + (\mb_substr($filename, 0, $length) === $prefix)) { + if ($fileinfo->isDir()) { + $out[] = $filename.'/'; + } else { + $out[] = $filename; + } + } + } + } catch (\Exception $e) { + return null; + } + + $count = \count($out); + + if (1 === $count) { + return $out[0]; + } + + if (0 === $count) { + return null; + } + + return $out; + } + + /** + * Get definition of a word. + */ + public function getWordDefinition(): string + { + return '/?[\w\d\\_\-\.]+(/[\w\d\\_\-\.]*)*'; + } + + /** + * Set root. + */ + public function setRoot(string $root) + { + $old = $this->_root; + $this->_root = $root; + + return $old; + } + + /** + * Get root. + */ + public function getRoot() + { + return $this->_root; + } + + /** + * Set iterator factory (a finder). + */ + public function setIteratorFactory(\Closure $iteratorFactory) + { + $old = $this->_iteratorFactory; + $this->_iteratorFactory = $iteratorFactory; + + return $old; + } + + /** + * Get iterator factory. + */ + public function getIteratorFactory() + { + return $this->_iteratorFactory; + } + + /** + * Get default iterator factory (based on \DirectoryIterator). + */ + public static function getDefaultIteratorFactory() + { + return function ($path) { + return new \DirectoryIterator($path); + }; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/AutocompleterWord.php b/vendor/psy/psysh/src/Readline/Hoa/AutocompleterWord.php new file mode 100644 index 000000000..c60823eac --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/AutocompleterWord.php @@ -0,0 +1,119 @@ +setWords($words); + } + + /** + * Complete a word. + * Returns null for no word, a full-word or an array of full-words. + * + * @param string &$prefix Prefix to autocomplete + * + * @return mixed + */ + public function complete(&$prefix) + { + $out = []; + $length = \mb_strlen($prefix); + + foreach ($this->getWords() as $word) { + if (\mb_substr($word, 0, $length) === $prefix) { + $out[] = $word; + } + } + + if (empty($out)) { + return null; + } + + if (1 === \count($out)) { + return $out[0]; + } + + return $out; + } + + /** + * Get definition of a word. + */ + public function getWordDefinition(): string + { + return '\b\w+'; + } + + /** + * Set list of words. + * + * @param array $words words + * + * @return array + */ + public function setWords(array $words) + { + $old = $this->_words; + $this->_words = $words; + + return $old; + } + + /** + * Get list of words. + */ + public function getWords(): array + { + return $this->_words; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Console.php b/vendor/psy/psysh/src/Readline/Hoa/Console.php new file mode 100644 index 000000000..17b1fecc6 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Console.php @@ -0,0 +1,347 @@ + $repeat) { + return; + } elseif (1 === $repeat) { + $handle = \explode(' ', $steps); + } else { + $handle = \explode(' ', $steps, 1); + } + + $tput = Console::getTput(); + $output = Console::getOutput(); + + foreach ($handle as $step) { + switch ($step) { + case 'u': + case 'up': + case '↑': + $output->writeAll( + \str_replace( + '%p1%d', + $repeat, + $tput->get('parm_up_cursor') + ) + ); + + break; + + case 'U': + case 'UP': + static::moveTo(null, 1); + + break; + + case 'r': + case 'right': + case '→': + $output->writeAll( + \str_replace( + '%p1%d', + $repeat, + $tput->get('parm_right_cursor') + ) + ); + + break; + + case 'R': + case 'RIGHT': + static::moveTo(9999); + + break; + + case 'd': + case 'down': + case '↓': + $output->writeAll( + \str_replace( + '%p1%d', + $repeat, + $tput->get('parm_down_cursor') + ) + ); + + break; + + case 'D': + case 'DOWN': + static::moveTo(null, 9999); + + break; + + case 'l': + case 'left': + case '←': + $output->writeAll( + \str_replace( + '%p1%d', + $repeat, + $tput->get('parm_left_cursor') + ) + ); + + break; + + case 'L': + case 'LEFT': + static::moveTo(1); + + break; + } + } + } + + /** + * Move to the line X and the column Y. + * If null, use the current coordinate. + */ + public static function moveTo(int $x = null, int $y = null) + { + if (null === $x || null === $y) { + $position = static::getPosition(); + + if (null === $x) { + $x = $position['x']; + } + + if (null === $y) { + $y = $position['y']; + } + } + + Console::getOutput()->writeAll( + \str_replace( + ['%i%p1%d', '%p2%d'], + [$y, $x], + Console::getTput()->get('cursor_address') + ) + ); + } + + /** + * Get current position (x and y) of the cursor. + */ + public static function getPosition(): array + { + $tput = Console::getTput(); + $user7 = $tput->get('user7'); + + if (null === $user7) { + return [ + 'x' => 0, + 'y' => 0, + ]; + } + + Console::getOutput()->writeAll($user7); + + $input = Console::getInput(); + + // Read $tput->get('user6'). + $input->read(2); // skip \033 and [. + + $x = null; + $y = null; + $handle = &$y; + + while (true) { + $char = $input->readCharacter(); + + switch ($char) { + case ';': + $handle = &$x; + + break; + + case 'R': + break 2; + + default: + $handle .= $char; + } + } + + return [ + 'x' => (int) $x, + 'y' => (int) $y, + ]; + } + + /** + * Save current position. + */ + public static function save() + { + Console::getOutput()->writeAll( + Console::getTput()->get('save_cursor') + ); + } + + /** + * Restore cursor to the last saved position. + */ + public static function restore() + { + Console::getOutput()->writeAll( + Console::getTput()->get('restore_cursor') + ); + } + + /** + * Clear the screen. + * Part can be: + * • a, all, ↕ : clear entire screen and static::move(1, 1); + * • u, up, ↑ : clear from cursor to beginning of the screen; + * • r, right, → : clear from cursor to the end of the line; + * • d, down, ↓ : clear from cursor to end of the screen; + * • l, left, ← : clear from cursor to beginning of the screen; + * • line, ↔ : clear all the line and static::move(1). + * Parts can be concatenated by a single space. + */ + public static function clear(string $parts = 'all') + { + $tput = Console::getTput(); + $output = Console::getOutput(); + + foreach (\explode(' ', $parts) as $part) { + switch ($part) { + case 'a': + case 'all': + case '↕': + $output->writeAll($tput->get('clear_screen')); + static::moveTo(1, 1); + + break; + + case 'u': + case 'up': + case '↑': + $output->writeAll("\033[1J"); + + break; + + case 'r': + case 'right': + case '→': + $output->writeAll($tput->get('clr_eol')); + + break; + + case 'd': + case 'down': + case '↓': + $output->writeAll($tput->get('clr_eos')); + + break; + + case 'l': + case 'left': + case '←': + $output->writeAll($tput->get('clr_bol')); + + break; + + case 'line': + case '↔': + $output->writeAll("\r".$tput->get('clr_eol')); + + break; + } + } + } + + /** + * Hide the cursor. + */ + public static function hide() + { + Console::getOutput()->writeAll( + Console::getTput()->get('cursor_invisible') + ); + } + + /** + * Show the cursor. + */ + public static function show() + { + Console::getOutput()->writeAll( + Console::getTput()->get('cursor_visible') + ); + } + + /** + * Colorize cursor. + * Attributes can be: + * • n, normal : normal; + * • b, bold : bold; + * • u, underlined : underlined; + * • bl, blink : blink; + * • i, inverse : inverse; + * • !b, !bold : normal weight; + * • !u, !underlined : not underlined; + * • !bl, !blink : steady; + * • !i, !inverse : positive; + * • fg(color), foreground(color) : set foreground to “color”; + * • bg(color), background(color) : set background to “color”. + * “color” can be: + * • default; + * • black; + * • red; + * • green; + * • yellow; + * • blue; + * • magenta; + * • cyan; + * • white; + * • 0-256 (classic palette); + * • #hexa. + * Attributes can be concatenated by a single space. + */ + public static function colorize(string $attributes) + { + static $_rgbTo256 = null; + + if (null === $_rgbTo256) { + $_rgbTo256 = [ + '000000', '800000', '008000', '808000', '000080', '800080', + '008080', 'c0c0c0', '808080', 'ff0000', '00ff00', 'ffff00', + '0000ff', 'ff00ff', '00ffff', 'ffffff', '000000', '00005f', + '000087', '0000af', '0000d7', '0000ff', '005f00', '005f5f', + '005f87', '005faf', '005fd7', '005fff', '008700', '00875f', + '008787', '0087af', '0087d7', '0087ff', '00af00', '00af5f', + '00af87', '00afaf', '00afd7', '00afff', '00d700', '00d75f', + '00d787', '00d7af', '00d7d7', '00d7ff', '00ff00', '00ff5f', + '00ff87', '00ffaf', '00ffd7', '00ffff', '5f0000', '5f005f', + '5f0087', '5f00af', '5f00d7', '5f00ff', '5f5f00', '5f5f5f', + '5f5f87', '5f5faf', '5f5fd7', '5f5fff', '5f8700', '5f875f', + '5f8787', '5f87af', '5f87d7', '5f87ff', '5faf00', '5faf5f', + '5faf87', '5fafaf', '5fafd7', '5fafff', '5fd700', '5fd75f', + '5fd787', '5fd7af', '5fd7d7', '5fd7ff', '5fff00', '5fff5f', + '5fff87', '5fffaf', '5fffd7', '5fffff', '870000', '87005f', + '870087', '8700af', '8700d7', '8700ff', '875f00', '875f5f', + '875f87', '875faf', '875fd7', '875fff', '878700', '87875f', + '878787', '8787af', '8787d7', '8787ff', '87af00', '87af5f', + '87af87', '87afaf', '87afd7', '87afff', '87d700', '87d75f', + '87d787', '87d7af', '87d7d7', '87d7ff', '87ff00', '87ff5f', + '87ff87', '87ffaf', '87ffd7', '87ffff', 'af0000', 'af005f', + 'af0087', 'af00af', 'af00d7', 'af00ff', 'af5f00', 'af5f5f', + 'af5f87', 'af5faf', 'af5fd7', 'af5fff', 'af8700', 'af875f', + 'af8787', 'af87af', 'af87d7', 'af87ff', 'afaf00', 'afaf5f', + 'afaf87', 'afafaf', 'afafd7', 'afafff', 'afd700', 'afd75f', + 'afd787', 'afd7af', 'afd7d7', 'afd7ff', 'afff00', 'afff5f', + 'afff87', 'afffaf', 'afffd7', 'afffff', 'd70000', 'd7005f', + 'd70087', 'd700af', 'd700d7', 'd700ff', 'd75f00', 'd75f5f', + 'd75f87', 'd75faf', 'd75fd7', 'd75fff', 'd78700', 'd7875f', + 'd78787', 'd787af', 'd787d7', 'd787ff', 'd7af00', 'd7af5f', + 'd7af87', 'd7afaf', 'd7afd7', 'd7afff', 'd7d700', 'd7d75f', + 'd7d787', 'd7d7af', 'd7d7d7', 'd7d7ff', 'd7ff00', 'd7ff5f', + 'd7ff87', 'd7ffaf', 'd7ffd7', 'd7ffff', 'ff0000', 'ff005f', + 'ff0087', 'ff00af', 'ff00d7', 'ff00ff', 'ff5f00', 'ff5f5f', + 'ff5f87', 'ff5faf', 'ff5fd7', 'ff5fff', 'ff8700', 'ff875f', + 'ff8787', 'ff87af', 'ff87d7', 'ff87ff', 'ffaf00', 'ffaf5f', + 'ffaf87', 'ffafaf', 'ffafd7', 'ffafff', 'ffd700', 'ffd75f', + 'ffd787', 'ffd7af', 'ffd7d7', 'ffd7ff', 'ffff00', 'ffff5f', + 'ffff87', 'ffffaf', 'ffffd7', 'ffffff', '080808', '121212', + '1c1c1c', '262626', '303030', '3a3a3a', '444444', '4e4e4e', + '585858', '606060', '666666', '767676', '808080', '8a8a8a', + '949494', '9e9e9e', 'a8a8a8', 'b2b2b2', 'bcbcbc', 'c6c6c6', + 'd0d0d0', 'dadada', 'e4e4e4', 'eeeeee', + ]; + } + + $tput = Console::getTput(); + + if (1 >= $tput->count('max_colors')) { + return; + } + + $handle = []; + + foreach (\explode(' ', $attributes) as $attribute) { + switch ($attribute) { + case 'n': + case 'normal': + $handle[] = 0; + + break; + + case 'b': + case 'bold': + $handle[] = 1; + + break; + + case 'u': + case 'underlined': + $handle[] = 4; + + break; + + case 'bl': + case 'blink': + $handle[] = 5; + + break; + + case 'i': + case 'inverse': + $handle[] = 7; + + break; + + case '!b': + case '!bold': + $handle[] = 22; + + break; + + case '!u': + case '!underlined': + $handle[] = 24; + + break; + + case '!bl': + case '!blink': + $handle[] = 25; + + break; + + case '!i': + case '!inverse': + $handle[] = 27; + + break; + + default: + if (0 === \preg_match('#^([^\(]+)\(([^\)]+)\)$#', $attribute, $m)) { + break; + } + + $shift = 0; + + switch ($m[1]) { + case 'fg': + case 'foreground': + $shift = 0; + + break; + + case 'bg': + case 'background': + $shift = 10; + + break; + + default: + break 2; + } + + $_handle = 0; + $_keyword = true; + + switch ($m[2]) { + case 'black': + $_handle = 30; + + break; + + case 'red': + $_handle = 31; + + break; + + case 'green': + $_handle = 32; + + break; + + case 'yellow': + $_handle = 33; + + break; + + case 'blue': + $_handle = 34; + + break; + + case 'magenta': + $_handle = 35; + + break; + + case 'cyan': + $_handle = 36; + + break; + + case 'white': + $_handle = 37; + + break; + + case 'default': + $_handle = 39; + + break; + + default: + $_keyword = false; + + if (256 <= $tput->count('max_colors') && + '#' === $m[2][0]) { + $rgb = \hexdec(\substr($m[2], 1)); + $r = ($rgb >> 16) & 255; + $g = ($rgb >> 8) & 255; + $b = $rgb & 255; + $distance = null; + + foreach ($_rgbTo256 as $i => $_rgb) { + $_rgb = \hexdec($_rgb); + $_r = ($_rgb >> 16) & 255; + $_g = ($_rgb >> 8) & 255; + $_b = $_rgb & 255; + + $d = \sqrt( + ($_r - $r) ** 2 + + ($_g - $g) ** 2 + + ($_b - $b) ** 2 + ); + + if (null === $distance || + $d <= $distance) { + $distance = $d; + $_handle = $i; + } + } + } else { + $_handle = (int) ($m[2]); + } + } + + if (true === $_keyword) { + $handle[] = $_handle + $shift; + } else { + $handle[] = (38 + $shift).';5;'.$_handle; + } + } + } + + Console::getOutput()->writeAll("\033[".\implode(';', $handle).'m'); + + return; + } + + /** + * Change color number to a specific RGB color. + */ + public static function changeColor(int $fromCode, int $toColor) + { + $tput = Console::getTput(); + + if (true !== $tput->has('can_change')) { + return; + } + + $r = ($toColor >> 16) & 255; + $g = ($toColor >> 8) & 255; + $b = $toColor & 255; + + Console::getOutput()->writeAll( + \str_replace( + [ + '%p1%d', + 'rgb:', + '%p2%{255}%*%{1000}%/%2.2X/', + '%p3%{255}%*%{1000}%/%2.2X/', + '%p4%{255}%*%{1000}%/%2.2X', + ], + [ + $fromCode, + '', + \sprintf('%02x', $r), + \sprintf('%02x', $g), + \sprintf('%02x', $b), + ], + $tput->get('initialize_color') + ) + ); + + return; + } + + /** + * Set cursor style. + * Style can be: + * • b, block, ▋: block; + * • u, underline, _: underline; + * • v, vertical, |: vertical. + */ + public static function setStyle(string $style, bool $blink = true) + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + switch ($style) { + case 'u': + case 'underline': + case '_': + $_style = 2; + + break; + + case 'v': + case 'vertical': + case '|': + $_style = 5; + + break; + + case 'b': + case 'block': + case '▋': + default: + $_style = 1; + + break; + } + + if (false === $blink) { + ++$_style; + } + + // Not sure what tput entry we can use here… + Console::getOutput()->writeAll("\033[".$_style.' q'); + + return; + } + + /** + * Make a stupid “bip”. + */ + public static function bip() + { + Console::getOutput()->writeAll( + Console::getTput()->get('bell') + ); + } +} + +/* + * Advanced interaction. + */ +Console::advancedInteraction(); diff --git a/vendor/psy/psysh/src/Readline/Hoa/ConsoleException.php b/vendor/psy/psysh/src/Readline/Hoa/ConsoleException.php new file mode 100644 index 000000000..17e6f607b --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ConsoleException.php @@ -0,0 +1,46 @@ +_input = $input; + + return; + } + + /** + * Get underlying stream. + */ + public function getStream(): StreamIn + { + return $this->_input; + } + + /** + * Test for end-of-file. + */ + public function eof(): bool + { + return $this->_input->eof(); + } + + /** + * Read n characters. + */ + public function read(int $length) + { + return $this->_input->read($length); + } + + /** + * Alias of $this->read(). + */ + public function readString(int $length) + { + return $this->_input->readString($length); + } + + /** + * Read a character. + */ + public function readCharacter() + { + return $this->_input->readCharacter(); + } + + /** + * Read a boolean. + */ + public function readBoolean() + { + return $this->_input->readBoolean(); + } + + /** + * Read an integer. + */ + public function readInteger(int $length = 1) + { + return $this->_input->readInteger($length); + } + + /** + * Read a float. + */ + public function readFloat(int $length = 1) + { + return $this->_input->readFloat($length); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + */ + public function readArray($argument = null) + { + return $this->_input->readArray($argument); + } + + /** + * Read a line. + */ + public function readLine() + { + return $this->_input->readLine(); + } + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = 0) + { + return $this->_input->readAll($offset); + } + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format): array + { + return $this->_input->scanf($format); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php b/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php new file mode 100644 index 000000000..ded5ec060 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ConsoleOutput.php @@ -0,0 +1,208 @@ +_output = $output; + + return; + } + + /** + * Get the real output stream. + */ + public function getStream(): StreamOut + { + return $this->_output; + } + + /** + * Write n characters. + */ + public function write(string $string, int $length) + { + if (0 > $length) { + throw new ConsoleException('Length must be greater than 0, given %d.', 0, $length); + } + + $out = \substr($string, 0, $length); + + if (true === $this->isMultiplexerConsidered()) { + if (true === Console::isTmuxRunning()) { + $out = + "\033Ptmux;". + \str_replace("\033", "\033\033", $out). + "\033\\"; + } + + $length = \strlen($out); + } + + if (null === $this->_output) { + echo $out; + } else { + $this->_output->write($out, $length); + } + } + + /** + * Write a string. + */ + public function writeString(string $string) + { + $string = (string) $string; + + return $this->write($string, \strlen($string)); + } + + /** + * Write a character. + */ + public function writeCharacter(string $character) + { + return $this->write((string) $character[0], 1); + } + + /** + * Write a boolean. + */ + public function writeBoolean(bool $boolean) + { + return $this->write(((bool) $boolean) ? '1' : '0', 1); + } + + /** + * Write an integer. + */ + public function writeInteger(int $integer) + { + $integer = (string) (int) $integer; + + return $this->write($integer, \strlen($integer)); + } + + /** + * Write a float. + */ + public function writeFloat(float $float) + { + $float = (string) (float) $float; + + return $this->write($float, \strlen($float)); + } + + /** + * Write an array. + */ + public function writeArray(array $array) + { + $array = \var_export($array, true); + + return $this->write($array, \strlen($array)); + } + + /** + * Write a line. + */ + public function writeLine(string $line) + { + if (false === $n = \strpos($line, "\n")) { + return $this->write($line."\n", \strlen($line) + 1); + } + + ++$n; + + return $this->write(\substr($line, 0, $n), $n); + } + + /** + * Write all, i.e. as much as possible. + */ + public function writeAll(string $string) + { + return $this->write($string ?: '', \strlen($string ?: '')); + } + + /** + * Truncate a stream to a given length. + */ + public function truncate(int $size): bool + { + return false; + } + + /** + * Consider the multiplexer (if running) while writing on the output. + */ + public function considerMultiplexer(bool $consider): bool + { + $old = $this->_considerMultiplexer; + $this->_considerMultiplexer = $consider; + + return $old; + } + + /** + * Check whether the multiplexer must be considered or not. + */ + public function isMultiplexerConsidered(): bool + { + return $this->_considerMultiplexer; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php b/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php new file mode 100644 index 000000000..69bf1ddb1 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ConsoleProcessus.php @@ -0,0 +1,892 @@ + value, or input). + */ + protected $_options = []; + + /** + * Current working directory. + */ + protected $_cwd = null; + + /** + * Environment. + */ + protected $_environment = null; + + /** + * Timeout. + */ + protected $_timeout = 30; + + /** + * Descriptor. + */ + protected $_descriptors = [ + 0 => ['pipe', 'r'], + 1 => ['pipe', 'w'], + 2 => ['pipe', 'w'], + ]; + + /** + * Pipe descriptors of the processus. + */ + protected $_pipes = null; + + /** + * Seekability of pipes. + */ + protected $_seekable = []; + + /** + * Start a processus. + */ + public function __construct( + string $command, + array $options = null, + array $descriptors = null, + string $cwd = null, + array $environment = null, + int $timeout = 30 + ) { + $this->setCommand($command); + + if (null !== $options) { + $this->setOptions($options); + } + + if (null !== $descriptors) { + $this->_descriptors = []; + + foreach ($descriptors as $descriptor => $nature) { + if (isset($this->_descriptors[$descriptor])) { + throw new ConsoleException('Pipe descriptor %d already exists, cannot '.'redefine it.', 0, $descriptor); + } + + $this->_descriptors[$descriptor] = $nature; + } + } + + $this->setCwd($cwd ?: \getcwd()); + + if (null !== $environment) { + $this->setEnvironment($environment); + } + + $this->setTimeout($timeout); + parent::__construct($this->getCommandLine(), null, true); + $this->getListener()->addIds(['input', 'output', 'timeout', 'start', 'stop']); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + $out = @\proc_open( + $streamName, + $this->_descriptors, + $this->_pipes, + $this->getCwd(), + $this->getEnvironment() + ); + + if (false === $out) { + throw new ConsoleException('Something wrong happen when running %s.', 1, $streamName); + } + + return $out; + } + + /** + * Close the current stream. + */ + protected function _close(): bool + { + foreach ($this->_pipes as $pipe) { + @\fclose($pipe); + } + + return (bool) @\proc_close($this->getStream()); + } + + /** + * Run the process and fire events (amongst start, stop, input, output and + * timeout). + * If an event returns false, it will close the current pipe. + * For a simple run without firing events, use the $this->open() method. + */ + public function run() + { + if (false === $this->isOpened()) { + $this->open(); + } else { + $this->_close(); + $this->_setStream($this->_open( + $this->getStreamName(), + $this->getStreamContext() + )); + } + + $this->getListener()->fire('start', new EventBucket()); + + $_read = []; + $_write = []; + $_except = []; + + foreach ($this->_pipes as $p => $pipe) { + switch ($this->_descriptors[$p][1]) { + case 'r': + \stream_set_blocking($pipe, false); + $_write[] = $pipe; + + break; + + case 'w': + case 'a': + \stream_set_blocking($pipe, true); + $_read[] = $pipe; + + break; + } + } + + while (true) { + foreach ($_read as $i => $r) { + if (false === \is_resource($r)) { + unset($_read[$i]); + } + } + + foreach ($_write as $i => $w) { + if (false === \is_resource($w)) { + unset($_write[$i]); + } + } + + foreach ($_except as $i => $e) { + if (false === \is_resource($e)) { + unset($_except[$i]); + } + } + + if (empty($_read) && empty($_write) && empty($_except)) { + break; + } + + $read = $_read; + $write = $_write; + $except = $_except; + $select = \stream_select($read, $write, $except, $this->getTimeout()); + + if (0 === $select) { + $this->getListener()->fire('timeout', new EventBucket()); + + break; + } + + foreach ($read as $i => $_r) { + $pipe = \array_search($_r, $this->_pipes); + $line = $this->readLine($pipe); + + if (false === $line) { + $result = [false]; + } else { + $result = $this->getListener()->fire( + 'output', + new EventBucket([ + 'pipe' => $pipe, + 'line' => $line, + ]) + ); + } + + if (true === \feof($_r) || \in_array(false, $result, true)) { + \fclose($_r); + unset($_read[$i]); + + break; + } + } + + foreach ($write as $j => $_w) { + $result = $this->getListener()->fire( + 'input', + new EventBucket([ + 'pipe' => \array_search($_w, $this->_pipes), + ]) + ); + + if (true === \feof($_w) || \in_array(false, $result, true)) { + \fclose($_w); + unset($_write[$j]); + } + } + + if (empty($_read)) { + break; + } + } + + $this->getListener()->fire('stop', new EventBucket()); + + return; + } + + /** + * Get pipe resource. + */ + protected function getPipe(int $pipe) + { + if (!isset($this->_pipes[$pipe])) { + throw new ConsoleException('Pipe descriptor %d does not exist, cannot read from it.', 2, $pipe); + } + + return $this->_pipes[$pipe]; + } + + /** + * Check if a pipe is seekable or not. + */ + protected function isPipeSeekable(int $pipe): bool + { + if (!isset($this->_seekable[$pipe])) { + $_pipe = $this->getPipe($pipe); + $data = \stream_get_meta_data($_pipe); + $this->_seekable[$pipe] = $data['seekable']; + } + + return $this->_seekable[$pipe]; + } + + /** + * Test for end-of-file. + */ + public function eof(int $pipe = 1): bool + { + return \feof($this->getPipe($pipe)); + } + + /** + * Read n characters. + */ + public function read(int $length, int $pipe = 1) + { + if (0 > $length) { + throw new ConsoleException('Length must be greater than 0, given %d.', 3, $length); + } + + return \fread($this->getPipe($pipe), $length); + } + + /** + * Alias of $this->read(). + */ + public function readString(int $length, int $pipe = 1) + { + return $this->read($length, $pipe); + } + + /** + * Read a character. + */ + public function readCharacter(int $pipe = 1) + { + return \fgetc($this->getPipe($pipe)); + } + + /** + * Read a boolean. + */ + public function readBoolean(int $pipe = 1) + { + return (bool) $this->read(1, $pipe); + } + + /** + * Read an integer. + */ + public function readInteger(int $length = 1, int $pipe = 1) + { + return (int) $this->read($length, $pipe); + } + + /** + * Read a float. + */ + public function readFloat(int $length = 1, int $pipe = 1) + { + return (float) $this->read($length, $pipe); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + */ + public function readArray(string $format = null, int $pipe = 1) + { + return $this->scanf($format, $pipe); + } + + /** + * Read a line. + */ + public function readLine(int $pipe = 1) + { + return \stream_get_line($this->getPipe($pipe), 1 << 15, "\n"); + } + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = -1, int $pipe = 1) + { + $_pipe = $this->getPipe($pipe); + + if (true === $this->isPipeSeekable($pipe)) { + $offset += \ftell($_pipe); + } else { + $offset = -1; + } + + return \stream_get_contents($_pipe, -1, $offset); + } + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format, int $pipe = 1): array + { + return \fscanf($this->getPipe($pipe), $format); + } + + /** + * Write n characters. + */ + public function write(string $string, int $length, int $pipe = 0) + { + if (0 > $length) { + throw new ConsoleException('Length must be greater than 0, given %d.', 4, $length); + } + + return \fwrite($this->getPipe($pipe), $string, $length); + } + + /** + * Write a string. + */ + public function writeString(string $string, int $pipe = 0) + { + $string = (string) $string; + + return $this->write($string, \strlen($string), $pipe); + } + + /** + * Write a character. + */ + public function writeCharacter(string $char, int $pipe = 0) + { + return $this->write((string) $char[0], 1, $pipe); + } + + /** + * Write a boolean. + */ + public function writeBoolean(bool $boolean, int $pipe = 0) + { + return $this->write((string) (bool) $boolean, 1, $pipe); + } + + /** + * Write an integer. + */ + public function writeInteger(int $integer, int $pipe = 0) + { + $integer = (string) (int) $integer; + + return $this->write($integer, \strlen($integer), $pipe); + } + + /** + * Write a float. + */ + public function writeFloat(float $float, int $pipe = 0) + { + $float = (string) (float) $float; + + return $this->write($float, \strlen($float), $pipe); + } + + /** + * Write an array. + */ + public function writeArray(array $array, int $pipe = 0) + { + $array = \var_export($array, true); + + return $this->write($array, \strlen($array), $pipe); + } + + /** + * Write a line. + */ + public function writeLine(string $line, int $pipe = 0) + { + if (false === $n = \strpos($line, "\n")) { + return $this->write($line."\n", \strlen($line) + 1, $pipe); + } + + ++$n; + + return $this->write(\substr($line, 0, $n), $n, $pipe); + } + + /** + * Write all, i.e. as much as possible. + */ + public function writeAll(string $string, int $pipe = 0) + { + return $this->write($string, \strlen($string), $pipe); + } + + /** + * Truncate a file to a given length. + */ + public function truncate(int $size, int $pipe = 0): bool + { + return \ftruncate($this->getPipe($pipe), $size); + } + + /** + * Get filename component of path. + */ + public function getBasename(): string + { + return \basename($this->getCommand()); + } + + /** + * Get directory name component of path. + */ + public function getDirname(): string + { + return \dirname($this->getCommand()); + } + + /** + * Get status. + */ + public function getStatus(): array + { + return \proc_get_status($this->getStream()); + } + + /** + * Get exit code (alias of $this->getStatus()['exitcode']);. + */ + public function getExitCode(): int + { + $handle = $this->getStatus(); + + return $handle['exitcode']; + } + + /** + * Whether the processus have ended successfully. + * + * @return bool + */ + public function isSuccessful(): bool + { + return 0 === $this->getExitCode(); + } + + /** + * Terminate the process. + * + * Valid signals are self::SIGHUP, SIGINT, SIGQUIT, SIGABRT, SIGKILL, + * SIGALRM and SIGTERM. + */ + public function terminate(int $signal = self::SIGTERM): bool + { + return \proc_terminate($this->getStream(), $signal); + } + + /** + * Set command name. + */ + protected function setCommand(string $command) + { + $old = $this->_command; + $this->_command = \escapeshellcmd($command); + + return $old; + } + + /** + * Get command name. + */ + public function getCommand() + { + return $this->_command; + } + + /** + * Set command options. + */ + protected function setOptions(array $options): array + { + foreach ($options as &$option) { + $option = \escapeshellarg($option); + } + + $old = $this->_options; + $this->_options = $options; + + return $old; + } + + /** + * Get options. + */ + public function getOptions(): array + { + return $this->_options; + } + + /** + * Get command-line. + */ + public function getCommandLine(): string + { + $out = $this->getCommand(); + + foreach ($this->getOptions() as $key => $value) { + if (!\is_int($key)) { + $out .= ' '.$key.'='.$value; + } else { + $out .= ' '.$value; + } + } + + return $out; + } + + /** + * Set current working directory of the process. + */ + protected function setCwd(string $cwd) + { + $old = $this->_cwd; + $this->_cwd = $cwd; + + return $old; + } + + /** + * Get current working directory of the process. + */ + public function getCwd(): string + { + return $this->_cwd; + } + + /** + * Set environment of the process. + */ + protected function setEnvironment(array $environment) + { + $old = $this->_environment; + $this->_environment = $environment; + + return $old; + } + + /** + * Get environment of the process. + */ + public function getEnvironment() + { + return $this->_environment; + } + + /** + * Set timeout of the process. + */ + public function setTimeout(int $timeout) + { + $old = $this->_timeout; + $this->_timeout = $timeout; + + return $old; + } + + /** + * Get timeout of the process. + */ + public function getTimeout(): int + { + return $this->_timeout; + } + + /** + * Set process title. + */ + public static function setTitle(string $title) + { + \cli_set_process_title($title); + } + + /** + * Get process title. + */ + public static function getTitle() + { + return \cli_get_process_title(); + } + + /** + * Found the place of a binary. + */ + public static function locate(string $binary) + { + if (isset($_ENV['PATH'])) { + $separator = ':'; + $path = &$_ENV['PATH']; + } elseif (isset($_SERVER['PATH'])) { + $separator = ':'; + $path = &$_SERVER['PATH']; + } elseif (isset($_SERVER['Path'])) { + $separator = ';'; + $path = &$_SERVER['Path']; + } else { + return null; + } + + foreach (\explode($separator, $path) as $directory) { + if (true === \file_exists($out = $directory.\DIRECTORY_SEPARATOR.$binary)) { + return $out; + } + } + + return null; + } + + /** + * Quick process execution. + * Returns only the STDOUT. + */ + public static function execute(string $commandLine, bool $escape = true): string + { + if (true === $escape) { + $commandLine = \escapeshellcmd($commandLine); + } + + return \rtrim(\shell_exec($commandLine) ?? ''); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ConsoleTput.php b/vendor/psy/psysh/src/Readline/Hoa/ConsoleTput.php new file mode 100644 index 000000000..ba627e379 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ConsoleTput.php @@ -0,0 +1,841 @@ +parse($terminfo); + + return; + } + + /** + * Parse. + */ + protected function parse(string $terminfo): array + { + if (!\file_exists($terminfo)) { + throw new ConsoleException('Terminfo file %s does not exist.', 0, $terminfo); + } + + $data = \file_get_contents($terminfo); + $length = \strlen($data); + $out = ['file' => $terminfo]; + + $headers = [ + 'data_size' => $length, + 'header_size' => 12, + 'magic_number' => (\ord($data[1]) << 8) | \ord($data[0]), + 'names_size' => (\ord($data[3]) << 8) | \ord($data[2]), + 'bool_count' => (\ord($data[5]) << 8) | \ord($data[4]), + 'number_count' => (\ord($data[7]) << 8) | \ord($data[6]), + 'string_count' => (\ord($data[9]) << 8) | \ord($data[8]), + 'string_table_size' => (\ord($data[11]) << 8) | \ord($data[10]), + ]; + $out['headers'] = $headers; + + // Names. + $i = $headers['header_size']; + $nameAndDescription = \explode('|', \substr($data, $i, $headers['names_size'] - 1)); + $out['name'] = $nameAndDescription[0]; + $out['description'] = $nameAndDescription[1]; + + // Booleans. + $i += $headers['names_size']; + $booleans = []; + $booleanNames = &static::$_booleans; + + for ( + $e = 0, $max = $i + $headers['bool_count']; + $i < $max; + ++$e, ++$i + ) { + $booleans[$booleanNames[$e]] = 1 === \ord($data[$i]); + } + + $out['booleans'] = $booleans; + + // Numbers. + if (1 === ($i % 2)) { + ++$i; + } + + $numbers = []; + $numberNames = &static::$_numbers; + + for ( + $e = 0, $max = $i + $headers['number_count'] * 2; + $i < $max; + ++$e, $i += 2 + ) { + $name = $numberNames[$e]; + $data_i0 = \ord($data[$i]); + $data_i1 = \ord($data[$i + 1]); + + if ($data_i1 === 255 && $data_i0 === 255) { + $numbers[$name] = -1; + } else { + $numbers[$name] = ($data_i1 << 8) | $data_i0; + } + } + + $out['numbers'] = $numbers; + + // Strings. + $strings = []; + $stringNames = &static::$_strings; + $ii = $i + $headers['string_count'] * 2; + + for ( + $e = 0, $max = $ii; + $i < $max; + ++$e, $i += 2 + ) { + $name = $stringNames[$e]; + $data_i0 = \ord($data[$i]); + $data_i1 = \ord($data[$i + 1]); + + if ($data_i1 === 255 && $data_i0 === 255) { + continue; + } + + $a = ($data_i1 << 8) | $data_i0; + $strings[$name] = $a; + + if (65534 === $a) { + continue; + } + + $b = $ii + $a; + $c = $b; + + while ($c < $length && \ord($data[$c])) { + $c++; + } + + $value = \substr($data, $b, $c - $b); + $strings[$name] = false !== $value ? $value : null; + } + + $out['strings'] = $strings; + + return $this->_informations = $out; + } + + /** + * Get all informations. + */ + public function getInformations(): array + { + return $this->_informations; + } + + /** + * Get a boolean value. + */ + public function has(string $boolean): bool + { + if (!isset($this->_informations['booleans'][$boolean])) { + return false; + } + + return $this->_informations['booleans'][$boolean]; + } + + /** + * Get a number value. + */ + public function count(string $number): int + { + if (!isset($this->_informations['numbers'][$number])) { + return 0; + } + + return $this->_informations['numbers'][$number]; + } + + /** + * Get a string value. + */ + public function get(string $string) + { + if (!isset($this->_informations['strings'][$string])) { + return null; + } + + return $this->_informations['strings'][$string]; + } + + /** + * Get current term profile. + */ + public static function getTerm(): string + { + return + isset($_SERVER['TERM']) && !empty($_SERVER['TERM']) + ? $_SERVER['TERM'] + : (\defined('PHP_WINDOWS_VERSION_PLATFORM') ? 'windows-ansi' : 'xterm'); + } + + /** + * Get pathname to the current terminfo. + */ + public static function getTerminfo($term = null): string + { + $paths = []; + + if (isset($_SERVER['TERMINFO'])) { + $paths[] = $_SERVER['TERMINFO']; + } + + if (isset($_SERVER['HOME'])) { + $paths[] = $_SERVER['HOME'].\DIRECTORY_SEPARATOR.'.terminfo'; + } + + if (isset($_SERVER['TERMINFO_DIRS'])) { + foreach (\explode(':', $_SERVER['TERMINFO_DIRS']) as $path) { + $paths[] = $path; + } + } + + $paths[] = '/usr/share/terminfo'; + $paths[] = '/usr/share/lib/terminfo'; + $paths[] = '/lib/terminfo'; + $paths[] = '/usr/lib/terminfo'; + $paths[] = '/usr/local/share/terminfo'; + $paths[] = '/usr/local/share/lib/terminfo'; + $paths[] = '/usr/local/lib/terminfo'; + $paths[] = '/usr/local/ncurses/lib/terminfo'; + $paths[] = 'hoa://Library/Terminfo'; + + $term = $term ?: static::getTerm(); + $fileHexa = \dechex(\ord($term[0])).\DIRECTORY_SEPARATOR.$term; + $fileAlpha = $term[0].\DIRECTORY_SEPARATOR.$term; + $pathname = null; + + foreach ($paths as $path) { + if (\file_exists($_ = $path.\DIRECTORY_SEPARATOR.$fileHexa) || + \file_exists($_ = $path.\DIRECTORY_SEPARATOR.$fileAlpha)) { + $pathname = $_; + + break; + } + } + + if (null === $pathname && 'xterm' !== $term) { + return static::getTerminfo('xterm'); + } + + return $pathname ?? ''; + } + + /** + * Check whether all required terminfo capabilities are defined. + */ + public static function isSupported(): bool + { + if (static::getTerminfo() === '') { + return false; + } + + $requiredVars = [ + 'clear_screen', + 'clr_bol', + 'clr_eol', + 'clr_eos', + 'initialize_color', + 'parm_down_cursor', + 'parm_index', + 'parm_left_cursor', + 'parm_right_cursor', + 'parm_rindex', + 'parm_up_cursor', + 'user6', + 'user7', + ]; + + $tput = new self(); + + foreach ($requiredVars as $var) { + if ($tput->get($var) === null) { + return false; + } + } + + return true; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ConsoleWindow.php b/vendor/psy/psysh/src/Readline/Hoa/ConsoleWindow.php new file mode 100644 index 000000000..fe77e05de --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ConsoleWindow.php @@ -0,0 +1,529 @@ +writeAll("\033[8;".$y.';'.$x.'t'); + + return; + } + + /** + * Get current size (x and y) of the window. + */ + public static function getSize(): array + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + $modecon = \explode("\n", \ltrim(ConsoleProcessus::execute('mode con'))); + + $_y = \trim($modecon[2]); + \preg_match('#[^:]+:\s*([0-9]+)#', $_y, $matches); + $y = (int) $matches[1]; + + $_x = \trim($modecon[3]); + \preg_match('#[^:]+:\s*([0-9]+)#', $_x, $matches); + $x = (int) $matches[1]; + + return [ + 'x' => $x, + 'y' => $y, + ]; + } + + $term = ''; + + if (isset($_SERVER['TERM'])) { + $term = 'TERM="'.$_SERVER['TERM'].'" '; + } + + $command = $term.'tput cols && '.$term.'tput lines'; + $tput = ConsoleProcessus::execute($command, false); + + if (!empty($tput)) { + list($x, $y) = \explode("\n", $tput); + + return [ + 'x' => (int) $x, + 'y' => (int) $y, + ]; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[18t"); + + $input = Console::getInput(); + + // Read \033[8;y;xt. + $input->read(4); // skip \033, [, 8 and ;. + + $x = null; + $y = null; + $handle = &$y; + + while (true) { + $char = $input->readCharacter(); + + switch ($char) { + case ';': + $handle = &$x; + + break; + + case 't': + break 2; + + default: + if (false === \ctype_digit($char)) { + break 2; + } + + $handle .= $char; + } + } + + if (null === $x || null === $y) { + return [ + 'x' => 0, + 'y' => 0, + ]; + } + + return [ + 'x' => (int) $x, + 'y' => (int) $y, + ]; + } + + /** + * Move to X and Y (in pixels). + */ + public static function moveTo(int $x, int $y) + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[3;".$x.';'.$y.'t'); + + return; + } + + /** + * Get current position (x and y) of the window (in pixels). + */ + public static function getPosition(): array + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return ['x' => 0, 'y' => 0]; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[13t"); + + $input = Console::getInput(); + + // Read \033[3;x;yt. + $input->read(4); // skip \033, [, 3 and ;. + + $x = null; + $y = null; + $handle = &$x; + + while (true) { + $char = $input->readCharacter(); + + switch ($char) { + case ';': + $handle = &$y; + + break; + + case 't': + break 2; + + default: + $handle .= $char; + } + } + + return [ + 'x' => (int) $x, + 'y' => (int) $y, + ]; + } + + /** + * Scroll whole page. + * Directions can be: + * • u, up, ↑ : scroll whole page up; + * • d, down, ↓ : scroll whole page down. + * Directions can be concatenated by a single space. + */ + public static function scroll(string $directions, int $repeat = 1) + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + if (1 > $repeat) { + return; + } elseif (1 === $repeat) { + $handle = \explode(' ', $directions); + } else { + $handle = \explode(' ', $directions, 1); + } + + $tput = Console::getTput(); + $count = ['up' => 0, 'down' => 0]; + + foreach ($handle as $direction) { + switch ($direction) { + case 'u': + case 'up': + case '↑': + ++$count['up']; + + break; + + case 'd': + case 'down': + case '↓': + ++$count['down']; + + break; + } + } + + $output = Console::getOutput(); + + if (0 < $count['up']) { + $output->writeAll( + \str_replace( + '%p1%d', + $count['up'] * $repeat, + $tput->get('parm_index') + ) + ); + } + + if (0 < $count['down']) { + $output->writeAll( + \str_replace( + '%p1%d', + $count['down'] * $repeat, + $tput->get('parm_rindex') + ) + ); + } + + return; + } + + /** + * Minimize the window. + */ + public static function minimize() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[2t"); + + return; + } + + /** + * Restore the window (de-minimize). + */ + public static function restore() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + Console::getOutput()->writeAll("\033[1t"); + + return; + } + + /** + * Raise the window to the front of the stacking order. + */ + public static function raise() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + Console::getOutput()->writeAll("\033[5t"); + + return; + } + + /** + * Lower the window to the bottom of the stacking order. + */ + public static function lower() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + Console::getOutput()->writeAll("\033[6t"); + + return; + } + + /** + * Set title. + */ + public static function setTitle(string $title) + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033]0;".$title."\033\\"); + + return; + } + + /** + * Get title. + */ + public static function getTitle() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return null; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[21t"); + + $input = Console::getInput(); + $read = [$input->getStream()->getStream()]; + $write = []; + $except = []; + $out = null; + + if (0 === \stream_select($read, $write, $except, 0, 50000)) { + return $out; + } + + // Read \033]l\033\ + $input->read(3); // skip \033, ] and l. + + while (true) { + $char = $input->readCharacter(); + + if ("\033" === $char) { + $chaar = $input->readCharacter(); + + if ('\\' === $chaar) { + break; + } + + $char .= $chaar; + } + + $out .= $char; + } + + return $out; + } + + /** + * Get label. + */ + public static function getLabel() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return null; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[20t"); + + $input = Console::getInput(); + $read = [$input->getStream()->getStream()]; + $write = []; + $except = []; + $out = null; + + if (0 === \stream_select($read, $write, $except, 0, 50000)) { + return $out; + } + + // Read \033]L<label>\033\ + $input->read(3); // skip \033, ] and L. + + while (true) { + $char = $input->readCharacter(); + + if ("\033" === $char) { + $chaar = $input->readCharacter(); + + if ('\\' === $chaar) { + break; + } + + $char .= $chaar; + } + + $out .= $char; + } + + return $out; + } + + /** + * Refresh the window. + */ + public static function refresh() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + // DECSLPP. + Console::getOutput()->writeAll("\033[7t"); + + return; + } + + /** + * Set clipboard value. + */ + public static function copy(string $data) + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + $out = "\033]52;;".\base64_encode($data)."\033\\"; + $output = Console::getOutput(); + $considerMultiplexer = $output->considerMultiplexer(true); + + $output->writeAll($out); + $output->considerMultiplexer($considerMultiplexer); + + return; + } +} + +/* + * Advanced interaction. + */ +Console::advancedInteraction(); + +/* + * Event. + */ +if (\function_exists('pcntl_signal')) { + ConsoleWindow::getInstance(); + \pcntl_signal( + \SIGWINCH, + function () { + static $_window = null; + + if (null === $_window) { + $_window = ConsoleWindow::getInstance(); + } + + Event::notify( + 'hoa://Event/Console/Window:resize', + $_window, + new EventBucket([ + 'size' => ConsoleWindow::getSize(), + ]) + ); + } + ); +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Event.php b/vendor/psy/psysh/src/Readline/Hoa/Event.php new file mode 100644 index 000000000..bb08f328a --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Event.php @@ -0,0 +1,193 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Events are asynchronous at registration, anonymous at use (until we + * receive a bucket) and useful to largely spread data through components + * without any known connection between them. + */ +class Event +{ + /** + * Event ID key. + */ + const KEY_EVENT = 0; + + /** + * Source object key. + */ + const KEY_SOURCE = 1; + + /** + * Static register of all observable objects, i.e. `Hoa\Event\Source` + * object, i.e. object that can send event. + */ + private static $_register = []; + + /** + * Collection of callables, i.e. observer objects. + */ + protected $_callable = []; + + /** + * Privatize the constructor. + */ + private function __construct() + { + return; + } + + /** + * Manage multiton of events, with the principle of asynchronous + * attachments. + */ + public static function getEvent(string $eventId): self + { + if (!isset(self::$_register[$eventId][self::KEY_EVENT])) { + self::$_register[$eventId] = [ + self::KEY_EVENT => new self(), + self::KEY_SOURCE => null, + ]; + } + + return self::$_register[$eventId][self::KEY_EVENT]; + } + + /** + * Declares a new object in the observable collection. + * Note: Hoa's libraries use `hoa://Event/anID` for their observable objects. + */ + public static function register(string $eventId, /* Source|string */ $source) + { + if (true === self::eventExists($eventId)) { + throw new EventException('Cannot redeclare an event with the same ID, i.e. the event '.'ID %s already exists.', 0, $eventId); + } + + if (\is_object($source) && !($source instanceof EventSource)) { + throw new EventException('The source must implement \Hoa\Event\Source '.'interface; given %s.', 1, \get_class($source)); + } else { + $reflection = new \ReflectionClass($source); + + if (false === $reflection->implementsInterface('\Psy\Readline\Hoa\EventSource')) { + throw new EventException('The source must implement \Hoa\Event\Source '.'interface; given %s.', 2, $source); + } + } + + if (!isset(self::$_register[$eventId][self::KEY_EVENT])) { + self::$_register[$eventId][self::KEY_EVENT] = new self(); + } + + self::$_register[$eventId][self::KEY_SOURCE] = $source; + } + + /** + * Undeclares an object in the observable collection. + * + * If `$hard` is set to `true, then the source and its attached callables + * will be deleted. + */ + public static function unregister(string $eventId, bool $hard = false) + { + if (false !== $hard) { + unset(self::$_register[$eventId]); + } else { + self::$_register[$eventId][self::KEY_SOURCE] = null; + } + } + + /** + * Attach an object to an event. + * + * It can be a callable or an accepted callable form (please, see the + * `Hoa\Consistency\Xcallable` class). + */ + public function attach($callable): self + { + $callable = Xcallable::from($callable); + $this->_callable[$callable->getHash()] = $callable; + + return $this; + } + + /** + * Detaches an object to an event. + * + * Please see `self::attach` method. + */ + public function detach($callable): self + { + unset($this->_callable[Xcallable::from($callable)->getHash()]); + + return $this; + } + + /** + * Checks if at least one callable is attached to an event. + */ + public function isListened(): bool + { + return !empty($this->_callable); + } + + /** + * Notifies, i.e. send data to observers. + */ + public static function notify(string $eventId, EventSource $source, EventBucket $data) + { + if (false === self::eventExists($eventId)) { + throw new EventException('Event ID %s does not exist, cannot send notification.', 3, $eventId); + } + + $data->setSource($source); + $event = self::getEvent($eventId); + + foreach ($event->_callable as $callable) { + $callable($data); + } + } + + /** + * Checks whether an event exists. + */ + public static function eventExists(string $eventId): bool + { + return + \array_key_exists($eventId, self::$_register) && + self::$_register[$eventId][self::KEY_SOURCE] !== null; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventBucket.php b/vendor/psy/psysh/src/Readline/Hoa/EventBucket.php new file mode 100644 index 000000000..37d3ca15a --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventBucket.php @@ -0,0 +1,109 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * This class is the object which is transmit through event channels. + */ +class EventBucket +{ + /** + * The source object (must be of kind `Hoa\Event\Source`). + */ + protected $_source = null; + + /** + * Data attached to the bucket. + */ + protected $_data = null; + + /** + * Allocates a new bucket with various data attached to it. + */ + public function __construct($data = null) + { + $this->setData($data); + + return; + } + + /** + * Sends this object on the event channel. + */ + public function send(string $eventId, EventSource $source) + { + return Event::notify($eventId, $source, $this); + } + + /** + * Sets a new source. + */ + public function setSource(EventSource $source) + { + $old = $this->_source; + $this->_source = $source; + + return $old; + } + + /** + * Returns the source. + */ + public function getSource() + { + return $this->_source; + } + + /** + * Sets new data. + */ + public function setData($data) + { + $old = $this->_data; + $this->_data = $data; + + return $old; + } + + /** + * Returns the data. + */ + public function getData() + { + return $this->_data; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventException.php b/vendor/psy/psysh/src/Readline/Hoa/EventException.php new file mode 100644 index 000000000..9517d9c96 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventException.php @@ -0,0 +1,44 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Extending the `Hoa\Exception\Exception` class. + */ +class EventException extends Exception +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventListenable.php b/vendor/psy/psysh/src/Readline/Hoa/EventListenable.php new file mode 100644 index 000000000..cefd3e6aa --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventListenable.php @@ -0,0 +1,48 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Each object which is listenable must implement this interface. + */ +interface EventListenable extends EventSource +{ + /** + * Attaches a callable to a listenable component. + */ + public function on(string $listenerId, $callable): self; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventListener.php b/vendor/psy/psysh/src/Readline/Hoa/EventListener.php new file mode 100644 index 000000000..8e877e610 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventListener.php @@ -0,0 +1,137 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * A contrario of events, listeners are synchronous, identified at use and + * useful for close interactions between one or some components. + */ +class EventListener +{ + /** + * Source of listener (for `Hoa\Event\Bucket`). + */ + protected $_source = null; + + /** + * All listener IDs and associated listeners. + */ + protected $_callables = []; + + /** + * Build a listener. + */ + public function __construct(EventListenable $source, array $ids) + { + $this->_source = $source; + $this->addIds($ids); + + return; + } + + /** + * Adds acceptable ID (or reset). + */ + public function addIds(array $ids) + { + foreach ($ids as $id) { + $this->_callables[$id] = []; + } + } + + /** + * Attaches a callable to a listenable component. + */ + public function attach(string $listenerId, $callable): self + { + if (false === $this->listenerExists($listenerId)) { + throw new EventException('Cannot listen %s because it is not defined.', 0, $listenerId); + } + + $callable = Xcallable::from($callable); + $this->_callables[$listenerId][$callable->getHash()] = $callable; + + return $this; + } + + /** + * Detaches a callable from a listenable component. + */ + public function detach(string $listenerId, $callable): self + { + unset($this->_callables[$listenerId][Xcallable::from($callable)->getHash()]); + + return $this; + } + + /** + * Detaches all callables from a listenable component. + */ + public function detachAll(string $listenerId): self + { + unset($this->_callables[$listenerId]); + + return $this; + } + + /** + * Checks if a listener exists. + */ + public function listenerExists(string $listenerId): bool + { + return \array_key_exists($listenerId, $this->_callables); + } + + /** + * Sends/fires a bucket to a listener. + */ + public function fire(string $listenerId, EventBucket $data): array + { + if (false === $this->listenerExists($listenerId)) { + throw new EventException('Cannot fire on %s because it is not defined.', 1, $listenerId); + } + + $data->setSource($this->_source); + $out = []; + + foreach ($this->_callables[$listenerId] as $callable) { + $out[] = $callable($data); + } + + return $out; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventListens.php b/vendor/psy/psysh/src/Readline/Hoa/EventListens.php new file mode 100644 index 000000000..41f1172b5 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventListens.php @@ -0,0 +1,83 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Implementation of a listener. + */ +trait EventListens +{ + /** + * Listener instance of type `Hoa\Event\Listener`. + */ + protected $_listener = null; + + /** + * Attaches a callable to a listenable component. + */ + public function on(string $listenerId, $callable): EventListenable + { + $listener = $this->getListener(); + + if (null === $listener) { + throw new EventException('Cannot attach a callable to the listener %s because '.'it has not been initialized yet.', 0, static::class); + } + + $listener->attach($listenerId, $callable); + + return $this; + } + + /** + * Sets a new listener. + */ + protected function setListener(EventListener $listener) + { + $old = $this->_listener; + $this->_listener = $listener; + + return $old; + } + + /** + * Returns the listener. + */ + protected function getListener() + { + return $this->_listener; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/EventSource.php b/vendor/psy/psysh/src/Readline/Hoa/EventSource.php new file mode 100644 index 000000000..3a495d4b6 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/EventSource.php @@ -0,0 +1,44 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Each object which is listenable must implement this interface. + */ +interface EventSource +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Exception.php b/vendor/psy/psysh/src/Readline/Hoa/Exception.php new file mode 100644 index 000000000..e0b8bc8ca --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Exception.php @@ -0,0 +1,79 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Each exception must extend `Hoa\Exception\Exception`. + */ +class Exception extends ExceptionIdle implements EventSource +{ + /** + * Allocates a new exception. + * + * An exception is built with a formatted message, a code (an ID), and an + * array that contains the list of formatted string for the message. If + * chaining, a previous exception can be added. + */ + public function __construct( + string $message, + int $code = 0, + $arguments = [], + \Throwable $previous = null + ) { + parent::__construct($message, $code, $arguments, $previous); + + if (false === Event::eventExists('hoa://Event/Exception')) { + Event::register('hoa://Event/Exception', __CLASS__); + } + + $this->send(); + + return; + } + + /** + * Sends the exception on `hoa://Event/Exception`. + */ + public function send() + { + Event::notify( + 'hoa://Event/Exception', + $this, + new EventBucket($this) + ); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php b/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php new file mode 100644 index 000000000..1d44c4350 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ExceptionIdle.php @@ -0,0 +1,267 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * `Hoa\Exception\Idle` is the mother exception class of libraries. The only + * difference between `Hoa\Exception\Idle` and its direct children + * `Hoa\Exception` is that the latter fires events after beeing constructed. + */ +class ExceptionIdle extends \Exception +{ + /** + * Delay processing on arguments. + */ + protected $_tmpArguments = null; + + /** + * List of arguments to format message. + */ + protected $_arguments = null; + + /** + * Backtrace. + */ + protected $_trace = null; + + /** + * Previous exception if any. + */ + protected $_previous = null; + + /** + * Original exception message. + */ + protected $_rawMessage = null; + + /** + * Allocates a new exception. + * + * An exception is built with a formatted message, a code (an ID) and an + * array that contains the list of formatted strings for the message. If + * chaining, we can add a previous exception. + */ + public function __construct( + string $message, + int $code = 0, + $arguments = [], + \Exception $previous = null + ) { + $this->_tmpArguments = $arguments; + parent::__construct($message, $code, $previous); + $this->_rawMessage = $message; + $this->message = @\vsprintf($message, $this->getArguments()); + + return; + } + + /** + * Returns the backtrace. + * + * Do not use `Exception::getTrace` any more. + */ + public function getBacktrace() + { + if (null === $this->_trace) { + $this->_trace = $this->getTrace(); + } + + return $this->_trace; + } + + /** + * Returns the previous exception if any. + * + * Do not use `Exception::getPrevious` any more. + */ + public function getPreviousThrow() + { + if (null === $this->_previous) { + $this->_previous = $this->getPrevious(); + } + + return $this->_previous; + } + + /** + * Returns the arguments of the message. + */ + public function getArguments() + { + if (null === $this->_arguments) { + $arguments = $this->_tmpArguments; + + if (!\is_array($arguments)) { + $arguments = [$arguments]; + } + + foreach ($arguments as &$value) { + if (null === $value) { + $value = '(null)'; + } + } + + $this->_arguments = $arguments; + unset($this->_tmpArguments); + } + + return $this->_arguments; + } + + /** + * Returns the raw message. + */ + public function getRawMessage(): string + { + return $this->_rawMessage; + } + + /** + * Returns the message already formatted. + */ + public function getFormattedMessage(): string + { + return $this->getMessage(); + } + + /** + * Returns the source of the exception (class, method, function, main etc.). + */ + public function getFrom(): string + { + $trace = $this->getBacktrace(); + $from = '{main}'; + + if (!empty($trace)) { + $t = $trace[0]; + $from = ''; + + if (isset($t['class'])) { + $from .= $t['class'].'::'; + } + + if (isset($t['function'])) { + $from .= $t['function'].'()'; + } + } + + return $from; + } + + /** + * Raises an exception as a string. + */ + public function raise(bool $includePrevious = false): string + { + $message = $this->getFormattedMessage(); + $trace = $this->getBacktrace(); + $file = '/dev/null'; + $line = -1; + $pre = $this->getFrom(); + + if (!empty($trace)) { + $file = $trace['file'] ?? null; + $line = $trace['line'] ?? null; + } + + $pre .= ': '; + + try { + $out = + $pre.'('.$this->getCode().') '.$message."\n". + 'in '.$this->getFile().' at line '. + $this->getLine().'.'; + } catch (\Exception $e) { + $out = + $pre.'('.$this->getCode().') '.$message."\n". + 'in '.$file.' around line '.$line.'.'; + } + + if (true === $includePrevious && + null !== $previous = $this->getPreviousThrow()) { + $out .= + "\n\n".' ⬇'."\n\n". + 'Nested exception ('.\get_class($previous).'):'."\n". + ($previous instanceof self + ? $previous->raise(true) + : $previous->getMessage()); + } + + return $out; + } + + /** + * Catches uncaught exception (only `Hoa\Exception\Idle` and children). + */ + public static function uncaught(\Throwable $exception) + { + if (!($exception instanceof self)) { + throw $exception; + } + + while (0 < \ob_get_level()) { + \ob_end_flush(); + } + + echo 'Uncaught exception ('.\get_class($exception).'):'."\n". + $exception->raise(true); + } + + /** + * String representation of object. + */ + public function __toString(): string + { + return $this->raise(); + } + + /** + * Enables uncaught exception handler. + * + * This is restricted to Hoa's exceptions only. + */ + public static function enableUncaughtHandler(bool $enable = true) + { + if (false === $enable) { + return \restore_exception_handler(); + } + + return \set_exception_handler(function ($exception) { + return self::uncaught($exception); + }); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/File.php b/vendor/psy/psysh/src/Readline/Hoa/File.php new file mode 100644 index 000000000..bdfd94789 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/File.php @@ -0,0 +1,278 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File. + * + * File handler. + */ +abstract class File extends FileGeneric implements StreamBufferable, StreamLockable, StreamPointable +{ + /** + * Open for reading only; place the file pointer at the beginning of the + * file. + */ + const MODE_READ = 'rb'; + + /** + * Open for reading and writing; place the file pointer at the beginning of + * the file. + */ + const MODE_READ_WRITE = 'r+b'; + + /** + * Open for writing only; place the file pointer at the beginning of the + * file and truncate the file to zero length. If the file does not exist, + * attempt to create it. + */ + const MODE_TRUNCATE_WRITE = 'wb'; + + /** + * Open for reading and writing; place the file pointer at the beginning of + * the file and truncate the file to zero length. If the file does not + * exist, attempt to create it. + */ + const MODE_TRUNCATE_READ_WRITE = 'w+b'; + + /** + * Open for writing only; place the file pointer at the end of the file. If + * the file does not exist, attempt to create it. + */ + const MODE_APPEND_WRITE = 'ab'; + + /** + * Open for reading and writing; place the file pointer at the end of the + * file. If the file does not exist, attempt to create it. + */ + const MODE_APPEND_READ_WRITE = 'a+b'; + + /** + * Create and open for writing only; place the file pointer at the beginning + * of the file. If the file already exits, the fopen() call with fail by + * returning false and generating an error of level E_WARNING. If the file + * does not exist, attempt to create it. This is equivalent to specifying + * O_EXCL | O_CREAT flags for the underlying open(2) system call. + */ + const MODE_CREATE_WRITE = 'xb'; + + /** + * Create and open for reading and writing; place the file pointer at the + * beginning of the file. If the file already exists, the fopen() call with + * fail by returning false and generating an error of level E_WARNING. If + * the file does not exist, attempt to create it. This is equivalent to + * specifying O_EXCL | O_CREAT flags for the underlying open(2) system call. + */ + const MODE_CREATE_READ_WRITE = 'x+b'; + + /** + * Open a file. + */ + public function __construct( + string $streamName, + string $mode, + string $context = null, + bool $wait = false + ) { + $this->setMode($mode); + + switch ($streamName) { + case '0': + $streamName = 'php://stdin'; + + break; + + case '1': + $streamName = 'php://stdout'; + + break; + + case '2': + $streamName = 'php://stderr'; + + break; + + default: + if (true === \ctype_digit($streamName)) { + if (\PHP_VERSION_ID >= 50306) { + $streamName = 'php://fd/'.$streamName; + } else { + throw new FileException('You need PHP5.3.6 to use a file descriptor '.'other than 0, 1 or 2 (tried %d with PHP%s).', 0, [$streamName, \PHP_VERSION]); + } + } + } + + parent::__construct($streamName, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + if (\substr($streamName, 0, 4) === 'file' && + false === \is_dir(\dirname($streamName))) { + throw new FileException('Directory %s does not exist. Could not open file %s.', 1, [\dirname($streamName), \basename($streamName)]); + } + + if (null === $context) { + if (false === $out = @\fopen($streamName, $this->getMode(), true)) { + throw new FileException('Failed to open stream %s.', 2, $streamName); + } + + return $out; + } + + $out = @\fopen( + $streamName, + $this->getMode(), + true, + $context->getContext() + ); + + if (false === $out) { + throw new FileException('Failed to open stream %s.', 3, $streamName); + } + + return $out; + } + + /** + * Close the current stream. + */ + protected function _close(): bool + { + return @\fclose($this->getStream()); + } + + /** + * Start a new buffer. + * The callable acts like a light filter. + */ + public function newBuffer($callable = null, int $size = null): int + { + $this->setStreamBuffer($size); + + // @TODO manage $callable as a filter? + + return 1; + } + + /** + * Flush the output to a stream. + */ + public function flush(): bool + { + return \fflush($this->getStream()); + } + + /** + * Delete buffer. + */ + public function deleteBuffer(): bool + { + return $this->disableStreamBuffer(); + } + + /** + * Get bufffer level. + */ + public function getBufferLevel(): int + { + return 1; + } + + /** + * Get buffer size. + */ + public function getBufferSize(): int + { + return $this->getStreamBufferSize(); + } + + /** + * Portable advisory locking. + */ + public function lock(int $operation): bool + { + return \flock($this->getStream(), $operation); + } + + /** + * Rewind the position of a stream pointer. + */ + public function rewind(): bool + { + return \rewind($this->getStream()); + } + + /** + * Seek on a stream pointer. + */ + public function seek(int $offset, int $whence = StreamPointable::SEEK_SET): int + { + return \fseek($this->getStream(), $offset, $whence); + } + + /** + * Get the current position of the stream pointer. + */ + public function tell(): int + { + $stream = $this->getStream(); + + if (null === $stream) { + return 0; + } + + return \ftell($stream); + } + + /** + * Create a file. + */ + public static function create(string $name) + { + if (\file_exists($name)) { + return true; + } + + return \touch($name); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php b/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php new file mode 100644 index 000000000..e7191410e --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileDirectory.php @@ -0,0 +1,221 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Directory. + * + * Directory handler. + */ +class FileDirectory extends FileGeneric +{ + /** + * Open for reading. + */ + const MODE_READ = 'rb'; + + /** + * Open for reading and writing. If the directory does not exist, attempt to + * create it. + */ + const MODE_CREATE = 'xb'; + + /** + * Open for reading and writing. If the directory does not exist, attempt to + * create it recursively. + */ + const MODE_CREATE_RECURSIVE = 'xrb'; + + /** + * Open a directory. + */ + public function __construct( + string $streamName, + string $mode = self::MODE_READ, + string $context = null, + bool $wait = false + ) { + $this->setMode($mode); + parent::__construct($streamName, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + if (false === \is_dir($streamName)) { + if ($this->getMode() === self::MODE_READ) { + throw new FileDoesNotExistException('Directory %s does not exist.', 0, $streamName); + } else { + self::create( + $streamName, + $this->getMode(), + null !== $context + ? $context->getContext() + : null + ); + } + } + + $out = null; + + return $out; + } + + /** + * Close the current stream. + */ + protected function _close(): bool + { + return true; + } + + /** + * Recursive copy of a directory. + */ + public function copy(string $to, bool $force = StreamTouchable::DO_NOT_OVERWRITE): bool + { + if (empty($to)) { + throw new FileException('The destination path (to copy) is empty.', 1); + } + + $from = $this->getStreamName(); + $fromLength = \strlen($from) + 1; + $finder = new FileFinder(); + $finder->in($from); + + self::create($to, self::MODE_CREATE_RECURSIVE); + + foreach ($finder as $file) { + $relative = \substr($file->getPathname(), $fromLength); + $_to = $to.\DIRECTORY_SEPARATOR.$relative; + + if (true === $file->isDir()) { + self::create($_to, self::MODE_CREATE); + + continue; + } + + // This is not possible to do `$file->open()->copy(); + // $file->close();` because the file will be opened in read and + // write mode. In a PHAR for instance, this operation is + // forbidden. So a special care must be taken to open file in read + // only mode. + $handle = null; + + if (true === $file->isFile()) { + $handle = new FileRead($file->getPathname()); + } elseif (true === $file->isDir()) { + $handle = new self($file->getPathName()); + } elseif (true === $file->isLink()) { + $handle = new FileLinkRead($file->getPathName()); + } + + if (null !== $handle) { + $handle->copy($_to, $force); + $handle->close(); + } + } + + return true; + } + + /** + * Delete a directory. + */ + public function delete(): bool + { + $from = $this->getStreamName(); + $finder = new FileFinder(); + $finder->in($from) + ->childFirst(); + + foreach ($finder as $file) { + $file->open()->delete(); + $file->close(); + } + + if (null === $this->getStreamContext()) { + return @\rmdir($from); + } + + return @\rmdir($from, $this->getStreamContext()->getContext()); + } + + /** + * Create a directory. + */ + public static function create( + string $name, + string $mode = self::MODE_CREATE_RECURSIVE, + string $context = null + ): bool { + if (true === \is_dir($name)) { + return true; + } + + if (empty($name)) { + return false; + } + + if (null !== $context) { + if (false === StreamContext::contextExists($context)) { + throw new FileException('Context %s was not previously declared, cannot retrieve '.'this context.', 2, $context); + } else { + $context = StreamContext::getInstance($context); + } + } + + if (null === $context) { + return @\mkdir( + $name, + 0755, + self::MODE_CREATE_RECURSIVE === $mode + ); + } + + return @\mkdir( + $name, + 0755, + self::MODE_CREATE_RECURSIVE === $mode, + $context->getContext() + ); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php b/vendor/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php new file mode 100644 index 000000000..81599a5de --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileDoesNotExistException.php @@ -0,0 +1,48 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Exception\FileDoesNotExist. + * + * Extending the \Hoa\File\Exception class. + * + * @license New BSD License + */ +class FileDoesNotExistException extends FileException +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileException.php b/vendor/psy/psysh/src/Readline/Hoa/FileException.php new file mode 100644 index 000000000..0e224c252 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileException.php @@ -0,0 +1,48 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Exception. + * + * Extending the \Hoa\Exception\Exception class. + * + * @license New BSD License + */ +class FileException extends Exception +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileFinder.php b/vendor/psy/psysh/src/Readline/Hoa/FileFinder.php new file mode 100644 index 000000000..1523b366b --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileFinder.php @@ -0,0 +1,658 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Finder. + * + * This class allows to find files easily by using filters and flags. + */ +class FileFinder implements \IteratorAggregate +{ + /** + * SplFileInfo classname. + */ + protected $_splFileInfo = \SplFileInfo::class; + + /** + * Paths where to look for. + */ + protected $_paths = []; + + /** + * Max depth in recursion. + */ + protected $_maxDepth = -1; + + /** + * Filters. + */ + protected $_filters = []; + + /** + * Flags. + */ + protected $_flags = -1; + + /** + * Types of files to handle. + */ + protected $_types = []; + + /** + * What comes first: parent or child? + */ + protected $_first = -1; + + /** + * Sorts. + */ + protected $_sorts = []; + + /** + * Initialize. + */ + public function __construct() + { + $this->_flags = IteratorFileSystem::KEY_AS_PATHNAME + | IteratorFileSystem::CURRENT_AS_FILEINFO + | IteratorFileSystem::SKIP_DOTS; + $this->_first = \RecursiveIteratorIterator::SELF_FIRST; + + return; + } + + /** + * Select a directory to scan. + */ + public function in($paths): self + { + if (!\is_array($paths)) { + $paths = [$paths]; + } + + foreach ($paths as $path) { + if (1 === \preg_match('/[\*\?\[\]]/', $path)) { + $iterator = new \CallbackFilterIterator( + new \GlobIterator(\rtrim($path, \DIRECTORY_SEPARATOR)), + function ($current) { + return $current->isDir(); + } + ); + + foreach ($iterator as $fileInfo) { + $this->_paths[] = $fileInfo->getPathname(); + } + } else { + $this->_paths[] = $path; + } + } + + return $this; + } + + /** + * Set max depth for recursion. + */ + public function maxDepth(int $depth): self + { + $this->_maxDepth = $depth; + + return $this; + } + + /** + * Include files in the result. + */ + public function files(): self + { + $this->_types[] = 'file'; + + return $this; + } + + /** + * Include directories in the result. + */ + public function directories(): self + { + $this->_types[] = 'dir'; + + return $this; + } + + /** + * Include links in the result. + */ + public function links(): self + { + $this->_types[] = 'link'; + + return $this; + } + + /** + * Follow symbolink links. + */ + public function followSymlinks(bool $flag = true): self + { + if (true === $flag) { + $this->_flags ^= IteratorFileSystem::FOLLOW_SYMLINKS; + } else { + $this->_flags |= IteratorFileSystem::FOLLOW_SYMLINKS; + } + + return $this; + } + + /** + * Include files that match a regex. + * Example: + * $this->name('#\.php$#');. + */ + public function name(string $regex): self + { + $this->_filters[] = function (\SplFileInfo $current) use ($regex) { + return 0 !== \preg_match($regex, $current->getBasename()); + }; + + return $this; + } + + /** + * Exclude directories that match a regex. + * Example: + * $this->notIn('#^\.(git|hg)$#');. + */ + public function notIn(string $regex): self + { + $this->_filters[] = function (\SplFileInfo $current) use ($regex) { + foreach (\explode(\DIRECTORY_SEPARATOR, $current->getPathname()) as $part) { + if (0 !== \preg_match($regex, $part)) { + return false; + } + } + + return true; + }; + + return $this; + } + + /** + * Include files that respect a certain size. + * The size is a string of the form: + * operator number unit + * where + * • operator could be: <, <=, >, >= or =; + * • number is a positive integer; + * • unit could be: b (default), Kb, Mb, Gb, Tb, Pb, Eb, Zb, Yb. + * Example: + * $this->size('>= 12Kb');. + */ + public function size(string $size): self + { + if (0 === \preg_match('#^(<|<=|>|>=|=)\s*(\d+)\s*((?:[KMGTPEZY])b)?$#', $size, $matches)) { + return $this; + } + + $number = (float) ($matches[2]); + $unit = $matches[3] ?? 'b'; + $operator = $matches[1]; + + switch ($unit) { + case 'b': + break; + + // kilo + case 'Kb': + $number <<= 10; + + break; + + // mega. + case 'Mb': + $number <<= 20; + + break; + + // giga. + case 'Gb': + $number <<= 30; + + break; + + // tera. + case 'Tb': + $number *= 1099511627776; + + break; + + // peta. + case 'Pb': + $number *= 1024 ** 5; + + break; + + // exa. + case 'Eb': + $number *= 1024 ** 6; + + break; + + // zetta. + case 'Zb': + $number *= 1024 ** 7; + + break; + + // yota. + case 'Yb': + $number *= 1024 ** 8; + + break; + } + + $filter = null; + + switch ($operator) { + case '<': + $filter = function (\SplFileInfo $current) use ($number) { + return $current->getSize() < $number; + }; + + break; + + case '<=': + $filter = function (\SplFileInfo $current) use ($number) { + return $current->getSize() <= $number; + }; + + break; + + case '>': + $filter = function (\SplFileInfo $current) use ($number) { + return $current->getSize() > $number; + }; + + break; + + case '>=': + $filter = function (\SplFileInfo $current) use ($number) { + return $current->getSize() >= $number; + }; + + break; + + case '=': + $filter = function (\SplFileInfo $current) use ($number) { + return $current->getSize() === $number; + }; + + break; + } + + $this->_filters[] = $filter; + + return $this; + } + + /** + * Whether we should include dots or not (respectively . and ..). + */ + public function dots(bool $flag = true): self + { + if (true === $flag) { + $this->_flags ^= IteratorFileSystem::SKIP_DOTS; + } else { + $this->_flags |= IteratorFileSystem::SKIP_DOTS; + } + + return $this; + } + + /** + * Include files that are owned by a certain owner. + */ + public function owner(int $owner): self + { + $this->_filters[] = function (\SplFileInfo $current) use ($owner) { + return $current->getOwner() === $owner; + }; + + return $this; + } + + /** + * Format date. + * Date can have the following syntax: + * date + * since date + * until date + * If the date does not have the “ago” keyword, it will be added. + * Example: “42 hours” is equivalent to “since 42 hours” which is equivalent + * to “since 42 hours ago”. + */ + protected function formatDate(string $date, &$operator): int + { + $operator = -1; + + if (0 === \preg_match('#\bago\b#', $date)) { + $date .= ' ago'; + } + + if (0 !== \preg_match('#^(since|until)\b(.+)$#', $date, $matches)) { + $time = \strtotime($matches[2]); + + if ('until' === $matches[1]) { + $operator = 1; + } + } else { + $time = \strtotime($date); + } + + return $time; + } + + /** + * Include files that have been changed from a certain date. + * Example: + * $this->changed('since 13 days');. + */ + public function changed(string $date): self + { + $time = $this->formatDate($date, $operator); + + if (-1 === $operator) { + $this->_filters[] = function (\SplFileInfo $current) use ($time) { + return $current->getCTime() >= $time; + }; + } else { + $this->_filters[] = function (\SplFileInfo $current) use ($time) { + return $current->getCTime() < $time; + }; + } + + return $this; + } + + /** + * Include files that have been modified from a certain date. + * Example: + * $this->modified('since 13 days');. + */ + public function modified(string $date): self + { + $time = $this->formatDate($date, $operator); + + if (-1 === $operator) { + $this->_filters[] = function (\SplFileInfo $current) use ($time) { + return $current->getMTime() >= $time; + }; + } else { + $this->_filters[] = function (\SplFileInfo $current) use ($time) { + return $current->getMTime() < $time; + }; + } + + return $this; + } + + /** + * Add your own filter. + * The callback will receive 3 arguments: $current, $key and $iterator. It + * must return a boolean: true to include the file, false to exclude it. + * Example: + * // Include files that are readable + * $this->filter(function ($current) { + * return $current->isReadable(); + * });. + */ + public function filter($callback): self + { + $this->_filters[] = $callback; + + return $this; + } + + /** + * Sort result by name. + * If \Collator exists (from ext/intl), the $locale argument will be used + * for its constructor. Else, strcmp() will be used. + * Example: + * $this->sortByName('fr_FR');. + */ + public function sortByName(string $locale = 'root'): self + { + if (true === \class_exists('Collator', false)) { + $collator = new \Collator($locale); + + $this->_sorts[] = function (\SplFileInfo $a, \SplFileInfo $b) use ($collator) { + return $collator->compare($a->getPathname(), $b->getPathname()); + }; + } else { + $this->_sorts[] = function (\SplFileInfo $a, \SplFileInfo $b) { + return \strcmp($a->getPathname(), $b->getPathname()); + }; + } + + return $this; + } + + /** + * Sort result by size. + * Example: + * $this->sortBySize();. + */ + public function sortBySize(): self + { + $this->_sorts[] = function (\SplFileInfo $a, \SplFileInfo $b) { + return $a->getSize() < $b->getSize(); + }; + + return $this; + } + + /** + * Add your own sort. + * The callback will receive 2 arguments: $a and $b. Please see the uasort() + * function. + * Example: + * // Sort files by their modified time. + * $this->sort(function ($a, $b) { + * return $a->getMTime() < $b->getMTime(); + * });. + */ + public function sort($callable): self + { + $this->_sorts[] = $callable; + + return $this; + } + + /** + * Child comes first when iterating. + */ + public function childFirst(): self + { + $this->_first = \RecursiveIteratorIterator::CHILD_FIRST; + + return $this; + } + + /** + * Get the iterator. + */ + public function getIterator() + { + $_iterator = new \AppendIterator(); + $types = $this->getTypes(); + + if (!empty($types)) { + $this->_filters[] = function (\SplFileInfo $current) use ($types) { + return \in_array($current->getType(), $types); + }; + } + + $maxDepth = $this->getMaxDepth(); + $splFileInfo = $this->getSplFileInfo(); + + foreach ($this->getPaths() as $path) { + if (1 === $maxDepth) { + $iterator = new \IteratorIterator( + new IteratorRecursiveDirectory( + $path, + $this->getFlags(), + $splFileInfo + ), + $this->getFirst() + ); + } else { + $iterator = new \RecursiveIteratorIterator( + new IteratorRecursiveDirectory( + $path, + $this->getFlags(), + $splFileInfo + ), + $this->getFirst() + ); + + if (1 < $maxDepth) { + $iterator->setMaxDepth($maxDepth - 1); + } + } + + $_iterator->append($iterator); + } + + foreach ($this->getFilters() as $filter) { + $_iterator = new \CallbackFilterIterator( + $_iterator, + $filter + ); + } + + $sorts = $this->getSorts(); + + if (empty($sorts)) { + return $_iterator; + } + + $array = \iterator_to_array($_iterator); + + foreach ($sorts as $sort) { + \uasort($array, $sort); + } + + return new \ArrayIterator($array); + } + + /** + * Set SplFileInfo classname. + */ + public function setSplFileInfo(string $splFileInfo): string + { + $old = $this->_splFileInfo; + $this->_splFileInfo = $splFileInfo; + + return $old; + } + + /** + * Get SplFileInfo classname. + */ + public function getSplFileInfo(): string + { + return $this->_splFileInfo; + } + + /** + * Get all paths. + */ + protected function getPaths(): array + { + return $this->_paths; + } + + /** + * Get max depth. + */ + public function getMaxDepth(): int + { + return $this->_maxDepth; + } + + /** + * Get types. + */ + public function getTypes(): array + { + return $this->_types; + } + + /** + * Get filters. + */ + protected function getFilters(): array + { + return $this->_filters; + } + + /** + * Get sorts. + */ + protected function getSorts(): array + { + return $this->_sorts; + } + + /** + * Get flags. + */ + public function getFlags(): int + { + return $this->_flags; + } + + /** + * Get first. + */ + public function getFirst(): int + { + return $this->_first; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php b/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php new file mode 100644 index 000000000..aa3b70cf7 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileGeneric.php @@ -0,0 +1,487 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Generic. + * + * Describe a super-file. + */ +abstract class FileGeneric extends Stream implements StreamPathable, StreamStatable, StreamTouchable +{ + /** + * Mode. + */ + protected $_mode = null; + + /** + * Get filename component of path. + */ + public function getBasename(): string + { + return \basename($this->getStreamName()); + } + + /** + * Get directory name component of path. + */ + public function getDirname(): string + { + return \dirname($this->getStreamName()); + } + + /** + * Get size. + */ + public function getSize(): int + { + if (false === $this->getStatistic()) { + return false; + } + + return \filesize($this->getStreamName()); + } + + /** + * Get informations about a file. + */ + public function getStatistic(): array + { + return \fstat($this->getStream()); + } + + /** + * Get last access time of file. + */ + public function getATime(): int + { + return \fileatime($this->getStreamName()); + } + + /** + * Get inode change time of file. + */ + public function getCTime(): int + { + return \filectime($this->getStreamName()); + } + + /** + * Get file modification time. + */ + public function getMTime(): int + { + return \filemtime($this->getStreamName()); + } + + /** + * Get file group. + */ + public function getGroup(): int + { + return \filegroup($this->getStreamName()); + } + + /** + * Get file owner. + */ + public function getOwner(): int + { + return \fileowner($this->getStreamName()); + } + + /** + * Get file permissions. + */ + public function getPermissions(): int + { + return \fileperms($this->getStreamName()); + } + + /** + * Get file permissions as a string. + * Result sould be interpreted like this: + * * s: socket; + * * l: symbolic link; + * * -: regular; + * * b: block special; + * * d: directory; + * * c: character special; + * * p: FIFO pipe; + * * u: unknown. + */ + public function getReadablePermissions(): string + { + $p = $this->getPermissions(); + + if (($p & 0xC000) === 0xC000) { + $out = 's'; + } elseif (($p & 0xA000) === 0xA000) { + $out = 'l'; + } elseif (($p & 0x8000) === 0x8000) { + $out = '-'; + } elseif (($p & 0x6000) === 0x6000) { + $out = 'b'; + } elseif (($p & 0x4000) === 0x4000) { + $out = 'd'; + } elseif (($p & 0x2000) === 0x2000) { + $out = 'c'; + } elseif (($p & 0x1000) === 0x1000) { + $out = 'p'; + } else { + $out = 'u'; + } + + $out .= + (($p & 0x0100) ? 'r' : '-'). + (($p & 0x0080) ? 'w' : '-'). + (($p & 0x0040) ? + (($p & 0x0800) ? 's' : 'x') : + (($p & 0x0800) ? 'S' : '-')). + (($p & 0x0020) ? 'r' : '-'). + (($p & 0x0010) ? 'w' : '-'). + (($p & 0x0008) ? + (($p & 0x0400) ? 's' : 'x') : + (($p & 0x0400) ? 'S' : '-')). + (($p & 0x0004) ? 'r' : '-'). + (($p & 0x0002) ? 'w' : '-'). + (($p & 0x0001) ? + (($p & 0x0200) ? 't' : 'x') : + (($p & 0x0200) ? 'T' : '-')); + + return $out; + } + + /** + * Check if the file is readable. + */ + public function isReadable(): bool + { + return \is_readable($this->getStreamName()); + } + + /** + * Check if the file is writable. + */ + public function isWritable(): bool + { + return \is_writable($this->getStreamName()); + } + + /** + * Check if the file is executable. + */ + public function isExecutable(): bool + { + return \is_executable($this->getStreamName()); + } + + /** + * Clear file status cache. + */ + public function clearStatisticCache() + { + \clearstatcache(true, $this->getStreamName()); + } + + /** + * Clear all files status cache. + */ + public static function clearAllStatisticCaches() + { + \clearstatcache(); + } + + /** + * Set access and modification time of file. + */ + public function touch(int $time = null, int $atime = null): bool + { + if (null === $time) { + $time = \time(); + } + + if (null === $atime) { + $atime = $time; + } + + return \touch($this->getStreamName(), $time, $atime); + } + + /** + * Copy file. + * Return the destination file path if succeed, false otherwise. + */ + public function copy(string $to, bool $force = StreamTouchable::DO_NOT_OVERWRITE): bool + { + $from = $this->getStreamName(); + + if ($force === StreamTouchable::DO_NOT_OVERWRITE && + true === \file_exists($to)) { + return true; + } + + if (null === $this->getStreamContext()) { + return @\copy($from, $to); + } + + return @\copy($from, $to, $this->getStreamContext()->getContext()); + } + + /** + * Move a file. + */ + public function move( + string $name, + bool $force = StreamTouchable::DO_NOT_OVERWRITE, + bool $mkdir = StreamTouchable::DO_NOT_MAKE_DIRECTORY + ): bool { + $from = $this->getStreamName(); + + if ($force === StreamTouchable::DO_NOT_OVERWRITE && + true === \file_exists($name)) { + return false; + } + + if (StreamTouchable::MAKE_DIRECTORY === $mkdir) { + FileDirectory::create( + \dirname($name), + FileDirectory::MODE_CREATE_RECURSIVE + ); + } + + if (null === $this->getStreamContext()) { + return @\rename($from, $name); + } + + return @\rename($from, $name, $this->getStreamContext()->getContext()); + } + + /** + * Delete a file. + */ + public function delete(): bool + { + if (null === $this->getStreamContext()) { + return @\unlink($this->getStreamName()); + } + + return @\unlink( + $this->getStreamName(), + $this->getStreamContext()->getContext() + ); + } + + /** + * Change file group. + */ + public function changeGroup($group): bool + { + return \chgrp($this->getStreamName(), $group); + } + + /** + * Change file mode. + */ + public function changeMode(int $mode): bool + { + return \chmod($this->getStreamName(), $mode); + } + + /** + * Change file owner. + */ + public function changeOwner($user): bool + { + return \chown($this->getStreamName(), $user); + } + + /** + * Change the current umask. + */ + public static function umask(int $umask = null): int + { + if (null === $umask) { + return \umask(); + } + + return \umask($umask); + } + + /** + * Check if it is a file. + */ + public function isFile(): bool + { + return \is_file($this->getStreamName()); + } + + /** + * Check if it is a link. + */ + public function isLink(): bool + { + return \is_link($this->getStreamName()); + } + + /** + * Check if it is a directory. + */ + public function isDirectory(): bool + { + return \is_dir($this->getStreamName()); + } + + /** + * Check if it is a socket. + */ + public function isSocket(): bool + { + return \filetype($this->getStreamName()) === 'socket'; + } + + /** + * Check if it is a FIFO pipe. + */ + public function isFIFOPipe(): bool + { + return \filetype($this->getStreamName()) === 'fifo'; + } + + /** + * Check if it is character special file. + */ + public function isCharacterSpecial(): bool + { + return \filetype($this->getStreamName()) === 'char'; + } + + /** + * Check if it is block special. + */ + public function isBlockSpecial(): bool + { + return \filetype($this->getStreamName()) === 'block'; + } + + /** + * Check if it is an unknown type. + */ + public function isUnknown(): bool + { + return \filetype($this->getStreamName()) === 'unknown'; + } + + /** + * Set the open mode. + */ + protected function setMode(string $mode) + { + $old = $this->_mode; + $this->_mode = $mode; + + return $old; + } + + /** + * Get the open mode. + */ + public function getMode() + { + return $this->_mode; + } + + /** + * Get inode. + */ + public function getINode(): int + { + return \fileinode($this->getStreamName()); + } + + /** + * Check if the system is case sensitive or not. + */ + public static function isCaseSensitive(): bool + { + return !( + \file_exists(\mb_strtolower(__FILE__)) && + \file_exists(\mb_strtoupper(__FILE__)) + ); + } + + /** + * Get a canonicalized absolute pathname. + */ + public function getRealPath(): string + { + if (false === $out = \realpath($this->getStreamName())) { + return $this->getStreamName(); + } + + return $out; + } + + /** + * Get file extension (if exists). + */ + public function getExtension(): string + { + return \pathinfo( + $this->getStreamName(), + \PATHINFO_EXTENSION + ); + } + + /** + * Get filename without extension. + */ + public function getFilename(): string + { + $file = \basename($this->getStreamName()); + + if (\defined('PATHINFO_FILENAME')) { + return \pathinfo($file, \PATHINFO_FILENAME); + } + + if (\strstr($file, '.')) { + return \substr($file, 0, \strrpos($file, '.')); + } + + return $file; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileLink.php b/vendor/psy/psysh/src/Readline/Hoa/FileLink.php new file mode 100644 index 000000000..21a4485f9 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileLink.php @@ -0,0 +1,149 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Link. + * + * Link handler. + */ +class FileLink extends File +{ + /** + * Open a link. + */ + public function __construct( + string $streamName, + string $mode, + string $context = null, + bool $wait = false + ) { + if (!\is_link($streamName)) { + throw new FileException('File %s is not a link.', 0, $streamName); + } + + parent::__construct($streamName, $mode, $context, $wait); + + return; + } + + /** + * Get informations about a link. + */ + public function getStatistic(): array + { + return \lstat($this->getStreamName()); + } + + /** + * Change file group. + */ + public function changeGroup($group): bool + { + return \lchgrp($this->getStreamName(), $group); + } + + /** + * Change file owner. + */ + public function changeOwner($user): bool + { + return \lchown($this->getStreamName(), $user); + } + + /** + * Get file permissions. + */ + public function getPermissions(): int + { + return 41453; // i.e. lrwxr-xr-x + } + + /** + * Get the target of a symbolic link. + */ + public function getTarget(): FileGeneric + { + $target = \dirname($this->getStreamName()).\DIRECTORY_SEPARATOR. + $this->getTargetName(); + $context = null !== $this->getStreamContext() + ? $this->getStreamContext()->getCurrentId() + : null; + + if (true === \is_link($target)) { + return new FileLinkReadWrite( + $target, + File::MODE_APPEND_READ_WRITE, + $context + ); + } elseif (true === \is_file($target)) { + return new FileReadWrite( + $target, + File::MODE_APPEND_READ_WRITE, + $context + ); + } elseif (true === \is_dir($target)) { + return new FileDirectory( + $target, + File::MODE_READ, + $context + ); + } + + throw new FileException('Cannot find an appropriated object that matches with '.'path %s when defining it.', 1, $target); + } + + /** + * Get the target name of a symbolic link. + */ + public function getTargetName(): string + { + return \readlink($this->getStreamName()); + } + + /** + * Create a link. + */ + public static function create(string $name, string $target): bool + { + if (false !== \linkinfo($name)) { + return true; + } + + return \symlink($target, $name); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php b/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php new file mode 100644 index 000000000..37bb514cb --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileLinkRead.php @@ -0,0 +1,231 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Link\Read. + * + * File handler. + * + * @license New BSD License + */ +class FileLinkRead extends FileLink implements StreamIn +{ + /** + * Open a file. + * + * @param string $streamName stream name + * @param string $mode open mode, see the parent::MODE_* constants + * @param string $context context ID (please, see the + * \Hoa\Stream\Context class) + * @param bool $wait differ opening or not + */ + public function __construct( + string $streamName, + string $mode = parent::MODE_READ, + string $context = null, + bool $wait = false + ) { + parent::__construct($streamName, $mode, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + * + * @param string $streamName Stream name (e.g. path or URL). + * @param \Hoa\Stream\Context $context context + * + * @return resource + * + * @throws \Hoa\File\Exception\FileDoesNotExist + * @throws \Hoa\File\Exception + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + static $createModes = [ + parent::MODE_READ, + ]; + + if (!\in_array($this->getMode(), $createModes)) { + throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); + } + + \preg_match('#^(\w+)://#', $streamName, $match); + + if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && + !\file_exists($streamName)) { + throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); + } + + $out = parent::_open($streamName, $context); + + return $out; + } + + /** + * Test for end-of-file. + * + * @return bool + */ + public function eof(): bool + { + return \feof($this->getStream()); + } + + /** + * Read n characters. + * + * @param int $length length + * + * @return string + * + * @throws \Hoa\File\Exception + */ + public function read(int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 2, $length); + } + + return \fread($this->getStream(), $length); + } + + /** + * Alias of $this->read(). + * + * @param int $length length + * + * @return string + */ + public function readString(int $length) + { + return $this->read($length); + } + + /** + * Read a character. + * + * @return string + */ + public function readCharacter() + { + return \fgetc($this->getStream()); + } + + /** + * Read a boolean. + * + * @return bool + */ + public function readBoolean() + { + return (bool) $this->read(1); + } + + /** + * Read an integer. + * + * @param int $length length + * + * @return int + */ + public function readInteger(int $length = 1) + { + return (int) $this->read($length); + } + + /** + * Read a float. + * + * @param int $length length + * + * @return float + */ + public function readFloat(int $length = 1) + { + return (float) $this->read($length); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + * + * @param string $format format (see printf's formats) + * + * @return array + */ + public function readArray(string $format = null) + { + return $this->scanf($format); + } + + /** + * Read a line. + * + * @return string + */ + public function readLine() + { + return \fgets($this->getStream()); + } + + /** + * Read all, i.e. read as much as possible. + * + * @param int $offset offset + * + * @return string + */ + public function readAll(int $offset = 0) + { + return \stream_get_contents($this->getStream(), -1, $offset); + } + + /** + * Parse input from a stream according to a format. + * + * @param string $format format (see printf's formats) + * + * @return array + */ + public function scanf(string $format): array + { + return \fscanf($this->getStream(), $format); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php b/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php new file mode 100644 index 000000000..0d16585cf --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileLinkReadWrite.php @@ -0,0 +1,279 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Link\ReadWrite. + * + * File handler. + */ +class FileLinkReadWrite extends FileLink implements StreamIn, StreamOut +{ + /** + * Open a file. + */ + public function __construct( + string $streamName, + string $mode = parent::MODE_APPEND_READ_WRITE, + string $context = null, + bool $wait = false + ) { + parent::__construct($streamName, $mode, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + static $createModes = [ + parent::MODE_READ_WRITE, + parent::MODE_TRUNCATE_READ_WRITE, + parent::MODE_APPEND_READ_WRITE, + parent::MODE_CREATE_READ_WRITE, + ]; + + if (!\in_array($this->getMode(), $createModes)) { + throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); + } + + \preg_match('#^(\w+)://#', $streamName, $match); + + if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && + !\file_exists($streamName) && + parent::MODE_READ_WRITE === $this->getMode()) { + throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); + } + + $out = parent::_open($streamName, $context); + + return $out; + } + + /** + * Test for end-of-file. + */ + public function eof(): bool + { + return \feof($this->getStream()); + } + + /** + * Read n characters. + */ + public function read(int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 2, $length); + } + + return \fread($this->getStream(), $length); + } + + /** + * Alias of $this->read(). + */ + public function readString(int $length) + { + return $this->read($length); + } + + /** + * Read a character. + */ + public function readCharacter() + { + return \fgetc($this->getStream()); + } + + /** + * Read a boolean. + */ + public function readBoolean() + { + return (bool) $this->read(1); + } + + /** + * Read an integer. + */ + public function readInteger(int $length = 1) + { + return (int) $this->read($length); + } + + /** + * Read a float. + */ + public function readFloat(int $length = 1) + { + return (float) $this->read($length); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + */ + public function readArray(string $format = null) + { + return $this->scanf($format); + } + + /** + * Read a line. + */ + public function readLine() + { + return \fgets($this->getStream()); + } + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = 0) + { + return \stream_get_contents($this->getStream(), -1, $offset); + } + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format): array + { + return \fscanf($this->getStream(), $format); + } + + /** + * Write n characters. + */ + public function write(string $string, int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 3, $length); + } + + return \fwrite($this->getStream(), $string, $length); + } + + /** + * Write a string. + */ + public function writeString(string $string) + { + $string = (string) $string; + + return $this->write($string, \strlen($string)); + } + + /** + * Write a character. + */ + public function writeCharacter(string $char) + { + return $this->write((string) $char[0], 1); + } + + /** + * Write a boolean. + */ + public function writeBoolean(bool $boolean) + { + return $this->write((string) (bool) $boolean, 1); + } + + /** + * Write an integer. + */ + public function writeInteger(int $integer) + { + $integer = (string) (int) $integer; + + return $this->write($integer, \strlen($integer)); + } + + /** + * Write a float. + */ + public function writeFloat(float $float) + { + $float = (string) (float) $float; + + return $this->write($float, \strlen($float)); + } + + /** + * Write an array. + */ + public function writeArray(array $array) + { + $array = \var_export($array, true); + + return $this->write($array, \strlen($array)); + } + + /** + * Write a line. + */ + public function writeLine(string $line) + { + if (false === $n = \strpos($line, "\n")) { + return $this->write($line."\n", \strlen($line) + 1); + } + + ++$n; + + return $this->write(\substr($line, 0, $n), $n); + } + + /** + * Write all, i.e. as much as possible. + */ + public function writeAll(string $string) + { + return $this->write($string, \strlen($string)); + } + + /** + * Truncate a file to a given length. + */ + public function truncate(int $size): bool + { + return \ftruncate($this->getStream(), $size); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileRead.php b/vendor/psy/psysh/src/Readline/Hoa/FileRead.php new file mode 100644 index 000000000..9e10fe692 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileRead.php @@ -0,0 +1,177 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\Read. + * + * File handler. + */ +class FileRead extends File implements StreamIn +{ + /** + * Open a file. + */ + public function __construct( + string $streamName, + string $mode = parent::MODE_READ, + string $context = null, + bool $wait = false + ) { + parent::__construct($streamName, $mode, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + static $createModes = [ + parent::MODE_READ, + ]; + + if (!\in_array($this->getMode(), $createModes)) { + throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); + } + + \preg_match('#^(\w+)://#', $streamName, $match); + + if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && + !\file_exists($streamName)) { + throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); + } + + $out = parent::_open($streamName, $context); + + return $out; + } + + /** + * Test for end-of-file. + */ + public function eof(): bool + { + return \feof($this->getStream()); + } + + /** + * Read n characters. + */ + public function read(int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 2, $length); + } + + return \fread($this->getStream(), $length); + } + + /** + * Alias of $this->read(). + */ + public function readString(int $length) + { + return $this->read($length); + } + + /** + * Read a character. + */ + public function readCharacter() + { + return \fgetc($this->getStream()); + } + + /** + * Read a boolean. + */ + public function readBoolean() + { + return (bool) $this->read(1); + } + + /** + * Read an integer. + */ + public function readInteger(int $length = 1) + { + return (int) $this->read($length); + } + + /** + * Read a float. + */ + public function readFloat(int $length = 1) + { + return (float) $this->read($length); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + */ + public function readArray(string $format = null) + { + return $this->scanf($format); + } + + /** + * Read a line. + */ + public function readLine() + { + return \fgets($this->getStream()); + } + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = 0) + { + return \stream_get_contents($this->getStream(), -1, $offset); + } + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format): array + { + return \fscanf($this->getStream(), $format); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php b/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php new file mode 100644 index 000000000..406b6aa73 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/FileReadWrite.php @@ -0,0 +1,279 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\File\ReadWrite. + * + * File handler. + */ +class FileReadWrite extends File implements StreamIn, StreamOut +{ + /** + * Open a file. + */ + public function __construct( + string $streamName, + string $mode = parent::MODE_APPEND_READ_WRITE, + string $context = null, + bool $wait = false + ) { + parent::__construct($streamName, $mode, $context, $wait); + + return; + } + + /** + * Open the stream and return the associated resource. + */ + protected function &_open(string $streamName, StreamContext $context = null) + { + static $createModes = [ + parent::MODE_READ_WRITE, + parent::MODE_TRUNCATE_READ_WRITE, + parent::MODE_APPEND_READ_WRITE, + parent::MODE_CREATE_READ_WRITE, + ]; + + if (!\in_array($this->getMode(), $createModes)) { + throw new FileException('Open mode are not supported; given %d. Only %s are supported.', 0, [$this->getMode(), \implode(', ', $createModes)]); + } + + \preg_match('#^(\w+)://#', $streamName, $match); + + if (((isset($match[1]) && $match[1] === 'file') || !isset($match[1])) && + !\file_exists($streamName) && + parent::MODE_READ_WRITE === $this->getMode()) { + throw new FileDoesNotExistException('File %s does not exist.', 1, $streamName); + } + + $out = parent::_open($streamName, $context); + + return $out; + } + + /** + * Test for end-of-file. + */ + public function eof(): bool + { + return \feof($this->getStream()); + } + + /** + * Read n characters. + */ + public function read(int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 2, $length); + } + + return \fread($this->getStream(), $length); + } + + /** + * Alias of $this->read(). + */ + public function readString(int $length) + { + return $this->read($length); + } + + /** + * Read a character. + */ + public function readCharacter() + { + return \fgetc($this->getStream()); + } + + /** + * Read a boolean. + */ + public function readBoolean() + { + return (bool) $this->read(1); + } + + /** + * Read an integer. + */ + public function readInteger(int $length = 1) + { + return (int) $this->read($length); + } + + /** + * Read a float. + */ + public function readFloat(int $length = 1) + { + return (float) $this->read($length); + } + + /** + * Read an array. + * Alias of the $this->scanf() method. + */ + public function readArray(string $format = null) + { + return $this->scanf($format); + } + + /** + * Read a line. + */ + public function readLine() + { + return \fgets($this->getStream()); + } + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = 0) + { + return \stream_get_contents($this->getStream(), -1, $offset); + } + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format): array + { + return \fscanf($this->getStream(), $format); + } + + /** + * Write n characters. + */ + public function write(string $string, int $length) + { + if (0 > $length) { + throw new FileException('Length must be greater than 0, given %d.', 3, $length); + } + + return \fwrite($this->getStream(), $string, $length); + } + + /** + * Write a string. + */ + public function writeString(string $string) + { + $string = (string) $string; + + return $this->write($string, \strlen($string)); + } + + /** + * Write a character. + */ + public function writeCharacter(string $char) + { + return $this->write((string) $char[0], 1); + } + + /** + * Write a boolean. + */ + public function writeBoolean(bool $boolean) + { + return $this->write((string) (bool) $boolean, 1); + } + + /** + * Write an integer. + */ + public function writeInteger(int $integer) + { + $integer = (string) (int) $integer; + + return $this->write($integer, \strlen($integer)); + } + + /** + * Write a float. + */ + public function writeFloat(float $float) + { + $float = (string) (float) $float; + + return $this->write($float, \strlen($float)); + } + + /** + * Write an array. + */ + public function writeArray(array $array) + { + $array = \var_export($array, true); + + return $this->write($array, \strlen($array)); + } + + /** + * Write a line. + */ + public function writeLine(string $line) + { + if (false === $n = \strpos($line, "\n")) { + return $this->write($line."\n", \strlen($line) + 1); + } + + ++$n; + + return $this->write(\substr($line, 0, $n), $n); + } + + /** + * Write all, i.e. as much as possible. + */ + public function writeAll(string $string) + { + return $this->write($string, \strlen($string)); + } + + /** + * Truncate a file to a given length. + */ + public function truncate(int $size): bool + { + return \ftruncate($this->getStream(), $size); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/IStream.php b/vendor/psy/psysh/src/Readline/Hoa/IStream.php new file mode 100644 index 000000000..9b9949a24 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/IStream.php @@ -0,0 +1,50 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Stream. + * + * Interface for all streams. + */ +interface IStream +{ + /** + * Get the current stream. + */ + public function getStream(); +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php b/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php new file mode 100644 index 000000000..f0fc5c575 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/IteratorFileSystem.php @@ -0,0 +1,86 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Iterator\FileSystem. + * + * Extending the SPL FileSystemIterator class. + */ +class IteratorFileSystem extends \FilesystemIterator +{ + /** + * SplFileInfo classname. + */ + protected $_splFileInfoClass = null; + + /** + * Constructor. + * Please, see \FileSystemIterator::__construct() method. + * We add the $splFileInfoClass parameter. + */ + public function __construct(string $path, int $flags = null, string $splFileInfoClass = null) + { + $this->_splFileInfoClass = $splFileInfoClass; + + if (null === $flags) { + parent::__construct($path); + } else { + parent::__construct($path, $flags); + } + + return; + } + + /** + * Current. + * Please, see \FileSystemIterator::current() method. + */ + #[\ReturnTypeWillChange] + public function current() + { + $out = parent::current(); + + if (null !== $this->_splFileInfoClass && + $out instanceof \SplFileInfo) { + $out->setInfoClass($this->_splFileInfoClass); + $out = $out->getFileInfo(); + } + + return $out; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php b/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php new file mode 100644 index 000000000..ad6951233 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/IteratorRecursiveDirectory.php @@ -0,0 +1,126 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Iterator\Recursive\Directory. + * + * Extending the SPL RecursiveDirectoryIterator class. + */ +class IteratorRecursiveDirectory extends \RecursiveDirectoryIterator +{ + /** + * SplFileInfo classname. + */ + protected $_splFileInfoClass = null; + + /** + * Relative path. + */ + protected $_relativePath = null; + + /** + * Constructor. + * Please, see \RecursiveDirectoryIterator::__construct() method. + * We add the $splFileInfoClass parameter. + */ + public function __construct(string $path, int $flags = null, string $splFileInfoClass = null) + { + if (null === $flags) { + parent::__construct($path); + } else { + parent::__construct($path, $flags); + } + + $this->_relativePath = $path; + $this->setSplFileInfoClass($splFileInfoClass); + + return; + } + + /** + * Current. + * Please, see \RecursiveDirectoryIterator::current() method. + */ + #[\ReturnTypeWillChange] + public function current() + { + $out = parent::current(); + + if (null !== $this->_splFileInfoClass && + $out instanceof \SplFileInfo) { + $out->setInfoClass($this->_splFileInfoClass); + $out = $out->getFileInfo(); + + if ($out instanceof IteratorSplFileInfo) { + $out->setRelativePath($this->getRelativePath()); + } + } + + return $out; + } + + /** + * Get children. + * Please, see \RecursiveDirectoryIterator::getChildren() method. + */ + #[\ReturnTypeWillChange] + public function getChildren() + { + $out = parent::getChildren(); + $out->_relativePath = $this->getRelativePath(); + $out->setSplFileInfoClass($this->_splFileInfoClass); + + return $out; + } + + /** + * Set SplFileInfo classname. + */ + public function setSplFileInfoClass($splFileInfoClass) + { + $this->_splFileInfoClass = $splFileInfoClass; + } + + /** + * Get relative path (if given). + */ + public function getRelativePath(): string + { + return $this->_relativePath; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php b/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php new file mode 100644 index 000000000..3cf54b845 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/IteratorSplFileInfo.php @@ -0,0 +1,122 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Iterator\SplFileInfo. + * + * Enhance SplFileInfo implementation. + */ +class IteratorSplFileInfo extends \SplFileInfo +{ + /** + * Hash. + */ + protected $_hash = null; + + /** + * Relative path. + */ + protected $_relativePath = null; + + /** + * Construct. + */ + public function __construct(string $filename, string $relativePath = null) + { + parent::__construct($filename); + + if (-1 !== $mtime = $this->getMTime()) { + $this->_hash = \md5($this->getPathname().$mtime); + } + + $this->_relativePath = $relativePath; + + return; + } + + /** + * Get the hash. + */ + public function getHash(): string + { + return $this->_hash; + } + + /** + * Get the MTime. + */ + public function getMTime(): int + { + try { + return parent::getMTime(); + } catch (\RuntimeException $e) { + return -1; + } + } + + /** + * Set relative path. + */ + public function setRelativePath(string $relativePath) + { + $old = $this->_relativePath; + $this->_relativePath = $relativePath; + + return $old; + } + + /** + * Get relative path (if given). + */ + public function getRelativePath() + { + return $this->_relativePath; + } + + /** + * Get relative pathname (if possible). + */ + public function getRelativePathname(): string + { + if (null === $relative = $this->getRelativePath()) { + return $this->getPathname(); + } + + return \substr($this->getPathname(), \strlen($relative)); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Protocol.php b/vendor/psy/psysh/src/Readline/Hoa/Protocol.php new file mode 100644 index 000000000..51d064e02 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Protocol.php @@ -0,0 +1,223 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Root of the `hoa://` protocol. + */ +class Protocol extends ProtocolNode +{ + /** + * No resolution value. + * + * @const string + */ + const NO_RESOLUTION = '/hoa/flatland'; + + /** + * Singleton. + */ + private static $_instance = null; + + /** + * Cache of resolver. + */ + private static $_cache = []; + + /** + * Initialize the protocol. + */ + public function __construct() + { + $this->initialize(); + + return; + } + + /** + * Singleton. + * To use the `hoa://` protocol shared by everyone. + */ + public static function getInstance(): self + { + if (null === static::$_instance) { + static::$_instance = new self(); + } + + return static::$_instance; + } + + /** + * Initialize the protocol. + */ + protected function initialize() + { + $root = \dirname(__DIR__, 3); + $argv0 = \realpath($_SERVER['argv'][0]); + + $cwd = + 'cli' === \PHP_SAPI + ? false !== $argv0 ? \dirname($argv0) : '' + : \getcwd(); + + $this[] = new ProtocolNode( + 'Application', + $cwd.\DIRECTORY_SEPARATOR, + [ + new ProtocolNode('Public', 'Public'.\DIRECTORY_SEPARATOR), + ] + ); + + $this[] = new ProtocolNode( + 'Data', + \dirname($cwd).\DIRECTORY_SEPARATOR, + [ + new ProtocolNode( + 'Etc', + 'Etc'.\DIRECTORY_SEPARATOR, + [ + new ProtocolNode('Configuration', 'Configuration'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Locale', 'Locale'.\DIRECTORY_SEPARATOR), + ] + ), + new ProtocolNode('Lost+found', 'Lost+found'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Temporary', 'Temporary'.\DIRECTORY_SEPARATOR), + new ProtocolNode( + 'Variable', + 'Variable'.\DIRECTORY_SEPARATOR, + [ + new ProtocolNode('Cache', 'Cache'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Database', 'Database'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Log', 'Log'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Private', 'Private'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Run', 'Run'.\DIRECTORY_SEPARATOR), + new ProtocolNode('Test', 'Test'.\DIRECTORY_SEPARATOR), + ] + ), + ] + ); + + $this[] = new ProtocolNodeLibrary( + 'Library', + $root.\DIRECTORY_SEPARATOR.'Hoathis'.\DIRECTORY_SEPARATOR.';'. + $root.\DIRECTORY_SEPARATOR.'Hoa'.\DIRECTORY_SEPARATOR + ); + } + + /** + * Resolve (unfold) an `hoa://` path to its real resource. + * + * If `$exists` is set to `true`, try to find the first that exists, + * otherwise returns the first solution. If `$unfold` is set to `true`, + * it returns all the paths. + */ + public function resolve(string $path, bool $exists = true, bool $unfold = false) + { + if (\substr($path, 0, 6) !== 'hoa://') { + if (true === \is_dir($path)) { + $path = \rtrim($path, '/\\'); + + if ('' === $path) { + $path = '/'; + } + } + + return $path; + } + + if (isset(self::$_cache[$path])) { + $handle = self::$_cache[$path]; + } else { + $out = $this->_resolve($path, $handle); + + // Not a path but a resource. + if (!\is_array($handle)) { + return $out; + } + + $handle = \array_values(\array_unique($handle, \SORT_REGULAR)); + + foreach ($handle as &$entry) { + if (true === \is_dir($entry)) { + $entry = \rtrim($entry, '/\\'); + + if ('' === $entry) { + $entry = '/'; + } + } + } + + self::$_cache[$path] = $handle; + } + + if (true === $unfold) { + if (true !== $exists) { + return $handle; + } + + $out = []; + + foreach ($handle as $solution) { + if (\file_exists($solution)) { + $out[] = $solution; + } + } + + return $out; + } + + if (true !== $exists) { + return $handle[0]; + } + + foreach ($handle as $solution) { + if (\file_exists($solution)) { + return $solution; + } + } + + return static::NO_RESOLUTION; + } + + /** + * Clear the cache. + */ + public static function clearCache() + { + self::$_cache = []; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ProtocolException.php b/vendor/psy/psysh/src/Readline/Hoa/ProtocolException.php new file mode 100644 index 000000000..6b624bb9e --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ProtocolException.php @@ -0,0 +1,44 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Extends the `Hoa\Exception\Exception` class. + */ +class ProtocolException extends Exception +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php b/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php new file mode 100644 index 000000000..78812d7ec --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ProtocolNode.php @@ -0,0 +1,323 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Abstract class for all `hoa://`'s nodes. + */ +class ProtocolNode implements \ArrayAccess, \IteratorAggregate +{ + /** + * Node's name. + */ + protected $_name = null; + + /** + * Path for the `reach` method. + */ + protected $_reach = null; + + /** + * Children of the node. + */ + private $_children = []; + + /** + * Construct a protocol's node. + * If it is not a data object (i.e. if it does not extend this class to + * overload the `$_name` attribute), we can set the `$_name` attribute + * dynamically. This is useful to create a node on-the-fly. + */ + public function __construct(string $name = null, string $reach = null, array $children = []) + { + if (null !== $name) { + $this->_name = $name; + } + + if (null !== $reach) { + $this->_reach = $reach; + } + + foreach ($children as $child) { + $this[] = $child; + } + + return; + } + + /** + * Add a node. + */ + #[\ReturnTypeWillChange] + public function offsetSet($name, $node) + { + if (!($node instanceof self)) { + throw new ProtocolException('Protocol node must extend %s.', 0, __CLASS__); + } + + if (empty($name)) { + $name = $node->getName(); + } + + if (empty($name)) { + throw new ProtocolException('Cannot add a node to the `hoa://` protocol without a name.', 1); + } + + $this->_children[$name] = $node; + } + + /** + * Get a specific node. + */ + public function offsetGet($name): self + { + if (!isset($this[$name])) { + throw new ProtocolException('Node %s does not exist.', 2, $name); + } + + return $this->_children[$name]; + } + + /** + * Check if a node exists. + */ + public function offsetExists($name): bool + { + return true === \array_key_exists($name, $this->_children); + } + + /** + * Remove a node. + */ + #[\ReturnTypeWillChange] + public function offsetUnset($name) + { + unset($this->_children[$name]); + } + + /** + * Resolve a path, i.e. iterate the nodes tree and reach the queue of + * the path. + */ + protected function _resolve(string $path, &$accumulator, string $id = null) + { + if (\substr($path, 0, 6) === 'hoa://') { + $path = \substr($path, 6); + } + + if (empty($path)) { + return null; + } + + if (null === $accumulator) { + $accumulator = []; + $posId = \strpos($path, '#'); + + if (false !== $posId) { + $id = \substr($path, $posId + 1); + $path = \substr($path, 0, $posId); + } else { + $id = null; + } + } + + $path = \trim($path, '/'); + $pos = \strpos($path, '/'); + + if (false !== $pos) { + $next = \substr($path, 0, $pos); + } else { + $next = $path; + } + + if (isset($this[$next])) { + if (false === $pos) { + if (null === $id) { + $this->_resolveChoice($this[$next]->reach(), $accumulator); + + return true; + } + + $accumulator = null; + + return $this[$next]->reachId($id); + } + + $tnext = $this[$next]; + $this->_resolveChoice($tnext->reach(), $accumulator); + + return $tnext->_resolve(\substr($path, $pos + 1), $accumulator, $id); + } + + $this->_resolveChoice($this->reach($path), $accumulator); + + return true; + } + + /** + * Resolve choices, i.e. a reach value has a “;”. + */ + protected function _resolveChoice($reach, &$accumulator) + { + if (null === $reach) { + $reach = ''; + } + + if (empty($accumulator)) { + $accumulator = \explode(';', $reach); + + return; + } + + if (false === \strpos($reach, ';')) { + if (false !== $pos = \strrpos($reach, "\r")) { + $reach = \substr($reach, $pos + 1); + + foreach ($accumulator as &$entry) { + $entry = null; + } + } + + foreach ($accumulator as &$entry) { + $entry .= $reach; + } + + return; + } + + $choices = \explode(';', $reach); + $ref = $accumulator; + $accumulator = []; + + foreach ($choices as $choice) { + if (false !== $pos = \strrpos($choice, "\r")) { + $choice = \substr($choice, $pos + 1); + + foreach ($ref as $entry) { + $accumulator[] = $choice; + } + } else { + foreach ($ref as $entry) { + $accumulator[] = $entry.$choice; + } + } + } + + unset($ref); + + return; + } + + /** + * Queue of the node. + * Generic one. Must be overrided in children classes. + */ + public function reach(string $queue = null) + { + return empty($queue) ? $this->_reach : $queue; + } + + /** + * ID of the component. + * Generic one. Should be overrided in children classes. + */ + public function reachId(string $id) + { + throw new ProtocolException('The node %s has no ID support (tried to reach #%s).', 4, [$this->getName(), $id]); + } + + /** + * Set a new reach value. + */ + public function setReach(string $reach) + { + $old = $this->_reach; + $this->_reach = $reach; + + return $old; + } + + /** + * Get node's name. + */ + public function getName() + { + return $this->_name; + } + + /** + * Get reach's root. + */ + protected function getReach() + { + return $this->_reach; + } + + /** + * Get an iterator. + */ + public function getIterator(): \ArrayIterator + { + return new \ArrayIterator($this->_children); + } + + /** + * Get root the protocol. + */ + public static function getRoot(): Protocol + { + return Protocol::getInstance(); + } + + /** + * Print a tree of component. + */ + public function __toString(): string + { + static $i = 0; + + $out = \str_repeat(' ', $i).$this->getName()."\n"; + + foreach ($this as $node) { + ++$i; + $out .= $node; + --$i; + } + + return $out; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php b/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php new file mode 100644 index 000000000..dfb0cb206 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ProtocolNodeLibrary.php @@ -0,0 +1,90 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * The `hoa://Library/` node. + */ +class ProtocolNodeLibrary extends ProtocolNode +{ + /** + * Queue of the component. + */ + public function reach(string $queue = null) + { + $withComposer = \class_exists('Composer\Autoload\ClassLoader', false) || + ('cli' === \PHP_SAPI && \file_exists(__DIR__.DS.'..'.DS.'..'.DS.'..'.DS.'..'.DS.'autoload.php')); + + if ($withComposer) { + return parent::reach($queue); + } + + if (!empty($queue)) { + $head = $queue; + + if (false !== $pos = \strpos($queue, '/')) { + $head = \substr($head, 0, $pos); + $queue = \DIRECTORY_SEPARATOR.\substr($queue, $pos + 1); + } else { + $queue = null; + } + + $out = []; + + foreach (\explode(';', $this->_reach) as $part) { + $out[] = "\r".$part.\strtolower($head).$queue; + } + + $out[] = "\r".\dirname(__DIR__, 5).$queue; + + return \implode(';', $out); + } + + $out = []; + + foreach (\explode(';', $this->_reach) as $part) { + $pos = \strrpos(\rtrim($part, \DIRECTORY_SEPARATOR), \DIRECTORY_SEPARATOR) + 1; + $head = \substr($part, 0, $pos); + $tail = \substr($part, $pos); + $out[] = $head.\strtolower($tail); + } + + $this->_reach = \implode(';', $out); + + return parent::reach($queue); + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php b/vendor/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php new file mode 100644 index 000000000..8d525e7ef --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/ProtocolWrapper.php @@ -0,0 +1,473 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Stream wrapper for the `hoa://` protocol. + */ +class ProtocolWrapper +{ + /** + * Opened stream as a resource. + */ + private $_stream = null; + + /** + * Stream name (filename). + */ + private $_streamName = null; + + /** + * Stream context (given by the streamWrapper class) as a resource. + */ + public $context = null; + + /** + * Get the real path of the given URL. + * Could return false if the path cannot be reached. + */ + public static function realPath(string $path, bool $exists = true) + { + return ProtocolNode::getRoot()->resolve($path, $exists); + } + + /** + * Retrieve the underlying resource. + * + * `$castAs` can be `STREAM_CAST_FOR_SELECT` when `stream_select` is + * calling `stream_cast` or `STREAM_CAST_AS_STREAM` when `stream_cast` is + * called for other uses. + */ + public function stream_cast(int $castAs) + { + return null; + } + + /** + * Closes a resource. + * This method is called in response to `fclose`. + * All resources that were locked, or allocated, by the wrapper should be + * released. + */ + public function stream_close() + { + if (true === @\fclose($this->getStream())) { + $this->_stream = null; + $this->_streamName = null; + } + } + + /** + * Tests for end-of-file on a file pointer. + * This method is called in response to feof(). + */ + public function stream_eof(): bool + { + return \feof($this->getStream()); + } + + /** + * Flush the output. + * This method is called in respond to fflush(). + * If we have cached data in our stream but not yet stored it into the + * underlying storage, we should do so now. + */ + public function stream_flush(): bool + { + return \fflush($this->getStream()); + } + + /** + * Advisory file locking. + * This method is called in response to flock(), when file_put_contents() + * (when flags contains LOCK_EX), stream_set_blocking() and when closing the + * stream (LOCK_UN). + * + * Operation is one the following: + * * LOCK_SH to acquire a shared lock (reader) ; + * * LOCK_EX to acquire an exclusive lock (writer) ; + * * LOCK_UN to release a lock (shared or exclusive) ; + * * LOCK_NB if we don't want flock() to + * block while locking (not supported on + * Windows). + */ + public function stream_lock(int $operation): bool + { + return \flock($this->getStream(), $operation); + } + + /** + * Change stream options. + * This method is called to set metadata on the stream. It is called when + * one of the following functions is called on a stream URL: touch, chmod, + * chown or chgrp. + * + * Option must be one of the following constant: + * * STREAM_META_TOUCH, + * * STREAM_META_OWNER_NAME, + * * STREAM_META_OWNER, + * * STREAM_META_GROUP_NAME, + * * STREAM_META_GROUP, + * * STREAM_META_ACCESS. + * + * Values are arguments of `touch`, `chmod`, `chown`, and `chgrp`. + */ + public function stream_metadata(string $path, int $option, $values): bool + { + $path = static::realPath($path, false); + + switch ($option) { + case \STREAM_META_TOUCH: + $arity = \count($values); + + if (0 === $arity) { + $out = \touch($path); + } elseif (1 === $arity) { + $out = \touch($path, $values[0]); + } else { + $out = \touch($path, $values[0], $values[1]); + } + + break; + + case \STREAM_META_OWNER_NAME: + case \STREAM_META_OWNER: + $out = \chown($path, $values); + + break; + + case \STREAM_META_GROUP_NAME: + case \STREAM_META_GROUP: + $out = \chgrp($path, $values); + + break; + + case \STREAM_META_ACCESS: + $out = \chmod($path, $values); + + break; + + default: + $out = false; + } + + return $out; + } + + /** + * Open file or URL. + * This method is called immediately after the wrapper is initialized (f.e. + * by fopen() and file_get_contents()). + */ + public function stream_open(string $path, string $mode, int $options, &$openedPath): bool + { + $path = static::realPath($path, 'r' === $mode[0]); + + if (Protocol::NO_RESOLUTION === $path) { + return false; + } + + if (null === $this->context) { + $openedPath = \fopen($path, $mode, $options & \STREAM_USE_PATH); + } else { + $openedPath = \fopen( + $path, + $mode, + (bool) ($options & \STREAM_USE_PATH), + $this->context + ); + } + + if (false === \is_resource($openedPath)) { + return false; + } + + $this->_stream = $openedPath; + $this->_streamName = $path; + + return true; + } + + /** + * Read from stream. + * This method is called in response to fread() and fgets(). + */ + public function stream_read(int $size): string + { + return \fread($this->getStream(), $size); + } + + /** + * Seek to specific location in a stream. + * This method is called in response to fseek(). + * The read/write position of the stream should be updated according to the + * $offset and $whence. + * + * The possible values for `$whence` are: + * * SEEK_SET to set position equal to $offset bytes, + * * SEEK_CUR to set position to current location plus `$offset`, + * * SEEK_END to set position to end-of-file plus `$offset`. + */ + public function stream_seek(int $offset, int $whence = \SEEK_SET): bool + { + return 0 === \fseek($this->getStream(), $offset, $whence); + } + + /** + * Retrieve information about a file resource. + * This method is called in response to fstat(). + */ + public function stream_stat(): array + { + return \fstat($this->getStream()); + } + + /** + * Retrieve the current position of a stream. + * This method is called in response to ftell(). + */ + public function stream_tell(): int + { + return \ftell($this->getStream()); + } + + /** + * Truncate a stream to a given length. + */ + public function stream_truncate(int $size): bool + { + return \ftruncate($this->getStream(), $size); + } + + /** + * Write to stream. + * This method is called in response to fwrite(). + */ + public function stream_write(string $data): int + { + return \fwrite($this->getStream(), $data); + } + + /** + * Close directory handle. + * This method is called in to closedir(). + * Any resources which were locked, or allocated, during opening and use of + * the directory stream should be released. + */ + public function dir_closedir() + { + \closedir($this->getStream()); + $this->_stream = null; + $this->_streamName = null; + } + + /** + * Open directory handle. + * This method is called in response to opendir(). + * + * The `$options` input represents whether or not to enforce safe_mode + * (0x04). It is not used here. + */ + public function dir_opendir(string $path, int $options): bool + { + $path = static::realPath($path); + $handle = null; + + if (null === $this->context) { + $handle = @\opendir($path); + } else { + $handle = @\opendir($path, $this->context); + } + + if (false === $handle) { + return false; + } + + $this->_stream = $handle; + $this->_streamName = $path; + + return true; + } + + /** + * Read entry from directory handle. + * This method is called in response to readdir(). + * + * @return mixed + */ + public function dir_readdir() + { + return \readdir($this->getStream()); + } + + /** + * Rewind directory handle. + * This method is called in response to rewinddir(). + * Should reset the output generated by self::dir_readdir, i.e. the next + * call to self::dir_readdir should return the first entry in the location + * returned by self::dir_opendir. + */ + public function dir_rewinddir() + { + \rewinddir($this->getStream()); + } + + /** + * Create a directory. + * This method is called in response to mkdir(). + */ + public function mkdir(string $path, int $mode, int $options): bool + { + if (null === $this->context) { + return \mkdir( + static::realPath($path, false), + $mode, + $options | \STREAM_MKDIR_RECURSIVE + ); + } + + return \mkdir( + static::realPath($path, false), + $mode, + (bool) ($options | \STREAM_MKDIR_RECURSIVE), + $this->context + ); + } + + /** + * Rename a file or directory. + * This method is called in response to rename(). + * Should attempt to rename $from to $to. + */ + public function rename(string $from, string $to): bool + { + if (null === $this->context) { + return \rename(static::realPath($from), static::realPath($to, false)); + } + + return \rename( + static::realPath($from), + static::realPath($to, false), + $this->context + ); + } + + /** + * Remove a directory. + * This method is called in response to rmdir(). + * The `$options` input is a bitwise mask of values. It is not used here. + */ + public function rmdir(string $path, int $options): bool + { + if (null === $this->context) { + return \rmdir(static::realPath($path)); + } + + return \rmdir(static::realPath($path), $this->context); + } + + /** + * Delete a file. + * This method is called in response to unlink(). + */ + public function unlink(string $path): bool + { + if (null === $this->context) { + return \unlink(static::realPath($path)); + } + + return \unlink(static::realPath($path), $this->context); + } + + /** + * Retrieve information about a file. + * This method is called in response to all stat() related functions. + * The `$flags` input holds additional flags set by the streams API. It + * can hold one or more of the following values OR'd together. + * STREAM_URL_STAT_LINK: for resource with the ability to link to other + * resource (such as an HTTP location: forward, or a filesystem + * symlink). This flag specified that only information about the link + * itself should be returned, not the resource pointed to by the + * link. This flag is set in response to calls to lstat(), is_link(), or + * filetype(). STREAM_URL_STAT_QUIET: if this flag is set, our wrapper + * should not raise any errors. If this flag is not set, we are + * responsible for reporting errors using the trigger_error() function + * during stating of the path. + */ + public function url_stat(string $path, int $flags) + { + $path = static::realPath($path); + + if (Protocol::NO_RESOLUTION === $path) { + if ($flags & \STREAM_URL_STAT_QUIET) { + return 0; + } else { + return \trigger_error( + 'Path '.$path.' cannot be resolved.', + \E_WARNING + ); + } + } + + if ($flags & \STREAM_URL_STAT_LINK) { + return @\lstat($path); + } + + return @\stat($path); + } + + /** + * Get stream resource. + */ + public function getStream() + { + return $this->_stream; + } + + /** + * Get stream name. + */ + public function getStreamName() + { + return $this->_streamName; + } +} + +/* + * Register the `hoa://` protocol. + */ +\stream_wrapper_register('hoa', ProtocolWrapper::class); diff --git a/vendor/psy/psysh/src/Readline/Hoa/Readline.php b/vendor/psy/psysh/src/Readline/Hoa/Readline.php new file mode 100644 index 000000000..0338c9026 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Readline.php @@ -0,0 +1,1032 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Console\Readline. + * + * Read, edit, bind… a line from the input. + */ +class Readline +{ + /** + * State: continue to read. + */ + const STATE_CONTINUE = 1; + + /** + * State: stop to read. + */ + const STATE_BREAK = 2; + + /** + * State: no output the current buffer. + */ + const STATE_NO_ECHO = 4; + + /** + * Current editing line. + */ + protected $_line = null; + + /** + * Current editing line seek. + */ + protected $_lineCurrent = 0; + + /** + * Current editing line length. + */ + protected $_lineLength = 0; + + /** + * Current buffer (most of the time, a char). + */ + protected $_buffer = null; + + /** + * Mapping. + */ + protected $_mapping = []; + + /** + * History. + */ + protected $_history = []; + + /** + * History current position. + */ + protected $_historyCurrent = 0; + + /** + * History size. + */ + protected $_historySize = 0; + + /** + * Prefix. + */ + protected $_prefix = null; + + /** + * Autocompleter. + */ + protected $_autocompleter = null; + + /** + * Initialize the readline editor. + */ + public function __construct() + { + if (\defined('PHP_WINDOWS_VERSION_PLATFORM')) { + return; + } + + $this->_mapping["\033[A"] = [$this, '_bindArrowUp']; + $this->_mapping["\033[B"] = [$this, '_bindArrowDown']; + $this->_mapping["\033[C"] = [$this, '_bindArrowRight']; + $this->_mapping["\033[D"] = [$this, '_bindArrowLeft']; + $this->_mapping["\001"] = [$this, '_bindControlA']; + $this->_mapping["\002"] = [$this, '_bindControlB']; + $this->_mapping["\005"] = [$this, '_bindControlE']; + $this->_mapping["\006"] = [$this, '_bindControlF']; + $this->_mapping["\010"] = + $this->_mapping["\177"] = [$this, '_bindBackspace']; + $this->_mapping["\027"] = [$this, '_bindControlW']; + $this->_mapping["\n"] = [$this, '_bindNewline']; + $this->_mapping["\t"] = [$this, '_bindTab']; + + return; + } + + /** + * Read a line from the input. + */ + public function readLine(string $prefix = null) + { + $input = Console::getInput(); + + if (true === $input->eof()) { + return false; + } + + $direct = Console::isDirect($input->getStream()->getStream()); + $output = Console::getOutput(); + + if (false === $direct || \defined('PHP_WINDOWS_VERSION_PLATFORM')) { + $out = $input->readLine(); + + if (false === $out) { + return false; + } + + $out = \substr($out, 0, -1); + + if (true === $direct) { + $output->writeAll($prefix); + } else { + $output->writeAll($prefix.$out."\n"); + } + + return $out; + } + + $this->resetLine(); + $this->setPrefix($prefix); + $read = [$input->getStream()->getStream()]; + $write = $except = []; + $output->writeAll($prefix); + + while (true) { + @\stream_select($read, $write, $except, 30, 0); + + if (empty($read)) { + $read = [$input->getStream()->getStream()]; + + continue; + } + + $char = $this->_read(); + $this->_buffer = $char; + $return = $this->_readLine($char); + + if (0 === ($return & self::STATE_NO_ECHO)) { + $output->writeAll($this->_buffer); + } + + if (0 !== ($return & self::STATE_BREAK)) { + break; + } + } + + return $this->getLine(); + } + + /** + * Readline core. + */ + public function _readLine(string $char) + { + if (isset($this->_mapping[$char]) && + \is_callable($this->_mapping[$char])) { + $mapping = $this->_mapping[$char]; + + return $mapping($this); + } + + if (isset($this->_mapping[$char])) { + $this->_buffer = $this->_mapping[$char]; + } elseif (false === Ustring::isCharPrintable($char)) { + ConsoleCursor::bip(); + + return static::STATE_CONTINUE | static::STATE_NO_ECHO; + } + + if ($this->getLineLength() === $this->getLineCurrent()) { + $this->appendLine($this->_buffer); + + return static::STATE_CONTINUE; + } + + $this->insertLine($this->_buffer); + $tail = \mb_substr( + $this->getLine(), + $this->getLineCurrent() - 1 + ); + $this->_buffer = "\033[K".$tail.\str_repeat( + "\033[D", + \mb_strlen($tail) - 1 + ); + + return static::STATE_CONTINUE; + } + + /** + * Add mappings. + */ + public function addMappings(array $mappings) + { + foreach ($mappings as $key => $mapping) { + $this->addMapping($key, $mapping); + } + } + + /** + * Add a mapping. + * Supported key: + * • \e[… for \033[…; + * • \C-… for Ctrl-…; + * • abc for a simple mapping. + * A mapping is a callable that has only one parameter of type + * Hoa\Console\Readline and that returns a self::STATE_* constant. + */ + public function addMapping(string $key, $mapping) + { + if ('\e[' === \substr($key, 0, 3)) { + $this->_mapping["\033[".\substr($key, 3)] = $mapping; + } elseif ('\C-' === \substr($key, 0, 3)) { + $_key = \ord(\strtolower(\substr($key, 3))) - 96; + $this->_mapping[\chr($_key)] = $mapping; + } else { + $this->_mapping[$key] = $mapping; + } + } + + /** + * Add an entry in the history. + */ + public function addHistory(string $line = null) + { + if (empty($line)) { + return; + } + + $this->_history[] = $line; + $this->_historyCurrent = $this->_historySize++; + } + + /** + * Clear history. + */ + public function clearHistory() + { + unset($this->_history); + $this->_history = []; + $this->_historyCurrent = 0; + $this->_historySize = 1; + } + + /** + * Get an entry in the history. + */ + public function getHistory(int $i = null) + { + if (null === $i) { + $i = $this->_historyCurrent; + } + + if (!isset($this->_history[$i])) { + return null; + } + + return $this->_history[$i]; + } + + /** + * Go backward in the history. + */ + public function previousHistory() + { + if (0 >= $this->_historyCurrent) { + return $this->getHistory(0); + } + + return $this->getHistory($this->_historyCurrent--); + } + + /** + * Go forward in the history. + */ + public function nextHistory() + { + if ($this->_historyCurrent + 1 >= $this->_historySize) { + return $this->getLine(); + } + + return $this->getHistory(++$this->_historyCurrent); + } + + /** + * Get current line. + */ + public function getLine() + { + return $this->_line; + } + + /** + * Append to current line. + */ + public function appendLine(string $append) + { + $this->_line .= $append; + $this->_lineLength = \mb_strlen($this->_line); + $this->_lineCurrent = $this->_lineLength; + } + + /** + * Insert into current line at the current seek. + */ + public function insertLine(string $insert) + { + if ($this->_lineLength === $this->_lineCurrent) { + return $this->appendLine($insert); + } + + $this->_line = \mb_substr($this->_line, 0, $this->_lineCurrent). + $insert. + \mb_substr($this->_line, $this->_lineCurrent); + $this->_lineLength = \mb_strlen($this->_line); + $this->_lineCurrent += \mb_strlen($insert); + + return; + } + + /** + * Reset current line. + */ + protected function resetLine() + { + $this->_line = null; + $this->_lineCurrent = 0; + $this->_lineLength = 0; + } + + /** + * Get current line seek. + */ + public function getLineCurrent(): int + { + return $this->_lineCurrent; + } + + /** + * Get current line length. + * + * @return int + */ + public function getLineLength(): int + { + return $this->_lineLength; + } + + /** + * Set prefix. + */ + public function setPrefix(string $prefix) + { + $this->_prefix = $prefix; + } + + /** + * Get prefix. + */ + public function getPrefix() + { + return $this->_prefix; + } + + /** + * Get buffer. Not for user. + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Set an autocompleter. + */ + public function setAutocompleter(Autocompleter $autocompleter) + { + $old = $this->_autocompleter; + $this->_autocompleter = $autocompleter; + + return $old; + } + + /** + * Get the autocompleter. + * + * @return ?Autocompleter + */ + public function getAutocompleter() + { + return $this->_autocompleter; + } + + /** + * Read on input. Not for user. + */ + public function _read(int $length = 512): string + { + return Console::getInput()->read($length); + } + + /** + * Set current line. Not for user. + */ + public function setLine(string $line) + { + $this->_line = $line; + $this->_lineLength = \mb_strlen($this->_line ?: ''); + $this->_lineCurrent = $this->_lineLength; + } + + /** + * Set current line seek. Not for user. + */ + public function setLineCurrent(int $current) + { + $this->_lineCurrent = $current; + } + + /** + * Set line length. Not for user. + */ + public function setLineLength(int $length) + { + $this->_lineLength = $length; + } + + /** + * Set buffer. Not for user. + */ + public function setBuffer(string $buffer) + { + $this->_buffer = $buffer; + } + + /** + * Up arrow binding. + * Go backward in the history. + */ + public function _bindArrowUp(self $self): int + { + if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { + ConsoleCursor::clear('↔'); + Console::getOutput()->writeAll($self->getPrefix()); + } + $buffer = $self->previousHistory() ?? ''; + $self->setBuffer($buffer); + $self->setLine($buffer); + + return static::STATE_CONTINUE; + } + + /** + * Down arrow binding. + * Go forward in the history. + */ + public function _bindArrowDown(self $self): int + { + if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { + ConsoleCursor::clear('↔'); + Console::getOutput()->writeAll($self->getPrefix()); + } + + $self->setBuffer($buffer = $self->nextHistory()); + $self->setLine($buffer); + + return static::STATE_CONTINUE; + } + + /** + * Right arrow binding. + * Move cursor to the right. + */ + public function _bindArrowRight(self $self): int + { + if ($self->getLineLength() > $self->getLineCurrent()) { + if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { + ConsoleCursor::move('→'); + } + + $self->setLineCurrent($self->getLineCurrent() + 1); + } + + $self->setBuffer(''); + + return static::STATE_CONTINUE; + } + + /** + * Left arrow binding. + * Move cursor to the left. + */ + public function _bindArrowLeft(self $self): int + { + if (0 < $self->getLineCurrent()) { + if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { + ConsoleCursor::move('←'); + } + + $self->setLineCurrent($self->getLineCurrent() - 1); + } + + $self->setBuffer(''); + + return static::STATE_CONTINUE; + } + + /** + * Backspace and Control-H binding. + * Delete the first character at the right of the cursor. + */ + public function _bindBackspace(self $self): int + { + $buffer = ''; + + if (0 < $self->getLineCurrent()) { + if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) { + ConsoleCursor::move('←'); + ConsoleCursor::clear('→'); + } + + if ($self->getLineLength() === $current = $self->getLineCurrent()) { + $self->setLine(\mb_substr($self->getLine(), 0, -1)); + } else { + $line = $self->getLine(); + $current = $self->getLineCurrent(); + $tail = \mb_substr($line, $current); + $buffer = $tail.\str_repeat("\033[D", \mb_strlen($tail)); + $self->setLine(\mb_substr($line, 0, $current - 1).$tail); + $self->setLineCurrent($current - 1); + } + } + + $self->setBuffer($buffer); + + return static::STATE_CONTINUE; + } + + /** + * Control-A binding. + * Move cursor to beginning of line. + */ + public function _bindControlA(self $self): int + { + for ($i = $self->getLineCurrent() - 1; 0 <= $i; --$i) { + $self->_bindArrowLeft($self); + } + + return static::STATE_CONTINUE; + } + + /** + * Control-B binding. + * Move cursor backward one word. + */ + public function _bindControlB(self $self): int + { + $current = $self->getLineCurrent(); + + if (0 === $current) { + return static::STATE_CONTINUE; + } + + $words = \preg_split( + '#\b#u', + $self->getLine(), + -1, + \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY + ); + + for ( + $i = 0, $max = \count($words) - 1; + $i < $max && $words[$i + 1][1] < $current; + ++$i + ) { + } + + for ($j = $words[$i][1] + 1; $current >= $j; ++$j) { + $self->_bindArrowLeft($self); + } + + return static::STATE_CONTINUE; + } + + /** + * Control-E binding. + * Move cursor to end of line. + */ + public function _bindControlE(self $self): int + { + for ( + $i = $self->getLineCurrent(), $max = $self->getLineLength(); + $i < $max; + ++$i + ) { + $self->_bindArrowRight($self); + } + + return static::STATE_CONTINUE; + } + + /** + * Control-F binding. + * Move cursor forward one word. + */ + public function _bindControlF(self $self): int + { + $current = $self->getLineCurrent(); + + if ($self->getLineLength() === $current) { + return static::STATE_CONTINUE; + } + + $words = \preg_split( + '#\b#u', + $self->getLine(), + -1, + \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY + ); + + for ( + $i = 0, $max = \count($words) - 1; + $i < $max && $words[$i][1] < $current; + ++$i + ) { + } + + if (!isset($words[$i + 1])) { + $words[$i + 1] = [1 => $self->getLineLength()]; + } + + for ($j = $words[$i + 1][1]; $j > $current; --$j) { + $self->_bindArrowRight($self); + } + + return static::STATE_CONTINUE; + } + + /** + * Control-W binding. + * Delete first backward word. + */ + public function _bindControlW(self $self): int + { + $current = $self->getLineCurrent(); + + if (0 === $current) { + return static::STATE_CONTINUE; + } + + $words = \preg_split( + '#\b#u', + $self->getLine(), + -1, + \PREG_SPLIT_OFFSET_CAPTURE | \PREG_SPLIT_NO_EMPTY + ); + + for ( + $i = 0, $max = \count($words) - 1; + $i < $max && $words[$i + 1][1] < $current; + ++$i + ) { + } + + for ($j = $words[$i][1] + 1; $current >= $j; ++$j) { + $self->_bindBackspace($self); + } + + return static::STATE_CONTINUE; + } + + /** + * Newline binding. + */ + public function _bindNewline(self $self): int + { + $self->addHistory($self->getLine()); + + return static::STATE_BREAK; + } + + /** + * Tab binding. + */ + public function _bindTab(self $self): int + { + $output = Console::getOutput(); + $autocompleter = $self->getAutocompleter(); + $state = static::STATE_CONTINUE | static::STATE_NO_ECHO; + + if (null === $autocompleter) { + return $state; + } + + $current = $self->getLineCurrent(); + $line = $self->getLine(); + + if (0 === $current) { + return $state; + } + + $matches = \preg_match_all( + '#'.$autocompleter->getWordDefinition().'$#u', + \mb_substr($line, 0, $current), + $words + ); + + if (0 === $matches) { + return $state; + } + + $word = $words[0][0]; + + if ('' === \trim($word)) { + return $state; + } + + $solution = $autocompleter->complete($word); + $length = \mb_strlen($word); + + if (null === $solution) { + return $state; + } + + if (\is_array($solution)) { + $_solution = $solution; + $count = \count($_solution) - 1; + $cWidth = 0; + $window = ConsoleWindow::getSize(); + $wWidth = $window['x']; + $cursor = ConsoleCursor::getPosition(); + + \array_walk($_solution, function (&$value) use (&$cWidth) { + $handle = \mb_strlen($value); + + if ($handle > $cWidth) { + $cWidth = $handle; + } + + return; + }); + \array_walk($_solution, function (&$value) use (&$cWidth) { + $handle = \mb_strlen($value); + + if ($handle >= $cWidth) { + return; + } + + $value .= \str_repeat(' ', $cWidth - $handle); + + return; + }); + + $mColumns = (int) \floor($wWidth / ($cWidth + 2)); + $mLines = (int) \ceil(($count + 1) / $mColumns); + --$mColumns; + $i = 0; + + if (0 > $window['y'] - $cursor['y'] - $mLines) { + ConsoleWindow::scroll('↑', $mLines); + ConsoleCursor::move('↑', $mLines); + } + + ConsoleCursor::save(); + ConsoleCursor::hide(); + ConsoleCursor::move('↓ LEFT'); + ConsoleCursor::clear('↓'); + + foreach ($_solution as $j => $s) { + $output->writeAll("\033[0m".$s."\033[0m"); + + if ($i++ < $mColumns) { + $output->writeAll(' '); + } else { + $i = 0; + + if (isset($_solution[$j + 1])) { + $output->writeAll("\n"); + } + } + } + + ConsoleCursor::restore(); + ConsoleCursor::show(); + + ++$mColumns; + $input = Console::getInput(); + $read = [$input->getStream()->getStream()]; + $write = $except = []; + $mColumn = -1; + $mLine = -1; + $coord = -1; + $unselect = function () use ( + &$mColumn, + &$mLine, + &$coord, + &$_solution, + &$cWidth, + $output + ) { + ConsoleCursor::save(); + ConsoleCursor::hide(); + ConsoleCursor::move('↓ LEFT'); + ConsoleCursor::move('→', $mColumn * ($cWidth + 2)); + ConsoleCursor::move('↓', $mLine); + $output->writeAll("\033[0m".$_solution[$coord]."\033[0m"); + ConsoleCursor::restore(); + ConsoleCursor::show(); + + return; + }; + $select = function () use ( + &$mColumn, + &$mLine, + &$coord, + &$_solution, + &$cWidth, + $output + ) { + ConsoleCursor::save(); + ConsoleCursor::hide(); + ConsoleCursor::move('↓ LEFT'); + ConsoleCursor::move('→', $mColumn * ($cWidth + 2)); + ConsoleCursor::move('↓', $mLine); + $output->writeAll("\033[7m".$_solution[$coord]."\033[0m"); + ConsoleCursor::restore(); + ConsoleCursor::show(); + + return; + }; + $init = function () use ( + &$mColumn, + &$mLine, + &$coord, + &$select + ) { + $mColumn = 0; + $mLine = 0; + $coord = 0; + $select(); + + return; + }; + + while (true) { + @\stream_select($read, $write, $except, 30, 0); + + if (empty($read)) { + $read = [$input->getStream()->getStream()]; + + continue; + } + + switch ($char = $self->_read()) { + case "\033[A": + if (-1 === $mColumn && -1 === $mLine) { + $init(); + + break; + } + + $unselect(); + $coord = \max(0, $coord - $mColumns); + $mLine = (int) \floor($coord / $mColumns); + $mColumn = $coord % $mColumns; + $select(); + + break; + + case "\033[B": + if (-1 === $mColumn && -1 === $mLine) { + $init(); + + break; + } + + $unselect(); + $coord = \min($count, $coord + $mColumns); + $mLine = (int) \floor($coord / $mColumns); + $mColumn = $coord % $mColumns; + $select(); + + break; + + case "\t": + case "\033[C": + if (-1 === $mColumn && -1 === $mLine) { + $init(); + + break; + } + + $unselect(); + $coord = \min($count, $coord + 1); + $mLine = (int) \floor($coord / $mColumns); + $mColumn = $coord % $mColumns; + $select(); + + break; + + case "\033[D": + if (-1 === $mColumn && -1 === $mLine) { + $init(); + + break; + } + + $unselect(); + $coord = \max(0, $coord - 1); + $mLine = (int) \floor($coord / $mColumns); + $mColumn = $coord % $mColumns; + $select(); + + break; + + case "\n": + if (-1 !== $mColumn && -1 !== $mLine) { + $tail = \mb_substr($line, $current); + $current -= $length; + $self->setLine( + \mb_substr($line, 0, $current). + $solution[$coord]. + $tail + ); + $self->setLineCurrent( + $current + \mb_strlen($solution[$coord]) + ); + + ConsoleCursor::move('←', $length); + $output->writeAll($solution[$coord]); + ConsoleCursor::clear('→'); + $output->writeAll($tail); + ConsoleCursor::move('←', \mb_strlen($tail)); + } + + // no break + default: + $mColumn = -1; + $mLine = -1; + $coord = -1; + ConsoleCursor::save(); + ConsoleCursor::move('↓ LEFT'); + ConsoleCursor::clear('↓'); + ConsoleCursor::restore(); + + if ("\033" !== $char && "\n" !== $char) { + $self->setBuffer($char); + + return $self->_readLine($char); + } + + break 2; + } + } + + return $state; + } + + $tail = \mb_substr($line, $current); + $current -= $length; + $self->setLine( + \mb_substr($line, 0, $current). + $solution. + $tail + ); + $self->setLineCurrent( + $current + \mb_strlen($solution) + ); + + ConsoleCursor::move('←', $length); + $output->writeAll($solution); + ConsoleCursor::clear('→'); + $output->writeAll($tail); + ConsoleCursor::move('←', \mb_strlen($tail)); + + return $state; + } +} + +/* + * Advanced interaction. + */ +Console::advancedInteraction(); diff --git a/vendor/psy/psysh/src/Readline/Hoa/Stream.php b/vendor/psy/psysh/src/Readline/Hoa/Stream.php new file mode 100644 index 000000000..62e56ce3f --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Stream.php @@ -0,0 +1,571 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Stream. + * + * Static register for all streams (files, sockets etc.). + */ +abstract class Stream implements IStream, EventListenable +{ + use EventListens; + + /** + * Name index in the stream bucket. + */ + const NAME = 0; + + /** + * Handler index in the stream bucket. + */ + const HANDLER = 1; + + /** + * Resource index in the stream bucket. + */ + const RESOURCE = 2; + + /** + * Context index in the stream bucket. + */ + const CONTEXT = 3; + + /** + * Default buffer size. + */ + const DEFAULT_BUFFER_SIZE = 8192; + + /** + * Current stream bucket. + */ + protected $_bucket = []; + + /** + * Static stream register. + */ + private static $_register = []; + + /** + * Buffer size (default is 8Ko). + */ + protected $_bufferSize = self::DEFAULT_BUFFER_SIZE; + + /** + * Original stream name, given to the stream constructor. + */ + protected $_streamName = null; + + /** + * Context name. + */ + protected $_context = null; + + /** + * Whether the opening has been deferred. + */ + protected $_hasBeenDeferred = false; + + /** + * Whether this stream is already opened by another handler. + */ + protected $_borrowing = false; + + /** + * Set the current stream. + * If not exists in the register, try to call the + * `$this->_open()` method. Please, see the `self::_getStream()` method. + */ + public function __construct(string $streamName, string $context = null, bool $wait = false) + { + $this->_streamName = $streamName; + $this->_context = $context; + $this->_hasBeenDeferred = $wait; + $this->setListener( + new EventListener( + $this, + [ + 'authrequire', + 'authresult', + 'complete', + 'connect', + 'failure', + 'mimetype', + 'progress', + 'redirect', + 'resolve', + 'size', + ] + ) + ); + + if (true === $wait) { + return; + } + + $this->open(); + + return; + } + + /** + * Get a stream in the register. + * If the stream does not exist, try to open it by calling the + * $handler->_open() method. + */ + private static function &_getStream( + string $streamName, + self $handler, + string $context = null + ): array { + $name = \md5($streamName); + + if (null !== $context) { + if (false === StreamContext::contextExists($context)) { + throw new StreamException('Context %s was not previously declared, cannot retrieve '.'this context.', 0, $context); + } + + $context = StreamContext::getInstance($context); + } + + if (!isset(self::$_register[$name])) { + self::$_register[$name] = [ + self::NAME => $streamName, + self::HANDLER => $handler, + self::RESOURCE => $handler->_open($streamName, $context), + self::CONTEXT => $context, + ]; + Event::register( + 'hoa://Event/Stream/'.$streamName, + $handler + ); + // Add :open-ready? + Event::register( + 'hoa://Event/Stream/'.$streamName.':close-before', + $handler + ); + } else { + $handler->_borrowing = true; + } + + if (null === self::$_register[$name][self::RESOURCE]) { + self::$_register[$name][self::RESOURCE] + = $handler->_open($streamName, $context); + } + + return self::$_register[$name]; + } + + /** + * Open the stream and return the associated resource. + * Note: This method is protected, but do not forget that it could be + * overloaded into a public context. + */ + abstract protected function &_open(string $streamName, StreamContext $context = null); + + /** + * Close the current stream. + * Note: this method is protected, but do not forget that it could be + * overloaded into a public context. + */ + abstract protected function _close(): bool; + + /** + * Open the stream. + */ + final public function open(): self + { + $context = $this->_context; + + if (true === $this->hasBeenDeferred()) { + if (null === $context) { + $handle = StreamContext::getInstance(\uniqid()); + $handle->setParameters([ + 'notification' => [$this, '_notify'], + ]); + $context = $handle->getId(); + } elseif (true === StreamContext::contextExists($context)) { + $handle = StreamContext::getInstance($context); + $parameters = $handle->getParameters(); + + if (!isset($parameters['notification'])) { + $handle->setParameters([ + 'notification' => [$this, '_notify'], + ]); + } + } + } + + $this->_bufferSize = self::DEFAULT_BUFFER_SIZE; + $this->_bucket = self::_getStream( + $this->_streamName, + $this, + $context + ); + + return $this; + } + + /** + * Close the current stream. + */ + final public function close() + { + $streamName = $this->getStreamName(); + + if (null === $streamName) { + return; + } + + $name = \md5($streamName); + + if (!isset(self::$_register[$name])) { + return; + } + + Event::notify( + 'hoa://Event/Stream/'.$streamName.':close-before', + $this, + new EventBucket() + ); + + if (false === $this->_close()) { + return; + } + + unset(self::$_register[$name]); + $this->_bucket[self::HANDLER] = null; + Event::unregister( + 'hoa://Event/Stream/'.$streamName + ); + Event::unregister( + 'hoa://Event/Stream/'.$streamName.':close-before' + ); + + return; + } + + /** + * Get the current stream name. + */ + public function getStreamName() + { + if (empty($this->_bucket)) { + return null; + } + + return $this->_bucket[self::NAME]; + } + + /** + * Get the current stream. + */ + public function getStream() + { + if (empty($this->_bucket)) { + return null; + } + + return $this->_bucket[self::RESOURCE]; + } + + /** + * Get the current stream context. + */ + public function getStreamContext() + { + if (empty($this->_bucket)) { + return null; + } + + return $this->_bucket[self::CONTEXT]; + } + + /** + * Get stream handler according to its name. + */ + public static function getStreamHandler(string $streamName) + { + $name = \md5($streamName); + + if (!isset(self::$_register[$name])) { + return null; + } + + return self::$_register[$name][self::HANDLER]; + } + + /** + * Set the current stream. Useful to manage a stack of streams (e.g. socket + * and select). Notice that it could be unsafe to use this method without + * taking time to think about it two minutes. Resource of type “Unknown” is + * considered as valid. + */ + public function _setStream($stream) + { + if (false === \is_resource($stream) && + ('resource' !== \gettype($stream) || + 'Unknown' !== \get_resource_type($stream))) { + throw new StreamException('Try to change the stream resource with an invalid one; '.'given %s.', 1, \gettype($stream)); + } + + $old = $this->_bucket[self::RESOURCE]; + $this->_bucket[self::RESOURCE] = $stream; + + return $old; + } + + /** + * Check if the stream is opened. + */ + public function isOpened(): bool + { + return \is_resource($this->getStream()); + } + + /** + * Set the timeout period. + */ + public function setStreamTimeout(int $seconds, int $microseconds = 0): bool + { + return \stream_set_timeout($this->getStream(), $seconds, $microseconds); + } + + /** + * Whether the opening of the stream has been deferred. + */ + protected function hasBeenDeferred() + { + return $this->_hasBeenDeferred; + } + + /** + * Check whether the connection has timed out or not. + * This is basically a shortcut of `getStreamMetaData` + the `timed_out` + * index, but the resulting code is more readable. + */ + public function hasTimedOut(): bool + { + $metaData = $this->getStreamMetaData(); + + return true === $metaData['timed_out']; + } + + /** + * Set blocking/non-blocking mode. + */ + public function setStreamBlocking(bool $mode): bool + { + return \stream_set_blocking($this->getStream(), $mode); + } + + /** + * Set stream buffer. + * Output using fwrite() (or similar function) is normally buffered at 8 Ko. + * This means that if there are two processes wanting to write to the same + * output stream, each is paused after 8 Ko of data to allow the other to + * write. + */ + public function setStreamBuffer(int $buffer): bool + { + // Zero means success. + $out = 0 === \stream_set_write_buffer($this->getStream(), $buffer); + + if (true === $out) { + $this->_bufferSize = $buffer; + } + + return $out; + } + + /** + * Disable stream buffering. + * Alias of $this->setBuffer(0). + */ + public function disableStreamBuffer(): bool + { + return $this->setStreamBuffer(0); + } + + /** + * Get stream buffer size. + */ + public function getStreamBufferSize(): int + { + return $this->_bufferSize; + } + + /** + * Get stream wrapper name. + */ + public function getStreamWrapperName(): string + { + if (false === $pos = \strpos($this->getStreamName(), '://')) { + return 'file'; + } + + return \substr($this->getStreamName(), 0, $pos); + } + + /** + * Get stream meta data. + */ + public function getStreamMetaData(): array + { + return \stream_get_meta_data($this->getStream()); + } + + /** + * Whether this stream is already opened by another handler. + */ + public function isBorrowing(): bool + { + return $this->_borrowing; + } + + /** + * Notification callback. + */ + public function _notify( + int $ncode, + int $severity, + $message, + $code, + $transferred, + $max + ) { + static $_map = [ + \STREAM_NOTIFY_AUTH_REQUIRED => 'authrequire', + \STREAM_NOTIFY_AUTH_RESULT => 'authresult', + \STREAM_NOTIFY_COMPLETED => 'complete', + \STREAM_NOTIFY_CONNECT => 'connect', + \STREAM_NOTIFY_FAILURE => 'failure', + \STREAM_NOTIFY_MIME_TYPE_IS => 'mimetype', + \STREAM_NOTIFY_PROGRESS => 'progress', + \STREAM_NOTIFY_REDIRECTED => 'redirect', + \STREAM_NOTIFY_RESOLVE => 'resolve', + \STREAM_NOTIFY_FILE_SIZE_IS => 'size', + ]; + + $this->getListener()->fire($_map[$ncode], new EventBucket([ + 'code' => $code, + 'severity' => $severity, + 'message' => $message, + 'transferred' => $transferred, + 'max' => $max, + ])); + } + + /** + * Call the $handler->close() method on each stream in the static stream + * register. + * This method does not check the return value of $handler->close(). Thus, + * if a stream is persistent, the $handler->close() should do anything. It + * is a very generic method. + */ + final public static function _Hoa_Stream() + { + foreach (self::$_register as $entry) { + $entry[self::HANDLER]->close(); + } + + return; + } + + /** + * Transform object to string. + */ + public function __toString(): string + { + return $this->getStreamName(); + } + + /** + * Close the stream when destructing. + */ + public function __destruct() + { + if (false === $this->isOpened()) { + return; + } + + $this->close(); + + return; + } +} + +/** + * Class \Hoa\Stream\_Protocol. + * + * The `hoa://Library/Stream` node. + * + * @license New BSD License + */ +class _Protocol extends ProtocolNode +{ + /** + * Component's name. + * + * @var string + */ + protected $_name = 'Stream'; + + /** + * ID of the component. + * + * @param string $id ID of the component + * + * @return mixed + */ + public function reachId(string $id) + { + return Stream::getStreamHandler($id); + } +} + +/* + * Shutdown method. + */ +\register_shutdown_function([Stream::class, '_Hoa_Stream']); + +/** + * Add the `hoa://Library/Stream` node. Should be use to reach/get an entry + * in the stream register. + */ +$protocol = Protocol::getInstance(); +$protocol['Library'][] = new _Protocol(); diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php new file mode 100644 index 000000000..e431021a8 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamBufferable.php @@ -0,0 +1,73 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Bufferable. + * + * Interface for bufferable streams. It's complementary to native buffer support + * of Hoa\Stream (please, see *StreamBuffer*() methods). Classes implementing + * this interface are able to create nested buffers, flush them etc. + */ +interface StreamBufferable extends IStream +{ + /** + * Start a new buffer. + * The callable acts like a light filter. + */ + public function newBuffer($callable = null, int $size = null): int; + + /** + * Flush the buffer. + */ + public function flush(); + + /** + * Delete buffer. + */ + public function deleteBuffer(): bool; + + /** + * Get bufffer level. + */ + public function getBufferLevel(): int; + + /** + * Get buffer size. + */ + public function getBufferSize(): int; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamContext.php b/vendor/psy/psysh/src/Readline/Hoa/StreamContext.php new file mode 100644 index 000000000..f7ec2f1dd --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamContext.php @@ -0,0 +1,141 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Stream\Context. + * + * Make a multiton of stream contexts. + */ +class StreamContext +{ + /** + * Context ID. + */ + protected $_id = null; + + /** + * @var resource + */ + protected $_context; + + /** + * Multiton. + */ + protected static $_instances = []; + + /** + * Construct a context. + */ + protected function __construct($id) + { + $this->_id = $id; + $this->_context = \stream_context_create(); + + return; + } + + /** + * Multiton. + */ + public static function getInstance(string $id): self + { + if (false === static::contextExists($id)) { + static::$_instances[$id] = new self($id); + } + + return static::$_instances[$id]; + } + + /** + * Get context ID. + */ + public function getId(): string + { + return $this->_id; + } + + /** + * Check if a context exists. + */ + public static function contextExists(string $id): bool + { + return \array_key_exists($id, static::$_instances); + } + + /** + * Set options. + * Please, see http://php.net/context. + */ + public function setOptions(array $options): bool + { + return \stream_context_set_option($this->getContext(), $options); + } + + /** + * Set parameters. + * Please, see http://php.net/context.params. + */ + public function setParameters(array $parameters): bool + { + return \stream_context_set_params($this->getContext(), $parameters); + } + + /** + * Get options. + */ + public function getOptions(): array + { + return \stream_context_get_options($this->getContext()); + } + + /** + * Get parameters. + */ + public function getParameters(): array + { + return \stream_context_get_params($this->getContext()); + } + + /** + * Get context as a resource. + */ + public function getContext() + { + return $this->_context; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamException.php b/vendor/psy/psysh/src/Readline/Hoa/StreamException.php new file mode 100644 index 000000000..21da03cfb --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamException.php @@ -0,0 +1,46 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Class \Hoa\Stream\Exception. + * + * Extending the \Hoa\Exception\Exception class. + */ +class StreamException extends Exception +{ +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamIn.php b/vendor/psy/psysh/src/Readline/Hoa/StreamIn.php new file mode 100644 index 000000000..1ced9135b --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamIn.php @@ -0,0 +1,102 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\In. + * + * Interface for input. + */ +interface StreamIn extends IStream +{ + /** + * Test for end-of-stream. + */ + public function eof(): bool; + + /** + * Read n characters. + */ + public function read(int $length); + + /** + * Alias of $this->read(). + */ + public function readString(int $length); + + /** + * Read a character. + * It could be equivalent to $this->read(1). + */ + public function readCharacter(); + + /** + * Read a boolean. + */ + public function readBoolean(); + + /** + * Read an integer. + */ + public function readInteger(int $length = 1); + + /** + * Read a float. + */ + public function readFloat(int $length = 1); + + /** + * Read an array. + * In most cases, it could be an alias to the $this->scanf() method. + */ + public function readArray(); + + /** + * Read a line. + */ + public function readLine(); + + /** + * Read all, i.e. read as much as possible. + */ + public function readAll(int $offset = 0); + + /** + * Parse input from a stream according to a format. + */ + public function scanf(string $format): array; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamLockable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamLockable.php new file mode 100644 index 000000000..c19c4dba0 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamLockable.php @@ -0,0 +1,85 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Lockable. + * + * Interface for lockable input/output. + * + * @license New BSD License + */ +interface StreamLockable extends IStream +{ + /** + * Acquire a shared lock (reader). + * + * @const int + */ + const LOCK_SHARED = \LOCK_SH; + + /** + * Acquire an exclusive lock (writer). + * + * @const int + */ + const LOCK_EXCLUSIVE = \LOCK_EX; + + /** + * Release a lock (shared or exclusive). + * + * @const int + */ + const LOCK_RELEASE = \LOCK_UN; + + /** + * If we do not want $this->lock() to block while locking. + * + * @const int + */ + const LOCK_NO_BLOCK = \LOCK_NB; + + /** + * Portable advisory locking. + * Should take a look at stream_supports_lock(). + * + * @param int $operation operation, use the self::LOCK_* constants + * + * @return bool + */ + public function lock(int $operation): bool; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamOut.php b/vendor/psy/psysh/src/Readline/Hoa/StreamOut.php new file mode 100644 index 000000000..e4bb925e1 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamOut.php @@ -0,0 +1,95 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Out. + * + * Interface for output. + */ +interface StreamOut extends IStream +{ + /** + * Write n characters. + */ + public function write(string $string, int $length); + + /** + * Write a string. + */ + public function writeString(string $string); + + /** + * Write a character. + */ + public function writeCharacter(string $character); + + /** + * Write a boolean. + */ + public function writeBoolean(bool $boolean); + + /** + * Write an integer. + */ + public function writeInteger(int $integer); + + /** + * Write a float. + */ + public function writeFloat(float $float); + + /** + * Write an array. + */ + public function writeArray(array $array); + + /** + * Write a line. + */ + public function writeLine(string $line); + + /** + * Write all, i.e. as much as possible. + */ + public function writeAll(string $string); + + /** + * Truncate a stream to a given length. + */ + public function truncate(int $size): bool; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamPathable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamPathable.php new file mode 100644 index 000000000..558684aed --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamPathable.php @@ -0,0 +1,55 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Pathable. + * + * Interface for pathable input/output. + */ +interface StreamPathable extends IStream +{ + /** + * Get filename component of path. + */ + public function getBasename(): string; + + /** + * Get directory name component of path. + */ + public function getDirname(): string; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamPointable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamPointable.php new file mode 100644 index 000000000..4030acbd3 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamPointable.php @@ -0,0 +1,75 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Pointable. + * + * Interface for pointable input/output. + */ +interface StreamPointable extends IStream +{ + /** + * Set position equal to $offset bytes. + */ + const SEEK_SET = \SEEK_SET; + + /** + * Set position to current location plus $offset. + */ + const SEEK_CURRENT = \SEEK_CUR; + + /** + * Set position to end-of-file plus $offset. + */ + const SEEK_END = \SEEK_END; + + /** + * Rewind the position of a stream pointer. + */ + public function rewind(): bool; + + /** + * Seek on a stream pointer. + */ + public function seek(int $offset, int $whence = self::SEEK_SET): int; + + /** + * Get the current position of the stream pointer. + */ + public function tell(): int; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamStatable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamStatable.php new file mode 100644 index 000000000..9b83696db --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamStatable.php @@ -0,0 +1,115 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Statable. + * + * Interface for statable input/output. + */ +interface StreamStatable extends IStream +{ + /** + * Size is undefined. + */ + const SIZE_UNDEFINED = -1; + + /** + * Get size. + */ + public function getSize(): int; + + /** + * Get informations about a file. + */ + public function getStatistic(): array; + + /** + * Get last access time of file. + */ + public function getATime(): int; + + /** + * Get inode change time of file. + */ + public function getCTime(): int; + + /** + * Get file modification time. + */ + public function getMTime(): int; + + /** + * Get file group. + */ + public function getGroup(): int; + + /** + * Get file owner. + */ + public function getOwner(): int; + + /** + * Get file permissions. + */ + public function getPermissions(): int; + + /** + * Check if the file is readable. + */ + public function isReadable(): bool; + + /** + * Check if the file is writable. + */ + public function isWritable(): bool; + + /** + * Check if the file is executable. + */ + public function isExecutable(): bool; + + /** + * Clear file status cache. + */ + public function clearStatisticCache(); + + /** + * Clear all files status cache. + */ + public static function clearAllStatisticCaches(); +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/StreamTouchable.php b/vendor/psy/psysh/src/Readline/Hoa/StreamTouchable.php new file mode 100644 index 000000000..08b75255f --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/StreamTouchable.php @@ -0,0 +1,110 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Interface \Hoa\Stream\IStream\Touchable. + * + * Interface for touchable input/output. + */ +interface StreamTouchable extends IStream +{ + /** + * Overwrite file if already exists. + */ + const OVERWRITE = true; + + /** + * Do not overwrite file if already exists. + */ + const DO_NOT_OVERWRITE = false; + + /** + * Make directory if does not exist. + */ + const MAKE_DIRECTORY = true; + + /** + * Do not make directory if does not exist. + */ + const DO_NOT_MAKE_DIRECTORY = false; + + /** + * Set access and modification time of file. + */ + public function touch(int $time = -1, int $atime = -1): bool; + + /** + * Copy file. + * Return the destination file path if succeed, false otherwise. + */ + public function copy(string $to, bool $force = self::DO_NOT_OVERWRITE): bool; + + /** + * Move a file. + */ + public function move( + string $name, + bool $force = self::DO_NOT_OVERWRITE, + bool $mkdir = self::DO_NOT_MAKE_DIRECTORY + ): bool; + + /** + * Delete a file. + */ + public function delete(): bool; + + /** + * Change file group. + */ + public function changeGroup($group): bool; + + /** + * Change file mode. + */ + public function changeMode(int $mode): bool; + + /** + * Change file owner. + */ + public function changeOwner($user): bool; + + /** + * Change the current umask. + */ + public static function umask(int $umask = null): int; +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Terminfo/77/windows-ansi b/vendor/psy/psysh/src/Readline/Hoa/Terminfo/77/windows-ansi new file mode 100644 index 0000000000000000000000000000000000000000..50864235f466bd89a7022f880fb565e26ca7e298 GIT binary patch literal 1481 zcmds%O=uHQ5Xa}O#Rf~ELJzHx(#vYJjb@Y07po@KfK^in+CyoOnr4e#ZPJ)TTWwSD z<k5qOg7x4*!GmB?FJAm;y?GVXf*uq+`gzcc@jv^K&A|$u1Q-4@zc({)-rM(*-6VXp zg*vDvQc|v1G3MFqEam;xiE^PgKV2y0s>b-#MDL7Ioy2%*x=bX<eS|Y`yqyvm@=zDm zfAe@KN$XJ7LhF(DP&;*^ax-`<#b_6N(wvuq9fZ=9F~`F+N@FH*QypYbkt#Gx=jnnS zzetxF70%LE5V_VAz23x5jq7jFP2_LeHFs>k^v5~%`UB)2(lR}#7xacc&?ovql4ui7 z-%imjdK#m8JqX?nCB$Xet4$ea2Kz<CSJ%ij*Zp7o_AlS~z4$1;iB_pi`giBhDfQT^ z`=ov;AgOEYB_{2WyxCD|#joC*4IYOX^kxsj9fH`)hFnr)eZPyETnftiAOd?K_9<u| zGyr9wAxKdQuwgbP#h9WEqcWMDN4O%u!+>UaW>y-1S$B~%*j=dIn>~Vn*@2fdVaNgA zm>Eer&?x3MW{P{6z&kf#*a3bI)qn{b#F;!71m!uUCi`W5oXf0J(P;w)yl*+dg;gyo zYm7mlYGKHYs=%-njQ|x3qrjMjagHL4x94*`Kz$wk8~t57x&y1nT5?ObzWYB<-aYZ^ z<fEzAg~!Eb(+j1QQ!C|_%2;*z^!+nWW}eR8JNxzAm$`TIFKdenKha_oQur>hV_lQ= z!@x)pCLw3FfD#O;;Yc(VKbl8~6^d(WoDV-_9to4`kPpYY4cZR%LG~T<rCDEFf$u2O HzzF>Ui1R$S literal 0 HcmV?d00001 diff --git a/vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm b/vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm new file mode 100644 index 0000000000000000000000000000000000000000..fec988defd5735515fd25e59255bdc6cb14f33c8 GIT binary patch literal 3258 zcmcguYlu}<6khx8GiimDl~mryu{vr(Hs^gW$GZ8RN$1XObaL`WIXUAv&Yedy<9kNJ zis(TQ21Vr$6U2}(2rH3(Sb>m8P!I(@{E_%W=mjA`ar@R@``$q+5Q;9dzi;jJt-aPh zd+&2*&s0q`hpwi5s?xB1tY>6k++ZV{eS=+<#-4#Km9DX&k;ZwQjcfY`yN9+luHG>^ z)-!MikurZwFbuL$`(rQc5>2HWsrom+sdO&_9J&k<H_<Ja$9!6V$UNOgtEfb4VLwP4 zftzWNw$r%D@;E(7&(I6Tewkhe@27)wnBJyi^Z|X0{%QJ*zNBwWM78>p<&3IUFGJ(s zRPZ!wSF6+243$;0)NN|6x>E%zuL^3JYJpxvYgcR4Lu$S1g*~W7)Xw@i$yLKW>N%sl zr1q(U>WF$@olu{s&(+uJtR3-#`bAxU{ky6f&-BdonOT`zGq-2vW_Dz%)p4}R-|l*E z53Ki0?|9}!-8&h{*2&DNe^4%tySVqM8S_Pb<Tsh`Gv`h37vOK!PkM6H6g^E}r)TQf zdY-;ZC%T|l=r+ApKcai}klv~%^ppBIy;r}c59q`C9erGXq)+M3^jG?fKBs@w7j#um zajtf5aArAkodr(hEOeGQE1lI&+1cRqJEP7n=LzRo=SAlgXR_+0So@qq&Rfn==U9E* zhtAZ7OBwm^V~Vy;d&5KjOT~>1eGS?2I+{Y$C|h>>++ok{PTgVO?H++6=mj)q%l>`f zm1xX1YQ>}}1DfdyxSG)lepJD$2*dL$rn?E9C1{JpnfeiXN@%T=o!1181^^yI!D|Zh zEQbs^b|rNP*)p^2#K6VevgP`y3Xfv&%?RH_7ottKFZ7z4?z#uLF|llU_Asm<4KX*g zd*E4RrW@?0Y#Va6@x*+Od-tQYqpgO=i{L4HiNTz~Jfq(PY-?tVjioSR_H%d}Ked<o z$jXH0Z<95Ux&?1j_HIac=D<wc82sGk8F?PYXssEX$9V3o89X!NSyeN50>;C&jj^U? zaP2;{kRbwW0RLq<a&X#R?xt+Q``Suw!5z-KW7sXX2dnO;*>V&6Vs|X{+>}ipW+<lT z4hQZy`ib;In30$X%$%EI)0*jWtj981zrL$$<Hp|JzP`<y`}-@Efq}unp`qd7#~vFQ z866!P+p=Zr)@|FiZ{M+F=gwWb#>XcncJunKLn|b_ScL@J+O`~x7b-}3A9%UpVKQ4& zcbff?UQ~DTQu)09Wk0lodGRqACx8iufJx4Q9hO+mS<ValO_mXFGTI6Gp^Zx;$sI}V zNODIuw>@R4aL#gG7`ct#_bdmNLt!tCC3h^jW62%c+~!<*Nh+MPoEJuJ<411cz;Y<; zrGexQBzGXW1Do5d9&!ukEa!!hTUHlI?3xINHZBb%cPP0-lbb&|IEeTnb#p%+1Qf8U zd}_G``83S)+aK`p^W0tDgnPF;7P>vA7nojbd!gxhwilaTAiZvL9LwQ<lEoZB^V;#u z!kUE>I$&-%c^aiRG77f|!gu#7nn5?yZMd;`l%oPIr&d}+WqOqQXqdLqZhDHIr@izl z?WaR@gx)oGlT)~vd_`yI9Q{DQ((k0z6>7S=5qFO{xOs#sRf}=&DB;HOu<Eh52Ck=Z zN4k=(LCu*o3svXQo#azO3u!SmQxTQd(R$pJDl~$7(gf|Hr&0YydYSgo0eTblkJ52E zK_}@neU2G?M`!6g{Y)3=56t0mHBDWsZcsO?*_g+CwLtlbUq`dk_}=oy+w*FVR*=fq zwDy4v<U1J(MMAMqA{59=9STK4u}~ru@C)yyp-?0g3nfgxJ%lnP-@ZcjwAZE-@P`6f zgd(9>C}D~vODtJp$r4MJSh7SC5=lrTA(4bc^+NpdK_Q_?C>BbD_#X#C0-;bS5{iYA zMYO1sI$NoK>5_mUWQZ7Ih6GUL#$u7hB8x>9ix8I;mqGzT0zv~q1VU|YYlRAg3WN%T z3WVCi6<fGs3s-F6iY;7m)$%n^fRKRDfDnODi=C_jp#q@-p#q_n+8=-lgbIWTgbIY( q-oj&nP=Qc^P=Qc8O5708QG(u4g4|Jp+EIeo<x~Ho9vbuwKK%&`scDx0 literal 0 HcmV?d00001 diff --git a/vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm-256color b/vendor/psy/psysh/src/Readline/Hoa/Terminfo/78/xterm-256color new file mode 100644 index 0000000000000000000000000000000000000000..d3be7ef31385b9ca2fc4ec194dbba933ee99a17f GIT binary patch literal 3322 zcmbtWYlu}<6khx8GpUh@m}TC|$vj$;de8gbj&<`rQ_h{6I%(b>>dZKf^K6`a&7)9* z$_jcwQTZbTQ6vh&N~9lFAS4nfL_rUKB>oV32qA%S`_^9P-a%3^y3GE*wb!@S+WYLY z&z?P5*)*NT(H?c6W@~?IU)L-*2%CF4d-?`Vw{}Z=|At!lYK?OfkurZwFbuN6f7KrB zB8{d=RKCoQRQXvVi>^b&t#k)QpGmV3nWKkjDe_jrevH-wH&Qokr9o5WIod@p(yPXP zi{1mjPy6T~eME=pbNUMX6LgZkqn}Jfx%_*=DOE0ChsM9r;IWBaE{|6eRa#9^cc~d_ zmhx0i<<%lp550i4Os!Opt2L?(cDL$N+pBp}tAab!Zlk=Z_Naa8L-m<Ds=ijI)DP-R zlJToLuP(s8sLIAOK6O)SN@{9qT53jWTdG_hL>u`HS9?2PeQJ6~Qb()akw~_VrH)@g zxis$5-Zv)a+iK>Isb5m(Oz%AKuf$J!Bx{r&t0(Bm`c8efo}(k3*GqJxUa6nbZMsKq z)<b%i-mTxz@9Mq!p#E4N(O>H0`lS9|pVnvfZ~B5R>rvJ?>lSN@HN%>11=d_^f%UMp z+$vekR)@988nAX+FIlfyZ(AdyUW>KI+HZYe9kLE1?~DJKdoA^^7E@az>a?2X#JXDa z|JU}`?5jzaR?{dNOX-r`ZudHNOKkVLc1s@|UK^k;U2-1+Ka9qlL@gOHC83V4hpP@P z?*^Ut6k#}Sr|E7$X93zgamH@Io+4TUrSHywgD!x>kaseEj%A-A%dV&jK3is%tB^RK zTe?)u>f|g2*JQXRIv;G9HrL5y<~)Gfm{_`WXD=)-_AxiK2jE$1rt1w;x)C)Sd19`^ zy+_cNp)H5U3E(L?k-@CN9HW~7HrBDl#zGh&`#HRkpW2CCRAs{RH_95wxOrzo`hG}w zX3tFA82sGk8F?PYXs8%m$9NvB7(6rMSz0l80>;B*8)HSq;IZ4$e1-tf4F1=0WZ_KS zatoy+ey<H==k4B{-H*3rw_?@pI9<xHFSPq($Bx-_Vftb^cCTj-q8~}$hZ%?&!OYq* zURoWE!FnvBHEY(cUBAAqt-XEY#*U88&aSTR?w+3B-lw1L>)W)czyFzMHgDdtW$V^$ z+qQ2X7#JKJ8XD&HU5%EHc(L*kUTfoGG+rn#=J&wM4G)ufHC3m1Khg`TPF^aP-+#&V zlVo0eBx46KVG}UPK1kA{gtH0fgxyTSh&L6J3Aug}7Y9;1klKON4wBl*E{lb;3Fm}S z+xT54VJ~4{*oi}_9ZKy`YKKW}voD<}7S1M|6Gm<0M{Qv*VPDvZJ*n+UZBJ@@No})w zs4bjLI46wSvbrdetckFn#KpeU_NBIOYV(nUjffMeh5KPQAdgk$UCYhO#eNPO=?OnJ z`#kPzTX!Gt!vQx4hU}U40KWUokUhtCXS=KB@SePq;$L1#KaOF{*N6S>*aO)id#>H@ znbGW4<8ngd%T@GQc8lHW;l0V6%uX-y=TS}fFO%+MDgh?nzce4)yNf7=YtenQnf9lY zxr-3a?Hg$#-9~re#^X?y^0b&5Xa$vM9ko+0ZJ}X$o?fOm=pA~W_S1*-iMiVx$Ia$@ zI!$NkSNfAKl2+HN@oEz8F4J*y@l~wm<K9xljpa$zn%p|dWg?9`))=~h#?#G|rdqP; z9^AA%jC?=Mr#dQN?A5decdbt9!%b_LcG3&<3cXHm(H`1M2QY&}bcBx5F*-q~Fo&P% z44tDt=mPzXS&UKR)CA1qb~P1usC!igbIB_Hq|I)@na!Ig+4ITv^kO-YD~GHnXRR+3 z2!%qCkS7O&FBAxcLXnWihlUgTLV-{y6fwEUMwThL$!C~+F_kHKeAu9hP#_cvMNFYo z38hLXRYIu}N|iuD0tpEuB#@AxIuIXV7)U4(3WXve{^x@bPskSvghHWc9?e@tOER=5 zL(4PNv2cOM;4=gaAwvWxaAUE+Vu8g1iv@^_3JakCApxNQAp)V+H8wy6LIpwvLIpyt z=Mn39#CjgFo=2?b5tlAr0R;#N2n`4k2(_?^RUlL#R3KC!)Z(&7p#q@-p#q@-p)RZE oTp&~+R3KC!)TSag1T+<)Hx(f_6`?j2A+B|)W1WKrz1gLI0AtO0NdN!< literal 0 HcmV?d00001 diff --git a/vendor/psy/psysh/src/Readline/Hoa/Ustring.php b/vendor/psy/psysh/src/Readline/Hoa/Ustring.php new file mode 100644 index 000000000..8d7312b9b --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Ustring.php @@ -0,0 +1,143 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * This class represents a UTF-8 string. + * Please, see: + * * http://www.ietf.org/rfc/rfc3454.txt, + * * http://unicode.org/reports/tr9/, + * * http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt. + */ +class Ustring +{ + /** + * Check if ext/mbstring is available. + */ + public static function checkMbString(): bool + { + return \function_exists('mb_substr'); + } + + /** + * Get the number of column positions of a wide-character. + * + * This is a PHP implementation of wcwidth() and wcswidth() (defined in IEEE + * Std 1002.1-2001) for Unicode, by Markus Kuhn. Please, see + * http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c. + * + * The wcwidth(wc) function shall either return 0 (if wc is a null + * wide-character code), or return the number of column positions to be + * occupied by the wide-character code wc, or return -1 (if wc does not + * correspond to a printable wide-character code). + */ + public static function getCharWidth(string $char): int + { + $char = (string) $char; + $c = static::toCode($char); + + // Test for 8-bit control characters. + if (0x0 === $c) { + return 0; + } + + if (0x20 > $c || (0x7F <= $c && $c < 0xA0)) { + return -1; + } + + // Non-spacing characters. + if (0xAD !== $c && + 0 !== \preg_match('#^[\p{Mn}\p{Me}\p{Cf}\x{1160}-\x{11ff}\x{200b}]#u', $char)) { + return 0; + } + + // If we arrive here, $c is not a combining C0/C1 control character. + return 1 + + (0x1100 <= $c && + (0x115F >= $c || // Hangul Jamo init. consonants + 0x2329 === $c || 0x232A === $c || + (0x2E80 <= $c && 0xA4CF >= $c && + 0x303F !== $c) || // CJK…Yi + (0xAC00 <= $c && 0xD7A3 >= $c) || // Hangul Syllables + (0xF900 <= $c && 0xFAFF >= $c) || // CJK Compatibility Ideographs + (0xFE10 <= $c && 0xFE19 >= $c) || // Vertical forms + (0xFE30 <= $c && 0xFE6F >= $c) || // CJK Compatibility Forms + (0xFF00 <= $c && 0xFF60 >= $c) || // Fullwidth Forms + (0xFFE0 <= $c && 0xFFE6 >= $c) || + (0x20000 <= $c && 0x2FFFD >= $c) || + (0x30000 <= $c && 0x3FFFD >= $c))); + } + + /** + * Check whether the character is printable or not. + */ + public static function isCharPrintable(string $char): bool + { + return 1 <= static::getCharWidth($char); + } + + /** + * Get a decimal code representation of a specific character. + */ + public static function toCode(string $char): int + { + $char = (string) $char; + $code = \ord($char[0]); + $bytes = 1; + + if (!($code & 0x80)) { // 0xxxxxxx + return $code; + } + + if (($code & 0xE0) === 0xC0) { // 110xxxxx + $bytes = 2; + $code = $code & ~0xC0; + } elseif (($code & 0xF0) === 0xE0) { // 1110xxxx + $bytes = 3; + $code = $code & ~0xE0; + } elseif (($code & 0xF8) === 0xF0) { // 11110xxx + $bytes = 4; + $code = $code & ~0xF0; + } + + for ($i = 2; $i <= $bytes; $i++) { // 10xxxxxx + $code = ($code << 6) + (\ord($char[$i - 1]) & ~0x80); + } + + return $code; + } +} diff --git a/vendor/psy/psysh/src/Readline/Hoa/Xcallable.php b/vendor/psy/psysh/src/Readline/Hoa/Xcallable.php new file mode 100644 index 000000000..e1160a556 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Hoa/Xcallable.php @@ -0,0 +1,256 @@ +<?php + +/** + * Hoa + * + * + * @license + * + * New BSD License + * + * Copyright © 2007-2017, Hoa community. 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 the Hoa nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND 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. + */ + +namespace Psy\Readline\Hoa; + +/** + * Build a callable object, i.e. `function`, `class::method`, `object->method` or + * closure. They all have the same behaviour. This callable is an extension of + * native PHP callable (aka callback) to integrate Hoa's structures. + */ +class Xcallable +{ + /** + * Callback with the PHP format. + */ + protected $_callback = null; + + /** + * Callable hash. + */ + protected $_hash = null; + + /** + * Allocates a xcallable based on a callback. + * + * Accepted forms: + * * `'function'`, + * * `'class::method'`, + * * `'class', 'method'`, + * * `$object, 'method'`, + * * `$object, ''`, + * * `function (…) { … }`, + * * `['class', 'method']`, + * * `[$object, 'method']`. + * + * # Examples + * + * ```php + * $toUpper = new Hoa\Consistency\Xcallable('strtoupper'); + * assert('FOO' === $toUpper('foo')); + * ``` + * + * # Exceptions + * + * A `Hoa\Consistency\Exception` exception is thrown if the callback form + * is invalid. + * + * ```php,must_throw(Hoa\Consistency\Exception) + * new Hoa\Consistency\Xcallable('Foo:'); + * ``` + */ + public function __construct($call, $able = '') + { + if ($call instanceof \Closure) { + $this->_callback = $call; + + return; + } + + if (!\is_string($able)) { + throw new Exception('Bad callback form; the able part must be a string.', 0); + } + + if ('' === $able) { + if (\is_string($call)) { + if (false === \strpos($call, '::')) { + if (!\function_exists($call)) { + throw new Exception('Bad callback form; function %s does not exist.', 1, $call); + } + + $this->_callback = $call; + + return; + } + + list($call, $able) = \explode('::', $call); + } elseif (\is_object($call)) { + if ($call instanceof StreamOut) { + $able = null; + } elseif (\method_exists($call, '__invoke')) { + $able = '__invoke'; + } else { + throw new Exception('Bad callback form; an object but without a known '.'method.', 2); + } + } elseif (\is_array($call) && isset($call[0])) { + if (!isset($call[1])) { + $this->__construct($call[0]); + return; + } + + $this->__construct($call[0], $call[1]); + return; + } else { + throw new Exception('Bad callback form.', 3); + } + } + + $this->_callback = [$call, $able]; + + return; + } + + /** + * Calls the callable. + */ + public function __invoke(...$arguments) + { + $callback = $this->getValidCallback($arguments); + + return $callback(...$arguments); + } + + /** + * Returns a valid PHP callback. + */ + public function getValidCallback(array &$arguments = []) + { + $callback = $this->_callback; + $head = null; + + if (isset($arguments[0])) { + $head = &$arguments[0]; + } + + // If method is undetermined, we find it (we understand event bucket and + // stream). + if (null !== $head && + \is_array($callback) && + null === $callback[1]) { + if ($head instanceof EventBucket) { + $head = $head->getData(); + } + + switch ($type = \gettype($head)) { + case 'string': + if (1 === \strlen($head)) { + $method = 'writeCharacter'; + } else { + $method = 'writeString'; + } + + break; + + case 'boolean': + case 'integer': + case 'array': + $method = 'write'.\ucfirst($type); + + break; + + case 'double': + $method = 'writeFloat'; + + break; + + default: + $method = 'writeAll'; + $head = $head."\n"; + } + + $callback[1] = $method; + } + + return $callback; + } + + /** + * Computes the hash of this callable. + * + * Will produce: + * * `function#…`, + * * `class#…::…`, + * * `object(…)#…::…`, + * * `closure(…)`. + */ + public function getHash(): string + { + if (null !== $this->_hash) { + return $this->_hash; + } + + $_ = &$this->_callback; + + if (\is_string($_)) { + return $this->_hash = 'function#'.$_; + } + + if (\is_array($_)) { + return + $this->_hash = + (\is_object($_[0]) + ? 'object('.\spl_object_hash($_[0]).')'. + '#'.\get_class($_[0]) + : 'class#'.$_[0]). + '::'. + (null !== $_[1] + ? $_[1] + : '???'); + } + + return $this->_hash = 'closure('.\spl_object_hash($_).')'; + } + + /** + * The string representation of a callable is its hash. + */ + public function __toString(): string + { + return $this->getHash(); + } + + /** + * Hoa's xcallable() helper. + */ + public static function from($call, $able = '') + { + if ($call instanceof self) { + return $call; + } + + return new self($call, $able); + } +} diff --git a/vendor/psy/psysh/src/Readline/HoaConsole.php b/vendor/psy/psysh/src/Readline/HoaConsole.php index a49b59285..db0a07d02 100644 --- a/vendor/psy/psysh/src/Readline/HoaConsole.php +++ b/vendor/psy/psysh/src/Readline/HoaConsole.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,97 +11,11 @@ namespace Psy\Readline; -use Hoa\Console\Readline\Readline as HoaReadline; -use Psy\Exception\BreakException; - /** * Hoa\Console Readline implementation. + * + * @deprecated, use Userland readline */ -class HoaConsole implements Readline +class HoaConsole extends Userland { - /** @var HoaReadline */ - private $hoaReadline; - - /** - * @return bool - */ - public static function isSupported() - { - return \class_exists('\Hoa\Console\Console', true); - } - - public function __construct() - { - $this->hoaReadline = new HoaReadline(); - } - - /** - * {@inheritdoc} - */ - public function addHistory($line) - { - $this->hoaReadline->addHistory($line); - - return true; - } - - /** - * {@inheritdoc} - */ - public function clearHistory() - { - $this->hoaReadline->clearHistory(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function listHistory() - { - $i = 0; - $list = []; - while (($item = $this->hoaReadline->getHistory($i++)) !== null) { - $list[] = $item; - } - - return $list; - } - - /** - * {@inheritdoc} - */ - public function readHistory() - { - return true; - } - - /** - * {@inheritdoc} - * - * @throws BreakException if user hits Ctrl+D - * - * @return string - */ - public function readline($prompt = null) - { - return $this->hoaReadline->readLine($prompt); - } - - /** - * {@inheritdoc} - */ - public function redisplay() - { - // noop - } - - /** - * {@inheritdoc} - */ - public function writeHistory() - { - return true; - } } diff --git a/vendor/psy/psysh/src/Readline/Libedit.php b/vendor/psy/psysh/src/Readline/Libedit.php index d1dc002fd..a2f4815e1 100644 --- a/vendor/psy/psysh/src/Readline/Libedit.php +++ b/vendor/psy/psysh/src/Readline/Libedit.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -19,15 +19,20 @@ use Psy\Util\Str; * This is largely the same as the Readline implementation, but it emulates * support for `readline_list_history` since PHP decided it was a good idea to * ship a fake Readline implementation that is missing history support. + * + * NOTE: As of PHP 7.4, PHP sometimes has history support in the Libedit + * wrapper, so it will use the GNUReadline implementation rather than this one. */ class Libedit extends GNUReadline { + private $hasWarnedOwnership = false; + /** * Let's emulate GNU Readline by manually reading and parsing the history file! * * @return bool */ - public static function isSupported() + public static function isSupported(): bool { return \function_exists('readline') && !\function_exists('readline_list_history'); } @@ -35,7 +40,15 @@ class Libedit extends GNUReadline /** * {@inheritdoc} */ - public function listHistory() + public static function supportsBracketedPaste(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function listHistory(): array { $history = \file_get_contents($this->historyFile); if (!$history) { @@ -45,9 +58,9 @@ class Libedit extends GNUReadline // libedit doesn't seem to support non-unix line separators. $history = \explode("\n", $history); - // shift the history signature, ensure it's valid - if (\array_shift($history) !== '_HiStOrY_V2_') { - return []; + // remove history signature if it exists + if ($history[0] === '_HiStOrY_V2_') { + \array_shift($history); } // decode the line @@ -56,6 +69,28 @@ class Libedit extends GNUReadline return \array_values(\array_filter($history)); } + /** + * {@inheritdoc} + */ + public function writeHistory(): bool + { + $res = parent::writeHistory(); + + // Libedit apparently refuses to save history if the history file is not + // owned by the user, even if it is writable. Warn when this happens. + // + // See https://github.com/bobthecow/psysh/issues/552 + if ($res === false && !$this->hasWarnedOwnership) { + if (\is_file($this->historyFile) && \is_writable($this->historyFile)) { + $this->hasWarnedOwnership = true; + $msg = \sprintf('Error writing history file, check file ownership: %s', $this->historyFile); + \trigger_error($msg, \E_USER_NOTICE); + } + } + + return $res; + } + /** * From GNUReadline (readline/histfile.c & readline/histexpand.c): * lines starting with "\0" are comments or timestamps; @@ -64,9 +99,9 @@ class Libedit extends GNUReadline * * @param string $line The history line to parse * - * @return string | null + * @return string|null */ - protected function parseHistoryLine($line) + protected function parseHistoryLine(string $line) { // empty line, comment or timestamp if (!$line || $line[0] === "\0") { diff --git a/vendor/psy/psysh/src/Readline/Readline.php b/vendor/psy/psysh/src/Readline/Readline.php index 6d0cb6e6b..cded8e893 100644 --- a/vendor/psy/psysh/src/Readline/Readline.php +++ b/vendor/psy/psysh/src/Readline/Readline.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -16,12 +16,26 @@ namespace Psy\Readline; */ interface Readline { + /** + * @param string|false $historyFile + * @param int|null $historySize + * @param bool|null $eraseDups + */ + public function __construct($historyFile = null, $historySize = 0, $eraseDups = false); + /** * Check whether this Readline class is supported by the current system. * * @return bool */ - public static function isSupported(); + public static function isSupported(): bool; + + /** + * Check whether this Readline class supports bracketed paste. + * + * @return bool + */ + public static function supportsBracketedPaste(): bool; /** * Add a line to the command history. @@ -30,37 +44,37 @@ interface Readline * * @return bool Success */ - public function addHistory($line); + public function addHistory(string $line): bool; /** * Clear the command history. * * @return bool Success */ - public function clearHistory(); + public function clearHistory(): bool; /** * List the command history. * * @return array */ - public function listHistory(); + public function listHistory(): array; /** * Read the command history. * * @return bool Success */ - public function readHistory(); + public function readHistory(): bool; /** * Read a single line of input from the user. * - * @param null|string $prompt + * @param string|null $prompt * * @return false|string */ - public function readline($prompt = null); + public function readline(string $prompt = null); /** * Redraw readline to redraw the display. @@ -72,5 +86,5 @@ interface Readline * * @return bool Success */ - public function writeHistory(); + public function writeHistory(): bool; } diff --git a/vendor/psy/psysh/src/Readline/Transient.php b/vendor/psy/psysh/src/Readline/Transient.php index 6623bd981..128ef8674 100644 --- a/vendor/psy/psysh/src/Readline/Transient.php +++ b/vendor/psy/psysh/src/Readline/Transient.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -28,26 +28,34 @@ class Transient implements Readline * * {@inheritdoc} */ - public static function isSupported() + public static function isSupported(): bool { return true; } + /** + * {@inheritdoc} + */ + public static function supportsBracketedPaste(): bool + { + return false; + } + /** * Transient Readline constructor. */ public function __construct($historyFile = null, $historySize = 0, $eraseDups = false) { // don't do anything with the history file... - $this->history = []; + $this->history = []; $this->historySize = $historySize; - $this->eraseDups = $eraseDups; + $this->eraseDups = $eraseDups; } /** * {@inheritdoc} */ - public function addHistory($line) + public function addHistory(string $line): bool { if ($this->eraseDups) { if (($key = \array_search($line, $this->history)) !== false) { @@ -72,7 +80,7 @@ class Transient implements Readline /** * {@inheritdoc} */ - public function clearHistory() + public function clearHistory(): bool { $this->history = []; @@ -82,7 +90,7 @@ class Transient implements Readline /** * {@inheritdoc} */ - public function listHistory() + public function listHistory(): array { return $this->history; } @@ -90,7 +98,7 @@ class Transient implements Readline /** * {@inheritdoc} */ - public function readHistory() + public function readHistory(): bool { return true; } @@ -100,9 +108,9 @@ class Transient implements Readline * * @throws BreakException if user hits Ctrl+D * - * @return string + * @return false|string */ - public function readline($prompt = null) + public function readline(string $prompt = null) { echo $prompt; @@ -120,7 +128,7 @@ class Transient implements Readline /** * {@inheritdoc} */ - public function writeHistory() + public function writeHistory(): bool { return true; } diff --git a/vendor/psy/psysh/src/Readline/Userland.php b/vendor/psy/psysh/src/Readline/Userland.php new file mode 100644 index 000000000..c9679b069 --- /dev/null +++ b/vendor/psy/psysh/src/Readline/Userland.php @@ -0,0 +1,168 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\Readline; + +use Psy\Exception\BreakException; +use Psy\Readline\Hoa\Console as HoaConsole; +use Psy\Readline\Hoa\ConsoleCursor as HoaConsoleCursor; +use Psy\Readline\Hoa\ConsoleInput as HoaConsoleInput; +use Psy\Readline\Hoa\ConsoleOutput as HoaConsoleOutput; +use Psy\Readline\Hoa\ConsoleTput as HoaConsoleTput; +use Psy\Readline\Hoa\Readline as HoaReadline; +use Psy\Readline\Hoa\Ustring as HoaUstring; + +/** + * Userland Readline implementation. + */ +class Userland implements Readline +{ + /** @var HoaReadline */ + private $hoaReadline; + + /** @var string|null */ + private $lastPrompt; + + private $tput; + private $input; + private $output; + + /** + * @return bool + */ + public static function isSupported(): bool + { + static::bootstrapHoa(); + + return HoaUstring::checkMbString() && HoaConsoleTput::isSupported(); + } + + /** + * {@inheritdoc} + */ + public static function supportsBracketedPaste(): bool + { + return false; + } + + /** + * Doesn't (currently) support history file, size or erase dupes configs. + */ + public function __construct($historyFile = null, $historySize = 0, $eraseDups = false) + { + static::bootstrapHoa(true); + + $this->hoaReadline = new HoaReadline(); + $this->hoaReadline->addMapping('\C-l', function () { + $this->redisplay(); + + return HoaReadline::STATE_NO_ECHO; + }); + + $this->tput = new HoaConsoleTput(); + HoaConsole::setTput($this->tput); + + $this->input = new HoaConsoleInput(); + HoaConsole::setInput($this->input); + + $this->output = new HoaConsoleOutput(); + HoaConsole::setOutput($this->output); + } + + /** + * Bootstrap some things that Hoa used to do itself. + */ + public static function bootstrapHoa(bool $withTerminalResize = false) + { + // A side effect registers hoa:// stream wrapper + \class_exists('Psy\Readline\Hoa\ProtocolWrapper'); + + // A side effect registers hoa://Library/Stream + \class_exists('Psy\Readline\Hoa\Stream'); + + // A side effect binds terminal resize + $withTerminalResize && \class_exists('Psy\Readline\Hoa\ConsoleWindow'); + } + + /** + * {@inheritdoc} + */ + public function addHistory(string $line): bool + { + $this->hoaReadline->addHistory($line); + + return true; + } + + /** + * {@inheritdoc} + */ + public function clearHistory(): bool + { + $this->hoaReadline->clearHistory(); + + return true; + } + + /** + * {@inheritdoc} + */ + public function listHistory(): array + { + $i = 0; + $list = []; + while (($item = $this->hoaReadline->getHistory($i++)) !== null) { + $list[] = $item; + } + + return $list; + } + + /** + * {@inheritdoc} + */ + public function readHistory(): bool + { + return true; + } + + /** + * {@inheritdoc} + * + * @throws BreakException if user hits Ctrl+D + * + * @return string + */ + public function readline(string $prompt = null) + { + $this->lastPrompt = $prompt; + + return $this->hoaReadline->readLine($prompt); + } + + /** + * {@inheritdoc} + */ + public function redisplay() + { + $currentLine = $this->hoaReadline->getLine(); + HoaConsoleCursor::clear('all'); + echo $this->lastPrompt, $currentLine; + } + + /** + * {@inheritdoc} + */ + public function writeHistory(): bool + { + return true; + } +} diff --git a/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php b/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php index 019ad21da..7120a470a 100644 --- a/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php +++ b/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -28,18 +28,18 @@ class ReflectionClassConstant implements \Reflector * @param string|object $class * @param string $name */ - public function __construct($class, $name) + public function __construct($class, string $name) { if (!$class instanceof \ReflectionClass) { $class = new \ReflectionClass($class); } $this->class = $class; - $this->name = $name; + $this->name = $name; $constants = $class->getConstants(); if (!\array_key_exists($name, $constants)) { - throw new \InvalidArgumentException('Unknown constant: ' . $name); + throw new \InvalidArgumentException('Unknown constant: '.$name); } $this->value = $constants[$name]; @@ -52,9 +52,9 @@ class ReflectionClassConstant implements \Reflector * @param string $name * @param bool $return pass true to return the export, as opposed to emitting it * - * @return null|string + * @return string|null */ - public static function export($class, $name, $return = false) + public static function export($class, string $name, bool $return = false) { $refl = new self($class, $name); $value = $refl->getValue(); @@ -65,7 +65,7 @@ class ReflectionClassConstant implements \Reflector return $str; } - echo $str . "\n"; + echo $str."\n"; } /** @@ -73,7 +73,7 @@ class ReflectionClassConstant implements \Reflector * * @return \ReflectionClass */ - public function getDeclaringClass() + public function getDeclaringClass(): \ReflectionClass { $parent = $this->class; @@ -83,7 +83,7 @@ class ReflectionClassConstant implements \Reflector // // While this isn't _technically_ correct, it's prolly close enough. do { - $class = $parent; + $class = $parent; $parent = $class->getParentClass(); } while ($parent && $parent->hasConstant($this->name) && $parent->getConstant($this->name) === $this->value); @@ -95,7 +95,7 @@ class ReflectionClassConstant implements \Reflector * * @return false */ - public function getDocComment() + public function getDocComment(): bool { return false; } @@ -109,7 +109,7 @@ class ReflectionClassConstant implements \Reflector * * @return int */ - public function getModifiers() + public function getModifiers(): int { return \ReflectionMethod::IS_PUBLIC; } @@ -119,7 +119,7 @@ class ReflectionClassConstant implements \Reflector * * @return string */ - public function getName() + public function getName(): string { return $this->name; } @@ -139,7 +139,7 @@ class ReflectionClassConstant implements \Reflector * * @return bool false */ - public function isPrivate() + public function isPrivate(): bool { return false; } @@ -149,7 +149,7 @@ class ReflectionClassConstant implements \Reflector * * @return bool false */ - public function isProtected() + public function isProtected(): bool { return false; } @@ -159,7 +159,7 @@ class ReflectionClassConstant implements \Reflector * * @return bool true */ - public function isPublic() + public function isPublic(): bool { return true; } @@ -169,7 +169,7 @@ class ReflectionClassConstant implements \Reflector * * @return string */ - public function __toString() + public function __toString(): string { return $this->getName(); } @@ -217,9 +217,9 @@ class ReflectionClassConstant implements \Reflector * * @return ReflectionClassConstant|\ReflectionClassConstant */ - public static function create($class, $name) + public static function create($class, string $name) { - if (\class_exists('\\ReflectionClassConstant')) { + if (\class_exists(\ReflectionClassConstant::class)) { return new \ReflectionClassConstant($class, $name); } diff --git a/vendor/psy/psysh/src/Reflection/ReflectionConstant.php b/vendor/psy/psysh/src/Reflection/ReflectionConstant.php index a813fc573..a56391b6b 100644 --- a/vendor/psy/psysh/src/Reflection/ReflectionConstant.php +++ b/vendor/psy/psysh/src/Reflection/ReflectionConstant.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ class ReflectionConstant extends ReflectionClassConstant */ public function __construct($class, $name) { - @\trigger_error('ReflectionConstant is now ReflectionClassConstant', E_USER_DEPRECATED); + @\trigger_error('ReflectionConstant is now ReflectionClassConstant', \E_USER_DEPRECATED); parent::__construct($class, $name); } diff --git a/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php b/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php index b355e3509..f1df1805a 100644 --- a/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php +++ b/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -42,12 +42,12 @@ class ReflectionConstant_ implements \Reflector * * @param string $name */ - public function __construct($name) + public function __construct(string $name) { $this->name = $name; if (!\defined($name) && !self::isMagicConstant($name)) { - throw new \InvalidArgumentException('Unknown constant: ' . $name); + throw new \InvalidArgumentException('Unknown constant: '.$name); } if (!self::isMagicConstant($name)) { @@ -61,9 +61,9 @@ class ReflectionConstant_ implements \Reflector * @param string $name * @param bool $return pass true to return the export, as opposed to emitting it * - * @return null|string + * @return string|null */ - public static function export($name, $return = false) + public static function export(string $name, bool $return = false) { $refl = new self($name); $value = $refl->getValue(); @@ -74,7 +74,7 @@ class ReflectionConstant_ implements \Reflector return $str; } - echo $str . "\n"; + echo $str."\n"; } public static function isMagicConstant($name) @@ -87,7 +87,7 @@ class ReflectionConstant_ implements \Reflector * * @return false */ - public function getDocComment() + public function getDocComment(): bool { return false; } @@ -97,7 +97,7 @@ class ReflectionConstant_ implements \Reflector * * @return string */ - public function getName() + public function getName(): string { return $this->name; } @@ -109,7 +109,7 @@ class ReflectionConstant_ implements \Reflector * * @return string */ - public function getNamespaceName() + public function getNamespaceName(): string { if (!$this->inNamespace()) { return ''; @@ -133,7 +133,7 @@ class ReflectionConstant_ implements \Reflector * * @return bool */ - public function inNamespace() + public function inNamespace(): bool { return \strpos($this->name, '\\') !== false; } @@ -143,7 +143,7 @@ class ReflectionConstant_ implements \Reflector * * @return string */ - public function __toString() + public function __toString(): string { return $this->getName(); } diff --git a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php index 9b8eefc17..3a9f4293c 100644 --- a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php +++ b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -74,10 +74,10 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @param string $keyword */ - public function __construct($keyword) + public function __construct(string $keyword) { if (!self::isLanguageConstruct($keyword)) { - throw new \InvalidArgumentException('Unknown language construct: ' . $keyword); + throw new \InvalidArgumentException('Unknown language construct: '.$keyword); } $this->keyword = $keyword; @@ -98,7 +98,7 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @return string */ - public function getName() + public function getName(): string { return $this->keyword; } @@ -108,7 +108,7 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @return bool */ - public function returnsReference() + public function returnsReference(): bool { return false; } @@ -118,11 +118,11 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @return array */ - public function getParameters() + public function getParameters(): array { $params = []; foreach (self::$languageConstructs[$this->keyword] as $parameter => $opts) { - \array_push($params, new ReflectionLanguageConstructParameter($this->keyword, $parameter, $opts)); + $params[] = new ReflectionLanguageConstructParameter($this->keyword, $parameter, $opts); } return $params; @@ -133,8 +133,11 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * (Hint: it always returns false) * - * @return bool false + * @todo remove \ReturnTypeWillChange attribute after dropping support for PHP 7.x (when we can use union types) + * + * @return string|false (false) */ + #[\ReturnTypeWillChange] public function getFileName() { return false; @@ -145,7 +148,7 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @return string */ - public function __toString() + public function __toString(): string { return $this->getName(); } @@ -157,7 +160,7 @@ class ReflectionLanguageConstruct extends \ReflectionFunctionAbstract * * @return bool */ - public static function isLanguageConstruct($keyword) + public static function isLanguageConstruct(string $keyword): bool { return \array_key_exists($keyword, self::$languageConstructs); } diff --git a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php index 9161aa78b..2ce89f40c 100644 --- a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php +++ b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,14 +24,17 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter public function __construct($function, $parameter, array $opts) { - $this->function = $function; + $this->function = $function; $this->parameter = $parameter; - $this->opts = $opts; + $this->opts = $opts; } /** * No class here. + * + * @todo remove \ReturnTypeWillChange attribute after dropping support for PHP 7.0 (when we can use nullable types) */ + #[\ReturnTypeWillChange] public function getClass() { return; @@ -42,7 +45,7 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter * * @return bool */ - public function isArray() + public function isArray(): bool { return \array_key_exists('isArray', $this->opts) && $this->opts['isArray']; } @@ -50,13 +53,18 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter /** * Get param default value. * + * @todo remove \ReturnTypeWillChange attribute after dropping support for PHP 7.x (when we can use mixed type) + * * @return mixed */ + #[\ReturnTypeWillChange] public function getDefaultValue() { if ($this->isDefaultValueAvailable()) { return $this->opts['defaultValue']; } + + return null; } /** @@ -64,7 +72,7 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter * * @return string */ - public function getName() + public function getName(): string { return $this->parameter; } @@ -74,7 +82,7 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter * * @return bool */ - public function isOptional() + public function isOptional(): bool { return \array_key_exists('isOptional', $this->opts) && $this->opts['isOptional']; } @@ -84,7 +92,7 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter * * @return bool */ - public function isDefaultValueAvailable() + public function isDefaultValueAvailable(): bool { return \array_key_exists('defaultValue', $this->opts); } @@ -96,7 +104,7 @@ class ReflectionLanguageConstructParameter extends \ReflectionParameter * * @return bool */ - public function isPassedByReference() + public function isPassedByReference(): bool { return \array_key_exists('isPassedByReference', $this->opts) && $this->opts['isPassedByReference']; } diff --git a/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php b/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php new file mode 100644 index 000000000..f6e0fcd6a --- /dev/null +++ b/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php @@ -0,0 +1,60 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\Reflection; + +/** + * A fake Reflector for namespaces. + */ +class ReflectionNamespace implements \Reflector +{ + private $name; + + /** + * Construct a ReflectionNamespace object. + * + * @param string $name + */ + public function __construct(string $name) + { + $this->name = $name; + } + + /** + * Gets the constant name. + * + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * This can't (and shouldn't) do anything :). + * + * @throws \RuntimeException + */ + public static function export($name) + { + throw new \RuntimeException('Not yet implemented because it\'s unclear what I should do here :)'); + } + + /** + * To string. + * + * @return string + */ + public function __toString(): string + { + return $this->getName(); + } +} diff --git a/vendor/psy/psysh/src/Shell.php b/vendor/psy/psysh/src/Shell.php index 7f8a39952..801b7a86d 100644 --- a/vendor/psy/psysh/src/Shell.php +++ b/vendor/psy/psysh/src/Shell.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -15,23 +15,26 @@ use Psy\CodeCleaner\NoReturnValue; use Psy\Exception\BreakException; use Psy\Exception\ErrorException; use Psy\Exception\Exception as PsyException; +use Psy\Exception\RuntimeException; use Psy\Exception\ThrowUpException; -use Psy\Exception\TypeErrorException; use Psy\ExecutionLoop\ProcessForker; use Psy\ExecutionLoop\RunkitReloader; +use Psy\Formatter\TraceFormatter; use Psy\Input\ShellInput; use Psy\Input\SilentInput; +use Psy\Output\ShellOutput; use Psy\TabCompletion\Matcher; use Psy\VarDumper\PresenterAware; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command as BaseCommand; use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Input\ArgvInput; +use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\StringInput; +use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; /** @@ -46,16 +49,21 @@ use Symfony\Component\Console\Output\OutputInterface; */ class Shell extends Application { - const VERSION = 'v0.9.12'; + const VERSION = 'v0.11.10'; - const PROMPT = '>>> '; + /** @deprecated */ + const PROMPT = '>>> '; + /** @deprecated */ const BUFF_PROMPT = '... '; - const REPLAY = '--> '; - const RETVAL = '=> '; + /** @deprecated */ + const REPLAY = '--> '; + /** @deprecated */ + const RETVAL = '=> '; private $config; private $cleaner; private $output; + private $originalVerbosity; private $readline; private $inputBuffer; private $code; @@ -65,31 +73,30 @@ class Shell extends Application private $stdoutBuffer; private $context; private $includes; - private $loop; private $outputWantsNewline = false; - private $prompt; private $loopListeners; private $autoCompleter; private $matchers = []; private $commandsMatcher; private $lastExecSuccess = true; + private $nonInteractive = false; + private $errorReporting; /** * Create a new Psy Shell. * - * @param Configuration $config (default: null) + * @param Configuration|null $config (default: null) */ public function __construct(Configuration $config = null) { - $this->config = $config ?: new Configuration(); - $this->cleaner = $this->config->getCodeCleaner(); - $this->loop = new ExecutionLoop(); - $this->context = new Context(); - $this->includes = []; - $this->readline = $this->config->getReadline(); - $this->inputBuffer = []; - $this->codeStack = []; - $this->stdoutBuffer = ''; + $this->config = $config ?: new Configuration(); + $this->cleaner = $this->config->getCodeCleaner(); + $this->context = new Context(); + $this->includes = []; + $this->readline = $this->config->getReadline(); + $this->inputBuffer = []; + $this->codeStack = []; + $this->stdoutBuffer = ''; $this->loopListeners = $this->getDefaultLoopListeners(); parent::__construct('Psy Shell', self::VERSION); @@ -106,10 +113,28 @@ class Shell extends Application * This is used by the psysh bin to decide whether to start a shell on boot, * or to simply autoload the library. */ - public static function isIncluded(array $trace) + public static function isIncluded(array $trace): bool { - return isset($trace[0]['function']) && + $isIncluded = isset($trace[0]['function']) && \in_array($trace[0]['function'], ['require', 'include', 'require_once', 'include_once']); + + // Detect Composer PHP bin proxies. + if ($isIncluded && \array_key_exists('_composer_autoload_path', $GLOBALS) && \preg_match('{[\\\\/]psysh$}', $trace[0]['file'])) { + // If we're in a bin proxy, we'll *always* see one include, but we + // care if we see a second immediately after that. + return isset($trace[1]['function']) && + \in_array($trace[1]['function'], ['require', 'include', 'require_once', 'include_once']); + } + + return $isIncluded; + } + + /** + * Check if the currently running PsySH bin is a phar archive. + */ + public static function isPhar(): bool + { + return \class_exists("\Phar") && \Phar::running() !== '' && \strpos(__FILE__, \Phar::running(true)) === 0; } /** @@ -118,12 +143,12 @@ class Shell extends Application * @see Psy\debug * @deprecated will be removed in 1.0. Use \Psy\debug instead * - * @param array $vars Scope variables from the calling context (default: array()) + * @param array $vars Scope variables from the calling context (default: []) * @param object|string $bindTo Bound object ($this) or class (self) value for the shell * * @return array Scope variables from the debugger session */ - public static function debug(array $vars = [], $bindTo = null) + public static function debug(array $vars = [], $bindTo = null): array { return \Psy\debug($vars, $bindTo); } @@ -137,7 +162,7 @@ class Shell extends Application * * @return BaseCommand The registered command */ - public function add(BaseCommand $command) + public function add(BaseCommand $command): BaseCommand { if ($ret = parent::add($command)) { if ($ret instanceof ContextAware) { @@ -161,7 +186,7 @@ class Shell extends Application * * @return InputDefinition An InputDefinition instance */ - protected function getDefaultInputDefinition() + protected function getDefaultInputDefinition(): InputDefinition { return new InputDefinition([ new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), @@ -174,7 +199,7 @@ class Shell extends Application * * @return array An array of default Command instances */ - protected function getDefaultCommands() + protected function getDefaultCommands(): array { $sudo = new Command\SudoCommand(); $sudo->setReadline($this->readline); @@ -187,9 +212,9 @@ class Shell extends Application new Command\ListCommand(), new Command\DumpCommand(), new Command\DocCommand(), - new Command\ShowCommand($this->config->colorMode()), - new Command\WtfCommand($this->config->colorMode()), - new Command\WhereamiCommand($this->config->colorMode()), + new Command\ShowCommand(), + new Command\WtfCommand(), + new Command\WhereamiCommand(), new Command\ThrowUpCommand(), new Command\TimeitCommand(), new Command\TraceCommand(), @@ -206,7 +231,7 @@ class Shell extends Application /** * @return array */ - protected function getDefaultMatchers() + protected function getDefaultMatchers(): array { // Store the Commands Matcher for later. If more commands are added, // we'll update the Commands Matcher too. @@ -234,7 +259,7 @@ class Shell extends Application */ protected function getTabCompletionMatchers() { - @\trigger_error('getTabCompletionMatchers is no longer used', E_USER_DEPRECATED); + @\trigger_error('getTabCompletionMatchers is no longer used', \E_USER_DEPRECATED); } /** @@ -242,7 +267,7 @@ class Shell extends Application * * @return array An array of Execution Loop Listener instances */ - protected function getDefaultLoopListeners() + protected function getDefaultLoopListeners(): array { $listeners = []; @@ -289,31 +314,32 @@ class Shell extends Application public function setOutput(OutputInterface $output) { $this->output = $output; + $this->originalVerbosity = $output->getVerbosity(); } /** - * Runs the current application. + * Runs PsySH. * - * @param InputInterface $input An Input instance - * @param OutputInterface $output An Output instance + * @param InputInterface|null $input An Input instance + * @param OutputInterface|null $output An Output instance * * @return int 0 if everything went fine, or an error code */ - public function run(InputInterface $input = null, OutputInterface $output = null) + public function run(InputInterface $input = null, OutputInterface $output = null): int { - $this->initializeTabCompletion(); - - if ($input === null && !isset($_SERVER['argv'])) { - $input = new ArgvInput([]); - } + // We'll just ignore the input passed in, and set up our own! + $input = new ArrayInput([]); if ($output === null) { $output = $this->config->getOutput(); } + $this->setAutoExit(false); + $this->setCatchExceptions(false); + try { return parent::run($input, $output); - } catch (\Exception $e) { + } catch (\Throwable $e) { $this->writeException($e); } @@ -321,24 +347,41 @@ class Shell extends Application } /** - * Runs the current application. + * Runs PsySH. * - * @throws Exception if thrown via the `throw-up` command + * @throws \Throwable if thrown via the `throw-up` command * * @param InputInterface $input An Input instance * @param OutputInterface $output An Output instance * * @return int 0 if everything went fine, or an error code */ - public function doRun(InputInterface $input, OutputInterface $output) + public function doRun(InputInterface $input, OutputInterface $output): int { $this->setOutput($output); - $this->resetCodeBuffer(); - $this->setAutoExit(false); - $this->setCatchExceptions(false); + if ($input->isInteractive()) { + // @todo should it be possible to have raw output in an interactive run? + return $this->doInteractiveRun(); + } else { + return $this->doNonInteractiveRun($this->config->rawOutput()); + } + } + /** + * Run PsySH in interactive mode. + * + * Initializes tab completion and readline history, then spins up the + * execution loop. + * + * @throws \Throwable if thrown via the `throw-up` command + * + * @return int 0 if everything went fine, or an error code + */ + private function doInteractiveRun(): int + { + $this->initializeTabCompletion(); $this->readline->readHistory(); $this->output->writeln($this->getHeader()); @@ -347,14 +390,102 @@ class Shell extends Application try { $this->beforeRun(); - $this->loop->run($this); + $this->loadIncludes(); + $loop = new ExecutionLoopClosure($this); + $loop->execute(); $this->afterRun(); } catch (ThrowUpException $e) { throw $e->getPrevious(); } catch (BreakException $e) { // The ProcessForker throws a BreakException to finish the main thread. - return; } + + return 0; + } + + /** + * Run PsySH in non-interactive mode. + * + * Note that this isn't very useful unless you supply "include" arguments at + * the command line, or code via stdin. + * + * @param bool $rawOutput + * + * @return int 0 if everything went fine, or an error code + */ + private function doNonInteractiveRun(bool $rawOutput): int + { + $this->nonInteractive = true; + + // If raw output is enabled (or output is piped) we don't want startup messages. + if (!$rawOutput && !$this->config->outputIsPiped()) { + $this->output->writeln($this->getHeader()); + $this->writeVersionInfo(); + $this->writeStartupMessage(); + } + + $this->beforeRun(); + $this->loadIncludes(); + + // For non-interactive execution, read only from the input buffer or from piped input. + // Otherwise it'll try to readline and hang, waiting for user input with no indication of + // what's holding things up. + if (!empty($this->inputBuffer) || $this->config->inputIsPiped()) { + $this->getInput(false); + } + + if ($this->hasCode()) { + $ret = $this->execute($this->flushCode()); + $this->writeReturnValue($ret, $rawOutput); + } + + $this->afterRun(); + $this->nonInteractive = false; + + return 0; + } + + /** + * Configures the input and output instances based on the user arguments and options. + */ + protected function configureIO(InputInterface $input, OutputInterface $output) + { + // @todo overrides via environment variables (or should these happen in config? ... probably config) + $input->setInteractive($this->config->getInputInteractive()); + + if ($this->config->getOutputDecorated() !== null) { + $output->setDecorated($this->config->getOutputDecorated()); + } + + $output->setVerbosity($this->config->getOutputVerbosity()); + } + + /** + * Load user-defined includes. + */ + private function loadIncludes() + { + // Load user-defined includes + $load = function (self $__psysh__) { + \set_error_handler([$__psysh__, 'handleError']); + foreach ($__psysh__->getIncludes() as $__psysh_include__) { + try { + include_once $__psysh_include__; + } catch (\Exception $_e) { + $__psysh__->writeException($_e); + } + } + \restore_error_handler(); + unset($__psysh_include__); + + // Override any new local variables with pre-defined scope variables + \extract($__psysh__->getScopeVariables(false)); + + // ... then add the whole mess of variables back. + $__psysh__->setScopeVariables(\get_defined_vars()); + }; + + $load($this); } /** @@ -364,14 +495,16 @@ class Shell extends Application * valid code. * * @throws BreakException if user hits Ctrl+D + * + * @param bool $interactive */ - public function getInput() + public function getInput(bool $interactive = true) { $this->codeBufferOpen = false; do { // reset output verbosity (in case it was altered by a subcommand) - $this->output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); + $this->output->setVerbosity($this->originalVerbosity); $input = $this->readline(); @@ -380,8 +513,13 @@ class Shell extends Application * * 1) In an expression, like a function or "if" block, clear the input buffer * 2) At top-level session, behave like the exit command + * 3) When non-interactive, return, because that's the end of stdin */ if ($input === false) { + if (!$interactive) { + return; + } + $this->output->writeln(''); if ($this->hasCode()) { @@ -407,7 +545,7 @@ class Shell extends Application } $this->addCode($input); - } while (!$this->hasValidCode()); + } while (!$interactive || !$this->hasValidCode()); } /** @@ -417,19 +555,19 @@ class Shell extends Application * * @return bool true if the input is in an open string or comment */ - private function inputInOpenStringOrComment($input) + private function inputInOpenStringOrComment(string $input): bool { if (!$this->hasCode()) { - return; + return false; } $code = $this->codeBuffer; - \array_push($code, $input); - $tokens = @\token_get_all('<?php ' . \implode("\n", $code)); + $code[] = $input; + $tokens = @\token_get_all('<?php '.\implode("\n", $code)); $last = \array_pop($tokens); return $last === '"' || $last === '`' || - (\is_array($last) && \in_array($last[0], [T_ENCAPSED_AND_WHITESPACE, T_START_HEREDOC, T_COMMENT])); + (\is_array($last) && \in_array($last[0], [\T_ENCAPSED_AND_WHITESPACE, \T_START_HEREDOC, \T_COMMENT])); } /** @@ -459,7 +597,7 @@ class Shell extends Application * * @return string */ - public function onInput($input) + public function onInput(string $input): string { foreach ($this->loopListeners as $listeners) { if (($return = $listeners->onInput($this, $input)) !== null) { @@ -477,14 +615,23 @@ class Shell extends Application * * @return string */ - public function onExecute($code) + public function onExecute(string $code): string { + $this->errorReporting = \error_reporting(); + foreach ($this->loopListeners as $listener) { if (($return = $listener->onExecute($this, $code)) !== null) { $code = $return; } } + $output = $this->output; + if ($output instanceof ConsoleOutput) { + $output = $output->getErrorOutput(); + } + + $output->writeln(\sprintf('<aside>%s</aside>', OutputFormatter::escape($code)), ConsoleOutput::VERBOSITY_DEBUG); + return $code; } @@ -527,7 +674,7 @@ class Shell extends Application * * @return array Associative array of scope variables */ - public function getScopeVariables($includeBoundObject = true) + public function getScopeVariables(bool $includeBoundObject = true): array { $vars = $this->context->getAll(); @@ -547,7 +694,7 @@ class Shell extends Application * * @return array Associative array of magic scope variables */ - public function getSpecialScopeVariables($includeBoundObject = true) + public function getSpecialScopeVariables(bool $includeBoundObject = true): array { $vars = $this->context->getSpecialVariables(); @@ -569,12 +716,12 @@ class Shell extends Application * * @return array Associative array of scope variables which differ from $currentVars */ - public function getScopeVariablesDiff(array $currentVars) + public function getScopeVariablesDiff(array $currentVars): array { $newVars = []; foreach ($this->getScopeVariables(false) as $key => $value) { - if (!array_key_exists($key, $currentVars) || $currentVars[$key] !== $value) { + if (!\array_key_exists($key, $currentVars) || $currentVars[$key] !== $value) { $newVars[$key] = $value; } } @@ -587,7 +734,7 @@ class Shell extends Application * * @return array Array of unused variable names */ - public function getUnusedCommandScopeVariableNames() + public function getUnusedCommandScopeVariableNames(): array { return $this->context->getUnusedCommandScopeVariableNames(); } @@ -597,7 +744,7 @@ class Shell extends Application * * @return array Array of variable names */ - public function getScopeVariableNames() + public function getScopeVariableNames(): array { return \array_keys($this->context->getAll()); } @@ -609,7 +756,7 @@ class Shell extends Application * * @return mixed */ - public function getScopeVariable($name) + public function getScopeVariable(string $name) { return $this->context->get($name); } @@ -669,7 +816,7 @@ class Shell extends Application * * @return array */ - public function getIncludes() + public function getIncludes(): array { return \array_merge($this->config->getDefaultIncludes(), $this->includes); } @@ -679,7 +826,7 @@ class Shell extends Application * * @return bool True if the code buffer contains code */ - public function hasCode() + public function hasCode(): bool { return !empty($this->codeBuffer); } @@ -691,7 +838,7 @@ class Shell extends Application * * @return bool True if the code buffer content is valid */ - protected function hasValidCode() + protected function hasValidCode(): bool { return !$this->codeBufferOpen && $this->code !== false; } @@ -702,7 +849,7 @@ class Shell extends Application * @param string $code * @param bool $silent */ - public function addCode($code, $silent = false) + public function addCode(string $code, bool $silent = false) { try { // Code lines ending in \ keep the buffer open @@ -714,8 +861,8 @@ class Shell extends Application } $this->codeBuffer[] = $silent ? new SilentInput($code) : $code; - $this->code = $this->cleaner->clean($this->codeBuffer, $this->config->requireSemicolons()); - } catch (\Exception $e) { + $this->code = $this->cleaner->clean($this->codeBuffer, $this->config->requireSemicolons()); + } catch (\Throwable $e) { // Add failed code blocks to the readline history. $this->addCodeBufferToHistory(); @@ -735,7 +882,7 @@ class Shell extends Application * @param string $code * @param bool $silent */ - private function setCode($code, $silent = false) + private function setCode(string $code, bool $silent = false) { if ($this->hasCode()) { $this->codeStack[] = [$this->codeBuffer, $this->codeBufferOpen, $this->code]; @@ -747,10 +894,6 @@ class Shell extends Application } catch (\Throwable $e) { $this->popCodeStack(); - throw $e; - } catch (\Exception $e) { - $this->popCodeStack(); - throw $e; } @@ -768,7 +911,7 @@ class Shell extends Application * * @return array */ - public function getCodeBuffer() + public function getCodeBuffer(): array { return $this->codeBuffer; } @@ -776,27 +919,30 @@ class Shell extends Application /** * Run a Psy Shell command given the user input. * - * @throws InvalidArgumentException if the input is not a valid command + * @throws \InvalidArgumentException if the input is not a valid command * * @param string $input User input string * * @return mixed Who knows? */ - protected function runCommand($input) + protected function runCommand(string $input) { $command = $this->getCommand($input); if (empty($command)) { - throw new \InvalidArgumentException('Command not found: ' . $input); + throw new \InvalidArgumentException('Command not found: '.$input); } $input = new ShellInput(\str_replace('\\', '\\\\', \rtrim($input, " \t\n\r\0\x0B;"))); if ($input->hasParameterOption(['--help', '-h'])) { $helpCommand = $this->get('help'); + if (!$helpCommand instanceof Command\HelpCommand) { + throw new RuntimeException('Invalid help command instance'); + } $helpCommand->setCommand($command); - return $helpCommand->run($input, $this->output); + return $helpCommand->run(new StringInput(''), $this->output); } return $command->run($input, $this->output); @@ -811,7 +957,7 @@ class Shell extends Application public function resetCodeBuffer() { $this->codeBuffer = []; - $this->code = false; + $this->code = false; } /** @@ -822,7 +968,7 @@ class Shell extends Application * @param string|array $input * @param bool $silent */ - public function addInput($input, $silent = false) + public function addInput($input, bool $silent = false) { foreach ((array) $input as $line) { $this->inputBuffer[] = $silent ? new SilentInput($line) : $line; @@ -835,7 +981,7 @@ class Shell extends Application * If the code buffer is valid, resets the code buffer and returns the * current code. * - * @return string PHP code buffer contents + * @return string|null PHP code buffer contents */ public function flushCode() { @@ -861,9 +1007,9 @@ class Shell extends Application list($codeBuffer, $codeBufferOpen, $code) = \array_pop($this->codeStack); - $this->codeBuffer = $codeBuffer; + $this->codeBuffer = $codeBuffer; $this->codeBufferOpen = $codeBufferOpen; - $this->code = $code; + $this->code = $code; } /** @@ -907,7 +1053,7 @@ class Shell extends Application * * @see CodeCleaner::getNamespace * - * @return string Current code namespace + * @return string|null Current code namespace */ public function getNamespace() { @@ -924,9 +1070,15 @@ class Shell extends Application * @param string $out * @param int $phase Output buffering phase */ - public function writeStdout($out, $phase = PHP_OUTPUT_HANDLER_END) + public function writeStdout(string $out, int $phase = \PHP_OUTPUT_HANDLER_END) { - $isCleaning = $phase & PHP_OUTPUT_HANDLER_CLEAN; + if ($phase & \PHP_OUTPUT_HANDLER_START) { + if ($this->output instanceof ShellOutput) { + $this->output->startPaging(); + } + } + + $isCleaning = $phase & \PHP_OUTPUT_HANDLER_CLEAN; // Incremental flush if ($out !== '' && !$isCleaning) { @@ -936,10 +1088,14 @@ class Shell extends Application } // Output buffering is done! - if ($phase & PHP_OUTPUT_HANDLER_END) { + if ($phase & \PHP_OUTPUT_HANDLER_END) { // Write an extra newline if stdout didn't end with one if ($this->outputWantsNewline) { - $this->output->writeln(\sprintf('<aside>%s</aside>', $this->config->useUnicode() ? '⏎' : '\\n')); + if (!$this->config->rawOutput() && !$this->config->outputIsPiped()) { + $this->output->writeln(\sprintf('<whisper>%s</whisper>', $this->config->useUnicode() ? '⏎' : '\\n')); + } else { + $this->output->writeln(''); + } $this->outputWantsNewline = false; } @@ -948,6 +1104,10 @@ class Shell extends Application $this->context->setLastStdout($this->stdoutBuffer); $this->stdoutBuffer = ''; } + + if ($this->output instanceof ShellOutput) { + $this->output->stopPaging(); + } } } @@ -960,8 +1120,9 @@ class Shell extends Application * @see self::presentValue * * @param mixed $ret + * @param bool $rawOutput Write raw var_export-style values */ - public function writeReturnValue($ret) + public function writeReturnValue($ret, bool $rawOutput = false) { $this->lastExecSuccess = true; @@ -970,27 +1131,75 @@ class Shell extends Application } $this->context->setReturnValue($ret); - $ret = $this->presentValue($ret); - $indent = \str_repeat(' ', \strlen(static::RETVAL)); - $this->output->writeln(static::RETVAL . \str_replace(PHP_EOL, PHP_EOL . $indent, $ret)); + if ($rawOutput) { + $formatted = \var_export($ret, true); + } else { + $prompt = $this->config->theme()->returnValue(); + $indent = \str_repeat(' ', \strlen($prompt)); + $formatted = $this->presentValue($ret); + $formattedRetValue = \sprintf('<whisper>%s</whisper>', $prompt); + + $formatted = $formattedRetValue.\str_replace(\PHP_EOL, \PHP_EOL.$indent, $formatted); + } + + if ($this->output instanceof ShellOutput) { + $this->output->page($formatted.\PHP_EOL); + } else { + $this->output->writeln($formatted); + } } /** - * Renders a caught Exception. + * Renders a caught Exception or Error. * * Exceptions are formatted according to severity. ErrorExceptions which were * warnings or Strict errors aren't rendered as harshly as real errors. * * Stores $e as the last Exception in the Shell Context. * - * @param \Exception $e An exception instance + * @param \Throwable $e An exception or error instance */ - public function writeException(\Exception $e) + public function writeException(\Throwable $e) { - $this->lastExecSuccess = false; - $this->context->setLastException($e); - $this->output->writeln($this->formatException($e)); + // No need to write the break exception during a non-interactive run. + if ($e instanceof BreakException && $this->nonInteractive) { + $this->resetCodeBuffer(); + + return; + } + + // Break exceptions don't count :) + if (!$e instanceof BreakException) { + $this->lastExecSuccess = false; + $this->context->setLastException($e); + } + + $output = $this->output; + if ($output instanceof ConsoleOutput) { + $output = $output->getErrorOutput(); + } + + if (!$this->config->theme()->compact()) { + $output->writeln(''); + } + + $output->writeln($this->formatException($e)); + + if (!$this->config->theme()->compact()) { + $output->writeln(''); + } + + // Include an exception trace (as long as this isn't a BreakException). + if (!$e instanceof BreakException && $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { + $trace = TraceFormatter::formatTrace($e); + if (\count($trace) !== 0) { + $output->writeln('--'); + $output->write($trace, true); + $output->writeln(''); + } + } + $this->resetCodeBuffer(); } @@ -1001,42 +1210,57 @@ class Shell extends Application * * @return bool */ - public function getLastExecSuccess() + public function getLastExecSuccess(): bool { return $this->lastExecSuccess; } /** - * Helper for formatting an exception for writeException(). + * Helper for formatting an exception or error for writeException(). * * @todo extract this to somewhere it makes more sense * - * @param \Exception $e + * @param \Throwable $e * * @return string */ - public function formatException(\Exception $e) + public function formatException(\Throwable $e): string { - $message = $e->getMessage(); - if (!$e instanceof PsyException) { - if ($message === '') { - $message = \get_class($e); - } else { - $message = \sprintf('%s with message \'%s\'', \get_class($e), $message); - } + $indent = $this->config->theme()->compact() ? '' : ' '; + + if ($e instanceof BreakException) { + return \sprintf('%s<info> INFO </info> %s.', $indent, \rtrim($e->getRawMessage(), '.')); + } elseif ($e instanceof PsyException) { + $message = $e->getLine() > 1 + ? \sprintf('%s in %s on line %d', $e->getRawMessage(), $e->getFile(), $e->getLine()) + : \sprintf('%s in %s', $e->getRawMessage(), $e->getFile()); + + $messageLabel = \strtoupper($this->getMessageLabel($e)); + } else { + $message = $e->getMessage(); + $messageLabel = $this->getMessageLabel($e); } $message = \preg_replace( - "#(\\w:)?(/\\w+)*/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code#", + "#(\\w:)?([\\\\/]\\w+)*[\\\\/]src[\\\\/]Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code#", "eval()'d code", - \str_replace('\\', '/', $message) + $message ); - $message = \str_replace(" in eval()'d code", ' in Psy Shell code', $message); + $message = \str_replace(" in eval()'d code", '', $message); + $message = \trim($message); + + // Ensures the given string ends with punctuation... + if (!empty($message) && !\in_array(\substr($message, -1), ['.', '?', '!', ':'])) { + $message = "$message."; + } + + // Ensures the given message only contains relative paths... + $message = \str_replace(\getcwd().\DIRECTORY_SEPARATOR, '', $message); $severity = ($e instanceof \ErrorException) ? $this->getSeverity($e) : 'error'; - return \sprintf('<%s>%s</%s>', $severity, OutputFormatter::escape($message), $severity); + return \sprintf('%s<%s> %s </%s> %s', $indent, $severity, $messageLabel, $severity, OutputFormatter::escape($message)); } /** @@ -1046,18 +1270,20 @@ class Shell extends Application * * @return string */ - protected function getSeverity(\ErrorException $e) + protected function getSeverity(\ErrorException $e): string { $severity = $e->getSeverity(); if ($severity & \error_reporting()) { switch ($severity) { - case E_WARNING: - case E_NOTICE: - case E_CORE_WARNING: - case E_COMPILE_WARNING: - case E_USER_WARNING: - case E_USER_NOTICE: - case E_STRICT: + case \E_WARNING: + case \E_NOTICE: + case \E_CORE_WARNING: + case \E_COMPILE_WARNING: + case \E_USER_WARNING: + case \E_USER_NOTICE: + case \E_USER_DEPRECATED: + case \E_DEPRECATED: + case \E_STRICT: return 'warning'; default: @@ -1069,6 +1295,53 @@ class Shell extends Application } } + /** + * Helper for getting an output style for the given ErrorException's level. + * + * @param \Throwable $e + * + * @return string + */ + protected function getMessageLabel(\Throwable $e): string + { + if ($e instanceof \ErrorException) { + $severity = $e->getSeverity(); + + if ($severity & \error_reporting()) { + switch ($severity) { + case \E_WARNING: + return 'Warning'; + case \E_NOTICE: + return 'Notice'; + case \E_CORE_WARNING: + return 'Core Warning'; + case \E_COMPILE_WARNING: + return 'Compile Warning'; + case \E_USER_WARNING: + return 'User Warning'; + case \E_USER_NOTICE: + return 'User Notice'; + case \E_USER_DEPRECATED: + return 'User Deprecated'; + case \E_DEPRECATED: + return 'Deprecated'; + case \E_STRICT: + return 'Strict'; + } + } + } + + if ($e instanceof PsyException) { + $exceptionShortName = (new \ReflectionClass($e))->getShortName(); + $typeParts = \preg_split('/(?=[A-Z])/', $exceptionShortName); + \array_pop($typeParts); // Removes "Exception" + + return \trim(\strtoupper(\implode(' ', $typeParts))); + } + + return \get_class($e); + } + /** * Execute code in the shell execution context. * @@ -1077,7 +1350,7 @@ class Shell extends Application * * @return mixed */ - public function execute($code, $throwExceptions = false) + public function execute(string $code, bool $throwExceptions = false) { $this->setCode($code, true); $closure = new ExecutionClosure($this); @@ -1088,11 +1361,7 @@ class Shell extends Application try { return $closure->execute(); - } catch (\TypeError $_e) { - $this->writeException(TypeErrorException::fromTypeError($_e)); - } catch (\Error $_e) { - $this->writeException(ErrorException::fromError($_e)); - } catch (\Exception $_e) { + } catch (\Throwable $_e) { $this->writeException($_e); } } @@ -1102,13 +1371,12 @@ class Shell extends Application * * This allows us to: * - * set_error_handler(array($psysh, 'handleError')); + * set_error_handler([$psysh, 'handleError']); * - * Unlike ErrorException::throwException, this error handler respects the - * current error_reporting level; i.e. it logs warnings and notices, but - * doesn't throw an exception unless it's above the current error_reporting - * threshold. This should probably only be used in the inner execution loop - * of the shell, as most of the time a thrown exception is much more useful. + * Unlike ErrorException::throwException, this error handler respects error + * levels; i.e. it logs warnings and notices, but doesn't throw exceptions. + * This should probably only be used in the inner execution loop of the + * shell, as most of the time a thrown exception is much more useful. * * If the error type matches the `errorLoggingLevel` config, it will be * logged as well, regardless of the `error_reporting` level. @@ -1116,7 +1384,7 @@ class Shell extends Application * @see \Psy\Exception\ErrorException::throwException * @see \Psy\Shell::writeException * - * @throws \Psy\Exception\ErrorException depending on the current error_reporting level + * @throws \Psy\Exception\ErrorException depending on the error level * * @param int $errno Error type * @param string $errstr Message @@ -1125,10 +1393,20 @@ class Shell extends Application */ public function handleError($errno, $errstr, $errfile, $errline) { - if ($errno & \error_reporting()) { + // This is an error worth throwing. + // + // n.b. Technically we can't handle all of these in userland code, but + // we'll list 'em all for good measure + if ($errno & (\E_ERROR | \E_PARSE | \E_CORE_ERROR | \E_COMPILE_ERROR | \E_USER_ERROR | \E_RECOVERABLE_ERROR)) { ErrorException::throwException($errno, $errstr, $errfile, $errline); - } elseif ($errno & $this->config->errorLoggingLevel()) { - // log it and continue... + } + + // When errors are suppressed, the error_reporting value will differ + // from when we started executing. In that case, we won't log errors. + $errorsSuppressed = $this->errorReporting !== null && $this->errorReporting !== \error_reporting(); + + // Otherwise log it and continue. + if ($errno & \error_reporting() || (!$errorsSuppressed && ($errno & $this->config->errorLoggingLevel()))) { $this->writeException(new ErrorException($errstr, 0, $errno, $errfile, $errline)); } } @@ -1142,7 +1420,7 @@ class Shell extends Application * * @return string Formatted value */ - protected function presentValue($val) + protected function presentValue($val): string { return $this->config->getPresenter()->present($val); } @@ -1152,9 +1430,9 @@ class Shell extends Application * * @param string $input * - * @return null|BaseCommand + * @return BaseCommand|null */ - protected function getCommand($input) + protected function getCommand(string $input) { $input = new StringInput($input); if ($name = $input->getFirstArgument()) { @@ -1169,7 +1447,7 @@ class Shell extends Application * * @return bool True if the shell has a command for the given input */ - protected function hasCommand($input) + protected function hasCommand(string $input): bool { if (\preg_match('/([^\s]+?)(?:\s|$)/A', \ltrim($input), $match)) { return $this->has($match[1]); @@ -1181,15 +1459,21 @@ class Shell extends Application /** * Get the current input prompt. * - * @return string + * @return string|null */ protected function getPrompt() { - if ($this->hasCode()) { - return static::BUFF_PROMPT; + if ($this->output->isQuiet()) { + return null; } - return $this->config->getPrompt() ?: static::PROMPT; + $theme = $this->config->theme(); + + if ($this->hasCode()) { + return $theme->bufferPrompt(); + } + + return $theme->prompt(); } /** @@ -1201,20 +1485,26 @@ class Shell extends Application * If readline is enabled, this delegates to readline. Otherwise, it's an * ugly `fgets` call. * - * @return string One line of user input + * @param bool $interactive + * + * @return string|false One line of user input */ - protected function readline() + protected function readline(bool $interactive = true) { + $prompt = $this->config->theme()->replayPrompt(); + if (!empty($this->inputBuffer)) { $line = \array_shift($this->inputBuffer); if (!$line instanceof SilentInput) { - $this->output->writeln(\sprintf('<aside>%s %s</aside>', static::REPLAY, OutputFormatter::escape($line))); + $this->output->writeln(\sprintf('<whisper>%s</whisper><aside>%s</aside>', $prompt, OutputFormatter::escape($line))); } return $line; } - if ($bracketedPaste = $this->config->useBracketedPaste()) { + $bracketedPaste = $interactive && $this->config->useBracketedPaste(); + + if ($bracketedPaste) { \printf("\e[?2004h"); // Enable bracketed paste } @@ -1232,21 +1522,35 @@ class Shell extends Application * * @return string */ - protected function getHeader() + protected function getHeader(): string { - return \sprintf('<aside>%s by Justin Hileman</aside>', $this->getVersion()); + return \sprintf('<whisper>%s by Justin Hileman</whisper>', $this->getVersion()); } /** * Get the current version of Psy Shell. * + * @deprecated call self::getVersionHeader instead + * * @return string */ - public function getVersion() + public function getVersion(): string { - $separator = $this->config->useUnicode() ? '—' : '-'; + return self::getVersionHeader($this->config->useUnicode()); + } - return \sprintf('Psy Shell %s (PHP %s %s %s)', self::VERSION, PHP_VERSION, $separator, PHP_SAPI); + /** + * Get a pretty header including the current version of Psy Shell. + * + * @param bool $useUnicode + * + * @return string + */ + public static function getVersionHeader(bool $useUnicode = false): string + { + $separator = $useUnicode ? '—' : '-'; + + return \sprintf('Psy Shell %s (PHP %s %s %s)', self::VERSION, \PHP_VERSION, $separator, \PHP_SAPI); } /** @@ -1264,7 +1568,7 @@ class Shell extends Application */ protected function autocomplete($text) { - @\trigger_error('Tab completion is provided by the AutoCompleter service', E_USER_DEPRECATED); + @\trigger_error('Tab completion is provided by the AutoCompleter service', \E_USER_DEPRECATED); } /** @@ -1305,21 +1609,20 @@ class Shell extends Application } /** - * @todo Implement self-update * @todo Implement prompt to start update * * @return void|string */ protected function writeVersionInfo() { - if (PHP_SAPI !== 'cli') { + if (\PHP_SAPI !== 'cli') { return; } try { $client = $this->config->getChecker(); if (!$client->isLatest()) { - $this->output->writeln(\sprintf('New version is available (current: %s, latest: %s)', self::VERSION, $client->getLatest())); + $this->output->writeln(\sprintf('<whisper>New version is available at psysh.org/psysh (current: %s, latest: %s)</whisper>', self::VERSION, $client->getLatest())); } } catch (\InvalidArgumentException $e) { $this->output->writeln($e->getMessage()); diff --git a/vendor/psy/psysh/src/Sudo.php b/vendor/psy/psysh/src/Sudo.php index be354bef9..d25566a3f 100644 --- a/vendor/psy/psysh/src/Sudo.php +++ b/vendor/psy/psysh/src/Sudo.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -25,11 +25,9 @@ class Sudo * * @return mixed Value of $object->property */ - public static function fetchProperty($object, $property) + public static function fetchProperty($object, string $property) { - $refl = new \ReflectionObject($object); - $prop = $refl->getProperty($property); - $prop->setAccessible(true); + $prop = self::getProperty(new \ReflectionObject($object), $property); return $prop->getValue($object); } @@ -43,11 +41,9 @@ class Sudo * * @return mixed Value of $object->property */ - public static function assignProperty($object, $property, $value) + public static function assignProperty($object, string $property, $value) { - $refl = new \ReflectionObject($object); - $prop = $refl->getProperty($property); - $prop->setAccessible(true); + $prop = self::getProperty(new \ReflectionObject($object), $property); $prop->setValue($object, $value); return $value; @@ -62,12 +58,8 @@ class Sudo * * @return mixed */ - public static function callMethod($object, $method, $args = null) + public static function callMethod($object, string $method, ...$args) { - $args = \func_get_args(); - $object = \array_shift($args); - $method = \array_shift($args); - $refl = new \ReflectionObject($object); $reflMethod = $refl->getMethod($method); $reflMethod->setAccessible(true); @@ -83,10 +75,9 @@ class Sudo * * @return mixed Value of $class::$property */ - public static function fetchStaticProperty($class, $property) + public static function fetchStaticProperty($class, string $property) { - $refl = new \ReflectionClass($class); - $prop = $refl->getProperty($property); + $prop = self::getProperty(new \ReflectionClass($class), $property); $prop->setAccessible(true); return $prop->getValue(); @@ -101,11 +92,9 @@ class Sudo * * @return mixed Value of $class::$property */ - public static function assignStaticProperty($class, $property, $value) + public static function assignStaticProperty($class, string $property, $value) { - $refl = new \ReflectionClass($class); - $prop = $refl->getProperty($property); - $prop->setAccessible(true); + $prop = self::getProperty(new \ReflectionClass($class), $property); $prop->setValue($value); return $value; @@ -120,12 +109,8 @@ class Sudo * * @return mixed */ - public static function callStatic($class, $method, $args = null) + public static function callStatic($class, string $method, ...$args) { - $args = \func_get_args(); - $class = \array_shift($args); - $method = \array_shift($args); - $refl = new \ReflectionClass($class); $reflMethod = $refl->getMethod($method); $reflMethod->setAccessible(true); @@ -141,10 +126,67 @@ class Sudo * * @return mixed */ - public static function fetchClassConst($class, $const) + public static function fetchClassConst($class, string $const) { $refl = new \ReflectionClass($class); - return $refl->getConstant($const); + do { + if ($refl->hasConstant($const)) { + return $refl->getConstant($const); + } + + $refl = $refl->getParentClass(); + } while ($refl !== false); + + return false; + } + + /** + * Construct an instance of a class, bypassing private constructors. + * + * @param string $class class name + * @param mixed $args... + */ + public static function newInstance(string $class, ...$args) + { + $refl = new \ReflectionClass($class); + $instance = $refl->newInstanceWithoutConstructor(); + + $constructor = $refl->getConstructor(); + $constructor->setAccessible(true); + $constructor->invokeArgs($instance, $args); + + return $instance; + } + + /** + * Get a ReflectionProperty from an object (or its parent classes). + * + * @throws \ReflectionException if neither the object nor any of its parents has this property + * + * @param \ReflectionClass $refl + * @param string $property property name + * + * @return \ReflectionProperty + */ + private static function getProperty(\ReflectionClass $refl, string $property): \ReflectionProperty + { + $firstException = null; + do { + try { + $prop = $refl->getProperty($property); + $prop->setAccessible(true); + + return $prop; + } catch (\ReflectionException $e) { + if ($firstException === null) { + $firstException = $e; + } + + $refl = $refl->getParentClass(); + } + } while ($refl !== false); + + throw $firstException; } } diff --git a/vendor/psy/psysh/src/Sudo/SudoVisitor.php b/vendor/psy/psysh/src/Sudo/SudoVisitor.php index 2b78a423e..0d95e8a31 100644 --- a/vendor/psy/psysh/src/Sudo/SudoVisitor.php +++ b/vendor/psy/psysh/src/Sudo/SudoVisitor.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -16,6 +16,7 @@ use PhpParser\Node\Arg; use PhpParser\Node\Expr\Assign; use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Expr\MethodCall; +use PhpParser\Node\Expr\New_; use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\StaticPropertyFetch; @@ -24,6 +25,7 @@ use PhpParser\Node\Name; use PhpParser\Node\Name\FullyQualified as FullyQualifiedName; use PhpParser\Node\Scalar\String_; use PhpParser\NodeVisitorAbstract; +use Psy\Sudo; /** * A PHP Parser node visitor which rewrites property and method access to use @@ -33,18 +35,19 @@ use PhpParser\NodeVisitorAbstract; */ class SudoVisitor extends NodeVisitorAbstract { - const SUDO_CLASS = 'Psy\Sudo'; - - const PROPERTY_FETCH = 'fetchProperty'; - const PROPERTY_ASSIGN = 'assignProperty'; - const METHOD_CALL = 'callMethod'; - const STATIC_PROPERTY_FETCH = 'fetchStaticProperty'; + const PROPERTY_FETCH = 'fetchProperty'; + const PROPERTY_ASSIGN = 'assignProperty'; + const METHOD_CALL = 'callMethod'; + const STATIC_PROPERTY_FETCH = 'fetchStaticProperty'; const STATIC_PROPERTY_ASSIGN = 'assignStaticProperty'; - const STATIC_CALL = 'callStatic'; - const CLASS_CONST_FETCH = 'fetchClassConst'; + const STATIC_CALL = 'callStatic'; + const CLASS_CONST_FETCH = 'fetchClassConst'; + const NEW_INSTANCE = 'newInstance'; /** * {@inheritdoc} + * + * @return int|Node|null Replacement node (or special return value) */ public function enterNode(Node $node) { @@ -58,8 +61,8 @@ class SudoVisitor extends NodeVisitorAbstract return $this->prepareCall(self::PROPERTY_FETCH, $args); } elseif ($node instanceof Assign && $node->var instanceof PropertyFetch) { $target = $node->var; - $name = $target->name instanceof Identifier ? $target->name->toString() : $target->name; - $args = [ + $name = $target->name instanceof Identifier ? $target->name->toString() : $target->name; + $args = [ $target->var, \is_string($name) ? new String_($name) : $name, $node->expr, @@ -73,11 +76,11 @@ class SudoVisitor extends NodeVisitorAbstract \array_unshift($args, new Arg($node->var)); // not using prepareCall because the $node->args we started with are already Arg instances - return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), self::METHOD_CALL, $args); + return new StaticCall(new FullyQualifiedName(Sudo::class), self::METHOD_CALL, $args); } elseif ($node instanceof StaticPropertyFetch) { $class = $node->class instanceof Name ? $node->class->toString() : $node->class; $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name; - $args = [ + $args = [ \is_string($class) ? new String_($class) : $class, \is_string($name) ? new String_($name) : $name, ]; @@ -85,9 +88,9 @@ class SudoVisitor extends NodeVisitorAbstract return $this->prepareCall(self::STATIC_PROPERTY_FETCH, $args); } elseif ($node instanceof Assign && $node->var instanceof StaticPropertyFetch) { $target = $node->var; - $class = $target->class instanceof Name ? $target->class->toString() : $target->class; - $name = $target->name instanceof Identifier ? $target->name->toString() : $target->name; - $args = [ + $class = $target->class instanceof Name ? $target->class->toString() : $target->class; + $name = $target->name instanceof Identifier ? $target->name->toString() : $target->name; + $args = [ \is_string($class) ? new String_($class) : $class, \is_string($name) ? new String_($name) : $name, $node->expr, @@ -95,29 +98,36 @@ class SudoVisitor extends NodeVisitorAbstract return $this->prepareCall(self::STATIC_PROPERTY_ASSIGN, $args); } elseif ($node instanceof StaticCall) { - $args = $node->args; + $args = $node->args; $class = $node->class instanceof Name ? $node->class->toString() : $node->class; - $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name; + $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name; \array_unshift($args, new Arg(\is_string($name) ? new String_($name) : $name)); \array_unshift($args, new Arg(\is_string($class) ? new String_($class) : $class)); // not using prepareCall because the $node->args we started with are already Arg instances - return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), self::STATIC_CALL, $args); + return new StaticCall(new FullyQualifiedName(Sudo::class), self::STATIC_CALL, $args); } elseif ($node instanceof ClassConstFetch) { $class = $node->class instanceof Name ? $node->class->toString() : $node->class; - $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name; - $args = [ + $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name; + $args = [ \is_string($class) ? new String_($class) : $class, \is_string($name) ? new String_($name) : $name, ]; return $this->prepareCall(self::CLASS_CONST_FETCH, $args); + } elseif ($node instanceof New_) { + $args = $node->args; + $class = $node->class instanceof Name ? $node->class->toString() : $node->class; + \array_unshift($args, new Arg(\is_string($class) ? new String_($class) : $class)); + + // not using prepareCall because the $node->args we started with are already Arg instances + return new StaticCall(new FullyQualifiedName(Sudo::class), self::NEW_INSTANCE, $args); } } - private function prepareCall($method, $args) + private function prepareCall(string $method, array $args): StaticCall { - return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), $method, \array_map(function ($arg) { + return new StaticCall(new FullyQualifiedName(Sudo::class), $method, \array_map(function ($arg) { return new Arg($arg); }, $args)); } diff --git a/vendor/psy/psysh/src/SuperglobalsEnv.php b/vendor/psy/psysh/src/SuperglobalsEnv.php new file mode 100644 index 000000000..0d0b00257 --- /dev/null +++ b/vendor/psy/psysh/src/SuperglobalsEnv.php @@ -0,0 +1,32 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy; + +/** + * Environment variables implementation via $_SERVER superglobal. + */ +class SuperglobalsEnv implements EnvInterface +{ + /** + * Get an environment variable by name. + * + * @return string|null + */ + public function get(string $key) + { + if (isset($_SERVER[$key]) && $_SERVER[$key]) { + return $_SERVER[$key]; + } + + return null; + } +} diff --git a/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php b/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php index 0751aa78b..17d0ec56f 100644 --- a/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php +++ b/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -50,7 +50,7 @@ class AutoCompleter * * @return array */ - public function processCallback($input, $index, $info = []) + public function processCallback(string $input, int $index, array $info = []): array { // Some (Windows?) systems provide incomplete `readline_info`, so let's // try to work around it. @@ -62,12 +62,14 @@ class AutoCompleter $line = $input; } - $tokens = \token_get_all('<?php ' . $line); + $tokens = \token_get_all('<?php '.$line); // remove whitespaces $tokens = \array_filter($tokens, function ($token) { return !AbstractMatcher::tokenIs($token, AbstractMatcher::T_WHITESPACE); }); + // reset index from 0 to remove missing index number + $tokens = \array_values($tokens); $matches = []; foreach ($this->matchers as $matcher) { @@ -91,7 +93,7 @@ class AutoCompleter * * @return array */ - public function callback($input, $index) + public function callback(string $input, int $index): array { return $this->processCallback($input, $index, \readline_info()); } diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php index 91816b202..ac0a52503 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -48,7 +48,7 @@ abstract class AbstractContextAwareMatcher extends AbstractMatcher implements Co * * @return mixed */ - protected function getVariable($var) + protected function getVariable(string $var) { return $this->context->get($var); } @@ -58,7 +58,7 @@ abstract class AbstractContextAwareMatcher extends AbstractMatcher implements Co * * @return array */ - protected function getVariables() + protected function getVariables(): array { return $this->context->getAll(); } diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php index c44af36ad..702109ddb 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -18,7 +18,7 @@ abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatc * * @return array */ - public function getDefaultParameterCompletion(array $reflectionParameters) + public function getDefaultParameterCompletion(array $reflectionParameters): array { $parametersProcessed = []; @@ -29,14 +29,14 @@ abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatc $defaultValue = $this->valueToShortString($parameter->getDefaultValue()); - $parametersProcessed[] = "\${$parameter->getName()} = $defaultValue"; + $parametersProcessed[] = \sprintf('$%s = %s', $parameter->getName(), $defaultValue); } if (empty($parametersProcessed)) { return []; } - return [\implode(', ', $parametersProcessed) . ')']; + return [\implode(', ', $parametersProcessed).')']; } /** @@ -48,7 +48,7 @@ abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatc * * @return string */ - private function valueToShortString($value) + private function valueToShortString($value): string { if (!\is_array($value)) { return \json_encode($value); @@ -62,7 +62,7 @@ abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatc foreach ($value as $key => $item) { $allSequential = $allSequential && \is_numeric($key) && $key === \count($chunksSequential); - $keyString = $this->valueToShortString($key); + $keyString = $this->valueToShortString($key); $itemString = $this->valueToShortString($item); $chunks[] = "{$keyString} => {$itemString}"; @@ -71,6 +71,6 @@ abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatc $chunksToImplode = $allSequential ? $chunksSequential : $chunks; - return '[' . \implode(', ', $chunksToImplode) . ']'; + return '['.\implode(', ', $chunksToImplode).']'; } } diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php index 63b715473..64726e84d 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -31,6 +31,7 @@ abstract class AbstractMatcher const T_CLONE = 'T_CLONE'; const T_NS_SEPARATOR = 'T_NS_SEPARATOR'; const T_STRING = 'T_STRING'; + const T_NAME_QUALIFIED = 'T_NAME_QUALIFIED'; const T_WHITESPACE = 'T_WHITESPACE'; const T_AND_EQUAL = 'T_AND_EQUAL'; const T_BOOLEAN_AND = 'T_BOOLEAN_AND'; @@ -49,7 +50,7 @@ abstract class AbstractMatcher * * @return bool */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { return false; } @@ -61,7 +62,7 @@ abstract class AbstractMatcher * * @return string */ - protected function getInput(array $tokens) + protected function getInput(array $tokens): string { $var = ''; $firstToken = \array_pop($tokens); @@ -79,18 +80,18 @@ abstract class AbstractMatcher * * @return string */ - protected function getNamespaceAndClass($tokens) + protected function getNamespaceAndClass(array $tokens): string { $class = ''; while (self::hasToken( - [self::T_NS_SEPARATOR, self::T_STRING], + [self::T_NS_SEPARATOR, self::T_STRING, self::T_NAME_QUALIFIED], $token = \array_pop($tokens) )) { if (self::needCompleteClass($token)) { continue; } - $class = $token[1] . $class; + $class = $token[1].$class; } return $class; @@ -104,7 +105,7 @@ abstract class AbstractMatcher * * @return array The matches resulting from the query */ - abstract public function getMatches(array $tokens, array $info = []); + abstract public function getMatches(array $tokens, array $info = []): array; /** * Check whether $word starts with $prefix. @@ -114,7 +115,7 @@ abstract class AbstractMatcher * * @return bool */ - public static function startsWith($prefix, $word) + public static function startsWith(string $prefix, string $word): bool { return \preg_match(\sprintf('#^%s#', $prefix), $word); } @@ -127,7 +128,7 @@ abstract class AbstractMatcher * * @return bool */ - public static function hasSyntax($token, $syntax = self::VAR_SYNTAX) + public static function hasSyntax($token, string $syntax = self::VAR_SYNTAX): bool { if (!\is_array($token)) { return false; @@ -141,12 +142,12 @@ abstract class AbstractMatcher /** * Check whether $token type is $which. * - * @param string $which A PHP token type * @param mixed $token A PHP token (see token_get_all) + * @param string $which A PHP token type * * @return bool */ - public static function tokenIs($token, $which) + public static function tokenIs($token, string $which): bool { if (!\is_array($token)) { return false; @@ -162,7 +163,7 @@ abstract class AbstractMatcher * * @return bool */ - public static function isOperator($token) + public static function isOperator($token): bool { if (!\is_string($token)) { return false; @@ -171,7 +172,7 @@ abstract class AbstractMatcher return \strpos(self::MISC_OPERATORS, $token) !== false; } - public static function needCompleteClass($token) + public static function needCompleteClass($token): bool { return \in_array($token[1], ['doc', 'ls', 'show']); } @@ -184,7 +185,7 @@ abstract class AbstractMatcher * * @return bool */ - public static function hasToken(array $coll, $token) + public static function hasToken(array $coll, $token): bool { if (!\is_array($token)) { return false; diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php index 8e976b0a2..8d17b4a83 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,7 +24,7 @@ class ClassAttributesMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -45,7 +45,7 @@ class ClassAttributesMatcher extends AbstractMatcher $vars = \array_merge( \array_map( function ($var) { - return '$' . $var; + return '$'.$var; }, \array_keys($reflection->getStaticProperties()) ), @@ -57,7 +57,7 @@ class ClassAttributesMatcher extends AbstractMatcher $chunks = \explode('\\', $class); $className = \array_pop($chunks); - return $className . '::' . $name; + return $className.'::'.$name; }, \array_filter( $vars, @@ -71,9 +71,9 @@ class ClassAttributesMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php index 3a269a353..a15f88688 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,10 +13,10 @@ namespace Psy\TabCompletion\Matcher; class ClassMethodDefaultParametersMatcher extends AbstractDefaultParametersMatcher { - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { - $openBracket = \array_pop($tokens); - $functionName = \array_pop($tokens); + $openBracket = \array_pop($tokens); + $functionName = \array_pop($tokens); $methodOperator = \array_pop($tokens); $class = $this->getNamespaceAndClass($tokens); @@ -39,7 +39,7 @@ class ClassMethodDefaultParametersMatcher extends AbstractDefaultParametersMatch return []; } - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { $openBracket = \array_pop($tokens); diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php index d278c18bf..671d050d5 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,7 +24,7 @@ class ClassMethodsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -57,7 +57,7 @@ class ClassMethodsMatcher extends AbstractMatcher $chunks = \explode('\\', $class); $className = \array_pop($chunks); - return $className . '::' . $name; + return $className.'::'.$name; }, \array_filter($methods, function ($method) use ($input) { return AbstractMatcher::startsWith($input, $method); @@ -68,9 +68,9 @@ class ClassMethodsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php index 844b3d2ae..1b9835a12 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,10 +23,10 @@ class ClassNamesMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $class = $this->getNamespaceAndClass($tokens); - if (\strlen($class) > 0 && $class[0] === '\\') { + if ($class !== '' && $class[0] === '\\') { $class = \substr($class, 1, \strlen($class)); } $quotedClass = \preg_quote($class); @@ -36,11 +36,11 @@ class ClassNamesMatcher extends AbstractMatcher // get the number of namespace separators $nsPos = \substr_count($class, '\\'); $pieces = \explode('\\', $className); - //$methods = Mirror::get($class); + // $methods = Mirror::get($class); return \implode('\\', \array_slice($pieces, $nsPos, \count($pieces))); }, \array_filter( - \get_declared_classes(), + \array_merge(\get_declared_classes(), \get_declared_interfaces()), function ($className) use ($quotedClass) { return AbstractMatcher::startsWith($quotedClass, $className); } @@ -51,18 +51,18 @@ class ClassNamesMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); - $blacklistedTokens = [ + $ignoredTokens = [ self::T_INCLUDE, self::T_INCLUDE_ONCE, self::T_REQUIRE, self::T_REQUIRE_ONCE, ]; switch (true) { - case self::hasToken([$blacklistedTokens], $token): - case self::hasToken([$blacklistedTokens], $prevToken): + case self::hasToken([$ignoredTokens], $token): + case self::hasToken([$ignoredTokens], $prevToken): case \is_string($token) && $token === '$': return false; case self::hasToken([self::T_NEW, self::T_OPEN_TAG, self::T_NS_SEPARATOR, self::T_STRING], $prevToken): diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php index e3d8423a6..8f7f3f611 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -58,7 +58,7 @@ class CommandsMatcher extends AbstractMatcher * * @return bool */ - protected function isCommand($name) + protected function isCommand(string $name): bool { return \in_array($name, $this->commands); } @@ -70,7 +70,7 @@ class CommandsMatcher extends AbstractMatcher * * @return bool */ - protected function matchCommand($name) + protected function matchCommand(string $name): bool { foreach ($this->commands as $cmd) { if ($this->startsWith($name, $cmd)) { @@ -84,7 +84,7 @@ class CommandsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -96,7 +96,7 @@ class CommandsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { /* $openTag */ \array_shift($tokens); $command = \array_shift($tokens); diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php index 71be18f58..58634352d 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ class ConstantsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $const = $this->getInput($tokens); @@ -35,9 +35,9 @@ class ConstantsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php index 66d9ea1dc..3d683bd8d 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,7 +13,7 @@ namespace Psy\TabCompletion\Matcher; class FunctionDefaultParametersMatcher extends AbstractDefaultParametersMatcher { - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { \array_pop($tokens); // open bracket @@ -30,7 +30,7 @@ class FunctionDefaultParametersMatcher extends AbstractDefaultParametersMatcher return $this->getDefaultParameterCompletion($parameters); } - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { $openBracket = \array_pop($tokens); diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php index 3aa12a1f0..e31f14d87 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,11 +23,11 @@ class FunctionsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $func = $this->getInput($tokens); - $functions = \get_defined_functions(); + $functions = \get_defined_functions(); $allFunctions = \array_merge($functions['user'], $functions['internal']); return \array_filter($allFunctions, function ($function) use ($func) { @@ -38,9 +38,9 @@ class FunctionsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php index 9d0deeeea..cc4c643d3 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -34,7 +34,7 @@ class KeywordsMatcher extends AbstractMatcher * * @return array */ - public function getKeywords() + public function getKeywords(): array { return $this->keywords; } @@ -46,7 +46,7 @@ class KeywordsMatcher extends AbstractMatcher * * @return bool */ - public function isKeyword($keyword) + public function isKeyword(string $keyword): bool { return \in_array($keyword, $this->keywords); } @@ -54,7 +54,7 @@ class KeywordsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -66,9 +66,9 @@ class KeywordsMatcher extends AbstractMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php index fb51bf7d2..2f3e16331 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ class MongoClientMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -33,8 +33,8 @@ class MongoClientMatcher extends AbstractContextAwareMatcher \array_pop($tokens); } $objectToken = \array_pop($tokens); - $objectName = \str_replace('$', '', $objectToken[1]); - $object = $this->getVariable($objectName); + $objectName = \str_replace('$', '', $objectToken[1]); + $object = $this->getVariable($objectName); if (!$object instanceof \MongoClient) { return []; @@ -55,9 +55,9 @@ class MongoClientMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php index fb1b9bbfb..c1edbc934 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ class MongoDatabaseMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -33,8 +33,8 @@ class MongoDatabaseMatcher extends AbstractContextAwareMatcher \array_pop($tokens); } $objectToken = \array_pop($tokens); - $objectName = \str_replace('$', '', $objectToken[1]); - $object = $this->getVariable($objectName); + $objectName = \str_replace('$', '', $objectToken[1]); + $object = $this->getVariable($objectName); if (!$object instanceof \MongoDB) { return []; @@ -51,9 +51,9 @@ class MongoDatabaseMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php index ff44f5ac1..29281f6ec 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,7 +26,7 @@ class ObjectAttributesMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -62,9 +62,9 @@ class ObjectAttributesMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php index 16fa0189f..fbf111e80 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,10 +13,10 @@ namespace Psy\TabCompletion\Matcher; class ObjectMethodDefaultParametersMatcher extends AbstractDefaultParametersMatcher { - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { - $openBracket = \array_pop($tokens); - $functionName = \array_pop($tokens); + $openBracket = \array_pop($tokens); + $functionName = \array_pop($tokens); $methodOperator = \array_pop($tokens); $objectToken = \array_pop($tokens); @@ -46,7 +46,7 @@ class ObjectMethodDefaultParametersMatcher extends AbstractDefaultParametersMatc return []; } - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { $openBracket = \array_pop($tokens); diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php index 23c751c7b..918f16881 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -26,7 +26,7 @@ class ObjectMethodsMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $input = $this->getInput($tokens); @@ -64,9 +64,9 @@ class ObjectMethodsMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { - $token = \array_pop($tokens); + $token = \array_pop($tokens); $prevToken = \array_pop($tokens); switch (true) { diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php index a142b7b2e..0c401068a 100644 --- a/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php +++ b/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -23,7 +23,7 @@ class VariablesMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function getMatches(array $tokens, array $info = []) + public function getMatches(array $tokens, array $info = []): array { $var = \str_replace('$', '', $this->getInput($tokens)); @@ -35,7 +35,7 @@ class VariablesMatcher extends AbstractContextAwareMatcher /** * {@inheritdoc} */ - public function hasMatched(array $tokens) + public function hasMatched(array $tokens): bool { $token = \array_pop($tokens); diff --git a/vendor/psy/psysh/src/Util/Docblock.php b/vendor/psy/psysh/src/Util/Docblock.php index 750210baa..6f926340c 100644 --- a/vendor/psy/psysh/src/Util/Docblock.php +++ b/vendor/psy/psysh/src/Util/Docblock.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -74,7 +74,10 @@ class Docblock public function __construct(\Reflector $reflector) { $this->reflector = $reflector; - $this->setComment($reflector->getDocComment()); + + if ($reflector instanceof \ReflectionClass || $reflector instanceof \ReflectionClassConstant || $reflector instanceof \ReflectionFunctionAbstract || $reflector instanceof \ReflectionProperty) { + $this->setComment($reflector->getDocComment()); + } } /** @@ -82,10 +85,10 @@ class Docblock * * @param string $comment The docblock */ - protected function setComment($comment) + protected function setComment(string $comment) { - $this->desc = ''; - $this->tags = []; + $this->desc = ''; + $this->tags = []; $this->comment = $comment; $this->parseComment($comment); @@ -98,7 +101,7 @@ class Docblock * * @return int Prefix length */ - protected static function prefixLength(array $lines) + protected static function prefixLength(array $lines): int { // find only lines with interesting things $lines = \array_filter($lines, function ($line) { @@ -109,7 +112,12 @@ class Docblock \sort($lines); $first = \reset($lines); - $last = \end($lines); + $last = \end($lines); + + // Special case for single-line comments + if (\count($lines) === 1) { + return \strspn($first, "* \t\n\r\0\x0B"); + } // find the longest common substring $count = \min(\strlen($first), \strlen($last)); @@ -127,7 +135,7 @@ class Docblock * * @param string $comment The docblock */ - protected function parseComment($comment) + protected function parseComment(string $comment) { // Strip the opening and closing tags of the docblock $comment = \substr($comment, 3, -2); @@ -164,7 +172,7 @@ class Docblock $this->desc = $body; } else { // This block is tagged - $tag = \substr(self::strTag($body), 1); + $tag = \substr(self::strTag($body), 1); $body = \ltrim(\substr($body, \strlen($tag) + 2)); if (isset(self::$vectors[$tag])) { @@ -196,7 +204,7 @@ class Docblock * * @return bool */ - public function hasTag($tag) + public function hasTag(string $tag): bool { return \is_array($this->tags) && \array_key_exists($tag, $this->tags); } @@ -208,7 +216,7 @@ class Docblock * * @return array */ - public function tag($tag) + public function tag(string $tag): array { return $this->hasTag($tag) ? $this->tags[$tag] : null; } @@ -220,7 +228,7 @@ class Docblock * * @return bool */ - public static function isTagged($str) + public static function isTagged(string $str): bool { return isset($str[1]) && $str[0] === '@' && !\preg_match('/[^A-Za-z]/', $str[1]); } @@ -232,7 +240,7 @@ class Docblock * * @return string|null */ - public static function strTag($str) + public static function strTag(string $str) { if (\preg_match('/^@[a-z0-9_]+/', $str, $matches)) { return $matches[0]; diff --git a/vendor/psy/psysh/src/Util/Json.php b/vendor/psy/psysh/src/Util/Json.php index 471f10e7d..71e6336f5 100644 --- a/vendor/psy/psysh/src/Util/Json.php +++ b/vendor/psy/psysh/src/Util/Json.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,9 +24,9 @@ class Json * * @return string */ - public static function encode($val, $opt = 0) + public static function encode($val, int $opt = 0): string { - $opt |= JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + $opt |= \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE; return \json_encode($val, $opt); } diff --git a/vendor/psy/psysh/src/Util/Mirror.php b/vendor/psy/psysh/src/Util/Mirror.php index 09c0b5b9a..d13d8d75a 100644 --- a/vendor/psy/psysh/src/Util/Mirror.php +++ b/vendor/psy/psysh/src/Util/Mirror.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,16 +14,17 @@ namespace Psy\Util; use Psy\Exception\RuntimeException; use Psy\Reflection\ReflectionClassConstant; use Psy\Reflection\ReflectionConstant_; +use Psy\Reflection\ReflectionNamespace; /** * A utility class for getting Reflectors. */ class Mirror { - const CONSTANT = 1; - const METHOD = 2; + const CONSTANT = 1; + const METHOD = 2; const STATIC_PROPERTY = 4; - const PROPERTY = 8; + const PROPERTY = 8; /** * Get a Reflector for a function, class or instance, constant, method or property. @@ -42,7 +43,7 @@ class Mirror * * @return \Reflector */ - public static function get($value, $member = null, $filter = 15) + public static function get($value, string $member = null, int $filter = 15): \Reflector { if ($member === null && \is_string($value)) { if (\function_exists($value)) { @@ -65,22 +66,18 @@ class Mirror } elseif ($filter & self::STATIC_PROPERTY && $class->hasProperty($member) && $class->getProperty($member)->isStatic()) { return $class->getProperty($member); } else { - throw new RuntimeException(\sprintf( - 'Unknown member %s on class %s', - $member, - \is_object($value) ? \get_class($value) : $value - )); + throw new RuntimeException(\sprintf('Unknown member %s on class %s', $member, \is_object($value) ? \get_class($value) : $value)); } } /** - * Get a ReflectionClass (or ReflectionObject) if possible. + * Get a ReflectionClass (or ReflectionObject, or ReflectionNamespace) if possible. * - * @throws \InvalidArgumentException if $value is not a class name or instance + * @throws \InvalidArgumentException if $value is not a namespace or class name or instance * * @param mixed $value * - * @return \ReflectionClass + * @return \ReflectionClass|ReflectionNamespace */ private static function getClass($value) { @@ -90,10 +87,64 @@ class Mirror if (!\is_string($value)) { throw new \InvalidArgumentException('Mirror expects an object or class'); - } elseif (!\class_exists($value) && !\interface_exists($value) && !\trait_exists($value)) { - throw new \InvalidArgumentException('Unknown class or function: ' . $value); } - return new \ReflectionClass($value); + if (\class_exists($value) || \interface_exists($value) || \trait_exists($value)) { + return new \ReflectionClass($value); + } + + $namespace = \preg_replace('/(^\\\\|\\\\$)/', '', $value); + if (self::namespaceExists($namespace)) { + return new ReflectionNamespace($namespace); + } + + throw new \InvalidArgumentException('Unknown namespace, class or function: '.$value); + } + + /** + * Check declared namespaces for a given namespace. + */ + private static function namespaceExists(string $value): bool + { + return \in_array(\strtolower($value), self::getDeclaredNamespaces()); + } + + /** + * Get an array of all currently declared namespaces. + * + * Note that this relies on at least one function, class, interface, trait + * or constant to have been declared in that namespace. + */ + private static function getDeclaredNamespaces(): array + { + $functions = \get_defined_functions(); + + $allNames = \array_merge( + $functions['internal'], + $functions['user'], + \get_declared_classes(), + \get_declared_interfaces(), + \get_declared_traits(), + \array_keys(\get_defined_constants()) + ); + + $namespaces = []; + foreach ($allNames as $name) { + $chunks = \explode('\\', \strtolower($name)); + + // the last one is the function or class or whatever... + \array_pop($chunks); + + while (!empty($chunks)) { + $namespaces[\implode('\\', $chunks)] = true; + \array_pop($chunks); + } + } + + $namespaceNames = \array_keys($namespaces); + + \sort($namespaceNames); + + return $namespaceNames; } } diff --git a/vendor/psy/psysh/src/Util/Str.php b/vendor/psy/psysh/src/Util/Str.php index 47d523996..f6d93e1f2 100644 --- a/vendor/psy/psysh/src/Util/Str.php +++ b/vendor/psy/psysh/src/Util/Str.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -59,7 +59,7 @@ EOS; * * @return string */ - public static function unvis($input) + public static function unvis(string $input): string { $output = \preg_replace_callback(self::UNVIS_RX, 'self::unvisReplace', $input); // other escapes & octal are handled by stripcslashes @@ -73,7 +73,7 @@ EOS; * * @return string */ - protected static function unvisReplace($match) + protected static function unvisReplace(array $match): string { // \040, \s if (!empty($match[1])) { diff --git a/vendor/psy/psysh/src/VarDumper/Cloner.php b/vendor/psy/psysh/src/VarDumper/Cloner.php index eb6c65e19..2b58594aa 100644 --- a/vendor/psy/psysh/src/VarDumper/Cloner.php +++ b/vendor/psy/psysh/src/VarDumper/Cloner.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -12,6 +12,7 @@ namespace Psy\VarDumper; use Symfony\Component\VarDumper\Caster\Caster; +use Symfony\Component\VarDumper\Cloner\Data; use Symfony\Component\VarDumper\Cloner\Stub; use Symfony\Component\VarDumper\Cloner\VarCloner; @@ -25,7 +26,7 @@ class Cloner extends VarCloner /** * {@inheritdoc} */ - public function cloneVar($var, $filter = 0) + public function cloneVar($var, $filter = 0): Data { $this->filter = $filter; @@ -35,7 +36,7 @@ class Cloner extends VarCloner /** * {@inheritdoc} */ - protected function castResource(Stub $stub, $isNested) + protected function castResource(Stub $stub, $isNested): array { return Caster::EXCLUDE_VERBOSE & $this->filter ? [] : parent::castResource($stub, $isNested); } diff --git a/vendor/psy/psysh/src/VarDumper/Dumper.php b/vendor/psy/psysh/src/VarDumper/Dumper.php index cc13b265a..230880e2e 100644 --- a/vendor/psy/psysh/src/VarDumper/Dumper.php +++ b/vendor/psy/psysh/src/VarDumper/Dumper.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -24,8 +24,8 @@ class Dumper extends CliDumper private $forceArrayIndexes; protected static $onlyControlCharsRx = '/^[\x00-\x1F\x7F]+$/'; - protected static $controlCharsRx = '/([\x00-\x1F\x7F]+)/'; - protected static $controlCharsMap = [ + protected static $controlCharsRx = '/([\x00-\x1F\x7F]+)/'; + protected static $controlCharsMap = [ "\0" => '\0', "\t" => '\t', "\n" => '\n', @@ -64,7 +64,7 @@ class Dumper extends CliDumper } } - protected function style($style, $value, $attr = []) + protected function style($style, $value, $attr = []): string { if ('ref' === $style) { $value = \strtr($value, '@', '#'); @@ -74,7 +74,7 @@ class Dumper extends CliDumper $map = self::$controlCharsMap; $cchr = $this->styles['cchr']; - $chunks = \preg_split(self::$controlCharsRx, $value, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); + $chunks = \preg_split(self::$controlCharsRx, $value, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); foreach ($chunks as $chunk) { if (\preg_match(self::$onlyControlCharsRx, $chunk)) { $chars = ''; diff --git a/vendor/psy/psysh/src/VarDumper/Presenter.php b/vendor/psy/psysh/src/VarDumper/Presenter.php index 4f821e0cd..cc74b62ea 100644 --- a/vendor/psy/psysh/src/VarDumper/Presenter.php +++ b/vendor/psy/psysh/src/VarDumper/Presenter.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -33,6 +33,8 @@ class Presenter ]; private $styles = [ 'num' => 'number', + 'integer' => 'integer', + 'float' => 'float', 'const' => 'const', 'str' => 'string', 'cchr' => 'default', @@ -49,19 +51,19 @@ class Presenter public function __construct(OutputFormatter $formatter, $forceArrayIndexes = false) { // Work around https://github.com/symfony/symfony/issues/23572 - $oldLocale = \setlocale(LC_NUMERIC, 0); - \setlocale(LC_NUMERIC, 'C'); + $oldLocale = \setlocale(\LC_NUMERIC, 0); + \setlocale(\LC_NUMERIC, 'C'); $this->dumper = new Dumper($formatter, $forceArrayIndexes); $this->dumper->setStyles($this->styles); // Now put the locale back - \setlocale(LC_NUMERIC, $oldLocale); + \setlocale(\LC_NUMERIC, $oldLocale); $this->cloner = new Cloner(); $this->cloner->addCasters(['*' => function ($obj, array $a, Stub $stub, $isNested, $filter = 0) { if ($filter || $isNested) { - if ($obj instanceof \Exception) { + if ($obj instanceof \Throwable) { $a = Caster::filter($a, Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY, $this->exceptionsImportants); } else { $a = Caster::filter($a, Caster::EXCLUDE_PROTECTED | Caster::EXCLUDE_PRIVATE); @@ -91,7 +93,7 @@ class Presenter * * @return string */ - public function presentRef($value) + public function presentRef($value): string { return $this->present($value, 0); } @@ -107,7 +109,7 @@ class Presenter * * @return string */ - public function present($value, $depth = null, $options = 0) + public function present($value, int $depth = null, int $options = 0): string { $data = $this->cloner->cloneVar($value, !($options & self::VERBOSE) ? Caster::EXCLUDE_VERBOSE : 0); @@ -116,21 +118,21 @@ class Presenter } // Work around https://github.com/symfony/symfony/issues/23572 - $oldLocale = \setlocale(LC_NUMERIC, 0); - \setlocale(LC_NUMERIC, 'C'); + $oldLocale = \setlocale(\LC_NUMERIC, 0); + \setlocale(\LC_NUMERIC, 'C'); $output = ''; $this->dumper->dump($data, function ($line, $depth) use (&$output) { if ($depth >= 0) { if ('' !== $output) { - $output .= PHP_EOL; + $output .= \PHP_EOL; } - $output .= \str_repeat(' ', $depth) . $line; + $output .= \str_repeat(' ', $depth).$line; } }); // Now put the locale back - \setlocale(LC_NUMERIC, $oldLocale); + \setlocale(\LC_NUMERIC, $oldLocale); return OutputFormatter::escape($output); } diff --git a/vendor/psy/psysh/src/VarDumper/PresenterAware.php b/vendor/psy/psysh/src/VarDumper/PresenterAware.php index 1645c604e..9375d67da 100644 --- a/vendor/psy/psysh/src/VarDumper/PresenterAware.php +++ b/vendor/psy/psysh/src/VarDumper/PresenterAware.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/vendor/psy/psysh/src/VersionUpdater/Checker.php b/vendor/psy/psysh/src/VersionUpdater/Checker.php index c4044870d..8e6f845e4 100644 --- a/vendor/psy/psysh/src/VersionUpdater/Checker.php +++ b/vendor/psy/psysh/src/VersionUpdater/Checker.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -13,19 +13,19 @@ namespace Psy\VersionUpdater; interface Checker { - const ALWAYS = 'always'; - const DAILY = 'daily'; - const WEEKLY = 'weekly'; + const ALWAYS = 'always'; + const DAILY = 'daily'; + const WEEKLY = 'weekly'; const MONTHLY = 'monthly'; - const NEVER = 'never'; + const NEVER = 'never'; /** * @return bool */ - public function isLatest(); + public function isLatest(): bool; /** * @return string */ - public function getLatest(); + public function getLatest(): string; } diff --git a/vendor/psy/psysh/src/VersionUpdater/Downloader.php b/vendor/psy/psysh/src/VersionUpdater/Downloader.php new file mode 100644 index 000000000..e9f18b9a4 --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/Downloader.php @@ -0,0 +1,47 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater; + +use Psy\Exception\ErrorException; + +interface Downloader +{ + /** + * Set the directory where the download will be written to. + * + * @param string $tempDir + */ + public function setTempDir(string $tempDir); + + /** + * @param string $url + * + * @return bool + * + * @throws ErrorException on failure + */ + public function download(string $url): bool; + + /** + * Get the temporary file name the download was written to. + * + * @return string + */ + public function getFilename(): string; + + /** + * Delete the downloaded file if it exists. + * + * @return void + */ + public function cleanup(); +} diff --git a/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php b/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php new file mode 100644 index 000000000..da3e5b45d --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/Downloader/CurlDownloader.php @@ -0,0 +1,84 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater\Downloader; + +use Psy\Exception\ErrorException; +use Psy\Shell; +use Psy\VersionUpdater\Downloader; + +class CurlDownloader implements Downloader +{ + private $tempDir = null; + private $outputFile = null; + + /** {@inheritDoc} */ + public function setTempDir(string $tempDir) + { + $this->tempDir = $tempDir; + } + + /** {@inheritDoc} */ + public function download(string $url): bool + { + $tempDir = $this->tempDir ?: \sys_get_temp_dir(); + $this->outputFile = \tempnam($tempDir, 'psysh-archive-'); + $targetName = $this->outputFile.'.tar.gz'; + + if (!\rename($this->outputFile, $targetName)) { + return false; + } + + $this->outputFile = $targetName; + + $outputHandle = \fopen($this->outputFile, 'w'); + if (!$outputHandle) { + return false; + } + $curl = \curl_init(); + \curl_setopt_array($curl, [ + \CURLOPT_FAILONERROR => true, + \CURLOPT_HEADER => 0, + \CURLOPT_FOLLOWLOCATION => true, + \CURLOPT_TIMEOUT => 10, + \CURLOPT_FILE => $outputHandle, + \CURLOPT_HTTPHEADER => [ + 'User-Agent' => 'PsySH/'.Shell::VERSION, + ], + ]); + \curl_setopt($curl, \CURLOPT_URL, $url); + $result = \curl_exec($curl); + $error = \curl_error($curl); + \curl_close($curl); + + \fclose($outputHandle); + + if (!$result) { + throw new ErrorException('cURL Error: '.$error); + } + + return (bool) $result; + } + + /** {@inheritDoc} */ + public function getFilename(): string + { + return $this->outputFile; + } + + /** {@inheritDoc} */ + public function cleanup() + { + if (\file_exists($this->outputFile)) { + \unlink($this->outputFile); + } + } +} diff --git a/vendor/psy/psysh/src/VersionUpdater/Downloader/Factory.php b/vendor/psy/psysh/src/VersionUpdater/Downloader/Factory.php new file mode 100644 index 000000000..1baba79c9 --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/Downloader/Factory.php @@ -0,0 +1,33 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater\Downloader; + +use Psy\Exception\ErrorException; +use Psy\VersionUpdater\Downloader; + +class Factory +{ + /** + * @return Downloader + * + * @throws ErrorException If no downloaders can be used + */ + public static function getDownloader(): Downloader + { + if (\extension_loaded('curl')) { + return new CurlDownloader(); + } elseif (\ini_get('allow_url_fopen')) { + return new FileDownloader(); + } + throw new ErrorException('No downloader available.'); + } +} diff --git a/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php b/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php new file mode 100644 index 000000000..c70aaa436 --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/Downloader/FileDownloader.php @@ -0,0 +1,56 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater\Downloader; + +use Psy\VersionUpdater\Downloader; + +class FileDownloader implements Downloader +{ + private $tempDir = null; + private $outputFile = null; + + /** {@inheritDoc} */ + public function setTempDir(string $tempDir) + { + $this->tempDir = $tempDir; + } + + /** {@inheritDoc} */ + public function download(string $url): bool + { + $tempDir = $this->tempDir ?: \sys_get_temp_dir(); + $this->outputFile = \tempnam($tempDir, 'psysh-archive-'); + $targetName = $this->outputFile.'.tar.gz'; + + if (!\rename($this->outputFile, $targetName)) { + return false; + } + + $this->outputFile = $targetName; + + return (bool) \file_put_contents($this->outputFile, \file_get_contents($url)); + } + + /** {@inheritDoc} */ + public function getFilename(): string + { + return $this->outputFile; + } + + /** {@inheritDoc} */ + public function cleanup() + { + if (\file_exists($this->outputFile)) { + \unlink($this->outputFile); + } + } +} diff --git a/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php b/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php index 40cfc2e2f..726a3382b 100644 --- a/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php +++ b/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -22,15 +22,19 @@ class GitHubChecker implements Checker /** * @return bool */ - public function isLatest() + public function isLatest(): bool { - return \version_compare(Shell::VERSION, $this->getLatest(), '>='); + // version_compare doesn't handle semver completely; + // strip pre-release and build metadata before comparing + $version = \preg_replace('/[+-]\w+/', '', Shell::VERSION); + + return \version_compare($version, $this->getLatest(), '>='); } /** * @return string */ - public function getLatest() + public function getLatest(): string { if (!isset($this->latest)) { $this->setLatest($this->getVersionFromTag()); @@ -42,7 +46,7 @@ class GitHubChecker implements Checker /** * @param string $version */ - public function setLatest($version) + public function setLatest(string $version) { $this->latest = $version; } @@ -70,8 +74,8 @@ class GitHubChecker implements Checker { $context = \stream_context_create([ 'http' => [ - 'user_agent' => 'PsySH/' . Shell::VERSION, - 'timeout' => 3, + 'user_agent' => 'PsySH/'.Shell::VERSION, + 'timeout' => 1.0, ], ]); diff --git a/vendor/psy/psysh/src/VersionUpdater/Installer.php b/vendor/psy/psysh/src/VersionUpdater/Installer.php new file mode 100644 index 000000000..2899aa7d7 --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/Installer.php @@ -0,0 +1,159 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater; + +use Psy\Exception\ErrorException; + +class Installer +{ + /** + * @var string + */ + protected $installLocation; + + /** + * @var string + */ + protected $tempDirectory; + + public function __construct(string $tempDirectory = null) + { + $this->tempDirectory = $tempDirectory ?: \sys_get_temp_dir(); + $this->installLocation = \Phar::running(false); + } + + /** + * Public to allow the Downloader to use the temporary directory if it's been set. + * + * @return string + */ + public function getTempDirectory(): string + { + return $this->tempDirectory; + } + + /** + * Verify the currently installed PsySH phar is writable so it can be replaced. + * + * @return bool + */ + public function isInstallLocationWritable(): bool + { + return \is_writable($this->installLocation); + } + + /** + * Verify the temporary directory is writable so downloads and backups can be saved there. + * + * @return bool + */ + public function isTempDirectoryWritable(): bool + { + return \is_writable($this->tempDirectory); + } + + /** + * Verifies the downloaded archive can be extracted with \PharData. + * + * @param string $sourceArchive + * + * @return bool + */ + public function isValidSource(string $sourceArchive): bool + { + if (!\class_exists('\PharData')) { + return false; + } + $pharArchive = new \PharData($sourceArchive); + + return $pharArchive->valid(); + } + + /** + * Extract the "psysh" phar from the archive and move it, replacing the currently installed phar. + * + * @param string $sourceArchive + * + * @return bool + */ + public function install(string $sourceArchive): bool + { + $pharArchive = new \PharData($sourceArchive); + $outputDirectory = \tempnam($this->tempDirectory, 'psysh-'); + + // remove the temp file, and replace it with a sub-directory + if (!\unlink($outputDirectory) || !\mkdir($outputDirectory, 0700)) { + return false; + } + + $pharArchive->extractTo($outputDirectory, ['psysh'], true); + + $renamed = \rename($outputDirectory.'/psysh', $this->installLocation); + + // Remove the sub-directory created to extract the psysh binary/phar + \rmdir($outputDirectory); + + return $renamed; + } + + /** + * Create a backup of the currently installed PsySH phar in the temporary directory with a version number postfix. + * + * @param string $version + * + * @return bool + */ + public function createBackup(string $version): bool + { + $backupFilename = $this->getBackupFilename($version); + + if (\file_exists($backupFilename) && !\is_writable($backupFilename)) { + return false; + } + + return \rename($this->installLocation, $backupFilename); + } + + /** + * Restore the backup file to the original PsySH install location. + * + * @param string $version + * + * @throws ErrorException If the backup file could not be found + * + * @return bool + */ + public function restoreFromBackup(string $version): bool + { + $backupFilename = $this->getBackupFilename($version); + + if (!\file_exists($backupFilename)) { + throw new ErrorException("Cannot restore from backup. File not found! [{$backupFilename}]"); + } + + return \rename($backupFilename, $this->installLocation); + } + + /** + * Get the full path for the backup target file location. + * + * @param string $version + * + * @return string + */ + public function getBackupFilename(string $version): string + { + $installFilename = \basename($this->installLocation); + + return \sprintf('%s/%s.%s', $this->tempDirectory, $installFilename, $version); + } +} diff --git a/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php b/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php index 7e0da4327..e81ccd4fc 100644 --- a/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php +++ b/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -19,7 +19,7 @@ class IntervalChecker extends GitHubChecker public function __construct($cacheFile, $interval) { $this->cacheFile = $cacheFile; - $this->interval = $interval; + $this->interval = $interval; } public function fetchLatestRelease() @@ -43,7 +43,10 @@ class IntervalChecker extends GitHubChecker return $release; } - private function getDateInterval() + /** + * @throws \RuntimeException if interval passed to constructor is not supported + */ + private function getDateInterval(): \DateInterval { switch ($this->interval) { case Checker::DAILY: @@ -53,12 +56,14 @@ class IntervalChecker extends GitHubChecker case Checker::MONTHLY: return new \DateInterval('P1M'); } + + throw new \RuntimeException('Invalid interval configured'); } private function updateCache($release) { $data = [ - 'last_check' => \date(DATE_ATOM), + 'last_check' => \date(\DATE_ATOM), 'release' => $release, ]; diff --git a/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php b/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php index c5c9bcb4e..318be7072 100644 --- a/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php +++ b/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,14 +14,14 @@ namespace Psy\VersionUpdater; use Psy\Shell; /** - * A version checker stub which always thinks the current verion is up to date. + * A version checker stub which always thinks the current version is up to date. */ class NoopChecker implements Checker { /** * @return bool */ - public function isLatest() + public function isLatest(): bool { return true; } @@ -29,7 +29,7 @@ class NoopChecker implements Checker /** * @return string */ - public function getLatest() + public function getLatest(): string { return Shell::VERSION; } diff --git a/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php b/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php new file mode 100644 index 000000000..6e644feb3 --- /dev/null +++ b/vendor/psy/psysh/src/VersionUpdater/SelfUpdate.php @@ -0,0 +1,192 @@ +<?php + +/* + * This file is part of Psy Shell. + * + * (c) 2012-2022 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Psy\VersionUpdater; + +use Psy\Exception\ErrorException; +use Psy\Shell; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Self update command. + * + * If a new version is available, this command will download it and replace the currently installed version + */ +class SelfUpdate +{ + const URL_PREFIX = 'https://github.com/bobthecow/psysh/releases/download'; + const SUCCESS = 0; + const FAILURE = 1; + + /** @var Checker */ + private $checker; + + /** @var Installer */ + private $installer; + + /** @var Downloader */ + private $downloader; + + public function __construct(Checker $checker, Installer $installer) + { + $this->checker = $checker; + $this->installer = $installer; + } + + /** + * Allow the downloader to be injected for testing. + * + * @param Downloader $downloader + * + * @return void + */ + public function setDownloader(Downloader $downloader) + { + $this->downloader = $downloader; + } + + /** + * Get the currently set Downloader or create one based on the capabilities of the php environment. + * + * @return Downloader + * + * @throws ErrorException if a downloader cannot be created for the php environment + */ + private function getDownloader(): Downloader + { + if (!isset($this->downloader)) { + return Downloader\Factory::getDownloader(); + } + + return $this->downloader; + } + + /** + * Build the download URL for the latest release. + * + * The file name used in the URL will include the flavour postfix extracted from the current version + * if it's present + * + * @param string $latestVersion + * + * @return string + */ + private function getAssetUrl(string $latestVersion): string + { + $versionPostfix = ''; + if (\strpos(Shell::VERSION, '+')) { + $versionPostfix = '-'.\substr(Shell::VERSION, \strpos(Shell::VERSION, '+') + 1); + } + $downloadFilename = \sprintf('psysh-%s%s.tar.gz', $latestVersion, $versionPostfix); + + // check if latest release data contains an asset matching the filename? + + return \sprintf('%s/%s/%s', self::URL_PREFIX, $latestVersion, $downloadFilename); + } + + /** + * Execute the self-update process. + * + * @param InputInterface $input + * @param OutputInterface $output + * + * @throws ErrorException if the current version is not restored when installation fails + * + * @return int + */ + public function run(InputInterface $input, OutputInterface $output): int + { + $currentVersion = Shell::VERSION; + + // already have the latest version? + if ($this->checker->isLatest()) { + // current version is latest version... + $output->writeln('<info>Current version is up-to-date.</info>'); + + return self::SUCCESS; + } + + // can overwrite current version? + if (!$this->installer->isInstallLocationWritable()) { + $output->writeln('<error>Installed version is not writable.</error>'); + + return self::FAILURE; + } + // can download to, and create a backup in the temp directory? + if (!$this->installer->isTempDirectoryWritable()) { + $output->writeln('<error>Temporary directory is not writable.</error>'); + + return self::FAILURE; + } + + $latestVersion = $this->checker->getLatest(); + $downloadUrl = $this->getAssetUrl($latestVersion); + + $output->write("Downloading PsySH $latestVersion ..."); + + try { + $downloader = $this->getDownloader(); + $downloader->setTempDir($this->installer->getTempDirectory()); + $downloaded = $downloader->download($downloadUrl); + } catch (ErrorException $e) { + $output->write(' <error>Failed.</error>'); + $output->writeln(\sprintf('<error>%s</error>', $e->getMessage())); + + return self::FAILURE; + } + + if (!$downloaded) { + $output->writeln('<error>Download failed.</error>'); + $downloader->cleanup(); + + return self::FAILURE; + } else { + $output->write(' <info>OK</info>'.\PHP_EOL); + } + + $downloadedFile = $downloader->getFilename(); + + if (!$this->installer->isValidSource($downloadedFile)) { + $downloader->cleanup(); + $output->writeln('<error>Downloaded file is not a valid archive.</error>'); + + return self::FAILURE; + } + + // create backup as bin.old-version in the temporary directory + $backupCreated = $this->installer->createBackup($currentVersion); + if (!$backupCreated) { + $downloader->cleanup(); + $output->writeln('<error>Failed to create a backup of the current version.</error>'); + + return self::FAILURE; + } elseif ($input->getOption('verbose')) { + $backupFilename = $this->installer->getBackupFilename($currentVersion); + $output->writeln('Created backup of current version: '.$backupFilename); + } + + if (!$this->installer->install($downloadedFile)) { + $this->installer->restoreFromBackup($currentVersion); + $downloader->cleanup(); + $output->writeln("<error>Failed to install new PsySH version $latestVersion.</error>"); + + return self::FAILURE; + } + + // Remove the downloaded archive file from the temporary directory + $downloader->cleanup(); + + $output->writeln("Updated PsySH from $currentVersion to <info>$latestVersion</info>"); + + return self::SUCCESS; + } +} diff --git a/vendor/psy/psysh/src/functions.php b/vendor/psy/psysh/src/functions.php index 4e875bbab..97455682c 100644 --- a/vendor/psy/psysh/src/functions.php +++ b/vendor/psy/psysh/src/functions.php @@ -3,7 +3,7 @@ /* * This file is part of Psy Shell. * - * (c) 2012-2018 Justin Hileman + * (c) 2012-2022 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -11,14 +11,16 @@ namespace Psy; +use Psy\ExecutionLoop\ProcessForker; use Psy\VersionUpdater\GitHubChecker; +use Psy\VersionUpdater\Installer; +use Psy\VersionUpdater\SelfUpdate; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; -use XdgBaseDir\Xdg; -if (!\function_exists('Psy\sh')) { +if (!\function_exists('Psy\\sh')) { /** * Command to return the eval-able code to startup PsySH. * @@ -26,13 +28,28 @@ if (!\function_exists('Psy\sh')) { * * @return string */ - function sh() + function sh(): string { - return 'extract(\Psy\debug(get_defined_vars(), isset($this) ? $this : @get_called_class()));'; + if (\version_compare(\PHP_VERSION, '8.0', '<')) { + return '\extract(\Psy\debug(\get_defined_vars(), isset($this) ? $this : @\get_called_class()));'; + } + + return <<<'EOS' +if (isset($this)) { + \extract(\Psy\debug(\get_defined_vars(), $this)); +} else { + try { + static::class; + \extract(\Psy\debug(\get_defined_vars(), static::class)); + } catch (\Error $e) { + \extract(\Psy\debug(\get_defined_vars())); + } +} +EOS; } } -if (!\function_exists('Psy\debug')) { +if (!\function_exists('Psy\\debug')) { /** * Invoke a Psy Shell from the current context. * @@ -70,14 +87,14 @@ if (!\function_exists('Psy\debug')) { * } * } * - * @param array $vars Scope variables from the calling context (default: array()) + * @param array $vars Scope variables from the calling context (default: []) * @param object|string $bindTo Bound object ($this) or class (self) value for the shell * * @return array Scope variables from the debugger session */ - function debug(array $vars = [], $bindTo = null) + function debug(array $vars = [], $bindTo = null): array { - echo PHP_EOL; + echo \PHP_EOL; $sh = new Shell(); $sh->setScopeVariables($vars); @@ -101,7 +118,7 @@ if (!\function_exists('Psy\debug')) { } } -if (!\function_exists('Psy\info')) { +if (!\function_exists('Psy\\info')) { /** * Get a bunch of debugging info about the current PsySH environment and * configuration. @@ -122,31 +139,39 @@ if (!\function_exists('Psy\info')) { return; } - $xdg = new Xdg(); - $home = \rtrim(\str_replace('\\', '/', $xdg->getHomeDir()), '/'); - $homePattern = '#^' . \preg_quote($home, '#') . '/#'; - - $prettyPath = function ($path) use ($homePattern) { - if (\is_string($path)) { - return \preg_replace($homePattern, '~/', $path); - } else { - return $path; - } + $prettyPath = function ($path) { + return $path; }; + $homeDir = (new ConfigPaths())->homeDir(); + if ($homeDir && $homeDir = \rtrim($homeDir, '/')) { + $homePattern = '#^'.\preg_quote($homeDir, '#').'/#'; + $prettyPath = function ($path) use ($homePattern) { + if (\is_string($path)) { + return \preg_replace($homePattern, '~/', $path); + } else { + return $path; + } + }; + } + $config = $lastConfig ?: new Configuration(); + $configEnv = (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) ? $_SERVER['PSYSH_CONFIG'] : false; + + $shellInfo = [ + 'PsySH version' => Shell::VERSION, + ]; $core = [ - 'PsySH version' => Shell::VERSION, - 'PHP version' => PHP_VERSION, - 'OS' => PHP_OS, + 'PHP version' => \PHP_VERSION, + 'OS' => \PHP_OS, 'default includes' => $config->getDefaultIncludes(), 'require semicolons' => $config->requireSemicolons(), 'error logging level' => $config->errorLoggingLevel(), 'config file' => [ 'default config file' => $prettyPath($config->getConfigFile()), 'local config file' => $prettyPath($config->getLocalConfigFile()), - 'PSYSH_CONFIG env' => $prettyPath(\getenv('PSYSH_CONFIG')), + 'PSYSH_CONFIG env' => $prettyPath($configEnv), ], // 'config dir' => $config->getConfigDir(), // 'data dir' => $config->getDataDir(), @@ -160,7 +185,7 @@ if (!\function_exists('Psy\info')) { try { $updateAvailable = !$checker->isLatest(); $latest = $checker->getLatest(); - } catch (\Exception $e) { + } catch (\Throwable $e) { } $updates = [ @@ -170,6 +195,12 @@ if (!\function_exists('Psy\info')) { 'update cache file' => $prettyPath($config->getUpdateCheckCacheFile()), ]; + $input = [ + 'interactive mode' => $config->interactiveMode(), + 'input interactive' => $config->getInputInteractive(), + 'yolo' => $config->yolo(), + ]; + if ($config->hasReadline()) { $info = \readline_info(); @@ -192,16 +223,28 @@ if (!\function_exists('Psy\info')) { ]; } - $pcntl = [ - 'pcntl available' => \function_exists('pcntl_signal'), - 'posix available' => \function_exists('posix_getpid'), + $output = [ + 'color mode' => $config->colorMode(), + 'output decorated' => $config->getOutputDecorated(), + 'output verbosity' => $config->verbosity(), + 'output pager' => $config->getPager(), ]; - $disabledFuncs = \array_map('trim', \explode(',', \ini_get('disable_functions'))); - if (\in_array('pcntl_signal', $disabledFuncs) || \in_array('pcntl_fork', $disabledFuncs)) { - $pcntl['pcntl disabled'] = true; + $pcntl = [ + 'pcntl available' => ProcessForker::isPcntlSupported(), + 'posix available' => ProcessForker::isPosixSupported(), + ]; + + if ($disabledPcntl = ProcessForker::disabledPcntlFunctions()) { + $pcntl['disabled pcntl functions'] = $disabledPcntl; } + if ($disabledPosix = ProcessForker::disabledPosixFunctions()) { + $pcntl['disabled posix functions'] = $disabledPosix; + } + + $pcntl['use pcntl'] = $config->usePcntl(); + $history = [ 'history file' => $prettyPath($config->getHistoryFile()), 'history size' => $config->getHistorySize(), @@ -222,11 +265,11 @@ if (!\function_exists('Psy\info')) { foreach ($meta as $key => $val) { switch ($key) { case 'built_at': - $d = new \DateTime('@' . $val); + $d = new \DateTime('@'.$val); $val = $d->format(\DateTime::RFC2822); break; } - $key = 'db ' . \str_replace('_', ' ', $key); + $key = 'db '.\str_replace('_', ' ', $key); $docs[$key] = $val; } } else { @@ -243,77 +286,112 @@ if (!\function_exists('Psy\info')) { $autocomplete = [ 'tab completion enabled' => $config->useTabCompletion(), - 'custom matchers' => \array_map('get_class', $config->getTabCompletionMatchers()), 'bracketed paste' => $config->useBracketedPaste(), ]; // Shenanigans, but totally justified. - if ($shell = Sudo::fetchProperty($config, 'shell')) { - $core['loop listeners'] = \array_map('get_class', Sudo::fetchProperty($shell, 'loopListeners')); - $core['commands'] = \array_map('get_class', $shell->all()); + try { + if ($shell = Sudo::fetchProperty($config, 'shell')) { + $shellClass = \get_class($shell); + if ($shellClass !== 'Psy\\Shell') { + $shellInfo = [ + 'PsySH version' => $shell::VERSION, + 'Shell class' => $shellClass, + ]; + } - $autocomplete['custom matchers'] = \array_map('get_class', Sudo::fetchProperty($shell, 'matchers')); + try { + $core['loop listeners'] = \array_map('get_class', Sudo::fetchProperty($shell, 'loopListeners')); + } catch (\ReflectionException $e) { + // shrug + } + + $core['commands'] = \array_map('get_class', $shell->all()); + + try { + $autocomplete['custom matchers'] = \array_map('get_class', Sudo::fetchProperty($shell, 'matchers')); + } catch (\ReflectionException $e) { + // shrug + } + } + } catch (\ReflectionException $e) { + // shrug } // @todo Show Presenter / custom casters. - return \array_merge($core, \compact('updates', 'pcntl', 'readline', 'history', 'docs', 'autocomplete')); + return \array_merge($shellInfo, $core, \compact('updates', 'pcntl', 'input', 'readline', 'output', 'history', 'docs', 'autocomplete')); } } -if (!\function_exists('Psy\bin')) { +if (!\function_exists('Psy\\bin')) { /** * `psysh` command line executable. * * @return \Closure */ - function bin() + function bin(): \Closure { return function () { + if (!isset($_SERVER['PSYSH_IGNORE_ENV']) || !$_SERVER['PSYSH_IGNORE_ENV']) { + if (\defined('HHVM_VERSION_ID')) { + \fwrite(\STDERR, 'PsySH v0.11 and higher does not support HHVM. Install an older version, or set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); + exit(1); + } + + if (\PHP_VERSION_ID < 70000) { + \fwrite(\STDERR, 'PHP 7.0.0 or higher is required. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); + exit(1); + } + + if (\PHP_VERSION_ID > 89999) { + \fwrite(\STDERR, 'PHP 9 or higher is not supported. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); + exit(1); + } + + if (!\function_exists('json_encode')) { + \fwrite(\STDERR, 'The JSON extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); + exit(1); + } + + if (!\function_exists('token_get_all')) { + \fwrite(\STDERR, 'The Tokenizer extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.'.\PHP_EOL); + exit(1); + } + } + $usageException = null; + $shellIsPhar = Shell::isPhar(); $input = new ArgvInput(); try { - $input->bind(new InputDefinition([ - new InputOption('help', 'h', InputOption::VALUE_NONE), - new InputOption('config', 'c', InputOption::VALUE_REQUIRED), - new InputOption('version', 'v', InputOption::VALUE_NONE), - new InputOption('cwd', null, InputOption::VALUE_REQUIRED), - new InputOption('color', null, InputOption::VALUE_NONE), - new InputOption('no-color', null, InputOption::VALUE_NONE), + $input->bind(new InputDefinition(\array_merge(Configuration::getInputOptions(), [ + new InputOption('help', 'h', InputOption::VALUE_NONE), + new InputOption('version', 'V', InputOption::VALUE_NONE), + new InputOption('self-update', 'u', InputOption::VALUE_NONE), new InputArgument('include', InputArgument::IS_ARRAY), - ])); + ]))); } catch (\RuntimeException $e) { $usageException = $e; } - $config = []; - - // Handle --config - if ($configFile = $input->getOption('config')) { - $config['configFile'] = $configFile; + try { + $config = Configuration::fromInput($input); + } catch (\InvalidArgumentException $e) { + $usageException = $e; } - // Handle --color and --no-color - if ($input->getOption('color') && $input->getOption('no-color')) { - $usageException = new \RuntimeException('Using both "--color" and "--no-color" options is invalid'); - } elseif ($input->getOption('color')) { - $config['colorMode'] = Configuration::COLOR_MODE_FORCED; - } elseif ($input->getOption('no-color')) { - $config['colorMode'] = Configuration::COLOR_MODE_DISABLED; - } - - $shell = new Shell(new Configuration($config)); - // Handle --help if ($usageException !== null || $input->getOption('help')) { if ($usageException !== null) { - echo $usageException->getMessage() . PHP_EOL . PHP_EOL; + echo $usageException->getMessage().\PHP_EOL.\PHP_EOL; } - $version = $shell->getVersion(); - $name = \basename(\reset($_SERVER['argv'])); + $version = Shell::getVersionHeader(false); + $argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : []; + $name = $argv ? \basename(\reset($argv)) : 'psysh'; + echo <<<EOL $version @@ -321,31 +399,61 @@ Usage: $name [--version] [--help] [files...] Options: - --help -h Display this help message. - --config -c Use an alternate PsySH config file location. - --cwd Use an alternate working directory. - --version -v Display the PsySH version. - --color Force colors in output. - --no-color Disable colors in output. + -h, --help Display this help message. + -c, --config FILE Use an alternate PsySH config file location. + --cwd PATH Use an alternate working directory. + -V, --version Display the PsySH version. EOL; + if ($shellIsPhar) { + echo <<<EOL + -u, --self-update Install a newer version if available. + +EOL; + } + echo <<<EOL + --color Force colors in output. + --no-color Disable colors in output. + -i, --interactive Force PsySH to run in interactive mode. + -n, --no-interactive Run PsySH without interactive input. Requires input from stdin. + -r, --raw-output Print var_export-style return values (for non-interactive input) + --compact Run PsySH with compact output. + -q, --quiet Shhhhhh. + -v|vv|vvv, --verbose Increase the verbosity of messages. + --yolo Run PsySH without input validation. You don't want this. + +EOL; + exit($usageException === null ? 0 : 1); } // Handle --version if ($input->getOption('version')) { - echo $shell->getVersion() . PHP_EOL; + echo Shell::getVersionHeader($config->useUnicode()).\PHP_EOL; exit(0); } + // Handle --self-update + if ($input->getOption('self-update')) { + if (!$shellIsPhar) { + \fwrite(\STDERR, 'The --self-update option can only be used with with a phar based install.'.\PHP_EOL); + exit(1); + } + $selfUpdate = new SelfUpdate(new GitHubChecker(), new Installer()); + $result = $selfUpdate->run($input, $config->getOutput()); + exit($result); + } + + $shell = new Shell($config); + // Pass additional arguments to Shell as 'includes' $shell->setIncludes($input->getArgument('include')); try { // And go! $shell->run(); - } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + } catch (\Throwable $e) { + \fwrite(\STDERR, $e->getMessage().\PHP_EOL); // @todo this triggers the "exited unexpectedly" logic in the // ForkingLoop, so we can't exit(1) after starting the shell... diff --git a/vendor/psy/psysh/test/ClassWithSecrets.php b/vendor/psy/psysh/test/ClassWithSecrets.php deleted file mode 100644 index adf27e3fd..000000000 --- a/vendor/psy/psysh/test/ClassWithSecrets.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -class ClassWithSecrets -{ - private const PRIVATE_CONST = 'private and const'; - private static $privateStaticProp = 'private and static and prop'; - private $privateProp = 'private and prop'; - - private static function privateStaticMethod($extra = null) - { - if ($extra !== null) { - return 'private and static and method with ' . \json_encode($extra); - } - - return 'private and static and method'; - } - - private function privateMethod($extra = null) - { - if ($extra !== null) { - return 'private and method with ' . \json_encode($extra); - } - - return 'private and method'; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php deleted file mode 100644 index 1925c3803..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\AbstractClassPass; - -class AbstractClassPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new AbstractClassPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['class A { abstract function a(); }'], - ['abstract class B { abstract function b() {} }'], - ['abstract class B { abstract function b() { echo "yep"; } }'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['abstract class C { function c() {} }'], - ['abstract class D { abstract function d(); }'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php b/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php deleted file mode 100644 index 1ff15c571..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\AssignThisVariablePass; - -class AssignThisVariablePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new AssignThisVariablePass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['$this = 3'], - ['strtolower($this = "this")'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['$this'], - ['$a = $this'], - ['$a = "this"; $$a = 3'], - ['$$this = "b"'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php b/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php deleted file mode 100644 index cd321b5de..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\CallTimePassByReferencePass; - -class CallTimePassByReferencePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new CallTimePassByReferencePass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['f(&$arg)'], - ['$object->method($first, &$arg)'], - ['$closure($first, &$arg, $last)'], - ['A::b(&$arg)'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['array(&$var)'], - ['$a = &$b'], - ['f(array(&$b))'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php deleted file mode 100644 index c80f257ac..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\CalledClassPass; - -class CalledClassPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new CalledClassPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\ErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['get_class()'], - ['get_class(null)'], - ['get_called_class()'], - ['get_called_class(null)'], - ['function foo() { return get_class(); }'], - ['function foo() { return get_class(null); }'], - ['function foo() { return get_called_class(); }'], - ['function foo() { return get_called_class(null); }'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['get_class($foo)'], - ['get_class(bar())'], - ['get_called_class($foo)'], - ['get_called_class(bar())'], - ['function foo($bar) { return get_class($bar); }'], - ['function foo($bar) { return get_called_class($bar); }'], - ['class Foo { function bar() { return get_class(); } }'], - ['class Foo { function bar() { return get_class(null); } }'], - ['class Foo { function bar() { return get_called_class(); } }'], - ['class Foo { function bar() { return get_called_class(null); } }'], - ['$foo = function () {}; $foo()'], - ]; - } - - /** - * @dataProvider validTraitStatements - */ - public function testProcessTraitStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validTraitStatements() - { - return [ - ['trait Foo { function bar() { return get_class(); } }'], - ['trait Foo { function bar() { return get_class(null); } }'], - ['trait Foo { function bar() { return get_called_class(); } }'], - ['trait Foo { function bar() { return get_called_class(null); } }'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php b/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php deleted file mode 100644 index 6962c1141..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use PhpParser\NodeTraverser; -use Psy\CodeCleaner\CodeCleanerPass; -use Psy\Test\ParserTestCase; - -class CodeCleanerTestCase extends ParserTestCase -{ - protected $pass; - - public function tearDown() - { - $this->pass = null; - parent::tearDown(); - } - - protected function setPass(CodeCleanerPass $pass) - { - $this->pass = $pass; - if (!isset($this->traverser)) { - $this->traverser = new NodeTraverser(); - } - $this->traverser->addVisitor($this->pass); - } - - protected function parseAndTraverse($code, $prefix = '<?php ') - { - return $this->traverse($this->parse($code, $prefix)); - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php deleted file mode 100644 index b22766c76..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ExitPass; - -class ExitPassTest extends CodeCleanerTestCase -{ - /** - * @var string - */ - private $expectedExceptionString = '\\Psy\\Exception\\BreakException::exitShell()'; - - public function setUp() - { - $this->setPass(new ExitPass()); - } - - /** - * @dataProvider dataProviderExitStatement - */ - public function testExitStatement($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - /** - * Data provider for testExitStatement. - * - * @return array - */ - public function dataProviderExitStatement() - { - return [ - ['exit;', "{$this->expectedExceptionString};"], - ['exit();', "{$this->expectedExceptionString};"], - ['die;', "{$this->expectedExceptionString};"], - ['exit(die(die));', "{$this->expectedExceptionString};"], - ['if (true) { exit; }', "if (true) {\n {$this->expectedExceptionString};\n}"], - ['if (false) { exit; }', "if (false) {\n {$this->expectedExceptionString};\n}"], - ['1 and exit();', "1 and {$this->expectedExceptionString};"], - ['foo() or die', "foo() or {$this->expectedExceptionString};"], - ['exit and 1;', "{$this->expectedExceptionString} and 1;"], - ['if (exit) { echo $wat; }', "if ({$this->expectedExceptionString}) {\n echo \$wat;\n}"], - ['exit or die;', "{$this->expectedExceptionString} or {$this->expectedExceptionString};"], - ['switch (die) { }', "switch ({$this->expectedExceptionString}) {\n}"], - ['for ($i = 1; $i < 10; die) {}', "for (\$i = 1; \$i < 10; {$this->expectedExceptionString}) {\n}"], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php deleted file mode 100644 index 1808d11fb..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\FinalClassPass; - -class FinalClassPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new FinalClassPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - $data = [ - ['final class A {} class B extends A {}'], - ['class A {} final class B extends A {} class C extends B {}'], - // array('namespace A { final class B {} } namespace C { class D extends \\A\\B {} }'), - ]; - - if (!\defined('HHVM_VERSION')) { - // For some reason Closure isn't final in HHVM? - $data[] = ['class A extends \\Closure {}']; - } - - return $data; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['class A extends \\stdClass {}'], - ['final class A extends \\stdClass {}'], - ['class A {} class B extends A {}'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php deleted file mode 100644 index 0c674c0ed..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner\Fixtures; - -class ClassWithCallStatic -{ - public static function __callStatic($name, $arguments) - { - // wheee! - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php deleted file mode 100644 index 64c64c76c..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner\Fixtures; - -class ClassWithStatic -{ - public static function doStuff() - { - // Don't actually do stuff. - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php deleted file mode 100644 index 132dc061c..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner\Fixtures; - -trait TraitWithStatic -{ - public static function doStuff() - { - // Don't actually do stuff. - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php deleted file mode 100644 index 851eb2284..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\FunctionContextPass; - -class FunctionContextPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new FunctionContextPass()); - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['function foo() { yield; }'], - ['if (function(){ yield; })'], - ]; - } - - /** - * @dataProvider invalidYieldStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testInvalidYield($code) - { - $this->parseAndTraverse($code); - } - - public function invalidYieldStatements() - { - return [ - ['yield'], - ['if (yield)'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php deleted file mode 100644 index 85f6a04c0..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\FunctionReturnInWriteContextPass; -use Psy\Exception\FatalErrorException; - -class FunctionReturnInWriteContextPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new FunctionReturnInWriteContextPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - * @expectedExceptionMessage Can't use function return value in write context - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['f(&g())'], - ['array(& $object->method())'], - ['$a->method(& $closure())'], - ['array(& A::b())'], - ['f() = 5'], - ['unset(h())'], - ]; - } - - public function testIsset() - { - try { - $this->traverser->traverse($this->parse('isset(strtolower("A"))')); - $this->fail(); - } catch (FatalErrorException $e) { - if (\version_compare(PHP_VERSION, '5.5', '>=')) { - $this->assertContains( - 'Cannot use isset() on the result of a function call (you can use "null !== func()" instead)', - $e->getMessage() - ); - } else { - $this->assertContains("Can't use function return value in write context", $e->getMessage()); - } - } - } - - /** - * @expectedException \Psy\Exception\FatalErrorException - * @expectedExceptionMessage Can't use function return value in write context - */ - public function testEmpty() - { - if (\version_compare(PHP_VERSION, '5.5', '>=')) { - $this->markTestSkipped(); - } - - $this->traverser->traverse($this->parse('empty(strtolower("A"))')); - } - - /** - * @dataProvider validStatements - */ - public function testValidStatements($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['isset($foo)'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php deleted file mode 100644 index 1c28b4a85..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ImplicitReturnPass; - -class ImplicitReturnPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new ImplicitReturnPass()); - } - - /** - * @dataProvider implicitReturns - */ - public function testProcess($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function implicitReturns() - { - $data = [ - ['4', 'return 4;'], - ['foo()', 'return foo();'], - ['return 1', 'return 1;'], - ['', 'return new \Psy\CodeCleaner\NoReturnValue();'], - ]; - - $from = 'echo "foo";'; - $to = <<<'EOS' -echo "foo"; -return new \Psy\CodeCleaner\NoReturnValue(); -EOS; - $data[] = [$from, $to]; - - $from = 'if (true) { 1; } elseif (true) { 2; } else { 3; }'; - $to = <<<'EOS' -if (true) { - return 1; -} elseif (true) { - return 2; -} else { - return 3; -} -return new \Psy\CodeCleaner\NoReturnValue(); -EOS; - $data[] = [$from, $to]; - - $from = 'class A {}'; - $to = <<<'EOS' -class A -{ -} -return new \Psy\CodeCleaner\NoReturnValue(); -EOS; - $data[] = [$from, $to]; - - $from = <<<'EOS' -switch (false) { - case 0: - 0; - case 1: - 1; - break; - case 2: - 2; - return; -} -EOS; - $to = <<<'EOS' -switch (false) { - case 0: - 0; - case 1: - return 1; - break; - case 2: - 2; - return; -} -return new \Psy\CodeCleaner\NoReturnValue(); -EOS; - $data[] = [$from, $to]; - - $from = <<<'EOS' -namespace Foo { - 1 + 1; -} -EOS; - $to = <<<'EOS' -namespace Foo; - -return 1 + 1; -EOS; - $data[] = [$from, $to]; - - $data[] = ['exit()', 'exit;']; - - return $data; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php b/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php deleted file mode 100644 index b8c63313e..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\InstanceOfPass; - -class InstanceOfPassTest extends CodeCleanerTestCase -{ - protected function setUp() - { - $this->setPass(new InstanceOfPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessInvalidStatement($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['null instanceof stdClass'], - ['true instanceof stdClass'], - ['9 instanceof stdClass'], - ['1.0 instanceof stdClass'], - ['"foo" instanceof stdClass'], - ['__DIR__ instanceof stdClass'], - ['PHP_SAPI instanceof stdClass'], - ['1+1 instanceof stdClass'], - ['true && false instanceof stdClass'], - ['"a"."b" instanceof stdClass'], - ['!5 instanceof stdClass'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessValidStatement($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - $data = [ - ['$a instanceof stdClass'], - ['strtolower("foo") instanceof stdClass'], - ['array(1) instanceof stdClass'], - ['(string) "foo" instanceof stdClass'], - ['(1+1) instanceof stdClass'], - ['"foo ${foo} $bar" instanceof stdClass'], - ['DateTime::ISO8601 instanceof stdClass'], - ]; - - return $data; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php b/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php deleted file mode 100644 index 9df633e89..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\LeavePsyshAlonePass; - -class LeavePsyshAlonePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new LeavePsyshAlonePass()); - } - - public function testPassesInlineHtmlThroughJustFine() - { - $inline = $this->parse('not php at all!', ''); - $this->traverse($inline); - $this->assertTrue(true); - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['array_merge()'], - ['__psysh__()'], - ['$this'], - ['$psysh'], - ['$__psysh'], - ['$banana'], - ]; - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\RuntimeException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['$__psysh__'], - ['var_dump($__psysh__)'], - ['$__psysh__ = "your mom"'], - ['$__psysh__->fakeFunctionCall()'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php b/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php deleted file mode 100644 index 5c4c7b059..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\LegacyEmptyPass; - -class LegacyEmptyPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new LegacyEmptyPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\ParseErrorException - */ - public function testProcessInvalidStatement($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - if (\version_compare(PHP_VERSION, '5.5', '>=')) { - return [ - ['empty()'], - ]; - } - - return [ - ['empty()'], - ['empty(null)'], - ['empty(PHP_EOL)'], - ['empty("wat")'], - ['empty(1.1)'], - ['empty(Foo::$bar)'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessValidStatement($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - if (\version_compare(PHP_VERSION, '5.5', '<')) { - return [ - ['empty($foo)'], - ]; - } - - return [ - ['empty($foo)'], - ['empty(null)'], - ['empty(PHP_EOL)'], - ['empty("wat")'], - ['empty(1.1)'], - ['empty(Foo::$bar)'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php deleted file mode 100644 index b7a360d69..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ListPass; - -class ListPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new ListPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\ParseErrorException - */ - public function testProcessInvalidStatement($code, $expectedMessage) - { - if (\method_exists($this, 'setExpectedException')) { - $this->setExpectedException('Psy\Exception\ParseErrorException', $expectedMessage); - } else { - $this->expectExceptionMessage($expectedMessage); - } - - $stmts = $this->parse($code); - $this->traverser->traverse($stmts); - } - - public function invalidStatements() - { - // Not typo. It is ambiguous whether "Syntax" or "syntax". - $errorShortListAssign = "yntax error, unexpected '='"; - $errorEmptyList = 'Cannot use empty list'; - $errorAssocListAssign = 'Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting \',\' or \')\''; - $errorNonVariableAssign = 'Assignments can only happen to writable values'; - $errorPhpParserSyntax = 'PHP Parse error: Syntax error, unexpected'; - - $invalidExpr = [ - ['list() = array()', $errorEmptyList], - ['list("a") = array(1)', $errorPhpParserSyntax], - ]; - - if (\version_compare(PHP_VERSION, '7.1', '<')) { - return \array_merge($invalidExpr, [ - ['list("a" => _) = array("a" => 1)', $errorPhpParserSyntax], - ['[] = []', $errorShortListAssign], - ['[$a] = [1]', $errorShortListAssign], - ['list("a" => $a) = array("a" => 1)', $errorAssocListAssign], - ['[$a[0], $a[1]] = [1, 2]', $errorShortListAssign], - ['[$a->b, $a->c] = [1, 2]', $errorShortListAssign], - ]); - } - - return \array_merge($invalidExpr, [ - ['list("a" => _) = array("a" => 1)', $errorPhpParserSyntax], - ['["a"] = [1]', $errorNonVariableAssign], - ['[] = []', $errorEmptyList], - ['[,] = [1,2]', $errorEmptyList], - ['[,,] = [1,2,3]', $errorEmptyList], - ]); - } - - /** - * @dataProvider validStatements - */ - public function testProcessValidStatement($code) - { - $stmts = $this->parse($code); - $this->traverser->traverse($stmts); - $this->assertTrue(true); - } - - public function validStatements() - { - $validExpr = [ - ['list($a) = array(1)'], - ['list($x, $y) = array(1, 2)'], - ]; - - if (\version_compare(PHP_VERSION, '7.1', '>=')) { - return \array_merge($validExpr, [ - ['[$a] = array(1)'], - ['list($b) = [2]'], - ['[$x, $y] = array(1, 2)'], - ['[$a] = [1]'], - ['[$x, $y] = [1, 2]'], - ['["_" => $v] = ["_" => 1]'], - ['[$a,] = [1,2,3]'], - ['[,$b] = [1,2,3]'], - ['[$a,,$c] = [1,2,3]'], - ['[$a,,,] = [1,2,3]'], - ['[$a[0], $a[1]] = [1, 2]'], - ['[$a[0][0][0], $a[0][0][1]] = [1, 2]'], - ['[$a->b, $a->c] = [1, 2]'], - ['[$a->b[0], $a->c[1]] = [1, 2]'], - ['[$a[0]->b[0], $a[0]->c[1]] = [1, 2]'], - ['[$a[$b->c + $b->d]] = [1]'], - ['[$a->c()->d, $a->c()->e] = [1, 2]'], - ['[x()->a, x()->b] = [1, 2]'], - ]); - } - - return $validExpr; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php deleted file mode 100644 index 3b3630683..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\LoopContextPass; - -class LoopContextPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new LoopContextPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['continue'], - ['break'], - ['if (true) { continue; }'], - ['if (true) { break; }'], - ['if (false) { continue; }'], - ['if (false) { break; }'], - ['function foo() { break; }'], - ['function foo() { continue; }'], - - // actually enforce break/continue depth argument - ['do { break 2; } while (true)'], - ['do { continue 2; } while (true)'], - ['for ($a; $b; $c) { break 2; }'], - ['for ($a; $b; $c) { continue 2; }'], - ['foreach ($a as $b) { break 2; }'], - ['foreach ($a as $b) { continue 2; }'], - ['switch (true) { default: break 2; }'], - ['switch (true) { default: continue 2; }'], - ['while (true) { break 2; }'], - ['while (true) { continue 2; }'], - - // In PHP 5.4+, only positive literal integers are allowed - ['while (true) { break $n; }'], - ['while (true) { continue $n; }'], - ['while (true) { break N; }'], - ['while (true) { continue N; }'], - ['while (true) { break 0; }'], - ['while (true) { continue 0; }'], - ['while (true) { break -1; }'], - ['while (true) { continue -1; }'], - ['while (true) { break 1.0; }'], - ['while (true) { continue 1.0; }'], - ['while (true) { break 2.0; }'], - ['while (true) { continue 2.0; }'], - - // and once with nested loops, just for good measure - ['while (true) { while (true) { break 3; } }'], - ['while (true) { while (true) { continue 3; } }'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['do { break; } while (true)'], - ['do { continue; } while (true)'], - ['for ($a; $b; $c) { break; }'], - ['for ($a; $b; $c) { continue; }'], - ['foreach ($a as $b) { break; }'], - ['foreach ($a as $b) { continue; }'], - ['switch (true) { default: break; }'], - ['switch (true) { default: continue; }'], - ['while (true) { break; }'], - ['while (true) { continue; }'], - - // `break 1` is redundant, but not invalid - ['while (true) { break 1; }'], - ['while (true) { continue 1; }'], - - // and once with nested loops just for good measure - ['while (true) { while (true) { break 2; } }'], - ['while (true) { while (true) { continue 2; } }'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php b/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php deleted file mode 100644 index 321ac6ff3..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\MagicConstantsPass; - -class MagicConstantsPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new MagicConstantsPass()); - } - - /** - * @dataProvider magicConstants - */ - public function testProcess($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function magicConstants() - { - return [ - ['__DIR__;', 'getcwd();'], - ['__FILE__;', "'';"], - ['___FILE___;', '___FILE___;'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php b/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php deleted file mode 100644 index e8f013961..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner; -use Psy\CodeCleaner\NamespacePass; - -class NamespacePassTest extends CodeCleanerTestCase -{ - private $cleaner; - - public function setUp() - { - $this->cleaner = new CodeCleaner(); - $this->setPass(new NamespacePass($this->cleaner)); - } - - public function testProcess() - { - $this->parseAndTraverse(''); - $this->assertNull($this->cleaner->getNamespace()); - - $this->parseAndTraverse('array_merge()'); - $this->assertNull($this->cleaner->getNamespace()); - - // A non-block namespace statement should set the current namespace. - $this->parseAndTraverse('namespace Alpha'); - $this->assertSame(['Alpha'], $this->cleaner->getNamespace()); - - // A new non-block namespace statement should override the current namespace. - $this->parseAndTraverse('namespace Beta; class B {}'); - $this->assertSame(['Beta'], $this->cleaner->getNamespace()); - - // A new block namespace clears out the current namespace... - $this->parseAndTraverse('namespace Gamma { array_merge(); }'); - - if (\defined('PhpParser\\Node\\Stmt\\Namespace_::KIND_SEMICOLON')) { - $this->assertNull($this->cleaner->getNamespace()); - } else { - // But not for PHP-Parser < v3.1.2 :( - $this->assertSame(['Gamma'], $this->cleaner->getNamespace()); - } - - $this->parseAndTraverse('namespace Delta'); - - // A null namespace clears out the current namespace. - $this->parseAndTraverse('namespace { array_merge(); }'); - $this->assertNull($this->cleaner->getNamespace()); - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php b/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php deleted file mode 100644 index 11e9d013f..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use PhpParser\Node\Stmt\Expression; -use Psy\CodeCleaner\NoReturnValue; -use Psy\Test\ParserTestCase; - -class NoReturnValueTest extends ParserTestCase -{ - public function testCreate() - { - $stmt = NoReturnValue::create(); - if (\class_exists('PhpParser\Node\Stmt\Expression')) { - $stmt = new Expression($stmt); - } - - $this->assertSame( - $this->prettyPrint($this->parse('new \\Psy\CodeCleaner\\NoReturnValue()')), - $this->prettyPrint([$stmt]) - ); - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php b/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php deleted file mode 100644 index a73ad471f..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\PassableByReferencePass; - -class PassableByReferencePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new PassableByReferencePass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessStatementFails($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - return [ - ['array_pop(array())'], - ['array_pop(array($foo))'], - ['array_shift(array())'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessStatementPasses($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - return [ - ['array_pop(json_decode("[]"))'], - ['array_pop($foo)'], - ['array_pop($foo->bar)'], - ['array_pop($foo::baz)'], - ['array_pop(Foo::qux)'], - ]; - } - - /** - * @dataProvider validArrayMultisort - */ - public function testArrayMultisort($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validArrayMultisort() - { - return [ - ['array_multisort($a)'], - ['array_multisort($a, $b)'], - ['array_multisort($a, SORT_NATURAL, $b)'], - ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b)'], - ['array_multisort($a, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE, $b)'], - ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, SORT_ASC, $b)'], - ['array_multisort($a, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'], - ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'], - ['array_multisort($a, 1, $b)'], - ['array_multisort($a, 1 + 2, $b)'], - ['array_multisort($a, getMultisortFlags(), $b)'], - ]; - } - - /** - * @dataProvider invalidArrayMultisort - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testInvalidArrayMultisort($code) - { - $this->parseAndTraverse($code); - } - - public function invalidArrayMultisort() - { - return [ - ['array_multisort(1)'], - ['array_multisort(array(1, 2, 3))'], - ['array_multisort($a, SORT_NATURAL, SORT_ASC, SORT_NATURAL, $b)'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php b/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php deleted file mode 100644 index 6640e639b..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\RequirePass; - -class RequirePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new RequirePass()); - } - - /** - * @dataProvider exitStatements - */ - public function testExitStatement($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function exitStatements() - { - $resolve = '\\Psy\\CodeCleaner\\RequirePass::resolve'; - - return [ - // The basics - ['require "a"', "require $resolve(\"a\", 1);"], - ['require "b.php"', "require $resolve(\"b.php\", 1);"], - ['require_once "c"', "require_once $resolve(\"c\", 1);"], - ['require_once "d.php"', "require_once $resolve(\"d.php\", 1);"], - - // Ensure that line numbers work correctly - ["null;\nrequire \"e.php\"", "null;\nrequire $resolve(\"e.php\", 2);"], - ["null;\nrequire_once \"f.php\"", "null;\nrequire_once $resolve(\"f.php\", 2);"], - - // Things with expressions - ['require $foo', "require $resolve(\$foo, 1);"], - ['require_once $foo', "require_once $resolve(\$foo, 1);"], - ['require ($bar = "g.php")', "require $resolve(\$bar = \"g.php\", 1);"], - ['require_once ($bar = "h.php")', "require_once $resolve(\$bar = \"h.php\", 1);"], - ['$bar = require ($baz = "i.php")', "\$bar = (require $resolve(\$baz = \"i.php\", 1));"], - ['$bar = require_once ($baz = "j.php")', "\$bar = (require_once $resolve(\$baz = \"j.php\", 1));"], - ]; - } - - /** - * @expectedException \Psy\Exception\FatalErrorException - * @expectedExceptionMessage Failed opening required 'not a file name' in eval()'d code on line 2 - */ - public function testResolve() - { - RequirePass::resolve('not a file name', 2); - } - - /** - * @dataProvider emptyWarnings - * - * @expectedException \Psy\Exception\ErrorException - * @expectedExceptionMessage Filename cannot be empty on line 1 - */ - public function testResolveEmptyWarnings($file) - { - if (!E_WARNING & \error_reporting()) { - $this->markTestSkipped(); - } - - RequirePass::resolve($file, 1); - } - - public function emptyWarnings() - { - return [ - [null], - [false], - [''], - ]; - } - - public function testResolveWorks() - { - $this->assertEquals(__FILE__, RequirePass::resolve(__FILE__, 3)); - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php b/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php deleted file mode 100644 index 54186190d..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\StrictTypesPass; - -class StrictTypesPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - if (\version_compare(PHP_VERSION, '7.0', '<')) { - $this->markTestSkipped(); - } - - $this->setPass(new StrictTypesPass()); - } - - public function testProcess() - { - $this->assertProcessesAs('declare(strict_types=1)', 'declare (strict_types=1);'); - $this->assertProcessesAs('null', "declare (strict_types=1);\nnull;"); - $this->assertProcessesAs('declare(strict_types=0)', 'declare (strict_types=0);'); - $this->assertProcessesAs('null', 'null;'); - } - - /** - * @dataProvider invalidDeclarations - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testInvalidDeclarations($code) - { - $this->parseAndTraverse($code); - } - - public function invalidDeclarations() - { - return [ - ['declare(strict_types=-1)'], - ['declare(strict_types=2)'], - ['declare(strict_types="foo")'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php b/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php deleted file mode 100644 index 4d5ac3420..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\UseStatementPass; - -class UseStatementPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new UseStatementPass()); - } - - /** - * @dataProvider useStatements - */ - public function testProcess($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function useStatements() - { - return [ - [ - "use StdClass as NotSoStd;\n\$std = new NotSoStd();", - '$std = new \\StdClass();', - ], - [ - "namespace Foo;\n\nuse StdClass as S;\n\$std = new S();", - "namespace Foo;\n\n\$std = new \\StdClass();", - ], - [ - "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();", - "namespace Foo;\n\n\$std = new \\StdClass();", - ], - [ - "use Foo\\Bar as fb;\n\$baz = new fb\\Baz();", - '$baz = new \\Foo\\Bar\\Baz();', - ], - [ - "use Foo\\Bar;\n\$baz = new Bar\\Baz();", - '$baz = new \\Foo\\Bar\\Baz();', - ], - [ - "namespace Foo;\nuse Bar;\n\$baz = new Bar\\Baz();", - "namespace Foo;\n\n\$baz = new \\Bar\\Baz();", - ], - [ - "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Foo;\n\n\$std = new S();", - "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Foo;\n\n\$std = new \\StdClass();", - ], - [ - "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Bar;\n\n\$std = new S();", - "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Bar;\n\n\$std = new S();", - ], - [ - "use Foo\\Bar as fb, Qux as Q;\n\$baz = new fb\\Baz();\n\$qux = new Q();", - "\$baz = new \\Foo\\Bar\\Baz();\n\$qux = new \\Qux();", - ], - ]; - } - - /** - * @dataProvider groupUseStatements - */ - public function testGroupUseProcess($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function groupUseStatements() - { - if (\version_compare(PHP_VERSION, '7.0', '<')) { - $this->markTestSkipped(); - } - - return [ - [ - "use Foo\\{Bar, Baz, Qux as Q};\n\$bar = new Bar();\n\$baz = new Baz();\n\$qux = new Q();", - "\$bar = new \\Foo\\Bar();\n\$baz = new \\Foo\\Baz();\n\$qux = new \\Foo\\Qux();", - ], - [ - "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$baz = new B\\Baz();", - "\$foo = new \\X\\Foo();\n\$baz = new \\X\\Bar\\Baz();", - ], - [ - "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$bar = new Bar();\n\$baz = new B\\Baz();", - "\$foo = new \\X\\Foo();\n\$bar = new Bar();\n\$baz = new \\X\\Bar\\Baz();", - ], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php deleted file mode 100644 index 2d9ed60b5..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php +++ /dev/null @@ -1,325 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ValidClassNamePass; - -class ValidClassNamePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new ValidClassNamePass()); - } - - /** - * @dataProvider getInvalid - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessInvalid($code) - { - $this->parseAndTraverse($code); - } - - public function getInvalid() - { - // class declarations - return [ - // core class - ['class stdClass {}'], - // capitalization - ['class stdClass {}'], - - // collisions with interfaces and traits - ['interface stdClass {}'], - ['trait stdClass {}'], - - // collisions inside the same code snippet - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {} - '], - - // namespaced collisions - [' - namespace Psy\\Test\\CodeCleaner { - class ValidClassNamePassTest {} - } - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Beta {} - } - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Beta {} - } - '], - - // extends and implements - ['class ValidClassNamePassTest extends NotAClass {}'], - ['class ValidClassNamePassTest extends ArrayAccess {}'], - ['class ValidClassNamePassTest implements stdClass {}'], - ['class ValidClassNamePassTest implements ArrayAccess, stdClass {}'], - ['interface ValidClassNamePassTest extends stdClass {}'], - ['interface ValidClassNamePassTest extends ArrayAccess, stdClass {}'], - - // class instantiations - ['new Psy_Test_CodeCleaner_ValidClassNamePass_Gamma();'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - new Psy_Test_CodeCleaner_ValidClassNamePass_Delta(); - } - '], - - // class constant fetch - ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::FOO'], - - // static call - ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::foo()'], - ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::$foo()'], - ['Psy\\Test\\CodeCleaner\\ValidClassNamePassTest::notAMethod()'], - ]; - } - - /** - * @dataProvider getValid - */ - public function testProcessValid($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function getValid() - { - $valid = [ - // class declarations - ['class Psy_Test_CodeCleaner_ValidClassNamePass_Epsilon {}'], - ['namespace Psy\Test\CodeCleaner\ValidClassNamePass; class Zeta {}'], - [' - namespace { class Psy_Test_CodeCleaner_ValidClassNamePass_Eta {}; } - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Psy_Test_CodeCleaner_ValidClassNamePass_Eta {} - } - '], - ['namespace Psy\Test\CodeCleaner\ValidClassNamePass { class stdClass {} }'], - - // class instantiations - ['new stdClass();'], - ['new stdClass();'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Theta {} - } - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - new Theta(); - } - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Iota {} - new Iota(); - } - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass { - class Kappa {} - } - namespace { - new \\Psy\\Test\\CodeCleaner\\ValidClassNamePass\\Kappa(); - } - '], - - // Class constant fetch (ValidConstantPassTest validates the actual constant) - ['class A {} A::FOO'], - ['$a = new DateTime; $a::ATOM'], - ['interface A { const B = 1; } A::B'], - - // static call - ['DateTime::createFromFormat()'], - ['DateTime::$someMethod()'], - ['Psy\Test\CodeCleaner\Fixtures\ClassWithStatic::doStuff()'], - ['Psy\Test\CodeCleaner\Fixtures\ClassWithCallStatic::doStuff()'], - ['Psy\Test\CodeCleaner\Fixtures\TraitWithStatic::doStuff()'], - - // Allow `self` and `static` as class names. - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new self(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new SELF(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new self; - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new static(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new Static(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function getInstance() { - return new static; - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function foo() { - return parent::bar(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function foo() { - return self::bar(); - } - } - '], - [' - class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic { - public static function foo() { - return static::bar(); - } - } - '], - - ['class A { static function b() { return new A; } }'], - [' - class A { - const B = 123; - function c() { - return A::B; - } - } - '], - ['class A {} class B { function c() { return new A; } }'], - - // recursion - ['class A { function a() { A::a(); } }'], - - // conditionally defined classes - [' - class A {} - if (false) { - class A {} - } - '], - [' - class A {} - if (true) { - class A {} - } else if (false) { - class A {} - } else { - class A {} - } - '], - // ewww - [' - class A {} - if (true): - class A {} - elseif (false): - class A {} - else: - class A {} - endif; - '], - [' - class A {} - while (false) { class A {} } - '], - [' - class A {} - do { class A {} } while (false); - '], - [' - class A {} - switch (1) { - case 0: - class A {} - break; - case 1: - class A {} - break; - case 2: - class A {} - break; - } - '], - ]; - - // Ugh. There's gotta be a better way to test for this. - if (\class_exists('PhpParser\ParserFactory')) { - // PHP 7.0 anonymous classes, only supported by PHP Parser v2.x - $valid[] = ['$obj = new class() {}']; - } - - if (\version_compare(PHP_VERSION, '5.5', '>=')) { - $valid[] = ['interface A {} A::class']; - $valid[] = ['interface A {} A::CLASS']; - $valid[] = ['class A {} A::class']; - $valid[] = ['class A {} A::CLASS']; - $valid[] = ['A::class']; - $valid[] = ['A::CLASS']; - } - - return $valid; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php deleted file mode 100644 index a6c52e041..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ValidConstantPass; - -class ValidConstantPassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new ValidConstantPass()); - } - - /** - * @dataProvider getInvalidReferences - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessInvalidConstantReferences($code) - { - $this->parseAndTraverse($code); - } - - public function getInvalidReferences() - { - return [ - ['Foo\BAR'], - - // class constant fetch - ['Psy\Test\CodeCleaner\ValidConstantPassTest::FOO'], - ['DateTime::BACON'], - ]; - } - - /** - * @dataProvider getValidReferences - */ - public function testProcessValidConstantReferences($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function getValidReferences() - { - return [ - ['PHP_EOL'], - - // class constant fetch - ['NotAClass::FOO'], - ['DateTime::ATOM'], - ['$a = new DateTime; $a::ATOM'], - ['DateTime::class'], - ['$a = new DateTime; $a::class'], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php deleted file mode 100644 index 4f7e40c44..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ValidConstructorPass; - -class ValidConstructorPassTest extends CodeCleanerTestCase -{ - protected function setUp() - { - $this->setPass(new ValidConstructorPass()); - } - - /** - * @dataProvider invalidStatements - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessInvalidStatement($code) - { - $this->parseAndTraverse($code); - } - - /** - * @dataProvider invalidParserStatements - * @expectedException \Psy\Exception\ParseErrorException - */ - public function testProcessInvalidStatementCatchedByParser($code) - { - $this->parseAndTraverse($code); - } - - public function invalidStatements() - { - $data = [ - ['class A { public static function A() {}}'], - ['class A { public static function a() {}}'], - ['class A { private static function A() {}}'], - ['class A { private static function a() {}}'], - ]; - - if (\version_compare(PHP_VERSION, '7.0', '>=')) { - $data[] = ['class A { public function A(): ?array {}}']; - $data[] = ['class A { public function a(): ?array {}}']; - } - - return $data; - } - - public function invalidParserStatements() - { - return [ - ['class A { public static function __construct() {}}'], - ['class A { private static function __construct() {}}'], - ['class A { private static function __construct() {} public function A() {}}'], - ['namespace B; class A { private static function __construct() {}}'], - ]; - } - - /** - * @dataProvider validStatements - */ - public function testProcessValidStatement($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function validStatements() - { - $data = [ - ['class A { public static function A() {} public function __construct() {}}'], - ['class A { private function __construct() {} public static function A() {}}'], - ['namespace B; class A { private static function A() {}}'], - ]; - - if (\version_compare(PHP_VERSION, '7.0', '>=')) { - $data[] = ['class A { public static function A() {} public function __construct() {}}']; - $data[] = ['class A { private function __construct() {} public static function A(): ?array {}}']; - $data[] = ['namespace B; class A { private static function A(): ?array {}}']; - } - - return $data; - } -} diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php deleted file mode 100644 index 70a17315d..000000000 --- a/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\CodeCleaner; - -use Psy\CodeCleaner\ValidFunctionNamePass; - -class ValidFunctionNamePassTest extends CodeCleanerTestCase -{ - public function setUp() - { - $this->setPass(new ValidFunctionNamePass()); - } - - /** - * @dataProvider getInvalidFunctions - * @expectedException \Psy\Exception\FatalErrorException - */ - public function testProcessInvalidFunctionCallsAndDeclarations($code) - { - $this->parseAndTraverse($code); - } - - public function getInvalidFunctions() - { - return [ - // function declarations - ['function array_merge() {}'], - ['function Array_Merge() {}'], - [' - function psy_test_codecleaner_validfunctionnamepass_alpha() {} - function psy_test_codecleaner_validfunctionnamepass_alpha() {} - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function beta() {} - } - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function beta() {} - } - '], - - // function calls - ['psy_test_codecleaner_validfunctionnamepass_gamma()'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - delta(); - } - '], - - // recursion - ['function a() { a(); } function a() {}'], - ]; - } - - /** - * @dataProvider getValidFunctions - */ - public function testProcessValidFunctionCallsAndDeclarations($code) - { - $this->parseAndTraverse($code); - $this->assertTrue(true); - } - - public function getValidFunctions() - { - return [ - ['function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function zeta() {} - } - '], - [' - namespace { - function psy_test_codecleaner_validfunctionnamepass_eta() {} - } - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function psy_test_codecleaner_validfunctionnamepass_eta() {} - } - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function psy_test_codecleaner_validfunctionnamepass_eta() {} - } - namespace { - function psy_test_codecleaner_validfunctionnamepass_eta() {} - } - '], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function array_merge() {} - } - '], - - // function calls - ['array_merge();'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function theta() {} - } - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - theta(); - } - '], - // closures - ['$test = function(){};$test()'], - [' - namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass { - function theta() {} - } - namespace { - Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta(); - } - '], - - // recursion - ['function a() { a(); }'], - - // conditionally defined functions - [' - function a() {} - if (false) { - function a() {} - } - '], - [' - function a() {} - if (true) { - function a() {} - } else if (false) { - function a() {} - } else { - function a() {} - } - '], - // ewww - [' - function a() {} - if (true): - function a() {} - elseif (false): - function a() {} - else: - function a() {} - endif; - '], - [' - function a() {} - while (false) { function a() {} } - '], - [' - function a() {} - do { function a() {} } while (false); - '], - [' - function a() {} - switch (1) { - case 0: - function a() {} - break; - case 1: - function a() {} - break; - case 2: - function a() {} - break; - } - '], - ]; - } -} diff --git a/vendor/psy/psysh/test/CodeCleanerTest.php b/vendor/psy/psysh/test/CodeCleanerTest.php deleted file mode 100644 index 2195a4ff8..000000000 --- a/vendor/psy/psysh/test/CodeCleanerTest.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\CodeCleaner; - -class CodeCleanerTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider semicolonCodeProvider - */ - public function testAutomaticSemicolons(array $lines, $requireSemicolons, $expected) - { - $cc = new CodeCleaner(); - $this->assertSame($expected, $cc->clean($lines, $requireSemicolons)); - } - - public function semicolonCodeProvider() - { - return [ - [['true'], false, 'return true;'], - [['true;'], false, 'return true;'], - [['true;'], true, 'return true;'], - [['true'], true, false], - - [['echo "foo";', 'true'], true, false], - - [['echo "foo";', 'true'], false, "echo \"foo\";\nreturn true;"], - ]; - } - - /** - * @dataProvider unclosedStatementsProvider - */ - public function testUnclosedStatements(array $lines, $isUnclosed) - { - $cc = new CodeCleaner(); - $res = $cc->clean($lines); - - if ($isUnclosed) { - $this->assertFalse($res); - } else { - $this->assertNotFalse($res); - } - } - - public function unclosedStatementsProvider() - { - return [ - [['echo "'], true], - [['echo \''], true], - [['if (1) {'], true], - - [['echo "foo",'], true], - - [['echo ""'], false], - [["echo ''"], false], - [['if (1) {}'], false], - - [['// closed comment'], false], - [['function foo() { /**'], true], - - [['var_dump(1, 2,'], true], - [['var_dump(1, 2,', '3)'], false], - ]; - } - - /** - * @dataProvider moreUnclosedStatementsProvider - */ - public function testMoreUnclosedStatements(array $lines) - { - if (\defined('HHVM_VERSION')) { - $this->markTestSkipped('HHVM not supported.'); - } - - $cc = new CodeCleaner(); - $res = $cc->clean($lines); - - $this->assertFalse($res); - } - - public function moreUnclosedStatementsProvider() - { - return [ - [["\$content = <<<EOS\n"]], - [["\$content = <<<'EOS'\n"]], - - [['/* unclosed comment']], - [['/** unclosed comment']], - ]; - } - - /** - * @dataProvider invalidStatementsProvider - * @expectedException \Psy\Exception\ParseErrorException - */ - public function testInvalidStatementsThrowParseErrors($code) - { - $cc = new CodeCleaner(); - $cc->clean([$code]); - } - - public function invalidStatementsProvider() - { - // n.b. We used to check that `var_dump(1,2,)` failed, but PHP Parser - // 4.x backported trailing comma function calls from PHP 7.3 for free! - // so we're not going to spend too much time worrying about it :) - - return [ - ['function "what'], - ["function 'what"], - ['echo }'], - ['echo {'], - ['if (1) }'], - ['echo """'], - ["echo '''"], - ['$foo "bar'], - ['$foo \'bar'], - ]; - } -} diff --git a/vendor/psy/psysh/test/Command/ExitCommandTest.php b/vendor/psy/psysh/test/Command/ExitCommandTest.php deleted file mode 100644 index 45626be2c..000000000 --- a/vendor/psy/psysh/test/Command/ExitCommandTest.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Command; - -use Psy\Command\ExitCommand; -use Symfony\Component\Console\Tester\CommandTester; - -class ExitCommandTest extends \PHPUnit\Framework\TestCase -{ - /** - * @expectedException \Psy\Exception\BreakException - * @expectedExceptionMessage Goodbye - */ - public function testExecute() - { - $command = new ExitCommand(); - $tester = new CommandTester($command); - $tester->execute([]); - } -} diff --git a/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php b/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php deleted file mode 100644 index 511c5809c..000000000 --- a/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Command; - -use Psy\Command\ThrowUpCommand; -use Psy\Shell; -use Symfony\Component\Console\Tester\CommandTester; - -class ThrowUpCommandTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider executeThis - */ - public function testExecute($args, $hasCode, $expect, $addSilent = true) - { - $shell = $this->getMockBuilder('Psy\\Shell') - ->setMethods(['hasCode', 'addCode']) - ->getMock(); - - $shell->expects($this->once())->method('hasCode')->willReturn($hasCode); - $shell->expects($this->once()) - ->method('addCode') - ->with($this->equalTo($expect), $this->equalTo($addSilent)); - - $command = new ThrowUpCommand(); - $command->setApplication($shell); - $tester = new CommandTester($command); - $tester->execute($args); - $this->assertEquals('', $tester->getDisplay()); - } - - public function executeThis() - { - $throw = 'throw \Psy\Exception\ThrowUpException::fromThrowable'; - - return [ - [[], false, $throw . '($_e);'], - - [['exception' => '$ex'], false, $throw . '($ex);'], - [['exception' => 'getException()'], false, $throw . '(getException());'], - [['exception' => 'new \\Exception("WAT")'], false, $throw . '(new \\Exception("WAT"));'], - - [['exception' => '\'some string\''], false, $throw . '(new \\Exception(\'some string\'));'], - [['exception' => '"WHEEEEEEE!"'], false, $throw . '(new \\Exception("WHEEEEEEE!"));'], - - // Everything should work with or without semicolons. - [['exception' => '$ex;'], false, $throw . '($ex);'], - [['exception' => '"WHEEEEEEE!";'], false, $throw . '(new \\Exception("WHEEEEEEE!"));'], - - // Don't add as silent code if we've already got code. - [[], true, $throw . '($_e);', false], - [['exception' => 'getException()'], true, $throw . '(getException());', false], - [['exception' => '\'some string\''], true, $throw . '(new \\Exception(\'some string\'));', false], - ]; - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage No idea how to throw this - */ - public function testMultipleArgsThrowsException() - { - $command = new ThrowUpCommand(); - $command->setApplication(new Shell()); - $tester = new CommandTester($command); - $tester->execute(['exception' => 'foo(); bar()']); - } - - /** - * @expectedException \PhpParser\Error - * @expectedExceptionMessage Syntax error, unexpected ')' on line 1 - */ - public function testParseErrorThrowsException() - { - $command = new ThrowUpCommand(); - $command->setApplication(new Shell()); - $tester = new CommandTester($command); - $tester->execute(['exception' => 'foo)']); - } -} diff --git a/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php b/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php deleted file mode 100644 index 1f317350e..000000000 --- a/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Command\TimeitCommand; - -use PhpParser\NodeTraverser; -use Psy\Command\TimeitCommand\TimeitVisitor; -use Psy\Test\ParserTestCase; - -class TimeitVisitorTest extends ParserTestCase -{ - public function setUp() - { - $this->traverser = new NodeTraverser(); - $this->traverser->addVisitor(new TimeitVisitor()); - } - - /** - * @dataProvider codez - */ - public function testProcess($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function codez() - { - $start = '\Psy\Command\TimeitCommand::markStart'; - $end = '\Psy\Command\TimeitCommand::markEnd'; - $noReturn = 'new \Psy\CodeCleaner\NoReturnValue()'; - - return [ - ['', "$end($start());"], // heh - ['a()', "$start(); $end(a());"], - ['$b()', "$start(); $end(\$b());"], - ['$c->d()', "$start(); $end(\$c->d());"], - ['e(); f()', "$start(); e(); $end(f());"], - ['function g() { return 1; }', "$start(); function g() {return 1;} $end($noReturn);"], - ['return 1', "$start(); return $end(1);"], - ['return 1; 2', "$start(); return $end(1); $end(2);"], - ['return 1; function h() {}', "$start(); return $end(1); function h() {} $end($noReturn);"], - ]; - } -} diff --git a/vendor/psy/psysh/test/ConfigurationTest.php b/vendor/psy/psysh/test/ConfigurationTest.php deleted file mode 100644 index b7b6c0c01..000000000 --- a/vendor/psy/psysh/test/ConfigurationTest.php +++ /dev/null @@ -1,256 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\CodeCleaner; -use Psy\Configuration; -use Psy\Output\PassthruPager; -use Psy\VersionUpdater\GitHubChecker; -use Symfony\Component\Console\Output\ConsoleOutput; - -class ConfigurationTest extends \PHPUnit\Framework\TestCase -{ - private function getConfig($configFile = null) - { - return new Configuration([ - 'configFile' => $configFile ?: __DIR__ . '/fixtures/empty.php', - ]); - } - - public function testDefaults() - { - $config = $this->getConfig(); - - $this->assertSame(\function_exists('readline'), $config->hasReadline()); - $this->assertSame(\function_exists('readline'), $config->useReadline()); - $this->assertSame(\function_exists('pcntl_signal'), $config->hasPcntl()); - $this->assertSame(\function_exists('pcntl_signal'), $config->usePcntl()); - $this->assertFalse($config->requireSemicolons()); - $this->assertSame(Configuration::COLOR_MODE_AUTO, $config->colorMode()); - $this->assertNull($config->getStartupMessage()); - } - - public function testGettersAndSetters() - { - $config = $this->getConfig(); - - $this->assertNull($config->getDataDir()); - $config->setDataDir('wheee'); - $this->assertSame('wheee', $config->getDataDir()); - - $this->assertNull($config->getConfigDir()); - $config->setConfigDir('wheee'); - $this->assertSame('wheee', $config->getConfigDir()); - } - - /** - * @dataProvider directories - */ - public function testFilesAndDirectories($home, $configFile, $historyFile, $manualDbFile) - { - $oldHome = \getenv('HOME'); - \putenv("HOME=$home"); - - $config = new Configuration(); - $this->assertSame(\realpath($configFile), \realpath($config->getConfigFile())); - $this->assertSame(\realpath($historyFile), \realpath($config->getHistoryFile())); - $this->assertSame(\realpath($manualDbFile), \realpath($config->getManualDbFile())); - - \putenv("HOME=$oldHome"); - } - - public function directories() - { - $base = \realpath(__DIR__ . '/fixtures'); - - return [ - [ - $base . '/default', - $base . '/default/.config/psysh/config.php', - $base . '/default/.config/psysh/psysh_history', - $base . '/default/.local/share/psysh/php_manual.sqlite', - ], - [ - $base . '/legacy', - $base . '/legacy/.psysh/rc.php', - $base . '/legacy/.psysh/history', - $base . '/legacy/.psysh/php_manual.sqlite', - ], - [ - $base . '/mixed', - $base . '/mixed/.psysh/config.php', - $base . '/mixed/.psysh/psysh_history', - null, - ], - ]; - } - - public function testLoadConfig() - { - $config = $this->getConfig(); - $cleaner = new CodeCleaner(); - $pager = new PassthruPager(new ConsoleOutput()); - - $config->loadConfig([ - 'useReadline' => false, - 'usePcntl' => false, - 'codeCleaner' => $cleaner, - 'pager' => $pager, - 'requireSemicolons' => true, - 'errorLoggingLevel' => E_ERROR | E_WARNING, - 'colorMode' => Configuration::COLOR_MODE_FORCED, - 'startupMessage' => 'Psysh is awesome!', - ]); - - $this->assertFalse($config->useReadline()); - $this->assertFalse($config->usePcntl()); - $this->assertSame($cleaner, $config->getCodeCleaner()); - $this->assertSame($pager, $config->getPager()); - $this->assertTrue($config->requireSemicolons()); - $this->assertSame(E_ERROR | E_WARNING, $config->errorLoggingLevel()); - $this->assertSame(Configuration::COLOR_MODE_FORCED, $config->colorMode()); - $this->assertSame('Psysh is awesome!', $config->getStartupMessage()); - } - - public function testLoadConfigFile() - { - $config = $this->getConfig(__DIR__ . '/fixtures/config.php'); - - $runtimeDir = $this->joinPath(\realpath(\sys_get_temp_dir()), 'psysh_test', 'withconfig', 'temp'); - - $this->assertStringStartsWith($runtimeDir, \realpath($config->getTempFile('foo', 123))); - $this->assertStringStartsWith($runtimeDir, \realpath(\dirname($config->getPipe('pipe', 123)))); - $this->assertStringStartsWith($runtimeDir, \realpath($config->getRuntimeDir())); - - $this->assertSame(\function_exists('readline'), $config->useReadline()); - $this->assertFalse($config->usePcntl()); - $this->assertSame(E_ALL & ~E_NOTICE, $config->errorLoggingLevel()); - } - - public function testLoadLocalConfigFile() - { - $oldPwd = \getcwd(); - \chdir(\realpath(__DIR__ . '/fixtures/project/')); - - $config = new Configuration(); - - // When no configuration file is specified local project config is merged - $this->assertTrue($config->requireSemicolons()); - $this->assertFalse($config->useUnicode()); - - $config = new Configuration(['configFile' => __DIR__ . '/fixtures/config.php']); - - // Defining a configuration file skips loading local project config - $this->assertFalse($config->requireSemicolons()); - $this->assertTrue($config->useUnicode()); - - \chdir($oldPwd); - } - - /** - * @expectedException \Psy\Exception\DeprecatedException - */ - public function testBaseDirConfigIsDeprecated() - { - $config = new Configuration(['baseDir' => 'fake']); - } - - private function joinPath() - { - return \implode(DIRECTORY_SEPARATOR, \func_get_args()); - } - - public function testConfigIncludes() - { - $config = new Configuration([ - 'defaultIncludes' => ['/file.php'], - 'configFile' => __DIR__ . '/fixtures/empty.php', - ]); - - $includes = $config->getDefaultIncludes(); - $this->assertCount(1, $includes); - $this->assertSame('/file.php', $includes[0]); - } - - public function testGetOutput() - { - $config = $this->getConfig(); - $output = $config->getOutput(); - - $this->assertInstanceOf('Psy\Output\ShellOutput', $output); - } - - public function getOutputDecoratedProvider() - { - return [ - 'auto' => [ - null, - Configuration::COLOR_MODE_AUTO, - ], - 'forced' => [ - true, - Configuration::COLOR_MODE_FORCED, - ], - 'disabled' => [ - false, - Configuration::COLOR_MODE_DISABLED, - ], - ]; - } - - /** @dataProvider getOutputDecoratedProvider */ - public function testGetOutputDecorated($expectation, $colorMode) - { - $config = $this->getConfig(); - $config->setColorMode($colorMode); - - $this->assertSame($expectation, $config->getOutputDecorated()); - } - - public function setColorModeValidProvider() - { - return [ - 'auto' => [Configuration::COLOR_MODE_AUTO], - 'forced' => [Configuration::COLOR_MODE_FORCED], - 'disabled' => [Configuration::COLOR_MODE_DISABLED], - ]; - } - - /** @dataProvider setColorModeValidProvider */ - public function testSetColorModeValid($colorMode) - { - $config = $this->getConfig(); - $config->setColorMode($colorMode); - - $this->assertSame($colorMode, $config->colorMode()); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage invalid color mode: some invalid mode - */ - public function testSetColorModeInvalid() - { - $config = $this->getConfig(); - $config->setColorMode('some invalid mode'); - } - - public function testSetCheckerValid() - { - $config = $this->getConfig(); - $checker = new GitHubChecker(); - - $config->setChecker($checker); - - $this->assertSame($checker, $config->getChecker()); - } -} diff --git a/vendor/psy/psysh/test/ConsoleColorFactoryTest.php b/vendor/psy/psysh/test/ConsoleColorFactoryTest.php deleted file mode 100644 index d58a48d36..000000000 --- a/vendor/psy/psysh/test/ConsoleColorFactoryTest.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\Configuration; -use Psy\ConsoleColorFactory; - -class ConsoleColorFactoryTest extends \PHPUnit\Framework\TestCase -{ - public function testGetConsoleColorAuto() - { - $colorMode = Configuration::COLOR_MODE_AUTO; - $factory = new ConsoleColorFactory($colorMode); - $colors = $factory->getConsoleColor(); - $themes = $colors->getThemes(); - - $this->assertFalse($colors->isStyleForced()); - $this->assertSame(['blue'], $themes['line_number']); - } - - public function testGetConsoleColorForced() - { - $colorMode = Configuration::COLOR_MODE_FORCED; - $factory = new ConsoleColorFactory($colorMode); - $colors = $factory->getConsoleColor(); - $themes = $colors->getThemes(); - - $this->assertTrue($colors->isStyleForced()); - $this->assertSame(['blue'], $themes['line_number']); - } - - public function testGetConsoleColorDisabled() - { - $colorMode = Configuration::COLOR_MODE_DISABLED; - $factory = new ConsoleColorFactory($colorMode); - $colors = $factory->getConsoleColor(); - $themes = $colors->getThemes(); - - $this->assertFalse($colors->isStyleForced()); - $this->assertSame(['none'], $themes['line_number']); - } -} diff --git a/vendor/psy/psysh/test/ContextTest.php b/vendor/psy/psysh/test/ContextTest.php deleted file mode 100644 index d19370367..000000000 --- a/vendor/psy/psysh/test/ContextTest.php +++ /dev/null @@ -1,325 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\Context; - -class ContextTest extends \PHPUnit\Framework\TestCase -{ - public function testGet() - { - $this->assertTrue(true); - } - - public function testGetAll() - { - $this->assertTrue(true); - } - - public function testGetSpecialVariables() - { - $context = new Context(); - - $this->assertNull($context->get('_')); - $this->assertNull($context->getReturnValue()); - - $this->assertEquals(['_' => null], $context->getAll()); - - $e = new \Exception('eeeeeee'); - $obj = new \StdClass(); - $context->setLastException($e); - $context->setLastStdout('out'); - $context->setBoundObject($obj); - - $context->setCommandScopeVariables([ - '__function' => 'function', - '__method' => 'method', - '__class' => 'class', - '__namespace' => 'namespace', - '__file' => 'file', - '__line' => 'line', - '__dir' => 'dir', - ]); - - $expected = [ - '_' => null, - '_e' => $e, - '__out' => 'out', - 'this' => $obj, - '__function' => 'function', - '__method' => 'method', - '__class' => 'class', - '__namespace' => 'namespace', - '__file' => 'file', - '__line' => 'line', - '__dir' => 'dir', - ]; - - $this->assertEquals($expected, $context->getAll()); - } - - public function testSetAll() - { - $context = new Context(); - - $baz = new \StdClass(); - $vars = [ - 'foo' => 'Foo', - 'bar' => 123, - 'baz' => $baz, - - '_' => 'fail', - '_e' => 'fail', - '__out' => 'fail', - 'this' => 'fail', - '__psysh__' => 'fail', - - '__function' => 'fail', - '__method' => 'fail', - '__class' => 'fail', - '__namespace' => 'fail', - '__file' => 'fail', - '__line' => 'fail', - '__dir' => 'fail', - ]; - - $context->setAll($vars); - - $this->assertEquals('Foo', $context->get('foo')); - $this->assertEquals(123, $context->get('bar')); - $this->assertSame($baz, $context->get('baz')); - - $this->assertEquals(['foo' => 'Foo', 'bar' => 123, 'baz' => $baz, '_' => null], $context->getAll()); - } - - /** - * @dataProvider specialNames - * @expectedException \InvalidArgumentException - * @expectedExceptionMessageRegEx /Unknown variable: \$\w+/ - */ - public function testSetAllDoesNotSetSpecial($name) - { - $context = new Context(); - $context->setAll([$name => 'fail']); - $context->get($name); - } - - public function specialNames() - { - return [ - ['_e'], - ['__out'], - ['this'], - ['__psysh__'], - ['__function'], - ['__method'], - ['__class'], - ['__namespace'], - ['__file'], - ['__line'], - ['__dir'], - ]; - } - - public function testReturnValue() - { - $context = new Context(); - $this->assertNull($context->getReturnValue()); - - $val = 'some string'; - $context->setReturnValue($val); - $this->assertEquals($val, $context->getReturnValue()); - $this->assertEquals($val, $context->get('_')); - - $obj = new \StdClass(); - $context->setReturnValue($obj); - $this->assertSame($obj, $context->getReturnValue()); - $this->assertSame($obj, $context->get('_')); - - $context->setReturnValue(null); - $this->assertNull($context->getReturnValue()); - } - - public function testLastException() - { - $context = new Context(); - $e = new \Exception('wat'); - $context->setLastException($e); - $this->assertSame($e, $context->getLastException()); - $this->assertSame($e, $context->get('_e')); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage No most-recent exception - */ - public function testLastExceptionThrowsSometimes() - { - $context = new Context(); - $context->getLastException(); - } - - public function testLastStdout() - { - $context = new Context(); - $context->setLastStdout('ouuuuut'); - $this->assertEquals('ouuuuut', $context->getLastStdout()); - $this->assertEquals('ouuuuut', $context->get('__out')); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage No most-recent output - */ - public function testLastStdoutThrowsSometimes() - { - $context = new Context(); - $context->getLastStdout(); - } - - public function testBoundObject() - { - $context = new Context(); - $this->assertNull($context->getBoundObject()); - - $obj = new \StdClass(); - $context->setBoundObject($obj); - $this->assertSame($obj, $context->getBoundObject()); - $this->assertSame($obj, $context->get('this')); - - $context->setBoundObject(null); - $this->assertNull($context->getBoundObject()); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage Unknown variable: $this - */ - public function testBoundObjectThrowsSometimes() - { - $context = new Context(); - $context->get('this'); - } - - public function testBoundClass() - { - $context = new Context(); - $this->assertNull($context->getBoundClass()); - - $context->setBoundClass(''); - $this->assertNull($context->getBoundClass()); - - $context->setBoundClass('Psy\Shell'); - $this->assertEquals('Psy\Shell', $context->getBoundClass()); - - $context->setBoundObject(new \StdClass()); - $this->assertNotNull($context->getBoundObject()); - $this->assertNull($context->getBoundClass()); - - $context->setBoundClass('Psy\Shell'); - $this->assertEquals('Psy\Shell', $context->getBoundClass()); - $this->assertNull($context->getBoundObject()); - - $context->setBoundClass(null); - $this->assertNull($context->getBoundClass()); - $this->assertNull($context->getBoundObject()); - } - - public function testCommandScopeVariables() - { - $__function = 'donkey'; - $__method = 'diddy'; - $__class = 'cranky'; - $__namespace = 'funky'; - $__file = 'candy'; - $__line = 'dixie'; - $__dir = 'wrinkly'; - - $vars = \compact('__function', '__method', '__class', '__namespace', '__file', '__line', '__dir'); - - $context = new Context(); - $context->setCommandScopeVariables($vars); - - $this->assertEquals($vars, $context->getCommandScopeVariables()); - - $this->assertEquals($__function, $context->get('__function')); - $this->assertEquals($__method, $context->get('__method')); - $this->assertEquals($__class, $context->get('__class')); - $this->assertEquals($__namespace, $context->get('__namespace')); - $this->assertEquals($__file, $context->get('__file')); - $this->assertEquals($__line, $context->get('__line')); - $this->assertEquals($__dir, $context->get('__dir')); - - $someVars = \compact('__function', '__namespace', '__file', '__line', '__dir'); - $context->setCommandScopeVariables($someVars); - } - - public function testGetUnusedCommandScopeVariableNames() - { - $context = new Context(); - - $this->assertEquals( - ['__function', '__method', '__class', '__namespace', '__file', '__line', '__dir'], - $context->getUnusedCommandScopeVariableNames() - ); - - $context->setCommandScopeVariables([ - '__function' => 'foo', - '__namespace' => 'bar', - '__file' => 'baz', - '__line' => 123, - '__dir' => 'qux', - ]); - - $this->assertEquals( - ['__method', '__class'], - \array_values($context->getUnusedCommandScopeVariableNames()) - ); - } - - /** - * @dataProvider specialAndNotSpecialVariableNames - */ - public function testIsSpecialVariableName($name, $isSpecial) - { - $context = new Context(); - - if ($isSpecial) { - $this->assertTrue($context->isSpecialVariableName($name)); - } else { - $this->assertFalse($context->isSpecialVariableName($name)); - } - } - - public function specialAndNotSpecialVariableNames() - { - return [ - ['foo', false], - ['psysh', false], - ['__psysh', false], - - ['_', true], - ['_e', true], - ['__out', true], - ['this', true], - ['__psysh__', true], - - ['__function', true], - ['__method', true], - ['__class', true], - ['__namespace', true], - ['__file', true], - ['__line', true], - ['__dir', true], - ]; - } -} diff --git a/vendor/psy/psysh/test/Exception/BreakExceptionTest.php b/vendor/psy/psysh/test/Exception/BreakExceptionTest.php deleted file mode 100644 index ae39fb1f4..000000000 --- a/vendor/psy/psysh/test/Exception/BreakExceptionTest.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\BreakException; - -class BreakExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testInstance() - { - $e = new BreakException(); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('Psy\Exception\BreakException', $e); - } - - public function testMessage() - { - $e = new BreakException('foo'); - - $this->assertContains('foo', $e->getMessage()); - $this->assertSame('foo', $e->getRawMessage()); - } - - /** - * @expectedException \Psy\Exception\BreakException - * @expectedExceptionMessage Goodbye - */ - public function testExitShell() - { - BreakException::exitShell(); - } -} diff --git a/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php deleted file mode 100644 index ef9fb9ab4..000000000 --- a/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\ErrorException; - -class ErrorExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testInstance() - { - $e = new ErrorException(); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('ErrorException', $e); - $this->assertInstanceOf('Psy\Exception\ErrorException', $e); - } - - public function testMessage() - { - $e = new ErrorException('foo'); - - $this->assertContains('foo', $e->getMessage()); - $this->assertSame('foo', $e->getRawMessage()); - } - - /** - * @dataProvider getLevels - */ - public function testErrorLevels($level, $type) - { - $e = new ErrorException('foo', 0, $level); - $this->assertContains('PHP ' . $type, $e->getMessage()); - } - - /** - * @dataProvider getLevels - */ - public function testThrowException($level, $type) - { - try { - ErrorException::throwException($level, '{whot}', '{file}', '13'); - } catch (ErrorException $e) { - $this->assertContains('PHP ' . $type, $e->getMessage()); - $this->assertContains('{whot}', $e->getMessage()); - $this->assertContains('in {file}', $e->getMessage()); - $this->assertContains('on line 13', $e->getMessage()); - } - } - - public function getLevels() - { - return [ - [E_WARNING, 'Warning'], - [E_CORE_WARNING, 'Warning'], - [E_COMPILE_WARNING, 'Warning'], - [E_USER_WARNING, 'Warning'], - [E_STRICT, 'Strict error'], - [E_DEPRECATED, 'Deprecated'], - [E_USER_DEPRECATED, 'Deprecated'], - [E_RECOVERABLE_ERROR, 'Recoverable fatal error'], - [0, 'Error'], - ]; - } - - /** - * @dataProvider getUserLevels - */ - public function testThrowExceptionAsErrorHandler($level, $type) - { - \set_error_handler(['Psy\Exception\ErrorException', 'throwException']); - try { - \trigger_error('{whot}', $level); - } catch (ErrorException $e) { - $this->assertContains('PHP ' . $type, $e->getMessage()); - $this->assertContains('{whot}', $e->getMessage()); - } - \restore_error_handler(); - } - - public function getUserLevels() - { - return [ - [E_USER_ERROR, 'Error'], - [E_USER_WARNING, 'Warning'], - [E_USER_NOTICE, 'Notice'], - [E_USER_DEPRECATED, 'Deprecated'], - ]; - } - - public function testIgnoreExecutionLoopFilename() - { - $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/ExecutionLoop.php'); - $this->assertEmpty($e->getFile()); - - $e = new ErrorException('{{message}}', 0, 1, 'c:\fake\path\to\Psy\ExecutionLoop.php'); - $this->assertEmpty($e->getFile()); - - $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/File.php'); - $this->assertNotEmpty($e->getFile()); - } - - public function testFromError() - { - if (\version_compare(PHP_VERSION, '7.0.0', '<')) { - $this->markTestSkipped(); - } - - $error = new \Error('{{message}}', 0); - $exception = ErrorException::fromError($error); - - $this->assertContains('PHP Error: {{message}}', $exception->getMessage()); - $this->assertEquals(0, $exception->getCode()); - $this->assertEquals($error->getFile(), $exception->getFile()); - $this->assertSame($exception->getPrevious(), $error); - } -} diff --git a/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php deleted file mode 100644 index 36c7dd8c1..000000000 --- a/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\FatalErrorException; - -class FatalErrorExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testInstance() - { - $e = new FatalErrorException(); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('ErrorException', $e); - $this->assertInstanceOf('Psy\Exception\FatalErrorException', $e); - } - - public function testMessage() - { - $e = new FatalErrorException('{msg}', 0, 0, '{filename}', 13); - - $this->assertSame('{msg}', $e->getRawMessage()); - $this->assertContains('{msg}', $e->getMessage()); - $this->assertContains('{filename}', $e->getMessage()); - $this->assertContains('line 13', $e->getMessage()); - } - - public function testMessageWithNoFilename() - { - $e = new FatalErrorException('{msg}'); - - $this->assertSame('{msg}', $e->getRawMessage()); - $this->assertContains('{msg}', $e->getMessage()); - $this->assertContains('eval()\'d code', $e->getMessage()); - } - - public function testNegativeOneLineNumberIgnored() - { - $e = new FatalErrorException('{msg}', 0, 1, null, -1); - $this->assertEquals(0, $e->getLine()); - } -} diff --git a/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php deleted file mode 100644 index 446b9389c..000000000 --- a/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\ParseErrorException; - -class ParseErrorExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testInstance() - { - $e = new ParseErrorException(); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('PhpParser\Error', $e); - $this->assertInstanceOf('Psy\Exception\ParseErrorException', $e); - } - - public function testMessage() - { - $e = new ParseErrorException('{msg}', 1); - - $this->assertContains('{msg}', $e->getMessage()); - $this->assertContains('PHP Parse error:', $e->getMessage()); - } - - public function testConstructFromParseError() - { - $e = ParseErrorException::fromParseError(new \PhpParser\Error('{msg}')); - - $this->assertContains('{msg}', $e->getRawMessage()); - $this->assertContains('PHP Parse error:', $e->getMessage()); - } -} diff --git a/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php b/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php deleted file mode 100644 index 1121ea4e5..000000000 --- a/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\RuntimeException; - -class RuntimeExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testException() - { - $msg = 'bananas'; - $e = new RuntimeException($msg); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('RuntimeException', $e); - $this->assertInstanceOf('Psy\Exception\RuntimeException', $e); - - $this->assertSame($msg, $e->getMessage()); - $this->assertSame($msg, $e->getRawMessage()); - } -} diff --git a/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php b/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php deleted file mode 100644 index 09c337324..000000000 --- a/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\ThrowUpException; - -class ThrowUpExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testException() - { - $previous = new \Exception('{{message}}', 123); - $e = new ThrowUpException($previous); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); - - $this->assertEquals("Throwing Exception with message '{{message}}'", $e->getMessage()); - $this->assertEquals('{{message}}', $e->getRawMessage()); - $this->assertEquals(123, $e->getCode()); - $this->assertSame($previous, $e->getPrevious()); - } - - public function testFromThrowable() - { - $previous = new \Exception('{{message}}'); - $e = ThrowUpException::fromThrowable($previous); - - $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); - $this->assertSame($previous, $e->getPrevious()); - } - - public function testFromThrowableWithError() - { - if (\version_compare(PHP_VERSION, '7.0.0', '<')) { - $this->markTestSkipped(); - } - - $previous = new \Error('{{message}}'); - $e = ThrowUpException::fromThrowable($previous); - - $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); - $this->assertInstanceOf('Psy\Exception\ErrorException', $e->getPrevious()); - - $this->assertNotSame($previous, $e->getPrevious()); - $this->assertSame($previous, $e->getPrevious()->getPrevious()); - } - - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage throw-up can only throw Exceptions and Errors - */ - public function testFromThrowableThrowsError() - { - $notThrowable = new \StdClass(); - ThrowUpException::fromThrowable($notThrowable); - } -} diff --git a/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php deleted file mode 100644 index 01f251bb8..000000000 --- a/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Exception; - -use Psy\Exception\TypeErrorException; - -class TypeErrorExceptionTest extends \PHPUnit\Framework\TestCase -{ - public function testException() - { - $e = new TypeErrorException('{{message}}', 13); - - $this->assertInstanceOf('Psy\Exception\Exception', $e); - $this->assertInstanceOf('Psy\Exception\TypeErrorException', $e); - - $this->assertEquals('TypeError: {{message}}', $e->getMessage()); - $this->assertEquals('{{message}}', $e->getRawMessage()); - $this->assertEquals(13, $e->getCode()); - } - - public function testStripsEvalFromMessage() - { - $message = 'Something or other, called in line 10: eval()\'d code'; - $e = new TypeErrorException($message); - $this->assertEquals($message, $e->getRawMessage()); - $this->assertEquals('TypeError: Something or other', $e->getMessage()); - } - - public function testFromTypeError() - { - if (\version_compare(PHP_VERSION, '7.0.0', '<')) { - $this->markTestSkipped(); - } - - $previous = new \TypeError('{{message}}', 13); - $e = TypeErrorException::fromTypeError($previous); - - $this->assertInstanceOf('Psy\Exception\TypeErrorException', $e); - $this->assertEquals('TypeError: {{message}}', $e->getMessage()); - $this->assertEquals('{{message}}', $e->getRawMessage()); - $this->assertEquals(13, $e->getCode()); - } -} diff --git a/vendor/psy/psysh/test/FakeShell.php b/vendor/psy/psysh/test/FakeShell.php deleted file mode 100644 index 9f6fa97fc..000000000 --- a/vendor/psy/psysh/test/FakeShell.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\Shell; - -class FakeShell extends Shell -{ - public $matchers; - - public function __construct(Configuration $config = null) - { - // This space intentionally left blank - } - - public function addMatchers(array $matchers) - { - $this->matchers = $matchers; - } -} diff --git a/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php b/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php deleted file mode 100644 index 87f56dfd7..000000000 --- a/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Formatter; - -use Psy\Formatter\CodeFormatter; -use Psy\Test\Formatter\Fixtures\SomeClass; - -class CodeFormatterTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider reflectors - */ - public function testFormat($reflector, $expected) - { - $formatted = CodeFormatter::format($reflector); - $formattedWithoutColors = \preg_replace('#' . \chr(27) . '\[\d\d?m#', '', $formatted); - - $this->assertEquals($expected, self::trimLines($formattedWithoutColors)); - $this->assertNotEquals($expected, self::trimLines($formatted)); - } - - public function reflectors() - { - $expectClass = <<<'EOS' - > 14| class SomeClass - 15| { - 16| const SOME_CONST = 'some const'; - 17| private $someProp = 'some prop'; - 18| - 19| public function someMethod($someParam) - 20| { - 21| return 'some method'; - 22| } - 23| - 24| public static function someClosure() - 25| { - 26| return function () { - 27| return 'some closure'; - 28| }; - 29| } - 30| } -EOS; - - $expectMethod = <<<'EOS' - > 19| public function someMethod($someParam) - 20| { - 21| return 'some method'; - 22| } -EOS; - - $expectClosure = <<<'EOS' - > 26| return function () { - 27| return 'some closure'; - 28| }; -EOS; - - return [ - [new \ReflectionClass('Psy\Test\Formatter\Fixtures\SomeClass'), $expectClass], - [new \ReflectionObject(new SomeClass()), $expectClass], - [new \ReflectionMethod('Psy\Test\Formatter\Fixtures\SomeClass', 'someMethod'), $expectMethod], - [new \ReflectionFunction(SomeClass::someClosure()), $expectClosure], - ]; - } - - /** - * @dataProvider invalidReflectors - * @expectedException \Psy\Exception\RuntimeException - */ - public function testCodeFormatterThrowsExceptionForReflectorsItDoesntUnderstand($reflector) - { - CodeFormatter::format($reflector); - } - - public function invalidReflectors() - { - $reflectors = [ - [new \ReflectionExtension('json')], - [new \ReflectionParameter(['Psy\Test\Formatter\Fixtures\SomeClass', 'someMethod'], 'someParam')], - [new \ReflectionProperty('Psy\Test\Formatter\Fixtures\SomeClass', 'someProp')], - ]; - - if (\version_compare(PHP_VERSION, '7.1.0', '>=')) { - $reflectors[] = [new \ReflectionClassConstant('Psy\Test\Formatter\Fixtures\SomeClass', 'SOME_CONST')]; - } - - return $reflectors; - } - - /** - * @dataProvider filenames - * @expectedException \Psy\Exception\RuntimeException - */ - public function testCodeFormatterThrowsExceptionForMissingFile($filename) - { - $reflector = $this->getMockBuilder('ReflectionClass') - ->disableOriginalConstructor() - ->getMock(); - - $reflector - ->expects($this->once()) - ->method('getFileName') - ->will($this->returnValue($filename)); - - CodeFormatter::format($reflector); - } - - public function filenames() - { - if (\defined('HHVM_VERSION')) { - $this->markTestSkipped('We have issues with PHPUnit mocks on HHVM.'); - } - - return [[null], ['not a file']]; - } - - private static function trimLines($code) - { - return \rtrim(\implode("\n", \array_map('rtrim', \explode("\n", $code)))); - } -} diff --git a/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php b/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php deleted file mode 100644 index 134c76d02..000000000 --- a/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Formatter; - -use Psy\Formatter\DocblockFormatter; - -class DocblockFormatterTest extends \PHPUnit\Framework\TestCase -{ - /** - * This is a docblock! - * - * @author Justin Hileman <justin@justinhileman.info> - * - * @throws InvalidArgumentException if $foo is empty - * - * @param mixed $foo It's a foo thing - * @param int $bar This is definitely bar - * - * @return string A string of no consequence - */ - private function methodWithDocblock($foo, $bar = 1) - { - if (empty($foo)) { - throw new \InvalidArgumentException(); - } - - return 'method called'; - } - - public function testFormat() - { - $expected = <<<EOS -<comment>Description:</comment> - This is a docblock! - -<comment>Throws:</comment> - <info>InvalidArgumentException </info> if \$foo is empty - -<comment>Param:</comment> - <info>mixed </info> <strong>\$foo </strong> It's a foo thing - <info>int </info> <strong>\$bar </strong> This is definitely bar - -<comment>Return:</comment> - <info>string </info> A string of no consequence - -<comment>Author:</comment> Justin Hileman \<justin@justinhileman.info> -EOS; - - $this->assertSame( - $expected, - DocblockFormatter::format(new \ReflectionMethod($this, 'methodWithDocblock')) - ); - } -} diff --git a/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php b/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php deleted file mode 100644 index 9f13ab932..000000000 --- a/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Formatter\Fixtures; - -trait BoringTrait -{ - public function boringMethod($one = 1) - { - // Do nothing. - } -} diff --git a/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php b/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php deleted file mode 100644 index 8208fe348..000000000 --- a/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Formatter\Fixtures; - -class SomeClass -{ - const SOME_CONST = 'some const'; - private $someProp = 'some prop'; - - public function someMethod($someParam) - { - return 'some method'; - } - - public static function someClosure() - { - return function () { - return 'some closure'; - }; - } -} diff --git a/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php b/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php deleted file mode 100644 index 096e6ae78..000000000 --- a/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Formatter; - -use Psy\Formatter\SignatureFormatter; -use Psy\Reflection\ReflectionClassConstant; -use Psy\Reflection\ReflectionConstant_; - -class SignatureFormatterTest extends \PHPUnit\Framework\TestCase -{ - const FOO = 'foo value'; - private static $bar = 'bar value'; - - private function someFakeMethod(array $one, $two = 'TWO', \Reflector $three = null) - { - } - - /** - * @dataProvider signatureReflectors - */ - public function testFormat($reflector, $expected) - { - $this->assertSame($expected, \strip_tags(SignatureFormatter::format($reflector))); - } - - public function signatureReflectors() - { - return [ - [ - new \ReflectionFunction('implode'), - \defined('HHVM_VERSION') ? 'function implode($arg1, $arg2 = null)' : 'function implode($glue, $pieces)', - ], - [ - ReflectionClassConstant::create($this, 'FOO'), - 'const FOO = "foo value"', - ], - [ - new \ReflectionMethod($this, 'someFakeMethod'), - 'private function someFakeMethod(array $one, $two = \'TWO\', Reflector $three = null)', - ], - [ - new \ReflectionProperty($this, 'bar'), - 'private static $bar', - ], - [ - new \ReflectionClass('Psy\CodeCleaner\CodeCleanerPass'), - 'abstract class Psy\CodeCleaner\CodeCleanerPass ' - . 'extends PhpParser\NodeVisitorAbstract ' - . 'implements PhpParser\NodeVisitor', - ], - [ - new \ReflectionFunction('array_chunk'), - 'function array_chunk($arg, $size, $preserve_keys = unknown)', - ], - [ - new \ReflectionClass('Psy\Test\Formatter\Fixtures\BoringTrait'), - 'trait Psy\Test\Formatter\Fixtures\BoringTrait', - ], - [ - new \ReflectionMethod('Psy\Test\Formatter\Fixtures\BoringTrait', 'boringMethod'), - 'public function boringMethod($one = 1)', - ], - [ - new ReflectionConstant_('E_ERROR'), - 'define("E_ERROR", 1)', - ], - [ - new ReflectionConstant_('PHP_VERSION'), - 'define("PHP_VERSION", "' . PHP_VERSION . '")', - ], - [ - new ReflectionConstant_('__LINE__'), - 'define("__LINE__", null)', // @todo show this as `unknown` in red or something? - ], - ]; - } - - /** - * @expectedException \InvalidArgumentException - */ - public function testSignatureFormatterThrowsUnknownReflectorExpeption() - { - $refl = $this->getMockBuilder('Reflector')->getMock(); - SignatureFormatter::format($refl); - } -} diff --git a/vendor/psy/psysh/test/Input/CodeArgumentTest.php b/vendor/psy/psysh/test/Input/CodeArgumentTest.php deleted file mode 100644 index c39615208..000000000 --- a/vendor/psy/psysh/test/Input/CodeArgumentTest.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Input; - -use Psy\Input\CodeArgument; -use Symfony\Component\Console\Input\InputArgument; - -class CodeArgumentTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider getInvalidModes - * @expectedException \InvalidArgumentException - */ - public function testInvalidModes($mode) - { - new CodeArgument('wat', $mode); - } - - public function getInvalidModes() - { - return [ - [InputArgument::IS_ARRAY], - [InputArgument::IS_ARRAY | InputArgument::REQUIRED], - [InputArgument::IS_ARRAY | InputArgument::OPTIONAL], - ]; - } - - /** - * @dataProvider getValidModes - */ - public function testValidModes($mode) - { - $this->assertInstanceOf('Psy\Input\CodeArgument', new CodeArgument('yeah', $mode)); - } - - public function getValidModes() - { - return [ - [InputArgument::REQUIRED], - [InputArgument::OPTIONAL], - ]; - } -} diff --git a/vendor/psy/psysh/test/Input/FilterOptionsTest.php b/vendor/psy/psysh/test/Input/FilterOptionsTest.php deleted file mode 100644 index 7ed8919bd..000000000 --- a/vendor/psy/psysh/test/Input/FilterOptionsTest.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Input; - -use Psy\Input\FilterOptions; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\StringInput; - -class FilterOptionsTest extends \PHPUnit\Framework\TestCase -{ - public function testGetOptions() - { - $opts = FilterOptions::getOptions(); - $this->assertCount(3, $opts); - } - - /** - * @dataProvider validInputs - */ - public function testBindValidInput($input, $hasFilter = true) - { - $input = $this->getInput($input); - $filterOptions = new FilterOptions(); - $filterOptions->bind($input); - - $this->assertEquals($hasFilter, $filterOptions->hasFilter()); - } - - public function validInputs() - { - return [ - ['--grep="bar"'], - ['--grep="bar" --invert'], - ['--grep="bar" --insensitive'], - ['--grep="bar" --invert --insensitive'], - ['', false], - ]; - } - - /** - * @dataProvider invalidInputs - * @expectedException \Psy\Exception\RuntimeException - */ - public function testBindInvalidInput($input) - { - $input = $this->getInput($input); - $filterOptions = new FilterOptions(); - $filterOptions->bind($input); - } - - public function invalidInputs() - { - return [ - ['--invert'], - ['--insensitive'], - ['--invert --insensitive'], - - // invalid because regex - ['--grep /*/'], - ]; - } - - /** - * @dataProvider matchData - */ - public function testMatch($input, $str, $matches) - { - $input = $this->getInput($input); - $filterOptions = new FilterOptions(); - $filterOptions->bind($input); - - $this->assertEquals($matches, $filterOptions->match($str)); - } - - public function matchData() - { - return [ - ['', 'whatever', true], - ['--grep FOO', 'foo', false], - ['--grep foo', 'foo', true], - ['--grep foo', 'food', true], - ['--grep oo', 'Food', true], - ['--grep oo -i', 'FOOD', true], - ['--grep foo -v', 'food', false], - ['--grep foo -v', 'whatever', true], - ]; - } - - private function getInput($input) - { - $input = new StringInput($input); - $input->bind(new InputDefinition(FilterOptions::getOptions())); - - return $input; - } -} diff --git a/vendor/psy/psysh/test/Input/ShellInputTest.php b/vendor/psy/psysh/test/Input/ShellInputTest.php deleted file mode 100644 index f19d12618..000000000 --- a/vendor/psy/psysh/test/Input/ShellInputTest.php +++ /dev/null @@ -1,254 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Input; - -use Psy\Input\CodeArgument; -use Psy\Input\ShellInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -class ShellInputTest extends \PHPUnit\Framework\TestCase -{ - /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage Unexpected CodeArgument before the final position: a - */ - public function testThrowsWhenCodeArgumentNotInFinalPosition() - { - $definition = new InputDefinition([ - new CodeArgument('a', null, CodeArgument::REQUIRED), - new InputArgument('b', null, InputArgument::REQUIRED), - ]); - - $input = new ShellInput('foo bar'); - $input->bind($definition); - } - - public function testInputOptionWithGivenString() - { - $definition = new InputDefinition([ - new InputOption('foo', null, InputOption::VALUE_REQUIRED), - new CodeArgument('code', null, CodeArgument::REQUIRED), - ]); - - $input = new ShellInput('--foo=bar echo "baz\\\\n";'); - $input->bind($definition); - $this->assertSame('bar', $input->getOption('foo')); - $this->assertSame('echo "baz\n";', $input->getArgument('code')); - } - - public function testInputOptionWithoutCodeArguments() - { - $definition = new InputDefinition([ - new InputOption('foo', null, InputOption::VALUE_REQUIRED), - new InputOption('qux', 'q', InputOption::VALUE_REQUIRED), - new InputArgument('bar', null, InputArgument::REQUIRED), - new InputArgument('baz', null, InputArgument::REQUIRED), - ]); - - $input = new ShellInput('--foo=foo -q qux bar "baz\\\\n"'); - $input->bind($definition); - $this->assertSame('foo', $input->getOption('foo')); - $this->assertSame('qux', $input->getOption('qux')); - $this->assertSame('bar', $input->getArgument('bar')); - $this->assertSame('baz\\n', $input->getArgument('baz')); - } - - public function testInputWithDashDash() - { - $definition = new InputDefinition([ - new InputOption('foo', null, InputOption::VALUE_REQUIRED), - new CodeArgument('code', null, CodeArgument::REQUIRED), - ]); - - $input = new ShellInput('-- echo --foo::$bar'); - $input->bind($definition); - $this->assertNull($input->getOption('foo')); - $this->assertSame('echo --foo::$bar', $input->getArgument('code')); - } - - public function testInputWithEmptyString() - { - $definition = new InputDefinition([ - new InputOption('foo', null, InputOption::VALUE_REQUIRED), - new CodeArgument('code', null, CodeArgument::REQUIRED), - ]); - - $input = new ShellInput('"" --foo bar'); - $input->bind($definition); - $this->assertSame('"" --foo bar', $input->getArgument('code')); - } - - /** - * @dataProvider getTokenizeData - */ - public function testTokenize($input, $tokens, $message) - { - $input = new ShellInput($input); - $r = new \ReflectionClass('Psy\Input\ShellInput'); - $p = $r->getProperty('tokenPairs'); - $p->setAccessible(true); - $this->assertSame($tokens, $p->getValue($input), $message); - } - - public function getTokenizeData() - { - // Test all the cases from StringInput test, ensuring they have an appropriate $rest token. - return [ - [ - '', - [], - '->tokenize() parses an empty string', - ], - [ - 'foo', - [['foo', 'foo']], - '->tokenize() parses arguments', - ], - [ - ' foo bar ', - [['foo', 'foo bar '], ['bar', 'bar ']], - '->tokenize() ignores whitespaces between arguments', - ], - [ - '"quoted"', - [['quoted', '"quoted"']], - '->tokenize() parses quoted arguments', - ], - [ - "'quoted'", - [['quoted', "'quoted'"]], - '->tokenize() parses quoted arguments', - ], - [ - "'a\rb\nc\td'", - [["a\rb\nc\td", "'a\rb\nc\td'"]], - '->tokenize() parses whitespace chars in strings', - ], - [ - "'a'\r'b'\n'c'\t'd'", - [ - ['a', "'a'\r'b'\n'c'\t'd'"], - ['b', "'b'\n'c'\t'd'"], - ['c', "'c'\t'd'"], - ['d', "'d'"], - ], - '->tokenize() parses whitespace chars between args as spaces', - ], - - /* - * These don't play nice with unescaping input, but the end result - * is correct, so disable the tests for now. - * - * @todo Sort this out and re-enable these test cases. - */ - // [ - // '\"quoted\"', - // [['"quoted"', '\"quoted\"']], - // '->tokenize() parses escaped-quoted arguments', - // ], - // [ - // "\'quoted\'", - // [['\'quoted\'', "\'quoted\'"]], - // '->tokenize() parses escaped-quoted arguments', - // ], - - [ - '-a', - [['-a', '-a']], - '->tokenize() parses short options', - ], - [ - '-azc', - [['-azc', '-azc']], - '->tokenize() parses aggregated short options', - ], - [ - '-awithavalue', - [['-awithavalue', '-awithavalue']], - '->tokenize() parses short options with a value', - ], - [ - '-a"foo bar"', - [['-afoo bar', '-a"foo bar"']], - '->tokenize() parses short options with a value', - ], - [ - '-a"foo bar""foo bar"', - [['-afoo barfoo bar', '-a"foo bar""foo bar"']], - '->tokenize() parses short options with a value', - ], - [ - '-a\'foo bar\'', - [['-afoo bar', '-a\'foo bar\'']], - '->tokenize() parses short options with a value', - ], - [ - '-a\'foo bar\'\'foo bar\'', - [['-afoo barfoo bar', '-a\'foo bar\'\'foo bar\'']], - '->tokenize() parses short options with a value', - ], - [ - '-a\'foo bar\'"foo bar"', - [['-afoo barfoo bar', '-a\'foo bar\'"foo bar"']], - '->tokenize() parses short options with a value', - ], - [ - '--long-option', - [['--long-option', '--long-option']], - '->tokenize() parses long options', - ], - [ - '--long-option=foo', - [['--long-option=foo', '--long-option=foo']], - '->tokenize() parses long options with a value', - ], - [ - '--long-option="foo bar"', - [['--long-option=foo bar', '--long-option="foo bar"']], - '->tokenize() parses long options with a value', - ], - [ - '--long-option="foo bar""another"', - [['--long-option=foo baranother', '--long-option="foo bar""another"']], - '->tokenize() parses long options with a value', - ], - [ - '--long-option=\'foo bar\'', - [['--long-option=foo bar', '--long-option=\'foo bar\'']], - '->tokenize() parses long options with a value', - ], - [ - "--long-option='foo bar''another'", - [['--long-option=foo baranother', "--long-option='foo bar''another'"]], - '->tokenize() parses long options with a value', - ], - [ - "--long-option='foo bar'\"another\"", - [['--long-option=foo baranother', "--long-option='foo bar'\"another\""]], - '->tokenize() parses long options with a value', - ], - [ - 'foo -a -ffoo --long bar', - [ - ['foo', 'foo -a -ffoo --long bar'], - ['-a', '-a -ffoo --long bar'], - ['-ffoo', '-ffoo --long bar'], - ['--long', '--long bar'], - ['bar', 'bar'], - ], - '->tokenize() parses when several arguments and options', - ], - ]; - } -} diff --git a/vendor/psy/psysh/test/ParserTestCase.php b/vendor/psy/psysh/test/ParserTestCase.php deleted file mode 100644 index a0740b663..000000000 --- a/vendor/psy/psysh/test/ParserTestCase.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use PhpParser\PrettyPrinter\Standard as Printer; -use Psy\Exception\ParseErrorException; -use Psy\ParserFactory; - -class ParserTestCase extends \PHPUnit\Framework\TestCase -{ - protected $traverser; - private $parser; - private $printer; - - public function tearDown() - { - $this->traverser = null; - $this->parser = null; - $this->printer = null; - } - - protected function parse($code, $prefix = '<?php ') - { - $code = $prefix . $code; - try { - return $this->getParser()->parse($code); - } catch (\PhpParser\Error $e) { - if (!$this->parseErrorIsEOF($e)) { - throw ParseErrorException::fromParseError($e); - } - - try { - // Unexpected EOF, try again with an implicit semicolon - return $this->getParser()->parse($code . ';'); - } catch (\PhpParser\Error $e) { - return false; - } - } - } - - protected function traverse(array $stmts) - { - if (!isset($this->traverser)) { - throw new \RuntimeException('Test cases must provide a traverser'); - } - - return $this->traverser->traverse($stmts); - } - - protected function prettyPrint(array $stmts) - { - return $this->getPrinter()->prettyPrint($stmts); - } - - protected function assertProcessesAs($from, $to) - { - $stmts = $this->parse($from); - $stmts = $this->traverse($stmts); - $toStmts = $this->parse($to); - $this->assertSame($this->prettyPrint($toStmts), $this->prettyPrint($stmts)); - } - - private function getParser() - { - if (!isset($this->parser)) { - $parserFactory = new ParserFactory(); - $this->parser = $parserFactory->createParser(); - } - - return $this->parser; - } - - private function getPrinter() - { - if (!isset($this->printer)) { - $this->printer = new Printer(); - } - - return $this->printer; - } - - private function parseErrorIsEOF(\PhpParser\Error $e) - { - $msg = $e->getRawMessage(); - - return ($msg === 'Unexpected token EOF') || (\strpos($msg, 'Syntax error, unexpected EOF') !== false); - } -} diff --git a/vendor/psy/psysh/test/Readline/GNUReadlineTest.php b/vendor/psy/psysh/test/Readline/GNUReadlineTest.php deleted file mode 100644 index 406377fcc..000000000 --- a/vendor/psy/psysh/test/Readline/GNUReadlineTest.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Readline; - -use Psy\Readline\GNUReadline; - -class GNUReadlineTest extends \PHPUnit\Framework\TestCase -{ - private $historyFile; - - public function setUp() - { - if (!GNUReadline::isSupported()) { - $this->markTestSkipped('GNUReadline not enabled'); - } - - $this->historyFile = \tempnam(\sys_get_temp_dir(), 'psysh_test_history'); - \file_put_contents($this->historyFile, "_HiStOrY_V2_\n"); - } - - public function testHistory() - { - $readline = new GNUReadline($this->historyFile); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $this->assertSame(['foo'], $readline->listHistory()); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistorySize() - { - $readline = new GNUReadline($this->historyFile, 2); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'baz'], $readline->listHistory()); - $readline->addHistory('w00t'); - $this->assertSame(['baz', 'w00t'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistoryEraseDups() - { - $readline = new GNUReadline($this->historyFile, 0, true); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $readline->addHistory('foo'); - $this->assertSame(['bar', 'foo'], $readline->listHistory()); - $readline->addHistory('baz'); - $readline->addHistory('w00t'); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } -} diff --git a/vendor/psy/psysh/test/Readline/HoaConsoleTest.php b/vendor/psy/psysh/test/Readline/HoaConsoleTest.php deleted file mode 100644 index ecf444f39..000000000 --- a/vendor/psy/psysh/test/Readline/HoaConsoleTest.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Readline; - -use Psy\Readline\HoaConsole; - -class HoaConsoleTest extends \PHPUnit\Framework\TestCase -{ - public function testHistory() - { - $readline = new HoaConsole(); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $this->assertSame(['foo'], $readline->listHistory()); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } -} diff --git a/vendor/psy/psysh/test/Readline/LibeditTest.php b/vendor/psy/psysh/test/Readline/LibeditTest.php deleted file mode 100644 index 2d7be2889..000000000 --- a/vendor/psy/psysh/test/Readline/LibeditTest.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Readline; - -use Psy\Readline\Libedit; - -class LibeditTest extends \PHPUnit\Framework\TestCase -{ - private $historyFile; - - public function setUp() - { - if (!Libedit::isSupported()) { - $this->markTestSkipped('Libedit not enabled'); - } - - $this->historyFile = \tempnam(\sys_get_temp_dir(), 'psysh_test_history'); - if (false === \file_put_contents($this->historyFile, "_HiStOrY_V2_\n")) { - $this->fail('Unable to write history file: ' . $this->historyFile); - } - // Calling readline_read_history before readline_clear_history - // avoids segfault with PHP 5.5.7 & libedit v3.1 - \readline_read_history($this->historyFile); - \readline_clear_history(); - } - - public function tearDown() - { - if (\is_file($this->historyFile)) { - \unlink($this->historyFile); - } - } - - public function testHistory() - { - $readline = new Libedit($this->historyFile); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $this->assertSame(['foo'], $readline->listHistory()); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistorySize() - { - $readline = new Libedit($this->historyFile, 2); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'baz'], $readline->listHistory()); - $readline->addHistory('w00t'); - $this->assertSame(['baz', 'w00t'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistoryEraseDups() - { - $readline = new Libedit($this->historyFile, 0, true); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $readline->addHistory('foo'); - $this->assertSame(['bar', 'foo'], $readline->listHistory()); - $readline->addHistory('baz'); - $readline->addHistory('w00t'); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - public function testListHistory() - { - $readline = new Libedit($this->historyFile); - \file_put_contents( - $this->historyFile, - "This is an entry\n\0This is a comment\nThis is an entry\0With a comment\n", - FILE_APPEND - ); - $this->assertSame([ - 'This is an entry', - 'This is an entry', - ], $readline->listHistory()); - $readline->clearHistory(); - } - - /** - * Libedit being a BSD library, - * it doesn't support non-unix line separators. - */ - public function testLinebreaksSupport() - { - $readline = new Libedit($this->historyFile); - \file_put_contents( - $this->historyFile, - "foo\rbar\nbaz\r\nw00t", - FILE_APPEND - ); - $this->assertSame([ - "foo\rbar", - "baz\r", - 'w00t', - ], $readline->listHistory()); - $readline->clearHistory(); - } -} diff --git a/vendor/psy/psysh/test/Readline/TransientTest.php b/vendor/psy/psysh/test/Readline/TransientTest.php deleted file mode 100644 index 24fcba0b2..000000000 --- a/vendor/psy/psysh/test/Readline/TransientTest.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Readline; - -use Psy\Readline\Transient; - -class TransientTest extends \PHPUnit\Framework\TestCase -{ - public function testHistory() - { - $readline = new Transient(); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $this->assertSame(['foo'], $readline->listHistory()); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistorySize() - { - $readline = new Transient(null, 2); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $this->assertSame(['foo', 'bar'], $readline->listHistory()); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'baz'], $readline->listHistory()); - $readline->addHistory('w00t'); - $this->assertSame(['baz', 'w00t'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - /** - * @depends testHistory - */ - public function testHistoryEraseDups() - { - $readline = new Transient(null, 0, true); - $this->assertEmpty($readline->listHistory()); - $readline->addHistory('foo'); - $readline->addHistory('bar'); - $readline->addHistory('foo'); - $this->assertSame(['bar', 'foo'], $readline->listHistory()); - $readline->addHistory('baz'); - $readline->addHistory('w00t'); - $readline->addHistory('baz'); - $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory()); - $readline->clearHistory(); - $this->assertEmpty($readline->listHistory()); - } - - public function testSomeThingsAreAlwaysTrue() - { - $readline = new Transient(); - $this->assertTrue(Transient::isSupported()); - $this->assertTrue($readline->readHistory()); - $this->assertTrue($readline->writeHistory()); - } -} diff --git a/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php b/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php deleted file mode 100644 index 87d4f7520..000000000 --- a/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Reflection; - -use Psy\Reflection\ReflectionClassConstant; - -class ReflectionClassConstantTest extends \PHPUnit\Framework\TestCase -{ - const CONSTANT_ONE = 'one'; - - public function testConstruction() - { - $refl = new ReflectionClassConstant($this, 'CONSTANT_ONE'); - $class = $refl->getDeclaringClass(); - - $this->assertInstanceOf('ReflectionClass', $class); - $this->assertSame('Psy\Test\Reflection\ReflectionClassConstantTest', $class->getName()); - $this->assertSame('CONSTANT_ONE', $refl->getName()); - $this->assertSame('CONSTANT_ONE', (string) $refl); - $this->assertSame('one', $refl->getValue()); - $this->assertNull($refl->getFileName()); - $this->assertFalse($refl->getDocComment()); - } - - /** - * @expectedException \InvalidArgumentException - */ - public function testUnknownConstantThrowsException() - { - new ReflectionClassConstant($this, 'UNKNOWN_CONSTANT'); - } - - public function testExport() - { - $ret = ReflectionClassConstant::export($this, 'CONSTANT_ONE', true); - $this->assertEquals($ret, 'Constant [ public string CONSTANT_ONE ] { one }'); - } - - public function testExportOutput() - { - $this->expectOutputString("Constant [ public string CONSTANT_ONE ] { one }\n"); - ReflectionClassConstant::export($this, 'CONSTANT_ONE', false); - } - - public function testModifiers() - { - $refl = new ReflectionClassConstant($this, 'CONSTANT_ONE'); - - $this->assertEquals(\ReflectionMethod::IS_PUBLIC, $refl->getModifiers()); - $this->assertFalse($refl->isPrivate()); - $this->assertFalse($refl->isProtected()); - $this->assertTrue($refl->isPublic()); - } - - /** - * @expectedException \RuntimeException - * @dataProvider notYetImplemented - */ - public function testNotYetImplemented($method) - { - $refl = new ReflectionClassConstant($this, 'CONSTANT_ONE'); - $refl->$method(); - } - - public function notYetImplemented() - { - return [ - ['getStartLine'], - ['getEndLine'], - ]; - } -} diff --git a/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php b/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php deleted file mode 100644 index 69d279709..000000000 --- a/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Reflection; - -use Psy\Reflection\ReflectionConstant; - -class ReflectionConstantBCTest extends \PHPUnit\Framework\TestCase -{ - const CONSTANT_ONE = 'one'; - - public function testConstruction() - { - $refl = new ReflectionConstant($this, 'CONSTANT_ONE'); - $this->assertInstanceOf('Psy\Reflection\ReflectionConstant', $refl); - $this->assertInstanceOf('Psy\Reflection\ReflectionClassConstant', $refl); - } -} diff --git a/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php b/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php deleted file mode 100644 index 02c1a8442..000000000 --- a/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Reflection; - -use Psy\Reflection\ReflectionConstant_; - -\define('Psy\\Test\\Reflection\\SOME_CONSTANT', 'yep'); - -class ReflectionConstantTest extends \PHPUnit\Framework\TestCase -{ - public function testConstruction() - { - $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT'); - - $this->assertFalse($refl->getDocComment()); - $this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', $refl->getName()); - $this->assertEquals('Psy\\Test\\Reflection', $refl->getNamespaceName()); - $this->assertEquals('yep', $refl->getValue()); - $this->assertTrue($refl->inNamespace()); - $this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', (string) $refl); - $this->assertNull($refl->getFileName()); - } - - public function testBuiltInConstant() - { - $refl = new ReflectionConstant_('PHP_VERSION'); - - $this->assertEquals('PHP_VERSION', $refl->getName()); - $this->assertEquals('PHP_VERSION', (string) $refl); - $this->assertEquals(PHP_VERSION, $refl->getValue()); - $this->assertFalse($refl->inNamespace()); - $this->assertSame('', $refl->getNamespaceName()); - } - - /** - * @dataProvider magicConstants - */ - public function testIsMagicConstant($name, $is) - { - $this->assertEquals($is, ReflectionConstant_::isMagicConstant($name)); - } - - public function magicConstants() - { - return [ - ['__LINE__', true], - ['__FILE__', true], - ['__DIR__', true], - ['__FUNCTION__', true], - ['__CLASS__', true], - ['__TRAIT__', true], - ['__METHOD__', true], - ['__NAMESPACE__', true], - ['__COMPILER_HALT_OFFSET__', true], - ['PHP_VERSION', false], - ['PHP_EOL', false], - ['Psy\\Test\\Reflection\\SOME_CONSTANT', false], - ['What if it isn\'t even a valid constant name?', false], - ]; - } - - /** - * @expectedException \InvalidArgumentException - */ - public function testUnknownConstantThrowsException() - { - new ReflectionConstant_('UNKNOWN_CONSTANT'); - } - - public function testExport() - { - $ret = ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', true); - $this->assertEquals($ret, 'Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }'); - } - - public function testExportOutput() - { - $this->expectOutputString("Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }\n"); - ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', false); - } - - public function testGetFileName() - { - $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT'); - $this->assertNull($refl->getFileName()); - } - - /** - * @expectedException \RuntimeException - * @dataProvider notYetImplemented - */ - public function testNotYetImplemented($method) - { - $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT'); - $refl->$method(); - } - - public function notYetImplemented() - { - return [ - ['getStartLine'], - ['getEndLine'], - ]; - } -} diff --git a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php b/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php deleted file mode 100644 index 223432f8c..000000000 --- a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Reflection; - -use Psy\Reflection\ReflectionLanguageConstruct; -use Psy\Reflection\ReflectionLanguageConstructParameter; - -class ReflectionLanguageConstructParameterTest extends \PHPUnit\Framework\TestCase -{ - public function testOptions() - { - $keyword = new ReflectionLanguageConstruct('die'); - - $refl = new ReflectionLanguageConstructParameter($keyword, 'one', [ - 'isArray' => false, - 'defaultValue' => null, - 'isOptional' => false, - 'isPassedByReference' => false, - ]); - - $this->assertNull($refl->getClass()); - $this->assertEquals('one', $refl->getName()); - $this->assertFalse($refl->isArray()); - $this->assertTrue($refl->isDefaultValueAvailable()); - $this->assertNull($refl->getDefaultValue()); - $this->assertFalse($refl->isOptional()); - $this->assertFalse($refl->isPassedByReference()); - - $reflTwo = new ReflectionLanguageConstructParameter($keyword, 'two', [ - 'isArray' => true, - 'isOptional' => true, - 'isPassedByReference' => true, - ]); - - $this->assertNull($refl->getClass()); - $this->assertEquals('two', $reflTwo->getName()); - $this->assertTrue($reflTwo->isArray()); - $this->assertFalse($reflTwo->isDefaultValueAvailable()); - $this->assertNull($reflTwo->getDefaultValue()); - $this->assertTrue($reflTwo->isOptional()); - $this->assertTrue($reflTwo->isPassedByReference()); - - $refl = new ReflectionLanguageConstructParameter($keyword, 'three', [ - 'defaultValue' => 3, - ]); - - $this->assertNull($refl->getClass()); - $this->assertEquals('three', $refl->getName()); - $this->assertFalse($refl->isArray()); - $this->assertTrue($refl->isDefaultValueAvailable()); - $this->assertEquals(3, $refl->getDefaultValue()); - $this->assertFalse($refl->isOptional()); - $this->assertFalse($refl->isPassedByReference()); - } -} diff --git a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php b/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php deleted file mode 100644 index 872a726d6..000000000 --- a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Reflection; - -use Psy\Reflection\ReflectionLanguageConstruct; - -class ReflectionLanguageConstructTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider languageConstructs - */ - public function testConstruction($keyword) - { - $refl = new ReflectionLanguageConstruct($keyword); - $this->assertEquals($keyword, $refl->getName()); - $this->assertEquals($keyword, (string) $refl); - } - - /** - * @dataProvider languageConstructs - */ - public function testKnownLanguageConstructs($keyword) - { - $this->assertTrue(ReflectionLanguageConstruct::isLanguageConstruct($keyword)); - } - - /** - * @dataProvider languageConstructs - */ - public function testFileName($keyword) - { - $refl = new ReflectionLanguageConstruct($keyword); - $this->assertFalse($refl->getFileName()); - } - - /** - * @dataProvider languageConstructs - */ - public function testReturnsReference($keyword) - { - $refl = new ReflectionLanguageConstruct($keyword); - $this->assertFalse($refl->returnsReference()); - } - - /** - * @dataProvider languageConstructs - */ - public function testGetParameters($keyword) - { - $refl = new ReflectionLanguageConstruct($keyword); - $this->assertNotEmpty($refl->getParameters()); - } - - /** - * @dataProvider languageConstructs - * @expectedException \RuntimeException - */ - public function testExportThrows($keyword) - { - ReflectionLanguageConstruct::export($keyword); - } - - public function languageConstructs() - { - return [ - ['isset'], - ['unset'], - ['empty'], - ['echo'], - ['print'], - ['die'], - ['exit'], - ]; - } - - /** - * @dataProvider unknownLanguageConstructs - * @expectedException \InvalidArgumentException - */ - public function testUnknownLanguageConstructsThrowExceptions($keyword) - { - new ReflectionLanguageConstruct($keyword); - } - - public function unknownLanguageConstructs() - { - return [ - ['async'], - ['await'], - ['comefrom'], - ]; - } -} diff --git a/vendor/psy/psysh/test/ShellTest.php b/vendor/psy/psysh/test/ShellTest.php deleted file mode 100644 index 809af021e..000000000 --- a/vendor/psy/psysh/test/ShellTest.php +++ /dev/null @@ -1,442 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\Configuration; -use Psy\Exception\ErrorException; -use Psy\Exception\ParseErrorException; -use Psy\Shell; -use Psy\TabCompletion\Matcher\ClassMethodsMatcher; -use Symfony\Component\Console\Output\StreamOutput; - -class ShellTest extends \PHPUnit\Framework\TestCase -{ - private $streams = []; - - public function tearDown() - { - foreach ($this->streams as $stream) { - \fclose($stream); - } - } - - public function testScopeVariables() - { - $one = 'banana'; - $two = 123; - $three = new \StdClass(); - $__psysh__ = 'ignore this'; - $_ = 'ignore this'; - $_e = 'ignore this'; - - $shell = new Shell($this->getConfig()); - $shell->setScopeVariables(\compact('one', 'two', 'three', '__psysh__', '_', '_e', 'this')); - - $this->assertNotContains('__psysh__', $shell->getScopeVariableNames()); - $this->assertSame(['one', 'two', 'three', '_'], $shell->getScopeVariableNames()); - $this->assertSame('banana', $shell->getScopeVariable('one')); - $this->assertSame(123, $shell->getScopeVariable('two')); - $this->assertSame($three, $shell->getScopeVariable('three')); - $this->assertNull($shell->getScopeVariable('_')); - - $diff = $shell->getScopeVariablesDiff(['one' => $one, 'two' => 'not two']); - $this->assertSame(['two' => $two, 'three' => $three, '_' => null], $diff); - - $shell->setScopeVariables([]); - $this->assertSame(['_'], $shell->getScopeVariableNames()); - - $shell->setBoundObject($this); - $this->assertSame(['_', 'this'], $shell->getScopeVariableNames()); - $this->assertSame($this, $shell->getScopeVariable('this')); - $this->assertSame(['_' => null], $shell->getScopeVariables(false)); - $this->assertSame(['_' => null, 'this' => $this], $shell->getScopeVariables()); - } - - /** - * @expectedException \InvalidArgumentException - */ - public function testUnknownScopeVariablesThrowExceptions() - { - $shell = new Shell($this->getConfig()); - $shell->setScopeVariables(['foo' => 'FOO', 'bar' => 1]); - $shell->getScopeVariable('baz'); - } - - public function testIncludesWithScopeVariables() - { - $one = 'banana'; - $two = 123; - $three = new \StdClass(); - $__psysh__ = 'ignore this'; - $_ = 'ignore this'; - $_e = 'ignore this'; - - $config = $this->getConfig(['usePcntl' => false]); - - $shell = new Shell($config); - $shell->setScopeVariables(\compact('one', 'two', 'three', '__psysh__', '_', '_e', 'this')); - $shell->addInput('exit', true); - - // This is super slow and we shouldn't do this :( - $shell->run(null, $this->getOutput()); - - $this->assertNotContains('__psysh__', $shell->getScopeVariableNames()); - $this->assertSame(['one', 'two', 'three', '_', '_e'], $shell->getScopeVariableNames()); - $this->assertSame('banana', $shell->getScopeVariable('one')); - $this->assertSame(123, $shell->getScopeVariable('two')); - $this->assertSame($three, $shell->getScopeVariable('three')); - $this->assertNull($shell->getScopeVariable('_')); - } - - public function testIncludes() - { - $config = $this->getConfig(['configFile' => __DIR__ . '/fixtures/empty.php']); - - $shell = new Shell($config); - $this->assertEmpty($shell->getIncludes()); - $shell->setIncludes(['foo', 'bar', 'baz']); - $this->assertSame(['foo', 'bar', 'baz'], $shell->getIncludes()); - } - - public function testIncludesConfig() - { - $config = $this->getConfig([ - 'defaultIncludes' => ['/file.php'], - 'configFile' => __DIR__ . '/fixtures/empty.php', - ]); - - $shell = new Shell($config); - - $includes = $shell->getIncludes(); - $this->assertSame('/file.php', $includes[0]); - } - - public function testAddMatchersViaConfig() - { - $shell = new FakeShell(); - $matcher = new ClassMethodsMatcher(); - - $config = $this->getConfig([ - 'matchers' => [$matcher], - ]); - $config->setShell($shell); - - $this->assertSame([$matcher], $shell->matchers); - } - - public function testAddMatchersViaConfigAfterShell() - { - $shell = new FakeShell(); - $matcher = new ClassMethodsMatcher(); - - $config = $this->getConfig([]); - $config->setShell($shell); - $config->addMatchers([$matcher]); - - $this->assertSame([$matcher], $shell->matchers); - } - - public function testRenderingExceptions() - { - $shell = new Shell($this->getConfig()); - $output = $this->getOutput(); - $stream = $output->getStream(); - $e = new ParseErrorException('message', 13); - - $shell->setOutput($output); - $shell->addCode('code'); - $this->assertTrue($shell->hasCode()); - $this->assertNotEmpty($shell->getCodeBuffer()); - - $shell->writeException($e); - - $this->assertSame($e, $shell->getScopeVariable('_e')); - $this->assertFalse($shell->hasCode()); - $this->assertEmpty($shell->getCodeBuffer()); - - \rewind($stream); - $streamContents = \stream_get_contents($stream); - - $this->assertContains('PHP Parse error', $streamContents); - $this->assertContains('message', $streamContents); - $this->assertContains('line 13', $streamContents); - } - - public function testHandlingErrors() - { - $shell = new Shell($this->getConfig()); - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell->setOutput($output); - - $oldLevel = \error_reporting(); - \error_reporting($oldLevel & ~E_USER_NOTICE); - - try { - $shell->handleError(E_USER_NOTICE, 'wheee', null, 13); - } catch (ErrorException $e) { - \error_reporting($oldLevel); - $this->fail('Unexpected error exception'); - } - \error_reporting($oldLevel); - - \rewind($stream); - $streamContents = \stream_get_contents($stream); - - $this->assertContains('PHP Notice:', $streamContents); - $this->assertContains('wheee', $streamContents); - $this->assertContains('line 13', $streamContents); - } - - /** - * @expectedException \Psy\Exception\ErrorException - */ - public function testNotHandlingErrors() - { - $shell = new Shell($this->getConfig()); - $oldLevel = \error_reporting(); - \error_reporting($oldLevel | E_USER_NOTICE); - - try { - $shell->handleError(E_USER_NOTICE, 'wheee', null, 13); - } catch (ErrorException $e) { - \error_reporting($oldLevel); - throw $e; - } - } - - public function testVersion() - { - $shell = new Shell($this->getConfig()); - - $this->assertInstanceOf('Symfony\Component\Console\Application', $shell); - $this->assertContains(Shell::VERSION, $shell->getVersion()); - $this->assertContains(PHP_VERSION, $shell->getVersion()); - $this->assertContains(PHP_SAPI, $shell->getVersion()); - } - - public function testCodeBuffer() - { - $shell = new Shell($this->getConfig()); - - $shell->addCode('class'); - $this->assertNull($shell->flushCode()); - $this->assertTrue($shell->hasCode()); - - $shell->addCode('a'); - $this->assertNull($shell->flushCode()); - $this->assertTrue($shell->hasCode()); - - $shell->addCode('{}'); - $code = $shell->flushCode(); - $this->assertFalse($shell->hasCode()); - $code = \preg_replace('/\s+/', ' ', $code); - $this->assertNotNull($code); - $this->assertSame('class a { } return new \\Psy\\CodeCleaner\\NoReturnValue();', $code); - } - - public function testKeepCodeBufferOpen() - { - $shell = new Shell($this->getConfig()); - - $shell->addCode('1 \\'); - $this->assertNull($shell->flushCode()); - $this->assertTrue($shell->hasCode()); - - $shell->addCode('+ 1 \\'); - $this->assertNull($shell->flushCode()); - $this->assertTrue($shell->hasCode()); - - $shell->addCode('+ 1'); - $code = $shell->flushCode(); - $this->assertFalse($shell->hasCode()); - $code = \preg_replace('/\s+/', ' ', $code); - $this->assertNotNull($code); - $this->assertSame('return 1 + 1 + 1;', $code); - } - - /** - * @expectedException \Psy\Exception\ParseErrorException - */ - public function testCodeBufferThrowsParseExceptions() - { - $shell = new Shell($this->getConfig()); - $shell->addCode('this is not valid'); - $shell->flushCode(); - } - - public function testClosuresSupport() - { - $shell = new Shell($this->getConfig()); - $code = '$test = function () {}'; - $shell->addCode($code); - $shell->flushCode(); - $code = '$test()'; - $shell->addCode($code); - $this->assertSame($shell->flushCode(), 'return $test();'); - } - - public function testWriteStdout() - { - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell = new Shell($this->getConfig()); - $shell->setOutput($output); - - $shell->writeStdout("{{stdout}}\n"); - - \rewind($stream); - $streamContents = \stream_get_contents($stream); - - $this->assertSame('{{stdout}}' . PHP_EOL, $streamContents); - } - - public function testWriteStdoutWithoutNewline() - { - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell = new Shell($this->getConfig()); - $shell->setOutput($output); - - $shell->writeStdout('{{stdout}}'); - - \rewind($stream); - $streamContents = \stream_get_contents($stream); - - $this->assertSame('{{stdout}}<aside>⏎</aside>' . PHP_EOL, $streamContents); - } - - /** - * @dataProvider getReturnValues - */ - public function testWriteReturnValue($input, $expected) - { - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell = new Shell($this->getConfig()); - $shell->setOutput($output); - - $shell->writeReturnValue($input); - \rewind($stream); - $this->assertEquals($expected, \stream_get_contents($stream)); - } - - public function getReturnValues() - { - return [ - ['{{return value}}', "=> \"\033[32m{{return value}}\033[39m\"" . PHP_EOL], - [1, "=> \033[35m1\033[39m" . PHP_EOL], - ]; - } - - /** - * @dataProvider getRenderedExceptions - */ - public function testWriteException($exception, $expected) - { - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell = new Shell($this->getConfig()); - $shell->setOutput($output); - - $shell->writeException($exception); - \rewind($stream); - $this->assertSame($expected, \stream_get_contents($stream)); - } - - public function getRenderedExceptions() - { - return [ - [new \Exception('{{message}}'), "Exception with message '{{message}}'" . PHP_EOL], - ]; - } - - /** - * @dataProvider getExecuteValues - */ - public function testShellExecute($input, $expected) - { - $output = $this->getOutput(); - $stream = $output->getStream(); - $shell = new Shell($this->getConfig()); - $shell->setOutput($output); - $this->assertEquals($expected, $shell->execute($input)); - \rewind($stream); - $this->assertSame('', \stream_get_contents($stream)); - } - - public function getExecuteValues() - { - return [ - ['return 12', 12], - ['"{{return value}}"', '{{return value}}'], - ['1', '1'], - ]; - } - - /** - * @dataProvider commandsToHas - */ - public function testHasCommand($command, $has) - { - $shell = new Shell($this->getConfig()); - - // :-/ - $refl = new \ReflectionClass('Psy\\Shell'); - $method = $refl->getMethod('hasCommand'); - $method->setAccessible(true); - - $this->assertEquals($method->invokeArgs($shell, [$command]), $has); - } - - public function commandsToHas() - { - return [ - ['help', true], - ['help help', true], - ['"help"', false], - ['"help help"', false], - ['ls -al ', true], - ['ls "-al" ', true], - ['ls"-al"', false], - [' q', true], - [' q --help', true], - ['"q"', false], - ['"q",', false], - ]; - } - - private function getOutput() - { - $stream = \fopen('php://memory', 'w+'); - $this->streams[] = $stream; - - $output = new StreamOutput($stream, StreamOutput::VERBOSITY_NORMAL, false); - - return $output; - } - - private function getConfig(array $config = []) - { - // Mebbe there's a better way than this? - $dir = \tempnam(\sys_get_temp_dir(), 'psysh_shell_test_'); - \unlink($dir); - - $defaults = [ - 'configDir' => $dir, - 'dataDir' => $dir, - 'runtimeDir' => $dir, - ]; - - return new Configuration(\array_merge($defaults, $config)); - } -} diff --git a/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php b/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php deleted file mode 100644 index 1f2042c86..000000000 --- a/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Sudo; - -use PhpParser\NodeTraverser; -use Psy\Sudo\SudoVisitor; -use Psy\Test\ParserTestCase; - -class SudoVisitorTest extends ParserTestCase -{ - public function setUp() - { - $this->traverser = new NodeTraverser(); - $this->traverser->addVisitor(new SudoVisitor()); - } - - /** - * @dataProvider propertyFetches - */ - public function testPropertyFetch($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function propertyFetches() - { - return [ - ['$a->b', "\Psy\Sudo::fetchProperty(\$a, 'b');"], - ['$a->$b', '\Psy\Sudo::fetchProperty($a, $b);'], - ["\$a->{'b'}", "\Psy\Sudo::fetchProperty(\$a, 'b');"], - ]; - } - - /** - * @dataProvider propertyAssigns - */ - public function testPropertyAssign($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function propertyAssigns() - { - return [ - ['$a->b = $c', "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"], - ['$a->$b = $c', '\Psy\Sudo::assignProperty($a, $b, $c);'], - ["\$a->{'b'} = \$c", "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"], - ]; - } - - /** - * @dataProvider methodCalls - */ - public function testMethodCall($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function methodCalls() - { - return [ - ['$a->b()', "\Psy\Sudo::callMethod(\$a, 'b');"], - ['$a->$b()', '\Psy\Sudo::callMethod($a, $b);'], - ["\$a->b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, 'b', \$c, 'd');"], - ["\$a->\$b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, \$b, \$c, 'd');"], - ]; - } - - /** - * @dataProvider staticPropertyFetches - */ - public function testStaticPropertyFetch($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function staticPropertyFetches() - { - return [ - ['A::$b', "\Psy\Sudo::fetchStaticProperty('A', 'b');"], - ['$a::$b', "\Psy\Sudo::fetchStaticProperty(\$a, 'b');"], - ]; - } - - /** - * @dataProvider staticPropertyAssigns - */ - public function testStaticPropertyAssign($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function staticPropertyAssigns() - { - return [ - ['A::$b = $c', "\Psy\Sudo::assignStaticProperty('A', 'b', \$c);"], - ['$a::$b = $c', "\Psy\Sudo::assignStaticProperty(\$a, 'b', \$c);"], - ]; - } - - /** - * @dataProvider staticCalls - */ - public function testStaticCall($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function staticCalls() - { - return [ - ['A::b()', "\Psy\Sudo::callStatic('A', 'b');"], - ['A::$b()', "\Psy\Sudo::callStatic('A', \$b);"], - ["A::b(\$c, 'd')", "\Psy\Sudo::callStatic('A', 'b', \$c, 'd');"], - ["A::\$b(\$c, 'd')", "\Psy\Sudo::callStatic('A', \$b, \$c, 'd');"], - ]; - } - - /** - * @dataProvider classConstFetches - */ - public function testClassConstFetch($from, $to) - { - $this->assertProcessesAs($from, $to); - } - - public function classConstFetches() - { - return [ - ['A::B', "\Psy\Sudo::fetchClassConst('A', 'B');"], - ]; - } -} diff --git a/vendor/psy/psysh/test/SudoTest.php b/vendor/psy/psysh/test/SudoTest.php deleted file mode 100644 index 6123db04e..000000000 --- a/vendor/psy/psysh/test/SudoTest.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test; - -use Psy\Sudo; - -class SudoTest extends \PHPUnit\Framework\TestCase -{ - public function setUp() - { - if (\version_compare(PHP_VERSION, '7.1.0', '<')) { - $this->markTestSkipped('YOLO'); - } - } - - public function testFetchProperty() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and prop', Sudo::fetchProperty($obj, 'privateProp')); - } - - public function testAssignProperty() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and prop', Sudo::fetchProperty($obj, 'privateProp')); - $this->assertSame('not so private now', Sudo::assignProperty($obj, 'privateProp', 'not so private now')); - $this->assertSame('not so private now', Sudo::fetchProperty($obj, 'privateProp')); - } - - public function testCallMethod() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and method', Sudo::callMethod($obj, 'privateMethod')); - $this->assertSame('private and method with 1', Sudo::callMethod($obj, 'privateMethod', 1)); - $this->assertSame( - 'private and method with ["foo",2]', - Sudo::callMethod($obj, 'privateMethod', ['foo', 2] - )); - } - - public function testFetchStaticProperty() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and static and prop', Sudo::fetchStaticProperty($obj, 'privateStaticProp')); - } - - public function testAssignStaticProperty() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and static and prop', Sudo::fetchStaticProperty($obj, 'privateStaticProp')); - $this->assertSame('not so private now', Sudo::assignStaticProperty($obj, 'privateStaticProp', 'not so private now')); - $this->assertSame('not so private now', Sudo::fetchStaticProperty($obj, 'privateStaticProp')); - } - - public function testCallStatic() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and static and method', Sudo::callStatic($obj, 'privateStaticMethod')); - $this->assertSame('private and static and method with 1', Sudo::callStatic($obj, 'privateStaticMethod', 1)); - $this->assertSame( - 'private and static and method with ["foo",2]', - Sudo::callStatic($obj, 'privateStaticMethod', ['foo', 2] - )); - } - - public function testFetchClassConst() - { - $obj = new ClassWithSecrets(); - $this->assertSame('private and const', Sudo::fetchClassConst($obj, 'PRIVATE_CONST')); - } -} diff --git a/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php b/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php deleted file mode 100644 index d98d452c4..000000000 --- a/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\TabCompletion; - -use Psy\Command\ListCommand; -use Psy\Command\ShowCommand; -use Psy\Configuration; -use Psy\Context; -use Psy\ContextAware; -use Psy\TabCompletion\Matcher; - -class AutoCompleterTest extends \PHPUnit\Framework\TestCase -{ - /** - * @param string $line - * @param array $mustContain - * @param array $mustNotContain - * @dataProvider classesInput - */ - public function testClassesCompletion($line, $mustContain, $mustNotContain) - { - $context = new Context(); - - $commands = [ - new ShowCommand(), - new ListCommand(), - ]; - - $matchers = [ - new Matcher\VariablesMatcher(), - new Matcher\ClassNamesMatcher(), - new Matcher\ConstantsMatcher(), - new Matcher\FunctionsMatcher(), - new Matcher\ObjectMethodsMatcher(), - new Matcher\ObjectAttributesMatcher(), - new Matcher\KeywordsMatcher(), - new Matcher\ClassAttributesMatcher(), - new Matcher\ClassMethodsMatcher(), - new Matcher\CommandsMatcher($commands), - ]; - - $config = new Configuration(); - $tabCompletion = $config->getAutoCompleter(); - foreach ($matchers as $matcher) { - if ($matcher instanceof ContextAware) { - $matcher->setContext($context); - } - $tabCompletion->addMatcher($matcher); - } - - $context->setAll(['foo' => 12, 'bar' => new \DOMDocument()]); - - $code = $tabCompletion->processCallback('', 0, [ - 'line_buffer' => $line, - 'point' => 0, - 'end' => \strlen($line), - ]); - - foreach ($mustContain as $mc) { - $this->assertContains($mc, $code); - } - - foreach ($mustNotContain as $mnc) { - $this->assertNotContains($mnc, $code); - } - } - - /** - * TODO - * ==== - * draft, open to modifications - * - [ ] if the variable is an array, return the square bracket for completion - * - [ ] if the variable is a constructor or method, reflect to complete as a function call - * - [ ] if the preceding token is a variable, call operators or keywords compatible for completion - * - [X] a command always should be the second token after php_open_tag - * - [X] keywords are never consecutive - * - [X] namespacing completion should work just fine - * - [X] after a new keyword, should always be a class constructor, never a function call or keyword, constant, - * or variable that does not contain a existing class name. - * - [X] on a namespaced constructor the completion must show the classes related, not constants. - * - * @return array - */ - public function classesInput() - { - return [ - // input, must had, must not had - ['T_OPE', ['T_OPEN_TAG'], []], - ['st', ['stdClass'], []], - ['stdCla', ['stdClass'], []], - ['new s', ['stdClass'], []], - [ - 'new ', - ['stdClass', 'Psy\\Context', 'Psy\\Configuration'], - ['require', 'array_search', 'T_OPEN_TAG', '$foo'], - ], - ['new Psy\\C', ['Context'], ['CASE_LOWER']], - ['\s', ['stdClass'], []], - ['array_', ['array_search', 'array_map', 'array_merge'], []], - ['$bar->', ['load'], []], - ['$b', ['bar'], []], - ['6 + $b', ['bar'], []], - ['$f', ['foo'], []], - ['l', ['ls'], []], - ['ls ', [], ['ls']], - ['sho', ['show'], []], - ['12 + clone $', ['foo'], []], - // array( - // '$foo ', - // array('+', 'clone'), - // array('$foo', 'DOMDocument', 'array_map') - // ), requires a operator matcher? - ['$', ['foo', 'bar'], ['require', 'array_search', 'T_OPEN_TAG', 'Psy']], - [ - 'Psy\\', - ['Context', 'TabCompletion\\Matcher\\AbstractMatcher'], - ['require', 'array_search'], - ], - [ - 'Psy\Test\TabCompletion\StaticSample::CO', - ['StaticSample::CONSTANT_VALUE'], - [], - ], - [ - 'Psy\Test\TabCompletion\StaticSample::', - ['StaticSample::$staticVariable'], - [], - ], - [ - 'Psy\Test\TabCompletion\StaticSample::', - ['StaticSample::staticFunction'], - [], - ], - ]; - } -} diff --git a/vendor/psy/psysh/test/TabCompletion/StaticSample.php b/vendor/psy/psysh/test/TabCompletion/StaticSample.php deleted file mode 100644 index e0de2f0bb..000000000 --- a/vendor/psy/psysh/test/TabCompletion/StaticSample.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\TabCompletion; - -/** - * Class StaticSample. - */ -class StaticSample -{ - const CONSTANT_VALUE = 12; - - public static $staticVariable; - - public static function staticFunction() - { - return self::CONSTANT_VALUE; - } -} diff --git a/vendor/psy/psysh/test/Util/DocblockTest.php b/vendor/psy/psysh/test/Util/DocblockTest.php deleted file mode 100644 index 82e12fede..000000000 --- a/vendor/psy/psysh/test/Util/DocblockTest.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Util; - -use Psy\Util\Docblock; - -class DocblockTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider comments - */ - public function testDocblockParsing($comment, $body, $tags) - { - $reflector = $this - ->getMockBuilder('ReflectionClass') - ->disableOriginalConstructor() - ->getMock(); - - $reflector->expects($this->once()) - ->method('getDocComment') - ->will($this->returnValue($comment)); - - $docblock = new Docblock($reflector); - - $this->assertSame($body, $docblock->desc); - - foreach ($tags as $tag => $value) { - $this->assertTrue($docblock->hasTag($tag)); - $this->assertEquals($value, $docblock->tag($tag)); - } - } - - public function comments() - { - if (\defined('HHVM_VERSION')) { - $this->markTestSkipped('We have issues with PHPUnit mocks on HHVM.'); - } - - return [ - ['', '', []], - [ - '/** - * This is a docblock - * - * @throws \Exception with a description - */', - 'This is a docblock', - [ - 'throws' => [['type' => '\Exception', 'desc' => 'with a description']], - ], - ], - [ - '/** - * This is a slightly longer docblock - * - * @param int $foo Is a Foo - * @param string $bar With some sort of description - * @param \ClassName $baz is cool too - * - * @return int At least it isn\'t a string - */', - 'This is a slightly longer docblock', - [ - 'param' => [ - ['type' => 'int', 'desc' => 'Is a Foo', 'var' => '$foo'], - ['type' => 'string', 'desc' => 'With some sort of description', 'var' => '$bar'], - ['type' => '\ClassName', 'desc' => 'is cool too', 'var' => '$baz'], - ], - 'return' => [ - ['type' => 'int', 'desc' => 'At least it isn\'t a string'], - ], - ], - ], - [ - '/** - * This is a docblock! - * - * It spans lines, too! - * - * @tagname plus a description - * - * @return - */', - "This is a docblock!\n\nIt spans lines, too!", - [ - 'tagname' => ['plus a description'], - ], - ], - ]; - } -} diff --git a/vendor/psy/psysh/test/Util/MirrorTest.php b/vendor/psy/psysh/test/Util/MirrorTest.php deleted file mode 100644 index 585fffbb2..000000000 --- a/vendor/psy/psysh/test/Util/MirrorTest.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Util; - -use Psy\Util\Mirror; - -class MirrorTest extends \PHPUnit\Framework\TestCase -{ - const FOO = 1; - private $bar = 2; - private static $baz = 3; - - public function aPublicMethod() - { - // nada - } - - public function testMirror() - { - $refl = Mirror::get('sort'); - $this->assertInstanceOf('ReflectionFunction', $refl); - - $refl = Mirror::get('Psy\Test\Util\MirrorTest'); - $this->assertInstanceOf('ReflectionClass', $refl); - - $refl = Mirror::get($this); - $this->assertInstanceOf('ReflectionObject', $refl); - - $refl = Mirror::get($this, 'FOO'); - if (\version_compare(PHP_VERSION, '7.1.0', '>=')) { - $this->assertInstanceOf('ReflectionClassConstant', $refl); - } else { - $this->assertInstanceOf('Psy\Reflection\ReflectionClassConstant', $refl); - } - - $refl = Mirror::get('PHP_VERSION'); - $this->assertInstanceOf('Psy\Reflection\ReflectionConstant_', $refl); - - $refl = Mirror::get($this, 'bar'); - $this->assertInstanceOf('ReflectionProperty', $refl); - - $refl = Mirror::get($this, 'baz'); - $this->assertInstanceOf('ReflectionProperty', $refl); - - $refl = Mirror::get($this, 'aPublicMethod'); - $this->assertInstanceOf('ReflectionMethod', $refl); - - $refl = Mirror::get($this, 'baz', Mirror::STATIC_PROPERTY); - $this->assertInstanceOf('ReflectionProperty', $refl); - } - - /** - * @expectedException \RuntimeException - */ - public function testMirrorThrowsExceptions() - { - Mirror::get($this, 'notAMethod'); - } - - /** - * @expectedException \InvalidArgumentException - * @dataProvider invalidArguments - */ - public function testMirrorThrowsInvalidArgumentExceptions($value) - { - Mirror::get($value); - } - - public function invalidArguments() - { - return [ - ['not_a_function_or_class'], - [[]], - [1], - ]; - } -} diff --git a/vendor/psy/psysh/test/Util/StrTest.php b/vendor/psy/psysh/test/Util/StrTest.php deleted file mode 100644 index 4f99a79b3..000000000 --- a/vendor/psy/psysh/test/Util/StrTest.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\Util; - -use Psy\Util\Str; - -class StrTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider unvisProvider - */ - public function testUnvis($input, $expected) - { - $this->assertSame($expected, Str::unvis($input)); - } - - public function unvisProvider() - { - //return require_once(__DIR__.'/../fixtures/unvis_fixtures.php'); - return \json_decode(\file_get_contents(__DIR__ . '/../fixtures/unvis_fixtures.json')); - } -} diff --git a/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php b/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php deleted file mode 100644 index 7d12d47d6..000000000 --- a/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\VersionUpdater; - -use Psy\Shell; - -class GitHubCheckerTest extends \PHPUnit\Framework\TestCase -{ - /** - * @dataProvider malformedResults - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage Unable to check for updates - * - * @param mixed $input - */ - public function testExceptionInvocation($input) - { - $checker = $this->getMockBuilder('Psy\\VersionUpdater\\GitHubChecker') - ->setMethods(['fetchLatestRelease']) - ->getMock(); - $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input); - $checker->isLatest(); - } - - /** - * @dataProvider jsonResults - * - * @param bool $assertion - * @param mixed $input - */ - public function testDataSetResults($assertion, $input) - { - $checker = $this->getMockBuilder('Psy\\VersionUpdater\\GitHubChecker') - ->setMethods(['fetchLatestRelease']) - ->getMock(); - $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input); - $this->assertSame($assertion, $checker->isLatest()); - } - - /** - * @return array - */ - public function jsonResults() - { - return [ - [false, \json_decode('{"tag_name":"v9.0.0"}')], - [true, \json_decode('{"tag_name":"v' . Shell::VERSION . '"}')], - [true, \json_decode('{"tag_name":"v0.0.1"}')], - [true, \json_decode('{"tag_name":"v0.4.1-alpha"}')], - [true, \json_decode('{"tag_name":"v0.4.2-beta3"}')], - [true, \json_decode('{"tag_name":"v0.0.1"}')], - [true, \json_decode('{"tag_name":""}')], - ]; - } - - /** - * @return array - */ - public function malformedResults() - { - return [ - [null], - [false], - [true], - [\json_decode('{"foo":"bar"}')], - [\json_decode('{}')], - [\json_decode('[]')], - [[]], - [\json_decode('{"tag_name":false"}')], - [\json_decode('{"tag_name":true"}')], - ]; - } -} diff --git a/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php b/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php deleted file mode 100644 index b9ba568c7..000000000 --- a/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Psy\Test\VersionUpdater; - -use Psy\Shell; -use Psy\VersionUpdater\NoopChecker; - -class NoopCheckerTest extends \PHPUnit\Framework\TestCase -{ - public function testTheThings() - { - $checker = new NoopChecker(); - $this->assertTrue($checker->isLatest()); - $this->assertEquals(Shell::VERSION, $checker->getLatest()); - } -} diff --git a/vendor/psy/psysh/test/fixtures/config.php b/vendor/psy/psysh/test/fixtures/config.php deleted file mode 100644 index 4c74b79d0..000000000 --- a/vendor/psy/psysh/test/fixtures/config.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -$config->setRuntimeDir(\sys_get_temp_dir() . '/psysh_test/withconfig/temp'); - -return [ - 'useReadline' => true, - 'usePcntl' => false, - 'requireSemicolons' => false, - 'useUnicode' => true, - 'errorLoggingLevel' => E_ALL & ~E_NOTICE, -]; diff --git a/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php b/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php deleted file mode 100644 index b3d9bbc7f..000000000 --- a/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history b/vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite b/vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/psy/psysh/test/fixtures/empty.php b/vendor/psy/psysh/test/fixtures/empty.php deleted file mode 100644 index ba4e5784c..000000000 --- a/vendor/psy/psysh/test/fixtures/empty.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell. - * - * (c) 2012-2018 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* this space intentionally left blank */ diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/history b/vendor/psy/psysh/test/fixtures/legacy/.psysh/history deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite b/vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php b/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php deleted file mode 100644 index b3d9bbc7f..000000000 --- a/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php b/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php deleted file mode 100644 index b3d9bbc7f..000000000 --- a/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history b/vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php b/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php deleted file mode 100644 index b3d9bbc7f..000000000 --- a/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/vendor/psy/psysh/test/fixtures/project/.psysh.php b/vendor/psy/psysh/test/fixtures/project/.psysh.php deleted file mode 100644 index 8ba668c81..000000000 --- a/vendor/psy/psysh/test/fixtures/project/.psysh.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -/* - * This file is part of Psy Shell - * - * (c) 2012-2017 Justin Hileman - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array( - 'useReadline' => false, - 'usePcntl' => true, - 'requireSemicolons' => true, - 'useUnicode' => false, -); diff --git a/vendor/psy/psysh/test/fixtures/unvis_fixtures.json b/vendor/psy/psysh/test/fixtures/unvis_fixtures.json deleted file mode 100644 index 960fb02a1..000000000 --- a/vendor/psy/psysh/test/fixtures/unvis_fixtures.json +++ /dev/null @@ -1 +0,0 @@ -[["", ""], ["\\^A", "\u0001"], ["\\^B", "\u0002"], ["\\^C", "\u0003"], ["\\^D", "\u0004"], ["\\^E", "\u0005"], ["\\^F", "\u0006"], ["\\^G", "\u0007"], ["\\^H", "\b"], ["\\^I", "\t"], ["\\^J", "\n"], ["\\^K", "\u000b"], ["\\^L", "\f"], ["\\^M", "\r"], ["\\^N", "\u000e"], ["\\^O", "\u000f"], ["\\^P", "\u0010"], ["\\^Q", "\u0011"], ["\\^R", "\u0012"], ["\\^S", "\u0013"], ["\\^T", "\u0014"], ["\\^U", "\u0015"], ["\\^V", "\u0016"], ["\\^W", "\u0017"], ["\\^X", "\u0018"], ["\\^Y", "\u0019"], ["\\^Z", "\u001a"], ["\\^[", "\u001b"], ["\\^\\", "\u001c"], ["\\^]", "\u001d"], ["\\^^", "\u001e"], ["\\^_", "\u001f"], ["\\040", " "], ["!", "!"], ["\"", "\""], ["#", "#"], ["$", "$"], ["%", "%"], ["&", "&"], ["'", "'"], ["(", "("], [")", ")"], ["*", "*"], ["+", "+"], [",", ","], ["-", "-"], [".", "."], ["/", "/"], ["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], [":", ":"], [";", ";"], ["<", "<"], ["=", "="], [">", ">"], ["?", "?"], ["@", "@"], ["A", "A"], ["B", "B"], ["C", "C"], ["D", "D"], ["E", "E"], ["F", "F"], ["G", "G"], ["H", "H"], ["I", "I"], ["J", "J"], ["K", "K"], ["L", "L"], ["M", "M"], ["N", "N"], ["O", "O"], ["P", "P"], ["Q", "Q"], ["R", "R"], ["S", "S"], ["T", "T"], ["U", "U"], ["V", "V"], ["W", "W"], ["X", "X"], ["Y", "Y"], ["Z", "Z"], ["[", "["], ["\\\\", "\\"], ["]", "]"], ["^", "^"], ["_", "_"], ["`", "`"], ["a", "a"], ["b", "b"], ["c", "c"], ["d", "d"], ["e", "e"], ["f", "f"], ["g", "g"], ["h", "h"], ["i", "i"], ["j", "j"], ["k", "k"], ["l", "l"], ["m", "m"], ["n", "n"], ["o", "o"], ["p", "p"], ["q", "q"], ["r", "r"], ["s", "s"], ["t", "t"], ["u", "u"], ["v", "v"], ["w", "w"], ["x", "x"], ["y", "y"], ["z", "z"], ["{", "{"], ["|", "|"], ["}", "}"], ["~", "~"], ["\\^?", "\u007f"], ["\\M-B\\M^@", "\u0080"], ["\\M-B\\M^A", "\u0081"], ["\\M-B\\M^B", "\u0082"], ["\\M-B\\M^C", "\u0083"], ["\\M-B\\M^D", "\u0084"], ["\\M-B\\M^E", "\u0085"], ["\\M-B\\M^F", "\u0086"], ["\\M-B\\M^G", "\u0087"], ["\\M-B\\M^H", "\u0088"], ["\\M-B\\M^I", "\u0089"], ["\\M-B\\M^J", "\u008a"], ["\\M-B\\M^K", "\u008b"], ["\\M-B\\M^L", "\u008c"], ["\\M-B\\M^M", "\u008d"], ["\\M-B\\M^N", "\u008e"], ["\\M-B\\M^O", "\u008f"], ["\\M-B\\M^P", "\u0090"], ["\\M-B\\M^Q", "\u0091"], ["\\M-B\\M^R", "\u0092"], ["\\M-B\\M^S", "\u0093"], ["\\M-B\\M^T", "\u0094"], ["\\M-B\\M^U", "\u0095"], ["\\M-B\\M^V", "\u0096"], ["\\M-B\\M^W", "\u0097"], ["\\M-B\\M^X", "\u0098"], ["\\M-B\\M^Y", "\u0099"], ["\\M-B\\M^Z", "\u009a"], ["\\M-B\\M^[", "\u009b"], ["\\M-B\\M^\\", "\u009c"], ["\\M-B\\M^]", "\u009d"], ["\\M-B\\M^^", "\u009e"], ["\\M-B\\M^_", "\u009f"], ["\\M-B\\240", "\u00a0"], ["\\M-B\\M-!", "\u00a1"], ["\\M-B\\M-\"", "\u00a2"], ["\\M-B\\M-#", "\u00a3"], ["\\M-B\\M-$", "\u00a4"], ["\\M-B\\M-%", "\u00a5"], ["\\M-B\\M-&", "\u00a6"], ["\\M-B\\M-'", "\u00a7"], ["\\M-B\\M-(", "\u00a8"], ["\\M-B\\M-)", "\u00a9"], ["\\M-B\\M-*", "\u00aa"], ["\\M-B\\M-+", "\u00ab"], ["\\M-B\\M-,", "\u00ac"], ["\\M-B\\M--", "\u00ad"], ["\\M-B\\M-.", "\u00ae"], ["\\M-B\\M-/", "\u00af"], ["\\M-B\\M-0", "\u00b0"], ["\\M-B\\M-1", "\u00b1"], ["\\M-B\\M-2", "\u00b2"], ["\\M-B\\M-3", "\u00b3"], ["\\M-B\\M-4", "\u00b4"], ["\\M-B\\M-5", "\u00b5"], ["\\M-B\\M-6", "\u00b6"], ["\\M-B\\M-7", "\u00b7"], ["\\M-B\\M-8", "\u00b8"], ["\\M-B\\M-9", "\u00b9"], ["\\M-B\\M-:", "\u00ba"], ["\\M-B\\M-;", "\u00bb"], ["\\M-B\\M-<", "\u00bc"], ["\\M-B\\M-=", "\u00bd"], ["\\M-B\\M->", "\u00be"], ["\\M-B\\M-?", "\u00bf"], ["\\M-C\\M^@", "\u00c0"], ["\\M-C\\M^A", "\u00c1"], ["\\M-C\\M^B", "\u00c2"], ["\\M-C\\M^C", "\u00c3"], ["\\M-C\\M^D", "\u00c4"], ["\\M-C\\M^E", "\u00c5"], ["\\M-C\\M^F", "\u00c6"], ["\\M-C\\M^G", "\u00c7"], ["\\M-C\\M^H", "\u00c8"], ["\\M-C\\M^I", "\u00c9"], ["\\M-C\\M^J", "\u00ca"], ["\\M-C\\M^K", "\u00cb"], ["\\M-C\\M^L", "\u00cc"], ["\\M-C\\M^M", "\u00cd"], ["\\M-C\\M^N", "\u00ce"], ["\\M-C\\M^O", "\u00cf"], ["\\M-C\\M^P", "\u00d0"], ["\\M-C\\M^Q", "\u00d1"], ["\\M-C\\M^R", "\u00d2"], ["\\M-C\\M^S", "\u00d3"], ["\\M-C\\M^T", "\u00d4"], ["\\M-C\\M^U", "\u00d5"], ["\\M-C\\M^V", "\u00d6"], ["\\M-C\\M^W", "\u00d7"], ["\\M-C\\M^X", "\u00d8"], ["\\M-C\\M^Y", "\u00d9"], ["\\M-C\\M^Z", "\u00da"], ["\\M-C\\M^[", "\u00db"], ["\\M-C\\M^\\", "\u00dc"], ["\\M-C\\M^]", "\u00dd"], ["\\M-C\\M^^", "\u00de"], ["\\M-C\\M^_", "\u00df"], ["\\M-C\\240", "\u00e0"], ["\\M-C\\M-!", "\u00e1"], ["\\M-C\\M-\"", "\u00e2"], ["\\M-C\\M-#", "\u00e3"], ["\\M-C\\M-$", "\u00e4"], ["\\M-C\\M-%", "\u00e5"], ["\\M-C\\M-&", "\u00e6"], ["\\M-C\\M-'", "\u00e7"], ["\\M-C\\M-(", "\u00e8"], ["\\M-C\\M-)", "\u00e9"], ["\\M-C\\M-*", "\u00ea"], ["\\M-C\\M-+", "\u00eb"], ["\\M-C\\M-,", "\u00ec"], ["\\M-C\\M--", "\u00ed"], ["\\M-C\\M-.", "\u00ee"], ["\\M-C\\M-/", "\u00ef"], ["\\M-C\\M-0", "\u00f0"], ["\\M-C\\M-1", "\u00f1"], ["\\M-C\\M-2", "\u00f2"], ["\\M-C\\M-3", "\u00f3"], ["\\M-C\\M-4", "\u00f4"], ["\\M-C\\M-5", "\u00f5"], ["\\M-C\\M-6", "\u00f6"], ["\\M-C\\M-7", "\u00f7"], ["\\M-C\\M-8", "\u00f8"], ["\\M-C\\M-9", "\u00f9"], ["\\M-C\\M-:", "\u00fa"], ["\\M-C\\M-;", "\u00fb"], ["\\M-C\\M-<", "\u00fc"], ["\\M-C\\M-=", "\u00fd"], ["\\M-C\\M->", "\u00fe"], ["\\M-C\\M-?", "\u00ff"], ["\\M-D\\M^@", "\u0100"], ["\\M-D\\M^A", "\u0101"], ["\\M-D\\M^B", "\u0102"], ["\\M-D\\M^C", "\u0103"], ["\\M-D\\M^D", "\u0104"], ["\\M-D\\M^E", "\u0105"], ["\\M-D\\M^F", "\u0106"], ["\\M-D\\M^G", "\u0107"], ["\\M-D\\M^H", "\u0108"], ["\\M-D\\M^I", "\u0109"], ["\\M-D\\M^J", "\u010a"], ["\\M-D\\M^K", "\u010b"], ["\\M-D\\M^L", "\u010c"], ["\\M-D\\M^M", "\u010d"], ["\\M-D\\M^N", "\u010e"], ["\\M-D\\M^O", "\u010f"], ["\\M-D\\M^P", "\u0110"], ["\\M-D\\M^Q", "\u0111"], ["\\M-D\\M^R", "\u0112"], ["\\M-D\\M^S", "\u0113"], ["\\M-D\\M^T", "\u0114"], ["\\M-D\\M^U", "\u0115"], ["\\M-D\\M^V", "\u0116"], ["\\M-D\\M^W", "\u0117"], ["\\M-D\\M^X", "\u0118"], ["\\M-D\\M^Y", "\u0119"], ["\\M-D\\M^Z", "\u011a"], ["\\M-D\\M^[", "\u011b"], ["\\M-D\\M^\\", "\u011c"], ["\\M-D\\M^]", "\u011d"], ["\\M-D\\M^^", "\u011e"], ["\\M-D\\M^_", "\u011f"], ["\\M-D\\240", "\u0120"], ["\\M-D\\M-!", "\u0121"], ["\\M-D\\M-\"", "\u0122"], ["\\M-D\\M-#", "\u0123"], ["\\M-D\\M-$", "\u0124"], ["\\M-D\\M-%", "\u0125"], ["\\M-D\\M-&", "\u0126"], ["\\M-D\\M-'", "\u0127"], ["\\M-D\\M-(", "\u0128"], ["\\M-D\\M-)", "\u0129"], ["\\M-D\\M-*", "\u012a"], ["\\M-D\\M-+", "\u012b"], ["\\M-D\\M-,", "\u012c"], ["\\M-D\\M--", "\u012d"], ["\\M-D\\M-.", "\u012e"], ["\\M-D\\M-/", "\u012f"], ["\\M-D\\M-0", "\u0130"], ["\\M-D\\M-1", "\u0131"], ["\\M-D\\M-2", "\u0132"], ["\\M-D\\M-3", "\u0133"], ["\\M-D\\M-4", "\u0134"], ["\\M-D\\M-5", "\u0135"], ["\\M-D\\M-6", "\u0136"], ["\\M-D\\M-7", "\u0137"], ["\\M-D\\M-8", "\u0138"], ["\\M-D\\M-9", "\u0139"], ["\\M-D\\M-:", "\u013a"], ["\\M-D\\M-;", "\u013b"], ["\\M-D\\M-<", "\u013c"], ["\\M-D\\M-=", "\u013d"], ["\\M-D\\M->", "\u013e"], ["\\M-D\\M-?", "\u013f"], ["\\M-E\\M^@", "\u0140"], ["\\M-E\\M^A", "\u0141"], ["\\M-E\\M^B", "\u0142"], ["\\M-E\\M^C", "\u0143"], ["\\M-E\\M^D", "\u0144"], ["\\M-E\\M^E", "\u0145"], ["\\M-E\\M^F", "\u0146"], ["\\M-E\\M^G", "\u0147"], ["\\M-E\\M^H", "\u0148"], ["\\M-E\\M^I", "\u0149"], ["\\M-E\\M^J", "\u014a"], ["\\M-E\\M^K", "\u014b"], ["\\M-E\\M^L", "\u014c"], ["\\M-E\\M^M", "\u014d"], ["\\M-E\\M^N", "\u014e"], ["\\M-E\\M^O", "\u014f"], ["\\M-E\\M^P", "\u0150"], ["\\M-E\\M^Q", "\u0151"], ["\\M-E\\M^R", "\u0152"], ["\\M-E\\M^S", "\u0153"], ["\\M-E\\M^T", "\u0154"], ["\\M-E\\M^U", "\u0155"], ["\\M-E\\M^V", "\u0156"], ["\\M-E\\M^W", "\u0157"], ["\\M-E\\M^X", "\u0158"], ["\\M-E\\M^Y", "\u0159"], ["\\M-E\\M^Z", "\u015a"], ["\\M-E\\M^[", "\u015b"], ["\\M-E\\M^\\", "\u015c"], ["\\M-E\\M^]", "\u015d"], ["\\M-E\\M^^", "\u015e"], ["\\M-E\\M^_", "\u015f"], ["\\M-E\\240", "\u0160"], ["\\M-E\\M-!", "\u0161"], ["\\M-E\\M-\"", "\u0162"], ["\\M-E\\M-#", "\u0163"], ["\\M-E\\M-$", "\u0164"], ["\\M-E\\M-%", "\u0165"], ["\\M-E\\M-&", "\u0166"], ["\\M-E\\M-'", "\u0167"], ["\\M-E\\M-(", "\u0168"], ["\\M-E\\M-)", "\u0169"], ["\\M-E\\M-*", "\u016a"], ["\\M-E\\M-+", "\u016b"], ["\\M-E\\M-,", "\u016c"], ["\\M-E\\M--", "\u016d"], ["\\M-E\\M-.", "\u016e"], ["\\M-E\\M-/", "\u016f"], ["\\M-E\\M-0", "\u0170"], ["\\M-E\\M-1", "\u0171"], ["\\M-E\\M-2", "\u0172"], ["\\M-E\\M-3", "\u0173"], ["\\M-E\\M-4", "\u0174"], ["\\M-E\\M-5", "\u0175"], ["\\M-E\\M-6", "\u0176"], ["\\M-E\\M-7", "\u0177"], ["\\M-E\\M-8", "\u0178"], ["\\M-E\\M-9", "\u0179"], ["\\M-E\\M-:", "\u017a"], ["\\M-E\\M-;", "\u017b"], ["\\M-E\\M-<", "\u017c"], ["\\M-E\\M-=", "\u017d"], ["\\M-E\\M->", "\u017e"], ["\\M-E\\M-?", "\u017f"], ["\\M-F\\M^@", "\u0180"], ["\\M-F\\M^A", "\u0181"], ["\\M-F\\M^B", "\u0182"], ["\\M-F\\M^C", "\u0183"], ["\\M-F\\M^D", "\u0184"], ["\\M-F\\M^E", "\u0185"], ["\\M-F\\M^F", "\u0186"], ["\\M-F\\M^G", "\u0187"], ["\\M-F\\M^H", "\u0188"], ["\\M-F\\M^I", "\u0189"], ["\\M-F\\M^J", "\u018a"], ["\\M-F\\M^K", "\u018b"], ["\\M-F\\M^L", "\u018c"], ["\\M-F\\M^M", "\u018d"], ["\\M-F\\M^N", "\u018e"], ["\\M-F\\M^O", "\u018f"], ["\\M-F\\M^P", "\u0190"], ["\\M-F\\M^Q", "\u0191"], ["\\M-F\\M^R", "\u0192"], ["\\M-F\\M^S", "\u0193"], ["\\M-F\\M^T", "\u0194"], ["\\M-F\\M^U", "\u0195"], ["\\M-F\\M^V", "\u0196"], ["\\M-F\\M^W", "\u0197"], ["\\M-F\\M^X", "\u0198"], ["\\M-F\\M^Y", "\u0199"], ["\\M-F\\M^Z", "\u019a"], ["\\M-F\\M^[", "\u019b"], ["\\M-F\\M^\\", "\u019c"], ["\\M-F\\M^]", "\u019d"], ["\\M-F\\M^^", "\u019e"], ["\\M-F\\M^_", "\u019f"], ["\\M-F\\240", "\u01a0"], ["\\M-F\\M-!", "\u01a1"], ["\\M-F\\M-\"", "\u01a2"], ["\\M-F\\M-#", "\u01a3"], ["\\M-F\\M-$", "\u01a4"], ["\\M-F\\M-%", "\u01a5"], ["\\M-F\\M-&", "\u01a6"], ["\\M-F\\M-'", "\u01a7"], ["\\M-F\\M-(", "\u01a8"], ["\\M-F\\M-)", "\u01a9"], ["\\M-F\\M-*", "\u01aa"], ["\\M-F\\M-+", "\u01ab"], ["\\M-F\\M-,", "\u01ac"], ["\\M-F\\M--", "\u01ad"], ["\\M-F\\M-.", "\u01ae"], ["\\M-F\\M-/", "\u01af"], ["\\M-F\\M-0", "\u01b0"], ["\\M-F\\M-1", "\u01b1"], ["\\M-F\\M-2", "\u01b2"], ["\\M-F\\M-3", "\u01b3"], ["\\M-F\\M-4", "\u01b4"], ["\\M-F\\M-5", "\u01b5"], ["\\M-F\\M-6", "\u01b6"], ["\\M-F\\M-7", "\u01b7"], ["\\M-F\\M-8", "\u01b8"], ["\\M-F\\M-9", "\u01b9"], ["\\M-F\\M-:", "\u01ba"], ["\\M-F\\M-;", "\u01bb"], ["\\M-F\\M-<", "\u01bc"], ["\\M-F\\M-=", "\u01bd"], ["\\M-F\\M->", "\u01be"], ["\\M-F\\M-?", "\u01bf"], ["\\M-G\\M^@", "\u01c0"], ["\\M-G\\M^A", "\u01c1"], ["\\M-G\\M^B", "\u01c2"], ["\\M-G\\M^C", "\u01c3"], ["\\M-G\\M^D", "\u01c4"], ["\\M-G\\M^E", "\u01c5"], ["\\M-G\\M^F", "\u01c6"], ["\\M-G\\M^G", "\u01c7"], ["\\M-G\\M^H", "\u01c8"], ["\\M-G\\M^I", "\u01c9"], ["\\M-G\\M^J", "\u01ca"], ["\\M-G\\M^K", "\u01cb"], ["\\M-G\\M^L", "\u01cc"], ["\\M-G\\M^M", "\u01cd"], ["\\M-G\\M^N", "\u01ce"], ["\\M-G\\M^O", "\u01cf"], ["\\M-G\\M^P", "\u01d0"], ["\\M-G\\M^Q", "\u01d1"], ["\\M-G\\M^R", "\u01d2"], ["\\M-G\\M^S", "\u01d3"], ["\\M-G\\M^T", "\u01d4"], ["\\M-G\\M^U", "\u01d5"], ["\\M-G\\M^V", "\u01d6"], ["\\M-G\\M^W", "\u01d7"], ["\\M-G\\M^X", "\u01d8"], ["\\M-G\\M^Y", "\u01d9"], ["\\M-G\\M^Z", "\u01da"], ["\\M-G\\M^[", "\u01db"], ["\\M-G\\M^\\", "\u01dc"], ["\\M-G\\M^]", "\u01dd"], ["\\M-G\\M^^", "\u01de"], ["\\M-G\\M^_", "\u01df"], ["\\M-G\\240", "\u01e0"], ["\\M-G\\M-!", "\u01e1"], ["\\M-G\\M-\"", "\u01e2"], ["\\M-G\\M-#", "\u01e3"], ["\\M-G\\M-$", "\u01e4"], ["\\M-G\\M-%", "\u01e5"], ["\\M-G\\M-&", "\u01e6"], ["\\M-G\\M-'", "\u01e7"], ["\\M-G\\M-(", "\u01e8"], ["\\M-G\\M-)", "\u01e9"], ["\\M-G\\M-*", "\u01ea"], ["\\M-G\\M-+", "\u01eb"], ["\\M-G\\M-,", "\u01ec"], ["\\M-G\\M--", "\u01ed"], ["\\M-G\\M-.", "\u01ee"], ["\\M-G\\M-/", "\u01ef"], ["\\M-G\\M-0", "\u01f0"], ["\\M-G\\M-1", "\u01f1"], ["\\M-G\\M-2", "\u01f2"], ["\\M-G\\M-3", "\u01f3"], ["\\M-G\\M-4", "\u01f4"], ["\\M-G\\M-5", "\u01f5"], ["\\M-G\\M-6", "\u01f6"], ["\\M-G\\M-7", "\u01f7"], ["\\M-G\\M-8", "\u01f8"], ["\\M-G\\M-9", "\u01f9"], ["\\M-G\\M-:", "\u01fa"], ["\\M-G\\M-;", "\u01fb"], ["\\M-G\\M-<", "\u01fc"], ["\\M-G\\M-=", "\u01fd"], ["\\M-G\\M->", "\u01fe"], ["\\M-G\\M-?", "\u01ff"], ["\\M-H\\M^@", "\u0200"], ["\\M-H\\M^A", "\u0201"], ["\\M-H\\M^B", "\u0202"], ["\\M-H\\M^C", "\u0203"], ["\\M-H\\M^D", "\u0204"], ["\\M-H\\M^E", "\u0205"], ["\\M-H\\M^F", "\u0206"], ["\\M-H\\M^G", "\u0207"], ["\\M-H\\M^H", "\u0208"], ["\\M-H\\M^I", "\u0209"], ["\\M-H\\M^J", "\u020a"], ["\\M-H\\M^K", "\u020b"], ["\\M-H\\M^L", "\u020c"], ["\\M-H\\M^M", "\u020d"], ["\\M-H\\M^N", "\u020e"], ["\\M-H\\M^O", "\u020f"], ["\\M-H\\M^P", "\u0210"], ["\\M-H\\M^Q", "\u0211"], ["\\M-H\\M^R", "\u0212"], ["\\M-H\\M^S", "\u0213"], ["\\M-H\\M^T", "\u0214"], ["\\M-H\\M^U", "\u0215"], ["\\M-H\\M^V", "\u0216"], ["\\M-H\\M^W", "\u0217"], ["\\M-H\\M^X", "\u0218"], ["\\M-H\\M^Y", "\u0219"], ["\\M-H\\M^Z", "\u021a"], ["\\M-H\\M^[", "\u021b"], ["\\M-H\\M^\\", "\u021c"], ["\\M-H\\M^]", "\u021d"], ["\\M-H\\M^^", "\u021e"], ["\\M-H\\M^_", "\u021f"], ["\\M-H\\240", "\u0220"], ["\\M-H\\M-!", "\u0221"], ["\\M-H\\M-\"", "\u0222"], ["\\M-H\\M-#", "\u0223"], ["\\M-H\\M-$", "\u0224"], ["\\M-H\\M-%", "\u0225"], ["\\M-H\\M-&", "\u0226"], ["\\M-H\\M-'", "\u0227"], ["\\M-H\\M-(", "\u0228"], ["\\M-H\\M-)", "\u0229"], ["\\M-H\\M-*", "\u022a"], ["\\M-H\\M-+", "\u022b"], ["\\M-H\\M-,", "\u022c"], ["\\M-H\\M--", "\u022d"], ["\\M-H\\M-.", "\u022e"], ["\\M-H\\M-/", "\u022f"], ["\\M-H\\M-0", "\u0230"], ["\\M-H\\M-1", "\u0231"], ["\\M-H\\M-2", "\u0232"], ["\\M-H\\M-3", "\u0233"], ["\\M-H\\M-4", "\u0234"], ["\\M-H\\M-5", "\u0235"], ["\\M-H\\M-6", "\u0236"], ["\\M-H\\M-7", "\u0237"], ["\\M-H\\M-8", "\u0238"], ["\\M-H\\M-9", "\u0239"], ["\\M-H\\M-:", "\u023a"], ["\\M-H\\M-;", "\u023b"], ["\\M-H\\M-<", "\u023c"], ["\\M-H\\M-=", "\u023d"], ["\\M-H\\M->", "\u023e"], ["\\M-H\\M-?", "\u023f"], ["\\M-I\\M^@", "\u0240"], ["\\M-I\\M^A", "\u0241"], ["\\M-I\\M^B", "\u0242"], ["\\M-I\\M^C", "\u0243"], ["\\M-I\\M^D", "\u0244"], ["\\M-I\\M^E", "\u0245"], ["\\M-I\\M^F", "\u0246"], ["\\M-I\\M^G", "\u0247"], ["\\M-I\\M^H", "\u0248"], ["\\M-I\\M^I", "\u0249"], ["\\M-I\\M^J", "\u024a"], ["\\M-I\\M^K", "\u024b"], ["\\M-I\\M^L", "\u024c"], ["\\M-I\\M^M", "\u024d"], ["\\M-I\\M^N", "\u024e"], ["\\M-I\\M^O", "\u024f"], ["\\M-M\\M-0", "\u0370"], ["\\M-M\\M-1", "\u0371"], ["\\M-M\\M-2", "\u0372"], ["\\M-M\\M-3", "\u0373"], ["\\M-M\\M-4", "\u0374"], ["\\M-M\\M-5", "\u0375"], ["\\M-M\\M-6", "\u0376"], ["\\M-M\\M-7", "\u0377"], ["\\M-M\\M-8", "\u0378"], ["\\M-M\\M-9", "\u0379"], ["\\M-M\\M-:", "\u037a"], ["\\M-M\\M-;", "\u037b"], ["\\M-M\\M-<", "\u037c"], ["\\M-M\\M-=", "\u037d"], ["\\M-M\\M->", "\u037e"], ["\\M-M\\M-?", "\u037f"], ["\\M-N\\M^@", "\u0380"], ["\\M-N\\M^A", "\u0381"], ["\\M-N\\M^B", "\u0382"], ["\\M-N\\M^C", "\u0383"], ["\\M-N\\M^D", "\u0384"], ["\\M-N\\M^E", "\u0385"], ["\\M-N\\M^F", "\u0386"], ["\\M-N\\M^G", "\u0387"], ["\\M-N\\M^H", "\u0388"], ["\\M-N\\M^I", "\u0389"], ["\\M-N\\M^J", "\u038a"], ["\\M-N\\M^K", "\u038b"], ["\\M-N\\M^L", "\u038c"], ["\\M-N\\M^M", "\u038d"], ["\\M-N\\M^N", "\u038e"], ["\\M-N\\M^O", "\u038f"], ["\\M-N\\M^P", "\u0390"], ["\\M-N\\M^Q", "\u0391"], ["\\M-N\\M^R", "\u0392"], ["\\M-N\\M^S", "\u0393"], ["\\M-N\\M^T", "\u0394"], ["\\M-N\\M^U", "\u0395"], ["\\M-N\\M^V", "\u0396"], ["\\M-N\\M^W", "\u0397"], ["\\M-N\\M^X", "\u0398"], ["\\M-N\\M^Y", "\u0399"], ["\\M-N\\M^Z", "\u039a"], ["\\M-N\\M^[", "\u039b"], ["\\M-N\\M^\\", "\u039c"], ["\\M-N\\M^]", "\u039d"], ["\\M-N\\M^^", "\u039e"], ["\\M-N\\M^_", "\u039f"], ["\\M-N\\240", "\u03a0"], ["\\M-N\\M-!", "\u03a1"], ["\\M-N\\M-\"", "\u03a2"], ["\\M-N\\M-#", "\u03a3"], ["\\M-N\\M-$", "\u03a4"], ["\\M-N\\M-%", "\u03a5"], ["\\M-N\\M-&", "\u03a6"], ["\\M-N\\M-'", "\u03a7"], ["\\M-N\\M-(", "\u03a8"], ["\\M-N\\M-)", "\u03a9"], ["\\M-N\\M-*", "\u03aa"], ["\\M-N\\M-+", "\u03ab"], ["\\M-N\\M-,", "\u03ac"], ["\\M-N\\M--", "\u03ad"], ["\\M-N\\M-.", "\u03ae"], ["\\M-N\\M-/", "\u03af"], ["\\M-N\\M-0", "\u03b0"], ["\\M-N\\M-1", "\u03b1"], ["\\M-N\\M-2", "\u03b2"], ["\\M-N\\M-3", "\u03b3"], ["\\M-N\\M-4", "\u03b4"], ["\\M-N\\M-5", "\u03b5"], ["\\M-N\\M-6", "\u03b6"], ["\\M-N\\M-7", "\u03b7"], ["\\M-N\\M-8", "\u03b8"], ["\\M-N\\M-9", "\u03b9"], ["\\M-N\\M-:", "\u03ba"], ["\\M-N\\M-;", "\u03bb"], ["\\M-N\\M-<", "\u03bc"], ["\\M-N\\M-=", "\u03bd"], ["\\M-N\\M->", "\u03be"], ["\\M-N\\M-?", "\u03bf"], ["\\M-O\\M^@", "\u03c0"], ["\\M-O\\M^A", "\u03c1"], ["\\M-O\\M^B", "\u03c2"], ["\\M-O\\M^C", "\u03c3"], ["\\M-O\\M^D", "\u03c4"], ["\\M-O\\M^E", "\u03c5"], ["\\M-O\\M^F", "\u03c6"], ["\\M-O\\M^G", "\u03c7"], ["\\M-O\\M^H", "\u03c8"], ["\\M-O\\M^I", "\u03c9"], ["\\M-O\\M^J", "\u03ca"], ["\\M-O\\M^K", "\u03cb"], ["\\M-O\\M^L", "\u03cc"], ["\\M-O\\M^M", "\u03cd"], ["\\M-O\\M^N", "\u03ce"], ["\\M-O\\M^O", "\u03cf"], ["\\M-O\\M^P", "\u03d0"], ["\\M-O\\M^Q", "\u03d1"], ["\\M-O\\M^R", "\u03d2"], ["\\M-O\\M^S", "\u03d3"], ["\\M-O\\M^T", "\u03d4"], ["\\M-O\\M^U", "\u03d5"], ["\\M-O\\M^V", "\u03d6"], ["\\M-O\\M^W", "\u03d7"], ["\\M-O\\M^X", "\u03d8"], ["\\M-O\\M^Y", "\u03d9"], ["\\M-O\\M^Z", "\u03da"], ["\\M-O\\M^[", "\u03db"], ["\\M-O\\M^\\", "\u03dc"], ["\\M-O\\M^]", "\u03dd"], ["\\M-O\\M^^", "\u03de"], ["\\M-O\\M^_", "\u03df"], ["\\M-O\\240", "\u03e0"], ["\\M-O\\M-!", "\u03e1"], ["\\M-O\\M-\"", "\u03e2"], ["\\M-O\\M-#", "\u03e3"], ["\\M-O\\M-$", "\u03e4"], ["\\M-O\\M-%", "\u03e5"], ["\\M-O\\M-&", "\u03e6"], ["\\M-O\\M-'", "\u03e7"], ["\\M-O\\M-(", "\u03e8"], ["\\M-O\\M-)", "\u03e9"], ["\\M-O\\M-*", "\u03ea"], ["\\M-O\\M-+", "\u03eb"], ["\\M-O\\M-,", "\u03ec"], ["\\M-O\\M--", "\u03ed"], ["\\M-O\\M-.", "\u03ee"], ["\\M-O\\M-/", "\u03ef"], ["\\M-O\\M-0", "\u03f0"], ["\\M-O\\M-1", "\u03f1"], ["\\M-O\\M-2", "\u03f2"], ["\\M-O\\M-3", "\u03f3"], ["\\M-O\\M-4", "\u03f4"], ["\\M-O\\M-5", "\u03f5"], ["\\M-O\\M-6", "\u03f6"], ["\\M-O\\M-7", "\u03f7"], ["\\M-O\\M-8", "\u03f8"], ["\\M-O\\M-9", "\u03f9"], ["\\M-O\\M-:", "\u03fa"], ["\\M-O\\M-;", "\u03fb"], ["\\M-O\\M-<", "\u03fc"], ["\\M-O\\M-=", "\u03fd"], ["\\M-O\\M->", "\u03fe"], ["\\M-O\\M-?", "\u03ff"], ["\\M-P\\M^@", "\u0400"], ["\\M-P\\M^A", "\u0401"], ["\\M-P\\M^B", "\u0402"], ["\\M-P\\M^C", "\u0403"], ["\\M-P\\M^D", "\u0404"], ["\\M-P\\M^E", "\u0405"], ["\\M-P\\M^F", "\u0406"], ["\\M-P\\M^G", "\u0407"], ["\\M-P\\M^H", "\u0408"], ["\\M-P\\M^I", "\u0409"], ["\\M-P\\M^J", "\u040a"], ["\\M-P\\M^K", "\u040b"], ["\\M-P\\M^L", "\u040c"], ["\\M-P\\M^M", "\u040d"], ["\\M-P\\M^N", "\u040e"], ["\\M-P\\M^O", "\u040f"], ["\\M-P\\M^P", "\u0410"], ["\\M-P\\M^Q", "\u0411"], ["\\M-P\\M^R", "\u0412"], ["\\M-P\\M^S", "\u0413"], ["\\M-P\\M^T", "\u0414"], ["\\M-P\\M^U", "\u0415"], ["\\M-P\\M^V", "\u0416"], ["\\M-P\\M^W", "\u0417"], ["\\M-P\\M^X", "\u0418"], ["\\M-P\\M^Y", "\u0419"], ["\\M-P\\M^Z", "\u041a"], ["\\M-P\\M^[", "\u041b"], ["\\M-P\\M^\\", "\u041c"], ["\\M-P\\M^]", "\u041d"], ["\\M-P\\M^^", "\u041e"], ["\\M-P\\M^_", "\u041f"], ["\\M-P\\240", "\u0420"], ["\\M-P\\M-!", "\u0421"], ["\\M-P\\M-\"", "\u0422"], ["\\M-P\\M-#", "\u0423"], ["\\M-P\\M-$", "\u0424"], ["\\M-P\\M-%", "\u0425"], ["\\M-P\\M-&", "\u0426"], ["\\M-P\\M-'", "\u0427"], ["\\M-P\\M-(", "\u0428"], ["\\M-P\\M-)", "\u0429"], ["\\M-P\\M-*", "\u042a"], ["\\M-P\\M-+", "\u042b"], ["\\M-P\\M-,", "\u042c"], ["\\M-P\\M--", "\u042d"], ["\\M-P\\M-.", "\u042e"], ["\\M-P\\M-/", "\u042f"], ["\\M-P\\M-0", "\u0430"], ["\\M-P\\M-1", "\u0431"], ["\\M-P\\M-2", "\u0432"], ["\\M-P\\M-3", "\u0433"], ["\\M-P\\M-4", "\u0434"], ["\\M-P\\M-5", "\u0435"], ["\\M-P\\M-6", "\u0436"], ["\\M-P\\M-7", "\u0437"], ["\\M-P\\M-8", "\u0438"], ["\\M-P\\M-9", "\u0439"], ["\\M-P\\M-:", "\u043a"], ["\\M-P\\M-;", "\u043b"], ["\\M-P\\M-<", "\u043c"], ["\\M-P\\M-=", "\u043d"], ["\\M-P\\M->", "\u043e"], ["\\M-P\\M-?", "\u043f"], ["\\M-Q\\M^@", "\u0440"], ["\\M-Q\\M^A", "\u0441"], ["\\M-Q\\M^B", "\u0442"], ["\\M-Q\\M^C", "\u0443"], ["\\M-Q\\M^D", "\u0444"], ["\\M-Q\\M^E", "\u0445"], ["\\M-Q\\M^F", "\u0446"], ["\\M-Q\\M^G", "\u0447"], ["\\M-Q\\M^H", "\u0448"], ["\\M-Q\\M^I", "\u0449"], ["\\M-Q\\M^J", "\u044a"], ["\\M-Q\\M^K", "\u044b"], ["\\M-Q\\M^L", "\u044c"], ["\\M-Q\\M^M", "\u044d"], ["\\M-Q\\M^N", "\u044e"], ["\\M-Q\\M^O", "\u044f"], ["\\M-Q\\M^P", "\u0450"], ["\\M-Q\\M^Q", "\u0451"], ["\\M-Q\\M^R", "\u0452"], ["\\M-Q\\M^S", "\u0453"], ["\\M-Q\\M^T", "\u0454"], ["\\M-Q\\M^U", "\u0455"], ["\\M-Q\\M^V", "\u0456"], ["\\M-Q\\M^W", "\u0457"], ["\\M-Q\\M^X", "\u0458"], ["\\M-Q\\M^Y", "\u0459"], ["\\M-Q\\M^Z", "\u045a"], ["\\M-Q\\M^[", "\u045b"], ["\\M-Q\\M^\\", "\u045c"], ["\\M-Q\\M^]", "\u045d"], ["\\M-Q\\M^^", "\u045e"], ["\\M-Q\\M^_", "\u045f"], ["\\M-Q\\240", "\u0460"], ["\\M-Q\\M-!", "\u0461"], ["\\M-Q\\M-\"", "\u0462"], ["\\M-Q\\M-#", "\u0463"], ["\\M-Q\\M-$", "\u0464"], ["\\M-Q\\M-%", "\u0465"], ["\\M-Q\\M-&", "\u0466"], ["\\M-Q\\M-'", "\u0467"], ["\\M-Q\\M-(", "\u0468"], ["\\M-Q\\M-)", "\u0469"], ["\\M-Q\\M-*", "\u046a"], ["\\M-Q\\M-+", "\u046b"], ["\\M-Q\\M-,", "\u046c"], ["\\M-Q\\M--", "\u046d"], ["\\M-Q\\M-.", "\u046e"], ["\\M-Q\\M-/", "\u046f"], ["\\M-Q\\M-0", "\u0470"], ["\\M-Q\\M-1", "\u0471"], ["\\M-Q\\M-2", "\u0472"], ["\\M-Q\\M-3", "\u0473"], ["\\M-Q\\M-4", "\u0474"], ["\\M-Q\\M-5", "\u0475"], ["\\M-Q\\M-6", "\u0476"], ["\\M-Q\\M-7", "\u0477"], ["\\M-Q\\M-8", "\u0478"], ["\\M-Q\\M-9", "\u0479"], ["\\M-Q\\M-:", "\u047a"], ["\\M-Q\\M-;", "\u047b"], ["\\M-Q\\M-<", "\u047c"], ["\\M-Q\\M-=", "\u047d"], ["\\M-Q\\M->", "\u047e"], ["\\M-Q\\M-?", "\u047f"], ["\\M-R\\M^@", "\u0480"], ["\\M-R\\M^A", "\u0481"], ["\\M-R\\M^B", "\u0482"], ["\\M-R\\M^C", "\u0483"], ["\\M-R\\M^D", "\u0484"], ["\\M-R\\M^E", "\u0485"], ["\\M-R\\M^F", "\u0486"], ["\\M-R\\M^G", "\u0487"], ["\\M-R\\M^H", "\u0488"], ["\\M-R\\M^I", "\u0489"], ["\\M-R\\M^J", "\u048a"], ["\\M-R\\M^K", "\u048b"], ["\\M-R\\M^L", "\u048c"], ["\\M-R\\M^M", "\u048d"], ["\\M-R\\M^N", "\u048e"], ["\\M-R\\M^O", "\u048f"], ["\\M-R\\M^P", "\u0490"], ["\\M-R\\M^Q", "\u0491"], ["\\M-R\\M^R", "\u0492"], ["\\M-R\\M^S", "\u0493"], ["\\M-R\\M^T", "\u0494"], ["\\M-R\\M^U", "\u0495"], ["\\M-R\\M^V", "\u0496"], ["\\M-R\\M^W", "\u0497"], ["\\M-R\\M^X", "\u0498"], ["\\M-R\\M^Y", "\u0499"], ["\\M-R\\M^Z", "\u049a"], ["\\M-R\\M^[", "\u049b"], ["\\M-R\\M^\\", "\u049c"], ["\\M-R\\M^]", "\u049d"], ["\\M-R\\M^^", "\u049e"], ["\\M-R\\M^_", "\u049f"], ["\\M-R\\240", "\u04a0"], ["\\M-R\\M-!", "\u04a1"], ["\\M-R\\M-\"", "\u04a2"], ["\\M-R\\M-#", "\u04a3"], ["\\M-R\\M-$", "\u04a4"], ["\\M-R\\M-%", "\u04a5"], ["\\M-R\\M-&", "\u04a6"], ["\\M-R\\M-'", "\u04a7"], ["\\M-R\\M-(", "\u04a8"], ["\\M-R\\M-)", "\u04a9"], ["\\M-R\\M-*", "\u04aa"], ["\\M-R\\M-+", "\u04ab"], ["\\M-R\\M-,", "\u04ac"], ["\\M-R\\M--", "\u04ad"], ["\\M-R\\M-.", "\u04ae"], ["\\M-R\\M-/", "\u04af"], ["\\M-R\\M-0", "\u04b0"], ["\\M-R\\M-1", "\u04b1"], ["\\M-R\\M-2", "\u04b2"], ["\\M-R\\M-3", "\u04b3"], ["\\M-R\\M-4", "\u04b4"], ["\\M-R\\M-5", "\u04b5"], ["\\M-R\\M-6", "\u04b6"], ["\\M-R\\M-7", "\u04b7"], ["\\M-R\\M-8", "\u04b8"], ["\\M-R\\M-9", "\u04b9"], ["\\M-R\\M-:", "\u04ba"], ["\\M-R\\M-;", "\u04bb"], ["\\M-R\\M-<", "\u04bc"], ["\\M-R\\M-=", "\u04bd"], ["\\M-R\\M->", "\u04be"], ["\\M-R\\M-?", "\u04bf"], ["\\M-S\\M^@", "\u04c0"], ["\\M-S\\M^A", "\u04c1"], ["\\M-S\\M^B", "\u04c2"], ["\\M-S\\M^C", "\u04c3"], ["\\M-S\\M^D", "\u04c4"], ["\\M-S\\M^E", "\u04c5"], ["\\M-S\\M^F", "\u04c6"], ["\\M-S\\M^G", "\u04c7"], ["\\M-S\\M^H", "\u04c8"], ["\\M-S\\M^I", "\u04c9"], ["\\M-S\\M^J", "\u04ca"], ["\\M-S\\M^K", "\u04cb"], ["\\M-S\\M^L", "\u04cc"], ["\\M-S\\M^M", "\u04cd"], ["\\M-S\\M^N", "\u04ce"], ["\\M-S\\M^O", "\u04cf"], ["\\M-S\\M^P", "\u04d0"], ["\\M-S\\M^Q", "\u04d1"], ["\\M-S\\M^R", "\u04d2"], ["\\M-S\\M^S", "\u04d3"], ["\\M-S\\M^T", "\u04d4"], ["\\M-S\\M^U", "\u04d5"], ["\\M-S\\M^V", "\u04d6"], ["\\M-S\\M^W", "\u04d7"], ["\\M-S\\M^X", "\u04d8"], ["\\M-S\\M^Y", "\u04d9"], ["\\M-S\\M^Z", "\u04da"], ["\\M-S\\M^[", "\u04db"], ["\\M-S\\M^\\", "\u04dc"], ["\\M-S\\M^]", "\u04dd"], ["\\M-S\\M^^", "\u04de"], ["\\M-S\\M^_", "\u04df"], ["\\M-S\\240", "\u04e0"], ["\\M-S\\M-!", "\u04e1"], ["\\M-S\\M-\"", "\u04e2"], ["\\M-S\\M-#", "\u04e3"], ["\\M-S\\M-$", "\u04e4"], ["\\M-S\\M-%", "\u04e5"], ["\\M-S\\M-&", "\u04e6"], ["\\M-S\\M-'", "\u04e7"], ["\\M-S\\M-(", "\u04e8"], ["\\M-S\\M-)", "\u04e9"], ["\\M-S\\M-*", "\u04ea"], ["\\M-S\\M-+", "\u04eb"], ["\\M-S\\M-,", "\u04ec"], ["\\M-S\\M--", "\u04ed"], ["\\M-S\\M-.", "\u04ee"], ["\\M-S\\M-/", "\u04ef"], ["\\M-S\\M-0", "\u04f0"], ["\\M-S\\M-1", "\u04f1"], ["\\M-S\\M-2", "\u04f2"], ["\\M-S\\M-3", "\u04f3"], ["\\M-S\\M-4", "\u04f4"], ["\\M-S\\M-5", "\u04f5"], ["\\M-S\\M-6", "\u04f6"], ["\\M-S\\M-7", "\u04f7"], ["\\M-S\\M-8", "\u04f8"], ["\\M-S\\M-9", "\u04f9"], ["\\M-S\\M-:", "\u04fa"], ["\\M-S\\M-;", "\u04fb"], ["\\M-S\\M-<", "\u04fc"], ["\\M-S\\M-=", "\u04fd"], ["\\M-S\\M->", "\u04fe"], ["\\M-S\\M-?", "\u04ff"], ["\\M-T\\M^@", "\u0500"], ["\\M-T\\M^A", "\u0501"], ["\\M-T\\M^B", "\u0502"], ["\\M-T\\M^C", "\u0503"], ["\\M-T\\M^D", "\u0504"], ["\\M-T\\M^E", "\u0505"], ["\\M-T\\M^F", "\u0506"], ["\\M-T\\M^G", "\u0507"], ["\\M-T\\M^H", "\u0508"], ["\\M-T\\M^I", "\u0509"], ["\\M-T\\M^J", "\u050a"], ["\\M-T\\M^K", "\u050b"], ["\\M-T\\M^L", "\u050c"], ["\\M-T\\M^M", "\u050d"], ["\\M-T\\M^N", "\u050e"], ["\\M-T\\M^O", "\u050f"], ["\\M-T\\M^P", "\u0510"], ["\\M-T\\M^Q", "\u0511"], ["\\M-T\\M^R", "\u0512"], ["\\M-T\\M^S", "\u0513"], ["\\M-T\\M^T", "\u0514"], ["\\M-T\\M^U", "\u0515"], ["\\M-T\\M^V", "\u0516"], ["\\M-T\\M^W", "\u0517"], ["\\M-T\\M^X", "\u0518"], ["\\M-T\\M^Y", "\u0519"], ["\\M-T\\M^Z", "\u051a"], ["\\M-T\\M^[", "\u051b"], ["\\M-T\\M^\\", "\u051c"], ["\\M-T\\M^]", "\u051d"], ["\\M-T\\M^^", "\u051e"], ["\\M-T\\M^_", "\u051f"], ["\\M-T\\240", "\u0520"], ["\\M-T\\M-!", "\u0521"], ["\\M-T\\M-\"", "\u0522"], ["\\M-T\\M-#", "\u0523"], ["\\M-T\\M-$", "\u0524"], ["\\M-T\\M-%", "\u0525"], ["\\M-T\\M-&", "\u0526"], ["\\M-T\\M-'", "\u0527"], ["\\M-T\\M-(", "\u0528"], ["\\M-T\\M-)", "\u0529"], ["\\M-T\\M-*", "\u052a"], ["\\M-T\\M-+", "\u052b"], ["\\M-T\\M-,", "\u052c"], ["\\M-T\\M--", "\u052d"], ["\\M-T\\M-.", "\u052e"], ["\\M-T\\M-/", "\u052f"], ["\\M-V\\M^P", "\u0590"], ["\\M-V\\M^Q", "\u0591"], ["\\M-V\\M^R", "\u0592"], ["\\M-V\\M^S", "\u0593"], ["\\M-V\\M^T", "\u0594"], ["\\M-V\\M^U", "\u0595"], ["\\M-V\\M^V", "\u0596"], ["\\M-V\\M^W", "\u0597"], ["\\M-V\\M^X", "\u0598"], ["\\M-V\\M^Y", "\u0599"], ["\\M-V\\M^Z", "\u059a"], ["\\M-V\\M^[", "\u059b"], ["\\M-V\\M^\\", "\u059c"], ["\\M-V\\M^]", "\u059d"], ["\\M-V\\M^^", "\u059e"], ["\\M-V\\M^_", "\u059f"], ["\\M-V\\240", "\u05a0"], ["\\M-V\\M-!", "\u05a1"], ["\\M-V\\M-\"", "\u05a2"], ["\\M-V\\M-#", "\u05a3"], ["\\M-V\\M-$", "\u05a4"], ["\\M-V\\M-%", "\u05a5"], ["\\M-V\\M-&", "\u05a6"], ["\\M-V\\M-'", "\u05a7"], ["\\M-V\\M-(", "\u05a8"], ["\\M-V\\M-)", "\u05a9"], ["\\M-V\\M-*", "\u05aa"], ["\\M-V\\M-+", "\u05ab"], ["\\M-V\\M-,", "\u05ac"], ["\\M-V\\M--", "\u05ad"], ["\\M-V\\M-.", "\u05ae"], ["\\M-V\\M-/", "\u05af"], ["\\M-V\\M-0", "\u05b0"], ["\\M-V\\M-1", "\u05b1"], ["\\M-V\\M-2", "\u05b2"], ["\\M-V\\M-3", "\u05b3"], ["\\M-V\\M-4", "\u05b4"], ["\\M-V\\M-5", "\u05b5"], ["\\M-V\\M-6", "\u05b6"], ["\\M-V\\M-7", "\u05b7"], ["\\M-V\\M-8", "\u05b8"], ["\\M-V\\M-9", "\u05b9"], ["\\M-V\\M-:", "\u05ba"], ["\\M-V\\M-;", "\u05bb"], ["\\M-V\\M-<", "\u05bc"], ["\\M-V\\M-=", "\u05bd"], ["\\M-V\\M->", "\u05be"], ["\\M-V\\M-?", "\u05bf"], ["\\M-W\\M^@", "\u05c0"], ["\\M-W\\M^A", "\u05c1"], ["\\M-W\\M^B", "\u05c2"], ["\\M-W\\M^C", "\u05c3"], ["\\M-W\\M^D", "\u05c4"], ["\\M-W\\M^E", "\u05c5"], ["\\M-W\\M^F", "\u05c6"], ["\\M-W\\M^G", "\u05c7"], ["\\M-W\\M^H", "\u05c8"], ["\\M-W\\M^I", "\u05c9"], ["\\M-W\\M^J", "\u05ca"], ["\\M-W\\M^K", "\u05cb"], ["\\M-W\\M^L", "\u05cc"], ["\\M-W\\M^M", "\u05cd"], ["\\M-W\\M^N", "\u05ce"], ["\\M-W\\M^O", "\u05cf"], ["\\M-W\\M^P", "\u05d0"], ["\\M-W\\M^Q", "\u05d1"], ["\\M-W\\M^R", "\u05d2"], ["\\M-W\\M^S", "\u05d3"], ["\\M-W\\M^T", "\u05d4"], ["\\M-W\\M^U", "\u05d5"], ["\\M-W\\M^V", "\u05d6"], ["\\M-W\\M^W", "\u05d7"], ["\\M-W\\M^X", "\u05d8"], ["\\M-W\\M^Y", "\u05d9"], ["\\M-W\\M^Z", "\u05da"], ["\\M-W\\M^[", "\u05db"], ["\\M-W\\M^\\", "\u05dc"], ["\\M-W\\M^]", "\u05dd"], ["\\M-W\\M^^", "\u05de"], ["\\M-W\\M^_", "\u05df"], ["\\M-W\\240", "\u05e0"], ["\\M-W\\M-!", "\u05e1"], ["\\M-W\\M-\"", "\u05e2"], ["\\M-W\\M-#", "\u05e3"], ["\\M-W\\M-$", "\u05e4"], ["\\M-W\\M-%", "\u05e5"], ["\\M-W\\M-&", "\u05e6"], ["\\M-W\\M-'", "\u05e7"], ["\\M-W\\M-(", "\u05e8"], ["\\M-W\\M-)", "\u05e9"], ["\\M-W\\M-*", "\u05ea"], ["\\M-W\\M-+", "\u05eb"], ["\\M-W\\M-,", "\u05ec"], ["\\M-W\\M--", "\u05ed"], ["\\M-W\\M-.", "\u05ee"], ["\\M-W\\M-/", "\u05ef"], ["\\M-W\\M-0", "\u05f0"], ["\\M-W\\M-1", "\u05f1"], ["\\M-W\\M-2", "\u05f2"], ["\\M-W\\M-3", "\u05f3"], ["\\M-W\\M-4", "\u05f4"], ["\\M-W\\M-5", "\u05f5"], ["\\M-W\\M-6", "\u05f6"], ["\\M-W\\M-7", "\u05f7"], ["\\M-W\\M-8", "\u05f8"], ["\\M-W\\M-9", "\u05f9"], ["\\M-W\\M-:", "\u05fa"], ["\\M-W\\M-;", "\u05fb"], ["\\M-W\\M-<", "\u05fc"], ["\\M-W\\M-=", "\u05fd"], ["\\M-W\\M->", "\u05fe"], ["\\M-W\\M-?", "\u05ff"], ["\\M-X\\M^@", "\u0600"], ["\\M-X\\M^A", "\u0601"], ["\\M-X\\M^B", "\u0602"], ["\\M-X\\M^C", "\u0603"], ["\\M-X\\M^D", "\u0604"], ["\\M-X\\M^E", "\u0605"], ["\\M-X\\M^F", "\u0606"], ["\\M-X\\M^G", "\u0607"], ["\\M-X\\M^H", "\u0608"], ["\\M-X\\M^I", "\u0609"], ["\\M-X\\M^J", "\u060a"], ["\\M-X\\M^K", "\u060b"], ["\\M-X\\M^L", "\u060c"], ["\\M-X\\M^M", "\u060d"], ["\\M-X\\M^N", "\u060e"], ["\\M-X\\M^O", "\u060f"], ["\\M-X\\M^P", "\u0610"], ["\\M-X\\M^Q", "\u0611"], ["\\M-X\\M^R", "\u0612"], ["\\M-X\\M^S", "\u0613"], ["\\M-X\\M^T", "\u0614"], ["\\M-X\\M^U", "\u0615"], ["\\M-X\\M^V", "\u0616"], ["\\M-X\\M^W", "\u0617"], ["\\M-X\\M^X", "\u0618"], ["\\M-X\\M^Y", "\u0619"], ["\\M-X\\M^Z", "\u061a"], ["\\M-X\\M^[", "\u061b"], ["\\M-X\\M^\\", "\u061c"], ["\\M-X\\M^]", "\u061d"], ["\\M-X\\M^^", "\u061e"], ["\\M-X\\M^_", "\u061f"], ["\\M-X\\240", "\u0620"], ["\\M-X\\M-!", "\u0621"], ["\\M-X\\M-\"", "\u0622"], ["\\M-X\\M-#", "\u0623"], ["\\M-X\\M-$", "\u0624"], ["\\M-X\\M-%", "\u0625"], ["\\M-X\\M-&", "\u0626"], ["\\M-X\\M-'", "\u0627"], ["\\M-X\\M-(", "\u0628"], ["\\M-X\\M-)", "\u0629"], ["\\M-X\\M-*", "\u062a"], ["\\M-X\\M-+", "\u062b"], ["\\M-X\\M-,", "\u062c"], ["\\M-X\\M--", "\u062d"], ["\\M-X\\M-.", "\u062e"], ["\\M-X\\M-/", "\u062f"], ["\\M-X\\M-0", "\u0630"], ["\\M-X\\M-1", "\u0631"], ["\\M-X\\M-2", "\u0632"], ["\\M-X\\M-3", "\u0633"], ["\\M-X\\M-4", "\u0634"], ["\\M-X\\M-5", "\u0635"], ["\\M-X\\M-6", "\u0636"], ["\\M-X\\M-7", "\u0637"], ["\\M-X\\M-8", "\u0638"], ["\\M-X\\M-9", "\u0639"], ["\\M-X\\M-:", "\u063a"], ["\\M-X\\M-;", "\u063b"], ["\\M-X\\M-<", "\u063c"], ["\\M-X\\M-=", "\u063d"], ["\\M-X\\M->", "\u063e"], ["\\M-X\\M-?", "\u063f"], ["\\M-Y\\M^@", "\u0640"], ["\\M-Y\\M^A", "\u0641"], ["\\M-Y\\M^B", "\u0642"], ["\\M-Y\\M^C", "\u0643"], ["\\M-Y\\M^D", "\u0644"], ["\\M-Y\\M^E", "\u0645"], ["\\M-Y\\M^F", "\u0646"], ["\\M-Y\\M^G", "\u0647"], ["\\M-Y\\M^H", "\u0648"], ["\\M-Y\\M^I", "\u0649"], ["\\M-Y\\M^J", "\u064a"], ["\\M-Y\\M^K", "\u064b"], ["\\M-Y\\M^L", "\u064c"], ["\\M-Y\\M^M", "\u064d"], ["\\M-Y\\M^N", "\u064e"], ["\\M-Y\\M^O", "\u064f"], ["\\M-Y\\M^P", "\u0650"], ["\\M-Y\\M^Q", "\u0651"], ["\\M-Y\\M^R", "\u0652"], ["\\M-Y\\M^S", "\u0653"], ["\\M-Y\\M^T", "\u0654"], ["\\M-Y\\M^U", "\u0655"], ["\\M-Y\\M^V", "\u0656"], ["\\M-Y\\M^W", "\u0657"], ["\\M-Y\\M^X", "\u0658"], ["\\M-Y\\M^Y", "\u0659"], ["\\M-Y\\M^Z", "\u065a"], ["\\M-Y\\M^[", "\u065b"], ["\\M-Y\\M^\\", "\u065c"], ["\\M-Y\\M^]", "\u065d"], ["\\M-Y\\M^^", "\u065e"], ["\\M-Y\\M^_", "\u065f"], ["\\M-Y\\240", "\u0660"], ["\\M-Y\\M-!", "\u0661"], ["\\M-Y\\M-\"", "\u0662"], ["\\M-Y\\M-#", "\u0663"], ["\\M-Y\\M-$", "\u0664"], ["\\M-Y\\M-%", "\u0665"], ["\\M-Y\\M-&", "\u0666"], ["\\M-Y\\M-'", "\u0667"], ["\\M-Y\\M-(", "\u0668"], ["\\M-Y\\M-)", "\u0669"], ["\\M-Y\\M-*", "\u066a"], ["\\M-Y\\M-+", "\u066b"], ["\\M-Y\\M-,", "\u066c"], ["\\M-Y\\M--", "\u066d"], ["\\M-Y\\M-.", "\u066e"], ["\\M-Y\\M-/", "\u066f"], ["\\M-Y\\M-0", "\u0670"], ["\\M-Y\\M-1", "\u0671"], ["\\M-Y\\M-2", "\u0672"], ["\\M-Y\\M-3", "\u0673"], ["\\M-Y\\M-4", "\u0674"], ["\\M-Y\\M-5", "\u0675"], ["\\M-Y\\M-6", "\u0676"], ["\\M-Y\\M-7", "\u0677"], ["\\M-Y\\M-8", "\u0678"], ["\\M-Y\\M-9", "\u0679"], ["\\M-Y\\M-:", "\u067a"], ["\\M-Y\\M-;", "\u067b"], ["\\M-Y\\M-<", "\u067c"], ["\\M-Y\\M-=", "\u067d"], ["\\M-Y\\M->", "\u067e"], ["\\M-Y\\M-?", "\u067f"], ["\\M-Z\\M^@", "\u0680"], ["\\M-Z\\M^A", "\u0681"], ["\\M-Z\\M^B", "\u0682"], ["\\M-Z\\M^C", "\u0683"], ["\\M-Z\\M^D", "\u0684"], ["\\M-Z\\M^E", "\u0685"], ["\\M-Z\\M^F", "\u0686"], ["\\M-Z\\M^G", "\u0687"], ["\\M-Z\\M^H", "\u0688"], ["\\M-Z\\M^I", "\u0689"], ["\\M-Z\\M^J", "\u068a"], ["\\M-Z\\M^K", "\u068b"], ["\\M-Z\\M^L", "\u068c"], ["\\M-Z\\M^M", "\u068d"], ["\\M-Z\\M^N", "\u068e"], ["\\M-Z\\M^O", "\u068f"], ["\\M-Z\\M^P", "\u0690"], ["\\M-Z\\M^Q", "\u0691"], ["\\M-Z\\M^R", "\u0692"], ["\\M-Z\\M^S", "\u0693"], ["\\M-Z\\M^T", "\u0694"], ["\\M-Z\\M^U", "\u0695"], ["\\M-Z\\M^V", "\u0696"], ["\\M-Z\\M^W", "\u0697"], ["\\M-Z\\M^X", "\u0698"], ["\\M-Z\\M^Y", "\u0699"], ["\\M-Z\\M^Z", "\u069a"], ["\\M-Z\\M^[", "\u069b"], ["\\M-Z\\M^\\", "\u069c"], ["\\M-Z\\M^]", "\u069d"], ["\\M-Z\\M^^", "\u069e"], ["\\M-Z\\M^_", "\u069f"], ["\\M-Z\\240", "\u06a0"], ["\\M-Z\\M-!", "\u06a1"], ["\\M-Z\\M-\"", "\u06a2"], ["\\M-Z\\M-#", "\u06a3"], ["\\M-Z\\M-$", "\u06a4"], ["\\M-Z\\M-%", "\u06a5"], ["\\M-Z\\M-&", "\u06a6"], ["\\M-Z\\M-'", "\u06a7"], ["\\M-Z\\M-(", "\u06a8"], ["\\M-Z\\M-)", "\u06a9"], ["\\M-Z\\M-*", "\u06aa"], ["\\M-Z\\M-+", "\u06ab"], ["\\M-Z\\M-,", "\u06ac"], ["\\M-Z\\M--", "\u06ad"], ["\\M-Z\\M-.", "\u06ae"], ["\\M-Z\\M-/", "\u06af"], ["\\M-Z\\M-0", "\u06b0"], ["\\M-Z\\M-1", "\u06b1"], ["\\M-Z\\M-2", "\u06b2"], ["\\M-Z\\M-3", "\u06b3"], ["\\M-Z\\M-4", "\u06b4"], ["\\M-Z\\M-5", "\u06b5"], ["\\M-Z\\M-6", "\u06b6"], ["\\M-Z\\M-7", "\u06b7"], ["\\M-Z\\M-8", "\u06b8"], ["\\M-Z\\M-9", "\u06b9"], ["\\M-Z\\M-:", "\u06ba"], ["\\M-Z\\M-;", "\u06bb"], ["\\M-Z\\M-<", "\u06bc"], ["\\M-Z\\M-=", "\u06bd"], ["\\M-Z\\M->", "\u06be"], ["\\M-Z\\M-?", "\u06bf"], ["\\M-[\\M^@", "\u06c0"], ["\\M-[\\M^A", "\u06c1"], ["\\M-[\\M^B", "\u06c2"], ["\\M-[\\M^C", "\u06c3"], ["\\M-[\\M^D", "\u06c4"], ["\\M-[\\M^E", "\u06c5"], ["\\M-[\\M^F", "\u06c6"], ["\\M-[\\M^G", "\u06c7"], ["\\M-[\\M^H", "\u06c8"], ["\\M-[\\M^I", "\u06c9"], ["\\M-[\\M^J", "\u06ca"], ["\\M-[\\M^K", "\u06cb"], ["\\M-[\\M^L", "\u06cc"], ["\\M-[\\M^M", "\u06cd"], ["\\M-[\\M^N", "\u06ce"], ["\\M-[\\M^O", "\u06cf"], ["\\M-[\\M^P", "\u06d0"], ["\\M-[\\M^Q", "\u06d1"], ["\\M-[\\M^R", "\u06d2"], ["\\M-[\\M^S", "\u06d3"], ["\\M-[\\M^T", "\u06d4"], ["\\M-[\\M^U", "\u06d5"], ["\\M-[\\M^V", "\u06d6"], ["\\M-[\\M^W", "\u06d7"], ["\\M-[\\M^X", "\u06d8"], ["\\M-[\\M^Y", "\u06d9"], ["\\M-[\\M^Z", "\u06da"], ["\\M-[\\M^[", "\u06db"], ["\\M-[\\M^\\", "\u06dc"], ["\\M-[\\M^]", "\u06dd"], ["\\M-[\\M^^", "\u06de"], ["\\M-[\\M^_", "\u06df"], ["\\M-[\\240", "\u06e0"], ["\\M-[\\M-!", "\u06e1"], ["\\M-[\\M-\"", "\u06e2"], ["\\M-[\\M-#", "\u06e3"], ["\\M-[\\M-$", "\u06e4"], ["\\M-[\\M-%", "\u06e5"], ["\\M-[\\M-&", "\u06e6"], ["\\M-[\\M-'", "\u06e7"], ["\\M-[\\M-(", "\u06e8"], ["\\M-[\\M-)", "\u06e9"], ["\\M-[\\M-*", "\u06ea"], ["\\M-[\\M-+", "\u06eb"], ["\\M-[\\M-,", "\u06ec"], ["\\M-[\\M--", "\u06ed"], ["\\M-[\\M-.", "\u06ee"], ["\\M-[\\M-/", "\u06ef"], ["\\M-[\\M-0", "\u06f0"], ["\\M-[\\M-1", "\u06f1"], ["\\M-[\\M-2", "\u06f2"], ["\\M-[\\M-3", "\u06f3"], ["\\M-[\\M-4", "\u06f4"], ["\\M-[\\M-5", "\u06f5"], ["\\M-[\\M-6", "\u06f6"], ["\\M-[\\M-7", "\u06f7"], ["\\M-[\\M-8", "\u06f8"], ["\\M-[\\M-9", "\u06f9"], ["\\M-[\\M-:", "\u06fa"], ["\\M-[\\M-;", "\u06fb"], ["\\M-[\\M-<", "\u06fc"], ["\\M-[\\M-=", "\u06fd"], ["\\M-[\\M->", "\u06fe"], ["\\M-[\\M-?", "\u06ff"], ["\\M-b\\M-:\\M^@", "\u2e80"], ["\\M-b\\M-:\\M^A", "\u2e81"], ["\\M-b\\M-:\\M^B", "\u2e82"], ["\\M-b\\M-:\\M^C", "\u2e83"], ["\\M-b\\M-:\\M^D", "\u2e84"], ["\\M-b\\M-:\\M^E", "\u2e85"], ["\\M-b\\M-:\\M^F", "\u2e86"], ["\\M-b\\M-:\\M^G", "\u2e87"], ["\\M-b\\M-:\\M^H", "\u2e88"], ["\\M-b\\M-:\\M^I", "\u2e89"], ["\\M-b\\M-:\\M^J", "\u2e8a"], ["\\M-b\\M-:\\M^K", "\u2e8b"], ["\\M-b\\M-:\\M^L", "\u2e8c"], ["\\M-b\\M-:\\M^M", "\u2e8d"], ["\\M-b\\M-:\\M^N", "\u2e8e"], ["\\M-b\\M-:\\M^O", "\u2e8f"], ["\\M-b\\M-:\\M^P", "\u2e90"], ["\\M-b\\M-:\\M^Q", "\u2e91"], ["\\M-b\\M-:\\M^R", "\u2e92"], ["\\M-b\\M-:\\M^S", "\u2e93"], ["\\M-b\\M-:\\M^T", "\u2e94"], ["\\M-b\\M-:\\M^U", "\u2e95"], ["\\M-b\\M-:\\M^V", "\u2e96"], ["\\M-b\\M-:\\M^W", "\u2e97"], ["\\M-b\\M-:\\M^X", "\u2e98"], ["\\M-b\\M-:\\M^Y", "\u2e99"], ["\\M-b\\M-:\\M^Z", "\u2e9a"], ["\\M-b\\M-:\\M^[", "\u2e9b"], ["\\M-b\\M-:\\M^\\", "\u2e9c"], ["\\M-b\\M-:\\M^]", "\u2e9d"], ["\\M-b\\M-:\\M^^", "\u2e9e"], ["\\M-b\\M-:\\M^_", "\u2e9f"], ["\\M-b\\M-:\\240", "\u2ea0"], ["\\M-b\\M-:\\M-!", "\u2ea1"], ["\\M-b\\M-:\\M-\"", "\u2ea2"], ["\\M-b\\M-:\\M-#", "\u2ea3"], ["\\M-b\\M-:\\M-$", "\u2ea4"], ["\\M-b\\M-:\\M-%", "\u2ea5"], ["\\M-b\\M-:\\M-&", "\u2ea6"], ["\\M-b\\M-:\\M-'", "\u2ea7"], ["\\M-b\\M-:\\M-(", "\u2ea8"], ["\\M-b\\M-:\\M-)", "\u2ea9"], ["\\M-b\\M-:\\M-*", "\u2eaa"], ["\\M-b\\M-:\\M-+", "\u2eab"], ["\\M-b\\M-:\\M-,", "\u2eac"], ["\\M-b\\M-:\\M--", "\u2ead"], ["\\M-b\\M-:\\M-.", "\u2eae"], ["\\M-b\\M-:\\M-/", "\u2eaf"], ["\\M-b\\M-:\\M-0", "\u2eb0"], ["\\M-b\\M-:\\M-1", "\u2eb1"], ["\\M-b\\M-:\\M-2", "\u2eb2"], ["\\M-b\\M-:\\M-3", "\u2eb3"], ["\\M-b\\M-:\\M-4", "\u2eb4"], ["\\M-b\\M-:\\M-5", "\u2eb5"], ["\\M-b\\M-:\\M-6", "\u2eb6"], ["\\M-b\\M-:\\M-7", "\u2eb7"], ["\\M-b\\M-:\\M-8", "\u2eb8"], ["\\M-b\\M-:\\M-9", "\u2eb9"], ["\\M-b\\M-:\\M-:", "\u2eba"], ["\\M-b\\M-:\\M-;", "\u2ebb"], ["\\M-b\\M-:\\M-<", "\u2ebc"], ["\\M-b\\M-:\\M-=", "\u2ebd"], ["\\M-b\\M-:\\M->", "\u2ebe"], ["\\M-b\\M-:\\M-?", "\u2ebf"], ["\\M-b\\M-;\\M^@", "\u2ec0"], ["\\M-b\\M-;\\M^A", "\u2ec1"], ["\\M-b\\M-;\\M^B", "\u2ec2"], ["\\M-b\\M-;\\M^C", "\u2ec3"], ["\\M-b\\M-;\\M^D", "\u2ec4"], ["\\M-b\\M-;\\M^E", "\u2ec5"], ["\\M-b\\M-;\\M^F", "\u2ec6"], ["\\M-b\\M-;\\M^G", "\u2ec7"], ["\\M-b\\M-;\\M^H", "\u2ec8"], ["\\M-b\\M-;\\M^I", "\u2ec9"], ["\\M-b\\M-;\\M^J", "\u2eca"], ["\\M-b\\M-;\\M^K", "\u2ecb"], ["\\M-b\\M-;\\M^L", "\u2ecc"], ["\\M-b\\M-;\\M^M", "\u2ecd"], ["\\M-b\\M-;\\M^N", "\u2ece"], ["\\M-b\\M-;\\M^O", "\u2ecf"], ["\\M-b\\M-;\\M^P", "\u2ed0"], ["\\M-b\\M-;\\M^Q", "\u2ed1"], ["\\M-b\\M-;\\M^R", "\u2ed2"], ["\\M-b\\M-;\\M^S", "\u2ed3"], ["\\M-b\\M-;\\M^T", "\u2ed4"], ["\\M-b\\M-;\\M^U", "\u2ed5"], ["\\M-b\\M-;\\M^V", "\u2ed6"], ["\\M-b\\M-;\\M^W", "\u2ed7"], ["\\M-b\\M-;\\M^X", "\u2ed8"], ["\\M-b\\M-;\\M^Y", "\u2ed9"], ["\\M-b\\M-;\\M^Z", "\u2eda"], ["\\M-b\\M-;\\M^[", "\u2edb"], ["\\M-b\\M-;\\M^\\", "\u2edc"], ["\\M-b\\M-;\\M^]", "\u2edd"], ["\\M-b\\M-;\\M^^", "\u2ede"], ["\\M-b\\M-;\\M^_", "\u2edf"], ["\\M-b\\M-;\\240", "\u2ee0"], ["\\M-b\\M-;\\M-!", "\u2ee1"], ["\\M-b\\M-;\\M-\"", "\u2ee2"], ["\\M-b\\M-;\\M-#", "\u2ee3"], ["\\M-b\\M-;\\M-$", "\u2ee4"], ["\\M-b\\M-;\\M-%", "\u2ee5"], ["\\M-b\\M-;\\M-&", "\u2ee6"], ["\\M-b\\M-;\\M-'", "\u2ee7"], ["\\M-b\\M-;\\M-(", "\u2ee8"], ["\\M-b\\M-;\\M-)", "\u2ee9"], ["\\M-b\\M-;\\M-*", "\u2eea"], ["\\M-b\\M-;\\M-+", "\u2eeb"], ["\\M-b\\M-;\\M-,", "\u2eec"], ["\\M-b\\M-;\\M--", "\u2eed"], ["\\M-b\\M-;\\M-.", "\u2eee"], ["\\M-b\\M-;\\M-/", "\u2eef"], ["\\M-b\\M-;\\M-0", "\u2ef0"], ["\\M-b\\M-;\\M-1", "\u2ef1"], ["\\M-b\\M-;\\M-2", "\u2ef2"], ["\\M-b\\M-;\\M-3", "\u2ef3"], ["\\M-b\\M-;\\M-4", "\u2ef4"], ["\\M-b\\M-;\\M-5", "\u2ef5"], ["\\M-b\\M-;\\M-6", "\u2ef6"], ["\\M-b\\M-;\\M-7", "\u2ef7"], ["\\M-b\\M-;\\M-8", "\u2ef8"], ["\\M-b\\M-;\\M-9", "\u2ef9"], ["\\M-b\\M-;\\M-:", "\u2efa"], ["\\M-b\\M-;\\M-;", "\u2efb"], ["\\M-b\\M-;\\M-<", "\u2efc"], ["\\M-b\\M-;\\M-=", "\u2efd"], ["\\M-b\\M-;\\M->", "\u2efe"], ["\\M-b\\M-;\\M-?", "\u2eff"], ["\\M-c\\M^A\\M^@", "\u3040"], ["\\M-c\\M^A\\M^A", "\u3041"], ["\\M-c\\M^A\\M^B", "\u3042"], ["\\M-c\\M^A\\M^C", "\u3043"], ["\\M-c\\M^A\\M^D", "\u3044"], ["\\M-c\\M^A\\M^E", "\u3045"], ["\\M-c\\M^A\\M^F", "\u3046"], ["\\M-c\\M^A\\M^G", "\u3047"], ["\\M-c\\M^A\\M^H", "\u3048"], ["\\M-c\\M^A\\M^I", "\u3049"], ["\\M-c\\M^A\\M^J", "\u304a"], ["\\M-c\\M^A\\M^K", "\u304b"], ["\\M-c\\M^A\\M^L", "\u304c"], ["\\M-c\\M^A\\M^M", "\u304d"], ["\\M-c\\M^A\\M^N", "\u304e"], ["\\M-c\\M^A\\M^O", "\u304f"], ["\\M-c\\M^A\\M^P", "\u3050"], ["\\M-c\\M^A\\M^Q", "\u3051"], ["\\M-c\\M^A\\M^R", "\u3052"], ["\\M-c\\M^A\\M^S", "\u3053"], ["\\M-c\\M^A\\M^T", "\u3054"], ["\\M-c\\M^A\\M^U", "\u3055"], ["\\M-c\\M^A\\M^V", "\u3056"], ["\\M-c\\M^A\\M^W", "\u3057"], ["\\M-c\\M^A\\M^X", "\u3058"], ["\\M-c\\M^A\\M^Y", "\u3059"], ["\\M-c\\M^A\\M^Z", "\u305a"], ["\\M-c\\M^A\\M^[", "\u305b"], ["\\M-c\\M^A\\M^\\", "\u305c"], ["\\M-c\\M^A\\M^]", "\u305d"], ["\\M-c\\M^A\\M^^", "\u305e"], ["\\M-c\\M^A\\M^_", "\u305f"], ["\\M-c\\M^A\\240", "\u3060"], ["\\M-c\\M^A\\M-!", "\u3061"], ["\\M-c\\M^A\\M-\"", "\u3062"], ["\\M-c\\M^A\\M-#", "\u3063"], ["\\M-c\\M^A\\M-$", "\u3064"], ["\\M-c\\M^A\\M-%", "\u3065"], ["\\M-c\\M^A\\M-&", "\u3066"], ["\\M-c\\M^A\\M-'", "\u3067"], ["\\M-c\\M^A\\M-(", "\u3068"], ["\\M-c\\M^A\\M-)", "\u3069"], ["\\M-c\\M^A\\M-*", "\u306a"], ["\\M-c\\M^A\\M-+", "\u306b"], ["\\M-c\\M^A\\M-,", "\u306c"], ["\\M-c\\M^A\\M--", "\u306d"], ["\\M-c\\M^A\\M-.", "\u306e"], ["\\M-c\\M^A\\M-/", "\u306f"], ["\\M-c\\M^A\\M-0", "\u3070"], ["\\M-c\\M^A\\M-1", "\u3071"], ["\\M-c\\M^A\\M-2", "\u3072"], ["\\M-c\\M^A\\M-3", "\u3073"], ["\\M-c\\M^A\\M-4", "\u3074"], ["\\M-c\\M^A\\M-5", "\u3075"], ["\\M-c\\M^A\\M-6", "\u3076"], ["\\M-c\\M^A\\M-7", "\u3077"], ["\\M-c\\M^A\\M-8", "\u3078"], ["\\M-c\\M^A\\M-9", "\u3079"], ["\\M-c\\M^A\\M-:", "\u307a"], ["\\M-c\\M^A\\M-;", "\u307b"], ["\\M-c\\M^A\\M-<", "\u307c"], ["\\M-c\\M^A\\M-=", "\u307d"], ["\\M-c\\M^A\\M->", "\u307e"], ["\\M-c\\M^A\\M-?", "\u307f"], ["\\M-c\\M^B\\M^@", "\u3080"], ["\\M-c\\M^B\\M^A", "\u3081"], ["\\M-c\\M^B\\M^B", "\u3082"], ["\\M-c\\M^B\\M^C", "\u3083"], ["\\M-c\\M^B\\M^D", "\u3084"], ["\\M-c\\M^B\\M^E", "\u3085"], ["\\M-c\\M^B\\M^F", "\u3086"], ["\\M-c\\M^B\\M^G", "\u3087"], ["\\M-c\\M^B\\M^H", "\u3088"], ["\\M-c\\M^B\\M^I", "\u3089"], ["\\M-c\\M^B\\M^J", "\u308a"], ["\\M-c\\M^B\\M^K", "\u308b"], ["\\M-c\\M^B\\M^L", "\u308c"], ["\\M-c\\M^B\\M^M", "\u308d"], ["\\M-c\\M^B\\M^N", "\u308e"], ["\\M-c\\M^B\\M^O", "\u308f"], ["\\M-c\\M^B\\M^P", "\u3090"], ["\\M-c\\M^B\\M^Q", "\u3091"], ["\\M-c\\M^B\\M^R", "\u3092"], ["\\M-c\\M^B\\M^S", "\u3093"], ["\\M-c\\M^B\\M^T", "\u3094"], ["\\M-c\\M^B\\M^U", "\u3095"], ["\\M-c\\M^B\\M^V", "\u3096"], ["\\M-c\\M^B\\M^W", "\u3097"], ["\\M-c\\M^B\\M^X", "\u3098"], ["\\M-c\\M^B\\M^Y", "\u3099"], ["\\M-c\\M^B\\M^Z", "\u309a"], ["\\M-c\\M^B\\M^[", "\u309b"], ["\\M-c\\M^B\\M^\\", "\u309c"], ["\\M-c\\M^B\\M^]", "\u309d"], ["\\M-c\\M^B\\M^^", "\u309e"], ["\\M-c\\M^B\\M^_", "\u309f"], ["\\M-c\\M^B\\240", "\u30a0"], ["\\M-c\\M^B\\M-!", "\u30a1"], ["\\M-c\\M^B\\M-\"", "\u30a2"], ["\\M-c\\M^B\\M-#", "\u30a3"], ["\\M-c\\M^B\\M-$", "\u30a4"], ["\\M-c\\M^B\\M-%", "\u30a5"], ["\\M-c\\M^B\\M-&", "\u30a6"], ["\\M-c\\M^B\\M-'", "\u30a7"], ["\\M-c\\M^B\\M-(", "\u30a8"], ["\\M-c\\M^B\\M-)", "\u30a9"], ["\\M-c\\M^B\\M-*", "\u30aa"], ["\\M-c\\M^B\\M-+", "\u30ab"], ["\\M-c\\M^B\\M-,", "\u30ac"], ["\\M-c\\M^B\\M--", "\u30ad"], ["\\M-c\\M^B\\M-.", "\u30ae"], ["\\M-c\\M^B\\M-/", "\u30af"], ["\\M-c\\M^B\\M-0", "\u30b0"], ["\\M-c\\M^B\\M-1", "\u30b1"], ["\\M-c\\M^B\\M-2", "\u30b2"], ["\\M-c\\M^B\\M-3", "\u30b3"], ["\\M-c\\M^B\\M-4", "\u30b4"], ["\\M-c\\M^B\\M-5", "\u30b5"], ["\\M-c\\M^B\\M-6", "\u30b6"], ["\\M-c\\M^B\\M-7", "\u30b7"], ["\\M-c\\M^B\\M-8", "\u30b8"], ["\\M-c\\M^B\\M-9", "\u30b9"], ["\\M-c\\M^B\\M-:", "\u30ba"], ["\\M-c\\M^B\\M-;", "\u30bb"], ["\\M-c\\M^B\\M-<", "\u30bc"], ["\\M-c\\M^B\\M-=", "\u30bd"], ["\\M-c\\M^B\\M->", "\u30be"], ["\\M-c\\M^B\\M-?", "\u30bf"], ["\\M-c\\M^C\\M^@", "\u30c0"], ["\\M-c\\M^C\\M^A", "\u30c1"], ["\\M-c\\M^C\\M^B", "\u30c2"], ["\\M-c\\M^C\\M^C", "\u30c3"], ["\\M-c\\M^C\\M^D", "\u30c4"], ["\\M-c\\M^C\\M^E", "\u30c5"], ["\\M-c\\M^C\\M^F", "\u30c6"], ["\\M-c\\M^C\\M^G", "\u30c7"], ["\\M-c\\M^C\\M^H", "\u30c8"], ["\\M-c\\M^C\\M^I", "\u30c9"], ["\\M-c\\M^C\\M^J", "\u30ca"], ["\\M-c\\M^C\\M^K", "\u30cb"], ["\\M-c\\M^C\\M^L", "\u30cc"], ["\\M-c\\M^C\\M^M", "\u30cd"], ["\\M-c\\M^C\\M^N", "\u30ce"], ["\\M-c\\M^C\\M^O", "\u30cf"], ["\\M-c\\M^C\\M^P", "\u30d0"], ["\\M-c\\M^C\\M^Q", "\u30d1"], ["\\M-c\\M^C\\M^R", "\u30d2"], ["\\M-c\\M^C\\M^S", "\u30d3"], ["\\M-c\\M^C\\M^T", "\u30d4"], ["\\M-c\\M^C\\M^U", "\u30d5"], ["\\M-c\\M^C\\M^V", "\u30d6"], ["\\M-c\\M^C\\M^W", "\u30d7"], ["\\M-c\\M^C\\M^X", "\u30d8"], ["\\M-c\\M^C\\M^Y", "\u30d9"], ["\\M-c\\M^C\\M^Z", "\u30da"], ["\\M-c\\M^C\\M^[", "\u30db"], ["\\M-c\\M^C\\M^\\", "\u30dc"], ["\\M-c\\M^C\\M^]", "\u30dd"], ["\\M-c\\M^C\\M^^", "\u30de"], ["\\M-c\\M^C\\M^_", "\u30df"], ["\\M-c\\M^C\\240", "\u30e0"], ["\\M-c\\M^C\\M-!", "\u30e1"], ["\\M-c\\M^C\\M-\"", "\u30e2"], ["\\M-c\\M^C\\M-#", "\u30e3"], ["\\M-c\\M^C\\M-$", "\u30e4"], ["\\M-c\\M^C\\M-%", "\u30e5"], ["\\M-c\\M^C\\M-&", "\u30e6"], ["\\M-c\\M^C\\M-'", "\u30e7"], ["\\M-c\\M^C\\M-(", "\u30e8"], ["\\M-c\\M^C\\M-)", "\u30e9"], ["\\M-c\\M^C\\M-*", "\u30ea"], ["\\M-c\\M^C\\M-+", "\u30eb"], ["\\M-c\\M^C\\M-,", "\u30ec"], ["\\M-c\\M^C\\M--", "\u30ed"], ["\\M-c\\M^C\\M-.", "\u30ee"], ["\\M-c\\M^C\\M-/", "\u30ef"], ["\\M-c\\M^C\\M-0", "\u30f0"], ["\\M-c\\M^C\\M-1", "\u30f1"], ["\\M-c\\M^C\\M-2", "\u30f2"], ["\\M-c\\M^C\\M-3", "\u30f3"], ["\\M-c\\M^C\\M-4", "\u30f4"], ["\\M-c\\M^C\\M-5", "\u30f5"], ["\\M-c\\M^C\\M-6", "\u30f6"], ["\\M-c\\M^C\\M-7", "\u30f7"], ["\\M-c\\M^C\\M-8", "\u30f8"], ["\\M-c\\M^C\\M-9", "\u30f9"], ["\\M-c\\M^C\\M-:", "\u30fa"], ["\\M-c\\M^C\\M-;", "\u30fb"], ["\\M-c\\M^C\\M-<", "\u30fc"], ["\\M-c\\M^C\\M-=", "\u30fd"], ["\\M-c\\M^C\\M->", "\u30fe"], ["\\M-c\\M^C\\M-?", "\u30ff"], ["foo\\040bar", "foo bar"], ["foo\\^Jbar", "foo\nbar"], ["$bar\\040=\\040'baz';", "$bar = 'baz';"], ["$foo\\040=\\040\"\\\\x20\\\\\\\\x20\\\\\\\\\\\\x20\\\\\\\\\\\\\\\\x20\"", "$foo = \"\\x20\\\\x20\\\\\\x20\\\\\\\\x20\""], ["$foo\\040=\\040function($bar)\\040use($baz)\\040{\\^J\\^Ireturn\\040$baz->getFoo()\\^J};", "$foo = function($bar) use($baz) {\n\treturn $baz->getFoo()\n};"], ["", ""]] \ No newline at end of file diff --git a/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py b/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py deleted file mode 100755 index e02a74145..000000000 --- a/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py +++ /dev/null @@ -1,94 +0,0 @@ -#! /usr/bin/env python3 -import sys -from os.path import abspath, expanduser, dirname, join -from itertools import chain -import json -import argparse - -from vis import vis, unvis, VIS_WHITE - - -__dir__ = dirname(abspath(__file__)) - -OUTPUT_FILE = join(__dir__, '..', 'fixtures', 'unvis_fixtures.json') - -# Add custom fixtures here -CUSTOM_FIXTURES = [ - # test long multibyte string - ''.join(chr(cp) for cp in range(1024)), - 'foo bar', - 'foo\nbar', - "$bar = 'baz';", - r'$foo = "\x20\\x20\\\x20\\\\x20"', - '$foo = function($bar) use($baz) {\n\treturn $baz->getFoo()\n};' -] - -RANGES = { - # All valid codepoints in the BMP - 'bmp': chain(range(0x0000, 0xD800), range(0xE000, 0xFFFF)), - # Smaller set of pertinent? codepoints inside BMP - # see: http://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane - 'small': chain( - # latin blocks - range(0x0000, 0x0250), - # Greek, Cyrillic - range(0x0370, 0x0530), - # Hebrew, Arabic - range(0x590, 0x0700), - # CJK radicals - range(0x2E80, 0x2F00), - # Hiragana, Katakana - range(0x3040, 0x3100) - ) -} - - -if __name__ == '__main__': - - argp = argparse.ArgumentParser( - description='Generates test data for Psy\\Test\\Util\\StrTest') - argp.add_argument('-f', '--format-output', action='store_true', - help='Indent JSON output to ease debugging') - argp.add_argument('-a', '--all', action='store_true', - help="""Generates test data for all codepoints of the BMP. - (same as --range=bmp). WARNING: You will need quite - a lot of RAM to run the testsuite ! - """) - argp.add_argument('-r', '--range', - help="""Choose the range of codepoints used to generate - test data.""", - choices=list(RANGES.keys()), - default='small') - argp.add_argument('-o', '--output-file', - help="""Write test data to OUTPUT_FILE - (defaults to PSYSH_DIR/test/fixtures)""") - args = argp.parse_args() - - cp_range = RANGES['bmp'] if args.all else RANGES[args.range] - indent = 2 if args.format_output else None - if args.output_file: - OUTPUT_FILE = abspath(expanduser(args.output_file)) - - fixtures = [] - - # use SMALL_RANGE by default, it should be enough. - # use BMP_RANGE for a more complete smoke test - for codepoint in cp_range: - char = chr(codepoint) - encoded = vis(char, VIS_WHITE) - decoded = unvis(encoded) - fixtures.append((encoded, decoded)) - - # Add our own custom fixtures at the end, - # since they would fail anyway if one of the previous did. - for fixture in CUSTOM_FIXTURES: - encoded = vis(fixture, VIS_WHITE) - decoded = unvis(encoded) - fixtures.append((encoded, decoded)) - - with open(OUTPUT_FILE, 'w') as fp: - # dump as json to avoid backslashin and quotin nightmare - # between php and python - json.dump(fixtures, fp, indent=indent) - - sys.exit(0) diff --git a/vendor/psy/psysh/test/tools/vis.py b/vendor/psy/psysh/test/tools/vis.py deleted file mode 100755 index 4e45c4c93..000000000 --- a/vendor/psy/psysh/test/tools/vis.py +++ /dev/null @@ -1,126 +0,0 @@ -""" -vis.py -====== - -Ctypes based module to access libbsd's strvis & strunvis functions. - -The `vis` function is the equivalent of strvis. -The `unvis` function is the equivalent of strunvis. -All functions accept unicode string as input and return a unicode string. - -Constants: ----------- - -* to select alternate encoding format - `VIS_OCTAL`: use octal \ddd format - `VIS_CSTYLE`: use \[nrft0..] where appropiate - -* to alter set of characters encoded - (default is to encode all non-graphic except space, tab, and newline). - `VIS_SP`: also encode space - `VIS_TAB`: also encode tab - `VIS_NL`: also encode newline - `VIS_WHITE`: same as (VIS_SP | VIS_TAB | VIS_NL) - `VIS_SAFE`: only encode "unsafe" characters - -* other - `VIS_NOSLASH`: inhibit printing '\' - `VIS_HTTP1808`: http-style escape % hex hex - `VIS_HTTPSTYLE`: http-style escape % hex hex - `VIS_MIMESTYLE`: mime-style escape = HEX HEX - `VIS_HTTP1866`: http-style &#num; or &string; - `VIS_NOESCAPE`: don't decode `\' - `VIS_GLOB`: encode glob(3) magic characters - -:Authors: - - ju1ius (http://github.com/ju1ius) -:Version: 1 -:Date: 2014-01-05 -""" -from ctypes import CDLL, c_char_p, c_int -from ctypes.util import find_library - - -__all__ = [ - 'vis', 'unvis', - 'VIS_OCTAL', 'VIS_CSTYLE', - 'VIS_SP', 'VIS_TAB', 'VIS_NL', 'VIS_WHITE', 'VIS_SAFE', - 'VIS_NOSLASH', 'VIS_HTTP1808', 'VIS_HTTPSTYLE', 'VIS_MIMESTYLE', - 'VIS_HTTP1866', 'VIS_NOESCAPE', 'VIS_GLOB' -] - - -############################################################# -# Constants from bsd/vis.h -############################################################# - -#to select alternate encoding format -VIS_OCTAL = 0x0001 -VIS_CSTYLE = 0x0002 -# to alter set of characters encoded -# (default is to encode all non-graphic except space, tab, and newline). -VIS_SP = 0x0004 -VIS_TAB = 0x0008 -VIS_NL = 0x0010 -VIS_WHITE = VIS_SP | VIS_TAB | VIS_NL -VIS_SAFE = 0x0020 -# other -VIS_NOSLASH = 0x0040 -VIS_HTTP1808 = 0x0080 -VIS_HTTPSTYLE = 0x0080 -VIS_MIMESTYLE = 0x0100 -VIS_HTTP1866 = 0x0200 -VIS_NOESCAPE = 0x0400 -VIS_GLOB = 0x1000 - -############################################################# -# Import libbsd/vis functions -############################################################# - -_libbsd = CDLL(find_library('bsd')) - -_strvis = _libbsd.strvis -_strvis.argtypes = [c_char_p, c_char_p, c_int] -_strvis.restype = c_int - -_strunvis = _libbsd.strunvis -_strvis.argtypes = [c_char_p, c_char_p] -_strvis.restype = c_int - - -def vis(src, flags=VIS_WHITE): - """ - Encodes the string `src` into libbsd's vis encoding. - `flags` must be one of the VIS_* constants - - C definition: - int strvis(char *dst, char *src, int flags); - """ - src = bytes(src, 'utf-8') - dst_p = c_char_p(bytes(len(src) * 4)) - src_p = c_char_p(src) - flags = c_int(flags) - - bytes_written = _strvis(dst_p, src_p, flags) - if -1 == bytes_written: - raise RuntimeError('vis failed to encode string "{}"'.format(src)) - - return dst_p.value.decode('utf-8') - - -def unvis(src): - """ - Decodes a string encoded by vis. - - C definition: - int strunvis(char *dst, char *src); - """ - src = bytes(src, 'utf-8') - dst_p = c_char_p(bytes(len(src))) - src_p = c_char_p(src) - - bytes_written = _strunvis(dst_p, src_p) - if -1 == bytes_written: - raise RuntimeError('unvis failed to decode string "{}"'.format(src)) - - return dst_p.value.decode('utf-8') diff --git a/vendor/psy/psysh/vendor-bin/box/composer.json b/vendor/psy/psysh/vendor-bin/box/composer.json deleted file mode 100644 index 13b78794f..000000000 --- a/vendor/psy/psysh/vendor-bin/box/composer.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "minimum-stability": "dev", - "prefer-stable": true, - "require": { - "humbug/box": "^3.1" - } -} diff --git a/vendor/psy/psysh/vendor-bin/box/composer.lock b/vendor/psy/psysh/vendor-bin/box/composer.lock deleted file mode 100644 index 3c4496384..000000000 --- a/vendor/psy/psysh/vendor-bin/box/composer.lock +++ /dev/null @@ -1,2524 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d98ffe050f0ba4e81c2d1a98ca945200", - "packages": [ - { - "name": "amphp/amp", - "version": "v2.0.7", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/d561cc9736bc18dd94a2fc9cdae98b616bd92c43", - "reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43", - "shasum": "" - }, - "require": { - "php": ">=7" - }, - "require-dev": { - "amphp/phpunit-util": "^1", - "friendsofphp/php-cs-fixer": "^2.3", - "phpstan/phpstan": "^0.8.5", - "phpunit/phpunit": "^6.0.9", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Amp\\": "lib" - }, - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - }, - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "time": "2018-04-30T20:49:57+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "1b75b122e6f069e7d102eef065dc192119d99ca7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/1b75b122e6f069e7d102eef065dc192119d99ca7", - "reference": "1b75b122e6f069e7d102eef065dc192119d99ca7", - "shasum": "" - }, - "require": { - "amphp/amp": "^2" - }, - "require-dev": { - "amphp/phpunit-util": "^1", - "friendsofphp/php-cs-fixer": "^2.3", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\ByteStream\\": "lib" - }, - "files": [ - "lib/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "time": "2018-04-04T05:33:09+00:00" - }, - { - "name": "amphp/parallel", - "version": "v0.2.5", - "source": { - "type": "git", - "url": "https://github.com/amphp/parallel.git", - "reference": "732694688461936bec02c0ccf020dfee10c4f7ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/732694688461936bec02c0ccf020dfee10c4f7ee", - "reference": "732694688461936bec02c0ccf020dfee10c4f7ee", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.2", - "amphp/parser": "^1", - "amphp/process": "^0.2 || ^0.3", - "amphp/sync": "^1.0.1" - }, - "require-dev": { - "amphp/phpunit-util": "^1", - "friendsofphp/php-cs-fixer": "^2.3", - "phpunit/phpunit": "^6" - }, - "suggest": { - "ext-pthreads": "Required for thread contexts" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Parallel\\": "lib" - }, - "files": [ - "lib/Worker/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "Parallel processing component for Amp.", - "homepage": "https://github.com/amphp/parallel", - "keywords": [ - "async", - "asynchronous", - "concurrent", - "multi-processing", - "multi-threading" - ], - "time": "2018-03-21T14:37:51+00:00" - }, - { - "name": "amphp/parallel-functions", - "version": "v0.1.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/parallel-functions.git", - "reference": "999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48", - "reference": "999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.0.3", - "amphp/parallel": "^0.1.8 || ^0.2", - "opis/closure": "^3.0.7", - "php": ">=7" - }, - "require-dev": { - "amphp/phpunit-util": "^1.0", - "friendsofphp/php-cs-fixer": "^2.9", - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\ParallelFunctions\\": "src" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Parallel processing made simple.", - "time": "2017-12-17T18:33:29+00:00" - }, - { - "name": "amphp/parser", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/parser.git", - "reference": "f83e68f03d5b8e8e0365b8792985a7f341c57ae1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parser/zipball/f83e68f03d5b8e8e0365b8792985a7f341c57ae1", - "reference": "f83e68f03d5b8e8e0365b8792985a7f341c57ae1", - "shasum": "" - }, - "require": { - "php": ">=7" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.3", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Parser\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "A generator parser to make streaming parsers simple.", - "homepage": "https://github.com/amphp/parser", - "keywords": [ - "async", - "non-blocking", - "parser", - "stream" - ], - "time": "2017-06-06T05:29:10+00:00" - }, - { - "name": "amphp/process", - "version": "v0.3.3", - "source": { - "type": "git", - "url": "https://github.com/amphp/process.git", - "reference": "b795d20a7f6d5a0637128a02be613f520f1705fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/b795d20a7f6d5a0637128a02be613f520f1705fc", - "reference": "b795d20a7f6d5a0637128a02be613f520f1705fc", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1", - "php": ">=7" - }, - "require-dev": { - "amphp/phpunit-util": "^1", - "friendsofphp/php-cs-fixer": "^2.3", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Process\\": "lib" - }, - "files": [ - "lib/constants.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "Asynchronous process manager.", - "homepage": "https://github.com/amphp/process", - "time": "2018-04-08T18:55:42+00:00" - }, - { - "name": "amphp/sync", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/sync.git", - "reference": "a1d8f244eb19e3e2a96abc4686cebc80995bbc90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/sync/zipball/a1d8f244eb19e3e2a96abc4686cebc80995bbc90", - "reference": "a1d8f244eb19e3e2a96abc4686cebc80995bbc90", - "shasum": "" - }, - "require": { - "amphp/amp": "^2" - }, - "require-dev": { - "amphp/phpunit-util": "^1", - "friendsofphp/php-cs-fixer": "^2.3", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Sync\\": "lib" - }, - "files": [ - "lib/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - } - ], - "description": "Mutex, Semaphore, and other synchronization tools for Amp.", - "homepage": "https://github.com/amphp/sync", - "keywords": [ - "async", - "asynchronous", - "mutex", - "semaphore", - "synchronization" - ], - "time": "2017-11-29T21:48:53+00:00" - }, - { - "name": "beberlei/assert", - "version": "v2.9.5", - "source": { - "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/c07fe163d6a3b3e4b1275981ec004397954afa89", - "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1.1", - "phpunit/phpunit": "^4.8.35|^5.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Assert\\": "lib/Assert" - }, - "files": [ - "lib/Assert/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", - "keywords": [ - "assert", - "assertion", - "validation" - ], - "time": "2018-04-16T11:18:27+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169", - "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "time": "2018-03-29T19:57:20+00:00" - }, - { - "name": "composer/composer", - "version": "1.6.5", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9", - "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/cli-prompt": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "time": "2018-05-04T09:44:59+00:00" - }, - { - "name": "composer/semver", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2016-08-30T16:08:34+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b", - "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "time": "2018-04-30T10:33:04+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08", - "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2018-04-11T15:42:36+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2017-12-06T07:11:42+00:00" - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "herrera-io/annotations", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/kherge-abandoned/php-annotations.git", - "reference": "7d8b9a536da7f12aad8de7f28b2cb5266bde8da1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/php-annotations/zipball/7d8b9a536da7f12aad8de7f28b2cb5266bde8da1", - "reference": "7d8b9a536da7f12aad8de7f28b2cb5266bde8da1", - "shasum": "" - }, - "require": { - "doctrine/annotations": "~1.0", - "php": ">=5.3.3" - }, - "require-dev": { - "herrera-io/phpunit-test-case": "1.*", - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-0": { - "Herrera\\Annotations": "src/lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" - } - ], - "description": "A tokenizer for Doctrine annotations.", - "homepage": "https://github.com/herrera-io/php-annotations", - "keywords": [ - "annotations", - "doctrine", - "tokenizer" - ], - "abandoned": true, - "time": "2014-02-03T17:34:08+00:00" - }, - { - "name": "humbug/box", - "version": "3.0.0-alpha.5", - "source": { - "type": "git", - "url": "https://github.com/humbug/box.git", - "reference": "26b3f481e3b375f55c0644f501b831f7c05d8058" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/humbug/box/zipball/26b3f481e3b375f55c0644f501b831f7c05d8058", - "reference": "26b3f481e3b375f55c0644f501b831f7c05d8058", - "shasum": "" - }, - "require": { - "amphp/parallel-functions": "^0.1.2", - "beberlei/assert": "^2.8", - "composer/composer": "^1.6", - "composer/xdebug-handler": "^1.1.0", - "ext-phar": "*", - "herrera-io/annotations": "~1.0", - "humbug/php-scoper": "^1.0@dev", - "justinrainbow/json-schema": "^5.2", - "nikic/iter": "^1.6", - "php": "^7.1", - "phpseclib/phpseclib": "~2.0", - "seld/jsonlint": "^1.6", - "symfony/console": "^3.4 || ^4.0", - "symfony/filesystem": "^3.4 || ^4.0", - "symfony/finder": "^3.4 || ^4.0", - "symfony/var-dumper": "^3.4 || ^4.0", - "webmozart/path-util": "^2.3" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "infection/infection": "^0.8", - "mikey179/vfsstream": "^1.1", - "phpunit/phpunit": "^7.0" - }, - "suggest": { - "ext-openssl": "To accelerate private key generation." - }, - "bin": [ - "bin/box" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "bamarni-bin": { - "bin-links": false - } - }, - "autoload": { - "psr-4": { - "KevinGH\\Box\\": "src" - }, - "files": [ - "src/FileSystem/file_system.php", - "src/functions.php" - ], - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" - }, - { - "name": "Théo Fidry", - "email": "theo.fidry@gmail.com" - } - ], - "description": "Fast, zero config application bundler with PHARs.", - "keywords": [ - "phar" - ], - "time": "2018-05-04T22:04:10+00:00" - }, - { - "name": "humbug/php-scoper", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/humbug/php-scoper.git", - "reference": "450fe36a7457847d0cb431e7379b5df9d05992a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/humbug/php-scoper/zipball/450fe36a7457847d0cb431e7379b5df9d05992a4", - "reference": "450fe36a7457847d0cb431e7379b5df9d05992a4", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^3.0", - "ocramius/package-versions": "^1.1", - "padraic/phar-updater": "^1.0", - "php": "^7.1", - "roave/better-reflection": "^2.0", - "symfony/console": "^3.2 || ^4.0", - "symfony/filesystem": "^3.2 || ^4.0", - "symfony/finder": "^3.2 || ^4.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.1", - "phpunit/phpunit": "^6.1" - }, - "bin": [ - "bin/php-scoper" - ], - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": false - }, - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Humbug\\PhpScoper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Théo Fidry", - "email": "theo.fidry@gmail.com" - }, - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com" - } - ], - "description": "Prefixes all PHP namespaces in a file or directory.", - "time": "2018-04-25T21:59:07+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.7", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2018-02-14T22:26:30+00:00" - }, - { - "name": "nikic/iter", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/iter.git", - "reference": "fed36b417ea93fe9b4b7cb2e2abf98d91092564c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/iter/zipball/fed36b417ea93fe9b4b7cb2e2abf98d91092564c", - "reference": "fed36b417ea93fe9b4b7cb2e2abf98d91092564c", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov", - "email": "nikic@php.net" - } - ], - "description": "Iteration primitives using generators", - "keywords": [ - "functional", - "generator", - "iterator" - ], - "time": "2017-11-10T22:56:03+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v3.1.5", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2018-02-28T20:30:58+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" - }, - "require-dev": { - "composer/composer": "^1.6.3", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.0.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2018-02-05T13:05:30+00:00" - }, - { - "name": "opis/closure", - "version": "3.0.12", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "507a28d15e79258d404ba76e73976ba895d0eb11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/507a28d15e79258d404ba76e73976ba895d0eb11", - "reference": "507a28d15e79258d404ba76e73976ba895d0eb11", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "http://www.opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ], - "time": "2018-02-23T08:08:14+00:00" - }, - { - "name": "padraic/humbug_get_contents", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/humbug/file_get_contents.git", - "reference": "dcb086060c9dd6b2f51d8f7a895500307110b7a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/humbug/file_get_contents/zipball/dcb086060c9dd6b2f51d8f7a895500307110b7a7", - "reference": "dcb086060c9dd6b2f51d8f7a895500307110b7a7", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "ext-openssl": "*", - "php": "^5.3 || ^7.0 || ^7.1 || ^7.2" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.1", - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": false - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Humbug\\": "src/" - }, - "files": [ - "src/function.php", - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Padraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Théo Fidry", - "email": "theo.fidry@gmail.com" - } - ], - "description": "Secure wrapper for accessing HTTPS resources with file_get_contents for PHP 5.3+", - "homepage": "https://github.com/padraic/file_get_contents", - "keywords": [ - "download", - "file_get_contents", - "http", - "https", - "ssl", - "tls" - ], - "time": "2018-02-12T18:47:17+00:00" - }, - { - "name": "padraic/phar-updater", - "version": "v1.0.6", - "source": { - "type": "git", - "url": "https://github.com/humbug/phar-updater.git", - "reference": "d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/humbug/phar-updater/zipball/d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1", - "reference": "d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1", - "shasum": "" - }, - "require": { - "padraic/humbug_get_contents": "^1.0", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Humbug\\SelfUpdate\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - } - ], - "description": "A thing to make PHAR self-updating easy and secure.", - "keywords": [ - "humbug", - "phar", - "self-update", - "update" - ], - "time": "2018-03-30T12:52:15+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.11", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7053f06f91b3de78e143d430e55a8f7889efc08b", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2018-04-15T16:55:05+00:00" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, - { - "name": "roave/better-reflection", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/Roave/BetterReflection.git", - "reference": "efc45b50cb52d5eeaacab15741376e981e28738b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/efc45b50cb52d5eeaacab15741376e981e28738b", - "reference": "efc45b50cb52d5eeaacab15741376e981e28738b", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^3.1.1", - "php": ">=7.1.0,<7.3.0", - "phpdocumentor/reflection-docblock": "^4.1.1", - "phpdocumentor/type-resolver": "^0.4.0", - "roave/signature": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.3.0" - }, - "suggest": { - "composer/composer": "Required to use the ComposerSourceLocator" - }, - "type": "library", - "autoload": { - "psr-4": { - "Roave\\BetterReflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" - }, - { - "name": "James Titcumb", - "email": "james@asgrim.com", - "homepage": "https://github.com/asgrim" - }, - { - "name": "Gary Hockin", - "email": "gary@roave.com", - "homepage": "https://github.com/geeh" - }, - { - "name": "Jaroslav Hanslík", - "email": "kukulich@kukulich.cz", - "homepage": "https://github.com/kukulich" - } - ], - "description": "Better Reflection - an improved code reflection API", - "time": "2018-02-05T08:08:57+00:00" - }, - { - "name": "roave/signature", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Roave/Signature.git", - "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/Signature/zipball/bed4ecbdd7f312ab6bb39561ac191f520bcee386", - "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386", - "shasum": "" - }, - "require": { - "php": "^7.0|^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^5.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Roave\\Signature\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Sign and verify stuff", - "time": "2017-02-17T13:53:21+00:00" - }, - { - "name": "seld/cli-prompt", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\CliPrompt\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", - "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" - ], - "time": "2017-03-18T11:32:45+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2018-01-24T12:46:19+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phra" - ], - "time": "2015-10-13T18:44:15+00:00" - }, - { - "name": "symfony/console", - "version": "v4.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "3e820bc2c520a87ca209ad8fa961c97f42e0b4ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3e820bc2c520a87ca209ad8fa961c97f42e0b4ae", - "reference": "3e820bc2c520a87ca209ad8fa961c97f42e0b4ae", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-04-30T01:23:47+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21", - "reference": "5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2018-02-22T10:50:29+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ca27c02b7a3fef4828c998c2ff9ba7aae1641c49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ca27c02b7a3fef4828c998c2ff9ba7aae1641c49", - "reference": "ca27c02b7a3fef4828c998c2ff9ba7aae1641c49", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-04-04T05:10:37+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "3296adf6a6454a050679cde90f95350ad604b171" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", - "reference": "3296adf6a6454a050679cde90f95350ad604b171", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-04-26T10:06:28+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/a4576e282d782ad82397f3e4ec1df8e0f0cafb46", - "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-04-26T10:06:28+00:00" - }, - { - "name": "symfony/process", - "version": "v4.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25", - "reference": "d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-04-03T05:24:00+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v4.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3c34cf3f4bbac9e003d9325225e9ef1a49180a18", - "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2018-04-26T16:12:06+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2018-01-29T19:49:41+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "time": "2015-12-17T08:42:14+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": { - "humbug/box": 15 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} diff --git a/vendor/ramsey/collection/LICENSE b/vendor/ramsey/collection/LICENSE new file mode 100644 index 000000000..ae15f590c --- /dev/null +++ b/vendor/ramsey/collection/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2021 Ben Ramsey <ben@benramsey.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/ramsey/collection/README.md b/vendor/ramsey/collection/README.md new file mode 100644 index 000000000..9124dd77e --- /dev/null +++ b/vendor/ramsey/collection/README.md @@ -0,0 +1,82 @@ +<h1 align="center">ramsey/collection</h1> + +<p align="center"> + <strong>A PHP library for representing and manipulating collections.</strong> +</p> + +<p align="center"> + <a href="https://github.com/ramsey/collection"><img src="http://img.shields.io/badge/source-ramsey/collection-blue.svg?style=flat-square" alt="Source Code"></a> + <a href="https://packagist.org/packages/ramsey/collection"><img src="https://img.shields.io/packagist/v/ramsey/collection.svg?style=flat-square&label=release" alt="Download Package"></a> + <a href="https://php.net"><img src="https://img.shields.io/packagist/php-v/ramsey/collection.svg?style=flat-square&colorB=%238892BF" alt="PHP Programming Language"></a> + <a href="https://github.com/ramsey/collection/blob/master/LICENSE"><img src="https://img.shields.io/packagist/l/ramsey/collection.svg?style=flat-square&colorB=darkcyan" alt="Read License"></a> + <a href="https://github.com/ramsey/collection/actions?query=workflow%3ACI"><img src="https://img.shields.io/github/workflow/status/ramsey/collection/CI?label=CI&logo=github&style=flat-square" alt="Build Status"></a> + <a href="https://codecov.io/gh/ramsey/collection"><img src="https://img.shields.io/codecov/c/gh/ramsey/collection?label=codecov&logo=codecov&style=flat-square" alt="Codecov Code Coverage"></a> + <a href="https://shepherd.dev/github/ramsey/collection"><img src="https://img.shields.io/endpoint?style=flat-square&url=https%3A%2F%2Fshepherd.dev%2Fgithub%2Framsey%2Fcollection%2Fcoverage" alt="Psalm Type Coverage"></a> +</p> + +## About + +ramsey/collection is a PHP library for representing and manipulating collections. + +Much inspiration for this library came from the [Java Collections Framework][java]. + +This project adheres to a [code of conduct](CODE_OF_CONDUCT.md). +By participating in this project and its community, you are expected to +uphold this code. + +## Installation + +Install this package as a dependency using [Composer](https://getcomposer.org). + +``` bash +composer require ramsey/collection +``` + +## Usage + +Examples of how to use this framework can be found in the +[Wiki pages](https://github.com/ramsey/collection/wiki/Examples). + +## Contributing + +Contributions are welcome! Before contributing to this project, familiarize +yourself with [CONTRIBUTING.md](CONTRIBUTING.md). + +To develop this project, you will need [PHP](https://www.php.net) 7.3 or greater +and [Composer](https://getcomposer.org). + +After cloning this repository locally, execute the following commands: + +``` bash +cd /path/to/repository +composer install +``` + +Now, you are ready to develop! + +## Coordinated Disclosure + +Keeping user information safe and secure is a top priority, and we welcome the +contribution of external security researchers. If you believe you've found a +security issue in software that is maintained in this repository, please read +[SECURITY.md][] for instructions on submitting a vulnerability report. + +## ramsey/collection for Enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of ramsey/collection and thousands of other packages are working +with Tidelift to deliver commercial support and maintenance for the open source +packages you use to build your applications. Save time, reduce risk, and improve +code health, while paying the maintainers of the exact packages you use. +[Learn more.](https://tidelift.com/subscription/pkg/packagist-ramsey-collection?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +## Copyright and License + +The ramsey/collection library is copyright © [Ben Ramsey](https://benramsey.com) +and licensed for use under the terms of the +MIT License (MIT). Please see [LICENSE](LICENSE) for more information. + + +[java]: http://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html +[security.md]: https://github.com/ramsey/collection/blob/master/SECURITY.md diff --git a/vendor/ramsey/collection/SECURITY.md b/vendor/ramsey/collection/SECURITY.md new file mode 100644 index 000000000..b052f3b65 --- /dev/null +++ b/vendor/ramsey/collection/SECURITY.md @@ -0,0 +1,113 @@ +<!-- + This policy was created using the HackerOne Policy Builder: + https://hackerone.com/policy-builder/ + --> + +# Vulnerability Disclosure Policy + +Keeping user information safe and secure is a top priority, and we welcome the +contribution of external security researchers. + +## Scope + +If you believe you've found a security issue in software that is maintained in +this repository, we encourage you to notify us. + +| Version | In scope | Source code | +| :-----: | :------: | :---------- | +| latest | ✅ | https://github.com/ramsey/collection | + +## How to Submit a Report + +To submit a vulnerability report, please contact us at <security@ramsey.dev>. +Your submission will be reviewed and validated by a member of our team. + +## Safe Harbor + +We support safe harbor for security researchers who: + +* Make a good faith effort to avoid privacy violations, destruction of data, and + interruption or degradation of our services. +* Only interact with accounts you own or with explicit permission of the account + holder. If you do encounter Personally Identifiable Information (PII) contact + us immediately, do not proceed with access, and immediately purge any local + information. +* Provide us with a reasonable amount of time to resolve vulnerabilities prior + to any disclosure to the public or a third-party. + +We will consider activities conducted consistent with this policy to constitute +"authorized" conduct and will not pursue civil action or initiate a complaint to +law enforcement. We will help to the extent we can if legal action is initiated +by a third party against you. + +Please submit a report to us before engaging in conduct that may be inconsistent +with or unaddressed by this policy. + +## Preferences + +* Please provide detailed reports with reproducible steps and a clearly defined + impact. +* Include the version number of the vulnerable package in your report +* Social engineering (e.g. phishing, vishing, smishing) is prohibited. + +## Encryption Key for security@ramsey.dev + +For increased privacy when reporting sensitive issues, you may encrypt your +messages using the following key: + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBF+Z9gEBEACbT/pIx8RR0K18t8Z2rDnmEV44YdT7HNsMdq+D6SAlx8UUb6AU +jGIbV9dgBgGNtOLU1pxloaJwL9bWIRbj+X/Qb2WNIP//Vz1Y40ox1dSpfCUrizXx +kb4p58Xml0PsB8dg3b4RDUgKwGC37ne5xmDnigyJPbiB2XJ6Xc46oPCjh86XROTK +wEBB2lY67ClBlSlvC2V9KmbTboRQkLdQDhOaUosMb99zRb0EWqDLaFkZVjY5HI7i +0pTveE6dI12NfHhTwKjZ5pUiAZQGlKA6J1dMjY2unxHZkQj5MlMfrLSyJHZxccdJ +xD94T6OTcTHt/XmMpI2AObpewZDdChDQmcYDZXGfAhFoJmbvXsmLMGXKgzKoZ/ls +RmLsQhh7+/r8E+Pn5r+A6Hh4uAc14ApyEP0ckKeIXw1C6pepHM4E8TEXVr/IA6K/ +z6jlHORixIFX7iNOnfHh+qwOgZw40D6JnBfEzjFi+T2Cy+JzN2uy7I8UnecTMGo3 +5t6astPy6xcH6kZYzFTV7XERR6LIIVyLAiMFd8kF5MbJ8N5ElRFsFHPW+82N2HDX +c60iSaTB85k6R6xd8JIKDiaKE4sSuw2wHFCKq33d/GamYezp1wO+bVUQg88efljC +2JNFyD+vl30josqhw1HcmbE1TP3DlYeIL5jQOlxCMsgai6JtTfHFM/5MYwARAQAB +tBNzZWN1cml0eUByYW1zZXkuZGV2iQJUBBMBCAA+FiEE4drPD+/ofZ570fAYq0bv +vXQCywIFAl+Z9gECGwMFCQeGH4AFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ +q0bvvXQCywIkEA//Qcwv8MtTCy01LHZd9c7VslwhNdXQDYymcTyjcYw8x7O22m4B +3hXE6vqAplFhVxxkqXB2ef0tQuzxhPHNJgkCE4Wq4i+V6qGpaSVHQT2W6DN/NIhL +vS8OdScc6zddmIbIkSrzVVAtjwehFNEIrX3DnbbbK+Iku7vsKT5EclOluIsjlYoX +goW8IeReyDBqOe2H3hoCGw6EA0D/NYV2bJnfy53rXVIyarsXXeOLp7eNEH6Td7aW +PVSrMZJe1t+knrEGnEdrXWzlg4lCJJCtemGv+pKBUomnyISXSdqyoRCCzvQjqyig +2kRebUX8BXPW33p4OXPj9sIboUOjZwormWwqqbFMO+J4TiVCUoEoheI7emPFRcNN +QtPJrjbY1++OznBc0GRpfeUkGoU1cbRl1bnepnFIZMTDLkrVW6I1Y4q8ZVwX3BkE +N81ctFrRpHBlU36EdHvjPQmGtuiL77Qq3fWmMv7yTvK1wHJAXfEb0ZJWHZCbck3w +l0CVq0Z+UUAOM8Rp1N0N8m92xtapav0qCFU9qzf2J5qX6GRmWv+d29wPgFHzDWBm +nnrYYIA4wJLx00U6SMcVBSnNe91B+RfGY5XQhbWPjQQecOGCSDsxaFAq2MeOVJyZ +bIjLYfG9GxoLKr5R7oLRJvZI4nKKBc1Kci/crZbdiSdQhSQGlDz88F1OHeCIdQQQ +EQgAHRYhBOhdAxHd+lus86YQ57Atl5icjAcbBQJfmfdIAAoJELAtl5icjAcbFVcA +/1LqB3ZjsnXDAvvAXZVjSPqofSlpMLeRQP6IM/A9Odq0AQCZrtZc1knOMGEcjppK +Rk+sy/R0Mshy8TDuaZIRgh2Ux7kCDQRfmfYBARAAmchKzzVz7IaEq7PnZDb3szQs +T/+E9F3m39yOpV4fEB1YzObonFakXNT7Gw2tZEx0eitUMqQ/13jjfu3UdzlKl2bR +qA8LrSQRhB+PTC9A1XvwxCUYhhjGiLzJ9CZL6hBQB43qHOmE9XJPme90geLsF+gK +u39Waj1SNWzwGg+Gy1Gl5f2AJoDTxznreCuFGj+Vfaczt/hlfgqpOdb9jsmdoE7t +3DSWppA9dRHWwQSgE6J28rR4QySBcqyXS6IMykqaJn7Z26yNIaITLnHCZOSY8zhP +ha7GFsN549EOCgECbrnPt9dmI2+hQE0RO0e7SOBNsIf5sz/i7urhwuj0CbOqhjc2 +X1AEVNFCVcb6HPi/AWefdFCRu0gaWQxn5g+9nkq5slEgvzCCiKYzaBIcr8qR6Hb4 +FaOPVPxO8vndRouq57Ws8XpAwbPttioFuCqF4u9K+tK/8e2/R8QgRYJsE3Cz/Fu8 ++pZFpMnqbDEbK3DL3ss+1ed1sky+mDV8qXXeI33XW5hMFnk1JWshUjHNlQmE6ftC +U0xSTMVUtwJhzH2zDp8lEdu7qi3EsNULOl68ozDr6soWAvCbHPeTdTOnFySGCleG +/3TonsoZJs/sSPPJnxFQ1DtgQL6EbhIwa0ZwU4eKYVHZ9tjxuMX3teFzRvOrJjgs ++ywGlsIURtEckT5Y6nMAEQEAAYkCPAQYAQgAJhYhBOHazw/v6H2ee9HwGKtG7710 +AssCBQJfmfYBAhsMBQkHhh+AAAoJEKtG7710AssC8NcP/iDAcy1aZFvkA0EbZ85p +i7/+ywtE/1wF4U4/9OuLcoskqGGnl1pJNPooMOSBCfreoTB8HimT0Fln0CoaOm4Q +pScNq39JXmf4VxauqUJVARByP6zUfgYarqoaZNeuFF0S4AZJ2HhGzaQPjDz1uKVM +PE6tQSgQkFzdZ9AtRA4vElTH6yRAgmepUsOihk0b0gUtVnwtRYZ8e0Qt3ie97a73 +DxLgAgedFRUbLRYiT0vNaYbainBsLWKpN/T8odwIg/smP0Khjp/ckV60cZTdBiPR +szBTPJESMUTu0VPntc4gWwGsmhZJg/Tt/qP08XYo3VxNYBegyuWwNR66zDWvwvGH +muMv5UchuDxp6Rt3JkIO4voMT1JSjWy9p8krkPEE4V6PxAagLjdZSkt92wVLiK5x +y5gNrtPhU45YdRAKHr36OvJBJQ42CDaZ6nzrzghcIp9CZ7ANHrI+QLRM/csz+AGA +szSp6S4mc1lnxxfbOhPPpebZPn0nIAXoZnnoVKdrxBVedPQHT59ZFvKTQ9Fs7gd3 +sYNuc7tJGFGC2CxBH4ANDpOQkc5q9JJ1HSGrXU3juxIiRgfA26Q22S9c71dXjElw +Ri584QH+bL6kkYmm8xpKF6TVwhwu5xx/jBPrbWqFrtbvLNrnfPoapTihBfdIhkT6 +nmgawbBHA02D5xEqB5SU3WJu +=eJNx +-----END PGP PUBLIC KEY BLOCK----- +``` diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json new file mode 100644 index 000000000..98862ee46 --- /dev/null +++ b/vendor/ramsey/collection/composer.json @@ -0,0 +1,102 @@ +{ + "name": "ramsey/collection", + "type": "library", + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "license": "MIT", + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "config": { + "sort-packages": true + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Ramsey\\Console\\": "resources/console/", + "Ramsey\\Collection\\Test\\": "tests/", + "Ramsey\\Test\\Generics\\": "tests/generics/" + }, + "files": [ + "vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php" + ] + }, + "scripts": { + "post-autoload-dump": "captainhook install --ansi -f -s", + "dev:analyze": [ + "@dev:analyze:phpstan", + "@dev:analyze:psalm" + ], + "dev:analyze:phpstan": "phpstan --memory-limit=1G analyse", + "dev:analyze:psalm": "psalm --diff --config=psalm.xml", + "dev:build:clean": "git clean -fX build/.", + "dev:build:clear-cache": "git clean -fX build/cache/.", + "dev:lint": "phpcs --cache=build/cache/phpcs.cache", + "dev:lint:fix": "./bin/lint-fix.sh", + "dev:repl": [ + "echo ; echo 'Type ./bin/repl to start the REPL.'" + ], + "dev:test": "phpunit", + "dev:test:all": [ + "@dev:lint", + "@dev:analyze", + "@dev:test" + ], + "dev:test:coverage:ci": "phpunit --coverage-clover build/logs/clover.xml", + "dev:test:coverage:html": "phpunit --coverage-html build/coverage", + "test": "@dev:test:all" + }, + "scripts-descriptions": { + "dev:analyze": "Performs static analysis on the code base.", + "dev:analyze:phpstan": "Runs the PHPStan static analyzer.", + "dev:analyze:psalm": "Runs the Psalm static analyzer.", + "dev:build:clean": "Removes everything not under version control from the build directory.", + "dev:build:clear-cache": "Removes everything not under version control from build/cache/.", + "dev:lint": "Checks all source code for coding standards issues.", + "dev:lint:fix": "Checks source code for coding standards issues and fixes them, if possible.", + "dev:repl": "Note: Use ./bin/repl to run the REPL.", + "dev:test": "Runs the full unit test suite.", + "dev:test:all": "Runs linting, static analysis, and unit tests.", + "dev:test:coverage:ci": "Runs the unit test suite and generates a Clover coverage report.", + "dev:test:coverage:html": "Runs the unit tests suite and generates an HTML coverage report.", + "test": "Shortcut to run the full test suite." + } +} diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php new file mode 100644 index 000000000..d72dbe697 --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractArray.php @@ -0,0 +1,209 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use ArrayIterator; +use Traversable; + +use function serialize; +use function unserialize; + +/** + * This class provides a basic implementation of `ArrayInterface`, to minimize + * the effort required to implement this interface. + * + * @template T + * @implements ArrayInterface<T> + */ +abstract class AbstractArray implements ArrayInterface +{ + /** + * The items of this array. + * + * @var array<array-key, T> + */ + protected $data = []; + + /** + * Constructs a new array object. + * + * @param array<array-key, T> $data The initial items to add to this array. + */ + public function __construct(array $data = []) + { + // Invoke offsetSet() for each value added; in this way, sub-classes + // may provide additional logic about values added to the array object. + foreach ($data as $key => $value) { + $this[$key] = $value; + } + } + + /** + * Returns an iterator for this array. + * + * @link http://php.net/manual/en/iteratoraggregate.getiterator.php IteratorAggregate::getIterator() + * + * @return Traversable<array-key, T> + */ + public function getIterator(): Traversable + { + return new ArrayIterator($this->data); + } + + /** + * Returns `true` if the given offset exists in this array. + * + * @link http://php.net/manual/en/arrayaccess.offsetexists.php ArrayAccess::offsetExists() + * + * @param array-key $offset The offset to check. + */ + public function offsetExists($offset): bool + { + return isset($this->data[$offset]); + } + + /** + * Returns the value at the specified offset. + * + * @link http://php.net/manual/en/arrayaccess.offsetget.php ArrayAccess::offsetGet() + * + * @param array-key $offset The offset for which a value should be returned. + * + * @return T|null the value stored at the offset, or null if the offset + * does not exist. + * + * @psalm-suppress InvalidAttribute + */ + #[\ReturnTypeWillChange] // phpcs:ignore + public function offsetGet($offset) + { + return $this->data[$offset] ?? null; + } + + /** + * Sets the given value to the given offset in the array. + * + * @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet() + * + * @param array-key|null $offset The offset to set. If `null`, the value may be + * set at a numerically-indexed offset. + * @param T $value The value to set at the given offset. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offsetSet($offset, $value): void + { + if ($offset === null) { + $this->data[] = $value; + } else { + $this->data[$offset] = $value; + } + } + + /** + * Removes the given offset and its value from the array. + * + * @link http://php.net/manual/en/arrayaccess.offsetunset.php ArrayAccess::offsetUnset() + * + * @param array-key $offset The offset to remove from the array. + */ + public function offsetUnset($offset): void + { + unset($this->data[$offset]); + } + + /** + * Returns a serialized string representation of this array object. + * + * @deprecated The Serializable interface will go away in PHP 9. + * + * @link http://php.net/manual/en/serializable.serialize.php Serializable::serialize() + * + * @return string a PHP serialized string. + */ + public function serialize(): string + { + return serialize($this->data); + } + + /** + * Returns data suitable for PHP serialization. + * + * @link https://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.serialize + * @link https://www.php.net/serialize + * + * @return array<array-key, T> + */ + public function __serialize(): array + { + return $this->data; + } + + /** + * Converts a serialized string representation into an instance object. + * + * @deprecated The Serializable interface will go away in PHP 9. + * + * @link http://php.net/manual/en/serializable.unserialize.php Serializable::unserialize() + * + * @param string $serialized A PHP serialized string to unserialize. + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + */ + public function unserialize($serialized): void + { + /** @var array<array-key, T> $data */ + $data = unserialize($serialized, ['allowed_classes' => false]); + + $this->data = $data; + } + + /** + * Adds unserialized data to the object. + * + * @param array<array-key, T> $data + */ + public function __unserialize(array $data): void + { + $this->data = $data; + } + + /** + * Returns the number of items in this array. + * + * @link http://php.net/manual/en/countable.count.php Countable::count() + */ + public function count(): int + { + return count($this->data); + } + + public function clear(): void + { + $this->data = []; + } + + /** + * @inheritDoc + */ + public function toArray(): array + { + return $this->data; + } + + public function isEmpty(): bool + { + return count($this->data) === 0; + } +} diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php new file mode 100644 index 000000000..d2cd1151c --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractCollection.php @@ -0,0 +1,318 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Closure; +use Ramsey\Collection\Exception\CollectionMismatchException; +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\InvalidSortOrderException; +use Ramsey\Collection\Exception\OutOfBoundsException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueExtractorTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +use function array_filter; +use function array_map; +use function array_merge; +use function array_search; +use function array_udiff; +use function array_uintersect; +use function current; +use function end; +use function in_array; +use function is_int; +use function reset; +use function sprintf; +use function unserialize; +use function usort; + +/** + * This class provides a basic implementation of `CollectionInterface`, to + * minimize the effort required to implement this interface + * + * @template T + * @extends AbstractArray<T> + * @implements CollectionInterface<T> + */ +abstract class AbstractCollection extends AbstractArray implements CollectionInterface +{ + use TypeTrait; + use ValueToStringTrait; + use ValueExtractorTrait; + + /** + * @inheritDoc + */ + public function add($element): bool + { + $this[] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function contains($element, bool $strict = true): bool + { + return in_array($element, $this->data, $strict); + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value) + ); + } + + if ($offset === null) { + $this->data[] = $value; + } else { + $this->data[$offset] = $value; + } + } + + /** + * @inheritDoc + */ + public function remove($element): bool + { + if (($position = array_search($element, $this->data, true)) !== false) { + unset($this->data[$position]); + + return true; + } + + return false; + } + + /** + * @inheritDoc + */ + public function column(string $propertyOrMethod): array + { + $temp = []; + + foreach ($this->data as $item) { + /** @var mixed $value */ + $value = $this->extractValue($item, $propertyOrMethod); + + /** @psalm-suppress MixedAssignment */ + $temp[] = $value; + } + + return $temp; + } + + /** + * @inheritDoc + */ + public function first() + { + if ($this->isEmpty()) { + throw new OutOfBoundsException('Can\'t determine first item. Collection is empty'); + } + + reset($this->data); + + /** @var T $first */ + $first = current($this->data); + + return $first; + } + + /** + * @inheritDoc + */ + public function last() + { + if ($this->isEmpty()) { + throw new OutOfBoundsException('Can\'t determine last item. Collection is empty'); + } + + /** @var T $item */ + $item = end($this->data); + reset($this->data); + + return $item; + } + + public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): CollectionInterface + { + if (!in_array($order, [self::SORT_ASC, self::SORT_DESC], true)) { + throw new InvalidSortOrderException('Invalid sort order given: ' . $order); + } + + $collection = clone $this; + + usort( + $collection->data, + /** + * @param T $a + * @param T $b + */ + function ($a, $b) use ($propertyOrMethod, $order): int { + /** @var mixed $aValue */ + $aValue = $this->extractValue($a, $propertyOrMethod); + + /** @var mixed $bValue */ + $bValue = $this->extractValue($b, $propertyOrMethod); + + return ($aValue <=> $bValue) * ($order === self::SORT_DESC ? -1 : 1); + } + ); + + return $collection; + } + + public function filter(callable $callback): CollectionInterface + { + $collection = clone $this; + $collection->data = array_merge([], array_filter($collection->data, $callback)); + + return $collection; + } + + /** + * {@inheritdoc} + */ + public function where(string $propertyOrMethod, $value): CollectionInterface + { + return $this->filter(function ($item) use ($propertyOrMethod, $value) { + /** @var mixed $accessorValue */ + $accessorValue = $this->extractValue($item, $propertyOrMethod); + + return $accessorValue === $value; + }); + } + + public function map(callable $callback): CollectionInterface + { + return new Collection('mixed', array_map($callback, $this->data)); + } + + public function diff(CollectionInterface $other): CollectionInterface + { + $this->compareCollectionTypes($other); + + $diffAtoB = array_udiff($this->data, $other->toArray(), $this->getComparator()); + $diffBtoA = array_udiff($other->toArray(), $this->data, $this->getComparator()); + + /** @var array<array-key, T> $diff */ + $diff = array_merge($diffAtoB, $diffBtoA); + + $collection = clone $this; + $collection->data = $diff; + + return $collection; + } + + public function intersect(CollectionInterface $other): CollectionInterface + { + $this->compareCollectionTypes($other); + + /** @var array<array-key, T> $intersect */ + $intersect = array_uintersect($this->data, $other->toArray(), $this->getComparator()); + + $collection = clone $this; + $collection->data = $intersect; + + return $collection; + } + + public function merge(CollectionInterface ...$collections): CollectionInterface + { + $mergedCollection = clone $this; + + foreach ($collections as $index => $collection) { + if (!$collection instanceof static) { + throw new CollectionMismatchException( + sprintf('Collection with index %d must be of type %s', $index, static::class) + ); + } + + // When using generics (Collection.php, Set.php, etc), + // we also need to make sure that the internal types match each other + if ($collection->getType() !== $this->getType()) { + throw new CollectionMismatchException( + sprintf('Collection items in collection with index %d must be of type %s', $index, $this->getType()) + ); + } + + foreach ($collection as $key => $value) { + if (is_int($key)) { + $mergedCollection[] = $value; + } else { + $mergedCollection[$key] = $value; + } + } + } + + return $mergedCollection; + } + + /** + * @inheritDoc + */ + public function unserialize($serialized): void + { + /** @var array<array-key, T> $data */ + $data = unserialize($serialized, ['allowed_classes' => [$this->getType()]]); + + $this->data = $data; + } + + /** + * @param CollectionInterface<T> $other + */ + private function compareCollectionTypes(CollectionInterface $other): void + { + if (!$other instanceof static) { + throw new CollectionMismatchException('Collection must be of type ' . static::class); + } + + // When using generics (Collection.php, Set.php, etc), + // we also need to make sure that the internal types match each other + if ($other->getType() !== $this->getType()) { + throw new CollectionMismatchException('Collection items must be of type ' . $this->getType()); + } + } + + private function getComparator(): Closure + { + return /** + * @param T $a + * @param T $b + */ + function ($a, $b): int { + // If the two values are object, we convert them to unique scalars. + // If the collection contains mixed values (unlikely) where some are objects + // and some are not, we leave them as they are. + // The comparator should still work and the result of $a < $b should + // be consistent but unpredictable since not documented. + if (is_object($a) && is_object($b)) { + $a = spl_object_id($a); + $b = spl_object_id($b); + } + + return $a === $b ? 0 : ($a < $b ? 1 : -1); + }; + } +} diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php new file mode 100644 index 000000000..1126ccb0a --- /dev/null +++ b/vendor/ramsey/collection/src/AbstractSet.php @@ -0,0 +1,50 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * This class contains the basic implementation of a collection that does not + * allow duplicated values (a set), to minimize the effort required to implement + * this specific type of collection. + * + * @template T + * @extends AbstractCollection<T> + */ +abstract class AbstractSet extends AbstractCollection +{ + /** + * @inheritDoc + */ + public function add($element): bool + { + if ($this->contains($element)) { + return false; + } + + return parent::add($element); + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->contains($value)) { + return; + } + + parent::offsetSet($offset, $value); + } +} diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php new file mode 100644 index 000000000..27af6102b --- /dev/null +++ b/vendor/ramsey/collection/src/ArrayInterface.php @@ -0,0 +1,51 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use ArrayAccess; +use Countable; +use IteratorAggregate; +use Serializable; + +/** + * `ArrayInterface` provides traversable array functionality to data types. + * + * @template T + * @extends ArrayAccess<array-key, T> + * @extends IteratorAggregate<array-key, T> + */ +interface ArrayInterface extends + ArrayAccess, + Countable, + IteratorAggregate, + Serializable +{ + /** + * Removes all items from this array. + */ + public function clear(): void; + + /** + * Returns a native PHP array representation of this array object. + * + * @return array<array-key, T> + */ + public function toArray(): array; + + /** + * Returns `true` if this array is empty. + */ + public function isEmpty(): bool; +} diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php new file mode 100644 index 000000000..1299c12c2 --- /dev/null +++ b/vendor/ramsey/collection/src/Collection.php @@ -0,0 +1,106 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A collection represents a group of objects. + * + * Each object in the collection is of a specific, defined type. + * + * This is a direct implementation of `CollectionInterface`, provided for + * the sake of convenience. + * + * Example usage: + * + * ``` php + * $collection = new \Ramsey\Collection\Collection('My\\Foo'); + * $collection->add(new \My\Foo()); + * $collection->add(new \My\Foo()); + * + * foreach ($collection as $foo) { + * // Do something with $foo + * } + * ``` + * + * It is preferable to subclass `AbstractCollection` to create your own typed + * collections. For example: + * + * ``` php + * namespace My\Foo; + * + * class FooCollection extends \Ramsey\Collection\AbstractCollection + * { + * public function getType() + * { + * return 'My\\Foo'; + * } + * } + * ``` + * + * And then use it similarly to the earlier example: + * + * ``` php + * $fooCollection = new \My\Foo\FooCollection(); + * $fooCollection->add(new \My\Foo()); + * $fooCollection->add(new \My\Foo()); + * + * foreach ($fooCollection as $foo) { + * // Do something with $foo + * } + * ``` + * + * The benefit with this approach is that you may do type-checking on the + * collection object: + * + * ``` php + * if ($collection instanceof \My\Foo\FooCollection) { + * // the collection is a collection of My\Foo objects + * } + * ``` + * + * @template T + * @extends AbstractCollection<T> + */ +class Collection extends AbstractCollection +{ + /** + * The type of elements stored in this collection. + * + * A collection's type is immutable once it is set. For this reason, this + * property is set private. + * + * @var string + */ + private $collectionType; + + /** + * Constructs a collection object of the specified type, optionally with the + * specified data. + * + * @param string $collectionType The type (FQCN) associated with this + * collection. + * @param array<array-key, T> $data The initial items to store in the collection. + */ + public function __construct(string $collectionType, array $data = []) + { + $this->collectionType = $collectionType; + parent::__construct($data); + } + + public function getType(): string + { + return $this->collectionType; + } +} diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php new file mode 100644 index 000000000..aa86feb04 --- /dev/null +++ b/vendor/ramsey/collection/src/CollectionInterface.php @@ -0,0 +1,205 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A collection represents a group of objects, known as its elements. + * + * Some collections allow duplicate elements and others do not. Some are ordered + * and others unordered. + * + * @template T + * @extends ArrayInterface<T> + */ +interface CollectionInterface extends ArrayInterface +{ + /** + * Ascending sort type. + */ + public const SORT_ASC = 'asc'; + + /** + * Descending sort type. + */ + public const SORT_DESC = 'desc'; + + /** + * Ensures that this collection contains the specified element (optional + * operation). + * + * Returns `true` if this collection changed as a result of the call. + * (Returns `false` if this collection does not permit duplicates and + * already contains the specified element.) + * + * Collections that support this operation may place limitations on what + * elements may be added to this collection. In particular, some + * collections will refuse to add `null` elements, and others will impose + * restrictions on the type of elements that may be added. Collection + * classes should clearly specify in their documentation any restrictions + * on what elements may be added. + * + * If a collection refuses to add a particular element for any reason other + * than that it already contains the element, it must throw an exception + * (rather than returning `false`). This preserves the invariant that a + * collection always contains the specified element after this call returns. + * + * @param T $element The element to add to the collection. + * + * @return bool `true` if this collection changed as a result of the call. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function add($element): bool; + + /** + * Returns `true` if this collection contains the specified element. + * + * @param T $element The element to check whether the collection contains. + * @param bool $strict Whether to perform a strict type check on the value. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function contains($element, bool $strict = true): bool; + + /** + * Returns the type associated with this collection. + */ + public function getType(): string; + + /** + * Removes a single instance of the specified element from this collection, + * if it is present. + * + * @param T $element The element to remove from the collection. + * + * @return bool `true` if an element was removed as a result of this call. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function remove($element): bool; + + /** + * Returns the values from the given property or method. + * + * @param string $propertyOrMethod The property or method name to filter by. + * + * @return list<mixed> + */ + public function column(string $propertyOrMethod): array; + + /** + * Returns the first item of the collection. + * + * @return T + */ + public function first(); + + /** + * Returns the last item of the collection. + * + * @return T + */ + public function last(); + + /** + * Sort the collection by a property or method with the given sort order. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * @param string $propertyOrMethod The property or method to sort by. + * @param string $order The sort order for the resulting collection (one of + * this interface's `SORT_*` constants). + * + * @return CollectionInterface<T> + */ + public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): self; + + /** + * Filter out items of the collection which don't match the criteria of + * given callback. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation} + * for examples of how the `$callback` parameter works. + * + * @param callable(T):bool $callback A callable to use for filtering elements. + * + * @return CollectionInterface<T> + */ + public function filter(callable $callback): self; + + /** + * Create a new collection where items match the criteria of given callback. + * + * This will always leave the original collection untouched and will return + * a new one. + * + * @param string $propertyOrMethod The property or method to evaluate. + * @param mixed $value The value to match. + * + * @return CollectionInterface<T> + */ + public function where(string $propertyOrMethod, $value): self; + + /** + * Apply a given callback method on each item of the collection. + * + * This will always leave the original collection untouched. The new + * collection is created by mapping the callback to each item of the + * original collection. + * + * See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation} + * for examples of how the `$callback` parameter works. + * + * @param callable(T):TCallbackReturn $callback A callable to apply to each + * item of the collection. + * + * @return CollectionInterface<TCallbackReturn> + * + * @template TCallbackReturn + */ + public function map(callable $callback): self; + + /** + * Create a new collection with divergent items between current and given + * collection. + * + * @param CollectionInterface<T> $other The collection to check for divergent + * items. + * + * @return CollectionInterface<T> + */ + public function diff(CollectionInterface $other): self; + + /** + * Create a new collection with intersecting item between current and given + * collection. + * + * @param CollectionInterface<T> $other The collection to check for + * intersecting items. + * + * @return CollectionInterface<T> + */ + public function intersect(CollectionInterface $other): self; + + /** + * Merge current items and items of given collections into a new one. + * + * @param CollectionInterface<T> ...$collections The collections to merge. + * + * @return CollectionInterface<T> + */ + public function merge(CollectionInterface ...$collections): self; +} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php new file mode 100644 index 000000000..c9c59502d --- /dev/null +++ b/vendor/ramsey/collection/src/DoubleEndedQueue.php @@ -0,0 +1,187 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\NoSuchElementException; + +/** + * This class provides a basic implementation of `DoubleEndedQueueInterface`, to + * minimize the effort required to implement this interface. + * + * @template T + * @extends Queue<T> + * @implements DoubleEndedQueueInterface<T> + */ +class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface +{ + /** + * Index of the last element in the queue. + * + * @var int + */ + private $tail = -1; + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value) + ); + } + + $this->tail++; + + $this->data[$this->tail] = $value; + } + + /** + * @inheritDoc + */ + public function addFirst($element): bool + { + if ($this->checkType($this->getType(), $element) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($element) + ); + } + + $this->index--; + + $this->data[$this->index] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function addLast($element): bool + { + return $this->add($element); + } + + /** + * @inheritDoc + */ + public function offerFirst($element): bool + { + try { + return $this->addFirst($element); + } catch (InvalidArgumentException $e) { + return false; + } + } + + /** + * @inheritDoc + */ + public function offerLast($element): bool + { + return $this->offer($element); + } + + /** + * @inheritDoc + */ + public function removeFirst() + { + return $this->remove(); + } + + /** + * @inheritDoc + */ + public function removeLast() + { + $tail = $this->pollLast(); + + if ($tail === null) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $tail; + } + + /** + * @inheritDoc + */ + public function pollFirst() + { + return $this->poll(); + } + + /** + * @inheritDoc + */ + public function pollLast() + { + if ($this->count() === 0) { + return null; + } + + $tail = $this[$this->tail]; + + unset($this[$this->tail]); + $this->tail--; + + return $tail; + } + + /** + * @inheritDoc + */ + public function firstElement() + { + return $this->element(); + } + + /** + * @inheritDoc + */ + public function lastElement() + { + if ($this->count() === 0) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $this->data[$this->tail]; + } + + /** + * @inheritDoc + */ + public function peekFirst() + { + return $this->peek(); + } + + /** + * @inheritDoc + */ + public function peekLast() + { + if ($this->count() === 0) { + return null; + } + + return $this->data[$this->tail]; + } +} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php new file mode 100644 index 000000000..d7df53469 --- /dev/null +++ b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php @@ -0,0 +1,316 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\NoSuchElementException; + +/** + * A linear collection that supports element insertion and removal at both ends. + * + * Most `DoubleEndedQueueInterface` implementations place no fixed limits on the + * number of elements they may contain, but this interface supports + * capacity-restricted double-ended queues as well as those with no fixed size + * limit. + * + * This interface defines methods to access the elements at both ends of the + * double-ended queue. Methods are provided to insert, remove, and examine the + * element. Each of these methods exists in two forms: one throws an exception + * if the operation fails, the other returns a special value (either `null` or + * `false`, depending on the operation). The latter form of the insert operation + * is designed specifically for use with capacity-restricted implementations; in + * most implementations, insert operations cannot fail. + * + * The twelve methods described above are summarized in the following table: + * + * <table> + * <caption>Summary of DoubleEndedQueueInterface methods</caption> + * <thead> + * <tr> + * <th></th> + * <th colspan=2>First Element (Head)</th> + * <th colspan=2>Last Element (Tail)</th> + * </tr> + * <tr> + * <td></td> + * <td><em>Throws exception</em></td> + * <td><em>Special value</em></td> + * <td><em>Throws exception</em></td> + * <td><em>Special value</em></td> + * </tr> + * </thead> + * <tbody> + * <tr> + * <th>Insert</th> + * <td><code>addFirst()</code></td> + * <td><code>offerFirst()</code></td> + * <td><code>addLast()</code></td> + * <td><code>offerLast()</code></td> + * </tr> + * <tr> + * <th>Remove</th> + * <td><code>removeFirst()</code></td> + * <td><code>pollFirst()</code></td> + * <td><code>removeLast()</code></td> + * <td><code>pollLast()</code></td> + * </tr> + * <tr> + * <th>Examine</th> + * <td><code>firstElement()</code></td> + * <td><code>peekFirst()</code></td> + * <td><code>lastElement()</code></td> + * <td><code>peekLast()</code></td> + * </tr> + * </tbody> + * </table> + * + * This interface extends the `QueueInterface`. When a double-ended queue is + * used as a queue, FIFO (first-in-first-out) behavior results. Elements are + * added at the end of the double-ended queue and removed from the beginning. + * The methods inherited from the `QueueInterface` are precisely equivalent to + * `DoubleEndedQueueInterface` methods as indicated in the following table: + * + * <table> + * <caption>Comparison of QueueInterface and DoubleEndedQueueInterface methods</caption> + * <thead> + * <tr> + * <th>QueueInterface Method</th> + * <th>DoubleEndedQueueInterface Method</th> + * </tr> + * </thead> + * <tbody> + * <tr> + * <td><code>add()</code></td> + * <td><code>addLast()</code></td> + * </tr> + * <tr> + * <td><code>offer()</code></td> + * <td><code>offerLast()</code></td> + * </tr> + * <tr> + * <td><code>remove()</code></td> + * <td><code>removeFirst()</code></td> + * </tr> + * <tr> + * <td><code>poll()</code></td> + * <td><code>pollFirst()</code></td> + * </tr> + * <tr> + * <td><code>element()</code></td> + * <td><code>firstElement()</code></td> + * </tr> + * <tr> + * <td><code>peek()</code></td> + * <td><code>peekFirst()</code></td> + * </tr> + * </tbody> + * </table> + * + * Double-ended queues can also be used as LIFO (last-in-first-out) stacks. When + * a double-ended queue is used as a stack, elements are pushed and popped from + * the beginning of the double-ended queue. Stack concepts are precisely + * equivalent to `DoubleEndedQueueInterface` methods as indicated in the table + * below: + * + * <table> + * <caption>Comparison of stack concepts and DoubleEndedQueueInterface methods</caption> + * <thead> + * <tr> + * <th>Stack concept</th> + * <th>DoubleEndedQueueInterface Method</th> + * </tr> + * </thead> + * <tbody> + * <tr> + * <td><em>push</em></td> + * <td><code>addFirst()</code></td> + * </tr> + * <tr> + * <td><em>pop</em></td> + * <td><code>removeFirst()</code></td> + * </tr> + * <tr> + * <td><em>peek</em></td> + * <td><code>peekFirst()</code></td> + * </tr> + * </tbody> + * </table> + * + * Note that the `peek()` method works equally well when a double-ended queue is + * used as a queue or a stack; in either case, elements are drawn from the + * beginning of the double-ended queue. + * + * While `DoubleEndedQueueInterface` implementations are not strictly required + * to prohibit the insertion of `null` elements, they are strongly encouraged to + * do so. Users of any `DoubleEndedQueueInterface` implementations that do allow + * `null` elements are strongly encouraged *not* to take advantage of the + * ability to insert nulls. This is so because `null` is used as a special + * return value by various methods to indicated that the double-ended queue is + * empty. + * + * @template T + * @extends QueueInterface<T> + */ +interface DoubleEndedQueueInterface extends QueueInterface +{ + /** + * Inserts the specified element at the front of this queue if it is + * possible to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted double-ended queue, it is generally + * preferable to use the `offerFirst()` method. + * + * @param T $element The element to add to the front of this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws \RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function addFirst($element): bool; + + /** + * Inserts the specified element at the end of this queue if it is possible + * to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted double-ended queue, it is generally + * preferable to use the `offerLast()` method. + * + * This method is equivalent to `add()`. + * + * @param T $element The element to add to the end of this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws \RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function addLast($element): bool; + + /** + * Inserts the specified element at the front of this queue if it is + * possible to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `addFirst()`, which can fail to insert an element only by + * throwing an exception. + * + * @param T $element The element to add to the front of this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offerFirst($element): bool; + + /** + * Inserts the specified element at the end of this queue if it is possible + * to do so immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `addLast()` which can fail to insert an element only by + * throwing an exception. + * + * @param T $element The element to add to the end of this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offerLast($element): bool; + + /** + * Retrieves and removes the head of this queue. + * + * This method differs from `pollFirst()` only in that it throws an + * exception if this queue is empty. + * + * @return T the first element in this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function removeFirst(); + + /** + * Retrieves and removes the tail of this queue. + * + * This method differs from `pollLast()` only in that it throws an exception + * if this queue is empty. + * + * @return T the last element in this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function removeLast(); + + /** + * Retrieves and removes the head of this queue, or returns `null` if this + * queue is empty. + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function pollFirst(); + + /** + * Retrieves and removes the tail of this queue, or returns `null` if this + * queue is empty. + * + * @return T|null the tail of this queue, or `null` if this queue is empty. + */ + public function pollLast(); + + /** + * Retrieves, but does not remove, the head of this queue. + * + * This method differs from `peekFirst()` only in that it throws an + * exception if this queue is empty. + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function firstElement(); + + /** + * Retrieves, but does not remove, the tail of this queue. + * + * This method differs from `peekLast()` only in that it throws an exception + * if this queue is empty. + * + * @return T the tail of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function lastElement(); + + /** + * Retrieves, but does not remove, the head of this queue, or returns `null` + * if this queue is empty. + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function peekFirst(); + + /** + * Retrieves, but does not remove, the tail of this queue, or returns `null` + * if this queue is empty. + * + * @return T|null the tail of this queue, or `null` if this queue is empty. + */ + public function peekLast(); +} diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php new file mode 100644 index 000000000..d4b335f45 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to operate on collections of differing types. + */ +class CollectionMismatchException extends \RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..dcc3eac60 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown to indicate an argument is not of the expected type. + */ +class InvalidArgumentException extends \InvalidArgumentException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php new file mode 100644 index 000000000..9337ccc66 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to use a sort order that is not recognized. + */ +class InvalidSortOrderException extends \RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php new file mode 100644 index 000000000..9debe8f66 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to access an element that does not exist. + */ +class NoSuchElementException extends \RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php new file mode 100644 index 000000000..4e9d16fa3 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to access an element out of the range of the collection. + */ +class OutOfBoundsException extends \OutOfBoundsException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php new file mode 100644 index 000000000..8f45e5836 --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown to indicate that the requested operation is not supported. + */ +class UnsupportedOperationException extends \RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php new file mode 100644 index 000000000..f6c6cb4ec --- /dev/null +++ b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php @@ -0,0 +1,22 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Exception; + +/** + * Thrown when attempting to extract a value for a method or property that does not exist. + */ +class ValueExtractionException extends \RuntimeException +{ +} diff --git a/vendor/ramsey/collection/src/GenericArray.php b/vendor/ramsey/collection/src/GenericArray.php new file mode 100644 index 000000000..2b079aa5e --- /dev/null +++ b/vendor/ramsey/collection/src/GenericArray.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * `GenericArray` represents a standard array object. + * + * @extends AbstractArray<mixed> + */ +class GenericArray extends AbstractArray +{ +} diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php new file mode 100644 index 000000000..ae9f2fe61 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AbstractMap.php @@ -0,0 +1,162 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\AbstractArray; +use Ramsey\Collection\Exception\InvalidArgumentException; + +use function array_key_exists; +use function array_keys; +use function in_array; + +/** + * This class provides a basic implementation of `MapInterface`, to minimize the + * effort required to implement this interface. + * + * @template T + * @extends AbstractArray<T> + * @implements MapInterface<T> + */ +abstract class AbstractMap extends AbstractArray implements MapInterface +{ + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true) + ); + } + + $this->data[$offset] = $value; + } + + /** + * @inheritDoc + */ + public function containsKey($key): bool + { + return array_key_exists($key, $this->data); + } + + /** + * @inheritDoc + */ + public function containsValue($value): bool + { + return in_array($value, $this->data, true); + } + + /** + * @inheritDoc + */ + public function keys(): array + { + return array_keys($this->data); + } + + /** + * @inheritDoc + */ + public function get($key, $defaultValue = null) + { + if (!$this->containsKey($key)) { + return $defaultValue; + } + + return $this[$key]; + } + + /** + * @inheritDoc + */ + public function put($key, $value) + { + $previousValue = $this->get($key); + $this[$key] = $value; + + return $previousValue; + } + + /** + * @inheritDoc + */ + public function putIfAbsent($key, $value) + { + $currentValue = $this->get($key); + + if ($currentValue === null) { + $this[$key] = $value; + } + + return $currentValue; + } + + /** + * @inheritDoc + */ + public function remove($key) + { + $previousValue = $this->get($key); + unset($this[$key]); + + return $previousValue; + } + + /** + * @inheritDoc + */ + public function removeIf($key, $value): bool + { + if ($this->get($key) === $value) { + unset($this[$key]); + + return true; + } + + return false; + } + + /** + * @inheritDoc + */ + public function replace($key, $value) + { + $currentValue = $this->get($key); + + if ($this->containsKey($key)) { + $this[$key] = $value; + } + + return $currentValue; + } + + /** + * @inheritDoc + */ + public function replaceIf($key, $oldValue, $newValue): bool + { + if ($this->get($key) === $oldValue) { + $this[$key] = $newValue; + + return true; + } + + return false; + } +} diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php new file mode 100644 index 000000000..551d2e6c6 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php @@ -0,0 +1,69 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +/** + * This class provides a basic implementation of `TypedMapInterface`, to + * minimize the effort required to implement this interface. + * + * @template K + * @template T + * @extends AbstractMap<T> + * @implements TypedMapInterface<T> + */ +abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * @param K|null $offset + * @param T $value + * + * @inheritDoc + * + * @psalm-suppress MoreSpecificImplementedParamType + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true) + ); + } + + if ($this->checkType($this->getKeyType(), $offset) === false) { + throw new InvalidArgumentException( + 'Key must be of type ' . $this->getKeyType() . '; key is ' + . $this->toolValueToString($offset) + ); + } + + if ($this->checkType($this->getValueType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getValueType() . '; value is ' + . $this->toolValueToString($value) + ); + } + + /** @psalm-suppress MixedArgumentTypeCoercion */ + parent::offsetSet($offset, $value); + } +} diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php new file mode 100644 index 000000000..79a314d96 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php @@ -0,0 +1,25 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +/** + * `AssociativeArrayMap` represents a standard associative array object. + * + * @template T + * @extends AbstractMap<T> + */ +class AssociativeArrayMap extends AbstractMap +{ +} diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php new file mode 100644 index 000000000..6ed0b2967 --- /dev/null +++ b/vendor/ramsey/collection/src/Map/MapInterface.php @@ -0,0 +1,149 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\ArrayInterface; + +/** + * An object that maps keys to values. + * + * A map cannot contain duplicate keys; each key can map to at most one value. + * + * @template T + * @extends ArrayInterface<T> + */ +interface MapInterface extends ArrayInterface +{ + /** + * Returns `true` if this map contains a mapping for the specified key. + * + * @param array-key $key The key to check in the map. + */ + public function containsKey($key): bool; + + /** + * Returns `true` if this map maps one or more keys to the specified value. + * + * This performs a strict type check on the value. + * + * @param T $value The value to check in the map. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function containsValue($value): bool; + + /** + * Return an array of the keys contained in this map. + * + * @return list<array-key> + */ + public function keys(): array; + + /** + * Returns the value to which the specified key is mapped, `null` if this + * map contains no mapping for the key, or (optionally) `$defaultValue` if + * this map contains no mapping for the key. + * + * @param array-key $key The key to return from the map. + * @param T|null $defaultValue The default value to use if `$key` is not found. + * + * @return T|null the value or `null` if the key could not be found. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function get($key, $defaultValue = null); + + /** + * Associates the specified value with the specified key in this map. + * + * If the map previously contained a mapping for the key, the old value is + * replaced by the specified value. + * + * @param array-key $key The key to put or replace in the map. + * @param T $value The value to store at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function put($key, $value); + + /** + * Associates the specified value with the specified key in this map only if + * it is not already set. + * + * If there is already a value associated with `$key`, this returns that + * value without replacing it. + * + * @param array-key $key The key to put in the map. + * @param T $value The value to store at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function putIfAbsent($key, $value); + + /** + * Removes the mapping for a key from this map if it is present. + * + * @param array-key $key The key to remove from the map. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function remove($key); + + /** + * Removes the entry for the specified key only if it is currently mapped to + * the specified value. + * + * This performs a strict type check on the value. + * + * @param array-key $key The key to remove from the map. + * @param T $value The value to match. + * + * @return bool true if the value was removed. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function removeIf($key, $value): bool; + + /** + * Replaces the entry for the specified key only if it is currently mapped + * to some value. + * + * @param array-key $key The key to replace. + * @param T $value The value to set at `$key`. + * + * @return T|null the previous value associated with key, or `null` if + * there was no mapping for `$key`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function replace($key, $value); + + /** + * Replaces the entry for the specified key only if currently mapped to the + * specified value. + * + * This performs a strict type check on the value. + * + * @param array-key $key The key to remove from the map. + * @param T $oldValue The value to match. + * @param T $newValue The value to use as a replacement. + * + * @return bool true if the value was replaced. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function replaceIf($key, $oldValue, $newValue): bool; +} diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php new file mode 100644 index 000000000..9926ddd8c --- /dev/null +++ b/vendor/ramsey/collection/src/Map/NamedParameterMap.php @@ -0,0 +1,120 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +use function array_combine; +use function array_key_exists; +use function is_int; + +/** + * `NamedParameterMap` represents a mapping of values to a set of named keys + * that may optionally be typed + * + * @extends AbstractMap<mixed> + */ +class NamedParameterMap extends AbstractMap +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * Named parameters defined for this map. + * + * @var array<string, string> + */ + protected $namedParameters; + + /** + * Constructs a new `NamedParameterMap`. + * + * @param array<array-key, string> $namedParameters The named parameters defined for this map. + * @param array<array-key, mixed> $data An initial set of data to set on this map. + */ + public function __construct(array $namedParameters, array $data = []) + { + $this->namedParameters = $this->filterNamedParameters($namedParameters); + parent::__construct($data); + } + + /** + * Returns named parameters set for this `NamedParameterMap`. + * + * @return array<string, string> + */ + public function getNamedParameters(): array + { + return $this->namedParameters; + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value): void + { + if ($offset === null) { + throw new InvalidArgumentException( + 'Map elements are key/value pairs; a key must be provided for ' + . 'value ' . var_export($value, true) + ); + } + + if (!array_key_exists($offset, $this->namedParameters)) { + throw new InvalidArgumentException( + 'Attempting to set value for unconfigured parameter \'' + . $offset . '\'' + ); + } + + if ($this->checkType($this->namedParameters[$offset], $value) === false) { + throw new InvalidArgumentException( + 'Value for \'' . $offset . '\' must be of type ' + . $this->namedParameters[$offset] . '; value is ' + . $this->toolValueToString($value) + ); + } + + $this->data[$offset] = $value; + } + + /** + * Given an array of named parameters, constructs a proper mapping of + * named parameters to types. + * + * @param array<array-key, string> $namedParameters The named parameters to filter. + * + * @return array<string, string> + */ + protected function filterNamedParameters(array $namedParameters): array + { + $names = []; + $types = []; + + foreach ($namedParameters as $key => $value) { + if (is_int($key)) { + $names[] = $value; + $types[] = 'mixed'; + } else { + $names[] = $key; + $types[] = $value; + } + } + + return array_combine($names, $types) ?: []; + } +} diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php new file mode 100644 index 000000000..2e796377a --- /dev/null +++ b/vendor/ramsey/collection/src/Map/TypedMap.php @@ -0,0 +1,137 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +use Ramsey\Collection\Tool\TypeTrait; + +/** + * A `TypedMap` represents a map of elements where key and value are typed. + * + * Each element is identified by a key with defined type and a value of defined + * type. The keys of the map must be unique. The values on the map can be= + * repeated but each with its own different key. + * + * The most common case is to use a string type key, but it's not limited to + * this type of keys. + * + * This is a direct implementation of `TypedMapInterface`, provided for the sake + * of convenience. + * + * Example usage: + * + * ```php + * $map = new TypedMap('string', Foo::class); + * $map['x'] = new Foo(); + * foreach ($map as $key => $value) { + * // do something with $key, it will be a Foo::class + * } + * + * // this will throw an exception since key must be string + * $map[10] = new Foo(); + * + * // this will throw an exception since value must be a Foo + * $map['bar'] = 'bar'; + * + * // initialize map with contents + * $map = new TypedMap('string', Foo::class, [ + * new Foo(), new Foo(), new Foo() + * ]); + * ``` + * + * It is preferable to subclass `AbstractTypedMap` to create your own typed map + * implementation: + * + * ```php + * class FooTypedMap extends AbstractTypedMap + * { + * public function getKeyType() + * { + * return 'int'; + * } + * + * public function getValueType() + * { + * return Foo::class; + * } + * } + * ``` + * + * … but you also may use the `TypedMap` class: + * + * ```php + * class FooTypedMap extends TypedMap + * { + * public function __constructor(array $data = []) + * { + * parent::__construct('int', Foo::class, $data); + * } + * } + * ``` + * + * @template K + * @template T + * @extends AbstractTypedMap<K, T> + */ +class TypedMap extends AbstractTypedMap +{ + use TypeTrait; + + /** + * The data type of keys stored in this collection. + * + * A map key's type is immutable once it is set. For this reason, this + * property is set private. + * + * @var string data type of the map key. + */ + private $keyType; + + /** + * The data type of values stored in this collection. + * + * A map value's type is immutable once it is set. For this reason, this + * property is set private. + * + * @var string data type of the map value. + */ + private $valueType; + + /** + * Constructs a map object of the specified key and value types, + * optionally with the specified data. + * + * @param string $keyType The data type of the map's keys. + * @param string $valueType The data type of the map's values. + * @param array<K, T> $data The initial data to set for this map. + */ + public function __construct(string $keyType, string $valueType, array $data = []) + { + $this->keyType = $keyType; + $this->valueType = $valueType; + + /** @psalm-suppress MixedArgumentTypeCoercion */ + parent::__construct($data); + } + + public function getKeyType(): string + { + return $this->keyType; + } + + public function getValueType(): string + { + return $this->valueType; + } +} diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php new file mode 100644 index 000000000..0308109cc --- /dev/null +++ b/vendor/ramsey/collection/src/Map/TypedMapInterface.php @@ -0,0 +1,35 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Map; + +/** + * A `TypedMapInterface` represents a map of elements where key and value are + * typed. + * + * @template T + * @extends MapInterface<T> + */ +interface TypedMapInterface extends MapInterface +{ + /** + * Return the type used on the key. + */ + public function getKeyType(): string; + + /** + * Return the type forced on the values. + */ + public function getValueType(): string; +} diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php new file mode 100644 index 000000000..93e032b43 --- /dev/null +++ b/vendor/ramsey/collection/src/Queue.php @@ -0,0 +1,169 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\InvalidArgumentException; +use Ramsey\Collection\Exception\NoSuchElementException; +use Ramsey\Collection\Tool\TypeTrait; +use Ramsey\Collection\Tool\ValueToStringTrait; + +/** + * This class provides a basic implementation of `QueueInterface`, to minimize + * the effort required to implement this interface. + * + * @template T + * @extends AbstractArray<T> + * @implements QueueInterface<T> + */ +class Queue extends AbstractArray implements QueueInterface +{ + use TypeTrait; + use ValueToStringTrait; + + /** + * The type of elements stored in this queue. + * + * A queue's type is immutable once it is set. For this reason, this + * property is set private. + * + * @var string + */ + private $queueType; + + /** + * The index of the head of the queue. + * + * @var int + */ + protected $index = 0; + + /** + * Constructs a queue object of the specified type, optionally with the + * specified data. + * + * @param string $queueType The type (FQCN) associated with this queue. + * @param array<array-key, T> $data The initial items to store in the collection. + */ + public function __construct(string $queueType, array $data = []) + { + $this->queueType = $queueType; + parent::__construct($data); + } + + /** + * {@inheritDoc} + * + * Since arbitrary offsets may not be manipulated in a queue, this method + * serves only to fulfill the `ArrayAccess` interface requirements. It is + * invoked by other operations when adding values to the queue. + */ + public function offsetSet($offset, $value): void + { + if ($this->checkType($this->getType(), $value) === false) { + throw new InvalidArgumentException( + 'Value must be of type ' . $this->getType() . '; value is ' + . $this->toolValueToString($value) + ); + } + + $this->data[] = $value; + } + + /** + * @inheritDoc + */ + public function add($element): bool + { + $this[] = $element; + + return true; + } + + /** + * @inheritDoc + */ + public function element() + { + $element = $this->peek(); + + if ($element === null) { + throw new NoSuchElementException( + 'Can\'t return element from Queue. Queue is empty.' + ); + } + + return $element; + } + + /** + * @inheritDoc + */ + public function offer($element): bool + { + try { + return $this->add($element); + } catch (InvalidArgumentException $e) { + return false; + } + } + + /** + * @inheritDoc + */ + public function peek() + { + if ($this->count() === 0) { + return null; + } + + return $this[$this->index]; + } + + /** + * @inheritDoc + */ + public function poll() + { + if ($this->count() === 0) { + return null; + } + + $head = $this[$this->index]; + + unset($this[$this->index]); + $this->index++; + + return $head; + } + + /** + * @inheritDoc + */ + public function remove() + { + $head = $this->poll(); + + if ($head === null) { + throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.'); + } + + return $head; + } + + public function getType(): string + { + return $this->queueType; + } +} diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php new file mode 100644 index 000000000..8c7383df8 --- /dev/null +++ b/vendor/ramsey/collection/src/QueueInterface.php @@ -0,0 +1,203 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +use Ramsey\Collection\Exception\NoSuchElementException; + +/** + * A queue is a collection in which the entities in the collection are kept in + * order. + * + * The principal operations on the queue are the addition of entities to the end + * (tail), also known as *enqueue*, and removal of entities from the front + * (head), also known as *dequeue*. This makes the queue a first-in-first-out + * (FIFO) data structure. + * + * Besides basic array operations, queues provide additional insertion, + * extraction, and inspection operations. Each of these methods exists in two + * forms: one throws an exception if the operation fails, the other returns a + * special value (either `null` or `false`, depending on the operation). The + * latter form of the insert operation is designed specifically for use with + * capacity-restricted `QueueInterface` implementations; in most + * implementations, insert operations cannot fail. + * + * <table> + * <caption>Summary of QueueInterface methods</caption> + * <thead> + * <tr> + * <td></td> + * <td><em>Throws exception</em></td> + * <td><em>Returns special value</em></td> + * </tr> + * </thead> + * <tbody> + * <tr> + * <th>Insert</th> + * <td><code>add()</code></td> + * <td><code>offer()</code></td> + * </tr> + * <tr> + * <th>Remove</th> + * <td><code>remove()</code></td> + * <td><code>poll()</code></td> + * </tr> + * <tr> + * <th>Examine</th> + * <td><code>element()</code></td> + * <td><code>peek()</code></td> + * </tr> + * </tbody> + * </table> + * + * Queues typically, but do not necessarily, order elements in a FIFO + * (first-in-first-out) manner. Among the exceptions are priority queues, which + * order elements according to a supplied comparator, or the elements' natural + * ordering, and LIFO queues (or stacks) which order the elements LIFO + * (last-in-first-out). Whatever the ordering used, the head of the queue is + * that element which would be removed by a call to remove() or poll(). In a + * FIFO queue, all new elements are inserted at the tail of the queue. Other + * kinds of queues may use different placement rules. Every `QueueInterface` + * implementation must specify its ordering properties. + * + * The `offer()` method inserts an element if possible, otherwise returning + * `false`. This differs from the `add()` method, which can fail to add an + * element only by throwing an unchecked exception. The `offer()` method is + * designed for use when failure is a normal, rather than exceptional + * occurrence, for example, in fixed-capacity (or "bounded") queues. + * + * The `remove()` and `poll()` methods remove and return the head of the queue. + * Exactly which element is removed from the queue is a function of the queue's + * ordering policy, which differs from implementation to implementation. The + * `remove()` and `poll()` methods differ only in their behavior when the queue + * is empty: the `remove()` method throws an exception, while the `poll()` + * method returns `null`. + * + * The `element()` and `peek()` methods return, but do not remove, the head of + * the queue. + * + * `QueueInterface` implementations generally do not allow insertion of `null` + * elements, although some implementations do not prohibit insertion of `null`. + * Even in the implementations that permit it, `null` should not be inserted + * into a queue, as `null` is also used as a special return value by the + * `poll()` method to indicate that the queue contains no elements. + * + * @template T + * @extends ArrayInterface<T> + */ +interface QueueInterface extends ArrayInterface +{ + /** + * Ensures that this queue contains the specified element (optional + * operation). + * + * Returns `true` if this queue changed as a result of the call. (Returns + * `false` if this queue does not permit duplicates and already contains the + * specified element.) + * + * Queues that support this operation may place limitations on what elements + * may be added to this queue. In particular, some queues will refuse to add + * `null` elements, and others will impose restrictions on the type of + * elements that may be added. Queue classes should clearly specify in their + * documentation any restrictions on what elements may be added. + * + * If a queue refuses to add a particular element for any reason other than + * that it already contains the element, it must throw an exception (rather + * than returning `false`). This preserves the invariant that a queue always + * contains the specified element after this call returns. + * + * @see self::offer() + * + * @param T $element The element to add to this queue. + * + * @return bool `true` if this queue changed as a result of the call. + * + * @throws \RuntimeException if a queue refuses to add a particular element + * for any reason other than that it already contains the element. + * Implementations should use a more-specific exception that extends + * `\RuntimeException`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function add($element): bool; + + /** + * Retrieves, but does not remove, the head of this queue. + * + * This method differs from `peek()` only in that it throws an exception if + * this queue is empty. + * + * @see self::peek() + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function element(); + + /** + * Inserts the specified element into this queue if it is possible to do so + * immediately without violating capacity restrictions. + * + * When using a capacity-restricted queue, this method is generally + * preferable to `add()`, which can fail to insert an element only by + * throwing an exception. + * + * @see self::add() + * + * @param T $element The element to add to this queue. + * + * @return bool `true` if the element was added to this queue, else `false`. + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + public function offer($element): bool; + + /** + * Retrieves, but does not remove, the head of this queue, or returns `null` + * if this queue is empty. + * + * @see self::element() + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function peek(); + + /** + * Retrieves and removes the head of this queue, or returns `null` + * if this queue is empty. + * + * @see self::remove() + * + * @return T|null the head of this queue, or `null` if this queue is empty. + */ + public function poll(); + + /** + * Retrieves and removes the head of this queue. + * + * This method differs from `poll()` only in that it throws an exception if + * this queue is empty. + * + * @see self::poll() + * + * @return T the head of this queue. + * + * @throws NoSuchElementException if this queue is empty. + */ + public function remove(); + + /** + * Returns the type associated with this queue. + */ + public function getType(): string; +} diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php new file mode 100644 index 000000000..6932f247a --- /dev/null +++ b/vendor/ramsey/collection/src/Set.php @@ -0,0 +1,69 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection; + +/** + * A set is a collection that contains no duplicate elements. + * + * Great care must be exercised if mutable objects are used as set elements. + * The behavior of a set is not specified if the value of an object is changed + * in a manner that affects equals comparisons while the object is an element in + * the set. + * + * Example usage: + * + * ``` php + * $foo = new \My\Foo(); + * $set = new Set(\My\Foo::class); + * + * $set->add($foo); // returns TRUE, the element don't exists + * $set->add($foo); // returns FALSE, the element already exists + * + * $bar = new \My\Foo(); + * $set->add($bar); // returns TRUE, $bar !== $foo + * ``` + * + * @template T + * @extends AbstractSet<T> + */ +class Set extends AbstractSet +{ + /** + * The type of elements stored in this set + * + * A set's type is immutable. For this reason, this property is private. + * + * @var string + */ + private $setType; + + /** + * Constructs a set object of the specified type, optionally with the + * specified data. + * + * @param string $setType The type (FQCN) associated with this set. + * @param array<array-key, T> $data The initial items to store in the set. + */ + public function __construct(string $setType, array $data = []) + { + $this->setType = $setType; + parent::__construct($data); + } + + public function getType(): string + { + return $this->setType; + } +} diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php new file mode 100644 index 000000000..8214e9654 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/TypeTrait.php @@ -0,0 +1,73 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use function is_array; +use function is_bool; +use function is_callable; +use function is_float; +use function is_int; +use function is_numeric; +use function is_object; +use function is_resource; +use function is_scalar; +use function is_string; + +/** + * Provides functionality to check values for specific types. + */ +trait TypeTrait +{ + /** + * Returns `true` if value is of the specified type. + * + * @param string $type The type to check the value against. + * @param mixed $value The value to check. + */ + protected function checkType(string $type, $value): bool + { + switch ($type) { + case 'array': + return is_array($value); + case 'bool': + case 'boolean': + return is_bool($value); + case 'callable': + return is_callable($value); + case 'float': + case 'double': + return is_float($value); + case 'int': + case 'integer': + return is_int($value); + case 'null': + return $value === null; + case 'numeric': + return is_numeric($value); + case 'object': + return is_object($value); + case 'resource': + return is_resource($value); + case 'scalar': + return is_scalar($value); + case 'string': + return is_string($value); + case 'mixed': + return true; + default: + return $value instanceof $type; + } + } +} diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php new file mode 100644 index 000000000..f9be1be28 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php @@ -0,0 +1,58 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use Ramsey\Collection\Exception\ValueExtractionException; + +use function get_class; +use function method_exists; +use function property_exists; +use function sprintf; + +/** + * Provides functionality to extract the value of a property or method from an object. + */ +trait ValueExtractorTrait +{ + /** + * Extracts the value of the given property or method from the object. + * + * @param mixed $object The object to extract the value from. + * @param string $propertyOrMethod The property or method for which the + * value should be extracted. + * + * @return mixed the value extracted from the specified property or method. + * + * @throws ValueExtractionException if the method or property is not defined. + */ + protected function extractValue($object, string $propertyOrMethod) + { + if (!is_object($object)) { + throw new ValueExtractionException('Unable to extract a value from a non-object'); + } + + if (property_exists($object, $propertyOrMethod)) { + return $object->$propertyOrMethod; + } + + if (method_exists($object, $propertyOrMethod)) { + return $object->{$propertyOrMethod}(); + } + + throw new ValueExtractionException( + sprintf('Method or property "%s" not defined in %s', $propertyOrMethod, get_class($object)) + ); + } +} diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php new file mode 100644 index 000000000..721ade002 --- /dev/null +++ b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php @@ -0,0 +1,94 @@ +<?php + +/** + * This file is part of the ramsey/collection library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Collection\Tool; + +use DateTimeInterface; + +use function get_class; +use function get_resource_type; +use function is_array; +use function is_bool; +use function is_callable; +use function is_resource; +use function is_scalar; + +/** + * Provides functionality to express a value as string + */ +trait ValueToStringTrait +{ + /** + * Returns a string representation of the value. + * + * - null value: `'NULL'` + * - boolean: `'TRUE'`, `'FALSE'` + * - array: `'Array'` + * - scalar: converted-value + * - resource: `'(type resource #number)'` + * - object with `__toString()`: result of `__toString()` + * - object DateTime: ISO 8601 date + * - object: `'(className Object)'` + * - anonymous function: same as object + * + * @param mixed $value the value to return as a string. + */ + protected function toolValueToString($value): string + { + // null + if ($value === null) { + return 'NULL'; + } + + // boolean constants + if (is_bool($value)) { + return $value ? 'TRUE' : 'FALSE'; + } + + // array + if (is_array($value)) { + return 'Array'; + } + + // scalar types (integer, float, string) + if (is_scalar($value)) { + return (string) $value; + } + + // resource + if (is_resource($value)) { + return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')'; + } + + // If we don't know what it is, use var_export(). + if (!is_object($value)) { + return '(' . var_export($value, true) . ')'; + } + + // From here, $value should be an object. + + // __toString() is implemented + if (is_callable([$value, '__toString'])) { + return (string) $value->__toString(); + } + + // object of type \DateTime + if ($value instanceof DateTimeInterface) { + return $value->format('c'); + } + + // unknown type + return '(' . get_class($value) . ' Object)'; + } +} diff --git a/vendor/ramsey/uuid/LICENSE b/vendor/ramsey/uuid/LICENSE index 1db0ef8cd..5e06cf43b 100644 --- a/vendor/ramsey/uuid/LICENSE +++ b/vendor/ramsey/uuid/LICENSE @@ -1,5 +1,3 @@ -MIT License - Copyright (c) 2012-2021 Ben Ramsey <ben@benramsey.com> Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vendor/ramsey/uuid/README.md b/vendor/ramsey/uuid/README.md index 491429df9..97e81a501 100644 --- a/vendor/ramsey/uuid/README.md +++ b/vendor/ramsey/uuid/README.md @@ -1,44 +1,29 @@ -# ramsey/uuid +<h1 align="center">ramsey/uuid</h1> -*IMPORTANT: This is the 3.x series. Please upgrade to the 4.x series.* +<p align="center"> + <strong>A PHP library for generating and working with UUIDs.</strong> +</p> -*NOTICE: Formerly known as `rhumsaa/uuid`, The package and namespace names have -changed to `ramsey/uuid` and `Ramsey\Uuid`, respectively.* +<p align="center"> + <a href="https://github.com/ramsey/uuid"><img src="http://img.shields.io/badge/source-ramsey/uuid-blue.svg?style=flat-square" alt="Source Code"></a> + <a href="https://packagist.org/packages/ramsey/uuid"><img src="https://img.shields.io/packagist/v/ramsey/uuid.svg?style=flat-square&label=release" alt="Download Package"></a> + <a href="https://php.net"><img src="https://img.shields.io/packagist/php-v/ramsey/uuid.svg?style=flat-square&colorB=%238892BF" alt="PHP Programming Language"></a> + <a href="https://github.com/ramsey/uuid/blob/main/LICENSE"><img src="https://img.shields.io/packagist/l/ramsey/uuid.svg?style=flat-square&colorB=darkcyan" alt="Read License"></a> + <a href="https://github.com/ramsey/uuid/actions/workflows/continuous-integration.yml"><img src="https://img.shields.io/github/workflow/status/ramsey/uuid/build/main?logo=github&style=flat-square" alt="Build Status"></a> + <a href="https://codecov.io/gh/ramsey/uuid"><img src="https://img.shields.io/codecov/c/gh/ramsey/uuid?label=codecov&logo=codecov&style=flat-square" alt="Codecov Code Coverage"></a> + <a href="https://shepherd.dev/github/ramsey/uuid"><img src="https://img.shields.io/endpoint?style=flat-square&url=https%3A%2F%2Fshepherd.dev%2Fgithub%2Framsey%2Fuuid%2Fcoverage" alt="Psalm Type Coverage"></a> +</p> -[![Source Code][badge-source]][source] -[![Series][badge-series]][series] -[![Upgrade][badge-upgrade]][upgrade] -[![PHP Version][badge-php]][php] -[![Software License][badge-license]][license] -[![Build Status][badge-build]][build] -[![Coverage Status][badge-coverage]][coverage] +ramsey/uuid is a PHP library for generating and working with universally unique +identifiers (UUIDs). -ramsey/uuid is a PHP 5.4+ library for generating and working with -[RFC 4122][rfc4122] version 1, 3, 4, and 5 universally unique identifiers -(UUID). - -This project adheres to a [Contributor Code of Conduct][conduct]. By -participating in this project and its community, you are expected to uphold this -code. - -From [Wikipedia](http://en.wikipedia.org/wiki/Universally_unique_identifier): - -> The intent of UUIDs is to enable distributed systems to uniquely identify -> information without significant central coordination. In this context the word -> unique should be taken to mean "practically unique" rather than "guaranteed -> unique". Since the identifiers have a finite size, it is possible for two -> differing items to share the same identifier. The identifier size and -> generation process need to be selected so as to make this sufficiently -> improbable in practice. Anyone can create a UUID and use it to identify -> something with reasonable confidence that the same identifier will never be -> unintentionally created by anyone to identify something else. Information -> labeled with UUIDs can therefore be later combined into a single database -> without needing to resolve identifier (ID) conflicts. +This project adheres to a [code of conduct](CODE_OF_CONDUCT.md). +By participating in this project and its community, you are expected to +uphold this code. Much inspiration for this library came from the [Java][javauuid] and [Python][pyuuid] UUID libraries. - ## Installation The preferred method of installation is via [Composer][]. Run the following @@ -49,110 +34,38 @@ command to install the package and add it as a requirement to your project's composer require ramsey/uuid ``` +## Upgrading to Version 4 -## Upgrading from 2.x to 3.x +See the documentation for a thorough upgrade guide: -While we have made significant internal changes to the library, we have made -every effort to ensure a seamless upgrade path from the 2.x series of this -library to 3.x. +* [Upgrading ramsey/uuid Version 3 to 4](https://uuid.ramsey.dev/en/latest/upgrading/3-to-4.html) -One major breaking change is the transition from the `Rhumsaa` root namespace to -`Ramsey`. In most cases, all you will need is to change the namespace to -`Ramsey` in your code, and everything will "just work." - -Here are full details on the breaking changes to the public API of this library: - -1. All namespace references of `Rhumsaa` have changed to `Ramsey`. Simply change - the namespace to `Ramsey` in your code and everything should work. -2. The console application has moved to - [ramsey/uuid-console](https://packagist.org/packages/ramsey/uuid-console). - If using the console functionality, use Composer to require - `ramsey/uuid-console`. -3. The Doctrine field type mapping has moved to - [ramsey/uuid-doctrine](https://packagist.org/packages/ramsey/uuid-doctrine). - If using the Doctrine functionality, use Composer to require - `ramsey/uuid-doctrine`. - - -## What to do if you see a "rhumsaa/uuid is abandoned" message - -When installing your project's dependencies using Composer, you might see the -following message: - -``` -Package rhumsaa/uuid is abandoned, you should avoid using it. Use -ramsey/uuid instead. -``` - -Don't panic. Simply execute the following commands with Composer: - -``` bash -composer remove rhumsaa/uuid -composer require ramsey/uuid=^2.9 -``` - -After doing so, you will have the latest ramsey/uuid package in the 2.x series, -and there will be no need to modify any code; the namespace in the 2.x series is -still `Rhumsaa`. - - -## Requirements - -Some methods in this library have requirements due to integer size restrictions -on 32-bit and 64-bit builds of PHP. A 64-bit build of PHP and the -[Moontoast\Math][] library are recommended. However, this library is designed to -work on 32-bit builds of PHP without Moontoast\Math, with some degraded -functionality. Please check the API documentation for more information. - -If a particular requirement is not present, then an -`UnsatisfiedDependencyException` is thrown, allowing one to catch a bad call in -an environment where the call is not supported and gracefully degrade. - - -## Examples - -See the [cookbook on the wiki][wiki-cookbook] for more examples and approaches -to specific use-cases. - -```php -<?php -require 'vendor/autoload.php'; - -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; - -try { - - // Generate a version 1 (time-based) UUID object - $uuid1 = Uuid::uuid1(); - echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd - - // Generate a version 3 (name-based and hashed with MD5) UUID object - $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net'); - echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269 - - // Generate a version 4 (random) UUID object - $uuid4 = Uuid::uuid4(); - echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a - - // Generate a version 5 (name-based and hashed with SHA1) UUID object - $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'php.net'); - echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62 - -} catch (UnsatisfiedDependencyException $e) { - - // Some dependency was not met. Either the method cannot be called on a - // 32-bit system, or it can, but it relies on Moontoast\Math to be present. - echo 'Caught exception: ' . $e->getMessage() . "\n"; - -} -``` +## Documentation +Please see <https://uuid.ramsey.dev> for documentation, tips, examples, and +frequently asked questions. ## Contributing -Contributions are welcome! Please read [CONTRIBUTING.md][] for details. +Contributions are welcome! To contribute, please familiarize yourself with +[CONTRIBUTING.md](CONTRIBUTING.md). +## Coordinated Disclosure + +Keeping user information safe and secure is a top priority, and we welcome the +contribution of external security researchers. If you believe you've found a +security issue in software that is maintained in this repository, please read +[SECURITY.md][] for instructions on submitting a vulnerability report. + +## ramsey/uuid for Enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of ramsey/uuid and thousands of other packages are working with +Tidelift to deliver commercial support and maintenance for the open source +packages you use to build your applications. Save time, reduce risk, and improve +code health, while paying the maintainers of the exact packages you use. +[Learn more.](https://tidelift.com/subscription/pkg/packagist-ramsey-uuid?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) ## Copyright and License @@ -160,28 +73,11 @@ The ramsey/uuid library is copyright © [Ben Ramsey](https://benramsey.com/) and licensed for use under the MIT License (MIT). Please see [LICENSE][] for more information. - [rfc4122]: http://tools.ietf.org/html/rfc4122 -[conduct]: https://github.com/ramsey/uuid/blob/master/.github/CODE_OF_CONDUCT.md +[conduct]: https://github.com/ramsey/uuid/blob/main/CODE_OF_CONDUCT.md [javauuid]: http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html [pyuuid]: http://docs.python.org/3/library/uuid.html [composer]: http://getcomposer.org/ -[moontoast\math]: https://packagist.org/packages/moontoast/math -[wiki-cookbook]: https://github.com/ramsey/uuid/wiki/Ramsey%5CUuid-Cookbook -[contributing.md]: https://github.com/ramsey/uuid/blob/master/.github/CONTRIBUTING.md - -[badge-source]: https://img.shields.io/badge/source-ramsey/uuid-blue.svg?style=flat-square -[badge-series]: https://img.shields.io/badge/series-3.x-darkcyan.svg?style=flat-square -[badge-upgrade]: https://img.shields.io/packagist/v/ramsey/uuid.svg?style=flat-square&label=upgrade&colorB=darkred -[badge-license]: https://img.shields.io/packagist/l/ramsey/uuid.svg?style=flat-square&colorB=darkcyan -[badge-php]: https://img.shields.io/packagist/php-v/ramsey/uuid/3.x-dev.svg?style=flat-square&colorB=%238892BF -[badge-build]: https://img.shields.io/github/actions/workflow/status/ramsey/uuid/continuous-integration.yml?branch=3.x&logo=github&style=flat-square -[badge-coverage]: https://img.shields.io/codecov/c/gh/ramsey/uuid/3.x.svg?style=flat-square&logo=codecov - -[source]: https://github.com/ramsey/uuid/tree/3.x -[series]: https://packagist.org/packages/ramsey/uuid -[upgrade]: https://packagist.org/packages/ramsey/uuid -[license]: https://github.com/ramsey/uuid/blob/master/LICENSE -[php]: https://php.net -[build]: https://github.com/ramsey/uuid/actions/workflows/continuous-integration.yml?query=branch%3A3.x -[coverage]: https://app.codecov.io/gh/ramsey/uuid/branch/3.x +[contributing.md]: https://github.com/ramsey/uuid/blob/main/CONTRIBUTING.md +[security.md]: https://github.com/ramsey/uuid/blob/main/SECURITY.md +[license]: https://github.com/ramsey/uuid/blob/main/LICENSE diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json index 8f5505d9f..3f3b5ac42 100644 --- a/vendor/ramsey/uuid/composer.json +++ b/vendor/ramsey/uuid/composer.json @@ -1,67 +1,65 @@ { "name": "ramsey/uuid", "type": "library", - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "keywords": ["uuid", "identifier", "guid"], - "homepage": "https://github.com/ramsey/uuid", - "license": "MIT", - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "uuid", + "identifier", + "guid" ], + "license": "MIT", "require": { - "php": "^5.4 | ^7.0 | ^8.0", + "php": "^7.2 || ^8.0", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", - "nikic/php-parser": "<=4.5.0", - "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0", - "squizlabs/php_codesniffer": "^3.5", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "phpstan/extension-installer": true, - "dealerdirect/phpcodesniffer-composer-installer": true, - "ergebnis/composer-normalize": true, - "captainhook/plugin-composer": true - } + "brick/math": "^0.8 || ^0.9", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" }, "replace": { "rhumsaa/uuid": "self.version" }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "config": { + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, "autoload": { "psr-4": { "Ramsey\\Uuid\\": "src/" @@ -72,24 +70,38 @@ }, "autoload-dev": { "psr-4": { + "Ramsey\\Uuid\\Benchmark\\": "tests/benchmark/", + "Ramsey\\Uuid\\StaticAnalysis\\": "tests/static-analysis/", "Ramsey\\Uuid\\Test\\": "tests/" } }, + "minimum-stability": "dev", + "prefer-stable": true, "scripts": { + "analyze": [ + "@phpstan", + "@psalm" + ], + "build:clean": "git clean -fX build/", "lint": "parallel-lint src tests", - "phpcs": "phpcs src tests --standard=psr2 -sp --colors", + "lint:paths": "parallel-lint", + "phpbench": "phpbench run", + "phpcbf": "phpcbf -vpw --cache=build/cache/phpcs.cache", + "phpcs": "phpcs --cache=build/cache/phpcs.cache", + "phpstan": [ + "phpstan analyse --no-progress", + "phpstan analyse -c phpstan-tests.neon --no-progress" + ], "phpunit": "phpunit --verbose --colors=always", "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", + "psalm": "psalm --show-info=false --config=psalm.xml", "test": [ "@lint", + "@phpbench", "@phpcs", + "@phpstan", + "@psalm", "@phpunit" ] - }, - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" } } diff --git a/vendor/ramsey/uuid/src/BinaryUtils.php b/vendor/ramsey/uuid/src/BinaryUtils.php index 18ea467d9..fb8ba9adc 100644 --- a/vendor/ramsey/uuid/src/BinaryUtils.php +++ b/vendor/ramsey/uuid/src/BinaryUtils.php @@ -1,5 +1,17 @@ <?php +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + namespace Ramsey\Uuid; /** @@ -8,32 +20,42 @@ namespace Ramsey\Uuid; class BinaryUtils { /** - * Applies the RFC 4122 variant field to the `clock_seq_hi_and_reserved` field + * Applies the RFC 4122 variant field to the 16-bit clock sequence * - * @param $clockSeqHi - * @return int The high field of the clock sequence multiplexed with the variant - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + * + * @param int $clockSeq The 16-bit clock sequence value before the RFC 4122 + * variant is applied + * + * @return int The 16-bit clock sequence multiplexed with the UUID variant + * + * @psalm-pure */ - public static function applyVariant($clockSeqHi) + public static function applyVariant(int $clockSeq): int { - // Set the variant to RFC 4122 - $clockSeqHi = $clockSeqHi & 0x3f; - $clockSeqHi |= 0x80; + $clockSeq = $clockSeq & 0x3fff; + $clockSeq |= 0x8000; - return $clockSeqHi; + return $clockSeq; } /** - * Applies the RFC 4122 version number to the `time_hi_and_version` field + * Applies the RFC 4122 version number to the 16-bit `time_hi_and_version` field * - * @param string $timeHi - * @param integer $version - * @return int The high field of the timestamp multiplexed with the version number - * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 + * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + * + * @param int $timeHi The value of the 16-bit `time_hi_and_version` field + * before the RFC 4122 version is applied + * @param int $version The RFC 4122 version to apply to the `time_hi` field + * + * @return int The 16-bit time_hi field of the timestamp multiplexed with + * the UUID version number + * + * @psalm-pure */ - public static function applyVersion($timeHi, $version) + public static function applyVersion(int $timeHi, int $version): int { - $timeHi = hexdec($timeHi) & 0x0fff; + $timeHi = $timeHi & 0x0fff; $timeHi |= $version << 12; return $timeHi; diff --git a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php new file mode 100644 index 000000000..89fa1e3c8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php @@ -0,0 +1,80 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Collection\AbstractCollection; +use Ramsey\Uuid\Converter\Number\GenericNumberConverter; +use Ramsey\Uuid\Converter\Time\GenericTimeConverter; +use Ramsey\Uuid\Converter\Time\PhpTimeConverter; +use Ramsey\Uuid\Guid\GuidBuilder; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; +use Traversable; + +/** + * A collection of UuidBuilderInterface objects + * + * @extends AbstractCollection<UuidBuilderInterface> + */ +class BuilderCollection extends AbstractCollection +{ + public function getType(): string + { + return UuidBuilderInterface::class; + } + + /** + * @psalm-mutation-free + * @psalm-suppress ImpureMethodCall + * @psalm-suppress InvalidTemplateParam + */ + public function getIterator(): Traversable + { + return parent::getIterator(); + } + + /** + * Re-constructs the object from its serialized form + * + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress RedundantConditionGivenDocblockType + */ + public function unserialize($serialized): void + { + /** @var array<array-key, UuidBuilderInterface> $data */ + $data = unserialize($serialized, [ + 'allowed_classes' => [ + BrickMathCalculator::class, + GenericNumberConverter::class, + GenericTimeConverter::class, + GuidBuilder::class, + NonstandardUuidBuilder::class, + PhpTimeConverter::class, + Rfc4122UuidBuilder::class, + ], + ]); + + $this->data = array_filter( + $data, + function ($unserialized): bool { + return $unserialized instanceof UuidBuilderInterface; + } + ); + } +} diff --git a/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php index 20656acdf..7c4a6f837 100644 --- a/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php +++ b/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,48 +8,19 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Builder; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; /** - * DefaultUuidBuilder is the default UUID builder for ramsey/uuid; it builds - * instances of Uuid objects + * @deprecated Transition to {@see Rfc4122UuidBuilder}. + * + * @psalm-immutable */ -class DefaultUuidBuilder implements UuidBuilderInterface +class DefaultUuidBuilder extends Rfc4122UuidBuilder { - /** - * @var NumberConverterInterface - */ - private $converter; - - /** - * Constructs the DefaultUuidBuilder - * - * @param NumberConverterInterface $converter The number converter to use when constructing the Uuid - */ - public function __construct(NumberConverterInterface $converter) - { - $this->converter = $converter; - } - - /** - * Builds a Uuid - * - * @param CodecInterface $codec The codec to use for building this Uuid - * @param array $fields An array of fields from which to construct the Uuid; - * see {@see \Ramsey\Uuid\UuidInterface::getFieldsHex()} for array structure. - * @return Uuid - */ - public function build(CodecInterface $codec, array $fields) - { - return new Uuid($fields, $this->converter, $codec); - } } diff --git a/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php index 7edb6deb7..23931e416 100644 --- a/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php +++ b/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,47 +8,69 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Builder; use Ramsey\Uuid\Codec\CodecInterface; use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\Time\DegradedTimeConverter; +use Ramsey\Uuid\Converter\TimeConverterInterface; use Ramsey\Uuid\DegradedUuid; +use Ramsey\Uuid\Rfc4122\Fields as Rfc4122Fields; +use Ramsey\Uuid\UuidInterface; /** - * DegradedUuidBuilder builds instances of DegradedUuid + * @deprecated DegradedUuid instances are no longer necessary to support 32-bit + * systems. Transition to {@see DefaultUuidBuilder}. + * + * @psalm-immutable */ class DegradedUuidBuilder implements UuidBuilderInterface { /** * @var NumberConverterInterface */ - private $converter; + private $numberConverter; /** - * Constructs the DegradedUuidBuilder - * - * @param NumberConverterInterface $converter The number converter to use when constructing the DegradedUuid + * @var TimeConverterInterface */ - public function __construct(NumberConverterInterface $converter) - { - $this->converter = $converter; + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the DegradedUuid + * @param TimeConverterInterface|null $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + ?TimeConverterInterface $timeConverter = null + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter ?: new DegradedTimeConverter(); } /** - * Builds a DegradedUuid + * Builds and returns a DegradedUuid * - * @param CodecInterface $codec The codec to use for building this DegradedUuid - * @param array $fields An array of fields from which to construct the DegradedUuid; - * see {@see \Ramsey\Uuid\UuidInterface::getFieldsHex()} for array structure. - * @return DegradedUuid + * @param CodecInterface $codec The codec to use for building this DegradedUuid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return DegradedUuid The DegradedUuidBuild returns an instance of Ramsey\Uuid\DegradedUuid + * + * @psalm-pure */ - public function build(CodecInterface $codec, array $fields) + public function build(CodecInterface $codec, string $bytes): UuidInterface { - return new DegradedUuid($fields, $this->converter, $codec); + return new DegradedUuid( + new Rfc4122Fields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); } } diff --git a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php new file mode 100644 index 000000000..470d2f755 --- /dev/null +++ b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php @@ -0,0 +1,74 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Builder; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Exception\BuilderNotFoundException; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; + +/** + * FallbackBuilder builds a UUID by stepping through a list of UUID builders + * until a UUID can be constructed without exceptions + * + * @psalm-immutable + */ +class FallbackBuilder implements UuidBuilderInterface +{ + /** + * @var BuilderCollection + */ + private $builders; + + /** + * @param BuilderCollection $builders An array of UUID builders + */ + public function __construct(BuilderCollection $builders) + { + $this->builders = $builders; + } + + /** + * Builds and returns a UuidInterface instance using the first builder that + * succeeds + * + * @param CodecInterface $codec The codec to use for building this instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface an instance of a UUID object + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + $lastBuilderException = null; + + foreach ($this->builders as $builder) { + try { + return $builder->build($codec, $bytes); + } catch (UnableToBuildUuidException $exception) { + $lastBuilderException = $exception; + + continue; + } + } + + throw new BuilderNotFoundException( + 'Could not find a suitable builder for the provided codec and fields', + 0, + $lastBuilderException + ); + } +} diff --git a/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php b/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php index e4e990109..8e58b2b43 100644 --- a/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php +++ b/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,28 +8,32 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Builder; use Ramsey\Uuid\Codec\CodecInterface; use Ramsey\Uuid\UuidInterface; /** - * UuidBuilderInterface builds instances UuidInterface + * A UUID builder builds instances of UuidInterface + * + * @psalm-immutable */ interface UuidBuilderInterface { /** - * Builds an instance of a UuidInterface + * Builds and returns a UuidInterface * * @param CodecInterface $codec The codec to use for building this UuidInterface instance - * @param array $fields An array of fields from which to construct a UuidInterface instance; - * see {@see \Ramsey\Uuid\UuidInterface::getFieldsHex()} for array structure. - * @return UuidInterface + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface Implementations may choose to return more specific + * instances of UUIDs that implement UuidInterface + * + * @psalm-pure */ - public function build(CodecInterface $codec, array $fields); + public function build(CodecInterface $codec, string $bytes): UuidInterface; } diff --git a/vendor/ramsey/uuid/src/Codec/CodecInterface.php b/vendor/ramsey/uuid/src/Codec/CodecInterface.php index c6c54c78a..85f8a7e99 100644 --- a/vendor/ramsey/uuid/src/Codec/CodecInterface.php +++ b/vendor/ramsey/uuid/src/Codec/CodecInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,54 +8,64 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; -use InvalidArgumentException; -use Ramsey\Uuid\Exception\InvalidUuidStringException; use Ramsey\Uuid\UuidInterface; /** - * CodecInterface represents a UUID coder-decoder + * A codec encodes and decodes a UUID according to defined rules + * + * @psalm-immutable */ interface CodecInterface { /** - * Encodes a UuidInterface as a string representation of a UUID + * Returns a hexadecimal string representation of a UuidInterface + * + * @param UuidInterface $uuid The UUID for which to create a hexadecimal + * string representation * - * @param UuidInterface $uuid * @return string Hexadecimal string representation of a UUID + * + * @psalm-return non-empty-string */ - public function encode(UuidInterface $uuid); + public function encode(UuidInterface $uuid): string; /** - * Encodes a UuidInterface as a binary representation of a UUID + * Returns a binary string representation of a UuidInterface + * + * @param UuidInterface $uuid The UUID for which to create a binary string + * representation * - * @param UuidInterface $uuid * @return string Binary string representation of a UUID + * + * @psalm-return non-empty-string */ - public function encodeBinary(UuidInterface $uuid); + public function encodeBinary(UuidInterface $uuid): string; /** - * Decodes a string representation of a UUID into a UuidInterface object instance + * Returns a UuidInterface derived from a hexadecimal string representation * - * @param string $encodedUuid - * @return UuidInterface - * @throws InvalidUuidStringException + * @param string $encodedUuid The hexadecimal string representation to + * convert into a UuidInterface instance + * + * @return UuidInterface An instance of a UUID decoded from a hexadecimal + * string representation */ - public function decode($encodedUuid); + public function decode(string $encodedUuid): UuidInterface; /** - * Decodes a binary representation of a UUID into a UuidInterface object instance + * Returns a UuidInterface derived from a binary string representation * - * @param string $bytes - * @return UuidInterface - * @throws InvalidUuidStringException - * @throws InvalidArgumentException if string has not 16 characters + * @param string $bytes The binary string representation to convert into a + * UuidInterface instance + * + * @return UuidInterface An instance of a UUID decoded from a binary string + * representation */ - public function decodeBytes($bytes); + public function decodeBytes(string $bytes): UuidInterface; } diff --git a/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php b/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php index 367548070..f11e9d50a 100644 --- a/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php +++ b/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,97 +8,48 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; -use Ramsey\Uuid\Exception\InvalidUuidStringException; +use Ramsey\Uuid\Guid\Guid; use Ramsey\Uuid\UuidInterface; +use function bin2hex; +use function substr; + /** * GuidStringCodec encodes and decodes globally unique identifiers (GUID) * - * @link https://en.wikipedia.org/wiki/Globally_unique_identifier + * @see Guid + * + * @psalm-immutable */ class GuidStringCodec extends StringCodec { - /** - * Encodes a UuidInterface as a string representation of a GUID - * - * @param UuidInterface $uuid - * @return string Hexadecimal string representation of a GUID - */ - public function encode(UuidInterface $uuid) + public function decode(string $encodedUuid): UuidInterface { - $components = array_values($uuid->getFieldsHex()); + $bytes = $this->getBytes($encodedUuid); - // Swap byte-order on the first three fields - $this->swapFields($components); - - return vsprintf( - '%08s-%04s-%04s-%02s%02s-%012s', - $components - ); + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); } - /** - * Encodes a UuidInterface as a binary representation of a GUID - * - * @param UuidInterface $uuid - * @return string Binary string representation of a GUID - */ - public function encodeBinary(UuidInterface $uuid) - { - $components = array_values($uuid->getFieldsHex()); - - return hex2bin(implode('', $components)); - } - - /** - * Decodes a string representation of a GUID into a UuidInterface object instance - * - * @param string $encodedUuid - * @return UuidInterface - * @throws InvalidUuidStringException - */ - public function decode($encodedUuid) - { - $components = $this->extractComponents($encodedUuid); - - $this->swapFields($components); - - return $this->getBuilder()->build($this, $this->getFields($components)); - } - - /** - * Decodes a binary representation of a GUID into a UuidInterface object instance - * - * @param string $bytes - * @return UuidInterface - * @throws InvalidUuidStringException - */ - public function decodeBytes($bytes) + public function decodeBytes(string $bytes): UuidInterface { // Specifically call parent::decode to preserve correct byte order return parent::decode(bin2hex($bytes)); } /** - * Swaps fields to support GUID byte order - * - * @param array $components An array of UUID components (the UUID exploded on its dashes) - * @return void + * Swaps bytes according to the GUID rules */ - protected function swapFields(array &$components) + private function swapBytes(string $bytes): string { - $hex = unpack('H*', pack('L', hexdec($components[0]))); - $components[0] = $hex[1]; - $hex = unpack('H*', pack('S', hexdec($components[1]))); - $components[1] = $hex[1]; - $hex = unpack('H*', pack('S', hexdec($components[2]))); - $components[2] = $hex[1]; + return $bytes[3] . $bytes[2] . $bytes[1] . $bytes[0] + . $bytes[5] . $bytes[4] + . $bytes[7] . $bytes[6] + . substr($bytes, 8); } } diff --git a/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php b/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php index de91aab8d..0798ebc4d 100644 --- a/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php +++ b/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,62 +8,106 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ + +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; -use InvalidArgumentException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; +use function strlen; +use function substr; + /** - * OrderedTimeCodec optimizes the bytes to increment UUIDs when time goes by, to improve database INSERTs. - * The string value will be unchanged from StringCodec. Only works for UUID type 1. + * OrderedTimeCodec encodes and decodes a UUID, optimizing the byte order for + * more efficient storage + * + * For binary representations of version 1 UUID, this codec may be used to + * reorganize the time fields, making the UUID closer to sequential when storing + * the bytes. According to Percona, this optimization can improve database + * INSERTs and SELECTs using the UUID column as a key. + * + * The string representation of the UUID will remain unchanged. Only the binary + * representation is reordered. + * + * **PLEASE NOTE:** Binary representations of UUIDs encoded with this codec must + * be decoded with this codec. Decoding using another codec can result in + * malformed UUIDs. + * + * @link https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/ Storing UUID Values in MySQL + * + * @psalm-immutable */ class OrderedTimeCodec extends StringCodec { - /** - * Encodes a UuidInterface as an optimized binary representation of a UUID + * Returns a binary string representation of a UUID, with the timestamp + * fields rearranged for optimized storage * - * @param UuidInterface $uuid - * @return string Binary string representation of a UUID + * @inheritDoc + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty */ - public function encodeBinary(UuidInterface $uuid) + public function encodeBinary(UuidInterface $uuid): string { - $fields = $uuid->getFieldsHex(); - - $optimized = [ - $fields['time_hi_and_version'], - $fields['time_mid'], - $fields['time_low'], - $fields['clock_seq_hi_and_reserved'], - $fields['clock_seq_low'], - $fields['node'], - ]; - - return hex2bin(implode('', $optimized)); - } - - /** - * Decodes an optimized binary representation of a UUID into a UuidInterface object instance - * - * @param string $bytes - * @return UuidInterface - * @throws InvalidArgumentException if string has not 16 characters - */ - public function decodeBytes($bytes) - { - if (strlen($bytes) !== 16) { - throw new InvalidArgumentException('$bytes string should contain 16 characters.'); + if ( + !($uuid->getFields() instanceof Rfc4122FieldsInterface) + || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME + ) { + throw new InvalidArgumentException( + 'Expected RFC 4122 version 1 (time-based) UUID' + ); } - $hex = unpack('H*', $bytes)[1]; + $bytes = $uuid->getFields()->getBytes(); - // Rearrange the fields to their original order - $hex = substr($hex, 8, 4) . substr($hex, 12, 4) . substr($hex, 4, 4) . substr($hex, 0, 4) . substr($hex, 16); + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $bytes[6] . $bytes[7] + . $bytes[4] . $bytes[5] + . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3] + . substr($bytes, 8); + } - return $this->decode($hex); + /** + * Returns a UuidInterface derived from an ordered-time binary string + * representation + * + * @throws InvalidArgumentException if $bytes is an invalid length + * + * @inheritDoc + */ + public function decodeBytes(string $bytes): UuidInterface + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + '$bytes string should contain 16 characters.' + ); + } + + // Rearrange the bytes to their original order. + $rearrangedBytes = $bytes[4] . $bytes[5] . $bytes[6] . $bytes[7] + . $bytes[2] . $bytes[3] + . $bytes[0] . $bytes[1] + . substr($bytes, 8); + + $uuid = parent::decodeBytes($rearrangedBytes); + + if ( + !($uuid->getFields() instanceof Rfc4122FieldsInterface) + || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME + ) { + throw new UnsupportedOperationException( + 'Attempting to decode a non-time-based UUID using ' + . 'OrderedTimeCodec' + ); + } + + return $uuid; } } diff --git a/vendor/ramsey/uuid/src/Codec/StringCodec.php b/vendor/ramsey/uuid/src/Codec/StringCodec.php index f1bc0249a..58c9f5806 100644 --- a/vendor/ramsey/uuid/src/Codec/StringCodec.php +++ b/vendor/ramsey/uuid/src/Codec/StringCodec.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,23 +8,31 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; -use InvalidArgumentException; use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; use Ramsey\Uuid\Exception\InvalidUuidStringException; +use Ramsey\Uuid\Rfc4122\FieldsInterface; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; +use function hex2bin; +use function implode; +use function str_replace; +use function strlen; +use function substr; + /** * StringCodec encodes and decodes RFC 4122 UUIDs * * @link http://tools.ietf.org/html/rfc4122 + * + * @psalm-immutable */ class StringCodec implements CodecInterface { @@ -33,138 +42,97 @@ class StringCodec implements CodecInterface private $builder; /** - * Constructs a StringCodec for use encoding and decoding UUIDs + * Constructs a StringCodec * - * @param UuidBuilderInterface $builder The UUID builder to use when encoding UUIDs + * @param UuidBuilderInterface $builder The builder to use when encoding UUIDs */ public function __construct(UuidBuilderInterface $builder) { $this->builder = $builder; } - /** - * Encodes a UuidInterface as a string representation of a UUID - * - * @param UuidInterface $uuid - * @return string Hexadecimal string representation of a UUID - */ - public function encode(UuidInterface $uuid) + public function encode(UuidInterface $uuid): string { - $fields = array_values($uuid->getFieldsHex()); + /** @var FieldsInterface $fields */ + $fields = $uuid->getFields(); - return vsprintf( - '%08s-%04s-%04s-%02s%02s-%012s', - $fields - ); + return $fields->getTimeLow()->toString() + . '-' + . $fields->getTimeMid()->toString() + . '-' + . $fields->getTimeHiAndVersion()->toString() + . '-' + . $fields->getClockSeqHiAndReserved()->toString() + . $fields->getClockSeqLow()->toString() + . '-' + . $fields->getNode()->toString(); } /** - * Encodes a UuidInterface as a binary representation of a UUID - * - * @param UuidInterface $uuid - * @return string Binary string representation of a UUID + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty */ - public function encodeBinary(UuidInterface $uuid) + public function encodeBinary(UuidInterface $uuid): string { - return hex2bin($uuid->getHex()); + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $uuid->getFields()->getBytes(); } /** - * Decodes a string representation of a UUID into a UuidInterface object instance - * - * @param string $encodedUuid - * @return UuidInterface * @throws InvalidUuidStringException + * + * @inheritDoc */ - public function decode($encodedUuid) + public function decode(string $encodedUuid): UuidInterface { - $components = $this->extractComponents($encodedUuid); - $fields = $this->getFields($components); - - return $this->builder->build($this, $fields); + return $this->builder->build($this, $this->getBytes($encodedUuid)); } - /** - * Decodes a binary representation of a UUID into a UuidInterface object instance - * - * @param string $bytes - * @return UuidInterface - * @throws InvalidArgumentException if string has not 16 characters - */ - public function decodeBytes($bytes) + public function decodeBytes(string $bytes): UuidInterface { if (strlen($bytes) !== 16) { - throw new InvalidArgumentException('$bytes string should contain 16 characters.'); + throw new InvalidArgumentException( + '$bytes string should contain 16 characters.' + ); } - $hexUuid = unpack('H*', $bytes); - - return $this->decode($hexUuid[1]); + return $this->builder->build($this, $bytes); } /** * Returns the UUID builder - * - * @return UuidBuilderInterface */ - protected function getBuilder() + protected function getBuilder(): UuidBuilderInterface { return $this->builder; } /** - * Returns an array of UUID components (the UUID exploded on its dashes) - * - * @param string $encodedUuid - * @return array - * @throws InvalidUuidStringException + * Returns a byte string of the UUID */ - protected function extractComponents($encodedUuid) + protected function getBytes(string $encodedUuid): string { - $nameParsed = str_replace([ - 'urn:', - 'uuid:', - '{', - '}', - '-' - ], '', $encodedUuid); + $parsedUuid = str_replace( + ['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}', '-'], + '', + $encodedUuid + ); - // We have stripped out the dashes and are breaking up the string using - // substr(). In this way, we can accept a full hex value that doesn't - // contain dashes. $components = [ - substr($nameParsed, 0, 8), - substr($nameParsed, 8, 4), - substr($nameParsed, 12, 4), - substr($nameParsed, 16, 4), - substr($nameParsed, 20) + substr($parsedUuid, 0, 8), + substr($parsedUuid, 8, 4), + substr($parsedUuid, 12, 4), + substr($parsedUuid, 16, 4), + substr($parsedUuid, 20), ]; - $nameParsed = implode('-', $components); - - if (!Uuid::isValid($nameParsed)) { - throw new InvalidUuidStringException('Invalid UUID string: ' . $encodedUuid); + if (!Uuid::isValid(implode('-', $components))) { + throw new InvalidUuidStringException( + 'Invalid UUID string: ' . $encodedUuid + ); } - return $components; - } - - /** - * Returns the fields that make up this UUID - * - * @see \Ramsey\Uuid\UuidInterface::getFieldsHex() - * @param array $components - * @return array - */ - protected function getFields(array $components) - { - return [ - 'time_low' => str_pad($components[0], 8, '0', STR_PAD_LEFT), - 'time_mid' => str_pad($components[1], 4, '0', STR_PAD_LEFT), - 'time_hi_and_version' => str_pad($components[2], 4, '0', STR_PAD_LEFT), - 'clock_seq_hi_and_reserved' => str_pad(substr($components[3], 0, 2), 2, '0', STR_PAD_LEFT), - 'clock_seq_low' => str_pad(substr($components[3], 2), 2, '0', STR_PAD_LEFT), - 'node' => str_pad($components[4], 12, '0', STR_PAD_LEFT) - ]; + return (string) hex2bin($parsedUuid); } } diff --git a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php index 9d13af70c..0e0042d0a 100644 --- a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +++ b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,102 +8,106 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ + +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; use Ramsey\Uuid\Exception\InvalidUuidStringException; use Ramsey\Uuid\UuidInterface; +use function bin2hex; +use function sprintf; +use function substr; +use function substr_replace; + /** - * TimestampFirstCombCodec encodes and decodes COMB UUIDs which have the timestamp as the first 48 bits. - * To be used with MySQL, PostgreSQL, Oracle. + * TimestampFirstCombCodec encodes and decodes COMBs, with the timestamp as the + * first 48 bits + * + * In contrast with the TimestampLastCombCodec, the TimestampFirstCombCodec + * adds the timestamp to the first 48 bits of the COMB. To generate a + * timestamp-first COMB, set the TimestampFirstCombCodec as the codec, along + * with the CombGenerator as the random generator. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $timestampFirstComb = $factory->uuid4(); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys + * + * @psalm-immutable */ class TimestampFirstCombCodec extends StringCodec { /** - * Encodes a UuidInterface as a string representation of a timestamp first COMB UUID - * - * @param UuidInterface $uuid - * - * @return string Hexadecimal string representation of a GUID + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty */ - public function encode(UuidInterface $uuid) + public function encode(UuidInterface $uuid): string { - $sixPieceComponents = array_values($uuid->getFieldsHex()); + $bytes = $this->swapBytes($uuid->getFields()->getBytes()); - $this->swapTimestampAndRandomBits($sixPieceComponents); - - return vsprintf( - '%08s-%04s-%04s-%02s%02s-%012s', - $sixPieceComponents + return sprintf( + '%08s-%04s-%04s-%04s-%012s', + bin2hex(substr($bytes, 0, 4)), + bin2hex(substr($bytes, 4, 2)), + bin2hex(substr($bytes, 6, 2)), + bin2hex(substr($bytes, 8, 2)), + bin2hex(substr($bytes, 10)) ); } /** - * Encodes a UuidInterface as a binary representation of timestamp first COMB UUID - * - * @param UuidInterface $uuid - * - * @return string Binary string representation of timestamp first COMB UUID + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty */ - public function encodeBinary(UuidInterface $uuid) + public function encodeBinary(UuidInterface $uuid): string { - $stringEncoding = $this->encode($uuid); - - return hex2bin(str_replace('-', '', $stringEncoding)); + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $this->swapBytes($uuid->getFields()->getBytes()); } /** - * Decodes a string representation of timestamp first COMB UUID into a UuidInterface object instance - * - * @param string $encodedUuid - * - * @return UuidInterface * @throws InvalidUuidStringException + * + * @inheritDoc */ - public function decode($encodedUuid) + public function decode(string $encodedUuid): UuidInterface { - $fivePieceComponents = $this->extractComponents($encodedUuid); + $bytes = $this->getBytes($encodedUuid); - $this->swapTimestampAndRandomBits($fivePieceComponents); + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); + } - return $this->getBuilder()->build($this, $this->getFields($fivePieceComponents)); + public function decodeBytes(string $bytes): UuidInterface + { + return $this->getBuilder()->build($this, $this->swapBytes($bytes)); } /** - * Decodes a binary representation of timestamp first COMB UUID into a UuidInterface object instance - * - * @param string $bytes - * - * @return UuidInterface - * @throws InvalidUuidStringException + * Swaps bytes according to the timestamp-first COMB rules */ - public function decodeBytes($bytes) + private function swapBytes(string $bytes): string { - return $this->decode(bin2hex($bytes)); - } + $first48Bits = substr($bytes, 0, 6); + $last48Bits = substr($bytes, -6); - /** - * Swaps the first 48 bits with the last 48 bits - * - * @param array $components An array of UUID components (the UUID exploded on its dashes) - * - * @return void - */ - protected function swapTimestampAndRandomBits(array &$components) - { - $last48Bits = $components[4]; - if (count($components) == 6) { - $last48Bits = $components[5]; - $components[5] = $components[0] . $components[1]; - } else { - $components[4] = $components[0] . $components[1]; - } + $bytes = substr_replace($bytes, $last48Bits, 0, 6); + $bytes = substr_replace($bytes, $first48Bits, -6); - $components[0] = substr($last48Bits, 0, 8); - $components[1] = substr($last48Bits, 8, 4); + return $bytes; } } diff --git a/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php index 240f613e2..4856deaed 100644 --- a/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php +++ b/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,15 +8,43 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ + +declare(strict_types=1); + namespace Ramsey\Uuid\Codec; /** - * TimestampLastCombCodec encodes and decodes COMB UUIDs which have the timestamp as the last 48 bits. - * To be used with MSSQL. + * TimestampLastCombCodec encodes and decodes COMBs, with the timestamp as the + * last 48 bits + * + * The CombGenerator when used with the StringCodec (and, by proxy, the + * TimestampLastCombCodec) adds the timestamp to the last 48 bits of the COMB. + * The TimestampLastCombCodec is provided for the sake of consistency. In + * practice, it is identical to the standard StringCodec but, it may be used + * with the CombGenerator for additional context when reading code. + * + * Consider the following code. By default, the codec used by UuidFactory is the + * StringCodec, but here, we explicitly set the TimestampLastCombCodec. It is + * redundant, but it is clear that we intend this COMB to be generated with the + * timestamp appearing at the end. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setCodec(new TimestampLastCombCodec($factory->getUuidBuilder())); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $timestampLastComb = $factory->uuid4(); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys + * + * @psalm-immutable */ class TimestampLastCombCodec extends StringCodec { diff --git a/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php index d23512256..fef63fd00 100644 --- a/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php +++ b/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,48 +8,50 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter\Number; -use Moontoast\Math\BigNumber; use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; /** - * BigNumberConverter converts UUIDs from hexadecimal characters into - * moontoast/math `BigNumber` representations of integers and vice versa + * Previously used to integrate moontoast/math as a bignum arithmetic library, + * BigNumberConverter is deprecated in favor of GenericNumberConverter + * + * @deprecated Transition to {@see GenericNumberConverter}. + * + * @psalm-immutable */ class BigNumberConverter implements NumberConverterInterface { /** - * Converts a hexadecimal number into a `Moontoast\Math\BigNumber` representation - * - * @param string $hex The hexadecimal string representation to convert - * @return BigNumber + * @var NumberConverterInterface */ - public function fromHex($hex) - { - $number = BigNumber::convertToBase10($hex, 16); + private $converter; - return new BigNumber($number); + public function __construct() + { + $this->converter = new GenericNumberConverter(new BrickMathCalculator()); } /** - * Converts an integer or `Moontoast\Math\BigNumber` integer representation - * into a hexadecimal string representation - * - * @param int|string|BigNumber $integer An integer or `Moontoast\Math\BigNumber` - * @return string Hexadecimal string + * @inheritDoc + * @psalm-pure */ - public function toHex($integer) + public function fromHex(string $hex): string { - if (!$integer instanceof BigNumber) { - $integer = new BigNumber($integer); - } + return $this->converter->fromHex($hex); + } - return BigNumber::convertFromBase10($integer, 16); + /** + * @inheritDoc + * @psalm-pure + */ + public function toHex(string $number): string + { + return $this->converter->toHex($number); } } diff --git a/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php index 96a011c65..c9cfa6864 100644 --- a/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php +++ b/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,52 +8,18 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter\Number; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; -use Ramsey\Uuid\Converter\NumberConverterInterface; - /** - * DegradedNumberConverter throws `UnsatisfiedDependencyException` exceptions - * if attempting to use number conversion functionality in an environment that - * does not support large integers (i.e. when moontoast/math is not available) + * @deprecated DegradedNumberConverter is no longer necessary for converting + * numbers on 32-bit systems. Transition to {@see GenericNumberConverter}. + * + * @psalm-immutable */ -class DegradedNumberConverter implements NumberConverterInterface +class DegradedNumberConverter extends BigNumberConverter { - /** - * Throws an `UnsatisfiedDependencyException` - * - * @param string $hex The hexadecimal string representation to convert - * @return void - * @throws UnsatisfiedDependencyException - */ - public function fromHex($hex) - { - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' without support for large ' - . 'integers, since integer is an unsigned ' - . '128-bit integer; Moontoast\Math\BigNumber is required.' - ); - } - - /** - * Throws an `UnsatisfiedDependencyException` - * - * @param mixed $integer An integer representation to convert - * @return void - * @throws UnsatisfiedDependencyException - */ - public function toHex($integer) - { - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' without support for large ' - . 'integers, since integer is an unsigned ' - . '128-bit integer; Moontoast\Math\BigNumber is required. ' - ); - } } diff --git a/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php new file mode 100644 index 000000000..501eac0fa --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php @@ -0,0 +1,63 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Number; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * GenericNumberConverter uses the provided calculator to convert decimal + * numbers to and from hexadecimal values + * + * @psalm-immutable + */ +class GenericNumberConverter implements NumberConverterInterface +{ + /** + * @var CalculatorInterface + */ + private $calculator; + + public function __construct(CalculatorInterface $calculator) + { + $this->calculator = $calculator; + } + + /** + * @inheritDoc + * @psalm-pure + * @psalm-return numeric-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function fromHex(string $hex): string + { + return $this->calculator->fromBase($hex, 16)->toString(); + } + + /** + * @inheritDoc + * @psalm-pure + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function toHex(string $number): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return $this->calculator->toBase(new IntegerObject($number), 16); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php b/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php index b978e2e7b..b33ec31f9 100644 --- a/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php +++ b/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,42 +8,50 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; - /** - * NumberConverterInterface converts UUIDs from hexadecimal characters into + * A number converter converts UUIDs from hexadecimal characters into * representations of integers and vice versa + * + * @psalm-immutable */ interface NumberConverterInterface { /** - * Converts a hexadecimal number into an integer representation of the number + * Converts a hexadecimal number into an string integer representation of + * the number * - * The integer representation returned may be an object or a string - * representation of the integer, depending on the implementation. + * The integer representation returned is a string representation of the + * integer, to accommodate unsigned integers greater than PHP_INT_MAX. * * @param string $hex The hexadecimal string representation to convert - * @return mixed - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present + * + * @return string String representation of an integer + * + * @psalm-return numeric-string + * + * @psalm-pure */ - public function fromHex($hex); + public function fromHex(string $hex): string; /** - * Converts an integer representation into a hexadecimal string representation - * of the number + * Converts a string integer representation into a hexadecimal string + * representation of the number + * + * @param string $number A string integer representation to convert; this + * must be a numeric string to accommodate unsigned integers greater + * than PHP_INT_MAX. * - * @param mixed $integer An integer representation to convert; this may be - * a true integer, a string integer, or a object representation that - * this converter can understand * @return string Hexadecimal string - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present + * + * @psalm-return non-empty-string + * + * @psalm-pure */ - public function toHex($integer); + public function toHex(string $number): string; } diff --git a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php index 112f72272..7390dad83 100644 --- a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php +++ b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,53 +8,44 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter\Time; -use Moontoast\Math\BigNumber; use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Time; /** - * BigNumberTimeConverter uses the moontoast/math library's `BigNumber` to - * provide facilities for converting parts of time into representations that may - * be used in UUIDs + * Previously used to integrate moontoast/math as a bignum arithmetic library, + * BigNumberTimeConverter is deprecated in favor of GenericTimeConverter + * + * @deprecated Transition to {@see GenericTimeConverter}. + * + * @psalm-immutable */ class BigNumberTimeConverter implements TimeConverterInterface { /** - * Uses the provided seconds and micro-seconds to calculate the time_low, - * time_mid, and time_high fields used by RFC 4122 version 1 UUIDs - * - * @param string $seconds - * @param string $microSeconds - * @return string[] An array containing `low`, `mid`, and `high` keys - * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 + * @var TimeConverterInterface */ - public function calculateTime($seconds, $microSeconds) + private $converter; + + public function __construct() { - $uuidTime = new BigNumber('0'); + $this->converter = new GenericTimeConverter(new BrickMathCalculator()); + } - $sec = new BigNumber($seconds); - $sec->multiply('10000000'); + public function calculateTime(string $seconds, string $microseconds): Hexadecimal + { + return $this->converter->calculateTime($seconds, $microseconds); + } - $usec = new BigNumber($microSeconds); - $usec->multiply('10'); - - $uuidTime - ->add($sec) - ->add($usec) - ->add('122192928000000000'); - - $uuidTimeHex = sprintf('%016s', $uuidTime->convertToBase(16)); - - return [ - 'low' => substr($uuidTimeHex, 8), - 'mid' => substr($uuidTimeHex, 4, 4), - 'hi' => substr($uuidTimeHex, 0, 4), - ]; + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + return $this->converter->convertTime($uuidTimestamp); } } diff --git a/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php index b94589cd3..cdc28752d 100644 --- a/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php +++ b/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,36 +8,18 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter\Time; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; - /** - * DegradedTimeConverter throws `UnsatisfiedDependencyException` exceptions - * if attempting to use time conversion functionality in an environment that - * does not support large integers (i.e. when moontoast/math is not available) + * @deprecated DegradedTimeConverter is no longer necessary for converting + * time on 32-bit systems. Transition to {@see GenericTimeConverter}. + * + * @psalm-immutable */ -class DegradedTimeConverter implements TimeConverterInterface +class DegradedTimeConverter extends BigNumberTimeConverter { - /** - * Throws an `UnsatisfiedDependencyException` - * - * @param string $seconds - * @param string $microSeconds - * @return void - * @throws UnsatisfiedDependencyException if called on a 32-bit system and `Moontoast\Math\BigNumber` is not present - */ - public function calculateTime($seconds, $microSeconds) - { - throw new UnsatisfiedDependencyException( - 'When calling ' . __METHOD__ . ' on a 32-bit system, ' - . 'Moontoast\Math\BigNumber must be present.' - ); - } } diff --git a/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php new file mode 100644 index 000000000..a8aa64b73 --- /dev/null +++ b/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php @@ -0,0 +1,124 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Converter\Time; + +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Math\RoundingMode; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; + +use function explode; +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * GenericTimeConverter uses the provided calculator to calculate and convert + * time values + * + * @psalm-immutable + */ +class GenericTimeConverter implements TimeConverterInterface +{ + /** + * The number of 100-nanosecond intervals from the Gregorian calendar epoch + * to the Unix epoch. + */ + private const GREGORIAN_TO_UNIX_INTERVALS = '122192928000000000'; + + /** + * The number of 100-nanosecond intervals in one second. + */ + private const SECOND_INTERVALS = '10000000'; + + /** + * The number of 100-nanosecond intervals in one microsecond. + */ + private const MICROSECOND_INTERVALS = '10'; + + /** + * @var CalculatorInterface + */ + private $calculator; + + public function __construct(CalculatorInterface $calculator) + { + $this->calculator = $calculator; + } + + public function calculateTime(string $seconds, string $microseconds): Hexadecimal + { + $timestamp = new Time($seconds, $microseconds); + + // Convert the seconds into a count of 100-nanosecond intervals. + $sec = $this->calculator->multiply( + $timestamp->getSeconds(), + new IntegerObject(self::SECOND_INTERVALS) + ); + + // Convert the microseconds into a count of 100-nanosecond intervals. + $usec = $this->calculator->multiply( + $timestamp->getMicroseconds(), + new IntegerObject(self::MICROSECOND_INTERVALS) + ); + + // Combine the seconds and microseconds intervals and add the count of + // 100-nanosecond intervals from the Gregorian calendar epoch to the + // Unix epoch. This gives us the correct count of 100-nanosecond + // intervals since the Gregorian calendar epoch for the given seconds + // and microseconds. + /** @var IntegerObject $uuidTime */ + $uuidTime = $this->calculator->add( + $sec, + $usec, + new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) + ); + + $uuidTimeHex = str_pad( + $this->calculator->toHexadecimal($uuidTime)->toString(), + 16, + '0', + STR_PAD_LEFT + ); + + return new Hexadecimal($uuidTimeHex); + } + + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + // From the total, subtract the number of 100-nanosecond intervals from + // the Gregorian calendar epoch to the Unix epoch. This gives us the + // number of 100-nanosecond intervals from the Unix epoch, which also + // includes the microtime. + $epochNanoseconds = $this->calculator->subtract( + $this->calculator->toInteger($uuidTimestamp), + new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) + ); + + // Convert the 100-nanosecond intervals into seconds and microseconds. + $unixTimestamp = $this->calculator->divide( + RoundingMode::HALF_UP, + 6, + $epochNanoseconds, + new IntegerObject(self::SECOND_INTERVALS) + ); + + $split = explode('.', (string) $unixTimestamp, 2); + + return new Time($split[0], $split[1] ?? 0); + } +} diff --git a/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php index 57c882dbb..538d2f2f6 100644 --- a/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php +++ b/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,41 +8,176 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter\Time; use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; + +use function count; +use function dechex; +use function explode; +use function is_float; +use function is_int; +use function str_pad; +use function strlen; +use function substr; + +use const STR_PAD_LEFT; +use const STR_PAD_RIGHT; /** * PhpTimeConverter uses built-in PHP functions and standard math operations * available to the PHP programming language to provide facilities for * converting parts of time into representations that may be used in UUIDs + * + * @psalm-immutable */ class PhpTimeConverter implements TimeConverterInterface { /** - * Uses the provided seconds and micro-seconds to calculate the time_low, - * time_mid, and time_high fields used by RFC 4122 version 1 UUIDs - * - * @param string $seconds - * @param string $microSeconds - * @return string[] An array containing `low`, `mid`, and `high` keys - * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 + * The number of 100-nanosecond intervals from the Gregorian calendar epoch + * to the Unix epoch. */ - public function calculateTime($seconds, $microSeconds) + private const GREGORIAN_TO_UNIX_INTERVALS = 0x01b21dd213814000; + + /** + * The number of 100-nanosecond intervals in one second. + */ + private const SECOND_INTERVALS = 10000000; + + /** + * The number of 100-nanosecond intervals in one microsecond. + */ + private const MICROSECOND_INTERVALS = 10; + + /** + * @var CalculatorInterface + */ + private $calculator; + + /** + * @var TimeConverterInterface + */ + private $fallbackConverter; + + /** + * @var int + */ + private $phpPrecision; + + public function __construct( + ?CalculatorInterface $calculator = null, + ?TimeConverterInterface $fallbackConverter = null + ) { + if ($calculator === null) { + $calculator = new BrickMathCalculator(); + } + + if ($fallbackConverter === null) { + $fallbackConverter = new GenericTimeConverter($calculator); + } + + $this->calculator = $calculator; + $this->fallbackConverter = $fallbackConverter; + $this->phpPrecision = (int) ini_get('precision'); + } + + public function calculateTime(string $seconds, string $microseconds): Hexadecimal { - // 0x01b21dd213814000 is the number of 100-ns intervals between the - // UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00. - $uuidTime = ($seconds * 10000000) + ($microSeconds * 10) + 0x01b21dd213814000; + $seconds = new IntegerObject($seconds); + $microseconds = new IntegerObject($microseconds); + + // Calculate the count of 100-nanosecond intervals since the Gregorian + // calendar epoch for the given seconds and microseconds. + $uuidTime = ((int) $seconds->toString() * self::SECOND_INTERVALS) + + ((int) $microseconds->toString() * self::MICROSECOND_INTERVALS) + + self::GREGORIAN_TO_UNIX_INTERVALS; + + // Check to see whether we've overflowed the max/min integer size. + // If so, we will default to a different time converter. + /** @psalm-suppress RedundantCondition */ + if (!is_int($uuidTime)) { + return $this->fallbackConverter->calculateTime( + $seconds->toString(), + $microseconds->toString() + ); + } + + return new Hexadecimal(str_pad(dechex($uuidTime), 16, '0', STR_PAD_LEFT)); + } + + public function convertTime(Hexadecimal $uuidTimestamp): Time + { + $timestamp = $this->calculator->toInteger($uuidTimestamp); + + // Convert the 100-nanosecond intervals into seconds and microseconds. + $splitTime = $this->splitTime( + ((int) $timestamp->toString() - self::GREGORIAN_TO_UNIX_INTERVALS) + / self::SECOND_INTERVALS + ); + + if (count($splitTime) === 0) { + return $this->fallbackConverter->convertTime($uuidTimestamp); + } + + return new Time($splitTime['sec'], $splitTime['usec']); + } + + /** + * @param int|float $time The time to split into seconds and microseconds + * + * @return string[] + */ + private function splitTime($time): array + { + $split = explode('.', (string) $time, 2); + + // If the $time value is a float but $split only has 1 element, then the + // float math was rounded up to the next second, so we want to return + // an empty array to allow use of the fallback converter. + if (is_float($time) && count($split) === 1) { + return []; + } + + if (count($split) === 1) { + return [ + 'sec' => $split[0], + 'usec' => '0', + ]; + } + + // If the microseconds are less than six characters AND the length of + // the number is greater than or equal to the PHP precision, then it's + // possible that we lost some precision for the microseconds. Return an + // empty array, so that we can choose to use the fallback converter. + if (strlen($split[1]) < 6 && strlen((string) $time) >= $this->phpPrecision) { + return []; + } + + $microseconds = $split[1]; + + // Ensure the microseconds are no longer than 6 digits. If they are, + // truncate the number to the first 6 digits and round up, if needed. + if (strlen($microseconds) > 6) { + $roundingDigit = (int) substr($microseconds, 6, 1); + $microseconds = (int) substr($microseconds, 0, 6); + + if ($roundingDigit >= 5) { + $microseconds++; + } + } return [ - 'low' => sprintf('%08x', $uuidTime & 0xffffffff), - 'mid' => sprintf('%04x', ($uuidTime >> 32) & 0xffff), - 'hi' => sprintf('%04x', ($uuidTime >> 48) & 0x0fff), + 'sec' => $split[0], + 'usec' => str_pad((string) $microseconds, 6, '0', STR_PAD_RIGHT), ]; } } diff --git a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php index 23cf1640b..1e8480701 100644 --- a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +++ b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,31 +8,51 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Converter; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Time; /** - * TimeConverterInterface provides facilities for converting parts of time into - * representations that may be used in UUIDs + * A time converter converts timestamps into representations that may be used + * in UUIDs + * + * @psalm-immutable */ interface TimeConverterInterface { /** - * Uses the provided seconds and micro-seconds to calculate the time_low, - * time_mid, and time_high fields used by RFC 4122 version 1 UUIDs + * Uses the provided seconds and micro-seconds to calculate the count of + * 100-nanosecond intervals since UTC 00:00:00.00, 15 October 1582, for + * RFC 4122 variant UUIDs * - * @param string $seconds - * @param string $microSeconds - * @return string[] An array guaranteed to contain `low`, `mid`, and `hi` keys - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 + * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 RFC 4122, § 4.2.2: Generation Details + * + * @param string $seconds A string representation of the number of seconds + * since the Unix epoch for the time to calculate + * @param string $microseconds A string representation of the micro-seconds + * associated with the time to calculate + * + * @return Hexadecimal The full UUID timestamp as a Hexadecimal value + * + * @psalm-pure */ - public function calculateTime($seconds, $microSeconds); + public function calculateTime(string $seconds, string $microseconds): Hexadecimal; + + /** + * Converts a timestamp extracted from a UUID to a Unix timestamp + * + * @param Hexadecimal $uuidTimestamp A hexadecimal representation of a UUID + * timestamp; a UUID timestamp is a count of 100-nanosecond intervals + * since UTC 00:00:00.00, 15 October 1582. + * + * @return Time An instance of {@see Time} + * + * @psalm-pure + */ + public function convertTime(Hexadecimal $uuidTimestamp): Time; } diff --git a/vendor/ramsey/uuid/src/DegradedUuid.php b/vendor/ramsey/uuid/src/DegradedUuid.php index 4e11272d0..9166042cc 100644 --- a/vendor/ramsey/uuid/src/DegradedUuid.php +++ b/vendor/ramsey/uuid/src/DegradedUuid.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,110 +8,18 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use DateTime; -use Moontoast\Math\BigNumber; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; - /** - * DegradedUuid represents an RFC 4122 UUID on 32-bit systems + * @deprecated DegradedUuid is no longer necessary to represent UUIDs on 32-bit + * systems. Transition typehints to {@see UuidInterface}. * - * @see Uuid + * @psalm-immutable */ class DegradedUuid extends Uuid { - /** - * @inheritdoc - */ - public function getDateTime() - { - if ($this->getVersion() != 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - $time = $this->converter->fromHex($this->getTimestampHex()); - - $ts = new BigNumber($time, 20); - $ts->subtract('122192928000000000'); - $ts->divide('10000000.0'); - $ts->floor(); - $unixTime = $ts->getValue(); - - return new DateTime("@{$unixTime}"); - } - - /** - * For degraded UUIDs, throws an `UnsatisfiedDependencyException` when - * called on a 32-bit system - * - * @throws UnsatisfiedDependencyException if called on a 32-bit system - */ - public function getFields() - { - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' on a 32-bit system, since some ' - . 'values overflow the system max integer value' - . '; consider calling getFieldsHex instead' - ); - } - - /** - * For degraded UUIDs, throws an `UnsatisfiedDependencyException` when - * called on a 32-bit system - * - * @throws UnsatisfiedDependencyException if called on a 32-bit system - */ - public function getNode() - { - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' on a 32-bit system, since node ' - . 'is an unsigned 48-bit integer and can overflow the system ' - . 'max integer value' - . '; consider calling getNodeHex instead' - ); - } - - /** - * For degraded UUIDs, throws an `UnsatisfiedDependencyException` when - * called on a 32-bit system - * - * @throws UnsatisfiedDependencyException if called on a 32-bit system - */ - public function getTimeLow() - { - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' on a 32-bit system, since time_low ' - . 'is an unsigned 32-bit integer and can overflow the system ' - . 'max integer value' - . '; consider calling getTimeLowHex instead' - ); - } - - /** - * For degraded UUIDs, throws an `UnsatisfiedDependencyException` when - * called on a 32-bit system - * - * @throws UnsatisfiedDependencyException if called on a 32-bit system - * @throws UnsupportedOperationException If this UUID is not a version 1 UUID - */ - public function getTimestamp() - { - if ($this->getVersion() != 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - throw new UnsatisfiedDependencyException( - 'Cannot call ' . __METHOD__ . ' on a 32-bit system, since timestamp ' - . 'is an unsigned 60-bit integer and can overflow the system ' - . 'max integer value' - . '; consider calling getTimestampHex instead' - ); - } } diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php b/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php new file mode 100644 index 000000000..ed6d9dec8 --- /dev/null +++ b/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php @@ -0,0 +1,147 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; + +/** + * This interface encapsulates deprecated methods for ramsey/uuid; this + * interface and its methods will be removed in ramsey/uuid 5.0.0. + * + * @psalm-immutable + */ +interface DeprecatedUuidInterface +{ + /** + * @deprecated This method will be removed in 5.0.0. There is no alternative + * recommendation, so plan accordingly. + */ + public function getNumberConverter(): NumberConverterInterface; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. + * + * @return string[] + */ + public function getFieldsHex(): array; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqHiAndReserved()}. + */ + public function getClockSeqHiAndReservedHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqLow()}. + */ + public function getClockSeqLowHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeq()}. + */ + public function getClockSequenceHex(): string; + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed from the + * interface. It is available at {@see UuidV1::getDateTime()}. + */ + public function getDateTime(): DateTimeInterface; + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBitsHex(): string; + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBitsHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getNode()}. + */ + public function getNodeHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeHiAndVersion()}. + */ + public function getTimeHiAndVersionHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeLow()}. + */ + public function getTimeLowHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeMid()}. + */ + public function getTimeMidHex(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimestamp()}. + */ + public function getTimestampHex(): string; + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed from this + * interface. It has moved to {@see \Ramsey\Uuid\Rfc4122\UuidInterface::getUrn()}. + */ + public function getUrn(): string; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. + */ + public function getVariant(): ?int; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. + */ + public function getVersion(): ?int; +} diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php b/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php new file mode 100644 index 000000000..342829523 --- /dev/null +++ b/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php @@ -0,0 +1,370 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Throwable; + +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * This trait encapsulates deprecated methods for ramsey/uuid; this trait and + * its methods will be removed in ramsey/uuid 5.0.0. + * + * @psalm-immutable + */ +trait DeprecatedUuidMethodsTrait +{ + /** + * @var Rfc4122FieldsInterface + */ + protected $fields; + + /** + * @var NumberConverterInterface + */ + protected $numberConverter; + + /** + * @var TimeConverterInterface + */ + protected $timeConverter; + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSeqHiAndReserved(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeqHiAndReserved()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()}. + */ + public function getClockSeqHiAndReservedHex(): string + { + return $this->fields->getClockSeqHiAndReserved()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSeqLow(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeqLow()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()}. + */ + public function getClockSeqLowHex(): string + { + return $this->fields->getClockSeqLow()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getClockSequence(): string + { + return $this->numberConverter->fromHex($this->fields->getClockSeq()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()}. + */ + public function getClockSequenceHex(): string + { + return $this->fields->getClockSeq()->toString(); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no alternative + * recommendation, so plan accordingly. + */ + public function getNumberConverter(): NumberConverterInterface + { + return $this->numberConverter; + } + + /** + * @deprecated In ramsey/uuid version 5.0.0, this will be removed. + * It is available at {@see UuidV1::getDateTime()}. + * + * @return DateTimeImmutable An immutable instance of DateTimeInterface + * + * @throws UnsupportedOperationException if UUID is not time-based + * @throws DateTimeException if DateTime throws an exception/error + */ + public function getDateTime(): DateTimeInterface + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. + * + * @return string[] + */ + public function getFieldsHex(): array + { + return [ + 'time_low' => $this->fields->getTimeLow()->toString(), + 'time_mid' => $this->fields->getTimeMid()->toString(), + 'time_hi_and_version' => $this->fields->getTimeHiAndVersion()->toString(), + 'clock_seq_hi_and_reserved' => $this->fields->getClockSeqHiAndReserved()->toString(), + 'clock_seq_low' => $this->fields->getClockSeqLow()->toString(), + 'node' => $this->fields->getNode()->toString(), + ]; + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBits(): string + { + $leastSignificantHex = substr($this->getHex()->toString(), 16); + + return $this->numberConverter->fromHex($leastSignificantHex); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getLeastSignificantBitsHex(): string + { + return substr($this->getHex()->toString(), 16); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBits(): string + { + $mostSignificantHex = substr($this->getHex()->toString(), 0, 16); + + return $this->numberConverter->fromHex($mostSignificantHex); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + */ + public function getMostSignificantBitsHex(): string + { + return substr($this->getHex()->toString(), 0, 16); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getNode(): string + { + return $this->numberConverter->fromHex($this->fields->getNode()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()}. + */ + public function getNodeHex(): string + { + return $this->fields->getNode()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeHiAndVersion(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeHiAndVersion()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()}. + */ + public function getTimeHiAndVersionHex(): string + { + return $this->fields->getTimeHiAndVersion()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeLow(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeLow()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()}. + */ + public function getTimeLowHex(): string + { + return $this->fields->getTimeLow()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimeMid(): string + { + return $this->numberConverter->fromHex($this->fields->getTimeMid()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()}. + */ + public function getTimeMidHex(): string + { + return $this->fields->getTimeMid()->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + */ + public function getTimestamp(): string + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $this->numberConverter->fromHex($this->fields->getTimestamp()->toString()); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()}. + */ + public function getTimestampHex(): string + { + if ($this->fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $this->fields->getTimestamp()->toString(); + } + + /** + * @deprecated This has moved to {@see Rfc4122FieldsInterface::getUrn()} and + * is available on {@see \Ramsey\Uuid\Rfc4122\UuidV1}, + * {@see \Ramsey\Uuid\Rfc4122\UuidV3}, {@see \Ramsey\Uuid\Rfc4122\UuidV4}, + * and {@see \Ramsey\Uuid\Rfc4122\UuidV5}. + */ + public function getUrn(): string + { + return 'urn:uuid:' . $this->toString(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. + */ + public function getVariant(): ?int + { + return $this->fields->getVariant(); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call + * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. + */ + public function getVersion(): ?int + { + return $this->fields->getVersion(); + } +} diff --git a/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php b/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php new file mode 100644 index 000000000..220ffedb8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that no suitable builder could be found + */ +class BuilderNotFoundException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/DateTimeException.php b/vendor/ramsey/uuid/src/Exception/DateTimeException.php new file mode 100644 index 000000000..5f0e658bf --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/DateTimeException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the PHP DateTime extension encountered an exception/error + */ +class DateTimeException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/DceSecurityException.php b/vendor/ramsey/uuid/src/Exception/DceSecurityException.php new file mode 100644 index 000000000..e6d800136 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/DceSecurityException.php @@ -0,0 +1,25 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate an exception occurred while dealing with DCE Security + * (version 2) UUIDs + */ +class DceSecurityException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php b/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..2a1fa3ac2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use InvalidArgumentException as PhpInvalidArgumentException; + +/** + * Thrown to indicate that the argument received is not valid + */ +class InvalidArgumentException extends PhpInvalidArgumentException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php b/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php new file mode 100644 index 000000000..1c94f6596 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the bytes being operated on are invalid in some way + */ +class InvalidBytesException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php b/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php index 7df0e8cce..6d9758166 100644 --- a/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php +++ b/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,18 +8,18 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Exception; -use InvalidArgumentException; - /** - * Thrown to indicate that the parsed UUID string is invalid. + * Thrown to indicate that the string received is not a valid UUID + * + * The InvalidArgumentException that this extends is the ramsey/uuid version + * of this exception. It exists in the same namespace as this class. */ -class InvalidUuidStringException extends InvalidArgumentException +class InvalidUuidStringException extends InvalidArgumentException implements UuidExceptionInterface { } diff --git a/vendor/ramsey/uuid/src/Exception/NameException.php b/vendor/ramsey/uuid/src/Exception/NameException.php new file mode 100644 index 000000000..fd96a1faf --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/NameException.php @@ -0,0 +1,25 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that an error occurred while attempting to hash a + * namespace and name + */ +class NameException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/NodeException.php b/vendor/ramsey/uuid/src/Exception/NodeException.php new file mode 100644 index 000000000..0dbdd50b4 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/NodeException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that attempting to fetch or create a node ID encountered an error + */ +class NodeException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/RandomSourceException.php b/vendor/ramsey/uuid/src/Exception/RandomSourceException.php new file mode 100644 index 000000000..a44dd34a2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/RandomSourceException.php @@ -0,0 +1,27 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the source of random data encountered an error + * + * This exception is used mostly to indicate that random_bytes() or random_int() + * threw an exception. However, it may be used for other sources of random data. + */ +class RandomSourceException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/TimeSourceException.php b/vendor/ramsey/uuid/src/Exception/TimeSourceException.php new file mode 100644 index 000000000..fc9cf36b6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/TimeSourceException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate that the source of time encountered an error + */ +class TimeSourceException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php b/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php new file mode 100644 index 000000000..5ba26d8dc --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php @@ -0,0 +1,24 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use RuntimeException as PhpRuntimeException; + +/** + * Thrown to indicate a builder is unable to build a UUID + */ +class UnableToBuildUuidException extends PhpRuntimeException implements UuidExceptionInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Exception/UnsatisfiedDependencyException.php b/vendor/ramsey/uuid/src/Exception/UnsatisfiedDependencyException.php deleted file mode 100644 index 89c739658..000000000 --- a/vendor/ramsey/uuid/src/Exception/UnsatisfiedDependencyException.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * This file is part of the ramsey/uuid library - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> - * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub - */ - -namespace Ramsey\Uuid\Exception; - -use RuntimeException; - -/** - * Thrown to indicate that the requested operation has dependencies that have not - * been satisfied. - */ -class UnsatisfiedDependencyException extends RuntimeException -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php index 43409470d..e1b3eda17 100644 --- a/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php +++ b/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,18 +8,17 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Exception; -use RuntimeException; +use LogicException as PhpLogicException; /** - * Thrown to indicate that the requested operation is not supported. + * Thrown to indicate that the requested operation is not supported */ -class UnsupportedOperationException extends RuntimeException +class UnsupportedOperationException extends PhpLogicException implements UuidExceptionInterface { } diff --git a/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php b/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php new file mode 100644 index 000000000..a2f1c103b --- /dev/null +++ b/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php @@ -0,0 +1,21 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Exception; + +use Throwable; + +interface UuidExceptionInterface extends Throwable +{ +} diff --git a/vendor/ramsey/uuid/src/FeatureSet.php b/vendor/ramsey/uuid/src/FeatureSet.php index 2027b9e02..a8ab2fdbb 100644 --- a/vendor/ramsey/uuid/src/FeatureSet.php +++ b/vendor/ramsey/uuid/src/FeatureSet.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,41 +8,58 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Generator\PeclUuidTimeGenerator; -use Ramsey\Uuid\Provider\Node\FallbackNodeProvider; -use Ramsey\Uuid\Provider\Node\RandomNodeProvider; -use Ramsey\Uuid\Provider\Node\SystemNodeProvider; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\Number\BigNumberConverter; -use Ramsey\Uuid\Converter\Number\DegradedNumberConverter; -use Ramsey\Uuid\Converter\Time\BigNumberTimeConverter; -use Ramsey\Uuid\Converter\Time\DegradedTimeConverter; -use Ramsey\Uuid\Converter\Time\PhpTimeConverter; -use Ramsey\Uuid\Provider\Time\SystemTimeProvider; +use Ramsey\Uuid\Builder\BuilderCollection; +use Ramsey\Uuid\Builder\FallbackBuilder; use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Builder\DefaultUuidBuilder; use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Codec\StringCodec; use Ramsey\Uuid\Codec\GuidStringCodec; -use Ramsey\Uuid\Builder\DegradedUuidBuilder; +use Ramsey\Uuid\Codec\StringCodec; +use Ramsey\Uuid\Converter\Number\GenericNumberConverter; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\Time\GenericTimeConverter; +use Ramsey\Uuid\Converter\Time\PhpTimeConverter; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Generator\DceSecurityGenerator; +use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; +use Ramsey\Uuid\Generator\NameGeneratorFactory; +use Ramsey\Uuid\Generator\NameGeneratorInterface; +use Ramsey\Uuid\Generator\PeclUuidNameGenerator; +use Ramsey\Uuid\Generator\PeclUuidRandomGenerator; +use Ramsey\Uuid\Generator\PeclUuidTimeGenerator; use Ramsey\Uuid\Generator\RandomGeneratorFactory; use Ramsey\Uuid\Generator\RandomGeneratorInterface; use Ramsey\Uuid\Generator\TimeGeneratorFactory; use Ramsey\Uuid\Generator\TimeGeneratorInterface; -use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Guid\GuidBuilder; +use Ramsey\Uuid\Math\BrickMathCalculator; +use Ramsey\Uuid\Math\CalculatorInterface; +use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; +use Ramsey\Uuid\Provider\Dce\SystemDceSecurityProvider; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Provider\Node\FallbackNodeProvider; +use Ramsey\Uuid\Provider\Node\NodeProviderCollection; +use Ramsey\Uuid\Provider\Node\RandomNodeProvider; +use Ramsey\Uuid\Provider\Node\SystemNodeProvider; use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\Time\SystemTimeProvider; +use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; +use Ramsey\Uuid\Validator\GenericValidator; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use const PHP_INT_SIZE; /** * FeatureSet detects and exposes available features in the current environment - * (32- or 64-bit, available dependencies, etc.) + * + * A feature set is used by UuidFactory to determine the available features and + * capabilities of the environment. */ class FeatureSet { @@ -75,6 +93,16 @@ class FeatureSet */ private $codec; + /** + * @var DceSecurityGeneratorInterface + */ + private $dceSecurityGenerator; + + /** + * @var NameGeneratorInterface + */ + private $nameGenerator; + /** * @var NodeProviderInterface */ @@ -85,6 +113,11 @@ class FeatureSet */ private $numberConverter; + /** + * @var TimeConverterInterface + */ + private $timeConverter; + /** * @var RandomGeneratorInterface */ @@ -96,117 +129,197 @@ class FeatureSet private $timeGenerator; /** - * Constructs a `FeatureSet` for use by a `UuidFactory` to determine or set - * features available to the environment - * - * @param bool $useGuids Whether to build UUIDs using the `GuidStringCodec` - * @param bool $force32Bit Whether to force the use of 32-bit functionality + * @var TimeProviderInterface + */ + private $timeProvider; + + /** + * @var ValidatorInterface + */ + private $validator; + + /** + * @var CalculatorInterface + */ + private $calculator; + + /** + * @param bool $useGuids True build UUIDs using the GuidStringCodec + * @param bool $force32Bit True to force the use of 32-bit functionality * (primarily for testing purposes) - * @param bool $forceNoBigNumber Whether to disable the use of moontoast/math - * `BigNumber` (primarily for testing purposes) - * @param bool $ignoreSystemNode Whether to disable attempts to check for - * the system host ID (primarily for testing purposes) - * @param bool $enablePecl Whether to enable the use of the `PeclUuidTimeGenerator` + * @param bool $forceNoBigNumber True to disable the use of moontoast/math + * (primarily for testing purposes) + * @param bool $ignoreSystemNode True to disable attempts to check for the + * system node ID (primarily for testing purposes) + * @param bool $enablePecl True to enable the use of the PeclUuidTimeGenerator * to generate version 1 UUIDs */ public function __construct( - $useGuids = false, - $force32Bit = false, - $forceNoBigNumber = false, - $ignoreSystemNode = false, - $enablePecl = false + bool $useGuids = false, + bool $force32Bit = false, + bool $forceNoBigNumber = false, + bool $ignoreSystemNode = false, + bool $enablePecl = false ) { $this->disableBigNumber = $forceNoBigNumber; $this->disable64Bit = $force32Bit; $this->ignoreSystemNode = $ignoreSystemNode; $this->enablePecl = $enablePecl; - $this->numberConverter = $this->buildNumberConverter(); - $this->builder = $this->buildUuidBuilder(); + $this->setCalculator(new BrickMathCalculator()); + $this->builder = $this->buildUuidBuilder($useGuids); $this->codec = $this->buildCodec($useGuids); $this->nodeProvider = $this->buildNodeProvider(); + $this->nameGenerator = $this->buildNameGenerator(); $this->randomGenerator = $this->buildRandomGenerator(); $this->setTimeProvider(new SystemTimeProvider()); + $this->setDceSecurityProvider(new SystemDceSecurityProvider()); + $this->validator = new GenericValidator(); } /** * Returns the builder configured for this environment - * - * @return UuidBuilderInterface */ - public function getBuilder() + public function getBuilder(): UuidBuilderInterface { return $this->builder; } /** - * Returns the UUID UUID coder-decoder configured for this environment - * - * @return CodecInterface + * Returns the calculator configured for this environment */ - public function getCodec() + public function getCalculator(): CalculatorInterface + { + return $this->calculator; + } + + /** + * Returns the codec configured for this environment + */ + public function getCodec(): CodecInterface { return $this->codec; } /** - * Returns the system node ID provider configured for this environment - * - * @return NodeProviderInterface + * Returns the DCE Security generator configured for this environment */ - public function getNodeProvider() + public function getDceSecurityGenerator(): DceSecurityGeneratorInterface + { + return $this->dceSecurityGenerator; + } + + /** + * Returns the name generator configured for this environment + */ + public function getNameGenerator(): NameGeneratorInterface + { + return $this->nameGenerator; + } + + /** + * Returns the node provider configured for this environment + */ + public function getNodeProvider(): NodeProviderInterface { return $this->nodeProvider; } /** * Returns the number converter configured for this environment - * - * @return NumberConverterInterface */ - public function getNumberConverter() + public function getNumberConverter(): NumberConverterInterface { return $this->numberConverter; } /** - * Returns the random UUID generator configured for this environment - * - * @return RandomGeneratorInterface + * Returns the random generator configured for this environment */ - public function getRandomGenerator() + public function getRandomGenerator(): RandomGeneratorInterface { return $this->randomGenerator; } /** - * Returns the time-based UUID generator configured for this environment - * - * @return TimeGeneratorInterface + * Returns the time converter configured for this environment */ - public function getTimeGenerator() + public function getTimeConverter(): TimeConverterInterface + { + return $this->timeConverter; + } + + /** + * Returns the time generator configured for this environment + */ + public function getTimeGenerator(): TimeGeneratorInterface { return $this->timeGenerator; } /** - * Sets the time provider for use in this environment - * - * @param TimeProviderInterface $timeProvider + * Returns the validator configured for this environment */ - public function setTimeProvider(TimeProviderInterface $timeProvider) + public function getValidator(): ValidatorInterface { + return $this->validator; + } + + /** + * Sets the calculator to use in this environment + */ + public function setCalculator(CalculatorInterface $calculator): void + { + $this->calculator = $calculator; + $this->numberConverter = $this->buildNumberConverter($calculator); + $this->timeConverter = $this->buildTimeConverter($calculator); + + /** @psalm-suppress RedundantPropertyInitializationCheck */ + if (isset($this->timeProvider)) { + $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); + } + } + + /** + * Sets the DCE Security provider to use in this environment + */ + public function setDceSecurityProvider(DceSecurityProviderInterface $dceSecurityProvider): void + { + $this->dceSecurityGenerator = $this->buildDceSecurityGenerator($dceSecurityProvider); + } + + /** + * Sets the node provider to use in this environment + */ + public function setNodeProvider(NodeProviderInterface $nodeProvider): void + { + $this->nodeProvider = $nodeProvider; + $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); + } + + /** + * Sets the time provider to use in this environment + */ + public function setTimeProvider(TimeProviderInterface $timeProvider): void + { + $this->timeProvider = $timeProvider; $this->timeGenerator = $this->buildTimeGenerator($timeProvider); } /** - * Determines which UUID coder-decoder to use and returns the configured - * codec for this environment - * - * @param bool $useGuids Whether to build UUIDs using the `GuidStringCodec` - * @return CodecInterface + * Set the validator to use in this environment */ - protected function buildCodec($useGuids = false) + public function setValidator(ValidatorInterface $validator): void + { + $this->validator = $validator; + } + + /** + * Returns a codec configured for this environment + * + * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec + */ + private function buildCodec(bool $useGuids = false): CodecInterface { if ($useGuids) { return new GuidStringCodec($this->builder); @@ -216,57 +329,60 @@ class FeatureSet } /** - * Determines which system node ID provider to use and returns the configured - * system node ID provider for this environment - * - * @return NodeProviderInterface + * Returns a DCE Security generator configured for this environment */ - protected function buildNodeProvider() + private function buildDceSecurityGenerator( + DceSecurityProviderInterface $dceSecurityProvider + ): DceSecurityGeneratorInterface { + return new DceSecurityGenerator( + $this->numberConverter, + $this->timeGenerator, + $dceSecurityProvider + ); + } + + /** + * Returns a node provider configured for this environment + */ + private function buildNodeProvider(): NodeProviderInterface { if ($this->ignoreSystemNode) { return new RandomNodeProvider(); } - return new FallbackNodeProvider([ + return new FallbackNodeProvider(new NodeProviderCollection([ new SystemNodeProvider(), - new RandomNodeProvider() - ]); + new RandomNodeProvider(), + ])); } /** - * Determines which number converter to use and returns the configured - * number converter for this environment - * - * @return NumberConverterInterface + * Returns a number converter configured for this environment */ - protected function buildNumberConverter() + private function buildNumberConverter(CalculatorInterface $calculator): NumberConverterInterface { - if ($this->hasBigNumber()) { - return new BigNumberConverter(); + return new GenericNumberConverter($calculator); + } + + /** + * Returns a random generator configured for this environment + */ + private function buildRandomGenerator(): RandomGeneratorInterface + { + if ($this->enablePecl) { + return new PeclUuidRandomGenerator(); } - return new DegradedNumberConverter(); - } - - /** - * Determines which random UUID generator to use and returns the configured - * random UUID generator for this environment - * - * @return RandomGeneratorInterface - */ - protected function buildRandomGenerator() - { return (new RandomGeneratorFactory())->getGenerator(); } /** - * Determines which time-based UUID generator to use and returns the configured - * time-based UUID generator for this environment + * Returns a time generator configured for this environment * - * @param TimeProviderInterface $timeProvider - * @return TimeGeneratorInterface + * @param TimeProviderInterface $timeProvider The time provider to use with + * the time generator */ - protected function buildTimeGenerator(TimeProviderInterface $timeProvider) + private function buildTimeGenerator(TimeProviderInterface $timeProvider): TimeGeneratorInterface { if ($this->enablePecl) { return new PeclUuidTimeGenerator(); @@ -274,62 +390,60 @@ class FeatureSet return (new TimeGeneratorFactory( $this->nodeProvider, - $this->buildTimeConverter(), + $this->timeConverter, $timeProvider ))->getGenerator(); } /** - * Determines which time converter to use and returns the configured - * time converter for this environment - * - * @return TimeConverterInterface + * Returns a name generator configured for this environment */ - protected function buildTimeConverter() + private function buildNameGenerator(): NameGeneratorInterface { + if ($this->enablePecl) { + return new PeclUuidNameGenerator(); + } + + return (new NameGeneratorFactory())->getGenerator(); + } + + /** + * Returns a time converter configured for this environment + */ + private function buildTimeConverter(CalculatorInterface $calculator): TimeConverterInterface + { + $genericConverter = new GenericTimeConverter($calculator); + if ($this->is64BitSystem()) { - return new PhpTimeConverter(); + return new PhpTimeConverter($calculator, $genericConverter); } - if ($this->hasBigNumber()) { - return new BigNumberTimeConverter(); - } - - return new DegradedTimeConverter(); + return $genericConverter; } /** - * Determines which UUID builder to use and returns the configured UUID - * builder for this environment + * Returns a UUID builder configured for this environment * - * @return UuidBuilderInterface + * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec */ - protected function buildUuidBuilder() + private function buildUuidBuilder(bool $useGuids = false): UuidBuilderInterface { - if ($this->is64BitSystem()) { - return new DefaultUuidBuilder($this->numberConverter); + if ($useGuids) { + return new GuidBuilder($this->numberConverter, $this->timeConverter); } - return new DegradedUuidBuilder($this->numberConverter); + /** @psalm-suppress ImpureArgument */ + return new FallbackBuilder(new BuilderCollection([ + new Rfc4122UuidBuilder($this->numberConverter, $this->timeConverter), + new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter), + ])); } /** - * Returns true if the system has `Moontoast\Math\BigNumber` - * - * @return bool + * Returns true if the PHP build is 64-bit */ - protected function hasBigNumber() + private function is64BitSystem(): bool { - return class_exists('Moontoast\Math\BigNumber') && !$this->disableBigNumber; - } - - /** - * Returns true if the system is 64-bit, false otherwise - * - * @return bool - */ - protected function is64BitSystem() - { - return PHP_INT_SIZE == 8 && !$this->disable64Bit; + return PHP_INT_SIZE === 8 && !$this->disable64Bit; } } diff --git a/vendor/ramsey/uuid/src/Fields/FieldsInterface.php b/vendor/ramsey/uuid/src/Fields/FieldsInterface.php new file mode 100644 index 000000000..f1b7a290d --- /dev/null +++ b/vendor/ramsey/uuid/src/Fields/FieldsInterface.php @@ -0,0 +1,32 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Fields; + +use Serializable; + +/** + * UUIDs are comprised of unsigned integers, the bytes of which are separated + * into fields and arranged in a particular layout defined by the specification + * for the variant + * + * @psalm-immutable + */ +interface FieldsInterface extends Serializable +{ + /** + * Returns the bytes that comprise the fields + */ + public function getBytes(): string; +} diff --git a/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php b/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php new file mode 100644 index 000000000..16e6525da --- /dev/null +++ b/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php @@ -0,0 +1,86 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Fields; + +use ValueError; + +use function base64_decode; +use function sprintf; +use function strlen; + +/** + * Provides common serialization functionality to fields + * + * @psalm-immutable + */ +trait SerializableFieldsTrait +{ + /** + * @param string $bytes The bytes that comprise the fields + */ + abstract public function __construct(string $bytes); + + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns a string representation of object + */ + public function serialize(): string + { + return $this->getBytes(); + } + + /** + * @return array{bytes: string} + */ + public function __serialize(): array + { + return ['bytes' => $this->getBytes()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + if (strlen($serialized) === 16) { + $this->__construct($serialized); + } else { + $this->__construct(base64_decode($serialized)); + } + } + + /** + * @param array{bytes: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['bytes'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['bytes']); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/CombGenerator.php b/vendor/ramsey/uuid/src/Generator/CombGenerator.php index 1d4a5f604..49b09381d 100644 --- a/vendor/ramsey/uuid/src/Generator/CombGenerator.php +++ b/vendor/ramsey/uuid/src/Generator/CombGenerator.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,27 +8,58 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use Exception; -use InvalidArgumentException; use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use Ramsey\Uuid\Exception\InvalidArgumentException; + +use function bin2hex; +use function explode; +use function hex2bin; +use function microtime; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; /** - * CombGenerator provides functionality to generate COMB (combined GUID/timestamp) - * sequential UUIDs + * CombGenerator generates COMBs (combined UUID/timestamp) * - * @link https://en.wikipedia.org/wiki/Globally_unique_identifier#Sequential_algorithms + * The CombGenerator, when used with the StringCodec (and, by proxy, the + * TimestampLastCombCodec) or the TimestampFirstCombCodec, combines the current + * timestamp with a UUID (hence the name "COMB"). The timestamp either appears + * as the first or last 48 bits of the COMB, depending on the codec used. + * + * By default, COMBs will have the timestamp set as the last 48 bits of the + * identifier. + * + * ``` php + * $factory = new UuidFactory(); + * + * $factory->setRandomGenerator(new CombGenerator( + * $factory->getRandomGenerator(), + * $factory->getNumberConverter() + * )); + * + * $comb = $factory->uuid4(); + * ``` + * + * To generate a COMB with the timestamp as the first 48 bits, set the + * TimestampFirstCombCodec as the codec. + * + * ``` php + * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); + * ``` + * + * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys */ class CombGenerator implements RandomGeneratorInterface { - const TIMESTAMP_BYTES = 6; + public const TIMESTAMP_BYTES = 6; /** * @var RandomGeneratorInterface @@ -39,50 +71,54 @@ class CombGenerator implements RandomGeneratorInterface */ private $converter; - /** - * Constructs a `CombGenerator` using a random-number generator and a number converter - * - * @param RandomGeneratorInterface $generator Random-number generator for the non-time part. - * @param NumberConverterInterface $numberConverter Instance of number converter. - */ - public function __construct(RandomGeneratorInterface $generator, NumberConverterInterface $numberConverter) - { + public function __construct( + RandomGeneratorInterface $generator, + NumberConverterInterface $numberConverter + ) { $this->converter = $numberConverter; $this->randomGenerator = $generator; } /** - * Generates a string of binary data of the specified length + * @throws InvalidArgumentException if $length is not a positive integer + * greater than or equal to CombGenerator::TIMESTAMP_BYTES * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException if length is not a positive integer - * @throws Exception + * @inheritDoc */ - public function generate($length) + public function generate(int $length): string { if ($length < self::TIMESTAMP_BYTES || $length < 0) { - throw new InvalidArgumentException('Length must be a positive integer.'); + throw new InvalidArgumentException( + 'Length must be a positive integer greater than or equal to ' . self::TIMESTAMP_BYTES + ); } $hash = ''; - if (self::TIMESTAMP_BYTES > 0 && $length > self::TIMESTAMP_BYTES) { $hash = $this->randomGenerator->generate($length - self::TIMESTAMP_BYTES); } - $lsbTime = str_pad($this->converter->toHex($this->timestamp()), self::TIMESTAMP_BYTES * 2, '0', STR_PAD_LEFT); + $lsbTime = str_pad( + $this->converter->toHex($this->timestamp()), + self::TIMESTAMP_BYTES * 2, + '0', + STR_PAD_LEFT + ); - return hex2bin(str_pad(bin2hex($hash), $length - self::TIMESTAMP_BYTES, '0') . $lsbTime); + return (string) hex2bin( + str_pad( + bin2hex($hash), + $length - self::TIMESTAMP_BYTES, + '0' + ) + . $lsbTime + ); } /** - * Returns current timestamp as integer, precise to 0.00001 seconds - * - * @return string + * Returns current timestamp a string integer, precise to 0.00001 seconds */ - private function timestamp() + private function timestamp(): string { $time = explode(' ', microtime(false)); diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php new file mode 100644 index 000000000..aca8c5db7 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php @@ -0,0 +1,160 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Exception\DceSecurityException; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Uuid; + +use function hex2bin; +use function in_array; +use function pack; +use function str_pad; +use function strlen; +use function substr_replace; + +use const STR_PAD_LEFT; + +/** + * DceSecurityGenerator generates strings of binary data based on a local + * domain, local identifier, node ID, clock sequence, and the current time + */ +class DceSecurityGenerator implements DceSecurityGeneratorInterface +{ + private const DOMAINS = [ + Uuid::DCE_DOMAIN_PERSON, + Uuid::DCE_DOMAIN_GROUP, + Uuid::DCE_DOMAIN_ORG, + ]; + + /** + * Upper bounds for the clock sequence in DCE Security UUIDs. + */ + private const CLOCK_SEQ_HIGH = 63; + + /** + * Lower bounds for the clock sequence in DCE Security UUIDs. + */ + private const CLOCK_SEQ_LOW = 0; + + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeGeneratorInterface + */ + private $timeGenerator; + + /** + * @var DceSecurityProviderInterface + */ + private $dceSecurityProvider; + + public function __construct( + NumberConverterInterface $numberConverter, + TimeGeneratorInterface $timeGenerator, + DceSecurityProviderInterface $dceSecurityProvider + ) { + $this->numberConverter = $numberConverter; + $this->timeGenerator = $timeGenerator; + $this->dceSecurityProvider = $dceSecurityProvider; + } + + public function generate( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): string { + if (!in_array($localDomain, self::DOMAINS)) { + throw new DceSecurityException( + 'Local domain must be a valid DCE Security domain' + ); + } + + if ($localIdentifier && $localIdentifier->isNegative()) { + throw new DceSecurityException( + 'Local identifier out of bounds; it must be a value between 0 and 4294967295' + ); + } + + if ($clockSeq > self::CLOCK_SEQ_HIGH || $clockSeq < self::CLOCK_SEQ_LOW) { + throw new DceSecurityException( + 'Clock sequence out of bounds; it must be a value between 0 and 63' + ); + } + + switch ($localDomain) { + case Uuid::DCE_DOMAIN_ORG: + if ($localIdentifier === null) { + throw new DceSecurityException( + 'A local identifier must be provided for the org domain' + ); + } + + break; + case Uuid::DCE_DOMAIN_PERSON: + if ($localIdentifier === null) { + $localIdentifier = $this->dceSecurityProvider->getUid(); + } + + break; + case Uuid::DCE_DOMAIN_GROUP: + default: + if ($localIdentifier === null) { + $localIdentifier = $this->dceSecurityProvider->getGid(); + } + + break; + } + + $identifierHex = $this->numberConverter->toHex($localIdentifier->toString()); + + // The maximum value for the local identifier is 0xffffffff, or + // 4294967295. This is 8 hexadecimal digits, so if the length of + // hexadecimal digits is greater than 8, we know the value is greater + // than 0xffffffff. + if (strlen($identifierHex) > 8) { + throw new DceSecurityException( + 'Local identifier out of bounds; it must be a value between 0 and 4294967295' + ); + } + + $domainByte = pack('n', $localDomain)[1]; + $identifierBytes = (string) hex2bin(str_pad($identifierHex, 8, '0', STR_PAD_LEFT)); + + if ($node instanceof Hexadecimal) { + $node = $node->toString(); + } + + // Shift the clock sequence 8 bits to the left, so it matches 0x3f00. + if ($clockSeq !== null) { + $clockSeq = $clockSeq << 8; + } + + $bytes = $this->timeGenerator->generate($node, $clockSeq); + + // Replace bytes in the time-based UUID with DCE Security values. + $bytes = substr_replace($bytes, $identifierBytes, 0, 4); + $bytes = substr_replace($bytes, $domainByte, 9, 1); + + return $bytes; + } +} diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php new file mode 100644 index 000000000..faa29a53d --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php @@ -0,0 +1,53 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Rfc4122\UuidV2; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * A DCE Security generator generates strings of binary data based on a local + * domain, local identifier, node ID, clock sequence, and the current time + * + * @see UuidV2 + */ +interface DceSecurityGeneratorInterface +{ + /** + * Generate a binary string from a local domain, local identifier, node ID, + * clock sequence, and current time + * + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return string A binary string + */ + public function generate( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): string; +} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php new file mode 100644 index 000000000..7303e9fa2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php @@ -0,0 +1,48 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Exception\NameException; +use Ramsey\Uuid\UuidInterface; +use ValueError; + +use function hash; + +/** + * DefaultNameGenerator generates strings of binary data based on a namespace, + * name, and hashing algorithm + */ +class DefaultNameGenerator implements NameGeneratorInterface +{ + /** @psalm-pure */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string + { + try { + /** @var string|bool $bytes */ + $bytes = @hash($hashAlgorithm, $ns->getBytes() . $name, true); + } catch (ValueError $e) { + $bytes = false; // keep same behavior than PHP 7 + } + + if ($bytes === false) { + throw new NameException(sprintf( + 'Unable to hash namespace and name with algorithm \'%s\'', + $hashAlgorithm + )); + } + + return (string) $bytes; + } +} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php index 5c5ccb294..d245c7bcc 100644 --- a/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php +++ b/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,25 +8,35 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\BinaryUtils; use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Exception\RandomSourceException; +use Ramsey\Uuid\Exception\TimeSourceException; use Ramsey\Uuid\Provider\NodeProviderInterface; use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Throwable; + +use function ctype_xdigit; +use function dechex; +use function hex2bin; +use function is_int; +use function pack; +use function sprintf; +use function str_pad; +use function strlen; + +use const STR_PAD_LEFT; /** - * DefaultTimeGenerator provides functionality to generate strings of binary - * data for version 1 UUIDs based on a host ID, sequence number, and the current - * time + * DefaultTimeGenerator generates strings of binary data based on a node ID, + * clock sequence, and the current time */ class DefaultTimeGenerator implements TimeGeneratorInterface { @@ -44,14 +55,6 @@ class DefaultTimeGenerator implements TimeGeneratorInterface */ private $timeProvider; - /** - * Constructs a `DefaultTimeGenerator` using a node provider, time converter, - * and time provider - * - * @param NodeProviderInterface $nodeProvider - * @param TimeConverterInterface $timeConverter - * @param TimeProviderInterface $timeProvider - */ public function __construct( NodeProviderInterface $nodeProvider, TimeConverterInterface $timeConverter, @@ -63,79 +66,82 @@ class DefaultTimeGenerator implements TimeGeneratorInterface } /** - * Generate a version 1 UUID from a host ID, sequence number, and the current time + * @throws InvalidArgumentException if the parameters contain invalid values + * @throws RandomSourceException if random_int() throws an exception/error * - * If $node is not given, we will attempt to obtain the local hardware - * address. If $clockSeq is given, it is used as the sequence number; - * otherwise a random 14-bit sequence number is chosen. - * - * @param int|string $node A 48-bit number representing the hardware address - * This number may be represented as an integer or a hexadecimal string. - * @param int $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes. - * @return string A binary string - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy + * @inheritDoc */ - public function generate($node = null, $clockSeq = null) + public function generate($node = null, ?int $clockSeq = null): string { + if ($node instanceof Hexadecimal) { + $node = $node->toString(); + } + $node = $this->getValidNode($node); if ($clockSeq === null) { - // Not using "stable storage"; see RFC 4122, Section 4.2.1.1 - $clockSeq = random_int(0, 0x3fff); + try { + // This does not use "stable storage"; see RFC 4122, Section 4.2.1.1. + $clockSeq = random_int(0, 0x3fff); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } } - // Create a 60-bit time value as a count of 100-nanosecond intervals - // since 00:00:00.00, 15 October 1582 - $timeOfDay = $this->timeProvider->currentTime(); - $uuidTime = $this->timeConverter->calculateTime($timeOfDay['sec'], $timeOfDay['usec']); + $time = $this->timeProvider->getTime(); - $timeHi = BinaryUtils::applyVersion($uuidTime['hi'], 1); - $clockSeqHi = BinaryUtils::applyVariant($clockSeq >> 8); - - $hex = vsprintf( - '%08s%04s%04s%02s%02s%012s', - [ - $uuidTime['low'], - $uuidTime['mid'], - sprintf('%04x', $timeHi), - sprintf('%02x', $clockSeqHi), - sprintf('%02x', $clockSeq & 0xff), - $node, - ] + $uuidTime = $this->timeConverter->calculateTime( + $time->getSeconds()->toString(), + $time->getMicroseconds()->toString() ); - return hex2bin($hex); + $timeHex = str_pad($uuidTime->toString(), 16, '0', STR_PAD_LEFT); + + if (strlen($timeHex) !== 16) { + throw new TimeSourceException(sprintf( + 'The generated time of \'%s\' is larger than expected', + $timeHex + )); + } + + $timeBytes = (string) hex2bin($timeHex); + + return $timeBytes[4] . $timeBytes[5] . $timeBytes[6] . $timeBytes[7] + . $timeBytes[2] . $timeBytes[3] + . $timeBytes[0] . $timeBytes[1] + . pack('n*', $clockSeq) + . $node; } /** * Uses the node provider given when constructing this instance to get * the node ID (usually a MAC address) * - * @param string|int $node A node value that may be used to override the node provider - * @return string Hexadecimal representation of the node ID + * @param string|int|null $node A node value that may be used to override the node provider + * + * @return string 6-byte binary string representation of the node + * * @throws InvalidArgumentException - * @throws Exception */ - protected function getValidNode($node) + private function getValidNode($node): string { if ($node === null) { $node = $this->nodeProvider->getNode(); } - // Convert the node to hex, if it is still an integer + // Convert the node to hex, if it is still an integer. if (is_int($node)) { - $node = sprintf('%012x', $node); + $node = dechex($node); } - if (!ctype_xdigit($node) || strlen($node) > 12) { + if (!ctype_xdigit((string) $node) || strlen((string) $node) > 12) { throw new InvalidArgumentException('Invalid node value'); } - return strtolower(sprintf('%012s', $node)); + return (string) hex2bin(str_pad((string) $node, 12, '0', STR_PAD_LEFT)); } } diff --git a/vendor/ramsey/uuid/src/Generator/MtRandGenerator.php b/vendor/ramsey/uuid/src/Generator/MtRandGenerator.php deleted file mode 100644 index 8d4b5f9b9..000000000 --- a/vendor/ramsey/uuid/src/Generator/MtRandGenerator.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * This file is part of the ramsey/uuid library - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> - * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub - */ - -namespace Ramsey\Uuid\Generator; - -/** - * MtRandRandomGenerator provides functionality to generate strings of random - * binary data using the `mt_rand()` PHP function - * - * @deprecated The mt_rand() function is not a reliable source of randomness. - * The default RandomBytesGenerator, which uses the random_bytes() function, - * is recommended as the safest and most reliable source of randomness. - * <em>This generator will be removed in ramsey/uuid 4.0.0.</em> - * @link http://php.net/mt_rand - */ -class MtRandGenerator implements RandomGeneratorInterface -{ - /** - * Generates a string of random binary data of the specified length - * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - */ - public function generate($length) - { - $bytes = ''; - - for ($i = 1; $i <= $length; $i++) { - $bytes = chr(mt_rand(0, 255)) . $bytes; - } - - return $bytes; - } -} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php new file mode 100644 index 000000000..6f08e2910 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php @@ -0,0 +1,30 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +/** + * NameGeneratorFactory retrieves a default name generator, based on the + * environment + */ +class NameGeneratorFactory +{ + /** + * Returns a default name generator, based on the current environment + */ + public function getGenerator(): NameGeneratorInterface + { + return new DefaultNameGenerator(); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php new file mode 100644 index 000000000..cc43dd029 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php @@ -0,0 +1,38 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\UuidInterface; + +/** + * A name generator generates strings of binary data created by hashing together + * a namespace with a name, according to a hashing algorithm + */ +interface NameGeneratorInterface +{ + /** + * Generate a binary string from a namespace and name hashed together with + * the specified hashing algorithm + * + * @param UuidInterface $ns The namespace + * @param string $name The name to use for creating a UUID + * @param string $hashAlgorithm The hashing algorithm to use + * + * @return string A binary string + * + * @psalm-pure + */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string; +} diff --git a/vendor/ramsey/uuid/src/Generator/OpenSslGenerator.php b/vendor/ramsey/uuid/src/Generator/OpenSslGenerator.php deleted file mode 100644 index 47abf9bb5..000000000 --- a/vendor/ramsey/uuid/src/Generator/OpenSslGenerator.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/** - * This file is part of the ramsey/uuid library - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> - * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub - */ - -namespace Ramsey\Uuid\Generator; - -/** - * OpenSslRandomGenerator provides functionality to generate strings of random - * binary data using the `openssl_random_pseudo_bytes()` PHP function - * - * The use of this generator requires PHP to be compiled using the - * `--with-openssl` option. - * - * @deprecated The openssl_random_pseudo_bytes() function is not a reliable - * source of randomness. The default RandomBytesGenerator, which uses the - * random_bytes() function, is recommended as the safest and most reliable - * source of randomness. - * <em>This generator will be removed in ramsey/uuid 4.0.0.</em> - * @link http://php.net/openssl_random_pseudo_bytes - */ -class OpenSslGenerator implements RandomGeneratorInterface -{ - /** - * Generates a string of random binary data of the specified length - * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - */ - public function generate($length) - { - return openssl_random_pseudo_bytes($length); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php new file mode 100644 index 000000000..3780c5c60 --- /dev/null +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php @@ -0,0 +1,54 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Generator; + +use Ramsey\Uuid\Exception\NameException; +use Ramsey\Uuid\UuidInterface; + +use function sprintf; +use function uuid_generate_md5; +use function uuid_generate_sha1; +use function uuid_parse; + +/** + * PeclUuidNameGenerator generates strings of binary data from a namespace and a + * name, using ext-uuid + * + * @link https://pecl.php.net/package/uuid ext-uuid + */ +class PeclUuidNameGenerator implements NameGeneratorInterface +{ + /** @psalm-pure */ + public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string + { + switch ($hashAlgorithm) { + case 'md5': + $uuid = uuid_generate_md5($ns->toString(), $name); + + break; + case 'sha1': + $uuid = uuid_generate_sha1($ns->toString(), $name); + + break; + default: + throw new NameException(sprintf( + 'Unable to hash namespace and name with algorithm \'%s\'', + $hashAlgorithm + )); + } + + return uuid_parse($uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php index fc2ef7e4d..07c47d265 100644 --- a/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,28 +8,25 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; +use function uuid_create; +use function uuid_parse; + +use const UUID_TYPE_RANDOM; + /** - * PeclUuidRandomGenerator provides functionality to generate strings of random - * binary data using the PECL UUID PHP extension + * PeclUuidRandomGenerator generates strings of random binary data using ext-uuid * - * @link https://pecl.php.net/package/uuid + * @link https://pecl.php.net/package/uuid ext-uuid */ class PeclUuidRandomGenerator implements RandomGeneratorInterface { - /** - * Generates a string of random binary data of the specified length - * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - */ - public function generate($length) + public function generate(int $length): string { $uuid = uuid_create(UUID_TYPE_RANDOM); diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php index 7ccf16fd9..e01f44e52 100644 --- a/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php +++ b/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,29 +8,29 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; +use function uuid_create; +use function uuid_parse; + +use const UUID_TYPE_TIME; + /** - * PeclUuidTimeGenerator provides functionality to generate strings of binary - * data for version 1 UUIDs using the PECL UUID PHP extension + * PeclUuidTimeGenerator generates strings of binary data for time-base UUIDs, + * using ext-uuid * - * @link https://pecl.php.net/package/uuid + * @link https://pecl.php.net/package/uuid ext-uuid */ class PeclUuidTimeGenerator implements TimeGeneratorInterface { /** - * Generate a version 1 UUID using the PECL UUID extension - * - * @param int|string $node Not used in this context - * @param int $clockSeq Not used in this context - * @return string A binary string + * @inheritDoc */ - public function generate($node = null, $clockSeq = null) + public function generate($node = null, ?int $clockSeq = null): string { $uuid = uuid_create(UUID_TYPE_TIME); diff --git a/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php b/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php index cc3d37989..12edb96ae 100644 --- a/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php +++ b/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,33 +8,38 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use Exception; +use Ramsey\Uuid\Exception\RandomSourceException; +use Throwable; /** - * RandomBytesGenerator provides functionality to generate strings of random - * binary data using `random_bytes()` function in PHP 7+ or paragonie/random_compat + * RandomBytesGenerator generates strings of random binary data using the + * built-in `random_bytes()` PHP function * - * @link http://php.net/random_bytes - * @link https://github.com/paragonie/random_compat + * @link http://php.net/random_bytes random_bytes() */ class RandomBytesGenerator implements RandomGeneratorInterface { /** - * Generates a string of random binary data of the specified length + * @throws RandomSourceException if random_bytes() throws an exception/error * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - * @throws Exception if it was not possible to gather sufficient entropy + * @inheritDoc */ - public function generate($length) + public function generate(int $length): string { - return random_bytes($length); + try { + return random_bytes($length); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } } } diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php index 39110622f..b723ac29e 100644 --- a/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php +++ b/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,24 +8,22 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; /** - * A factory for retrieving a random generator, based on the environment + * RandomGeneratorFactory retrieves a default random generator, based on the + * environment */ class RandomGeneratorFactory { /** * Returns a default random generator, based on the current environment - * - * @return RandomGeneratorInterface */ - public static function getGenerator() + public function getGenerator(): RandomGeneratorInterface { return new RandomBytesGenerator(); } diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php index b791d60d4..5c83cb4d8 100644 --- a/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php +++ b/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,31 +8,23 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; - /** - * RandomGeneratorInterface provides functionality to generate strings of random - * binary data + * A random generator generates strings of random binary data */ interface RandomGeneratorInterface { /** - * Generates a string of random binary data of the specified length + * Generates a string of randomized binary data + * + * @param int $length The number of bytes of random binary data to generate * - * @param integer $length The number of bytes of random binary data to generate * @return string A binary string - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy */ - public function generate($length); + public function generate(int $length): string; } diff --git a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php index 5aa0e8865..24ed56920 100644 --- a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php +++ b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,21 +8,20 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use RandomLib\Generator; use RandomLib\Factory; +use RandomLib\Generator; /** - * RandomLibAdapter provides functionality to generate strings of random - * binary data using the paragonie/random-lib library + * RandomLibAdapter generates strings of random binary data using the + * paragonie/random-lib library * - * @link https://packagist.org/packages/paragonie/random-lib + * @link https://packagist.org/packages/paragonie/random-lib paragonie/random-lib */ class RandomLibAdapter implements RandomGeneratorInterface { @@ -31,31 +31,24 @@ class RandomLibAdapter implements RandomGeneratorInterface private $generator; /** - * Constructs a `RandomLibAdapter` using a `RandomLib\Generator` + * Constructs a RandomLibAdapter * - * By default, if no `Generator` is passed in, this creates a high-strength + * By default, if no Generator is passed in, this creates a high-strength * generator to use when generating random binary data. * - * @param Generator $generator An paragonie/random-lib `Generator` + * @param Generator|null $generator The generator to use when generating binary data */ - public function __construct(Generator $generator = null) + public function __construct(?Generator $generator = null) { - $this->generator = $generator; - - if ($this->generator === null) { + if ($generator === null) { $factory = new Factory(); - - $this->generator = $factory->getHighStrengthGenerator(); + $generator = $factory->getHighStrengthGenerator(); } + + $this->generator = $generator; } - /** - * Generates a string of random binary data of the specified length - * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - */ - public function generate($length) + public function generate(int $length): string { return $this->generator->generate($length); } diff --git a/vendor/ramsey/uuid/src/Generator/SodiumRandomGenerator.php b/vendor/ramsey/uuid/src/Generator/SodiumRandomGenerator.php deleted file mode 100644 index f4ccf8593..000000000 --- a/vendor/ramsey/uuid/src/Generator/SodiumRandomGenerator.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -/** - * This file is part of the ramsey/uuid library - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> - * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub - */ - -namespace Ramsey\Uuid\Generator; - -/** - * SodiumRandomGenerator provides functionality to generate strings of random - * binary data using the PECL libsodium extension - * - * @deprecated As of PHP 7.2.0, the libsodium extension is bundled with PHP, and - * the random_bytes() PHP function is now the recommended method for - * generating random byes. The default RandomBytesGenerator uses the - * random_bytes() function. - * <em>This generator will be removed in ramsey/uuid 4.0.0.</em> - * @link http://pecl.php.net/package/libsodium - * @link https://paragonie.com/book/pecl-libsodium - */ -class SodiumRandomGenerator implements RandomGeneratorInterface -{ - /** - * Generates a string of random binary data of the specified length - * - * @param integer $length The number of bytes of random binary data to generate - * @return string A binary string - */ - public function generate($length) - { - return \Sodium\randombytes_buf($length); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php index 24d501bbf..3d55fc4d6 100644 --- a/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php +++ b/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,11 +8,10 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; use Ramsey\Uuid\Converter\TimeConverterInterface; @@ -19,7 +19,8 @@ use Ramsey\Uuid\Provider\NodeProviderInterface; use Ramsey\Uuid\Provider\TimeProviderInterface; /** - * A factory for retrieving a time generator, based on the environment + * TimeGeneratorFactory retrieves a default time generator, based on the + * environment */ class TimeGeneratorFactory { @@ -38,14 +39,6 @@ class TimeGeneratorFactory */ private $timeProvider; - /** - * Constructs a `TimeGeneratorFactory` using a node provider, time converter, - * and time provider - * - * @param NodeProviderInterface $nodeProvider - * @param TimeConverterInterface $timeConverter - * @param TimeProviderInterface $timeProvider - */ public function __construct( NodeProviderInterface $nodeProvider, TimeConverterInterface $timeConverter, @@ -58,10 +51,8 @@ class TimeGeneratorFactory /** * Returns a default time generator, based on the current environment - * - * @return TimeGeneratorInterface */ - public function getGenerator() + public function getGenerator(): TimeGeneratorInterface { return new DefaultTimeGenerator( $this->nodeProvider, diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php index 27c74590f..18f21c4b6 100644 --- a/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php +++ b/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,37 +8,31 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Generator; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use Ramsey\Uuid\Type\Hexadecimal; /** - * TimeGeneratorInterface provides functionality to generate strings of binary - * data for version 1 UUIDs based on a host ID, sequence number, and the current - * time + * A time generator generates strings of binary data based on a node ID, + * clock sequence, and the current time */ interface TimeGeneratorInterface { /** - * Generate a version 1 UUID from a host ID, sequence number, and the current time + * Generate a binary string from a node ID, clock sequence, and current time + * + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes * - * @param int|string $node A 48-bit number representing the hardware address - * This number may be represented as an integer or a hexadecimal string. - * @param int $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes. * @return string A binary string - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy */ - public function generate($node = null, $clockSeq = null); + public function generate($node = null, ?int $clockSeq = null): string; } diff --git a/vendor/ramsey/uuid/src/Guid/Fields.php b/vendor/ramsey/uuid/src/Guid/Fields.php new file mode 100644 index 000000000..d8a1a2b10 --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/Fields.php @@ -0,0 +1,194 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Rfc4122\FieldsInterface; +use Ramsey\Uuid\Rfc4122\NilTrait; +use Ramsey\Uuid\Rfc4122\VariantTrait; +use Ramsey\Uuid\Rfc4122\VersionTrait; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Uuid; + +use function bin2hex; +use function dechex; +use function hexdec; +use function pack; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * GUIDs are comprised of a set of named fields, according to RFC 4122 + * + * @see Guid + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use NilTrait; + use SerializableFieldsTrait; + use VariantTrait; + use VersionTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + * @throws InvalidArgumentException if the byte string does not represent a GUID + * @throws InvalidArgumentException if the byte string does not contain a valid version + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + + if (!$this->isCorrectVariant()) { + throw new InvalidArgumentException( + 'The byte string received does not conform to the RFC ' + . '4122 or Microsoft Corporation variants' + ); + } + + if (!$this->isCorrectVersion()) { + throw new InvalidArgumentException( + 'The byte string received does not contain a valid version' + ); + } + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getTimeLow(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v*', + hexdec(bin2hex(substr($this->bytes, 2, 2))), + hexdec(bin2hex(substr($this->bytes, 0, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimeMid(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v', + hexdec(bin2hex(substr($this->bytes, 4, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + // Swap the bytes from little endian to network byte order. + /** @var array $hex */ + $hex = unpack( + 'H*', + pack( + 'v', + hexdec(bin2hex(substr($this->bytes, 6, 2))) + ) + ); + + return new Hexadecimal((string) ($hex[1] ?? '')); + } + + public function getTimestamp(): Hexadecimal + { + return new Hexadecimal(sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + )); + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getVersion(): ?int + { + if ($this->isNil()) { + return null; + } + + /** @var array $parts */ + $parts = unpack('n*', $this->bytes); + + return ((int) $parts[4] >> 4) & 0x00f; + } + + private function isCorrectVariant(): bool + { + if ($this->isNil()) { + return true; + } + + $variant = $this->getVariant(); + + return $variant === Uuid::RFC_4122 || $variant === Uuid::RESERVED_MICROSOFT; + } +} diff --git a/vendor/ramsey/uuid/src/Guid/Guid.php b/vendor/ramsey/uuid/src/Guid/Guid.php new file mode 100644 index 000000000..b3ed096ab --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/Guid.php @@ -0,0 +1,61 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Uuid; + +/** + * Guid represents a UUID with "native" (little-endian) byte order + * + * From Wikipedia: + * + * > The first three fields are unsigned 32- and 16-bit integers and are subject + * > to swapping, while the last two fields consist of uninterpreted bytes, not + * > subject to swapping. This byte swapping applies even for versions 3, 4, and + * > 5, where the canonical fields do not correspond to the content of the UUID. + * + * The first three fields of a GUID are encoded in little-endian byte order, + * while the last three fields are in network (big-endian) byte order. This is + * according to the history of the Microsoft definition of a GUID. + * + * According to the .NET Guid.ToByteArray method documentation: + * + * > Note that the order of bytes in the returned byte array is different from + * > the string representation of a Guid value. The order of the beginning + * > four-byte group and the next two two-byte groups is reversed, whereas the + * > order of the last two-byte group and the closing six-byte group is the + * > same. + * + * @link https://en.wikipedia.org/wiki/Universally_unique_identifier#Variants UUID Variants on Wikipedia + * @link https://docs.microsoft.com/en-us/windows/win32/api/guiddef/ns-guiddef-guid Windows GUID structure + * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid .NET Guid Struct + * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid.tobytearray .NET Guid.ToByteArray Method + * + * @psalm-immutable + */ +final class Guid extends Uuid +{ + public function __construct( + Fields $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Guid/GuidBuilder.php b/vendor/ramsey/uuid/src/Guid/GuidBuilder.php new file mode 100644 index 000000000..758dd6b7f --- /dev/null +++ b/vendor/ramsey/uuid/src/Guid/GuidBuilder.php @@ -0,0 +1,89 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Guid; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * GuidBuilder builds instances of Guid + * + * @see Guid + * + * @psalm-immutable + */ +class GuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Guid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Guid + * + * @param CodecInterface $codec The codec to use for building this Guid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Guid The GuidBuilder returns an instance of Ramsey\Uuid\Guid\Guid + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + return new Guid( + $this->buildFields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): Fields + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php b/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php new file mode 100644 index 000000000..8ba757964 --- /dev/null +++ b/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php @@ -0,0 +1,575 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Lazy; + +use DateTimeInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Nonstandard\UuidV6; +use Ramsey\Uuid\Rfc4122\UuidV1; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\UuidFactory; +use Ramsey\Uuid\UuidInterface; +use ValueError; + +use function assert; +use function bin2hex; +use function hex2bin; +use function sprintf; +use function str_replace; +use function substr; + +/** + * Lazy version of a UUID: its format has not been determined yet, so it is mostly only usable for string/bytes + * conversion. This object optimizes instantiation, serialization and string conversion time, at the cost of + * increased overhead for more advanced UUID operations. + * + * @internal this type is used internally for performance reasons, and is not supposed to be directly referenced + * in consumer libraries. + * + * @psalm-immutable + * + * Note: the {@see FieldsInterface} does not declare methods that deprecated API + * relies upon: the API has been ported from the {@see \Ramsey\Uuid\Uuid} definition, + * and is deprecated anyway. + * Note: the deprecated API from {@see \Ramsey\Uuid\Uuid} is in use here (on purpose): it will be removed + * once the deprecated API is gone from this class too. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + */ +final class LazyUuidFromString implements UuidInterface +{ + public const VALID_REGEX = '/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/ms'; + /** + * @var string + * @psalm-var non-empty-string + */ + private $uuid; + /** @var UuidInterface|null */ + private $unwrapped; + + /** @psalm-param non-empty-string $uuid */ + public function __construct(string $uuid) + { + $this->uuid = $uuid; + } + + /** @psalm-pure */ + public static function fromBytes(string $bytes): self + { + $base16Uuid = bin2hex($bytes); + + return new self( + substr($base16Uuid, 0, 8) + . '-' + . substr($base16Uuid, 8, 4) + . '-' + . substr($base16Uuid, 12, 4) + . '-' + . substr($base16Uuid, 16, 4) + . '-' + . substr($base16Uuid, 20, 12) + ); + } + + public function serialize(): string + { + return $this->uuid; + } + + /** + * @return array{string: string} + * + * @psalm-return array{string: non-empty-string} + */ + public function __serialize(): array + { + return ['string' => $this->uuid]; + } + + /** + * {@inheritDoc} + * + * @param string $serialized + * + * @psalm-param non-empty-string $serialized + */ + public function unserialize($serialized): void + { + $this->uuid = $serialized; + } + + /** + * @param array{string: string} $data + * + * @psalm-param array{string: non-empty-string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getNumberConverter(): NumberConverterInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getNumberConverter(); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress DeprecatedMethod + */ + public function getFieldsHex(): array + { + return ($this->unwrapped ?? $this->unwrap()) + ->getFieldsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSeqHiAndReservedHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSeqHiAndReservedHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSeqLowHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSeqLowHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getClockSequenceHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getClockSequenceHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getDateTime(): DateTimeInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getDateTime(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getLeastSignificantBitsHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getLeastSignificantBitsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getMostSignificantBitsHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getMostSignificantBitsHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getNodeHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getNodeHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeHiAndVersionHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeHiAndVersionHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeLowHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeLowHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimeMidHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimeMidHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getTimestampHex(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getTimestampHex(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getUrn(): string + { + return ($this->unwrapped ?? $this->unwrap()) + ->getUrn(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getVariant(): ?int + { + return ($this->unwrapped ?? $this->unwrap()) + ->getVariant(); + } + + /** @psalm-suppress DeprecatedMethod */ + public function getVersion(): ?int + { + return ($this->unwrapped ?? $this->unwrap()) + ->getVersion(); + } + + public function compareTo(UuidInterface $other): int + { + return ($this->unwrapped ?? $this->unwrap()) + ->compareTo($other); + } + + public function equals(?object $other): bool + { + if (! $other instanceof UuidInterface) { + return false; + } + + return $this->uuid === $other->toString(); + } + + /** + * {@inheritDoc} + * + * @psalm-suppress MoreSpecificReturnType + * @psalm-suppress LessSpecificReturnStatement we know that {@see self::$uuid} is a non-empty string, so + * we know that {@see hex2bin} will retrieve a non-empty string too. + */ + public function getBytes(): string + { + /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + return (string) hex2bin(str_replace('-', '', $this->uuid)); + } + + public function getFields(): FieldsInterface + { + return ($this->unwrapped ?? $this->unwrap()) + ->getFields(); + } + + public function getHex(): Hexadecimal + { + return ($this->unwrapped ?? $this->unwrap()) + ->getHex(); + } + + public function getInteger(): IntegerObject + { + return ($this->unwrapped ?? $this->unwrap()) + ->getInteger(); + } + + public function toString(): string + { + return $this->uuid; + } + + public function __toString(): string + { + return $this->uuid; + } + + public function jsonSerialize(): string + { + return $this->uuid; + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSeqHiAndReserved(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeqHiAndReserved() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSeqLow(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeqLow() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getClockSequence(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getClockSeq() + ->toString() + ); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getLeastSignificantBits(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex(substr($instance->getHex()->toString(), 16)); + } + + /** + * @deprecated This method will be removed in 5.0.0. There is no direct + * alternative, but the same information may be obtained by splitting + * in half the value returned by {@see UuidInterface::getHex()}. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getMostSignificantBits(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex(substr($instance->getHex()->toString(), 0, 16)); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getNode()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getNode(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getNode() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeHiAndVersion(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeHiAndVersion() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeLow(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeLow() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimeMid(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + return $instance->getNumberConverter() + ->fromHex( + $instance->getFields() + ->getTimeMid() + ->toString() + ); + } + + /** + * @deprecated Use {@see UuidInterface::getFields()} to get a + * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} + * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} + * and use the arbitrary-precision math library of your choice to + * convert it to a string integer. + * + * @psalm-suppress UndefinedInterfaceMethod + * @psalm-suppress DeprecatedMethod + * @psalm-suppress MixedArgument + * @psalm-suppress MixedMethodCall + */ + public function getTimestamp(): string + { + $instance = ($this->unwrapped ?? $this->unwrap()); + $fields = $instance->getFields(); + + if ($fields->getVersion() !== 1) { + throw new UnsupportedOperationException('Not a time-based UUID'); + } + + return $instance->getNumberConverter() + ->fromHex($fields->getTimestamp()->toString()); + } + + public function toUuidV1(): UuidV1 + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + if ($instance instanceof UuidV1) { + return $instance; + } + + assert($instance instanceof UuidV6); + + return $instance->toUuidV1(); + } + + public function toUuidV6(): UuidV6 + { + $instance = ($this->unwrapped ?? $this->unwrap()); + + assert($instance instanceof UuidV6); + + return $instance; + } + + /** + * @psalm-suppress ImpureMethodCall the retrieval of the factory is a clear violation of purity here: this is a + * known pitfall of the design of this library, where a value object contains + * a mutable reference to a factory. We use a fixed factory here, so the violation + * will not have real-world effects, as this object is only instantiated with the + * default factory settings/features. + * @psalm-suppress InaccessibleProperty property {@see $unwrapped} is used as a cache: we don't expose it to the + * outside world, so we should be fine here. + */ + private function unwrap(): UuidInterface + { + return $this->unwrapped = (new UuidFactory()) + ->fromString($this->uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php new file mode 100644 index 000000000..f2d86788c --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php @@ -0,0 +1,144 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Math; + +use Brick\Math\BigDecimal; +use Brick\Math\BigInteger; +use Brick\Math\Exception\MathException; +use Brick\Math\RoundingMode as BrickMathRounding; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Type\Decimal; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\NumberInterface; + +/** + * A calculator using the brick/math library for arbitrary-precision arithmetic + * + * @psalm-immutable + */ +final class BrickMathCalculator implements CalculatorInterface +{ + private const ROUNDING_MODE_MAP = [ + RoundingMode::UNNECESSARY => BrickMathRounding::UNNECESSARY, + RoundingMode::UP => BrickMathRounding::UP, + RoundingMode::DOWN => BrickMathRounding::DOWN, + RoundingMode::CEILING => BrickMathRounding::CEILING, + RoundingMode::FLOOR => BrickMathRounding::FLOOR, + RoundingMode::HALF_UP => BrickMathRounding::HALF_UP, + RoundingMode::HALF_DOWN => BrickMathRounding::HALF_DOWN, + RoundingMode::HALF_CEILING => BrickMathRounding::HALF_CEILING, + RoundingMode::HALF_FLOOR => BrickMathRounding::HALF_FLOOR, + RoundingMode::HALF_EVEN => BrickMathRounding::HALF_EVEN, + ]; + + public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface + { + $sum = BigInteger::of($augend->toString()); + + foreach ($addends as $addend) { + $sum = $sum->plus($addend->toString()); + } + + return new IntegerObject((string) $sum); + } + + public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface + { + $difference = BigInteger::of($minuend->toString()); + + foreach ($subtrahends as $subtrahend) { + $difference = $difference->minus($subtrahend->toString()); + } + + return new IntegerObject((string) $difference); + } + + public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface + { + $product = BigInteger::of($multiplicand->toString()); + + foreach ($multipliers as $multiplier) { + $product = $product->multipliedBy($multiplier->toString()); + } + + return new IntegerObject((string) $product); + } + + public function divide( + int $roundingMode, + int $scale, + NumberInterface $dividend, + NumberInterface ...$divisors + ): NumberInterface { + $brickRounding = $this->getBrickRoundingMode($roundingMode); + + $quotient = BigDecimal::of($dividend->toString()); + + foreach ($divisors as $divisor) { + $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); + } + + if ($scale === 0) { + return new IntegerObject((string) $quotient->toBigInteger()); + } + + return new Decimal((string) $quotient); + } + + public function fromBase(string $value, int $base): IntegerObject + { + try { + return new IntegerObject((string) BigInteger::fromBase($value, $base)); + } catch (MathException | \InvalidArgumentException $exception) { + throw new InvalidArgumentException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } + + public function toBase(IntegerObject $value, int $base): string + { + try { + return BigInteger::of($value->toString())->toBase($base); + } catch (MathException | \InvalidArgumentException $exception) { + throw new InvalidArgumentException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } + } + + public function toHexadecimal(IntegerObject $value): Hexadecimal + { + return new Hexadecimal($this->toBase($value, 16)); + } + + public function toInteger(Hexadecimal $value): IntegerObject + { + return $this->fromBase($value->toString(), 16); + } + + /** + * Maps ramsey/uuid rounding modes to those used by brick/math + */ + private function getBrickRoundingMode(int $roundingMode): int + { + return self::ROUNDING_MODE_MAP[$roundingMode] ?? 0; + } +} diff --git a/vendor/ramsey/uuid/src/Math/CalculatorInterface.php b/vendor/ramsey/uuid/src/Math/CalculatorInterface.php new file mode 100644 index 000000000..f03645d0f --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/CalculatorInterface.php @@ -0,0 +1,106 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Math; + +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\NumberInterface; + +/** + * A calculator performs arithmetic operations on numbers + * + * @psalm-immutable + */ +interface CalculatorInterface +{ + /** + * Returns the sum of all the provided parameters + * + * @param NumberInterface $augend The first addend (the integer being added to) + * @param NumberInterface ...$addends The additional integers to a add to the augend + * + * @return NumberInterface The sum of all the parameters + */ + public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface; + + /** + * Returns the difference of all the provided parameters + * + * @param NumberInterface $minuend The integer being subtracted from + * @param NumberInterface ...$subtrahends The integers to subtract from the minuend + * + * @return NumberInterface The difference after subtracting all parameters + */ + public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface; + + /** + * Returns the product of all the provided parameters + * + * @param NumberInterface $multiplicand The integer to be multiplied + * @param NumberInterface ...$multipliers The factors by which to multiply the multiplicand + * + * @return NumberInterface The product of multiplying all the provided parameters + */ + public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface; + + /** + * Returns the quotient of the provided parameters divided left-to-right + * + * @param int $roundingMode The RoundingMode constant to use for this operation + * @param int $scale The scale to use for this operation + * @param NumberInterface $dividend The integer to be divided + * @param NumberInterface ...$divisors The integers to divide $dividend by, in + * the order in which the division operations should take place + * (left-to-right) + * + * @return NumberInterface The quotient of dividing the provided parameters left-to-right + */ + public function divide( + int $roundingMode, + int $scale, + NumberInterface $dividend, + NumberInterface ...$divisors + ): NumberInterface; + + /** + * Converts a value from an arbitrary base to a base-10 integer value + * + * @param string $value The value to convert + * @param int $base The base to convert from (i.e., 2, 16, 32, etc.) + * + * @return IntegerObject The base-10 integer value of the converted value + */ + public function fromBase(string $value, int $base): IntegerObject; + + /** + * Converts a base-10 integer value to an arbitrary base + * + * @param IntegerObject $value The integer value to convert + * @param int $base The base to convert to (i.e., 2, 16, 32, etc.) + * + * @return string The value represented in the specified base + */ + public function toBase(IntegerObject $value, int $base): string; + + /** + * Converts an Integer instance to a Hexadecimal instance + */ + public function toHexadecimal(IntegerObject $value): Hexadecimal; + + /** + * Converts a Hexadecimal instance to an Integer instance + */ + public function toInteger(Hexadecimal $value): IntegerObject; +} diff --git a/vendor/ramsey/uuid/src/Math/RoundingMode.php b/vendor/ramsey/uuid/src/Math/RoundingMode.php new file mode 100644 index 000000000..e710270d0 --- /dev/null +++ b/vendor/ramsey/uuid/src/Math/RoundingMode.php @@ -0,0 +1,146 @@ +<?php + +/** + * This file was originally part of brick/math + * + * Copyright (c) 2013-present Benjamin Morel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @link https://github.com/brick/math brick/math at GitHub + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Math; + +/** + * Specifies a rounding behavior for numerical operations capable of discarding + * precision. + * + * Each rounding mode indicates how the least significant returned digit of a + * rounded result is to be calculated. If fewer digits are returned than the + * digits needed to represent the exact numerical result, the discarded digits + * will be referred to as the discarded fraction regardless the digits' + * contribution to the value of the number. In other words, considered as a + * numerical value, the discarded fraction could have an absolute value greater + * than one. + */ +final class RoundingMode +{ + /** + * Private constructor. This class is not instantiable. + * + * @codeCoverageIgnore + */ + private function __construct() + { + } + + /** + * Asserts that the requested operation has an exact result, hence no + * rounding is necessary. + */ + public const UNNECESSARY = 0; + + /** + * Rounds away from zero. + * + * Always increments the digit prior to a nonzero discarded fraction. + * Note that this rounding mode never decreases the magnitude of the + * calculated value. + */ + public const UP = 1; + + /** + * Rounds towards zero. + * + * Never increments the digit prior to a discarded fraction (i.e., + * truncates). Note that this rounding mode never increases the magnitude of + * the calculated value. + */ + public const DOWN = 2; + + /** + * Rounds towards positive infinity. + * + * If the result is positive, behaves as for UP; if negative, behaves as for + * DOWN. Note that this rounding mode never decreases the calculated value. + */ + public const CEILING = 3; + + /** + * Rounds towards negative infinity. + * + * If the result is positive, behave as for DOWN; if negative, behave as for + * UP. Note that this rounding mode never increases the calculated value. + */ + public const FLOOR = 4; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round up. + * + * Behaves as for UP if the discarded fraction is >= 0.5; otherwise, behaves + * as for DOWN. Note that this is the rounding mode commonly taught at + * school. + */ + public const HALF_UP = 5; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round down. + * + * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves + * as for DOWN. + */ + public const HALF_DOWN = 6; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round towards positive infinity. + * + * If the result is positive, behaves as for HALF_UP; if negative, behaves + * as for HALF_DOWN. + */ + public const HALF_CEILING = 7; + + /** + * Rounds towards "nearest neighbor" unless both neighbors are equidistant, + * in which case round towards negative infinity. + * + * If the result is positive, behaves as for HALF_DOWN; if negative, behaves + * as for HALF_UP. + */ + public const HALF_FLOOR = 8; + + /** + * Rounds towards the "nearest neighbor" unless both neighbors are + * equidistant, in which case rounds towards the even neighbor. + * + * Behaves as for HALF_UP if the digit to the left of the discarded fraction + * is odd; behaves as for HALF_DOWN if it's even. + * + * Note that this is the rounding mode that statistically minimizes + * cumulative error when applied repeatedly over a sequence of calculations. + * It is sometimes known as "Banker's rounding", and is chiefly used in the + * USA. + */ + public const HALF_EVEN = 9; +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Fields.php b/vendor/ramsey/uuid/src/Nonstandard/Fields.php new file mode 100644 index 000000000..927bc6a26 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/Fields.php @@ -0,0 +1,133 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Rfc4122\FieldsInterface; +use Ramsey\Uuid\Rfc4122\VariantTrait; +use Ramsey\Uuid\Type\Hexadecimal; + +use function bin2hex; +use function dechex; +use function hexdec; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; + +use const STR_PAD_LEFT; + +/** + * Nonstandard UUID fields do not conform to the RFC 4122 standard + * + * Since some systems may create nonstandard UUIDs, this implements the + * Rfc4122\FieldsInterface, so that functionality of a nonstandard UUID is not + * degraded, in the event these UUIDs are expected to contain RFC 4122 fields. + * + * Internally, this class represents the fields together as a 16-byte binary + * string. + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use SerializableFieldsTrait; + use VariantTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); + } + + public function getTimeLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); + } + + public function getTimeMid(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); + } + + public function getTimestamp(): Hexadecimal + { + return new Hexadecimal(sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + )); + } + + public function getVersion(): ?int + { + return null; + } + + public function isNil(): bool + { + return false; + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Uuid.php b/vendor/ramsey/uuid/src/Nonstandard/Uuid.php new file mode 100644 index 000000000..715f82554 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/Uuid.php @@ -0,0 +1,37 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Uuid as BaseUuid; + +/** + * Nonstandard\Uuid is a UUID that doesn't conform to RFC 4122 + * + * @psalm-immutable + */ +final class Uuid extends BaseUuid +{ + public function __construct( + Fields $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php new file mode 100644 index 000000000..0c8927738 --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php @@ -0,0 +1,88 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * Nonstandard\UuidBuilder builds instances of Nonstandard\Uuid + * + * @psalm-immutable + */ +class UuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Nonstandard\Uuid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Nonstandard\Uuid + * + * @param CodecInterface $codec The codec to use for building this instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Uuid The Nonstandard\UuidBuilder returns an instance of + * Nonstandard\Uuid + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + return new Uuid( + $this->buildFields($bytes), + $this->numberConverter, + $codec, + $this->timeConverter + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): Fields + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php new file mode 100644 index 000000000..05586b3eb --- /dev/null +++ b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php @@ -0,0 +1,133 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Nonstandard; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Rfc4122\UuidInterface; +use Ramsey\Uuid\Rfc4122\UuidV1; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function hex2bin; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * Ordered-time, or version 6, UUIDs include timestamp, clock sequence, and node + * values that are combined into a 128-bit unsigned integer + * + * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft + * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs + * + * @psalm-immutable + */ +final class UuidV6 extends Uuid implements UuidInterface +{ + /** + * Creates a version 6 (time-based) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_PEABODY) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV6 must represent a ' + . 'version 6 (ordered-time) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 6 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Converts this UUID into an instance of a version 1 UUID + */ + public function toUuidV1(): UuidV1 + { + $hex = $this->getHex()->toString(); + $hex = substr($hex, 7, 5) + . substr($hex, 13, 3) + . substr($hex, 3, 4) + . '1' . substr($hex, 0, 3) + . substr($hex, 16); + + /** @var LazyUuidFromString $uuid */ + $uuid = Uuid::fromBytes((string) hex2bin($hex)); + + return $uuid->toUuidV1(); + } + + /** + * Converts a version 1 UUID into an instance of a version 6 UUID + */ + public static function fromUuidV1(UuidV1 $uuidV1): UuidV6 + { + $hex = $uuidV1->getHex()->toString(); + $hex = substr($hex, 13, 3) + . substr($hex, 8, 4) + . substr($hex, 0, 5) + . '6' . substr($hex, 5, 3) + . substr($hex, 16); + + /** @var LazyUuidFromString $uuid */ + $uuid = Uuid::fromBytes((string) hex2bin($hex)); + + return $uuid->toUuidV6(); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php new file mode 100644 index 000000000..6d6240b7a --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php @@ -0,0 +1,234 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Dce; + +use Ramsey\Uuid\Exception\DceSecurityException; +use Ramsey\Uuid\Provider\DceSecurityProviderInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +use function escapeshellarg; +use function preg_split; +use function str_getcsv; +use function strpos; +use function strrpos; +use function strtolower; +use function strtoupper; +use function substr; +use function trim; + +use const PREG_SPLIT_NO_EMPTY; + +/** + * SystemDceSecurityProvider retrieves the user or group identifiers from the system + */ +class SystemDceSecurityProvider implements DceSecurityProviderInterface +{ + /** + * @throws DceSecurityException if unable to get a user identifier + * + * @inheritDoc + */ + public function getUid(): IntegerObject + { + static $uid = null; + + if ($uid instanceof IntegerObject) { + return $uid; + } + + if ($uid === null) { + $uid = $this->getSystemUid(); + } + + if ($uid === '') { + throw new DceSecurityException( + 'Unable to get a user identifier using the system DCE ' + . 'Security provider; please provide a custom identifier or ' + . 'use a different provider' + ); + } + + $uid = new IntegerObject($uid); + + return $uid; + } + + /** + * @throws DceSecurityException if unable to get a group identifier + * + * @inheritDoc + */ + public function getGid(): IntegerObject + { + static $gid = null; + + if ($gid instanceof IntegerObject) { + return $gid; + } + + if ($gid === null) { + $gid = $this->getSystemGid(); + } + + if ($gid === '') { + throw new DceSecurityException( + 'Unable to get a group identifier using the system DCE ' + . 'Security provider; please provide a custom identifier or ' + . 'use a different provider' + ); + } + + $gid = new IntegerObject($gid); + + return $gid; + } + + /** + * Returns the UID from the system + */ + private function getSystemUid(): string + { + if (!$this->hasShellExec()) { + return ''; + } + + switch ($this->getOs()) { + case 'WIN': + return $this->getWindowsUid(); + case 'DAR': + case 'FRE': + case 'LIN': + default: + return trim((string) shell_exec('id -u')); + } + } + + /** + * Returns the GID from the system + */ + private function getSystemGid(): string + { + if (!$this->hasShellExec()) { + return ''; + } + + switch ($this->getOs()) { + case 'WIN': + return $this->getWindowsGid(); + case 'DAR': + case 'FRE': + case 'LIN': + default: + return trim((string) shell_exec('id -g')); + } + } + + /** + * Returns true if shell_exec() is available for use + */ + private function hasShellExec(): bool + { + $disabledFunctions = strtolower((string) ini_get('disable_functions')); + + return strpos($disabledFunctions, 'shell_exec') === false; + } + + /** + * Returns the PHP_OS string + */ + private function getOs(): string + { + return strtoupper(substr(constant('PHP_OS'), 0, 3)); + } + + /** + * Returns the user identifier for a user on a Windows system + * + * Windows does not have the same concept as an effective POSIX UID for the + * running script. Instead, each user is uniquely identified by an SID + * (security identifier). The SID includes three 32-bit unsigned integers + * that make up a unique domain identifier, followed by an RID (relative + * identifier) that we will use as the UID. The primary caveat is that this + * UID may not be unique to the system, since it is, instead, unique to the + * domain. + * + * @link https://www.lifewire.com/what-is-an-sid-number-2626005 What Is an SID Number? + * @link https://bit.ly/30vE7NM Well-known SID Structures + * @link https://bit.ly/2FWcYKJ Well-known security identifiers in Windows operating systems + * @link https://www.windows-commandline.com/get-sid-of-user/ Get SID of user + */ + private function getWindowsUid(): string + { + $response = shell_exec('whoami /user /fo csv /nh'); + + if ($response === null) { + return ''; + } + + $sid = str_getcsv(trim((string) $response))[1] ?? ''; + + if (($lastHyphen = strrpos($sid, '-')) === false) { + return ''; + } + + return trim(substr($sid, $lastHyphen + 1)); + } + + /** + * Returns a group identifier for a user on a Windows system + * + * Since Windows does not have the same concept as an effective POSIX GID + * for the running script, we will get the local group memberships for the + * user running the script. Then, we will get the SID (security identifier) + * for the first group that appears in that list. Finally, we will return + * the RID (relative identifier) for the group and use that as the GID. + * + * @link https://www.windows-commandline.com/list-of-user-groups-command-line/ List of user groups command line + */ + private function getWindowsGid(): string + { + $response = shell_exec('net user %username% | findstr /b /i "Local Group Memberships"'); + + if ($response === null) { + return ''; + } + + /** @var string[] $userGroups */ + $userGroups = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); + + $firstGroup = trim($userGroups[1] ?? '', "* \t\n\r\0\x0B"); + + if ($firstGroup === '') { + return ''; + } + + $response = shell_exec('wmic group get name,sid | findstr /b /i ' . escapeshellarg($firstGroup)); + + if ($response === null) { + return ''; + } + + /** @var string[] $userGroup */ + $userGroup = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); + + $sid = $userGroup[1] ?? ''; + + if (($lastHyphen = strrpos($sid, '-')) === false) { + return ''; + } + + return trim((string) substr($sid, $lastHyphen + 1)); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php b/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php new file mode 100644 index 000000000..8325da696 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php @@ -0,0 +1,41 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider; + +use Ramsey\Uuid\Rfc4122\UuidV2; +use Ramsey\Uuid\Type\Integer as IntegerObject; + +/** + * A DCE provider provides access to local domain identifiers for version 2, + * DCE Security, UUIDs + * + * @see UuidV2 + */ +interface DceSecurityProviderInterface +{ + /** + * Returns a user identifier for the system + * + * @link https://en.wikipedia.org/wiki/User_identifier User identifier + */ + public function getUid(): IntegerObject; + + /** + * Returns a group identifier for the system + * + * @link https://en.wikipedia.org/wiki/Group_identifier Group identifier + */ + public function getGid(): IntegerObject; +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php index 83488ab96..cad01045c 100644 --- a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php +++ b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,53 +8,53 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider\Node; -use Exception; +use Ramsey\Uuid\Exception\NodeException; use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; /** - * FallbackNodeProvider attempts to gain the system host ID from an array of - * providers, falling back to the next in line in the event a host ID can not be - * obtained + * FallbackNodeProvider retrieves the system node ID by stepping through a list + * of providers until a node ID can be obtained */ class FallbackNodeProvider implements NodeProviderInterface { /** - * @var NodeProviderInterface[] + * @var NodeProviderCollection */ private $nodeProviders; /** - * Constructs a `FallbackNodeProvider` using an array of node providers - * - * @param NodeProviderInterface[] $providers Array of node providers + * @param NodeProviderCollection $providers Array of node providers */ - public function __construct(array $providers) + public function __construct(NodeProviderCollection $providers) { $this->nodeProviders = $providers; } - /** - * Returns the system node ID by iterating over an array of node providers - * and returning the first non-empty value found - * - * @return string System node ID as a hexadecimal string - * @throws Exception - */ - public function getNode() + public function getNode(): Hexadecimal { + $lastProviderException = null; + foreach ($this->nodeProviders as $provider) { - if ($node = $provider->getNode()) { - return $node; + try { + return $provider->getNode(); + } catch (NodeException $exception) { + $lastProviderException = $exception; + + continue; } } - return null; + throw new NodeException( + 'Unable to find a suitable node provider', + 0, + $lastProviderException + ); } } diff --git a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php new file mode 100644 index 000000000..536cb6034 --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php @@ -0,0 +1,61 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Collection\AbstractCollection; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * A collection of NodeProviderInterface objects + * + * @extends AbstractCollection<NodeProviderInterface> + */ +class NodeProviderCollection extends AbstractCollection +{ + public function getType(): string + { + return NodeProviderInterface::class; + } + + /** + * Re-constructs the object from its serialized form + * + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress RedundantConditionGivenDocblockType + */ + public function unserialize($serialized): void + { + /** @var array<array-key, NodeProviderInterface> $data */ + $data = unserialize($serialized, [ + 'allowed_classes' => [ + Hexadecimal::class, + RandomNodeProvider::class, + StaticNodeProvider::class, + SystemNodeProvider::class, + ], + ]); + + $this->data = array_filter( + $data, + function ($unserialized): bool { + return $unserialized instanceof NodeProviderInterface; + } + ); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php index 79ec63cb8..76141361b 100644 --- a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php +++ b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,33 +8,44 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider\Node; -use Exception; +use Ramsey\Uuid\Exception\RandomSourceException; use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Throwable; + +use function bin2hex; +use function dechex; +use function hex2bin; +use function hexdec; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; /** - * RandomNodeProvider provides functionality to generate a random node ID, in - * the event that the node ID could not be obtained from the host system + * RandomNodeProvider generates a random node ID * - * @link http://tools.ietf.org/html/rfc4122#section-4.5 + * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host */ class RandomNodeProvider implements NodeProviderInterface { - /** - * Returns the system node ID - * - * @return string System node ID as a hexadecimal string - * @throws Exception if it was not possible to gather sufficient entropy - */ - public function getNode() + public function getNode(): Hexadecimal { - $nodeBytes = random_bytes(6); + try { + $nodeBytes = random_bytes(6); + } catch (Throwable $exception) { + throw new RandomSourceException( + $exception->getMessage(), + (int) $exception->getCode(), + $exception + ); + } // Split the node bytes for math on 32-bit systems. $nodeMsb = substr($nodeBytes, 0, 3); @@ -52,6 +64,6 @@ class RandomNodeProvider implements NodeProviderInterface // Recombine the node bytes. $node = $nodeMsb . $nodeLsb; - return str_pad(bin2hex($node), 12, '0', STR_PAD_LEFT); + return new Hexadecimal(str_pad(bin2hex($node), 12, '0', STR_PAD_LEFT)); } } diff --git a/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php new file mode 100644 index 000000000..51f1b02ea --- /dev/null +++ b/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php @@ -0,0 +1,76 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Provider\Node; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +use function dechex; +use function hexdec; +use function str_pad; +use function substr; + +use const STR_PAD_LEFT; + +/** + * StaticNodeProvider provides a static node value with the multicast bit set + * + * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host + */ +class StaticNodeProvider implements NodeProviderInterface +{ + /** + * @var Hexadecimal + */ + private $node; + + /** + * @param Hexadecimal $node The static node value to use + */ + public function __construct(Hexadecimal $node) + { + if (strlen($node->toString()) > 12) { + throw new InvalidArgumentException( + 'Static node value cannot be greater than 12 hexadecimal characters' + ); + } + + $this->node = $this->setMulticastBit($node); + } + + public function getNode(): Hexadecimal + { + return $this->node; + } + + /** + * Set the multicast bit for the static node value + */ + private function setMulticastBit(Hexadecimal $node): Hexadecimal + { + $nodeHex = str_pad($node->toString(), 12, '0', STR_PAD_LEFT); + $firstOctet = substr($nodeHex, 0, 2); + + $firstOctet = str_pad( + dechex(hexdec($firstOctet) | 0x01), + 2, + '0', + STR_PAD_LEFT + ); + + return new Hexadecimal($firstOctet . substr($nodeHex, 2)); + } +} diff --git a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php index 57015133a..d512f22aa 100644 --- a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php +++ b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,50 +8,86 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider\Node; +use Ramsey\Uuid\Exception\NodeException; use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +use function array_filter; +use function array_map; +use function array_walk; +use function count; +use function ob_get_clean; +use function ob_start; +use function preg_match; +use function preg_match_all; +use function reset; +use function str_replace; +use function strpos; +use function strtolower; +use function strtoupper; +use function substr; + +use const GLOB_NOSORT; +use const PREG_PATTERN_ORDER; /** - * SystemNodeProvider provides functionality to get the system node ID (MAC - * address) using external system calls + * SystemNodeProvider retrieves the system node ID, if possible + * + * The system node ID, or host ID, is often the same as the MAC address for a + * network interface on the host. */ class SystemNodeProvider implements NodeProviderInterface { /** - * Returns the system node ID - * - * @return string|false System node ID as a hexadecimal string, or false if it is not found + * Pattern to match nodes in ifconfig and ipconfig output. */ - public function getNode() + private const IFCONFIG_PATTERN = '/[^:]([0-9a-f]{2}([:-])[0-9a-f]{2}(\2[0-9a-f]{2}){4})[^:]/i'; + + /** + * Pattern to match nodes in sysfs stream output. + */ + private const SYSFS_PATTERN = '/^([0-9a-f]{2}:){5}[0-9a-f]{2}$/i'; + + public function getNode(): Hexadecimal + { + $node = $this->getNodeFromSystem(); + + if ($node === '') { + throw new NodeException( + 'Unable to fetch a node for this system' + ); + } + + return new Hexadecimal($node); + } + + /** + * Returns the system node, if it can find it + */ + protected function getNodeFromSystem(): string { static $node = null; if ($node !== null) { - return $node; + return (string) $node; } - $pattern = '/[^:]([0-9A-Fa-f]{2}([:-])[0-9A-Fa-f]{2}(\2[0-9A-Fa-f]{2}){4})[^:]/'; - $matches = []; - - // first try a linux specific way + // First, try a Linux-specific approach. $node = $this->getSysfs(); - // Search the ifconfig output for all MAC addresses and return - // the first one found - if ($node === false) { - if (preg_match_all($pattern, $this->getIfconfig(), $matches, PREG_PATTERN_ORDER)) { - $node = $matches[1][0]; - } - } - if ($node !== false) { - $node = str_replace([':', '-'], '', $node); + if ($node === '') { + // Search ifconfig output for MAC addresses & return the first one. + $node = $this->getIfconfig(); } + + $node = str_replace([':', '-'], '', $node); + return $node; } @@ -58,11 +95,12 @@ class SystemNodeProvider implements NodeProviderInterface * Returns the network interface configuration for the system * * @codeCoverageIgnore - * @return string */ - protected function getIfconfig() + protected function getIfconfig(): string { - if (strpos(strtolower(ini_get('disable_functions')), 'passthru') !== false) { + $disabledFunctions = strtolower((string) ini_get('disable_functions')); + + if (strpos($disabledFunctions, 'passthru') !== false) { return ''; } @@ -70,40 +108,50 @@ class SystemNodeProvider implements NodeProviderInterface switch (strtoupper(substr(constant('PHP_OS'), 0, 3))) { case 'WIN': passthru('ipconfig /all 2>&1'); + break; case 'DAR': passthru('ifconfig 2>&1'); + break; case 'FRE': passthru('netstat -i -f link 2>&1'); + break; case 'LIN': default: passthru('netstat -ie 2>&1'); + break; } - return ob_get_clean(); + $ifconfig = (string) ob_get_clean(); + + $node = ''; + if (preg_match_all(self::IFCONFIG_PATTERN, $ifconfig, $matches, PREG_PATTERN_ORDER)) { + $node = $matches[1][0] ?? ''; + } + + return $node; } /** - * Returns mac address from the first system interface via the sysfs interface - * - * @return string|bool + * Returns MAC address from the first system interface via the sysfs interface */ - protected function getSysfs() + protected function getSysfs(): string { - $mac = false; + $mac = ''; if (strtoupper(constant('PHP_OS')) === 'LINUX') { $addressPaths = glob('/sys/class/net/*/address', GLOB_NOSORT); - if (empty($addressPaths)) { - return false; + if ($addressPaths === false || count($addressPaths) === 0) { + return ''; } $macs = []; - array_walk($addressPaths, function ($addressPath) use (&$macs) { + + array_walk($addressPaths, function (string $addressPath) use (&$macs): void { if (is_readable($addressPath)) { $macs[] = file_get_contents($addressPath); } @@ -111,18 +159,15 @@ class SystemNodeProvider implements NodeProviderInterface $macs = array_map('trim', $macs); - // remove invalid entries - $macs = array_filter($macs, function ($mac) { - return - // localhost adapter - $mac !== '00:00:00:00:00:00' && - // must match mac adress - preg_match('/^([0-9a-f]{2}:){5}[0-9a-f]{2}$/i', $mac); + // Remove invalid entries. + $macs = array_filter($macs, function (string $address) { + return $address !== '00:00:00:00:00:00' + && preg_match(self::SYSFS_PATTERN, $address); }); $mac = reset($macs); } - return $mac; + return (string) $mac; } } diff --git a/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php index b6f721feb..d536b4558 100644 --- a/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php +++ b/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,26 +8,23 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider; -use Exception; +use Ramsey\Uuid\Type\Hexadecimal; /** - * NodeProviderInterface provides functionality to get the node ID (or host ID - * in the form of the system's MAC address) from a specific type of node provider + * A node provider retrieves or generates a node ID */ interface NodeProviderInterface { /** - * Returns the system node ID + * Returns a node ID * - * @return string System node ID as a hexadecimal string - * @throws Exception if it was not possible to gather sufficient entropy + * @return Hexadecimal The node ID as a hexadecimal string */ - public function getNode(); + public function getNode(): Hexadecimal; } diff --git a/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php index 79a9d04e0..b8bfd7215 100644 --- a/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php +++ b/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,70 +8,55 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider\Time; -use InvalidArgumentException; use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; /** - * FixedTimeProvider uses an previously-generated timestamp to provide the time + * FixedTimeProvider uses an known time to provide the time * - * This provider allows the use of a previously-generated timestamp, such as one - * stored in a database, when creating version 1 UUIDs. + * This provider allows the use of a previously-generated, or known, time + * when generating time-based UUIDs. */ class FixedTimeProvider implements TimeProviderInterface { /** - * @var int[] Array containing `sec` and `usec` components of a timestamp + * @var Time */ private $fixedTime; - /** - * Constructs a `FixedTimeProvider` using the provided `$timestamp` - * - * @param int[] Array containing `sec` and `usec` components of a timestamp - * @throws InvalidArgumentException if the `$timestamp` does not contain `sec` or `usec` components - */ - public function __construct(array $timestamp) + public function __construct(Time $time) { - if (!array_key_exists('sec', $timestamp) || !array_key_exists('usec', $timestamp)) { - throw new InvalidArgumentException('Array must contain sec and usec keys.'); - } - - $this->fixedTime = $timestamp; + $this->fixedTime = $time; } /** - * Sets the `usec` component of the timestamp + * Sets the `usec` component of the time * - * @param int $value The `usec` value to set + * @param int|string|IntegerObject $value The `usec` value to set */ - public function setUsec($value) + public function setUsec($value): void { - $this->fixedTime['usec'] = $value; + $this->fixedTime = new Time($this->fixedTime->getSeconds(), $value); } /** - * Sets the `sec` component of the timestamp + * Sets the `sec` component of the time * - * @param int $value The `sec` value to set + * @param int|string|IntegerObject $value The `sec` value to set */ - public function setSec($value) + public function setSec($value): void { - $this->fixedTime['sec'] = $value; + $this->fixedTime = new Time($value, $this->fixedTime->getMicroseconds()); } - /** - * Returns a timestamp array - * - * @return int[] Array containing `sec` and `usec` components of a timestamp - */ - public function currentTime() + public function getTime(): Time { return $this->fixedTime; } diff --git a/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php index 6442985fa..3a1e09cb4 100644 --- a/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php +++ b/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,27 +8,26 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider\Time; use Ramsey\Uuid\Provider\TimeProviderInterface; +use Ramsey\Uuid\Type\Time; + +use function gettimeofday; /** - * SystemTimeProvider uses built-in PHP functions to provide the time + * SystemTimeProvider retrieves the current time using built-in PHP functions */ class SystemTimeProvider implements TimeProviderInterface { - /** - * Returns a timestamp array - * - * @return int[] Array containing `sec` and `usec` components of a timestamp - */ - public function currentTime() + public function getTime(): Time { - return gettimeofday(); + $time = gettimeofday(); + + return new Time($time['sec'], $time['usec']); } } diff --git a/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php index ef8099dd1..43588e0bd 100644 --- a/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php +++ b/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,23 +8,21 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid\Provider; +use Ramsey\Uuid\Type\Time; + /** - * TimeProviderInterface provides functionality to get the time from a specific - * type of time provider + * A time provider retrieves the current time */ interface TimeProviderInterface { /** - * Returns a timestamp array - * - * @return int[] Array guaranteed to contain `sec` and `usec` components of a timestamp + * Returns a time object */ - public function currentTime(); + public function getTime(): Time; } diff --git a/vendor/ramsey/uuid/src/Rfc4122/Fields.php b/vendor/ramsey/uuid/src/Rfc4122/Fields.php new file mode 100644 index 000000000..2ccc20bb6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/Fields.php @@ -0,0 +1,194 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Fields\SerializableFieldsTrait; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Uuid; + +use function bin2hex; +use function dechex; +use function hexdec; +use function sprintf; +use function str_pad; +use function strlen; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * RFC 4122 variant UUIDs are comprised of a set of named fields + * + * Internally, this class represents the fields together as a 16-byte binary + * string. + * + * @psalm-immutable + */ +final class Fields implements FieldsInterface +{ + use NilTrait; + use SerializableFieldsTrait; + use VariantTrait; + use VersionTrait; + + /** + * @var string + */ + private $bytes; + + /** + * @param string $bytes A 16-byte binary string representation of a UUID + * + * @throws InvalidArgumentException if the byte string is not exactly 16 bytes + * @throws InvalidArgumentException if the byte string does not represent an RFC 4122 UUID + * @throws InvalidArgumentException if the byte string does not contain a valid version + */ + public function __construct(string $bytes) + { + if (strlen($bytes) !== 16) { + throw new InvalidArgumentException( + 'The byte string must be 16 bytes long; ' + . 'received ' . strlen($bytes) . ' bytes' + ); + } + + $this->bytes = $bytes; + + if (!$this->isCorrectVariant()) { + throw new InvalidArgumentException( + 'The byte string received does not conform to the RFC 4122 variant' + ); + } + + if (!$this->isCorrectVersion()) { + throw new InvalidArgumentException( + 'The byte string received does not contain a valid RFC 4122 version' + ); + } + } + + public function getBytes(): string + { + return $this->bytes; + } + + public function getClockSeq(): Hexadecimal + { + $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; + + return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); + } + + public function getClockSeqHiAndReserved(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); + } + + public function getClockSeqLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); + } + + public function getNode(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 10))); + } + + public function getTimeHiAndVersion(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); + } + + public function getTimeLow(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); + } + + public function getTimeMid(): Hexadecimal + { + return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); + } + + /** + * Returns the full 60-bit timestamp, without the version + * + * For version 2 UUIDs, the time_low field is the local identifier and + * should not be returned as part of the time. For this reason, we set the + * bottom 32 bits of the timestamp to 0's. As a result, there is some loss + * of fidelity of the timestamp, for version 2 UUIDs. The timestamp can be + * off by a range of 0 to 429.4967295 seconds (or 7 minutes, 9 seconds, and + * 496730 microseconds). + * + * For version 6 UUIDs, the timestamp order is reversed from the typical RFC + * 4122 order (the time bits are in the correct bit order, so that it is + * monotonically increasing). In returning the timestamp value, we put the + * bits in the order: time_low + time_mid + time_hi. + */ + public function getTimestamp(): Hexadecimal + { + switch ($this->getVersion()) { + case Uuid::UUID_TYPE_DCE_SECURITY: + $timestamp = sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + '' + ); + + break; + case Uuid::UUID_TYPE_PEABODY: + $timestamp = sprintf( + '%08s%04s%03x', + $this->getTimeLow()->toString(), + $this->getTimeMid()->toString(), + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff + ); + + break; + default: + $timestamp = sprintf( + '%03x%04s%08s', + hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, + $this->getTimeMid()->toString(), + $this->getTimeLow()->toString() + ); + } + + return new Hexadecimal($timestamp); + } + + public function getVersion(): ?int + { + if ($this->isNil()) { + return null; + } + + /** @var array $parts */ + $parts = unpack('n*', $this->bytes); + + return (int) $parts[4] >> 12; + } + + private function isCorrectVariant(): bool + { + if ($this->isNil()) { + return true; + } + + return $this->getVariant() === Uuid::RFC_4122; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php b/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php new file mode 100644 index 000000000..a303525d6 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php @@ -0,0 +1,126 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Fields\FieldsInterface as BaseFieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; + +/** + * RFC 4122 defines fields for a specific variant of UUID + * + * The fields of an RFC 4122 variant UUID are: + * + * * **time_low**: The low field of the timestamp, an unsigned 32-bit integer + * * **time_mid**: The middle field of the timestamp, an unsigned 16-bit integer + * * **time_hi_and_version**: The high field of the timestamp multiplexed with + * the version number, an unsigned 16-bit integer + * * **clock_seq_hi_and_reserved**: The high field of the clock sequence + * multiplexed with the variant, an unsigned 8-bit integer + * * **clock_seq_low**: The low field of the clock sequence, an unsigned + * 8-bit integer + * * **node**: The spatially unique node identifier, an unsigned 48-bit + * integer + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1 RFC 4122, § 4.1: Format + * + * @psalm-immutable + */ +interface FieldsInterface extends BaseFieldsInterface +{ + /** + * Returns the full 16-bit clock sequence, with the variant bits (two most + * significant bits) masked out + */ + public function getClockSeq(): Hexadecimal; + + /** + * Returns the high field of the clock sequence multiplexed with the variant + */ + public function getClockSeqHiAndReserved(): Hexadecimal; + + /** + * Returns the low field of the clock sequence + */ + public function getClockSeqLow(): Hexadecimal; + + /** + * Returns the node field + */ + public function getNode(): Hexadecimal; + + /** + * Returns the high field of the timestamp multiplexed with the version + */ + public function getTimeHiAndVersion(): Hexadecimal; + + /** + * Returns the low field of the timestamp + */ + public function getTimeLow(): Hexadecimal; + + /** + * Returns the middle field of the timestamp + */ + public function getTimeMid(): Hexadecimal; + + /** + * Returns the full 60-bit timestamp, without the version + */ + public function getTimestamp(): Hexadecimal; + + /** + * Returns the variant + * + * The variant number describes the layout of the UUID. The variant + * number has the following meaning: + * + * - 0 - Reserved for NCS backward compatibility + * - 2 - The RFC 4122 variant + * - 6 - Reserved, Microsoft Corporation backward compatibility + * - 7 - Reserved for future definition + * + * For RFC 4122 variant UUIDs, this value should always be the integer `2`. + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + */ + public function getVariant(): int; + + /** + * Returns the version + * + * The version number describes how the UUID was generated and has the + * following meaning: + * + * 1. Time-based UUID + * 2. DCE security UUID + * 3. Name-based UUID hashed with MD5 + * 4. Randomly generated UUID + * 5. Name-based UUID hashed with SHA-1 + * + * This returns `null` if the UUID is not an RFC 4122 variant, since version + * is only meaningful for this variant. + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public function getVersion(): ?int; + + /** + * Returns true if these fields represent a nil UUID + * + * The nil UUID is special form of UUID that is specified to have all 128 + * bits set to zero. + */ + public function isNil(): bool; +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php b/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php new file mode 100644 index 000000000..9a9774d89 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php @@ -0,0 +1,41 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +/** + * Provides common functionality for nil UUIDs + * + * The nil UUID is special form of UUID that is specified to have all 128 bits + * set to zero. + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID + * + * @psalm-immutable + */ +trait NilTrait +{ + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns true if the byte string represents a nil UUID + */ + public function isNil(): bool + { + return $this->getBytes() === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php b/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php new file mode 100644 index 000000000..c49b9945d --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php @@ -0,0 +1,27 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Uuid; + +/** + * The nil UUID is special form of UUID that is specified to have all 128 bits + * set to zero + * + * @psalm-immutable + */ +final class NilUuid extends Uuid implements UuidInterface +{ +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php b/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php new file mode 100644 index 000000000..736931af2 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php @@ -0,0 +1,111 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Nonstandard\UuidV6; +use Ramsey\Uuid\Rfc4122\UuidInterface as Rfc4122UuidInterface; +use Ramsey\Uuid\UuidInterface; +use Throwable; + +/** + * UuidBuilder builds instances of RFC 4122 UUIDs + * + * @psalm-immutable + */ +class UuidBuilder implements UuidBuilderInterface +{ + /** + * @var NumberConverterInterface + */ + private $numberConverter; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; + + /** + * Constructs the DefaultUuidBuilder + * + * @param NumberConverterInterface $numberConverter The number converter to + * use when constructing the Uuid + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to Unix timestamps + */ + public function __construct( + NumberConverterInterface $numberConverter, + TimeConverterInterface $timeConverter + ) { + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; + } + + /** + * Builds and returns a Uuid + * + * @param CodecInterface $codec The codec to use for building this Uuid instance + * @param string $bytes The byte string from which to construct a UUID + * + * @return Rfc4122UuidInterface UuidBuilder returns instances of Rfc4122UuidInterface + * + * @psalm-pure + */ + public function build(CodecInterface $codec, string $bytes): UuidInterface + { + try { + $fields = $this->buildFields($bytes); + + if ($fields->isNil()) { + return new NilUuid($fields, $this->numberConverter, $codec, $this->timeConverter); + } + + switch ($fields->getVersion()) { + case 1: + return new UuidV1($fields, $this->numberConverter, $codec, $this->timeConverter); + case 2: + return new UuidV2($fields, $this->numberConverter, $codec, $this->timeConverter); + case 3: + return new UuidV3($fields, $this->numberConverter, $codec, $this->timeConverter); + case 4: + return new UuidV4($fields, $this->numberConverter, $codec, $this->timeConverter); + case 5: + return new UuidV5($fields, $this->numberConverter, $codec, $this->timeConverter); + case 6: + return new UuidV6($fields, $this->numberConverter, $codec, $this->timeConverter); + } + + throw new UnsupportedOperationException( + 'The UUID version in the given fields is not supported ' + . 'by this UUID builder' + ); + } catch (Throwable $e) { + throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Proxy method to allow injecting a mock, for testing + */ + protected function buildFields(string $bytes): FieldsInterface + { + return new Fields($bytes); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php b/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php new file mode 100644 index 000000000..3e4d9faee --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php @@ -0,0 +1,36 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\UuidInterface as BaseUuidInterface; + +/** + * Also known as a Leach-Salz variant UUID, an RFC 4122 variant UUID is a + * universally unique identifier defined by RFC 4122 + * + * @link https://tools.ietf.org/html/rfc4122 RFC 4122 + * + * @psalm-immutable + */ +interface UuidInterface extends BaseUuidInterface +{ + /** + * Returns the string standard representation of the UUID as a URN + * + * @link http://en.wikipedia.org/wiki/Uniform_Resource_Name Uniform Resource Name + * @link https://tools.ietf.org/html/rfc4122#section-3 RFC 4122, § 3: Namespace Registration Template + */ + public function getUrn(): string; +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php new file mode 100644 index 000000000..764e42f84 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php @@ -0,0 +1,92 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * Time-based, or version 1, UUIDs include timestamp, clock sequence, and node + * values that are combined into a 128-bit unsigned integer + * + * @psalm-immutable + */ +final class UuidV1 extends Uuid implements UuidInterface +{ + /** + * Creates a version 1 (time-based) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_TIME) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV1 must represent a ' + . 'version 1 (time-based) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * The timestamp value is only meaningful in a time-based UUID, which + * has version type 1. + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 1 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php new file mode 100644 index 000000000..74906f050 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php @@ -0,0 +1,143 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use DateTimeImmutable; +use DateTimeInterface; +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\DateTimeException; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Uuid; +use Throwable; + +use function hexdec; +use function str_pad; + +use const STR_PAD_LEFT; + +/** + * DCE Security version, or version 2, UUIDs include local domain identifier, + * local ID for the specified domain, and node values that are combined into a + * 128-bit unsigned integer + * + * @link https://publications.opengroup.org/c311 DCE 1.1: Authentication and Security Services + * @link https://publications.opengroup.org/c706 DCE 1.1: Remote Procedure Call + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01 DCE 1.1: Auth & Sec, §5.2.1.1 + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1: Auth & Sec, §11.5.1.1 + * @link https://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm DCE 1.1: RPC, Appendix A + * @link https://github.com/google/uuid Go package for UUIDs (includes DCE implementation) + * + * @psalm-immutable + */ +final class UuidV2 extends Uuid implements UuidInterface +{ + /** + * Creates a version 2 (DCE Security) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_DCE_SECURITY) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV2 must represent a ' + . 'version 2 (DCE Security) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } + + /** + * Returns a DateTimeInterface object representing the timestamp associated + * with the UUID + * + * It is important to note that a version 2 UUID suffers from some loss of + * fidelity of the timestamp, due to replacing the time_low field with the + * local identifier. When constructing the timestamp value for date + * purposes, we replace the local identifier bits with zeros. As a result, + * the timestamp can be off by a range of 0 to 429.4967295 seconds (or 7 + * minutes, 9 seconds, and 496730 microseconds). + * + * Astute observers might note this value directly corresponds to 2^32 - 1, + * or 0xffffffff. The local identifier is 32-bits, and we have set each of + * these bits to 0, so the maximum range of timestamp drift is 0x00000000 + * to 0xffffffff (counted in 100-nanosecond intervals). + * + * @return DateTimeImmutable A PHP DateTimeImmutable instance representing + * the timestamp of a version 2 UUID + */ + public function getDateTime(): DateTimeInterface + { + $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); + + try { + return new DateTimeImmutable( + '@' + . $time->getSeconds()->toString() + . '.' + . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) + ); + } catch (Throwable $e) { + throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); + } + } + + /** + * Returns the local domain used to create this version 2 UUID + */ + public function getLocalDomain(): int + { + /** @var Rfc4122FieldsInterface $fields */ + $fields = $this->getFields(); + + return (int) hexdec($fields->getClockSeqLow()->toString()); + } + + /** + * Returns the string name of the local domain + */ + public function getLocalDomainName(): string + { + return Uuid::DCE_DOMAIN_NAMES[$this->getLocalDomain()]; + } + + /** + * Returns the local identifier for the domain used to create this version 2 UUID + */ + public function getLocalIdentifier(): IntegerObject + { + /** @var Rfc4122FieldsInterface $fields */ + $fields = $this->getFields(); + + return new IntegerObject( + $this->numberConverter->fromHex($fields->getTimeLow()->toString()) + ); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php new file mode 100644 index 000000000..deaa54eb0 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php @@ -0,0 +1,58 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Version 3 UUIDs are named-based, using combination of a namespace and name + * that are hashed into a 128-bit unsigned integer using MD5 + * + * @psalm-immutable + */ +final class UuidV3 extends Uuid implements UuidInterface +{ + /** + * Creates a version 3 (name-based, MD5-hashed) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_MD5) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV3 must represent a ' + . 'version 3 (name-based, MD5-hashed) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php new file mode 100644 index 000000000..2e5724620 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php @@ -0,0 +1,58 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Random, or version 4, UUIDs are randomly or pseudo-randomly generated 128-bit + * integers + * + * @psalm-immutable + */ +final class UuidV4 extends Uuid implements UuidInterface +{ + /** + * Creates a version 4 (random) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_RANDOM) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV4 must represent a ' + . 'version 4 (random) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php new file mode 100644 index 000000000..2ef6ab3f1 --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php @@ -0,0 +1,58 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Codec\CodecInterface; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Exception\InvalidArgumentException; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Uuid; + +/** + * Version 5 UUIDs are named-based, using combination of a namespace and name + * that are hashed into a 128-bit unsigned integer using SHA1 + * + * @psalm-immutable + */ +final class UuidV5 extends Uuid implements UuidInterface +{ + /** + * Creates a version 5 (name-based, SHA1-hashed) UUID + * + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers + * @param CodecInterface $codec The codec to use when encoding or decoding + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps + */ + public function __construct( + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter + ) { + if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_SHA1) { + throw new InvalidArgumentException( + 'Fields used to create a UuidV5 must represent a ' + . 'version 5 (named-based, SHA1-hashed) UUID' + ); + } + + parent::__construct($fields, $numberConverter, $codec, $timeConverter); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/Validator.php b/vendor/ramsey/uuid/src/Rfc4122/Validator.php new file mode 100644 index 000000000..ed43c982f --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/Validator.php @@ -0,0 +1,49 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use function preg_match; +use function str_replace; + +/** + * Rfc4122\Validator validates strings as UUIDs of the RFC 4122 variant + * + * @psalm-immutable + */ +final class Validator implements ValidatorInterface +{ + private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-' + . '[1-5]{1}[0-9A-Fa-f]{3}-[ABab89]{1}[0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}\z'; + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function getPattern(): string + { + return self::VALID_PATTERN; + } + + public function validate(string $uuid): bool + { + $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); + + return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php new file mode 100644 index 000000000..4c981658f --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php @@ -0,0 +1,90 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +use Ramsey\Uuid\Exception\InvalidBytesException; +use Ramsey\Uuid\Uuid; + +use function decbin; +use function str_pad; +use function strlen; +use function strpos; +use function substr; +use function unpack; + +use const STR_PAD_LEFT; + +/** + * Provides common functionality for handling the variant, as defined by RFC 4122 + * + * @psalm-immutable + */ +trait VariantTrait +{ + /** + * Returns the bytes that comprise the fields + */ + abstract public function getBytes(): string; + + /** + * Returns the variant identifier, according to RFC 4122, for the given bytes + * + * The following values may be returned: + * + * - `0` -- Reserved, NCS backward compatibility. + * - `2` -- The variant specified in RFC 4122. + * - `6` -- Reserved, Microsoft Corporation backward compatibility. + * - `7` -- Reserved for future definition. + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant + * + * @return int The variant identifier, according to RFC 4122 + */ + public function getVariant(): int + { + if (strlen($this->getBytes()) !== 16) { + throw new InvalidBytesException('Invalid number of bytes'); + } + + /** @var array $parts */ + $parts = unpack('n*', $this->getBytes()); + + // $parts[5] is a 16-bit, unsigned integer containing the variant bits + // of the UUID. We convert this integer into a string containing a + // binary representation, padded to 16 characters. We analyze the first + // three characters (three most-significant bits) to determine the + // variant. + $binary = str_pad( + decbin((int) $parts[5]), + 16, + '0', + STR_PAD_LEFT + ); + + $msb = substr($binary, 0, 3); + + if ($msb === '111') { + $variant = Uuid::RESERVED_FUTURE; + } elseif ($msb === '110') { + $variant = Uuid::RESERVED_MICROSOFT; + } elseif (strpos($msb, '10') === 0) { + $variant = Uuid::RFC_4122; + } else { + $variant = Uuid::RESERVED_NCS; + } + + return $variant; + } +} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php new file mode 100644 index 000000000..cee55fbef --- /dev/null +++ b/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php @@ -0,0 +1,57 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Rfc4122; + +/** + * Provides common functionality for handling the version, as defined by RFC 4122 + * + * @psalm-immutable + */ +trait VersionTrait +{ + /** + * Returns the version + */ + abstract public function getVersion(): ?int; + + /** + * Returns true if these fields represent a nil UUID + */ + abstract public function isNil(): bool; + + /** + * Returns true if the version matches one of those defined by RFC 4122 + * + * @return bool True if the UUID version is valid, false otherwise + */ + private function isCorrectVersion(): bool + { + if ($this->isNil()) { + return true; + } + + switch ($this->getVersion()) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + return true; + } + + return false; + } +} diff --git a/vendor/ramsey/uuid/src/Type/Decimal.php b/vendor/ramsey/uuid/src/Type/Decimal.php new file mode 100644 index 000000000..10f93845b --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Decimal.php @@ -0,0 +1,137 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function is_numeric; +use function sprintf; + +/** + * A value object representing a decimal + * + * This class exists for type-safety purposes, to ensure that decimals + * returned from ramsey/uuid methods as strings are truly decimals and not some + * other kind of string. + * + * To support values as true decimals and not as floats or doubles, we store the + * decimals as strings. + * + * @psalm-immutable + */ +final class Decimal implements NumberInterface +{ + /** + * @var string + */ + private $value; + + /** + * @var bool + */ + private $isNegative = false; + + /** + * @param mixed $value The decimal value to store + */ + public function __construct($value) + { + $value = (string) $value; + + if (!is_numeric($value)) { + throw new InvalidArgumentException( + 'Value must be a signed decimal or a string containing only ' + . 'digits 0-9 and, optionally, a decimal point or sign (+ or -)' + ); + } + + // Remove the leading +-symbol. + if (strpos($value, '+') === 0) { + $value = substr($value, 1); + } + + // For cases like `-0` or `-0.0000`, convert the value to `0`. + if (abs((float) $value) === 0.0) { + $value = '0'; + } + + if (strpos($value, '-') === 0) { + $this->isNegative = true; + } + + $this->value = $value; + } + + public function isNegative(): bool + { + return $this->isNegative; + } + + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/Hexadecimal.php b/vendor/ramsey/uuid/src/Type/Hexadecimal.php new file mode 100644 index 000000000..88adc2e7e --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Hexadecimal.php @@ -0,0 +1,116 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function ctype_xdigit; +use function sprintf; +use function strpos; +use function strtolower; +use function substr; + +/** + * A value object representing a hexadecimal number + * + * This class exists for type-safety purposes, to ensure that hexadecimal numbers + * returned from ramsey/uuid methods as strings are truly hexadecimal and not some + * other kind of string. + * + * @psalm-immutable + */ +final class Hexadecimal implements TypeInterface +{ + /** + * @var string + */ + private $value; + + /** + * @param string $value The hexadecimal value to store + */ + public function __construct(string $value) + { + $value = strtolower($value); + + if (strpos($value, '0x') === 0) { + $value = substr($value, 2); + } + + if (!ctype_xdigit($value)) { + throw new InvalidArgumentException( + 'Value must be a hexadecimal number' + ); + } + + $this->value = $value; + } + + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/Integer.php b/vendor/ramsey/uuid/src/Type/Integer.php new file mode 100644 index 000000000..7690f6cd8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Integer.php @@ -0,0 +1,153 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\InvalidArgumentException; +use ValueError; + +use function ctype_digit; +use function ltrim; +use function sprintf; +use function strpos; +use function substr; + +/** + * A value object representing an integer + * + * This class exists for type-safety purposes, to ensure that integers + * returned from ramsey/uuid methods as strings are truly integers and not some + * other kind of string. + * + * To support large integers beyond PHP_INT_MAX and PHP_INT_MIN on both 64-bit + * and 32-bit systems, we store the integers as strings. + * + * @psalm-immutable + */ +final class Integer implements NumberInterface +{ + /** + * @psalm-var numeric-string + */ + private $value; + + /** + * @var bool + */ + private $isNegative = false; + + /** + * @param mixed $value The integer value to store + */ + public function __construct($value) + { + $value = (string) $value; + $sign = '+'; + + // If the value contains a sign, remove it for ctype_digit() check. + if (strpos($value, '-') === 0 || strpos($value, '+') === 0) { + $sign = substr($value, 0, 1); + $value = substr($value, 1); + } + + if (!ctype_digit($value)) { + throw new InvalidArgumentException( + 'Value must be a signed integer or a string containing only ' + . 'digits 0-9 and, optionally, a sign (+ or -)' + ); + } + + // Trim any leading zeros. + $value = ltrim($value, '0'); + + // Set to zero if the string is empty after trimming zeros. + if ($value === '') { + $value = '0'; + } + + // Add the negative sign back to the value. + if ($sign === '-' && $value !== '0') { + $value = $sign . $value; + $this->isNegative = true; + } + + /** @psalm-var numeric-string $numericValue */ + $numericValue = $value; + + $this->value = $numericValue; + } + + public function isNegative(): bool + { + return $this->isNegative; + } + + /** + * @psalm-return numeric-string + */ + public function toString(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->toString(); + } + + public function jsonSerialize(): string + { + return $this->toString(); + } + + public function serialize(): string + { + return $this->toString(); + } + + /** + * @return array{string: string} + */ + public function __serialize(): array + { + return ['string' => $this->toString()]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + $this->__construct($serialized); + } + + /** + * @param array{string: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['string'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->unserialize($data['string']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/NumberInterface.php b/vendor/ramsey/uuid/src/Type/NumberInterface.php new file mode 100644 index 000000000..bf4ae9db8 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/NumberInterface.php @@ -0,0 +1,28 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +/** + * NumberInterface ensures consistency in numeric values returned by ramsey/uuid + * + * @psalm-immutable + */ +interface NumberInterface extends TypeInterface +{ + /** + * Returns true if this number is less than zero + */ + public function isNegative(): bool; +} diff --git a/vendor/ramsey/uuid/src/Type/Time.php b/vendor/ramsey/uuid/src/Type/Time.php new file mode 100644 index 000000000..dd1b8bc28 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/Time.php @@ -0,0 +1,139 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use ValueError; +use stdClass; + +use function json_decode; +use function json_encode; +use function sprintf; + +/** + * A value object representing a timestamp + * + * This class exists for type-safety purposes, to ensure that timestamps used + * by ramsey/uuid are truly timestamp integers and not some other kind of string + * or integer. + * + * @psalm-immutable + */ +final class Time implements TypeInterface +{ + /** + * @var IntegerObject + */ + private $seconds; + + /** + * @var IntegerObject + */ + private $microseconds; + + /** + * @param mixed $seconds + * @param mixed $microseconds + */ + public function __construct($seconds, $microseconds = 0) + { + $this->seconds = new IntegerObject($seconds); + $this->microseconds = new IntegerObject($microseconds); + } + + public function getSeconds(): IntegerObject + { + return $this->seconds; + } + + public function getMicroseconds(): IntegerObject + { + return $this->microseconds; + } + + public function toString(): string + { + return $this->seconds->toString() . '.' . $this->microseconds->toString(); + } + + public function __toString(): string + { + return $this->toString(); + } + + /** + * @return string[] + */ + public function jsonSerialize(): array + { + return [ + 'seconds' => $this->getSeconds()->toString(), + 'microseconds' => $this->getMicroseconds()->toString(), + ]; + } + + public function serialize(): string + { + return (string) json_encode($this); + } + + /** + * @return array{seconds: string, microseconds: string} + */ + public function __serialize(): array + { + return [ + 'seconds' => $this->getSeconds()->toString(), + 'microseconds' => $this->getMicroseconds()->toString(), + ]; + } + + /** + * Constructs the object from a serialized string representation + * + * @param string $serialized The serialized string representation of the object + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint + * @psalm-suppress UnusedMethodCall + */ + public function unserialize($serialized): void + { + /** @var stdClass $time */ + $time = json_decode($serialized); + + if (!isset($time->seconds) || !isset($time->microseconds)) { + throw new UnsupportedOperationException( + 'Attempted to unserialize an invalid value' + ); + } + + $this->__construct($time->seconds, $time->microseconds); + } + + /** + * @param array{seconds: string, microseconds: string} $data + */ + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + if (!isset($data['seconds']) || !isset($data['microseconds'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); + } + // @codeCoverageIgnoreEnd + + $this->__construct($data['seconds'], $data['microseconds']); + } +} diff --git a/vendor/ramsey/uuid/src/Type/TypeInterface.php b/vendor/ramsey/uuid/src/Type/TypeInterface.php new file mode 100644 index 000000000..da2d8b203 --- /dev/null +++ b/vendor/ramsey/uuid/src/Type/TypeInterface.php @@ -0,0 +1,30 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Type; + +use JsonSerializable; +use Serializable; + +/** + * TypeInterface ensures consistency in typed values returned by ramsey/uuid + * + * @psalm-immutable + */ +interface TypeInterface extends JsonSerializable, Serializable +{ + public function toString(): string; + + public function __toString(): string; +} diff --git a/vendor/ramsey/uuid/src/Uuid.php b/vendor/ramsey/uuid/src/Uuid.php index 1744d28dd..945480ba4 100644 --- a/vendor/ramsey/uuid/src/Uuid.php +++ b/vendor/ramsey/uuid/src/Uuid.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,162 +8,231 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use DateTime; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\Converter\NumberConverterInterface; +use DateTimeInterface; use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use ReturnTypeWillChange; +use Ramsey\Uuid\Converter\NumberConverterInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use ValueError; + +use function assert; +use function bin2hex; +use function preg_match; +use function sprintf; +use function str_replace; +use function strcmp; +use function strlen; +use function strtolower; +use function substr; /** - * Represents a universally unique identifier (UUID), according to RFC 4122. + * Uuid provides constants and static methods for working with and generating UUIDs * - * This class provides immutable UUID objects (the Uuid class) and the static - * methods `uuid1()`, `uuid3()`, `uuid4()`, and `uuid5()` for generating version - * 1, 3, 4, and 5 UUIDs as specified in RFC 4122. - * - * If all you want is a unique ID, you should probably call `uuid1()` or `uuid4()`. - * Note that `uuid1()` may compromise privacy since it creates a UUID containing - * the computer’s network address. `uuid4()` creates a random UUID. - * - * @link http://tools.ietf.org/html/rfc4122 - * @link http://en.wikipedia.org/wiki/Universally_unique_identifier - * @link http://docs.python.org/3/library/uuid.html - * @link http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html + * @psalm-immutable */ class Uuid implements UuidInterface { - /** - * When this namespace is specified, the name string is a fully-qualified domain name. - * @link http://tools.ietf.org/html/rfc4122#appendix-C - */ - const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + use DeprecatedUuidMethodsTrait; /** - * When this namespace is specified, the name string is a URL. - * @link http://tools.ietf.org/html/rfc4122#appendix-C + * When this namespace is specified, the name string is a fully-qualified + * domain name + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs */ - const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; + public const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; /** - * When this namespace is specified, the name string is an ISO OID. - * @link http://tools.ietf.org/html/rfc4122#appendix-C + * When this namespace is specified, the name string is a URL + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs */ - const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; + public const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; /** - * When this namespace is specified, the name string is an X.500 DN in DER or a text output format. - * @link http://tools.ietf.org/html/rfc4122#appendix-C + * When this namespace is specified, the name string is an ISO OID + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs */ - const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; + public const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; /** - * The nil UUID is special form of UUID that is specified to have all 128 bits set to zero. - * @link http://tools.ietf.org/html/rfc4122#section-4.1.7 + * When this namespace is specified, the name string is an X.500 DN in DER + * or a text output format + * + * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs */ - const NIL = '00000000-0000-0000-0000-000000000000'; + public const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; /** - * Reserved for NCS compatibility. - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 + * The nil UUID is a special form of UUID that is specified to have all 128 + * bits set to zero + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID */ - const RESERVED_NCS = 0; + public const NIL = '00000000-0000-0000-0000-000000000000'; /** - * Specifies the UUID layout given in RFC 4122. - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 + * Variant: reserved, NCS backward compatibility + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant */ - const RFC_4122 = 2; + public const RESERVED_NCS = 0; /** - * Reserved for Microsoft compatibility. - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 + * Variant: the UUID layout specified in RFC 4122 + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant */ - const RESERVED_MICROSOFT = 6; + public const RFC_4122 = 2; /** - * Reserved for future definition. - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 + * Variant: reserved, Microsoft Corporation backward compatibility + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant */ - const RESERVED_FUTURE = 7; + public const RESERVED_MICROSOFT = 6; /** - * Regular expression pattern for matching a valid UUID of any variant. + * Variant: reserved for future definition + * + * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant */ - const VALID_PATTERN = '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$'; + public const RESERVED_FUTURE = 7; /** - * Version 1 (time-based) UUID object constant identifier + * @deprecated Use {@see ValidatorInterface::getPattern()} instead. */ - const UUID_TYPE_TIME = 1; + public const VALID_PATTERN = '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$'; /** - * Version 2 (identifier-based) UUID object constant identifier + * Version 1 (time-based) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version */ - const UUID_TYPE_IDENTIFIER = 2; + public const UUID_TYPE_TIME = 1; /** - * Version 3 (name-based and hashed with MD5) UUID object constant identifier + * Version 2 (DCE Security) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version */ - const UUID_TYPE_HASH_MD5 = 3; + public const UUID_TYPE_DCE_SECURITY = 2; /** - * Version 4 (random) UUID object constant identifier + * @deprecated Use {@see Uuid::UUID_TYPE_DCE_SECURITY} instead. */ - const UUID_TYPE_RANDOM = 4; + public const UUID_TYPE_IDENTIFIER = 2; /** - * Version 5 (name-based and hashed with SHA1) UUID object constant identifier + * Version 3 (name-based and hashed with MD5) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version */ - const UUID_TYPE_HASH_SHA1 = 5; + public const UUID_TYPE_HASH_MD5 = 3; /** - * The factory to use when creating UUIDs. - * @var UuidFactoryInterface + * Version 4 (random) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_RANDOM = 4; + + /** + * Version 5 (name-based and hashed with SHA1) UUID + * + * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version + */ + public const UUID_TYPE_HASH_SHA1 = 5; + + /** + * Version 6 (ordered-time) UUID + * + * This is named `UUID_TYPE_PEABODY`, since the specification is still in + * draft form, and the primary author/editor's name is Brad Peabody. + * + * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft + * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs + */ + public const UUID_TYPE_PEABODY = 6; + + /** + * DCE Security principal domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_PERSON = 0; + + /** + * DCE Security group domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_GROUP = 1; + + /** + * DCE Security organization domain + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_ORG = 2; + + /** + * DCE Security domain string names + * + * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 + */ + public const DCE_DOMAIN_NAMES = [ + self::DCE_DOMAIN_PERSON => 'person', + self::DCE_DOMAIN_GROUP => 'group', + self::DCE_DOMAIN_ORG => 'org', + ]; + + /** + * @var UuidFactoryInterface|null */ private static $factory = null; /** - * The codec to use when encoding or decoding UUID strings. + * @var bool flag to detect if the UUID factory was replaced internally, which disables all optimizations + * for the default/happy path internal scenarios + */ + private static $factoryReplaced = false; + + /** * @var CodecInterface */ protected $codec; /** - * The fields that make up this UUID. + * The fields that make up this UUID * - * This is initialized to the nil value. - * - * @var array - * @see UuidInterface::getFieldsHex() + * @var Rfc4122FieldsInterface */ - protected $fields = [ - 'time_low' => '00000000', - 'time_mid' => '0000', - 'time_hi_and_version' => '0000', - 'clock_seq_hi_and_reserved' => '00', - 'clock_seq_low' => '00', - 'node' => '000000000000', - ]; + protected $fields; /** - * The number converter to use for converting hex values to/from integers. * @var NumberConverterInterface */ - protected $converter; + protected $numberConverter; /** - * Creates a universally unique identifier (UUID) from an array of fields. + * @var TimeConverterInterface + */ + protected $timeConverter; + + /** + * Creates a universally unique identifier (UUID) from an array of fields * * Unless you're making advanced use of this library to generate identifiers * that deviate from RFC 4122, you probably do not want to instantiate a @@ -171,479 +241,163 @@ class Uuid implements UuidInterface * ``` * use Ramsey\Uuid\Uuid; * - * $timeBasedUuid = Uuid::uuid1(); - * $namespaceMd5Uuid = Uuid::uuid3(Uuid::NAMESPACE_URL, 'http://php.net/'); - * $randomUuid = Uuid::uuid4(); + * $timeBasedUuid = Uuid::uuid1(); + * $namespaceMd5Uuid = Uuid::uuid3(Uuid::NAMESPACE_URL, 'http://php.net/'); + * $randomUuid = Uuid::uuid4(); * $namespaceSha1Uuid = Uuid::uuid5(Uuid::NAMESPACE_URL, 'http://php.net/'); * ``` * - * @param array $fields An array of fields from which to construct a UUID; - * see {@see \Ramsey\Uuid\UuidInterface::getFieldsHex()} for array structure. - * @param NumberConverterInterface $converter The number converter to use - * for converting hex values to/from integers. + * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID + * @param NumberConverterInterface $numberConverter The number converter to use + * for converting hex values to/from integers * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings. + * UUID strings + * @param TimeConverterInterface $timeConverter The time converter to use + * for converting timestamps extracted from a UUID to unix timestamps */ public function __construct( - array $fields, - NumberConverterInterface $converter, - CodecInterface $codec + Rfc4122FieldsInterface $fields, + NumberConverterInterface $numberConverter, + CodecInterface $codec, + TimeConverterInterface $timeConverter ) { $this->fields = $fields; $this->codec = $codec; - $this->converter = $converter; + $this->numberConverter = $numberConverter; + $this->timeConverter = $timeConverter; } /** - * Converts this UUID object to a string when the object is used in any - * string context. - * - * @return string - * @link http://www.php.net/manual/en/language.oop5.magic.php#object.tostring + * @psalm-return non-empty-string */ - public function __toString() + public function __toString(): string { return $this->toString(); } /** - * Converts this UUID object to a string when the object is serialized - * with `json_encode()` - * - * @return string - * @link http://php.net/manual/en/class.jsonserializable.php + * Converts the UUID to a string for JSON serialization */ - #[ReturnTypeWillChange] - public function jsonSerialize() + public function jsonSerialize(): string { return $this->toString(); } /** - * Converts this UUID object to a string when the object is serialized - * with `serialize()` - * - * @return string - * @link http://php.net/manual/en/class.serializable.php + * Converts the UUID to a string for PHP serialization */ - #[ReturnTypeWillChange] - public function serialize() + public function serialize(): string { - return $this->toString(); + return $this->getFields()->getBytes(); } /** - * @return array{string: string} + * @return array{bytes: string} */ - #[ReturnTypeWillChange] - public function __serialize() + public function __serialize(): array { - return ['string' => $this->toString()]; + return ['bytes' => $this->serialize()]; } /** - * Re-constructs the object from its serialized form. + * Re-constructs the object from its serialized form * - * @param string $serialized - * @link http://php.net/manual/en/class.serializable.php - * @throws InvalidUuidStringException + * @param string $serialized The serialized PHP string to unserialize into + * a UuidInterface instance + * + * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint */ - #[ReturnTypeWillChange] - public function unserialize($serialized) + public function unserialize($serialized): void { - $uuid = self::fromString($serialized); + if (strlen($serialized) === 16) { + /** @var Uuid $uuid */ + $uuid = self::getFactory()->fromBytes($serialized); + } else { + /** @var Uuid $uuid */ + $uuid = self::getFactory()->fromString($serialized); + } + $this->codec = $uuid->codec; - $this->converter = $uuid->converter; + $this->numberConverter = $uuid->numberConverter; $this->fields = $uuid->fields; + $this->timeConverter = $uuid->timeConverter; } /** - * @param array{string: string} $serialized - * @return void - * @throws InvalidUuidStringException + * @param array{bytes: string} $data */ - #[ReturnTypeWillChange] - public function __unserialize(array $serialized) + public function __unserialize(array $data): void { // @codeCoverageIgnoreStart - if (!isset($serialized['string'])) { - throw new InvalidUuidStringException(); + if (!isset($data['bytes'])) { + throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); } // @codeCoverageIgnoreEnd - $this->unserialize($serialized['string']); + $this->unserialize($data['bytes']); } - public function compareTo(UuidInterface $other) + public function compareTo(UuidInterface $other): int { - if ($this->getMostSignificantBitsHex() < $other->getMostSignificantBitsHex()) { + $compare = strcmp($this->toString(), $other->toString()); + + if ($compare < 0) { return -1; } - if ($this->getMostSignificantBitsHex() > $other->getMostSignificantBitsHex()) { - return 1; - } - - if ($this->getLeastSignificantBitsHex() < $other->getLeastSignificantBitsHex()) { - return -1; - } - - if ($this->getLeastSignificantBitsHex() > $other->getLeastSignificantBitsHex()) { + if ($compare > 0) { return 1; } return 0; } - public function equals($other) + public function equals(?object $other): bool { if (!$other instanceof UuidInterface) { return false; } - return $this->compareTo($other) == 0; + return $this->compareTo($other) === 0; } - public function getBytes() + /** + * @psalm-return non-empty-string + */ + public function getBytes(): string { return $this->codec->encodeBinary($this); } - /** - * Returns the high field of the clock sequence multiplexed with the variant - * (bits 65-72 of the UUID). - * - * @return int Unsigned 8-bit integer value of clock_seq_hi_and_reserved - */ - public function getClockSeqHiAndReserved() - { - return hexdec($this->getClockSeqHiAndReservedHex()); - } - - public function getClockSeqHiAndReservedHex() - { - return $this->fields['clock_seq_hi_and_reserved']; - } - - /** - * Returns the low field of the clock sequence (bits 73-80 of the UUID). - * - * @return int Unsigned 8-bit integer value of clock_seq_low - */ - public function getClockSeqLow() - { - return hexdec($this->getClockSeqLowHex()); - } - - public function getClockSeqLowHex() - { - return $this->fields['clock_seq_low']; - } - - /** - * Returns the clock sequence value associated with this UUID. - * - * For UUID version 1, the clock sequence is used to help avoid - * duplicates that could arise when the clock is set backwards in time - * or if the node ID changes. - * - * For UUID version 3 or 5, the clock sequence is a 14-bit value - * constructed from a name as described in RFC 4122, Section 4.3. - * - * For UUID version 4, clock sequence is a randomly or pseudo-randomly - * generated 14-bit value as described in RFC 4122, Section 4.4. - * - * @return int Unsigned 14-bit integer value of clock sequence - * @link http://tools.ietf.org/html/rfc4122#section-4.1.5 - */ - public function getClockSequence() - { - return ($this->getClockSeqHiAndReserved() & 0x3f) << 8 | $this->getClockSeqLow(); - } - - public function getClockSequenceHex() - { - return sprintf('%04x', $this->getClockSequence()); - } - - public function getNumberConverter() - { - return $this->converter; - } - - /** - * @inheritdoc - */ - public function getDateTime() - { - if ($this->getVersion() != 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - $unixTimeNanoseconds = $this->getTimestamp() - 0x01b21dd213814000; - $unixTime = ($unixTimeNanoseconds - $unixTimeNanoseconds % 1e7) / 1e7; - - return new DateTime("@{$unixTime}"); - } - - /** - * Returns an array of the fields of this UUID, with keys named according - * to the RFC 4122 names for the fields. - * - * * **time_low**: The low field of the timestamp, an unsigned 32-bit integer - * * **time_mid**: The middle field of the timestamp, an unsigned 16-bit integer - * * **time_hi_and_version**: The high field of the timestamp multiplexed with - * the version number, an unsigned 16-bit integer - * * **clock_seq_hi_and_reserved**: The high field of the clock sequence - * multiplexed with the variant, an unsigned 8-bit integer - * * **clock_seq_low**: The low field of the clock sequence, an unsigned - * 8-bit integer - * * **node**: The spatially unique node identifier, an unsigned 48-bit - * integer - * - * @return array The UUID fields represented as integer values - * @link http://tools.ietf.org/html/rfc4122#section-4.1.2 - */ - public function getFields() - { - return [ - 'time_low' => $this->getTimeLow(), - 'time_mid' => $this->getTimeMid(), - 'time_hi_and_version' => $this->getTimeHiAndVersion(), - 'clock_seq_hi_and_reserved' => $this->getClockSeqHiAndReserved(), - 'clock_seq_low' => $this->getClockSeqLow(), - 'node' => $this->getNode(), - ]; - } - - public function getFieldsHex() + public function getFields(): FieldsInterface { return $this->fields; } - public function getHex() + public function getHex(): Hexadecimal { - return str_replace('-', '', $this->toString()); + return new Hexadecimal(str_replace('-', '', $this->toString())); + } + + public function getInteger(): IntegerObject + { + return new IntegerObject($this->numberConverter->fromHex($this->getHex()->toString())); } /** - * @inheritdoc + * @psalm-return non-empty-string */ - public function getInteger() - { - return $this->converter->fromHex($this->getHex()); - } - - /** - * Returns the least significant 64 bits of this UUID's 128 bit value. - * - * @return mixed Converted representation of the unsigned 64-bit integer value - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - */ - public function getLeastSignificantBits() - { - return $this->converter->fromHex($this->getLeastSignificantBitsHex()); - } - - public function getLeastSignificantBitsHex() - { - return sprintf( - '%02s%02s%012s', - $this->fields['clock_seq_hi_and_reserved'], - $this->fields['clock_seq_low'], - $this->fields['node'] - ); - } - - /** - * Returns the most significant 64 bits of this UUID's 128 bit value. - * - * @return mixed Converted representation of the unsigned 64-bit integer value - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - */ - public function getMostSignificantBits() - { - return $this->converter->fromHex($this->getMostSignificantBitsHex()); - } - - public function getMostSignificantBitsHex() - { - return sprintf( - '%08s%04s%04s', - $this->fields['time_low'], - $this->fields['time_mid'], - $this->fields['time_hi_and_version'] - ); - } - - /** - * Returns the node value associated with this UUID - * - * For UUID version 1, the node field consists of an IEEE 802 MAC - * address, usually the host address. For systems with multiple IEEE - * 802 addresses, any available one can be used. The lowest addressed - * octet (octet number 10) contains the global/local bit and the - * unicast/multicast bit, and is the first octet of the address - * transmitted on an 802.3 LAN. - * - * For systems with no IEEE address, a randomly or pseudo-randomly - * generated value may be used; see RFC 4122, Section 4.5. The - * multicast bit must be set in such addresses, in order that they - * will never conflict with addresses obtained from network cards. - * - * For UUID version 3 or 5, the node field is a 48-bit value constructed - * from a name as described in RFC 4122, Section 4.3. - * - * For UUID version 4, the node field is a randomly or pseudo-randomly - * generated 48-bit value as described in RFC 4122, Section 4.4. - * - * @return int Unsigned 48-bit integer value of node - * @link http://tools.ietf.org/html/rfc4122#section-4.1.6 - */ - public function getNode() - { - return hexdec($this->getNodeHex()); - } - - public function getNodeHex() - { - return $this->fields['node']; - } - - /** - * Returns the high field of the timestamp multiplexed with the version - * number (bits 49-64 of the UUID). - * - * @return int Unsigned 16-bit integer value of time_hi_and_version - */ - public function getTimeHiAndVersion() - { - return hexdec($this->getTimeHiAndVersionHex()); - } - - public function getTimeHiAndVersionHex() - { - return $this->fields['time_hi_and_version']; - } - - /** - * Returns the low field of the timestamp (the first 32 bits of the UUID). - * - * @return int Unsigned 32-bit integer value of time_low - */ - public function getTimeLow() - { - return hexdec($this->getTimeLowHex()); - } - - public function getTimeLowHex() - { - return $this->fields['time_low']; - } - - /** - * Returns the middle field of the timestamp (bits 33-48 of the UUID). - * - * @return int Unsigned 16-bit integer value of time_mid - */ - public function getTimeMid() - { - return hexdec($this->getTimeMidHex()); - } - - public function getTimeMidHex() - { - return $this->fields['time_mid']; - } - - /** - * Returns the timestamp value associated with this UUID. - * - * The 60 bit timestamp value is constructed from the time_low, - * time_mid, and time_hi fields of this UUID. The resulting - * timestamp is measured in 100-nanosecond units since midnight, - * October 15, 1582 UTC. - * - * The timestamp value is only meaningful in a time-based UUID, which - * has version type 1. If this UUID is not a time-based UUID then - * this method throws UnsupportedOperationException. - * - * @return int Unsigned 60-bit integer value of the timestamp - * @throws UnsupportedOperationException If this UUID is not a version 1 UUID - * @link http://tools.ietf.org/html/rfc4122#section-4.1.4 - */ - public function getTimestamp() - { - if ($this->getVersion() != 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - return hexdec($this->getTimestampHex()); - } - - /** - * @inheritdoc - */ - public function getTimestampHex() - { - if ($this->getVersion() != 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - return sprintf( - '%03x%04s%08s', - ($this->getTimeHiAndVersion() & 0x0fff), - $this->fields['time_mid'], - $this->fields['time_low'] - ); - } - - public function getUrn() - { - return 'urn:uuid:' . $this->toString(); - } - - public function getVariant() - { - $clockSeq = $this->getClockSeqHiAndReserved(); - - if (0 === ($clockSeq & 0x80)) { - return self::RESERVED_NCS; - } - - if (0 === ($clockSeq & 0x40)) { - return self::RFC_4122; - } - - if (0 === ($clockSeq & 0x20)) { - return self::RESERVED_MICROSOFT; - } - - return self::RESERVED_FUTURE; - } - - public function getVersion() - { - if ($this->getVariant() == self::RFC_4122) { - return (int) (($this->getTimeHiAndVersion() >> 12) & 0x0f); - } - - return null; - } - - public function toString() + public function toString(): string { return $this->codec->encode($this); } /** - * Returns the currently set factory used to create UUIDs. - * - * @return UuidFactoryInterface + * Returns the factory used to create UUIDs */ - public static function getFactory() + public static function getFactory(): UuidFactoryInterface { - if (!self::$factory) { + if (self::$factory === null) { self::$factory = new UuidFactory(); } @@ -651,131 +405,260 @@ class Uuid implements UuidInterface } /** - * Sets the factory used to create UUIDs. + * Sets the factory used to create UUIDs * - * @param UuidFactoryInterface $factory + * @param UuidFactoryInterface $factory A factory that will be used by this + * class to create UUIDs */ - public static function setFactory(UuidFactoryInterface $factory) + public static function setFactory(UuidFactoryInterface $factory): void { + // Note: non-strict equality is intentional here. If the factory is configured differently, every assumption + // around purity is broken, and we have to internally decide everything differently. + // phpcs:ignore SlevomatCodingStandard.Operators.DisallowEqualOperators.DisallowedNotEqualOperator + self::$factoryReplaced = ($factory != new UuidFactory()); + self::$factory = $factory; } /** - * Creates a UUID from a byte string. + * Creates a UUID from a byte string * - * @param string $bytes - * @return UuidInterface - * @throws InvalidUuidStringException - * @throws InvalidArgumentException + * @param string $bytes A binary string + * + * @return UuidInterface A UuidInterface instance created from a binary + * string representation + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. */ - public static function fromBytes($bytes) + public static function fromBytes(string $bytes): UuidInterface { + if (! self::$factoryReplaced && strlen($bytes) === 16) { + $base16Uuid = bin2hex($bytes); + + // Note: we are calling `fromString` internally because we don't know if the given `$bytes` is a valid UUID + return self::fromString( + substr($base16Uuid, 0, 8) + . '-' + . substr($base16Uuid, 8, 4) + . '-' + . substr($base16Uuid, 12, 4) + . '-' + . substr($base16Uuid, 16, 4) + . '-' + . substr($base16Uuid, 20, 12) + ); + } + return self::getFactory()->fromBytes($bytes); } /** - * Creates a UUID from the string standard representation. + * Creates a UUID from the string standard representation * - * @param string $name A string that specifies a UUID - * @return UuidInterface - * @throws InvalidUuidStringException + * @param string $uuid A hexadecimal string + * + * @return UuidInterface A UuidInterface instance created from a hexadecimal + * string representation + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. */ - public static function fromString($name) + public static function fromString(string $uuid): UuidInterface { - return self::getFactory()->fromString($name); + if (! self::$factoryReplaced && preg_match(LazyUuidFromString::VALID_REGEX, $uuid) === 1) { + assert($uuid !== ''); + + return new LazyUuidFromString(strtolower($uuid)); + } + + return self::getFactory()->fromString($uuid); } /** - * Creates a UUID from a 128-bit integer string. + * Creates a UUID from a DateTimeInterface instance + * + * @param DateTimeInterface $dateTime The date and time + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID created from a DateTimeInterface instance + */ + public static function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->fromDateTime($dateTime, $node, $clockSeq); + } + + /** + * Creates a UUID from a 128-bit integer string * * @param string $integer String representation of 128-bit integer - * @return UuidInterface - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidUuidStringException + * + * @return UuidInterface A UuidInterface instance created from the string + * representation of a 128-bit integer + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners */ - public static function fromInteger($integer) + public static function fromInteger(string $integer): UuidInterface { return self::getFactory()->fromInteger($integer); } /** - * Check if a string is a valid UUID. + * Returns true if the provided string is a valid UUID * - * @param string $uuid The string UUID to test - * @return boolean + * @param string $uuid A string to validate as a UUID + * + * @return bool True if the string is a valid UUID, false otherwise + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners */ - public static function isValid($uuid) + public static function isValid(string $uuid): bool { - $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); - - if ($uuid == self::NIL) { - return true; - } - - if (!preg_match('/' . self::VALID_PATTERN . '/D', $uuid)) { - return false; - } - - return true; + return self::getFactory()->getValidator()->validate($uuid); } /** - * Generate a version 1 UUID from a host ID, sequence number, and the current time. + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time * - * @param int|string $node A 48-bit number representing the hardware address - * This number may be represented as an integer or a hexadecimal string. + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string * @param int $clockSeq A 14-bit number used to help avoid duplicates that * could arise when the clock is set backwards in time or if the node ID - * changes. - * @return UuidInterface - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy + * changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID */ - public static function uuid1($node = null, $clockSeq = null) + public static function uuid1($node = null, ?int $clockSeq = null): UuidInterface { return self::getFactory()->uuid1($node, $clockSeq); } /** - * Generate a version 3 UUID based on the MD5 hash of a namespace identifier - * (which is a UUID) and a name (which is a string). + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return UuidInterface - * @throws InvalidUuidStringException + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes (in a version 2 UUID, the lower 8 bits of this number + * are replaced with the domain). + * + * @return UuidInterface A UuidInterface instance that represents a + * version 2 UUID */ - public static function uuid3($ns, $name) + public static function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->uuid2($localDomain, $localIdentifier, $node, $clockSeq); + } + + /** + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 3 UUID + * + * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ + public static function uuid3($ns, string $name): UuidInterface { return self::getFactory()->uuid3($ns, $name); } /** - * Generate a version 4 (random) UUID. + * Returns a version 4 (random) UUID * - * @return UuidInterface - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception + * @return UuidInterface A UuidInterface instance that represents a + * version 4 UUID */ - public static function uuid4() + public static function uuid4(): UuidInterface { return self::getFactory()->uuid4(); } /** - * Generate a version 5 UUID based on the SHA-1 hash of a namespace - * identifier (which is a UUID) and a name (which is a string). + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return UuidInterface - * @throws InvalidUuidStringException + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 5 UUID + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + * + * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive + * havoc across all consumers: that should never happen, and + * is generally to be discouraged. Until the factory is kept + * un-replaced, this method is effectively pure. */ - public static function uuid5($ns, $name) + public static function uuid5($ns, string $name): UuidInterface { return self::getFactory()->uuid5($ns, $name); } + + /** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 6 UUID + */ + public static function uuid6( + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + return self::getFactory()->uuid6($node, $clockSeq); + } } diff --git a/vendor/ramsey/uuid/src/UuidFactory.php b/vendor/ramsey/uuid/src/UuidFactory.php index 5a57b09b2..6f2cea061 100644 --- a/vendor/ramsey/uuid/src/UuidFactory.php +++ b/vendor/ramsey/uuid/src/UuidFactory.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,201 +8,314 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; +use DateTimeInterface; +use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Codec\CodecInterface; use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Converter\TimeConverterInterface; +use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; +use Ramsey\Uuid\Generator\DefaultTimeGenerator; +use Ramsey\Uuid\Generator\NameGeneratorInterface; use Ramsey\Uuid\Generator\RandomGeneratorInterface; use Ramsey\Uuid\Generator\TimeGeneratorInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Builder\UuidBuilderInterface; +use Ramsey\Uuid\Lazy\LazyUuidFromString; +use Ramsey\Uuid\Provider\NodeProviderInterface; +use Ramsey\Uuid\Provider\Time\FixedTimeProvider; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Type\Time; +use Ramsey\Uuid\Validator\ValidatorInterface; + +use function bin2hex; +use function hex2bin; +use function pack; +use function str_pad; +use function strtolower; +use function substr; +use function substr_replace; +use function unpack; + +use const STR_PAD_LEFT; class UuidFactory implements UuidFactoryInterface { /** * @var CodecInterface */ - private $codec = null; + private $codec; + + /** + * @var DceSecurityGeneratorInterface + */ + private $dceSecurityGenerator; + + /** + * @var NameGeneratorInterface + */ + private $nameGenerator; /** * @var NodeProviderInterface */ - private $nodeProvider = null; + private $nodeProvider; /** * @var NumberConverterInterface */ - private $numberConverter = null; + private $numberConverter; /** * @var RandomGeneratorInterface */ - private $randomGenerator = null; + private $randomGenerator; + + /** + * @var TimeConverterInterface + */ + private $timeConverter; /** * @var TimeGeneratorInterface */ - private $timeGenerator = null; + private $timeGenerator; /** * @var UuidBuilderInterface */ - private $uuidBuilder = null; + private $uuidBuilder; /** - * Constructs a `UuidFactory` for creating `Ramsey\Uuid\UuidInterface` instances - * - * @param FeatureSet $features A set of features for use when creating UUIDs + * @var ValidatorInterface */ - public function __construct(FeatureSet $features = null) + private $validator; + + /** @var bool whether the feature set was provided from outside, or we can operate under "default" assumptions */ + private $isDefaultFeatureSet; + + /** + * @param FeatureSet $features A set of available features in the current environment + */ + public function __construct(?FeatureSet $features = null) { + $this->isDefaultFeatureSet = $features === null; + $features = $features ?: new FeatureSet(); $this->codec = $features->getCodec(); + $this->dceSecurityGenerator = $features->getDceSecurityGenerator(); + $this->nameGenerator = $features->getNameGenerator(); $this->nodeProvider = $features->getNodeProvider(); $this->numberConverter = $features->getNumberConverter(); $this->randomGenerator = $features->getRandomGenerator(); + $this->timeConverter = $features->getTimeConverter(); $this->timeGenerator = $features->getTimeGenerator(); $this->uuidBuilder = $features->getBuilder(); + $this->validator = $features->getValidator(); } /** - * Returns the UUID coder-decoder used by this factory - * - * @return CodecInterface + * Returns the codec used by this factory */ - public function getCodec() + public function getCodec(): CodecInterface { return $this->codec; } /** - * Sets the UUID coder-decoder used by this factory + * Sets the codec to use for this factory * - * @param CodecInterface $codec + * @param CodecInterface $codec A UUID encoder-decoder */ - public function setCodec(CodecInterface $codec) + public function setCodec(CodecInterface $codec): void { + $this->isDefaultFeatureSet = false; + $this->codec = $codec; } /** - * Returns the system node ID provider used by this factory - * - * @return NodeProviderInterface + * Returns the name generator used by this factory */ - public function getNodeProvider() + public function getNameGenerator(): NameGeneratorInterface + { + return $this->nameGenerator; + } + + /** + * Sets the name generator to use for this factory + * + * @param NameGeneratorInterface $nameGenerator A generator to generate + * binary data, based on a namespace and name + */ + public function setNameGenerator(NameGeneratorInterface $nameGenerator): void + { + $this->isDefaultFeatureSet = false; + + $this->nameGenerator = $nameGenerator; + } + + /** + * Returns the node provider used by this factory + */ + public function getNodeProvider(): NodeProviderInterface { return $this->nodeProvider; } /** - * Returns the random UUID generator used by this factory - * - * @return RandomGeneratorInterface + * Returns the random generator used by this factory */ - public function getRandomGenerator() + public function getRandomGenerator(): RandomGeneratorInterface { return $this->randomGenerator; } /** - * Returns the time-based UUID generator used by this factory - * - * @return TimeGeneratorInterface + * Returns the time generator used by this factory */ - public function getTimeGenerator() + public function getTimeGenerator(): TimeGeneratorInterface { return $this->timeGenerator; } /** - * Sets the time-based UUID generator this factory will use to generate version 1 UUIDs + * Sets the time generator to use for this factory * - * @param TimeGeneratorInterface $generator + * @param TimeGeneratorInterface $generator A generator to generate binary + * data, based on the time */ - public function setTimeGenerator(TimeGeneratorInterface $generator) + public function setTimeGenerator(TimeGeneratorInterface $generator): void { + $this->isDefaultFeatureSet = false; + $this->timeGenerator = $generator; } /** - * Returns the number converter used by this factory - * - * @return NumberConverterInterface + * Returns the DCE Security generator used by this factory */ - public function getNumberConverter() + public function getDceSecurityGenerator(): DceSecurityGeneratorInterface + { + return $this->dceSecurityGenerator; + } + + /** + * Sets the DCE Security generator to use for this factory + * + * @param DceSecurityGeneratorInterface $generator A generator to generate + * binary data, based on a local domain and local identifier + */ + public function setDceSecurityGenerator(DceSecurityGeneratorInterface $generator): void + { + $this->isDefaultFeatureSet = false; + + $this->dceSecurityGenerator = $generator; + } + + /** + * Returns the number converter used by this factory + */ + public function getNumberConverter(): NumberConverterInterface { return $this->numberConverter; } /** - * Sets the random UUID generator this factory will use to generate version 4 UUIDs + * Sets the random generator to use for this factory * - * @param RandomGeneratorInterface $generator + * @param RandomGeneratorInterface $generator A generator to generate binary + * data, based on some random input */ - public function setRandomGenerator(RandomGeneratorInterface $generator) + public function setRandomGenerator(RandomGeneratorInterface $generator): void { + $this->isDefaultFeatureSet = false; + $this->randomGenerator = $generator; } /** - * Sets the number converter this factory will use + * Sets the number converter to use for this factory * - * @param NumberConverterInterface $converter + * @param NumberConverterInterface $converter A converter to use for working + * with large integers (i.e. integers greater than PHP_INT_MAX) */ - public function setNumberConverter(NumberConverterInterface $converter) + public function setNumberConverter(NumberConverterInterface $converter): void { + $this->isDefaultFeatureSet = false; + $this->numberConverter = $converter; } /** - * Returns the UUID builder this factory uses when creating `Uuid` instances - * - * @return UuidBuilderInterface $builder + * Returns the UUID builder used by this factory */ - public function getUuidBuilder() + public function getUuidBuilder(): UuidBuilderInterface { return $this->uuidBuilder; } /** - * Sets the UUID builder this factory will use when creating `Uuid` instances + * Sets the UUID builder to use for this factory * - * @param UuidBuilderInterface $builder + * @param UuidBuilderInterface $builder A builder for constructing instances + * of UuidInterface */ - public function setUuidBuilder(UuidBuilderInterface $builder) + public function setUuidBuilder(UuidBuilderInterface $builder): void { + $this->isDefaultFeatureSet = false; + $this->uuidBuilder = $builder; } /** - * @inheritdoc + * @psalm-mutation-free */ - public function fromBytes($bytes) + public function getValidator(): ValidatorInterface + { + return $this->validator; + } + + /** + * Sets the validator to use for this factory + * + * @param ValidatorInterface $validator A validator to use for validating + * whether a string is a valid UUID + */ + public function setValidator(ValidatorInterface $validator): void + { + $this->isDefaultFeatureSet = false; + + $this->validator = $validator; + } + + /** + * @psalm-pure + */ + public function fromBytes(string $bytes): UuidInterface { return $this->codec->decodeBytes($bytes); } /** - * @inheritdoc + * @psalm-pure */ - public function fromString($uuid) + public function fromString(string $uuid): UuidInterface { $uuid = strtolower($uuid); + return $this->codec->decode($uuid); } /** - * @inheritdoc + * @psalm-pure */ - public function fromInteger($integer) + public function fromInteger(string $integer): UuidInterface { $hex = $this->numberConverter->toHex($integer); $hex = str_pad($hex, 32, '0', STR_PAD_LEFT); @@ -209,107 +323,171 @@ class UuidFactory implements UuidFactoryInterface return $this->fromString($hex); } - /** - * @inheritdoc - */ - public function uuid1($node = null, $clockSeq = null) - { - $bytes = $this->timeGenerator->generate($node, $clockSeq); - $hex = bin2hex($bytes); + public function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + $timeProvider = new FixedTimeProvider( + new Time($dateTime->format('U'), $dateTime->format('u')) + ); - return $this->uuidFromHashedName($hex, 1); + $timeGenerator = new DefaultTimeGenerator( + $this->nodeProvider, + $this->timeConverter, + $timeProvider + ); + + $nodeHex = $node ? $node->toString() : null; + + $bytes = $timeGenerator->generate($nodeHex, $clockSeq); + + return $this->uuidFromBytesAndVersion($bytes, 1); } /** - * @inheritdoc + * @inheritDoc */ - public function uuid3($ns, $name) + public function uuid1($node = null, ?int $clockSeq = null): UuidInterface + { + $bytes = $this->timeGenerator->generate($node, $clockSeq); + + return $this->uuidFromBytesAndVersion($bytes, 1); + } + + public function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface { + $bytes = $this->dceSecurityGenerator->generate( + $localDomain, + $localIdentifier, + $node, + $clockSeq + ); + + return $this->uuidFromBytesAndVersion($bytes, 2); + } + + /** + * @inheritDoc + * @psalm-pure + */ + public function uuid3($ns, string $name): UuidInterface { return $this->uuidFromNsAndName($ns, $name, 3, 'md5'); } - /** - * @inheritdoc - */ - public function uuid4() + public function uuid4(): UuidInterface { $bytes = $this->randomGenerator->generate(16); - // When converting the bytes to hex, it turns into a 32-character - // hexadecimal string that looks a lot like an MD5 hash, so at this - // point, we can just pass it to uuidFromHashedName. - $hex = bin2hex($bytes); - - return $this->uuidFromHashedName($hex, 4); + return $this->uuidFromBytesAndVersion($bytes, 4); } /** - * @inheritdoc + * @inheritDoc + * @psalm-pure */ - public function uuid5($ns, $name) + public function uuid5($ns, string $name): UuidInterface { return $this->uuidFromNsAndName($ns, $name, 5, 'sha1'); } - /** - * Returns a `Uuid` - * - * Uses the configured builder and codec and the provided array of hexadecimal - * value UUID fields to construct a `Uuid` object. - * - * @param array $fields An array of fields from which to construct a UUID; - * see {@see \Ramsey\Uuid\UuidInterface::getFieldsHex()} for array structure. - * @return UuidInterface - */ - public function uuid(array $fields) + public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface { - return $this->uuidBuilder->build($this->codec, $fields); + $nodeHex = $node ? $node->toString() : null; + $bytes = $this->timeGenerator->generate($nodeHex, $clockSeq); + + // Rearrange the bytes, according to the UUID version 6 specification. + $v6 = $bytes[6] . $bytes[7] . $bytes[4] . $bytes[5] + . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3]; + $v6 = bin2hex($v6); + + // Drop the first four bits, while adding an empty four bits for the + // version field. This allows us to reconstruct the correct time from + // the bytes of this UUID. + $v6Bytes = hex2bin(substr($v6, 1, 12) . '0' . substr($v6, -3)); + $v6Bytes .= substr($bytes, 8); + + return $this->uuidFromBytesAndVersion($v6Bytes, 6); } /** - * Returns a version 3 or 5 namespaced `Uuid` + * Returns a Uuid created from the provided byte string * - * @param string|UuidInterface $ns The UUID namespace to use - * @param string $name The string to hash together with the namespace - * @param int $version The version of UUID to create (3 or 5) - * @param string $hashFunction The hash function to use when hashing together - * the namespace and name - * @return UuidInterface - * @throws InvalidUuidStringException + * Uses the configured builder and codec and the provided byte string to + * construct a Uuid object. + * + * @param string $bytes The byte string from which to construct a UUID + * + * @return UuidInterface An instance of UuidInterface, created from the + * provided bytes + * + * @psalm-pure */ - protected function uuidFromNsAndName($ns, $name, $version, $hashFunction) + public function uuid(string $bytes): UuidInterface + { + return $this->uuidBuilder->build($this->codec, $bytes); + } + + /** + * Returns a version 3 or 5 namespaced Uuid + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to hash together with the namespace + * @param int $version The version of UUID to create (3 or 5) + * @param string $hashAlgorithm The hashing algorithm to use when hashing + * together the namespace and name + * + * @return UuidInterface An instance of UuidInterface, created by hashing + * together the provided namespace and name + * + * @psalm-pure + */ + private function uuidFromNsAndName($ns, string $name, int $version, string $hashAlgorithm): UuidInterface { if (!($ns instanceof UuidInterface)) { - $ns = $this->codec->decode($ns); + $ns = $this->fromString($ns); } - $hash = call_user_func($hashFunction, ($ns->getBytes() . $name)); + $bytes = $this->nameGenerator->generate($ns, $name, $hashAlgorithm); - return $this->uuidFromHashedName($hash, $version); + return $this->uuidFromBytesAndVersion(substr($bytes, 0, 16), $version); } /** - * Returns a `Uuid` created from `$hash` with the version field set to `$version` - * and the variant field set for RFC 4122 + * Returns an RFC 4122 variant Uuid, created from the provided bytes and version * - * @param string $hash The hash to use when creating the UUID - * @param int $version The UUID version to set for this hash (1, 3, 4, or 5) - * @return UuidInterface + * @param string $bytes The byte string to convert to a UUID + * @param int $version The RFC 4122 version to apply to the UUID + * + * @return UuidInterface An instance of UuidInterface, created from the + * byte string and version + * + * @psalm-pure */ - protected function uuidFromHashedName($hash, $version) + private function uuidFromBytesAndVersion(string $bytes, int $version): UuidInterface { - $timeHi = BinaryUtils::applyVersion(substr($hash, 12, 4), $version); - $clockSeqHi = BinaryUtils::applyVariant(hexdec(substr($hash, 16, 2))); + /** @var array $unpackedTime */ + $unpackedTime = unpack('n*', substr($bytes, 6, 2)); + $timeHi = (int) $unpackedTime[1]; + $timeHiAndVersion = pack('n*', BinaryUtils::applyVersion($timeHi, $version)); - $fields = [ - 'time_low' => substr($hash, 0, 8), - 'time_mid' => substr($hash, 8, 4), - 'time_hi_and_version' => str_pad(dechex($timeHi), 4, '0', STR_PAD_LEFT), - 'clock_seq_hi_and_reserved' => str_pad(dechex($clockSeqHi), 2, '0', STR_PAD_LEFT), - 'clock_seq_low' => substr($hash, 18, 2), - 'node' => substr($hash, 20, 12), - ]; + /** @var array $unpackedClockSeq */ + $unpackedClockSeq = unpack('n*', substr($bytes, 8, 2)); + $clockSeqHi = (int) $unpackedClockSeq[1]; + $clockSeqHiAndReserved = pack('n*', BinaryUtils::applyVariant($clockSeqHi)); - return $this->uuid($fields); + $bytes = substr_replace($bytes, $timeHiAndVersion, 6, 2); + $bytes = substr_replace($bytes, $clockSeqHiAndReserved, 8, 2); + + if ($this->isDefaultFeatureSet) { + return LazyUuidFromString::fromBytes($bytes); + } + + return $this->uuid($bytes); } } diff --git a/vendor/ramsey/uuid/src/UuidFactoryInterface.php b/vendor/ramsey/uuid/src/UuidFactoryInterface.php index 1c1651d64..468cc6377 100644 --- a/vendor/ramsey/uuid/src/UuidFactoryInterface.php +++ b/vendor/ramsey/uuid/src/UuidFactoryInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,17 +8,16 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use DateTimeInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; +use Ramsey\Uuid\Validator\ValidatorInterface; /** * UuidFactoryInterface defines common functionality all `UuidFactory` instances @@ -26,83 +26,157 @@ use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; interface UuidFactoryInterface { /** - * Generate a version 1 UUID from a host ID, sequence number, and the current time. + * Returns the validator to use for the factory * - * @param int|string|null $node A 48-bit number representing the hardware address - * This number may be represented as an integer or a hexadecimal string. - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes. - * @return UuidInterface - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy + * @psalm-mutation-free */ - public function uuid1($node = null, $clockSeq = null); + public function getValidator(): ValidatorInterface; /** - * Generate a version 3 UUID based on the MD5 hash of a namespace identifier - * (which is a UUID) and a name (which is a string). + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return UuidInterface - * @throws InvalidUuidStringException + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID */ - public function uuid3($ns, $name); + public function uuid1($node = null, ?int $clockSeq = null): UuidInterface; /** - * Generate a version 4 (random) UUID. + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time * - * @return UuidInterface - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 2 UUID */ - public function uuid4(); + public function uuid2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface; /** - * Generate a version 5 UUID based on the SHA-1 hash of a namespace - * identifier (which is a UUID) and a name (which is a string). + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return UuidInterface - * @throws InvalidUuidStringException + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 3 UUID + * + * @psalm-pure */ - public function uuid5($ns, $name); + public function uuid3($ns, string $name): UuidInterface; /** - * Creates a UUID from a byte string. + * Returns a version 4 (random) UUID * - * @param string $bytes A 16-byte string representation of a UUID - * @return UuidInterface - * @throws InvalidUuidStringException - * @throws InvalidArgumentException if string has not 16 characters + * @return UuidInterface A UuidInterface instance that represents a + * version 4 UUID */ - public function fromBytes($bytes); + public function uuid4(): UuidInterface; + + /** + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * @param string $name The name to use for creating a UUID + * + * @return UuidInterface A UuidInterface instance that represents a + * version 5 UUID + * + * @psalm-pure + */ + public function uuid5($ns, string $name): UuidInterface; + + /** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 6 UUID + */ + public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface; + + /** + * Creates a UUID from a byte string + * + * @param string $bytes A binary string + * + * @return UuidInterface A UuidInterface instance created from a binary + * string representation + * + * @psalm-pure + */ + public function fromBytes(string $bytes): UuidInterface; /** * Creates a UUID from the string standard representation * - * @param string $uuid A string representation of a UUID - * @return UuidInterface - * @throws InvalidUuidStringException + * @param string $uuid A hexadecimal string + * + * @return UuidInterface A UuidInterface instance created from a hexadecimal + * string representation + * + * @psalm-pure */ - public function fromString($uuid); + public function fromString(string $uuid): UuidInterface; /** - * Creates a `Uuid` from an integer representation + * Creates a UUID from a 128-bit integer string * - * The integer representation may be a real integer, a string integer, or - * an integer representation supported by a configured number converter. + * @param string $integer String representation of 128-bit integer * - * @param mixed $integer The integer to use when creating a `Uuid` from an - * integer; may be of any type understood by the configured number converter - * @return UuidInterface - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidUuidStringException + * @return UuidInterface A UuidInterface instance created from the string + * representation of a 128-bit integer + * + * @psalm-pure */ - public function fromInteger($integer); + public function fromInteger(string $integer): UuidInterface; + + /** + * Creates a UUID from a DateTimeInterface instance + * + * @param DateTimeInterface $dateTime The date and time + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return UuidInterface A UuidInterface instance that represents a + * version 1 UUID created from a DateTimeInterface instance + */ + public function fromDateTime( + DateTimeInterface $dateTime, + ?Hexadecimal $node = null, + ?int $clockSeq = null + ): UuidInterface; } diff --git a/vendor/ramsey/uuid/src/UuidInterface.php b/vendor/ramsey/uuid/src/UuidInterface.php index 42a3ad7ff..f22eb0f99 100644 --- a/vendor/ramsey/uuid/src/UuidInterface.php +++ b/vendor/ramsey/uuid/src/UuidInterface.php @@ -1,4 +1,5 @@ <?php + /** * This file is part of the ramsey/uuid library * @@ -7,28 +8,32 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT - * @link https://benramsey.com/projects/ramsey-uuid/ Documentation - * @link https://packagist.org/packages/ramsey/uuid Packagist - * @link https://github.com/ramsey/uuid GitHub */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use DateTime; use JsonSerializable; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; +use Ramsey\Uuid\Fields\FieldsInterface; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; use Serializable; /** - * UuidInterface defines common functionality for all universally unique - * identifiers (UUIDs) + * A UUID is a universally unique identifier adhering to an agreed-upon + * representation format and standard for generation + * + * @psalm-immutable */ -interface UuidInterface extends JsonSerializable, Serializable +interface UuidInterface extends + DeprecatedUuidInterface, + JsonSerializable, + Serializable { /** - * Compares this UUID to the specified UUID. + * Returns -1, 0, or 1 if the UUID is less than, equal to, or greater than + * the other UUID * * The first of two UUIDs is greater than the second if the most * significant field in which the UUIDs differ is greater for the first @@ -37,238 +42,58 @@ interface UuidInterface extends JsonSerializable, Serializable * * Q. What's the value of being able to sort UUIDs? * * A. Use them as keys in a B-Tree or similar mapping. * - * @param UuidInterface $other UUID to which this UUID is compared - * @return int -1, 0 or 1 as this UUID is less than, equal to, or greater than `$uuid` + * @param UuidInterface $other The UUID to compare + * + * @return int -1, 0, or 1 if the UUID is less than, equal to, or greater than $other */ - public function compareTo(UuidInterface $other); + public function compareTo(UuidInterface $other): int; /** - * Compares this object to the specified object. + * Returns true if the UUID is equal to the provided object * * The result is true if and only if the argument is not null, is a UUID * object, has the same variant, and contains the same value, bit for bit, - * as this UUID. + * as the UUID. * - * @param object $other - * @return bool True if `$other` is equal to this UUID + * @param object|null $other An object to test for equality with this UUID + * + * @return bool True if the other object is equal to this UUID */ - public function equals($other); + public function equals(?object $other): bool; /** - * Returns the UUID as a 16-byte string (containing the six integer fields - * in big-endian byte order). + * Returns the binary string representation of the UUID * - * @return string + * @psalm-return non-empty-string */ - public function getBytes(); + public function getBytes(): string; /** - * Returns the number converter to use for converting hex values to/from integers. - * - * @return NumberConverterInterface + * Returns the fields that comprise this UUID */ - public function getNumberConverter(); + public function getFields(): FieldsInterface; /** - * Returns the hexadecimal value of the UUID. - * - * @return string + * Returns the hexadecimal representation of the UUID */ - public function getHex(); + public function getHex(): Hexadecimal; /** - * Returns an array of the fields of this UUID, with keys named according - * to the RFC 4122 names for the fields. - * - * * **time_low**: The low field of the timestamp, an unsigned 32-bit integer - * * **time_mid**: The middle field of the timestamp, an unsigned 16-bit integer - * * **time_hi_and_version**: The high field of the timestamp multiplexed with - * the version number, an unsigned 16-bit integer - * * **clock_seq_hi_and_reserved**: The high field of the clock sequence - * multiplexed with the variant, an unsigned 8-bit integer - * * **clock_seq_low**: The low field of the clock sequence, an unsigned - * 8-bit integer - * * **node**: The spatially unique node identifier, an unsigned 48-bit - * integer - * - * @return array The UUID fields represented as hexadecimal values + * Returns the integer representation of the UUID */ - public function getFieldsHex(); + public function getInteger(): IntegerObject; /** - * Returns the high field of the clock sequence multiplexed with the variant - * (bits 65-72 of the UUID). + * Returns the string standard representation of the UUID * - * @return string Hexadecimal value of clock_seq_hi_and_reserved + * @psalm-return non-empty-string */ - public function getClockSeqHiAndReservedHex(); + public function toString(): string; /** - * Returns the low field of the clock sequence (bits 73-80 of the UUID). + * Casts the UUID to the string standard representation * - * @return string Hexadecimal value of clock_seq_low + * @psalm-return non-empty-string */ - public function getClockSeqLowHex(); - - /** - * Returns the clock sequence value associated with this UUID. - * - * @return string Hexadecimal value of clock sequence - */ - public function getClockSequenceHex(); - - /** - * Returns a PHP `DateTime` object representing the timestamp associated - * with this UUID. - * - * The timestamp value is only meaningful in a time-based UUID, which - * has version type 1. If this UUID is not a time-based UUID then - * this method throws `UnsupportedOperationException`. - * - * @return DateTime A PHP DateTime representation of the date - * @throws UnsupportedOperationException If this UUID is not a version 1 UUID - * @throws UnsatisfiedDependencyException if called in a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - */ - public function getDateTime(); - - /** - * Returns the integer value of the UUID, converted to an appropriate number - * representation. - * - * @return mixed Converted representation of the unsigned 128-bit integer value - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - */ - public function getInteger(); - - /** - * Returns the least significant 64 bits of this UUID's 128 bit value. - * - * @return string Hexadecimal value of least significant bits - */ - public function getLeastSignificantBitsHex(); - - /** - * Returns the most significant 64 bits of this UUID's 128 bit value. - * - * @return string Hexadecimal value of most significant bits - */ - public function getMostSignificantBitsHex(); - - /** - * Returns the node value associated with this UUID - * - * For UUID version 1, the node field consists of an IEEE 802 MAC - * address, usually the host address. For systems with multiple IEEE - * 802 addresses, any available one can be used. The lowest addressed - * octet (octet number 10) contains the global/local bit and the - * unicast/multicast bit, and is the first octet of the address - * transmitted on an 802.3 LAN. - * - * For systems with no IEEE address, a randomly or pseudo-randomly - * generated value may be used; see RFC 4122, Section 4.5. The - * multicast bit must be set in such addresses, in order that they - * will never conflict with addresses obtained from network cards. - * - * For UUID version 3 or 5, the node field is a 48-bit value constructed - * from a name as described in RFC 4122, Section 4.3. - * - * For UUID version 4, the node field is a randomly or pseudo-randomly - * generated 48-bit value as described in RFC 4122, Section 4.4. - * - * @return string Hexadecimal value of node - * @link http://tools.ietf.org/html/rfc4122#section-4.1.6 - */ - public function getNodeHex(); - - /** - * Returns the high field of the timestamp multiplexed with the version - * number (bits 49-64 of the UUID). - * - * @return string Hexadecimal value of time_hi_and_version - */ - public function getTimeHiAndVersionHex(); - - /** - * Returns the low field of the timestamp (the first 32 bits of the UUID). - * - * @return string Hexadecimal value of time_low - */ - public function getTimeLowHex(); - - /** - * Returns the middle field of the timestamp (bits 33-48 of the UUID). - * - * @return string Hexadecimal value of time_mid - */ - public function getTimeMidHex(); - - /** - * Returns the timestamp value associated with this UUID. - * - * The 60 bit timestamp value is constructed from the time_low, - * time_mid, and time_hi fields of this UUID. The resulting - * timestamp is measured in 100-nanosecond units since midnight, - * October 15, 1582 UTC. - * - * The timestamp value is only meaningful in a time-based UUID, which - * has version type 1. If this UUID is not a time-based UUID then - * this method throws UnsupportedOperationException. - * - * @return string Hexadecimal value of the timestamp - * @throws UnsupportedOperationException If this UUID is not a version 1 UUID - * @link http://tools.ietf.org/html/rfc4122#section-4.1.4 - */ - public function getTimestampHex(); - - /** - * Returns the string representation of the UUID as a URN. - * - * @return string - * @link http://en.wikipedia.org/wiki/Uniform_Resource_Name - */ - public function getUrn(); - - /** - * Returns the variant number associated with this UUID. - * - * The variant number describes the layout of the UUID. The variant - * number has the following meaning: - * - * * 0 - Reserved for NCS backward compatibility - * * 2 - The RFC 4122 variant (used by this class) - * * 6 - Reserved, Microsoft Corporation backward compatibility - * * 7 - Reserved for future definition - * - * @return int - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 - */ - public function getVariant(); - - /** - * Returns the version number associated with this UUID. - * - * The version number describes how this UUID was generated and has the - * following meaning: - * - * * 1 - Time-based UUID - * * 2 - DCE security UUID - * * 3 - Name-based UUID hashed with MD5 - * * 4 - Randomly generated UUID - * * 5 - Name-based UUID hashed with SHA-1 - * - * Returns null if this UUID is not an RFC 4122 variant, since version - * is only meaningful for this variant. - * - * @return int|null - * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 - */ - public function getVersion(); - - /** - * Converts this UUID into a string representation. - * - * @return string - */ - public function toString(); + public function __toString(): string; } diff --git a/vendor/ramsey/uuid/src/Validator/GenericValidator.php b/vendor/ramsey/uuid/src/Validator/GenericValidator.php new file mode 100644 index 000000000..fd6095511 --- /dev/null +++ b/vendor/ramsey/uuid/src/Validator/GenericValidator.php @@ -0,0 +1,50 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Validator; + +use Ramsey\Uuid\Uuid; + +use function preg_match; +use function str_replace; + +/** + * GenericValidator validates strings as UUIDs of any variant + * + * @psalm-immutable + */ +final class GenericValidator implements ValidatorInterface +{ + /** + * Regular expression pattern for matching a UUID of any variant. + */ + private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\z'; + + /** + * @psalm-return non-empty-string + * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty + * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + */ + public function getPattern(): string + { + return self::VALID_PATTERN; + } + + public function validate(string $uuid): bool + { + $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); + + return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); + } +} diff --git a/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php b/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php new file mode 100644 index 000000000..3d4bd6f28 --- /dev/null +++ b/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php @@ -0,0 +1,41 @@ +<?php + +/** + * This file is part of the ramsey/uuid library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> + * @license http://opensource.org/licenses/MIT MIT + */ + +declare(strict_types=1); + +namespace Ramsey\Uuid\Validator; + +/** + * A validator validates a string as a proper UUID + * + * @psalm-immutable + */ +interface ValidatorInterface +{ + /** + * Returns the regular expression pattern used by this validator + * + * @return string The regular expression pattern this validator uses + * + * @psalm-return non-empty-string + */ + public function getPattern(): string; + + /** + * Returns true if the provided string represents a UUID + * + * @param string $uuid The string to validate as a UUID + * + * @return bool True if the string is a valid UUID, false otherwise + */ + public function validate(string $uuid): bool; +} diff --git a/vendor/ramsey/uuid/src/functions.php b/vendor/ramsey/uuid/src/functions.php index b5db34183..f5df1488d 100644 --- a/vendor/ramsey/uuid/src/functions.php +++ b/vendor/ramsey/uuid/src/functions.php @@ -8,71 +8,116 @@ * * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com> * @license http://opensource.org/licenses/MIT MIT + * phpcs:disable Squiz.Functions.GlobalFunction */ +declare(strict_types=1); + namespace Ramsey\Uuid; -use Exception; -use InvalidArgumentException; -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use Ramsey\Uuid\Type\Hexadecimal; +use Ramsey\Uuid\Type\Integer as IntegerObject; /** - * Generate a version 1 UUID from a host ID, sequence number, and the current time. + * Returns a version 1 (time-based) UUID from a host ID, sequence number, + * and the current time * - * @param int|string|null $node A 48-bit number representing the hardware address - * This number may be represented as an integer or a hexadecimal string. - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that + * @param Hexadecimal|int|string|null $node A 48-bit number representing the + * hardware address; this number may be represented as an integer or a + * hexadecimal string + * @param int $clockSeq A 14-bit number used to help avoid duplicates that * could arise when the clock is set backwards in time or if the node ID - * changes. - * @return string - * @throws UnsatisfiedDependencyException if called on a 32-bit system and - * `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception if it was not possible to gather sufficient entropy + * changes + * + * @return non-empty-string Version 1 UUID as a string */ -function v1($node = null, $clockSeq = null) +function v1($node = null, ?int $clockSeq = null): string { return Uuid::uuid1($node, $clockSeq)->toString(); } /** - * Generate a version 3 UUID based on the MD5 hash of a namespace identifier - * (which is a UUID) and a name (which is a string). + * Returns a version 2 (DCE Security) UUID from a local domain, local + * identifier, host ID, clock sequence, and the current time * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return string - * @throws InvalidUuidStringException + * @param int $localDomain The local domain to use when generating bytes, + * according to DCE Security + * @param IntegerObject|null $localIdentifier The local identifier for the + * given domain; this may be a UID or GID on POSIX systems, if the local + * domain is person or group, or it may be a site-defined identifier + * if the local domain is org + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int|null $clockSeq A 14-bit number used to help avoid duplicates + * that could arise when the clock is set backwards in time or if the + * node ID changes + * + * @return non-empty-string Version 2 UUID as a string */ -function v3($ns, $name) +function v2( + int $localDomain, + ?IntegerObject $localIdentifier = null, + ?Hexadecimal $node = null, + ?int $clockSeq = null +): string { + return Uuid::uuid2($localDomain, $localIdentifier, $node, $clockSeq)->toString(); +} + +/** + * Returns a version 3 (name-based) UUID based on the MD5 hash of a + * namespace ID and a name + * + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * + * @return non-empty-string Version 3 UUID as a string + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners + */ +function v3($ns, string $name): string { return Uuid::uuid3($ns, $name)->toString(); } /** - * Generate a version 4 (random) UUID. + * Returns a version 4 (random) UUID * - * @return string - * @throws UnsatisfiedDependencyException if `Moontoast\Math\BigNumber` is not present - * @throws InvalidArgumentException - * @throws Exception + * @return non-empty-string Version 4 UUID as a string */ -function v4() +function v4(): string { return Uuid::uuid4()->toString(); } /** - * Generate a version 5 UUID based on the SHA-1 hash of a namespace - * identifier (which is a UUID) and a name (which is a string). + * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a + * namespace ID and a name * - * @param string|UuidInterface $ns The UUID namespace in which to create the named UUID - * @param string $name The name to create a UUID for - * @return string - * @throws InvalidUuidStringException + * @param string|UuidInterface $ns The namespace (must be a valid UUID) + * + * @return non-empty-string Version 5 UUID as a string + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners */ -function v5($ns, $name) +function v5($ns, string $name): string { return Uuid::uuid5($ns, $name)->toString(); } + +/** + * Returns a version 6 (ordered-time) UUID from a host ID, sequence number, + * and the current time + * + * @param Hexadecimal|null $node A 48-bit number representing the hardware + * address + * @param int $clockSeq A 14-bit number used to help avoid duplicates that + * could arise when the clock is set backwards in time or if the node ID + * changes + * + * @return non-empty-string Version 6 UUID as a string + */ +function v6(?Hexadecimal $node = null, ?int $clockSeq = null): string +{ + return Uuid::uuid6($node, $clockSeq)->toString(); +} diff --git a/vendor/scrivo/highlight.php/.php-cs-fixer.dist.php b/vendor/scrivo/highlight.php/.php-cs-fixer.dist.php deleted file mode 100644 index 1598684ce..000000000 --- a/vendor/scrivo/highlight.php/.php-cs-fixer.dist.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -$finder = PhpCsFixer\Finder::create() - ->in('demo') - ->in('Highlight') - ->in('HighlightUtilities') - ->in('test') - ->in('tools') - ->exclude('lib_dojo') - ->exclude('lib_highlight') -; - -$config = new PhpCsFixer\Config(); -return $config - ->setRules([ - '@PSR1' => true, - '@PSR2' => true, - '@Symfony' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'long'], - 'concat_space' => ['spacing' => 'one'], - 'echo_tag_syntax' => ['format' => 'short'], - 'no_alias_language_construct_call' => false, - 'no_alternative_syntax' => false, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'phpdoc_align' => true, - 'phpdoc_order' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'single_quote' => false, - 'ternary_to_null_coalescing' => false, - 'trailing_comma_in_multiline' => true, - 'visibility_required' => false, - 'yoda_style' => [ - 'equal' => false, - 'identical' => false, - ], - ]) - ->setFinder($finder) -; diff --git a/vendor/scrivo/highlight.php/AUTHORS.txt b/vendor/scrivo/highlight.php/AUTHORS.txt deleted file mode 100644 index 8b91136ba..000000000 --- a/vendor/scrivo/highlight.php/AUTHORS.txt +++ /dev/null @@ -1,306 +0,0 @@ -Syntax highlighting with language autodetection in PHP. - -------------------------------------------------------------------------------- - -Current maintainer(s): - - Vladimir Jimenez <me@allejo.io> - -Former maintainers: - - Geert Bergman (original author) <geert@scrivo.nl> - -Contributor(s): - - Carsten Brandt <mail@cebe.cc> - Daniel Lynge - Daniel Gómez Pan <pana_1990@hotmail.com> - Martin Folkers <hello@twobrain.io> - -------------------------------------------------------------------------------- - -highlight.js (the reference project) - -Current core developers (alphabetical): - - Gidi Meir Morris <gidi@gidi.io> - Jan T. Sott <git@idleberg.com> - Josh Goebel <hello@joshgoebel.com> - Li Xuanji <xuanji@gmail.com> - Marcos Cáceres <marcos@marcosc.com> - Sang Dang <sang.dang@polku.io> - -Former maintainers: - - Ivan Sagalaev (original author) <maniac@softwaremaniacs.org> - Jeremy Hull <sourdrums@gmail.com> - Oleg Efimov <efimovov@gmail.com> - -------------------------------------------------------------------------------- - -Language and style definitions (copied from the highlight.js project) - - Aahan Krish <geekpanth3r@gmail.com> - Adam Joseph Cook <adam.joseph.cook@gmail.com> - Ahmad Awais <me@AhmadAwais.com> - Alberto Gimeno <gimenete@gmail.com> - Alejandro Isaza <al@isaza.ca> - Aleksandar Ruzicic <aleksandar@ruzicic.info> - Alex Arslan <ararslan@comcast.net> - Alex McKibben <alex@nullscope.net> - Alexander Lichter <manniL@gmx.net> - Alexander Makarov <sam@rmcreative.ru> - Alexander Marenin <great_muchacho@mail.ru> - Alexander Myadzel <myadzel@gmail.com> - Alexis Hénaut <alexis@henaut.net> - Andres Täht <andres.taht@gmail.com> - Andrew Farmer <ahfarmer@gmail.com> - Andrew Fedorov <dmmdrs@mail.ru> - Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com> - Angel G. Olloqui <angelgarcia.mail@gmail.com> - Anthony Dugois <dev.anthonydugois@gmail.com> - Anthony Scemama <scemama@irsamc.ups-tlse.fr> - Antoine Boisier-Michaud <aboisiermichaud@gmail.com> - Anton Kochkov <anton.kochkov@gmail.com> - Anton Kovalyov <anton@kovalyov.net> - Antono Vasiljev <self@antono.info> - Arctic Ice Studio <development@arcticicestudio.com> - Arthur Bikmullin <devolonter@gmail.com> - Benjamin Auder <benjamin.auder@gmail.com> - Benjamin Pannell <contact@sierrasoftworks.com> - Billy Quith <chinbillybilbo@gmail.com> - Boone Severson <boone.severson@gmail.com> - Boris Cherny <boris@performancejs.com> - Bram de Haan <info@atelierbramdehaan.nl> - Brendan Rocks <rocks.brendan@gmail.com> - Brent Bradbury <brent@brentium.com> - Brian Beck <exogen@gmail.com> - Brian Quistorff <bquistorff@gmail.com> - Bruno Dias <bruno.r.dias@gmail.com> - Bryant Williams <b.n.williams@gmail.com> - Builder's Brewery <buildersbrewery@gmail.com> - Camil Staps <info@camilstaps.nl> - Carl Baxter <carl@cbax.tech> - Carlo Kok <ck@remobjects.com> - Casey Duncan <casey.duncan@gmail.com> - Cedric Sohrauer <sohrauer@googlemail.com> - Chris Eidhof <chris@eidhof.nl> - Chris Kiehl <audionautic@gmail.com> - Christophe de Dinechin <christophe@taodyne.com> - Christopher Kaster <ikasoki@gmail.com> - Cédric Néhémie <cedric.nehemie@gmail.com> - Damian Mee <mee.damian@gmail.com> - Damien White <damien.white@visoftinc.com> - Dan Allen <dan.j.allen@gmail.com> - Dan Panzarella <alsoelp@gmail.com> - Dan Tao <daniel.tao@gmail.com> - Daniel Gamage <hellodanielgamage@gmail.com> - Daniel Kvasnicka <dkvasnicka@vendavo.com> - Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com> - David Anson <david@dlaa.me> - David Mohundro <david@mohundro.com> - Denis Bardadym <bardadymchik@gmail.com> - Denis Ciccale <dciccale@gmail.com> - Dennis Titze <dennis.titze@gmail.com> - Dirk Kirsten <dk@basex.org> - Dmitri Roudakov <dmitri@roudakov.ru> - Dmitriy Tarasov <dimatar@gmail.com> - Dmitry Kovega <arhibot@gmail.com> - Dmitry Medvinsky <me@dmedvinsky.name> - Dmytrii Nagirniak <dnagir@gmail.com> - Domen Kožar <domen@dev.si> - Dotan Dimet <dotan@corky.net> - Dr. Drang <drdrang@gmail.com> - Duncan Paterson <duncan@exist-db.org> - Edwin Dalorzo <edwin@dalorzo.org> - Egor Rogov <e.rogov@postgrespro.ru> - Eric Bailey <eric.w.bailey@gmail.com> - Eric Knibbe <eric@lassosoft.com> - Erik Osheim <d_m@plastic-idolatry.com> - Erik Paluka <erik.paluka@gmail.com> - Eugene Nizhibitsky <nizhibitsky@gmail.com> - Evgeny Stepanischev <imbolk@gmail.com> - Flaviu Tamas <tamas.flaviu@gmail.com> - G8t Guy <g8tguy@g8tguy.com> - Gavin Siu <gavsiu@gmail.com> - Google Inc. (David Benjamin) <davidben@google.com> - Greg Cline <gregrcline@gmail.com> - Gu Yiling <justice360@gmail.com> - Guannan Wei <guannanwei@outlook.com> - Guillaume Gomez <guillaume1.gomez@gmail.com> - Guillaume Laforge <glaforge@gmail.com> - Gustavo Costa <gusbemacbe@gmail.com> - Hakan Özler <ozler.hakan@gmail.com> - Hale Chan <halechan@qq.com> - Harmon <Harmon.Public@gmail.com> - Heiko August <post@auge8472.de> - Henrik Feldt <henrik@haf.se> - Herbert Shin <initbar@protonmail.ch> - Igor Kalnitsky <igor@kalnitsky.org> - Ike Ku <dempfi@yahoo.com> - Ilya Baryshev <baryshev@gmail.com> - Ilya Vassilevsky <vassilevsky@gmail.com> - innocenat <innocenat@gmail.com> - Ivan Dementev <ivan_div@mail.ru> - Jacob Childress <jacobc@gmail.com> - Jan Berkel <jan.berkel@gmail.com> - Jan Kühle <jkuehle90@gmail.com> - Janis Voigtländer <janis.voigtlaender@gmail.com> - Jason Diamond <jason@diamond.name> - Jason Jacobson <jason.a.jacobson@gmail.com> - Jason Tate <adminz@web-cms-designs.com> - Jay Strybis <jay.strybis@gmail.com> - Jeff Escalante <hello@jenius.me> - Jeffrey Arnold <jeffrey.arnold@gmail.com> - Jen Evers-Corvina <jen@sevvie.net> - Joe Cheng <joe@rstudio.org> - Joe Eli McIlvain <joe.eli.mac@gmail.org> - John Crepezzi <john.crepezzi@gmail.com> - John Foster <jfoster@esri.com> - Jon Evans <jon@craftyjon.com> - Jonas Follesø <jonas@follesoe.no> - Jonathan Suever <suever@gmail.com> - Jordi Petit <jordi.petit@gmail.com> - Jose Molina Colmenero <gaudy41@gmail.com> - Josh Adams <josh@isotope11.com> - Joël Porquet <joel@porquet.org> - JP Verkamp <me@jverkamp.com> - Jun Yang <yangjvn@126.com> - Kasper Andersen <kma_untrusted@protonmail.com> - Kassio Borges <kassioborgesm@gmail.com> - Kelley van Evert <kelleyvanevert@gmail.com> - Kenneth Fuglsang <kfuglsang@gmail.com> - Kenta Sato <bicycle1885@gmail.com> - Kenton Hamaluik <kentonh@gmail.com> - Kirk Kimmel <kimmel.k.programmer@gmail.com> - Konstantin Evdokimenko <qewerty@gmail.com> - Kristoffer Gronlund <kgronlund@suse.com> - Kurt Emch <kurt@kurtemch.com> - Ladislav Prskavec <ladislav@prskavec.net> - Lars Schulna <kartoffelbrei.mit.muskatnuss@gmail.org> - Laurent Voullemier <laurent.voullemier@gmail.com> - Loren Segal <lsegal@soen.ca> - Louis Barranqueiro <louis.barranqueiro@gmail.com> - Lucas Mazza <lucastmazza@gmail.com> - Lucas Werkmeister <mail@lucaswerkmeister.de> - Luigi Maselli <grigio.org@gmail.com> - Luke Holder <lukemh@gmail.com> - Magnus Madsen <mmadsen@uwaterloo.ca> - MajestiC <majestic2k@gmail.com> - Manh Tuan <junookyo@gmail.com> - Marc Fornos <marc.fornos@gmail.com> - Martin Braun <martin.braun@ettus.com> - Martin Clausen <martin.clausene@gmail.com> - Martin Dilling-Hansen <martindlling@gmail.com> - Marvin Saignat <contact@zgmrvn.com> - Matt Diephouse <matt@diephouse.com> - Matt Evans <matt@aptech.com> - Matthew Daly <matthewbdaly@gmail.com> - Max Mikhailov <seven.phases.max@gmail.com> - Maxim Dikun <dikmax@gmail.com> - Mehdi Dogguy <mehdi@dogguy.org> - Melissa Geels <melissa@nimble.tools> - Meseta <meseta@gmail.com> - Michael Allen <Michael.Allen@benefitfocus.com> - Michael Johnston <lastobelus@gmail.com> - Michael Rodler <contact@f0rki.at> - Michal Gabrukiewicz <mgabru@gmail.com> - Mick MacCallum <micksmaccallum@gmail.com> - Mickaël Delahaye <mickael.delahaye@gmail.com> - Mikko Kouhia <mikko.kouhia@iki.fi> - Morten Piibeleht <morten.piibeleht@gmail.com> - mucaho <mkucko@gmail.com> - MY Sun <simonmysun@gmail.com> - Nate Cook <natecook@gmail.com> - Nathan Grigg <nathan@nathanamy.org> - Nebuleon Fumika <nebuleon.fumika@gmail.com> - Nic West <nic@letolab.com> - Nicholas Blumhardt <nblumhardt@nblumhardt.com> - Nicolas Braud-Santoni <nicolas.braud-santoni@ens-cachan.fr> - Nicolas Le Gall <contact@nlegall.fr> - Nicolas LLOBERA <nllobera@gmail.com> - Nikita Ledyaev <lenikita@yandex.ru> - Nikita Savchenko <zitros.lab@gmail.com> - Nikolay Lisienko <info@neor.ru> - Nikolay Zakharov <nikolay.desh@gmail.com> - noformnocontent <i@noformnocontent.com> - Oleg Volchkov <oleg@volchkov.net> - Panu Horsmalahti <panu.horsmalahti@iki.fi> - Pascal Hurni <phi@ruby-reactive.org> - Pedro Oliveira <kanytu@gmail.com> - Peter Leonov <gojpeg@gmail.com> - Peter Piwowarski <oldlaptop654@aol.com> - Philipp A. <flying-sheep@web.de> - Philipp Wolfer <ph.wolfer@gmail.com> - Philippe Charrière <ph.charriere@gmail.com> - Poren Chiang <ren.chiang@gmail.com> - prince <MC.prince.0203@gmail.com> - pumbur <pumbur@pumbur.net> - Qeole <qeole@outlook.com> - Radek Liska <radekliska@gmail.com> - Raivo Laanemets <raivo@infdot.com> - Ralf Bitter <rabit@revigniter.com> - Raphaël Assénat <raph@raphnet.net> - Raphaël Parrëe <rparree@edc4it.com> - Rene Saarsoo <nene@triin.net> - Robert Dodier <robert.dodier@gmail.com> - Robin Ward <robin.ward@gmail.com> - Roman Shmatov <romanshmatov@gmail.com> - Ruslan Keba <rukeba@gmail.com> - Sam Wu <samsam2310@gmail.com> - Samia Ali <samiaab1990@gmail.com> - Samuel Reed <sam@bitmex.com> - Sean T. Allen <sean@monkeysnatchbanana.com> - Sejin Jeon <jinaidy93@gmail.com> - Seongwon Lee <dlimpid@gmail.com> - Sergey Baranov <segyrn@yandex.ru> - Sergey Bronnikov <sergeyb@bronevichok.ru> - Sergey Ignatov <sergey@ignatov.spb.su> - Sergey Mashkov <cy6erGn0m@gmail.com> - Sergey Sobko <s.sobko@profitware.ru> - Sergey Tikhomirov <sergey@tikhomirov.io> - Sergey Vidyuk <svidyuk@gmail.com> - Shuen-Huei Guan <drake.guan@gmail.com> - Simon Madine <simon@angryrobotzombie.com> - Stanislav Belov <stbelov@gmail.com> - Stefan Bechert <stefan.bechert@gmx.net> - Stefan Wienert <stwienert@gmail.com> - Stefania Mellai <s.mellai@arduino.cc> - Stephan Boyer <stephan@stephanboyer.com> - Stephan Kountso <steplg@gmail.com> - Sylvestre Ledru <sylvestre.ledru@scilab-enterprises.com> - Søren Enevoldsen <senevoldsen90@gmail.com> - Taif Alimov <inzeppelin@gmail.com> - Taisuke Fujimoto <temp-impl@users.noreply.github.com> - Taneli Vatanen <taneli.vatanen@gmail.com> - Taras <oxdef@oxdef.info> - Taufik Nurrohman <latitudu.latitudu@gmail.com> - Thomas Applencourt <thomas.applencourt@irsamc.ups-tlse.fr> - Thomas Reichel <tom.p.reichel@gmail.com> - Tim Schumacher <tim@datenknoten.me> - Travis Odom <travis.a.odom@gmail.com> - Trey Shugart <treshugart@gmail.com> - Tristano Ajmone <tajmone@gmail.com> - Tristian Kelly <tristian.kelly560@gmail.com> - Troy Kershaw <hello@troykershaw.com> - Tsuyusato Kitsune <make.just.on@gmail.com> - Vadimtro <vadimtro@yahoo.com> - Vah <vahtenberg@gmail.com> - Valerii Hiora <valerii.hiora@gmail.com> - Vasily Mikhailitchenko <vaskas@programica.ru> - Vasily Polovnyov <vast@whiteants.net> - Victor Karamzin <Victor.Karamzin@enterra-inc.com> - Victor Zhou <OiCMudkips@users.noreply.github.com> - Vincent Zurczak <vzurczak@linagora.com> - Vladimir Epifanov <voldmar@voldmar.ru> - Vladimir Ermakov <vooon341@mail.ru> - Vladimir Gubarkov <xonixx@gmail.com> - Vladimir Moskva <vladmos@gmail.com> - Vsevolod Solovyov <vsevolod.solovyov@gmail.com> - Yoshihide Jimbo <yjimbo@gmail.com> - Yuri Ivanov <ivanov@supersoft.ru> - Yuri Mazursky <mail@colomolome.com> - Yury Selivanov <yselivanov@gmail.com> - Zaripov Yura <yur4ik7@ukr.net> - Zaven Muradyan <megalivoithos@gmail.com> - Zena Treep <zena.treep@gmail.com> diff --git a/vendor/scrivo/highlight.php/CONTRIBUTING.md b/vendor/scrivo/highlight.php/CONTRIBUTING.md deleted file mode 100644 index 4489b4266..000000000 --- a/vendor/scrivo/highlight.php/CONTRIBUTING.md +++ /dev/null @@ -1,112 +0,0 @@ -# Contributing - -Welcome to your server-side syntax highlighting solution! If you're interested in contributing to the project, here are a few things to keep in mind! - -## Language Definitions + Styles - -We do not accept PRs with new or updated language definitions or stylesheets. These should be contributed to the `highlight.js` project instead. The process of maintaining styles and transforming language definitions is completely automated and left up to project maintainers to run whenever a new version of `highlight.js` is released. - -## Updates from `highlight.js` - -If you'd like to make a PR containing behavior changes made in the `highlight.js` project, please make sure you link to the appropriate `highlight.js` commits and change logs. Because this project is a direct port, we need do our best to keep the behavior as identical as possible. - -PRs reflecting changes made in `highlight.js` should **only** be made after `highlight.js` has had a release tagged with those changes. This project will always push out updates _after_ `highlight.js` releases. - -We make no guarantees that the latest master `highlight.php` will be compatible with the latest master version of `highlight.js`. - -## Project structure - -The project contains the following folders: - -1. [Highlight](#highlight) -2. [styles](#styles) -3. [demo](#demo) -4. [test](#test) -5. [tools](#tools) - -## Highlight - -This folder contains the main source and the following files (classes): - -### Highlight.php (Highlight) - -This is the one that does the highlighting for you and the one you'll probably look for. - -### Language.php (Language) - -Auxiliary class used in the Highlight class. Instances of these classes represent the rather complex structures of regular expressions needed to scan through programming code in order to highlight them. - -You don't need this class. - -### JsonRef.php (JsonRef) - -Auxiliary class to decode JSON files containing path-based references. The language definition data from [highlight.js](http://www.highlightjs.org) is too complex to be described in ordinary JSON files. Therefore it was chosen to use [dojox.json.ref](https://dojotoolkit.org/reference-guide/1.9/dojox/json/ref.html) to export them. This class is able (to a very limited extend) to decode JSON data that was created with this [dojo](https://dojotoolkit.org) toolkit. - -This class has a very distinct purpose and might be useful in other projects as well (and might be a good starting point for a new project ;) ). - -### Autoloader.php (Autoloader) - -A simple autoloader class that you possible might want or more likely not want to use. It is used for the tools and tests. - -### the languages folder - -This folder contains all language definitions: one JSON file for each language. These files are not hand coded but extracted from the original [highlight.js](http://www.highlightjs.org) project. - -## Styles - -These are the the CSS files needed to actually color the code. Not much to say about: these are just copied from the [highlight.js](https://github.com/isagalaev/highlight.js/tree/master/src/styles) project. - -## Demo - -This folder contains two demo pages that can be accessed through your browser. - -### demo.php - -A test page showing all supported languages and styles. - -### compare.php - -Much like [demo.php](#demo-php) but this page focuses on the comparison between _highlight.php_ and _highlight.js_. Both should yield the same results. - -## Test - -This folder contains the unit test for _highlight.php_. To run them, run _phpunit_ from this directory: - -```bash -phpnunit . -``` - -Note that the following tests for _highlight.js_ were not rewritten for _highlight.php_: - -### special explicitLanguage - -Controlling language selection by setting an attribute to the containing `<div>` is irrelevant for _highlight.php_ - -### special customMarkup - -In _highlight.js_, code may contain additional HTML markup like in the following PHP fragment: `$sum = <b>$a</b> + $b;`. Currently this is not supported by _highlight.php_ which can only highlight (unescaped) code. Also highlighting `<br>` (HTML break element) is not supported. _highlight.php_ does however support tab replacement (which defaults to 4 spaces). - -### special noHighlight - -There is no need to turn off highlighting through a class name on the code container. - -### special buildClassName - -_highlight.php_ does not modify class names of code containers. - -## Tools - -A collection of scripts that are used to extract data from the original [highlight.js](http://www.highlightjs.org) project. - -The process of bringing in languages from highlight.js has been put into a single script. This script requires that you have cURL, PHP, and node.js installed on your machine. This is only necessary if you'd like to update languages or bring in new languages, it's **not** required for using this library in your application. - -```bash -cd tools -bash process.sh -``` - -## Why don't we generally use `mb_*` functions? - -PHP offers `mb_` prefixed string functions to support multi-byte strings, this means supporting unicode characters. However, the PREG functions in PHP calculate [string lengths and positions in _bytes_, and not character lengths](https://www.php.net/manual/en/function.preg-match.php#refsect1-function.preg-match-parameters). For that reason, we will generally **not** use the multi-byte variants of string functions; there are exceptions to this policy. - -An exception to this policy is the use of functions that aren't used for calculating string lengths or positions; e.g. `mb_strtolower`. diff --git a/vendor/scrivo/highlight.php/Highlight/Autoloader.php b/vendor/scrivo/highlight.php/Highlight/Autoloader.php deleted file mode 100644 index cfd88127c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/Autoloader.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/* Copyright (c) 2013-2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * The autoloader class for Highlight classes for projects without Composer or autoloaders. - * - * ```php - * <?php - * - * require_once("Highlight/Autoloader.php"); - * spl_autoload_register("\\Highlight\\Autoloader::load"); - * - * // Now use Highlight classes: - * $hl = new \Highlight\Highlighter(...); - * ``` - * - * @TODO In v10.x, mark this class final for real - * - * @api - * @final - * - * @since 7.5.0.0 - */ -class Autoloader -{ - /** - * The method to include the source file for a given class to use in - * the PHP spl_autoload_register function. - * - * @param string $class a name of a Scrivo class - * - * @return bool true if the source file was successfully included - */ - public static function load($class) - { - if (substr($class, 0, 10) !== "Highlight\\") { - return false; - } - - $c = str_replace("\\", "/", substr($class, 10)) . ".php"; - $res = include __DIR__ . "/$c"; - - return $res == 1 ? true : false; - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/HighlightResult.php b/vendor/scrivo/highlight.php/Highlight/HighlightResult.php deleted file mode 100644 index c704bdc6f..000000000 --- a/vendor/scrivo/highlight.php/Highlight/HighlightResult.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @api - * - * @since 9.17.1.0 - */ -abstract class HighlightResult -{ - /** @var int the relevance score */ - public $relevance; - - /** @var string the highlighted HTML code */ - public $value; - - /** @var string the language name */ - public $language; - - /** @var bool indicates whether any illegal matches were found */ - public $illegal; - - /** @var Mode|null top of the current mode stack */ - public $top; - - /** @var \Exception|null */ - public $errorRaised; - - // @TODO In v10.x, remove \stdClass from this type - /** @var \stdClass|HighlightResult|null */ - public $secondBest; -} diff --git a/vendor/scrivo/highlight.php/Highlight/Highlighter.php b/vendor/scrivo/highlight.php/Highlight/Highlighter.php deleted file mode 100644 index 7c200e07d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/Highlighter.php +++ /dev/null @@ -1,1031 +0,0 @@ -<?php - -/* Copyright (c) - * - 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js - * (original author) - * - 2013-2019, Geert Bergman (geert@scrivo.nl), highlight.php - * - 2014 Daniel Lynge, highlight.php (contributor) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @api - * - * @since 7.5.0.0 - */ -class Highlighter -{ - /** - * @since 9.12.0.4 - */ - const SPAN_END_TAG = "</span>"; - - /** @var bool Disable warnings thrown on PHP installations without multibyte functions available. */ - public static $DISABLE_MULTIBYTE_WARNING = false; - - /** @var bool */ - private $safeMode = true; - - // @TODO In v10.x, this value should be static to match highlight.js behavior - /** @var array<string, mixed> */ - private $options; - - /** @var string */ - private $modeBuffer = ""; - - /** @var string */ - private $result = ""; - - /** @var Mode|null */ - private $top = null; - - /** @var Language|null */ - private $language = null; - - /** @var int */ - private $relevance = 0; - - /** @var bool */ - private $ignoreIllegals = false; - - /** @var array<string, Mode> */ - private $continuations = array(); - - /** @var RegExMatch */ - private $lastMatch; - - /** @var string The current code we are highlighting */ - private $codeToHighlight; - - /** @var bool */ - private $needsMultibyteSupport = false; - - /** @var bool|null */ - private static $hasMultiByteSupport = null; - - /** @var bool */ - private static $hasThrownMultiByteWarning = false; - - /** @var string[] A list of all the bundled languages */ - private static $bundledLanguages = array(); - - /** @var array<string, Language> A mapping of a language ID to a Language definition */ - private static $classMap = array(); - - /** @var string[] A list of registered language IDs */ - private static $languages = array(); - - /** @var array<string, string> A mapping from alias (key) to main language ID (value) */ - private static $aliases = array(); - - /** - * @param bool $loadAllLanguages If true, will automatically register all languages distributed with this library. - * If false, user must explicitly register languages by calling `registerLanguage()`. - * - * @since 9.18.1.4 added `$loadAllLanguages` parameter - * @see Highlighter::registerLanguage() - */ - public function __construct($loadAllLanguages = true) - { - $this->lastMatch = new RegExMatch(array()); - $this->lastMatch->type = ""; - $this->lastMatch->rule = null; - - // @TODO In v10.x, remove the default value for the `languages` value to follow highlight.js behavior - $this->options = array( - 'classPrefix' => 'hljs-', - 'tabReplace' => null, - 'useBR' => false, - 'languages' => array( - "xml", "json", "javascript", "css", "php", "http", - ), - ); - - if ($loadAllLanguages) { - self::registerAllLanguages(); - } - } - - /** - * Return a list of all available languages bundled with this library. - * - * @since 9.18.1.4 - * - * @return string[] An array of language names - */ - public static function listBundledLanguages() - { - if (!empty(self::$bundledLanguages)) { - return self::$bundledLanguages; - } - - // Languages that take precedence in the classMap array. (I don't know why...) - $bundledLanguages = array( - "xml" => true, - "django" => true, - "javascript" => true, - "matlab" => true, - "cpp" => true, - ); - - $languagePath = __DIR__ . '/languages/'; - $d = @dir($languagePath); - - if (!$d) { - throw new \RuntimeException('Could not read bundled language definition directory.'); - } - - // @TODO In 10.x, rewrite this as a generator yielding results - while (($entry = $d->read()) !== false) { - if (substr($entry, -5) === ".json") { - $languageId = substr($entry, 0, -5); - $filePath = $languagePath . $entry; - - if (is_readable($filePath)) { - $bundledLanguages[$languageId] = true; - } - } - } - - $d->close(); - - return self::$bundledLanguages = array_keys($bundledLanguages); - } - - /** - * Return a list of all the registered languages. Using this list in - * setAutodetectLanguages will turn on auto-detection for all supported - * languages. - * - * @since 9.18.1.4 - * - * @param bool $includeAliases Specify whether language aliases should be - * included as well - * - * @return string[] An array of language names - */ - public static function listRegisteredLanguages($includeAliases = false) - { - if ($includeAliases === true) { - return array_merge(self::$languages, array_keys(self::$aliases)); - } - - return self::$languages; - } - - /** - * Register all 185+ languages that are bundled in this library. - * - * To register languages individually, use `registerLanguage`. - * - * @since 9.18.1.4 Method is now public - * @since 8.3.0.0 - * @see Highlighter::registerLanguage - * - * @return void - */ - public static function registerAllLanguages() - { - // Languages that take precedence in the classMap array. - $languagePath = __DIR__ . DIRECTORY_SEPARATOR . "languages" . DIRECTORY_SEPARATOR; - foreach (array("xml", "django", "javascript", "matlab", "cpp") as $languageId) { - $filePath = $languagePath . $languageId . ".json"; - if (is_readable($filePath)) { - self::registerLanguage($languageId, $filePath); - } - } - - // @TODO In 10.x, call `listBundledLanguages()` instead when it's a generator - $d = @dir($languagePath); - if ($d) { - while (($entry = $d->read()) !== false) { - if (substr($entry, -5) === ".json") { - $languageId = substr($entry, 0, -5); - $filePath = $languagePath . $entry; - if (is_readable($filePath)) { - self::registerLanguage($languageId, $filePath); - } - } - } - $d->close(); - } - } - - /** - * Register a language definition with the Highlighter's internal language - * storage. Languages are stored in a static variable, so they'll be available - * across all instances. You only need to register a language once. - * - * @param string $languageId The unique name of a language - * @param string $filePath The file path to the language definition - * @param bool $overwrite Overwrite language if it already exists - * - * @return Language The object containing the definition for a language's markup - */ - public static function registerLanguage($languageId, $filePath, $overwrite = false) - { - if (!isset(self::$classMap[$languageId]) || $overwrite) { - $lang = new Language($languageId, $filePath); - self::$classMap[$languageId] = $lang; - - self::$languages[] = $languageId; - self::$languages = array_unique(self::$languages); - - if ($lang->aliases) { - foreach ($lang->aliases as $alias) { - self::$aliases[$alias] = $languageId; - } - } - } - - return self::$classMap[$languageId]; - } - - /** - * Clear all registered languages. - * - * @since 9.18.1.4 - * - * @return void - */ - public static function clearAllLanguages() - { - self::$classMap = array(); - self::$languages = array(); - self::$aliases = array(); - } - - /** - * @param RegEx|null $re - * @param string $lexeme - * - * @return bool - */ - private function testRe($re, $lexeme) - { - if (!$re) { - return false; - } - - $lastIndex = $re->lastIndex; - $result = $re->exec($lexeme); - $re->lastIndex = $lastIndex; - - return $result && $result->index === 0; - } - - /** - * @param string $value - * - * @return RegEx - */ - private function escapeRe($value) - { - return new RegEx(sprintf('/%s/um', preg_quote($value))); - } - - /** - * @param Mode $mode - * @param string $lexeme - * - * @return Mode|null - */ - private function endOfMode($mode, $lexeme) - { - if ($this->testRe($mode->endRe, $lexeme)) { - while ($mode->endsParent && $mode->parent) { - $mode = $mode->parent; - } - - return $mode; - } - - if ($mode->endsWithParent) { - return $this->endOfMode($mode->parent, $lexeme); - } - - return null; - } - - /** - * @param Mode $mode - * @param RegExMatch $match - * - * @return mixed|null - */ - private function keywordMatch($mode, $match) - { - $kwd = $this->language->case_insensitive ? $this->strToLower($match[0]) : $match[0]; - - return isset($mode->keywords[$kwd]) ? $mode->keywords[$kwd] : null; - } - - /** - * @param string $className - * @param string $insideSpan - * @param bool $leaveOpen - * @param bool $noPrefix - * - * @return string - */ - private function buildSpan($className, $insideSpan, $leaveOpen = false, $noPrefix = false) - { - if (!$leaveOpen && $insideSpan === '') { - return ''; - } - - if (!$className) { - return $insideSpan; - } - - $classPrefix = $noPrefix ? "" : $this->options['classPrefix']; - $openSpan = "<span class=\"" . $classPrefix; - $closeSpan = $leaveOpen ? "" : self::SPAN_END_TAG; - - $openSpan .= $className . "\">"; - - return $openSpan . $insideSpan . $closeSpan; - } - - /** - * @param string $value - * - * @return string - */ - private function escape($value) - { - return htmlspecialchars($value, ENT_NOQUOTES); - } - - /** - * @return string - */ - private function processKeywords() - { - if (!$this->top->keywords) { - return $this->escape($this->modeBuffer); - } - - $result = ""; - $lastIndex = 0; - $this->top->lexemesRe->lastIndex = 0; - $match = $this->top->lexemesRe->exec($this->modeBuffer); - - while ($match) { - $result .= $this->escape(substr($this->modeBuffer, $lastIndex, $match->index - $lastIndex)); - $keyword_match = $this->keywordMatch($this->top, $match); - - if ($keyword_match) { - $this->relevance += $keyword_match[1]; - $result .= $this->buildSpan($keyword_match[0], $this->escape($match[0])); - } else { - $result .= $this->escape($match[0]); - } - - $lastIndex = $this->top->lexemesRe->lastIndex; - $match = $this->top->lexemesRe->exec($this->modeBuffer); - } - - return $result . $this->escape(substr($this->modeBuffer, $lastIndex)); - } - - /** - * @return string - */ - private function processSubLanguage() - { - try { - $hl = new Highlighter(); - - // @TODO in v10.x, this should no longer be necessary once `$options` is made static - $hl->setAutodetectLanguages($this->options['languages']); - $hl->setClassPrefix($this->options['classPrefix']); - $hl->setTabReplace($this->options['tabReplace']); - - if (!$this->safeMode) { - $hl->disableSafeMode(); - } - - $explicit = is_string($this->top->subLanguage); - if ($explicit && !in_array($this->top->subLanguage, self::$languages)) { - return $this->escape($this->modeBuffer); - } - - if ($explicit) { - $res = $hl->highlight( - $this->top->subLanguage, - $this->modeBuffer, - true, - isset($this->continuations[$this->top->subLanguage]) ? $this->continuations[$this->top->subLanguage] : null - ); - } else { - $res = $hl->highlightAuto( - $this->modeBuffer, - count($this->top->subLanguage) ? $this->top->subLanguage : null - ); - } - - // Counting embedded language score towards the host language may be disabled - // with zeroing the containing mode relevance. Use case in point is Markdown that - // allows XML everywhere and makes every XML snippet to have a much larger Markdown - // score. - if ($this->top->relevance > 0) { - $this->relevance += $res->relevance; - } - if ($explicit) { - $this->continuations[$this->top->subLanguage] = $res->top; - } - - return $this->buildSpan($res->language, $res->value, false, true); - } catch (\Exception $e) { - return $this->escape($this->modeBuffer); - } - } - - /** - * @return void - */ - private function processBuffer() - { - if (is_object($this->top) && $this->top->subLanguage) { - $this->result .= $this->processSubLanguage(); - } else { - $this->result .= $this->processKeywords(); - } - - $this->modeBuffer = ''; - } - - /** - * @param Mode $mode - * - * @return void - */ - private function startNewMode($mode) - { - $this->result .= $mode->className ? $this->buildSpan($mode->className, "", true) : ""; - - $t = clone $mode; - $t->parent = $this->top; - $this->top = $t; - } - - /** - * @param RegExMatch $match - * - * @return int - */ - private function doBeginMatch($match) - { - $lexeme = $match[0]; - $newMode = $match->rule; - - if ($newMode && $newMode->endSameAsBegin) { - $newMode->endRe = $this->escapeRe($lexeme); - } - - if ($newMode->skip) { - $this->modeBuffer .= $lexeme; - } else { - if ($newMode->excludeBegin) { - $this->modeBuffer .= $lexeme; - } - $this->processBuffer(); - if (!$newMode->returnBegin && !$newMode->excludeBegin) { - $this->modeBuffer = $lexeme; - } - } - $this->startNewMode($newMode); - - return $newMode->returnBegin ? 0 : strlen($lexeme); - } - - /** - * @param RegExMatch $match - * - * @return int|null - */ - private function doEndMatch($match) - { - $lexeme = $match[0]; - $matchPlusRemainder = substr($this->codeToHighlight, $match->index); - $endMode = $this->endOfMode($this->top, $matchPlusRemainder); - - if (!$endMode) { - return null; - } - - $origin = $this->top; - if ($origin->skip) { - $this->modeBuffer .= $lexeme; - } else { - if (!($origin->returnEnd || $origin->excludeEnd)) { - $this->modeBuffer .= $lexeme; - } - $this->processBuffer(); - if ($origin->excludeEnd) { - $this->modeBuffer = $lexeme; - } - } - - do { - if ($this->top->className) { - $this->result .= self::SPAN_END_TAG; - } - if (!$this->top->skip && !$this->top->subLanguage) { - $this->relevance += $this->top->relevance; - } - $this->top = $this->top->parent; - } while ($this->top !== $endMode->parent); - - if ($endMode->starts) { - if ($endMode->endSameAsBegin) { - $endMode->starts->endRe = $endMode->endRe; - } - - $this->startNewMode($endMode->starts); - } - - return $origin->returnEnd ? 0 : strlen($lexeme); - } - - /** - * @param string $textBeforeMatch - * @param RegExMatch|null $match - * - * @return int - */ - private function processLexeme($textBeforeMatch, $match = null) - { - $lexeme = $match ? $match[0] : null; - - // add non-matched text to the current mode buffer - $this->modeBuffer .= $textBeforeMatch; - - if ($lexeme === null) { - $this->processBuffer(); - - return 0; - } - - // we've found a 0 width match and we're stuck, so we need to advance - // this happens when we have badly behaved rules that have optional matchers to the degree that - // sometimes they can end up matching nothing at all - // Ref: https://github.com/highlightjs/highlight.js/issues/2140 - if ($this->lastMatch->type === "begin" && $match->type === "end" && $this->lastMatch->index === $match->index && $lexeme === "") { - // spit the "skipped" character that our regex choked on back into the output sequence - $this->modeBuffer .= substr($this->codeToHighlight, $match->index, 1); - - return 1; - } - $this->lastMatch = $match; - - if ($match->type === "begin") { - return $this->doBeginMatch($match); - } elseif ($match->type === "illegal" && !$this->ignoreIllegals) { - // illegal match, we do not continue processing - $_modeRaw = isset($this->top->className) ? $this->top->className : "<unnamed>"; - - throw new \UnexpectedValueException("Illegal lexeme \"$lexeme\" for mode \"$_modeRaw\""); - } elseif ($match->type === "end") { - $processed = $this->doEndMatch($match); - - if ($processed !== null) { - return $processed; - } - } - - // Why might be find ourselves here? Only one occasion now. An end match that was - // triggered but could not be completed. When might this happen? When an `endSameasBegin` - // rule sets the end rule to a specific match. Since the overall mode termination rule that's - // being used to scan the text isn't recompiled that means that any match that LOOKS like - // the end (but is not, because it is not an exact match to the beginning) will - // end up here. A definite end match, but when `doEndMatch` tries to "reapply" - // the end rule and fails to match, we wind up here, and just silently ignore the end. - // - // This causes no real harm other than stopping a few times too many. - - $this->modeBuffer .= $lexeme; - - return strlen($lexeme); - } - - /** - * Replace tabs for something more usable. - * - * @param string $code - * - * @return string - */ - private function replaceTabs($code) - { - if ($this->options['tabReplace'] !== null) { - return str_replace("\t", $this->options['tabReplace'], $code); - } - - return $code; - } - - private function checkMultibyteNecessity() - { - $this->needsMultibyteSupport = preg_match('/[^\x00-\x7F]/', $this->codeToHighlight) === 1; - - // If we aren't working with Unicode strings, then we default to `strtolower` since it's significantly faster - // https://github.com/scrivo/highlight.php/pull/92#pullrequestreview-782213861 - if (!$this->needsMultibyteSupport) { - return; - } - - if (self::$hasMultiByteSupport === null) { - self::$hasMultiByteSupport = function_exists('mb_strtolower'); - } - - if (!self::$hasMultiByteSupport && !self::$hasThrownMultiByteWarning) { - if (!self::$DISABLE_MULTIBYTE_WARNING) { - trigger_error('Your code snippet has unicode characters but your PHP version does not have multibyte string support. You should install the `mbstring` PHP package or `symfony/polyfill-mbstring` composer package if you use unicode characters.', E_USER_WARNING); - } - - self::$hasThrownMultiByteWarning = true; - } - } - - /** - * Allow for graceful failure if the mb_strtolower function doesn't exist. - * - * @param string $str - * - * @return string - */ - private function strToLower($str) - { - if ($this->needsMultibyteSupport && self::$hasMultiByteSupport) { - return mb_strtolower($str); - } - - return strtolower($str); - } - - /** - * Set the languages that will used for auto-detection. When using auto- - * detection the code to highlight will be probed for every language in this - * set. Limiting this set to only the languages you want to use will greatly - * improve highlighting speed. - * - * @param string[] $set An array of language games to use for autodetection. - * This defaults to a typical set Web development - * languages. - * - * @return void - */ - public function setAutodetectLanguages(array $set) - { - $this->options['languages'] = array_unique($set); - } - - /** - * Get the tab replacement string. - * - * @return string The tab replacement string - */ - public function getTabReplace() - { - return $this->options['tabReplace']; - } - - /** - * Set the tab replacement string. This defaults to NULL: no tabs - * will be replaced. - * - * @param string $tabReplace The tab replacement string - * - * @return void - */ - public function setTabReplace($tabReplace) - { - $this->options['tabReplace'] = $tabReplace; - } - - /** - * Get the class prefix string. - * - * @return string The class prefix string - */ - public function getClassPrefix() - { - return $this->options['classPrefix']; - } - - /** - * Set the class prefix string. - * - * @param string $classPrefix The class prefix string - * - * @return void - */ - public function setClassPrefix($classPrefix) - { - $this->options['classPrefix'] = $classPrefix; - } - - /** - * @since 9.17.1.0 - * - * @return void - */ - public function enableSafeMode() - { - $this->safeMode = true; - } - - /** - * @since 9.17.1.0 - * - * @return void - */ - public function disableSafeMode() - { - $this->safeMode = false; - } - - /** - * @param string $name - * - * @return Language|null - */ - private function getLanguage($name) - { - if (isset(self::$classMap[$name])) { - return self::$classMap[$name]; - } elseif (isset(self::$aliases[$name]) && isset(self::$classMap[self::$aliases[$name]])) { - return self::$classMap[self::$aliases[$name]]; - } - - return null; - } - - /** - * Determine whether or not a language definition supports auto detection. - * - * @param string $name Language name - * - * @return bool - */ - private function autoDetection($name) - { - $lang = $this->getLanguage($name); - - return $lang && !$lang->disableAutodetect; - } - - /** - * Core highlighting function. Accepts a language name, or an alias, and a - * string with the code to highlight. Returns an object with the following - * properties: - * - relevance (int) - * - value (an HTML string with highlighting markup). - * - * @todo In v10.x, change the return type from \stdClass to HighlightResult - * - * @param string $languageName - * @param string $code - * @param bool $ignoreIllegals - * @param Mode|null $continuation - * - * @throws \DomainException if the requested language was not in this - * Highlighter's language set - * @throws \Exception if an invalid regex was given in a language file - * - * @return HighlightResult|\stdClass - */ - public function highlight($languageName, $code, $ignoreIllegals = true, $continuation = null) - { - $this->codeToHighlight = $code; - $this->language = $this->getLanguage($languageName); - - if ($this->language === null) { - throw new \DomainException("Unknown language: \"$languageName\""); - } - - $this->checkMultibyteNecessity(); - - $this->language->compile($this->safeMode); - $this->top = $continuation ? $continuation : $this->language; - $this->continuations = array(); - $this->result = ""; - - for ($current = $this->top; $current !== $this->language; $current = $current->parent) { - if ($current->className) { - $this->result = $this->buildSpan($current->className, '', true) . $this->result; - } - } - - $this->modeBuffer = ""; - $this->relevance = 0; - $this->ignoreIllegals = $ignoreIllegals; - - /** @var HighlightResult $res */ - $res = new \stdClass(); - $res->relevance = 0; - $res->value = ""; - $res->language = ""; - $res->top = null; - $res->errorRaised = null; - - try { - $match = null; - $count = 0; - $index = 0; - - while ($this->top) { - $this->top->terminators->lastIndex = $index; - $match = $this->top->terminators->exec($this->codeToHighlight); - - if (!$match) { - break; - } - - $count = $this->processLexeme(substr($this->codeToHighlight, $index, $match->index - $index), $match); - $index = $match->index + $count; - } - - $this->processLexeme(substr($this->codeToHighlight, $index)); - - for ($current = $this->top; isset($current->parent); $current = $current->parent) { - if ($current->className) { - $this->result .= self::SPAN_END_TAG; - } - } - - $res->relevance = $this->relevance; - $res->value = $this->replaceTabs($this->result); - $res->illegal = false; - $res->language = $this->language->name; - $res->top = $this->top; - - return $res; - } catch (\Exception $e) { - if (strpos($e->getMessage(), "Illegal") !== false) { - $res->illegal = true; - $res->relevance = 0; - $res->value = $this->escape($this->codeToHighlight); - - return $res; - } elseif ($this->safeMode) { - $res->relevance = 0; - $res->value = $this->escape($this->codeToHighlight); - $res->language = $languageName; - $res->top = $this->top; - $res->errorRaised = $e; - - return $res; - } - - throw $e; - } - } - - /** - * Highlight the given code by highlighting the given code with each - * registered language and then finding the match with highest accuracy. - * - * @param string $code - * @param string[]|null $languageSubset When set to null, this method will attempt to highlight $text with each - * language. Set this to an array of languages of your choice to limit the - * amount of languages to try. - * - * @throws \Exception if an invalid regex was given in a language file - * @throws \DomainException if the attempted language to check does not exist - * - * @return HighlightResult|\stdClass - */ - public function highlightAuto($code, $languageSubset = null) - { - /** @var HighlightResult $result */ - $result = new \stdClass(); - $result->relevance = 0; - $result->value = $this->escape($code); - $result->language = ""; - $secondBest = clone $result; - - if ($languageSubset === null) { - $optionsLanguages = $this->options['languages']; - - if (is_array($optionsLanguages) && count($optionsLanguages) > 0) { - $languageSubset = $optionsLanguages; - } else { - $languageSubset = self::$languages; - } - } - - foreach ($languageSubset as $name) { - if ($this->getLanguage($name) === null || !$this->autoDetection($name)) { - continue; - } - - $current = $this->highlight($name, $code, false); - - if ($current->relevance > $secondBest->relevance) { - $secondBest = $current; - } - - if ($current->relevance > $result->relevance) { - $secondBest = $result; - $result = $current; - } - } - - if ($secondBest->language) { - $result->secondBest = $secondBest; - } - - return $result; - } - - /** - * Return a list of all supported languages. Using this list in - * setAutodetectLanguages will turn on autodetection for all supported - * languages. - * - * @deprecated use `Highlighter::listRegisteredLanguages()` or `Highlighter::listBundledLanguages()` instead - * - * @param bool $include_aliases specify whether language aliases - * should be included as well - * - * @since 9.18.1.4 Deprecated in favor of `Highlighter::listRegisteredLanguages()` - * and `Highlighter::listBundledLanguages()`. - * @since 9.12.0.3 The `$include_aliases` parameter was added - * @since 8.3.0.0 - * - * @return string[] An array of language names - */ - public function listLanguages($include_aliases = false) - { - @trigger_error('This method is deprecated in favor `Highlighter::listRegisteredLanguages()` or `Highlighter::listBundledLanguages()`. This function will be removed in highlight.php 10.', E_USER_DEPRECATED); - - if (empty(self::$languages)) { - trigger_error('No languages are registered, returning all bundled languages instead. You probably did not want this.', E_USER_WARNING); - - return self::listBundledLanguages(); - } - - if ($include_aliases === true) { - return array_merge(self::$languages, array_keys(self::$aliases)); - } - - return self::$languages; - } - - /** - * Returns list of all available aliases for given language name. - * - * @param string $name name or alias of language to look-up - * - * @throws \DomainException if the requested language was not in this - * Highlighter's language set - * - * @since 9.12.0.3 - * - * @return string[] An array of all aliases associated with the requested - * language name language. Passed-in name is included as - * well. - */ - public function getAliasesForLanguage($name) - { - $language = self::getLanguage($name); - - if ($language === null) { - throw new \DomainException("Unknown language: $language"); - } - - if ($language->aliases === null) { - return array($language->name); - } - - return array_merge(array($language->name), $language->aliases); - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/JsonRef.php b/vendor/scrivo/highlight.php/Highlight/JsonRef.php deleted file mode 100644 index dea4c2a7e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/JsonRef.php +++ /dev/null @@ -1,177 +0,0 @@ -<?php - -/* Copyright (c) 2014-2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -/** - * Implementation of the \Highlight\JsonRef class. - */ - -namespace Highlight; - -/** - * Class to decode JSON data that contains path-based references. - * - * The language data file for highlight.js are written as JavaScript classes - * and therefore may contain variables. This allows for inner references in - * the language data. This kind of data can be converterd to JSON using the - * path based references. This class can be used to decode such JSON - * structures. It follows the conventions for path based referencing as - * used in dojox.json.ref form the Dojo toolkit (Javascript). A typical - * example of such a structure is as follows: - * - * ```json - * { - * "name":"Kris Zyp", - * "children":[{"name":"Jennika Zyp"},{"name":"Korban Zyp"}], - * "spouse":{ - * "name":"Nicole Zyp", - * "spouse":{"$ref":"#"}, - * "children":{"$ref":"#children"} - * }, - * "oldestChild":{"$ref":"#children.0"} - * } - * ``` - * - * Usage example: - * - * ```php - * $jr = new JsonRef(); - * $data = $jr->decode(file_get_contents("data.json")); - * echo $data->spouse->spouse->name; // echos 'Kris Zyp' - * echo $data->oldestChild->name; // echos 'Jennika Zyp' - * ``` - * - * @todo In Highlight.php 10.x, mark this class final with a keyword. - * - * @since 9.16.0.0 Class has been marked as final - * - * @final - * - * @internal - */ -class JsonRef -{ - /** - * Array to hold all data paths in the given JSON data. - * - * @var array<string, mixed> - */ - private $paths = null; - - /** - * Recurse through the data tree and fill an array of paths that reference - * the nodes in the decoded JSON data structure. - * - * @param mixed $s Decoded JSON data (decoded with json_decode) - * @param string $r The current path key (for example: '#children.0'). - * - * @return void - */ - private function getPaths(&$s, $r = "#") - { - $this->paths[$r] = &$s; - - if (is_array($s) || is_object($s)) { - foreach ($s as $k => &$v) { - if ($k !== "\$ref") { - $this->getPaths($v, $r == "#" ? "#{$k}" : "{$r}.{$k}"); - } - } - } - } - - /** - * Recurse through the data tree and resolve all path references. - * - * @param mixed $s Decoded JSON data (decoded with json_decode) - * @param int $limit - * @param int $depth - * - * @return void - */ - private function resolvePathReferences(&$s, $limit = 20, $depth = 1) - { - if ($depth >= $limit) { - return; - } - - ++$depth; - - if (is_array($s) || is_object($s)) { - foreach ($s as $k => &$v) { - if ($k === "\$ref") { - $s = $this->paths[$v]; - } else { - $this->resolvePathReferences($v, $limit, $depth); - } - } - } - } - - /** - * Decode JSON data that may contain path based references. - * - * @deprecated 9.16.0.0 This method will be removed in Highlight.php. Make use of `decodeRef` instead. - * - * @param string|object $json JSON data string or JSON data object - * - * @return mixed The decoded JSON data - */ - public function decode($json) - { - // Clear the path array. - $this->paths = array(); - // Decode the given JSON data if necessary. - $x = is_string($json) ? json_decode($json) : $json; - // Get all data paths. - $this->getPaths($x); - // Resolve all path references. - $this->resolvePathReferences($x); - // Return the data. - return $x; - } - - /** - * Decode JSON data that may contain path based references. - * - * @param object $json JSON data string or JSON data object - * - * @return void - */ - public function decodeRef(&$json) - { - // Clear the path array. - $this->paths = array(); - - // Get all data paths. - $this->getPaths($json); - - // Resolve all path references. - $this->resolvePathReferences($json); - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/Language.php b/vendor/scrivo/highlight.php/Highlight/Language.php deleted file mode 100644 index 4bc9bc0e4..000000000 --- a/vendor/scrivo/highlight.php/Highlight/Language.php +++ /dev/null @@ -1,413 +0,0 @@ -<?php - -/* Copyright (c) - * - 2006-2013, Ivan Sagalaev (maniacsoftwaremaniacs.org), highlight.js - * (original author) - * - 2013-2019, Geert Bergman (geertscrivo.nl), highlight.php - * - 2014 Daniel Lynge, highlight.php (contributor) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @todo In highlight.php 10.x, replace the @final attribute with the `final` keyword. - * - * @final - * - * @internal - * - * // Backward compatibility properties - * - * @property Mode $mode (DEPRECATED) All properties traditionally inside of $mode are now available directly from this class. - * @property bool $caseInsensitive (DEPRECATED) Due to compatibility requirements with highlight.js, use `case_insensitive` instead. - */ -class Language extends Mode -{ - /** @var string[] */ - private static $COMMON_KEYWORDS = array('of', 'and', 'for', 'in', 'not', 'or', 'if', 'then'); - - /** @var string */ - public $name; - - /** @var Mode|null */ - private $mode = null; - - /** - * @param string $lang - * @param string $filePath - * - * @throws \InvalidArgumentException when the given $filePath is inaccessible - */ - public function __construct($lang, $filePath) - { - $this->name = $lang; - - // We're loading the JSON definition file as an \stdClass object instead of an associative array. This is being - // done to take advantage of objects being pass by reference automatically in PHP whereas arrays are pass by - // value. - $json = file_get_contents($filePath); - - if ($json === false) { - throw new \InvalidArgumentException("Language file inaccessible: $filePath"); - } - - $this->mode = json_decode($json); - } - - /** - * @param string $name - * - * @return bool|Mode|null - */ - public function __get($name) - { - if ($name === 'mode') { - @trigger_error('The "mode" property will be removed in highlight.php 10.x', E_USER_DEPRECATED); - - return $this->mode; - } - - if ($name === 'caseInsensitive') { - @trigger_error('Due to compatibility requirements with highlight.js, use "case_insensitive" instead.', E_USER_DEPRECATED); - - if (isset($this->mode->case_insensitive)) { - return $this->mode->case_insensitive; - } - - return false; - } - - if (isset($this->mode->{$name})) { - return $this->mode->{$name}; - } - - return null; - } - - /** - * @param string $value - * @param bool $global - * - * @return RegEx - */ - private function langRe($value, $global = false) - { - return RegExUtils::langRe($value, $global, $this->case_insensitive); - } - - /** - * Performs a shallow merge of multiple objects into one. - * - * @param Mode $params the objects to merge - * @param array<string, mixed> ...$_ - * - * @return Mode - */ - private function inherit($params, $_ = array()) - { - /** @var Mode $result */ - $result = new \stdClass(); - $objects = func_get_args(); - $parent = array_shift($objects); - - foreach ($parent as $key => $value) { - $result->{$key} = $value; - } - - foreach ($objects as $object) { - foreach ($object as $key => $value) { - $result->{$key} = $value; - } - } - - return $result; - } - - /** - * @param Mode|null $mode - * - * @return bool - */ - private function dependencyOnParent($mode) - { - if (!$mode) { - return false; - } - - if (isset($mode->endsWithParent) && $mode->endsWithParent) { - return $mode->endsWithParent; - } - - return $this->dependencyOnParent(isset($mode->starts) ? $mode->starts : null); - } - - /** - * @param Mode $mode - * - * @return array<int, \stdClass|Mode> - */ - private function expandOrCloneMode($mode) - { - if ($mode->variants && !$mode->cachedVariants) { - $mode->cachedVariants = array(); - - foreach ($mode->variants as $variant) { - $mode->cachedVariants[] = $this->inherit($mode, array('variants' => null), $variant); - } - } - - // EXPAND - // if we have variants then essentially "replace" the mode with the variants - // this happens in compileMode, where this function is called from - if ($mode->cachedVariants) { - return $mode->cachedVariants; - } - - // CLONE - // if we have dependencies on parents then we need a unique - // instance of ourselves, so we can be reused with many - // different parents without issue - if ($this->dependencyOnParent($mode)) { - return array($this->inherit($mode, array( - 'starts' => $mode->starts ? $this->inherit($mode->starts) : null, - ))); - } - - // highlight.php does not have a concept freezing our Modes - - // no special dependency issues, just return ourselves - return array($mode); - } - - /** - * @param Mode $mode - * @param Mode|null $parent - * - * @return void - */ - private function compileMode($mode, $parent = null) - { - Mode::_normalize($mode); - - if ($mode->compiled) { - return; - } - - $mode->compiled = true; - $mode->keywords = $mode->keywords ? $mode->keywords : $mode->beginKeywords; - - if ($mode->keywords) { - $mode->keywords = $this->compileKeywords($mode->keywords, (bool) $this->case_insensitive); - } - - $mode->lexemesRe = $this->langRe($mode->lexemes ? $mode->lexemes : "\w+", true); - - if ($parent) { - if ($mode->beginKeywords) { - $mode->begin = "\\b(" . implode("|", explode(" ", $mode->beginKeywords)) . ")\\b"; - } - - if (!$mode->begin) { - $mode->begin = "\B|\b"; - } - - $mode->beginRe = $this->langRe($mode->begin); - - if ($mode->endSameAsBegin) { - $mode->end = $mode->begin; - } - - if (!$mode->end && !$mode->endsWithParent) { - $mode->end = "\B|\b"; - } - - if ($mode->end) { - $mode->endRe = $this->langRe($mode->end); - } - - $mode->terminator_end = $mode->end; - - if ($mode->endsWithParent && $parent->terminator_end) { - $mode->terminator_end .= ($mode->end ? "|" : "") . $parent->terminator_end; - } - } - - if ($mode->illegal) { - $mode->illegalRe = $this->langRe($mode->illegal); - } - - if ($mode->relevance === null) { - $mode->relevance = 1; - } - - if (!$mode->contains) { - $mode->contains = array(); - } - - /** @var Mode[] $expandedContains */ - $expandedContains = array(); - foreach ($mode->contains as &$c) { - if ($c instanceof \stdClass) { - Mode::_normalize($c); - } - - $expandedContains = array_merge($expandedContains, $this->expandOrCloneMode( - $c === 'self' ? $mode : $c - )); - } - $mode->contains = $expandedContains; - - /** @var Mode $contain */ - foreach ($mode->contains as $contain) { - $this->compileMode($contain, $mode); - } - - if ($mode->starts) { - $this->compileMode($mode->starts, $parent); - } - - $terminators = new Terminators($this->case_insensitive); - $mode->terminators = $terminators->_buildModeRegex($mode); - - Mode::_handleDeprecations($mode); - } - - /** - * @param array<string, string>|string $rawKeywords - * @param bool $caseSensitive - * - * @return array<string, array<int, string|int>> - */ - private function compileKeywords($rawKeywords, $caseSensitive) - { - /** @var array<string, array<int, string|int>> $compiledKeywords */ - $compiledKeywords = array(); - - if (is_string($rawKeywords)) { - $this->splitAndCompile("keyword", $rawKeywords, $compiledKeywords, $caseSensitive); - } else { - foreach ($rawKeywords as $className => $rawKeyword) { - $this->splitAndCompile($className, $rawKeyword, $compiledKeywords, $caseSensitive); - } - } - - return $compiledKeywords; - } - - /** - * @param string $className - * @param string $str - * @param array<string, array<int, string|int>> $compiledKeywords - * @param bool $caseSensitive - * - * @return void - */ - private function splitAndCompile($className, $str, array &$compiledKeywords, $caseSensitive) - { - if ($caseSensitive) { - $str = strtolower($str); - } - - $keywords = explode(' ', $str); - - foreach ($keywords as $keyword) { - $pair = explode('|', $keyword); - $providedScore = isset($pair[1]) ? $pair[1] : null; - $compiledKeywords[$pair[0]] = array($className, $this->scoreForKeyword($pair[0], $providedScore)); - } - } - - /** - * @param string $keyword - * @param string $providedScore - * - * @return int - */ - private function scoreForKeyword($keyword, $providedScore) - { - if ($providedScore) { - return (int) $providedScore; - } - - return $this->commonKeyword($keyword) ? 0 : 1; - } - - /** - * @param string $word - * - * @return bool - */ - private function commonKeyword($word) - { - return in_array(strtolower($word), self::$COMMON_KEYWORDS); - } - - /** - * Compile the Language definition. - * - * @param bool $safeMode - * - * @since 9.17.1.0 The 'safeMode' parameter was added. - * - * @return void - */ - public function compile($safeMode) - { - if ($this->compiled) { - return; - } - - $jr = new JsonRef(); - $jr->decodeRef($this->mode); - - // self is not valid at the top-level - if (isset($this->mode->contains) && !in_array("self", $this->mode->contains)) { - if (!$safeMode) { - throw new \LogicException("`self` is not supported at the top-level of a language."); - } - $this->mode->contains = array_filter($this->mode->contains, function ($mode) { - return $mode !== "self"; - }); - } - - $this->compileMode($this->mode); - } - - /** - * @todo Remove in highlight.php 10.x - * - * @deprecated 9.16.0 This method should never have been exposed publicly as part of the API. - * - * @param \stdClass|null $e - * - * @return void - */ - public function complete(&$e) - { - Mode::_normalize($e); - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/Mode.php b/vendor/scrivo/highlight.php/Highlight/Mode.php deleted file mode 100644 index bc794a64b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/Mode.php +++ /dev/null @@ -1,195 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * A PHP representation of a Mode in the JS library. - * - * @internal - * - * @since 9.16.0.0 - * @mixin ModeDeprecations - * - * Language definition set via language definition JSON files - * - * @property bool $case_insensitive = false - * @property string[] $aliases = array() - * @property string|null $className = null - * @property string|null $begin = null - * @property RegEx|null $beginRe = null - * @property string|null $end = null - * @property RegEx|null $endRe = null - * @property string|null $beginKeywords = null - * @property bool $endsWithParent = false - * @property bool $endsParent = false - * @property bool $endSameAsBegin = false - * @property string|null $lexemes = null - * @property RegEx|null $lexemesRe = null - * @property array<string, array<int, string|int>> $keywords = array() - * @property string|null $illegal = null - * @property RegEx|null $illegalRe = null - * @property bool $excludeBegin = false - * @property bool $excludeEnd = false - * @property bool $returnBegin = false - * @property bool $returnEnd = false - * @property Mode[] $contains = array() - * @property Mode|null $starts = null - * @property Mode[] $variants = array() - * @property int|null $relevance = null - * @property string|string[]|null $subLanguage = null - * @property bool $skip = false - * @property bool $disableAutodetect = false - * - * Properties set at runtime by the language compilation process - * @property array<int, Mode> $cachedVariants = array() - * @property Terminators|null $terminators = null - * @property string $terminator_end = "" - * @property bool $compiled = false - * @property Mode|null $parent = null - * @property string $type = '' - * - * @see https://highlightjs.readthedocs.io/en/latest/reference.html - */ -abstract class Mode extends \stdClass -{ - /** - * Fill in the missing properties that this Mode does not have. - * - * @internal - * - * @param \stdClass|null $obj - * - * @since 9.16.0.0 - * - * @return void - */ - public static function _normalize(&$obj) - { - // Don't overload our Modes if we've already normalized it - if (isset($obj->__IS_COMPLETE)) { - return; - } - - if ($obj === null) { - $obj = new \stdClass(); - } - - $patch = array( - "begin" => true, - "end" => true, - "lexemes" => true, - "illegal" => true, - ); - - // These values come in from JSON definition files - $defaultValues = array( - "case_insensitive" => false, - "aliases" => array(), - "className" => null, - "begin" => null, - "beginRe" => null, - "end" => null, - "endRe" => null, - "beginKeywords" => null, - "endsWithParent" => false, - "endsParent" => false, - "endSameAsBegin" => false, - "lexemes" => null, - "lexemesRe" => null, - "keywords" => array(), - "illegal" => null, - "illegalRe" => null, - "excludeBegin" => false, - "excludeEnd" => false, - "returnBegin" => false, - "returnEnd" => false, - "contains" => array(), - "starts" => null, - "variants" => array(), - "relevance" => null, - "subLanguage" => null, - "skip" => false, - "disableAutodetect" => false, - ); - - // These values are set at runtime - $runTimeValues = array( - "cachedVariants" => array(), - "terminators" => null, - "terminator_end" => "", - "compiled" => false, - "parent" => null, - - // This value is unique to highlight.php Modes - "__IS_COMPLETE" => true, - ); - - foreach ($patch as $k => $v) { - if (isset($obj->{$k})) { - $obj->{$k} = str_replace("\\/", "/", $obj->{$k}); - $obj->{$k} = str_replace("/", "\\/", $obj->{$k}); - } - } - - foreach ($defaultValues as $k => $v) { - if (!isset($obj->{$k}) && is_object($obj)) { - $obj->{$k} = $v; - } - } - - foreach ($runTimeValues as $k => $v) { - if (is_object($obj)) { - $obj->{$k} = $v; - } - } - } - - /** - * Set any deprecated properties values to their replacement values. - * - * @internal - * - * @param \stdClass $obj - * - * @return void - */ - public static function _handleDeprecations(&$obj) - { - $deprecations = array( - // @TODO Deprecated since 9.16.0.0; remove at 10.x - 'caseInsensitive' => 'case_insensitive', - 'terminatorEnd' => 'terminator_end', - ); - - foreach ($deprecations as $deprecated => $new) { - $obj->{$deprecated} = &$obj->{$new}; - } - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/ModeDeprecations.php b/vendor/scrivo/highlight.php/Highlight/ModeDeprecations.php deleted file mode 100644 index a64e3f752..000000000 --- a/vendor/scrivo/highlight.php/Highlight/ModeDeprecations.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @internal - */ -trait ModeDeprecations -{ - /** - * @deprecated 9.16.0.0 Use `case_insensitive` instead - * - * @var bool DEPRECATED - */ - public $caseInsensitive; - - /** - * @deprecated 9.16.0.0 Use `terminator_end` instead - * - * @var string - */ - public $terminatorEnd; -} diff --git a/vendor/scrivo/highlight.php/Highlight/RegEx.php b/vendor/scrivo/highlight.php/Highlight/RegEx.php deleted file mode 100644 index 571c10c97..000000000 --- a/vendor/scrivo/highlight.php/Highlight/RegEx.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * A PHP implementation to match JavaScript's RegExp class as closely as possible. - * - * A lot of behavior in this class is reversed engineered, so improvements are welcome! - * - * @internal - * - * @since 9.16.0 - */ -final class RegEx -{ - /** - * @var string - */ - public $source; - - /** - * @var int - */ - public $lastIndex = 0; - - /** - * @param RegEx|string $regex - */ - public function __construct($regex) - { - $this->source = (string) $regex; - } - - public function __toString() - { - return (string) $this->source; - } - - /** - * Run the regular expression against the given string. - * - * @since 9.16.0.0 - * - * @param string $str the string to run this regular expression against - * - * @return RegExMatch|null - */ - public function exec($str) - { - $index = null; - $results = array(); - preg_match($this->source, $str, $results, PREG_OFFSET_CAPTURE, $this->lastIndex); - - if ($results === null || count($results) === 0) { - return null; - } - - foreach ($results as &$result) { - if ($result[1] !== -1) { - // Only save the index if it hasn't been set yet - if ($index === null) { - $index = $result[1]; - } - - $result = $result[0]; - } else { - $result = null; - } - } - - unset($result); - - $this->lastIndex += strlen($results[0]) + ($index - $this->lastIndex); - - $matches = new RegExMatch($results); - $matches->index = isset($index) ? $index : 0; - $matches->input = $str; - - return $matches; - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/RegExMatch.php b/vendor/scrivo/highlight.php/Highlight/RegExMatch.php deleted file mode 100644 index 9f06ee383..000000000 --- a/vendor/scrivo/highlight.php/Highlight/RegExMatch.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @internal - * - * @implements \ArrayAccess<int, string|null> - * @implements \IteratorAggregate<int, string|null> - * - * @since 9.16.0.0 - */ -class RegExMatch implements \ArrayAccess, \Countable, \IteratorAggregate -{ - /** @var array<int, string|null> */ - private $data; - - /** @var int */ - public $index; - - /** @var string */ - public $input; - - /** @var string */ - public $type; - - /** @var Mode|string */ - public $rule; - - /** - * @param array<int, string|null> $results - */ - public function __construct(array $results) - { - $this->data = $results; - } - - /** - * {@inheritdoc} - */ - #[\ReturnTypeWillChange] - public function getIterator() - { - return new \ArrayIterator($this->data); - } - - /** - * {@inheritdoc} - */ - #[\ReturnTypeWillChange] - public function offsetExists($offset) - { - return isset($this->data[$offset]); - } - - /** - * {@inheritdoc} - */ - #[\ReturnTypeWillChange] - public function offsetGet($offset) - { - return $this->data[$offset]; - } - - /** - * {@inheritdoc} - */ - #[\ReturnTypeWillChange] - public function offsetSet($offset, $value) - { - throw new \LogicException(__CLASS__ . ' instances are read-only.'); - } - - /** - * {@inheritdoc} - */ - #[\ReturnTypeWillChange] - public function offsetUnset($offset) - { - throw new \LogicException(__CLASS__ . ' instances are read-only.'); - } - - /** - * {@inheritdoc} - * - * @return int - */ - #[\ReturnTypeWillChange] - public function count() - { - return count($this->data); - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/RegExUtils.php b/vendor/scrivo/highlight.php/Highlight/RegExUtils.php deleted file mode 100644 index 000c2d053..000000000 --- a/vendor/scrivo/highlight.php/Highlight/RegExUtils.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace Highlight; - -/** - * @internal - * - * @since 9.16.0.0 - */ -abstract class RegExUtils -{ - /** - * @param string $value - * @param bool $global - * @param bool $case_insensitive - * - * @return RegEx - */ - public static function langRe($value, $global, $case_insensitive) - { - // PCRE allows us to change the definition of "new line." The - // `(*ANYCRLF)` matches `\r`, `\n`, and `\r\n` for `$` - // - // https://www.pcre.org/original/doc/html/pcrepattern.html - - // PCRE requires us to tell it the string can be UTF-8, so the 'u' modifier - // is required. The `u` flag for PCRE is different from JS' unicode flag. - - $escaped = preg_replace('#(?<!\\\)/#um', '\\/', $value); - $regex = "/(*ANYCRLF){$escaped}/um" . ($case_insensitive ? "i" : ""); - - return new RegEx($regex); - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/Terminators.php b/vendor/scrivo/highlight.php/Highlight/Terminators.php deleted file mode 100644 index 936e66bb1..000000000 --- a/vendor/scrivo/highlight.php/Highlight/Terminators.php +++ /dev/null @@ -1,244 +0,0 @@ -<?php - -namespace Highlight; - -/** - * @internal - * - * @since 9.16.0.0 - */ -final class Terminators -{ - /** @var bool */ - private $caseInsensitive; - - /** @var array<int, Mode|string> */ - private $matchIndexes = array(); - - /** @var RegEx|null */ - private $matcherRe = null; - - /** @var array<int, array<int, Mode|string>> */ - private $regexes = array(); - - /** @var int */ - private $matchAt = 1; - - /** @var Mode */ - private $mode; - - /** @var int */ - public $lastIndex = 0; - - /** - * @param bool $caseInsensitive - */ - public function __construct($caseInsensitive) - { - $this->caseInsensitive = $caseInsensitive; - } - - /** - * @internal - * - * @param Mode $mode - * - * @return self - */ - public function _buildModeRegex($mode) - { - $this->mode = $mode; - $term = null; - - for ($i = 0; $i < count($mode->contains); ++$i) { - $re = null; - $term = $mode->contains[$i]; - - if ($term->beginKeywords) { - $re = "\.?(?:" . $term->begin . ")\.?"; - } else { - $re = $term->begin; - } - - $this->addRule($term, $re); - } - - if ($mode->terminator_end) { - $this->addRule('end', $mode->terminator_end); - } - - if ($mode->illegal) { - $this->addRule('illegal', $mode->illegal); - } - - /** @var array<int, string> $terminators */ - $terminators = array(); - foreach ($this->regexes as $regex) { - $terminators[] = $regex[1]; - } - - $this->matcherRe = $this->langRe($this->joinRe($terminators, '|'), true); - $this->lastIndex = 0; - - return $this; - } - - /** - * @param string $s - * - * @return RegExMatch|null - */ - public function exec($s) - { - if (count($this->regexes) === 0) { - return null; - } - - $this->matcherRe->lastIndex = $this->lastIndex; - $match = $this->matcherRe->exec($s); - if (!$match) { - return null; - } - - /** @var Mode|string $rule */ - $rule = null; - for ($i = 0; $i < count($match); ++$i) { - if ($match[$i] !== null && isset($this->matchIndexes[$i])) { - $rule = $this->matchIndexes[$i]; - break; - } - } - - if (is_string($rule)) { - $match->type = $rule; - } else { - $match->type = "begin"; - $match->rule = $rule; - } - - return $match; - } - - /** - * @param string $value - * @param bool $global - * - * @return RegEx - */ - private function langRe($value, $global = false) - { - return RegExUtils::langRe($value, $global, $this->caseInsensitive); - } - - /** - * @param Mode|string $rule - * @param string $regex - * - * @return void - */ - private function addRule($rule, $regex) - { - $this->matchIndexes[$this->matchAt] = $rule; - $this->regexes[] = array($rule, $regex); - $this->matchAt += $this->reCountMatchGroups($regex) + 1; - } - - /** - * joinRe logically computes regexps.join(separator), but fixes the - * backreferences so they continue to match. - * - * it also places each individual regular expression into it's own - * match group, keeping track of the sequencing of those match groups - * is currently an exercise for the caller. :-) - * - * @param array<int, string> $regexps - * @param string $separator - * - * @return string - */ - private function joinRe($regexps, $separator) - { - // backreferenceRe matches an open parenthesis or backreference. To avoid - // an incorrect parse, it additionally matches the following: - // - [...] elements, where the meaning of parentheses and escapes change - // - other escape sequences, so we do not misparse escape sequences as - // interesting elements - // - non-matching or lookahead parentheses, which do not capture. These - // follow the '(' with a '?'. - $backreferenceRe = '#\[(?:[^\\\\\]]|\\\.)*\]|\(\??|\\\([1-9][0-9]*)|\\\.#'; - $numCaptures = 0; - $ret = ''; - - $strLen = count($regexps); - for ($i = 0; $i < $strLen; ++$i) { - ++$numCaptures; - $offset = $numCaptures; - $re = $this->reStr($regexps[$i]); - - if ($i > 0) { - $ret .= $separator; - } - - $ret .= "("; - - while (strlen($re) > 0) { - $matches = array(); - $matchFound = preg_match($backreferenceRe, $re, $matches, PREG_OFFSET_CAPTURE); - - if ($matchFound === 0) { - $ret .= $re; - break; - } - - // PHP aliases to match the JS naming conventions - $match = $matches[0]; - $index = $match[1]; - - $ret .= substr($re, 0, $index); - $re = substr($re, $index + strlen($match[0])); - - if (substr($match[0], 0, 1) === '\\' && isset($matches[1])) { - // Adjust the backreference. - $ret .= "\\" . strval(intval($matches[1][0]) + $offset); - } else { - $ret .= $match[0]; - if ($match[0] == "(") { - ++$numCaptures; - } - } - } - - $ret .= ")"; - } - - return $ret; - } - - /** - * @param RegEx|string $re - * - * @return mixed - */ - private function reStr($re) - { - if ($re && isset($re->source)) { - return $re->source; - } - - return $re; - } - - /** - * @param RegEx|string $re - * - * @return int - */ - private function reCountMatchGroups($re) - { - $results = array(); - $escaped = preg_replace('#(?<!\\\)/#um', '\\/', (string) $re); - preg_match_all("/{$escaped}|/u", '', $results); - - return count($results) - 1; - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/1c.json b/vendor/scrivo/highlight.php/Highlight/languages/1c.json deleted file mode 100644 index 0036ac4f0..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/1c.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "case_insensitive": true, - "lexemes": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "keywords": { - "keyword": "далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ", - "built_in": "разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ", - "class": "webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты", - "type": "comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ", - "literal": "null истина ложь неопределено" - }, - "contains": [ - { - "className": "meta", - "lexemes": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "begin": "#|&", - "end": "$", - "keywords": { - "meta-keyword": "далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент " - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "function", - "lexemes": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "variants": [ - { - "begin": "процедура|функция", - "end": "\\)", - "keywords": "процедура функция" - }, - { - "begin": "конецпроцедуры|конецфункции", - "keywords": "конецпроцедуры конецфункции" - } - ], - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "contains": [ - { - "className": "params", - "lexemes": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "begin": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "end": ",", - "excludeEnd": true, - "endsWithParent": true, - "keywords": { - "keyword": "знач", - "literal": "null истина ложь неопределено" - }, - "contains": [ - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"|\\|", - "end": "\"|$", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "begin": "'", - "end": "'", - "excludeBegin": true, - "excludeEnd": true, - "contains": [ - { - "className": "number", - "begin": "\\d{4}([\\.\\Q\\\/:\\E-]?\\d{2}){0,5}" - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "title", - "begin": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]+", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "symbol", - "begin": "~", - "end": ";|:", - "excludeEnd": true - }, - { - "$ref": "#contains.1.contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.1.contains.0.contains.0.contains.1" - }, - { - "$ref": "#contains.1.contains.0.contains.0.contains.2" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/abnf.json b/vendor/scrivo/highlight.php/Highlight/languages/abnf.json deleted file mode 100644 index 663535065..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/abnf.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "illegal": "[!@#$^&',?+~`|:]", - "keywords": "ALPHA BIT CHAR CR CRLF CTL DIGIT DQUOTE HEXDIG HTAB LF LWSP OCTET SP VCHAR WSP", - "contains": [ - { - "className": "attribute", - "begin": "^[a-zA-Z][a-zA-Z0-9\\-]*(?=\\s*=)" - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "symbol", - "begin": "%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}" - }, - { - "className": "symbol", - "begin": "%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}" - }, - { - "className": "symbol", - "begin": "%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}" - }, - { - "className": "symbol", - "begin": "%[si]" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/accesslog.json b/vendor/scrivo/highlight.php/Highlight/languages/accesslog.json deleted file mode 100644 index 456df0249..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/accesslog.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "contains": [ - { - "className": "number", - "begin": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b", - "relevance": 5 - }, - { - "className": "number", - "begin": "\\b\\d+\\b", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)", - "end": "\"", - "keywords": "GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE", - "illegal": "\\n", - "relevance": 5, - "contains": [ - { - "begin": "HTTP\/[12]\\.\\d", - "relevance": 5 - } - ] - }, - { - "className": "string", - "begin": "\\[\\d[^\\]\\n]{8,}\\]", - "illegal": "\\n", - "relevance": 1 - }, - { - "className": "string", - "begin": "\\[", - "end": "\\]", - "illegal": "\\n", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"Mozilla\/\\d\\.\\d \\(", - "end": "\"", - "illegal": "\\n", - "relevance": 3 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/actionscript.json b/vendor/scrivo/highlight.php/Highlight/languages/actionscript.json deleted file mode 100644 index 2aa2c9ff2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/actionscript.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "aliases": [ - "as" - ], - "keywords": { - "keyword": "as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", - "literal": "true false null undefined" - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "class", - "beginKeywords": "package", - "end": "{", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "{", - "excludeEnd": true, - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "$ref": "#contains.5.contains.0" - } - ] - }, - { - "className": "meta", - "beginKeywords": "import include", - "end": ";", - "keywords": { - "meta-keyword": "import include" - } - }, - { - "className": "function", - "beginKeywords": "function", - "end": "[{;]", - "excludeEnd": true, - "illegal": "\\S", - "contains": [ - { - "$ref": "#contains.5.contains.0" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "className": "rest_arg", - "begin": "[.]{3}", - "end": "[a-zA-Z_$][a-zA-Z0-9_$]*", - "relevance": 10 - } - ] - }, - { - "begin": ":\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)" - } - ] - }, - { - "begin": "\\.\\s*[a-zA-Z_]\\w*", - "relevance": 0 - } - ], - "illegal": "#" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ada.json b/vendor/scrivo/highlight.php/Highlight/languages/ada.json deleted file mode 100644 index 4af4abffc..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ada.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "keyword": "abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor", - "literal": "True False" - }, - "contains": [ - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'.'" - }, - { - "className": "number", - "begin": "\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)", - "relevance": 0 - }, - { - "className": "symbol", - "begin": "'[A-Za-z](_?[A-Za-z0-9.])*" - }, - { - "className": "title", - "begin": "(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?", - "end": "(is|$)", - "keywords": "package body", - "excludeBegin": true, - "excludeEnd": true, - "illegal": "\\Q[]{}%#'\"\\E" - }, - { - "begin": "(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+", - "end": "(\\bis|\\bwith|\\brenames|\\)\\s*;)", - "keywords": "overriding function procedure with is renames return", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "title", - "begin": "(\\bwith\\s+)?\\b(function|procedure)\\s+", - "end": "(\\(|\\s+|$)", - "excludeBegin": true, - "excludeEnd": true, - "illegal": "\\Q[]{}%#'\"\\E" - }, - { - "begin": "\\s+:\\s+", - "end": "\\s*(:=|;|\\)|=>|$)", - "illegal": "\\Q[]{}%#'\"\\E", - "contains": [ - { - "beginKeywords": "loop for declare others", - "endsParent": true - }, - { - "className": "keyword", - "beginKeywords": "not null constant access function procedure in out aliased exception" - }, - { - "className": "type", - "begin": "[A-Za-z](_?[A-Za-z0-9.])*", - "endsParent": true, - "relevance": 0 - } - ] - }, - { - "className": "type", - "begin": "\\breturn\\s+", - "end": "(\\s+|;|$)", - "keywords": "return", - "excludeBegin": true, - "excludeEnd": true, - "endsParent": true, - "illegal": "\\Q[]{}%#'\"\\E" - } - ] - }, - { - "className": "type", - "begin": "\\b(sub)?type\\s+", - "end": "\\s+", - "keywords": "type", - "excludeBegin": true, - "illegal": "\\Q[]{}%#'\"\\E" - }, - { - "$ref": "#contains.6.contains.2" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/angelscript.json b/vendor/scrivo/highlight.php/Highlight/languages/angelscript.json deleted file mode 100644 index 63aa71b9a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/angelscript.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "aliases": [ - "asc" - ], - "keywords": "for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property", - "illegal": "(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunctions*[^\\(])", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "interface namespace", - "end": "{", - "illegal": "[;.\\-]", - "contains": [ - { - "className": "symbol", - "begin": "[a-zA-Z0-9_]+" - } - ] - }, - { - "beginKeywords": "class", - "end": "{", - "illegal": "[;.\\-]", - "contains": [ - { - "className": "symbol", - "begin": "[a-zA-Z0-9_]+", - "contains": [ - { - "begin": "[:,]\\s*", - "contains": [ - { - "className": "symbol", - "begin": "[a-zA-Z0-9_]+" - } - ] - } - ] - } - ] - }, - { - "className": "built_in", - "begin": "\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)", - "contains": [ - { - "className": "keyword", - "begin": "<", - "end": ">", - "contains": [ - { - "$ref": "#contains.7" - }, - { - "className": "symbol", - "begin": "[a-zA-Z0-9_]+@", - "contains": [ - { - "$ref": "#contains.7.contains.0" - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.7.contains.0.contains.1" - }, - { - "className": "literal", - "begin": "\\b(null|true|false)" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/apache.json b/vendor/scrivo/highlight.php/Highlight/languages/apache.json deleted file mode 100644 index fed6f8c65..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/apache.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "aliases": [ - "apacheconf" - ], - "case_insensitive": true, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "section", - "begin": "<\/?", - "end": ">" - }, - { - "className": "attribute", - "begin": "\\w+", - "relevance": 0, - "keywords": { - "nomarkup": "order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername" - }, - "starts": { - "end": "$", - "relevance": 0, - "keywords": { - "literal": "on off all" - }, - "contains": [ - { - "className": "meta", - "begin": "\\s\\[", - "end": "\\]$" - }, - { - "className": "variable", - "begin": "[\\$%]\\{", - "end": "\\}", - "contains": [ - "self", - { - "className": "number", - "begin": "[\\$%]\\d+" - } - ] - }, - { - "$ref": "#contains.2.starts.contains.1.contains.1" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - } - ] - } - } - ], - "illegal": "\\S" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/applescript.json b/vendor/scrivo/highlight.php/Highlight/languages/applescript.json deleted file mode 100644 index aed68176a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/applescript.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "aliases": [ - "osascript" - ], - "keywords": { - "keyword": "about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without", - "literal": "AppleScript false linefeed return pi quote result space tab true", - "built_in": "alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "built_in", - "begin": "\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b" - }, - { - "className": "literal", - "begin": "\\b(text item delimiters|current application|missing value)\\b" - }, - { - "className": "keyword", - "begin": "\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\b" - }, - { - "beginKeywords": "on", - "illegal": "[${=;\\n]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.0" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - "self", - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ], - "illegal": "\/\/|->|=>|\\[\\[" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/arcade.json b/vendor/scrivo/highlight.php/Highlight/languages/arcade.json deleted file mode 100644 index bd06c3c09..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/arcade.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "aliases": [ - "arcade" - ], - "keywords": { - "keyword": "if for while var new function do return void else break", - "literal": "BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined", - "built_in": "Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year " - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "subst", - "begin": "\\$\\{", - "end": "\\}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0[bB][01]+)" - }, - { - "begin": "\\b(0[oO][0-7]+)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" - } - ], - "relevance": 0 - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - } - ] - } - ] - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "symbol", - "begin": "\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+" - }, - { - "$ref": "#contains.2.contains.1.contains.3" - }, - { - "begin": "[{,]\\s*", - "relevance": 0, - "contains": [ - { - "begin": "[A-Za-z_][0-9A-Za-z_]*\\s*:", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "[A-Za-z_][0-9A-Za-z_]*", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\b(return)\\b)\\s*", - "keywords": "return", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.2.contains.1.contains.4" - }, - { - "className": "function", - "begin": "(\\(.*?\\)|[A-Za-z_][0-9A-Za-z_]*)\\s*=>", - "returnBegin": true, - "end": "\\s*=>", - "contains": [ - { - "className": "params", - "variants": [ - { - "begin": "[A-Za-z_][0-9A-Za-z_]*" - }, - { - "begin": "\\(\\s*\\)" - }, - { - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.2.contains.1.contains.3" - }, - { - "$ref": "#contains.2.contains.1.contains.4" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.3" - } - ] - } - ] - } - ] - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "function", - "end": "\\{", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z_][0-9A-Za-z_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "contains": { - "$ref": "#contains.8.contains.3.contains.0.variants.2.contains" - } - } - ], - "illegal": "\\[|%" - }, - { - "begin": "\\$[(.]" - } - ], - "illegal": "#(?!!)" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/arduino.json b/vendor/scrivo/highlight.php/Highlight/languages/arduino.json deleted file mode 100644 index 0bbb7035b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/arduino.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "aliases": [ - "c", - "cc", - "h", - "c++", - "h++", - "hpp", - "hh", - "hxx", - "cxx" - ], - "keywords": { - "keyword": "int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq boolean byte word String", - "built_in": "std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put", - "literal": "true false nullptr NULL DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW" - }, - "illegal": "<\/", - "contains": [ - { - "variants": [ - { - "begin": "=", - "end": ";" - }, - { - "begin": "\\(", - "end": "\\)" - }, - { - "beginKeywords": "new throw return else", - "end": ";" - } - ], - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "keyword", - "begin": "\\b[a-z\\d_]*_t\\b" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0b[01']+)" - }, - { - "begin": "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" - } - ], - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "(u8?|U|L)?\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", - "end": "'", - "illegal": "." - }, - { - "begin": "(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\((?:.|\\n)*?\\)\\1\"" - } - ] - }, - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - "self" - ], - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "function", - "begin": "((decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<.*?>)?)[\\*&\\s]+)+(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "end": "[{;=]", - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "illegal": "[^\\w\\s\\*&:<>]", - "contains": [ - { - "begin": "decltype\\(auto\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0 - }, - { - "begin": "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - "self", - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.0" - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "meta", - "begin": "#\\s*[a-z]+\\b", - "end": "$", - "keywords": { - "meta-keyword": "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "className": "meta-string", - "variants": { - "$ref": "#contains.0.contains.4.variants" - } - }, - { - "className": "meta-string", - "begin": "<.*?>", - "end": "$", - "illegal": "\\n" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.1.contains.6" - }, - { - "begin": "\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<", - "end": ">", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "begin": "[a-zA-Z]\\w*::", - "keywords": { - "$ref": "#keywords" - } - }, - { - "className": "class", - "beginKeywords": "class struct", - "end": "[{;:]", - "contains": [ - { - "begin": "<", - "end": ">", - "contains": [ - "self" - ] - }, - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - } - ], - "exports": { - "preprocessor": { - "$ref": "#contains.1.contains.6" - }, - "strings": { - "$ref": "#contains.0.contains.4" - }, - "keywords": { - "$ref": "#keywords" - } - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/armasm.json b/vendor/scrivo/highlight.php/Highlight/languages/armasm.json deleted file mode 100644 index 467a2b2ba..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/armasm.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "arm" - ], - "lexemes": "\\.?[a-zA-Z]\\w*", - "keywords": { - "meta": ".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ", - "built_in": "r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @" - }, - "contains": [ - { - "className": "keyword", - "begin": "\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?", - "end": "\\s" - }, - { - "className": "comment", - "begin": "[;@]", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "[^\\\\]'", - "relevance": 0 - }, - { - "className": "title", - "begin": "\\|", - "end": "\\|", - "illegal": "\\n", - "relevance": 0 - }, - { - "className": "number", - "variants": [ - { - "begin": "[#$=]?0x[0-9a-f]+" - }, - { - "begin": "[#$=]?0b[01]+" - }, - { - "begin": "[#$=]\\d+" - }, - { - "begin": "\\b\\d+" - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "variants": [ - { - "begin": "^[a-z_\\.\\$][a-z0-9_\\.\\$]+" - }, - { - "begin": "^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:" - }, - { - "begin": "[=#]\\w+" - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/asciidoc.json b/vendor/scrivo/highlight.php/Highlight/languages/asciidoc.json deleted file mode 100644 index 85b1392a7..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/asciidoc.json +++ /dev/null @@ -1,186 +0,0 @@ -{ - "aliases": [ - "adoc" - ], - "contains": [ - { - "className": "comment", - "begin": "^\/{4,}\\n", - "end": "\\n\/{4,}$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "comment", - "begin": "^\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "title", - "begin": "^\\.\\w.*$" - }, - { - "begin": "^[=\\*]{4,}\\n", - "end": "\\n^[=\\*]{4,}$", - "relevance": 10 - }, - { - "className": "section", - "relevance": 10, - "variants": [ - { - "begin": "^(={1,5}) .+?( \\1)?$" - }, - { - "begin": "^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$" - } - ] - }, - { - "className": "meta", - "begin": "^:.+?:", - "end": "\\s", - "excludeEnd": true, - "relevance": 10 - }, - { - "className": "meta", - "begin": "^\\[.+?\\]$", - "relevance": 0 - }, - { - "className": "quote", - "begin": "^_{4,}\\n", - "end": "\\n_{4,}$", - "relevance": 10 - }, - { - "className": "code", - "begin": "^[\\-\\.]{4,}\\n", - "end": "\\n[\\-\\.]{4,}$", - "relevance": 10 - }, - { - "begin": "^\\+{4,}\\n", - "end": "\\n\\+{4,}$", - "contains": [ - { - "begin": "<", - "end": ">", - "subLanguage": "xml", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "bullet", - "begin": "^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+" - }, - { - "className": "symbol", - "begin": "^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+", - "relevance": 10 - }, - { - "className": "strong", - "begin": "\\B\\*(?![\\*\\s])", - "end": "(\\n{2}|\\*)", - "contains": [ - { - "begin": "\\\\*\\w", - "relevance": 0 - } - ] - }, - { - "className": "emphasis", - "begin": "\\B'(?!['\\s])", - "end": "(\\n{2}|')", - "contains": [ - { - "begin": "\\\\'\\w", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "emphasis", - "begin": "_(?![_\\s])", - "end": "(\\n{2}|_)", - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "``.+?''" - }, - { - "begin": "`.+?'" - } - ] - }, - { - "className": "code", - "begin": "(`.+?`|\\+.+?\\+)", - "relevance": 0 - }, - { - "className": "code", - "begin": "^[ \\t]", - "end": "$", - "relevance": 0 - }, - { - "begin": "^'{3,}[ \\t]*$", - "relevance": 10 - }, - { - "begin": "(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]", - "returnBegin": true, - "contains": [ - { - "begin": "(link|image:?):", - "relevance": 0 - }, - { - "className": "link", - "begin": "\\w", - "end": "[^\\[]+", - "relevance": 0 - }, - { - "className": "string", - "begin": "\\[", - "end": "\\]", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0 - } - ], - "relevance": 10 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/aspectj.json b/vendor/scrivo/highlight.php/Highlight/languages/aspectj.json deleted file mode 100644 index f270698e9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/aspectj.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance", - "illegal": "<\\\/|#", - "contains": [ - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\w+@", - "relevance": 0 - }, - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - }, - { - "className": "class", - "beginKeywords": "aspect", - "end": "[{;=]", - "excludeEnd": true, - "illegal": "[:;\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "begin": "\\([^\\)]*", - "end": "[)]+", - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance get set args call", - "excludeEnd": false - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "[{;=]", - "excludeEnd": true, - "relevance": 0, - "keywords": "class interface", - "illegal": "[:\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "$ref": "#contains.5.contains.1" - } - ] - }, - { - "beginKeywords": "pointcut after before around throwing returning", - "end": "[)]", - "excludeEnd": false, - "illegal": "[\"\\[\\]]", - "contains": [ - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.5.contains.1" - } - ] - } - ] - }, - { - "begin": "[:]", - "returnBegin": true, - "end": "[{;]", - "relevance": 0, - "excludeEnd": false, - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance", - "illegal": "[\"\\[\\]]", - "contains": [ - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance get set args call", - "relevance": 0 - }, - { - "$ref": "#contains.4" - } - ] - }, - { - "beginKeywords": "new throw", - "relevance": 0 - }, - { - "className": "function", - "begin": "\\w+ +\\w+(\\.)?\\w+\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]", - "returnBegin": true, - "end": "[{;=]", - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance", - "excludeEnd": true, - "contains": [ - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.5.contains.1" - } - ] - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "relevance": 0, - "keywords": "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "$ref": "#contains.10.contains.1.contains.2" - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/autohotkey.json b/vendor/scrivo/highlight.php/Highlight/languages/autohotkey.json deleted file mode 100644 index 0a0211e81..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/autohotkey.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "ahk" - ], - "keywords": { - "keyword": "Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group", - "literal": "true false NOT AND OR", - "built_in": "ComSpec Clipboard ClipboardAll ErrorLevel" - }, - "contains": [ - { - "begin": "`[\\s\\S]" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0" - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "variable", - "begin": "%[a-zA-Z0-9#_$@]+%" - }, - { - "className": "built_in", - "begin": "^\\s*\\w+\\s*(,|%)" - }, - { - "className": "title", - "variants": [ - { - "begin": "^[^\\n\";]+::(?!=)" - }, - { - "begin": "^[^\\n\";]+:(?!=)", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "^\\s*#\\w+", - "end": "$", - "relevance": 0 - }, - { - "className": "built_in", - "begin": "A_[a-zA-Z0-9]+" - }, - { - "begin": ",\\s*," - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/autoit.json b/vendor/scrivo/highlight.php/Highlight/languages/autoit.json deleted file mode 100644 index 7985eafd1..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/autoit.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "\\\/\\*", - "keywords": { - "keyword": "ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With", - "built_in": "Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait", - "literal": "True False And Null Not Or" - }, - "contains": [ - { - "variants": [ - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "#cs", - "end": "#ce", - "contains": [ - { - "$ref": "#contains.0.variants.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#comments-start", - "end": "#comments-end", - "contains": [ - { - "$ref": "#contains.0.variants.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "\\$[A-z0-9_]+" - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''", - "relevance": 0 - } - ] - } - ] - }, - { - "variants": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "beginKeywords": "include", - "keywords": { - "meta-keyword": "include" - }, - "end": "$", - "contains": [ - { - "$ref": "#contains.2" - }, - { - "className": "meta-string", - "variants": [ - { - "begin": "<", - "end": ">" - }, - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.0" - } - ] - }, - { - "className": "symbol", - "begin": "@[A-z0-9_]+" - }, - { - "className": "function", - "beginKeywords": "Func", - "end": "$", - "illegal": "\\$|\\[|%", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/avrasm.json b/vendor/scrivo/highlight.php/Highlight/languages/avrasm.json deleted file mode 100644 index f5ef05136..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/avrasm.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "case_insensitive": true, - "lexemes": "\\.?[a-zA-Z]\\w*", - "keywords": { - "keyword": "adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr", - "built_in": "r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf", - "meta": ".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "[^\\\\]'", - "illegal": "[^\\\\][^']" - }, - { - "className": "symbol", - "begin": "^[A-Za-z0-9_.$]+:" - }, - { - "className": "meta", - "begin": "#", - "end": "$" - }, - { - "className": "subst", - "begin": "@[0-9]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/awk.json b/vendor/scrivo/highlight.php/Highlight/languages/awk.json deleted file mode 100644 index aa9675130..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/awk.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "keywords": { - "keyword": "BEGIN END if else while do for in break continue delete next nextfile function func exit|10" - }, - "contains": [ - { - "className": "variable", - "variants": [ - { - "begin": "\\$[\\w\\d#@][\\w\\d_]*" - }, - { - "begin": "\\$\\{(.*?)}" - } - ] - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "variants": [ - { - "begin": "(u|b)?r?'''", - "end": "'''", - "relevance": 10 - }, - { - "begin": "(u|b)?r?\"\"\"", - "end": "\"\"\"", - "relevance": 10 - }, - { - "begin": "(u|r|ur)'", - "end": "'", - "relevance": 10 - }, - { - "begin": "(u|r|ur)\"", - "end": "\"", - "relevance": 10 - }, - { - "begin": "(b|br)'", - "end": "'" - }, - { - "begin": "(b|br)\"", - "end": "\"" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - } - ] - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/axapta.json b/vendor/scrivo/highlight.php/Highlight/languages/axapta.json deleted file mode 100644 index 387b0027a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/axapta.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "keywords": "false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$" - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "{", - "excludeEnd": true, - "illegal": ":", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/bash.json b/vendor/scrivo/highlight.php/Highlight/languages/bash.json deleted file mode 100644 index b2e12029b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/bash.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "aliases": [ - "sh", - "zsh" - ], - "lexemes": "\\b-?[a-z\\._]+\\b", - "keywords": { - "keyword": "if then else elif fi for while in do done case esac function", - "literal": "true false", - "built_in": "break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp", - "_": "-ne -eq -lt -gt -f -d -e -s -l -a" - }, - "contains": [ - { - "className": "meta", - "begin": "^#![^\\n]+sh\\s*$", - "relevance": 10 - }, - { - "className": "function", - "begin": "\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "\\w[\\w\\d_]*", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$[\\w\\d#@][\\w\\d_]*" - }, - { - "begin": "\\$\\{(.*?)}" - } - ] - }, - { - "className": "variable", - "begin": "\\$\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - } - ] - }, - { - "className": "", - "begin": "\\\\\"" - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "$ref": "#contains.3.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/basic.json b/vendor/scrivo/highlight.php/Highlight/languages/basic.json deleted file mode 100644 index f6d8f2ce0..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/basic.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "^.", - "lexemes": "[a-zA-Z][a-zA-Z0-9_$%!#]*", - "keywords": { - "keyword": "ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "REM", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "comment", - "begin": "'", - "end": "$", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "begin": "^[0-9]+ ", - "relevance": 10 - }, - { - "className": "number", - "begin": "\\b([0-9]+[0-9edED.]*[#!]?)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(&[hH][0-9a-fA-F]{1,4})" - }, - { - "className": "number", - "begin": "(&[oO][0-7]{1,6})" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/bnf.json b/vendor/scrivo/highlight.php/Highlight/languages/bnf.json deleted file mode 100644 index a43282e3c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/bnf.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "contains": [ - { - "className": "attribute", - "begin": "<", - "end": ">" - }, - { - "begin": "::=", - "starts": { - "end": "$", - "contains": [ - { - "begin": "<", - "end": ">" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.starts.contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.starts.contains.3.contains.0" - } - ] - } - ] - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/brainfuck.json b/vendor/scrivo/highlight.php/Highlight/languages/brainfuck.json deleted file mode 100644 index d305db74c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/brainfuck.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "aliases": [ - "bf" - ], - "contains": [ - { - "className": "comment", - "begin": "[^\\[\\]\\.,\\+\\-<> \r\n]", - "end": "[\\[\\]\\.,\\+\\-<> \r\n]", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "returnEnd": true, - "relevance": 0 - }, - { - "className": "title", - "begin": "[\\[\\]]", - "relevance": 0 - }, - { - "className": "string", - "begin": "[\\.,]", - "relevance": 0 - }, - { - "begin": "(?:\\+\\+|\\-\\-)", - "contains": [ - { - "className": "literal", - "begin": "[\\+\\-]", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.3.contains.0" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/cal.json b/vendor/scrivo/highlight.php/Highlight/languages/cal.json deleted file mode 100644 index 7fcca9d8e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/cal.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "keyword": "div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var", - "literal": "false true" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''" - } - ] - }, - { - "className": "string", - "begin": "(#\\d+)+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(DT|D|T)", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "class", - "begin": "OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "procedure", - "end": "[:;]", - "keywords": "procedure|10", - "contains": [ - { - "$ref": "#contains.5.contains.0" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": "div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\{", - "end": "\\}", - "contains": [ - { - "$ref": "#contains.5.contains.1.contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "$ref": "#contains.5.contains.1.contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - } - ] - } - ] - }, - { - "$ref": "#contains.5.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/capnproto.json b/vendor/scrivo/highlight.php/Highlight/languages/capnproto.json deleted file mode 100644 index 43096db18..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/capnproto.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "aliases": [ - "capnp" - ], - "keywords": { - "keyword": "struct enum interface union group import using const annotation extends in of on as with from fixed", - "built_in": "Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List", - "literal": "true false" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "@0x[\\w\\d]{16};", - "illegal": "\\n" - }, - { - "className": "symbol", - "begin": "@\\d+\\b" - }, - { - "className": "class", - "beginKeywords": "struct enum", - "end": "\\{", - "illegal": "\\n", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "starts": { - "endsWithParent": true, - "excludeEnd": true - } - } - ] - }, - { - "className": "class", - "beginKeywords": "interface", - "end": "\\{", - "illegal": "\\n", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "starts": { - "endsWithParent": true, - "excludeEnd": true - } - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ceylon.json b/vendor/scrivo/highlight.php/Highlight/languages/ceylon.json deleted file mode 100644 index 4917d5e50..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ceylon.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "keywords": { - "keyword": "assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small", - "meta": "doc by license see throws tagged" - }, - "illegal": "\\$[^01]|#[^0-9a-fA-F]", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "@[a-z]\\w*(?:\\:\"[^\"]*\")?" - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"", - "relevance": 10 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "className": "subst", - "excludeBegin": true, - "excludeEnd": true, - "begin": "``", - "end": "``", - "keywords": "assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty", - "relevance": 10, - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "className": "number", - "begin": "#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?", - "relevance": 0 - } - ] - } - ] - }, - { - "$ref": "#contains.4.contains.0.contains.2" - }, - { - "$ref": "#contains.4.contains.0.contains.3" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/clean.json b/vendor/scrivo/highlight.php/Highlight/languages/clean.json deleted file mode 100644 index 52f45f4ae..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/clean.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "aliases": [ - "clean", - "icl", - "dcl" - ], - "keywords": { - "keyword": "if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr", - "built_in": "Int Real Char Bool", - "literal": "True False" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "begin": "->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/clojure-repl.json b/vendor/scrivo/highlight.php/Highlight/languages/clojure-repl.json deleted file mode 100644 index c6bfb1e69..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/clojure-repl.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "contains": [ - { - "className": "meta", - "begin": "^([\\w.-]+|\\s*#_)?=>", - "starts": { - "end": "$", - "subLanguage": "clojure" - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/clojure.json b/vendor/scrivo/highlight.php/Highlight/languages/clojure.json deleted file mode 100644 index 5a441e9ac..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/clojure.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "aliases": [ - "clj" - ], - "illegal": "\\S", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "className": "comment", - "begin": "comment", - "end": "", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "keywords": { - "builtin-name": "def defonce cond apply if-not if-let if not not= = < > <= >= == + \/ * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" - }, - "lexemes": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "className": "name", - "begin": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "starts": { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\^[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*" - }, - { - "className": "comment", - "begin": "\\^\\{", - "end": "\\}", - "contains": [ - { - "begin": "[\\[\\{]", - "end": "[\\]\\}]", - "contains": { - "$ref": "#contains.0.contains.1.starts.contains" - } - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "begin": "[:]{1,2}[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.3.contains.0" - }, - { - "className": "number", - "begin": "[-+]?\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "literal", - "begin": "\\b(true|false|nil)\\b" - }, - { - "begin": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "relevance": 0 - } - ] - } - }, - { - "$ref": "#contains.0.contains.1.starts" - } - ] - }, - { - "$ref": "#contains.0.contains.1.starts.contains.1" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.2" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.3" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.4" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.5" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.3.contains.0" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.7" - }, - { - "$ref": "#contains.0.contains.1.starts.contains.8" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/cmake.json b/vendor/scrivo/highlight.php/Highlight/languages/cmake.json deleted file mode 100644 index e2aa0080a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/cmake.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "aliases": [ - "cmake.in" - ], - "case_insensitive": true, - "keywords": { - "keyword": "break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" - }, - "contains": [ - { - "className": "variable", - "begin": "\\${", - "end": "}" - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/coffeescript.json b/vendor/scrivo/highlight.php/Highlight/languages/coffeescript.json deleted file mode 100644 index 83da59f96..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/coffeescript.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "aliases": [ - "coffee", - "cson", - "iced" - ], - "keywords": { - "keyword": "in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not", - "literal": "true false null undefined yes no on off", - "built_in": "npm require console print module global window document" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0, - "starts": { - "end": "(\\s*\/)?", - "relevance": 0 - } - }, - { - "className": "string", - "variants": [ - { - "begin": "'''", - "end": "'''", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - } - ] - }, - { - "begin": "\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - }, - { - "className": "subst", - "begin": "#\\{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "className": "regexp", - "variants": [ - { - "begin": "\/\/\/", - "end": "\/\/\/", - "contains": [ - { - "$ref": "#contains.2.variants.2.contains.1" - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "\/\/[gim]{0,3}(?=\\W)", - "relevance": 0 - }, - { - "begin": "\\\/(?![ *]).*?(?![\\\\]).\\\/[gim]{0,3}(?=\\W)" - } - ] - }, - { - "begin": "@[A-Za-z$_][0-9A-Za-z$_]*" - }, - { - "subLanguage": "javascript", - "excludeBegin": true, - "excludeEnd": true, - "variants": [ - { - "begin": "```", - "end": "```" - }, - { - "begin": "`", - "end": "`" - } - ] - } - ] - } - ] - }, - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - }, - { - "$ref": "#contains.2.variants.2.contains.1" - } - ] - } - ] - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.4" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.5" - }, - { - "className": "comment", - "begin": "###", - "end": "###", - "contains": [ - { - "$ref": "#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1" - }, - { - "className": "function", - "begin": "^\\s*[A-Za-z$_][0-9A-Za-z$_]*\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>", - "end": "[-=]>", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\([^\\(]", - "returnBegin": true, - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.4" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.5" - } - ] - } - ] - } - ] - }, - { - "begin": "[:\\(,=]\\s*", - "relevance": 0, - "contains": [ - { - "className": "function", - "begin": "(\\(.*\\))?\\s*\\B[-=]>", - "end": "[-=]>", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.8.contains.1" - } - ] - } - ] - }, - { - "className": "class", - "beginKeywords": "class", - "end": "$", - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends", - "endsWithParent": true, - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "$ref": "#contains.8.contains.0" - } - ] - }, - { - "$ref": "#contains.8.contains.0" - } - ] - }, - { - "begin": "[A-Za-z$_][0-9A-Za-z$_]*:", - "end": ":", - "returnBegin": true, - "returnEnd": true, - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/coq.json b/vendor/scrivo/highlight.php/Highlight/languages/coq.json deleted file mode 100644 index 0c31fc061..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/coq.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "keywords": { - "keyword": "_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with", - "built_in": "abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "type", - "excludeBegin": true, - "begin": "\\|\\s*", - "end": "\\w+" - }, - { - "begin": "[-=]>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/cos.json b/vendor/scrivo/highlight.php/Highlight/languages/cos.json deleted file mode 100644 index 511fffc31..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/cos.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "cos", - "cls" - ], - "keywords": "property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii", - "contains": [ - { - "className": "number", - "begin": "\\b(\\d+(\\.\\d*)?|\\.\\d+)", - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "relevance": 0 - }, - { - "className": "built_in", - "begin": "(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+" - }, - { - "className": "built_in", - "begin": "\\$\\$\\$[a-zA-Z]+" - }, - { - "className": "built_in", - "begin": "%[a-z]+(?:\\.[a-z]+)*" - }, - { - "className": "symbol", - "begin": "\\^%?[a-zA-Z][\\w]*" - }, - { - "className": "keyword", - "begin": "##class|##super|#define|#dim" - }, - { - "begin": "&sql\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "subLanguage": "sql" - }, - { - "begin": "&(js|jscript|javascript)<", - "end": ">", - "excludeBegin": true, - "excludeEnd": true, - "subLanguage": "javascript" - }, - { - "begin": "&html<\\s*<", - "end": ">\\s*>", - "subLanguage": "xml" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/cpp.json b/vendor/scrivo/highlight.php/Highlight/languages/cpp.json deleted file mode 100644 index 2e40160ce..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/cpp.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "aliases": [ - "c", - "cc", - "h", - "c++", - "h++", - "hpp", - "hh", - "hxx", - "cxx" - ], - "keywords": { - "keyword": "int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq", - "built_in": "std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary", - "literal": "true false nullptr NULL" - }, - "illegal": "<\/", - "contains": [ - { - "variants": [ - { - "begin": "=", - "end": ";" - }, - { - "begin": "\\(", - "end": "\\)" - }, - { - "beginKeywords": "new throw return else", - "end": ";" - } - ], - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "keyword", - "begin": "\\b[a-z\\d_]*_t\\b" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0b[01']+)" - }, - { - "begin": "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" - } - ], - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "(u8?|U|L)?\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", - "end": "'", - "illegal": "." - }, - { - "begin": "(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\((?:.|\\n)*?\\)\\1\"" - } - ] - }, - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - "self" - ], - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "function", - "begin": "((decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<.*?>)?)[\\*&\\s]+)+(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "end": "[{;=]", - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "illegal": "[^\\w\\s\\*&:<>]", - "contains": [ - { - "begin": "decltype\\(auto\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0 - }, - { - "begin": "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - "self", - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.0" - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "meta", - "begin": "#\\s*[a-z]+\\b", - "end": "$", - "keywords": { - "meta-keyword": "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "className": "meta-string", - "variants": { - "$ref": "#contains.0.contains.4.variants" - } - }, - { - "className": "meta-string", - "begin": "<.*?>", - "end": "$", - "illegal": "\\n" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.1.contains.6" - }, - { - "begin": "\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<", - "end": ">", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "begin": "[a-zA-Z]\\w*::", - "keywords": { - "$ref": "#keywords" - } - }, - { - "className": "class", - "beginKeywords": "class struct", - "end": "[{;:]", - "contains": [ - { - "begin": "<", - "end": ">", - "contains": [ - "self" - ] - }, - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - } - ], - "exports": { - "preprocessor": { - "$ref": "#contains.1.contains.6" - }, - "strings": { - "$ref": "#contains.0.contains.4" - }, - "keywords": { - "$ref": "#keywords" - } - } -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/crmsh.json b/vendor/scrivo/highlight.php/Highlight/languages/crmsh.json deleted file mode 100644 index baad09630..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/crmsh.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "aliases": [ - "crm", - "pcmk" - ], - "case_insensitive": true, - "keywords": { - "keyword": "params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string", - "literal": "Master Started Slave Stopped start promote demote stop monitor true false" - }, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "node", - "starts": { - "end": "\\s*([\\w_\\-]+:)?", - "starts": { - "className": "title", - "end": "\\s*[\\$\\w_][\\w_\\-]*" - } - } - }, - { - "beginKeywords": "primitive rsc_template", - "starts": { - "className": "title", - "end": "\\s*[\\$\\w_][\\w_\\-]*", - "starts": { - "end": "\\s*@?[\\w_][\\w_\\.:-]*" - } - } - }, - { - "begin": "\\b(group|clone|ms|master|location|colocation|order|fencing_topology|rsc_ticket|acl_target|acl_group|user|role|tag|xml)\\s+", - "keywords": "group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml", - "starts": { - "className": "title", - "end": "[\\$\\w_][\\w_\\-]*" - } - }, - { - "beginKeywords": "property rsc_defaults op_defaults", - "starts": { - "className": "title", - "end": "\\s*([\\w_\\-]+:)?" - } - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "(ocf|systemd|service|lsb):[\\w_:-]+", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(ms|s|h|m)?", - "relevance": 0 - }, - { - "className": "literal", - "begin": "[-]?(infinity|inf)", - "relevance": 0 - }, - { - "className": "attr", - "begin": "([A-Za-z\\$_\\#][\\w_\\-]+)=", - "relevance": 0 - }, - { - "className": "tag", - "begin": "<\/?", - "end": "\/?>", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/crystal.json b/vendor/scrivo/highlight.php/Highlight/languages/crystal.json deleted file mode 100644 index b1ed20c21..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/crystal.json +++ /dev/null @@ -1,482 +0,0 @@ -{ - "aliases": [ - "cr" - ], - "lexemes": "[a-zA-Z_]\\w*[!?=]?", - "keywords": { - "keyword": "abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__", - "literal": "false nil true" - }, - "contains": [ - { - "className": "template-variable", - "variants": [ - { - "begin": "\\{\\{", - "end": "\\}\\}" - }, - { - "begin": "\\{%", - "end": "%\\}" - } - ], - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "#{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains" - } - } - ], - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "`", - "end": "`" - }, - { - "begin": "%[Qwi]?\\(", - "end": "\\)", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": { - "$ref": "#contains.0.contains.0.variants.3.contains" - } - } - ] - }, - { - "begin": "%[Qwi]?\\[", - "end": "\\]", - "contains": [ - { - "begin": "\\[", - "end": "\\]", - "contains": { - "$ref": "#contains.0.contains.0.variants.4.contains" - } - } - ] - }, - { - "begin": "%[Qwi]?{", - "end": "}", - "contains": [ - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains.0.contains.0.variants.5.contains" - } - } - ] - }, - { - "begin": "%[Qwi]?<", - "end": ">", - "contains": [ - { - "begin": "<", - "end": ">", - "contains": { - "$ref": "#contains.0.contains.0.variants.6.contains" - } - } - ] - }, - { - "begin": "%[Qwi]?\\|", - "end": "\\|" - }, - { - "begin": "<<-\\w+$", - "end": "^\\s*\\w+$" - } - ], - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "%q\\(", - "end": "\\)", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": { - "$ref": "#contains.0.contains.1.variants.0.contains" - } - } - ] - }, - { - "begin": "%q\\[", - "end": "\\]", - "contains": [ - { - "begin": "\\[", - "end": "\\]", - "contains": { - "$ref": "#contains.0.contains.1.variants.1.contains" - } - } - ] - }, - { - "begin": "%q{", - "end": "}", - "contains": [ - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains.0.contains.1.variants.2.contains" - } - } - ] - }, - { - "begin": "%q<", - "end": ">", - "contains": [ - { - "begin": "<", - "end": ">", - "contains": { - "$ref": "#contains.0.contains.1.variants.3.contains" - } - } - ] - }, - { - "begin": "%q\\|", - "end": "\\|" - }, - { - "begin": "<<-'\\w+'$", - "end": "^\\s*\\w+$" - } - ], - "relevance": 0 - }, - { - "className": "regexp", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ], - "variants": [ - { - "begin": "%r\\(", - "end": "\\)", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": { - "$ref": "#contains.0.contains.2.variants.0.contains" - } - } - ] - }, - { - "begin": "%r\\[", - "end": "\\]", - "contains": [ - { - "begin": "\\[", - "end": "\\]", - "contains": { - "$ref": "#contains.0.contains.2.variants.1.contains" - } - } - ] - }, - { - "begin": "%r{", - "end": "}", - "contains": [ - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains.0.contains.2.variants.2.contains" - } - } - ] - }, - { - "begin": "%r<", - "end": ">", - "contains": [ - { - "begin": "<", - "end": ">", - "contains": { - "$ref": "#contains.0.contains.2.variants.3.contains" - } - } - ] - }, - { - "begin": "%r\\|", - "end": "\\|" - } - ], - "relevance": 0 - }, - { - "begin": "(?!%})(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*", - "keywords": "case if select unless until when while", - "contains": [ - { - "className": "regexp", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ], - "variants": [ - { - "begin": "\/\/[a-z]*", - "relevance": 0 - }, - { - "begin": "\/(?!\\\/)", - "end": "\/[a-z]*" - } - ] - } - ], - "relevance": 0 - }, - { - "className": "meta", - "begin": "@\\[", - "end": "\\]", - "contains": [ - { - "className": "meta-string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "class module struct", - "end": "$|;", - "illegal": "=", - "contains": [ - { - "$ref": "#contains.0.contains.5" - }, - { - "className": "title", - "begin": "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?", - "relevance": 0 - }, - { - "begin": "<" - } - ] - }, - { - "className": "class", - "beginKeywords": "lib enum union", - "end": "$|;", - "illegal": "=", - "contains": [ - { - "$ref": "#contains.0.contains.5" - }, - { - "className": "title", - "begin": "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "beginKeywords": "annotation", - "end": "$|;", - "illegal": "=", - "contains": [ - { - "$ref": "#contains.0.contains.5" - }, - { - "className": "title", - "begin": "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "function", - "beginKeywords": "def", - "end": "\\B\\b", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~|]|\/\/|\/\/=|&[-+*]=?|&\\*\\*|\\[\\][=?]?", - "relevance": 0, - "endsParent": true - } - ] - }, - { - "className": "function", - "beginKeywords": "fun macro", - "end": "\\B\\b", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~|]|\/\/|\/\/=|&[-+*]=?|&\\*\\*|\\[\\][=?]?", - "relevance": 0, - "endsParent": true - } - ], - "relevance": 5 - }, - { - "className": "symbol", - "begin": "[a-zA-Z_]\\w*(\\!|\\?)?:", - "relevance": 0 - }, - { - "className": "symbol", - "begin": ":", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~|]|\/\/|\/\/=|&[-+*]=?|&\\*\\*|\\[\\][=?]?" - } - ], - "relevance": 0 - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b0b([01_]+)(_*[ui](8|16|32|64|128))?" - }, - { - "begin": "\\b0o([0-7_]+)(_*[ui](8|16|32|64|128))?" - }, - { - "begin": "\\b0x([A-Fa-f0-9_]+)(_*[ui](8|16|32|64|128))?" - }, - { - "begin": "\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)" - }, - { - "begin": "\\b([1-9][0-9_]*|0)(_*[ui](8|16|32|64|128))?" - } - ], - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.6" - }, - { - "$ref": "#contains.0.contains.7" - }, - { - "$ref": "#contains.0.contains.8" - }, - { - "$ref": "#contains.0.contains.9" - }, - { - "$ref": "#contains.0.contains.10" - }, - { - "$ref": "#contains.0.contains.11" - }, - { - "$ref": "#contains.0.contains.12" - }, - { - "$ref": "#contains.0.contains.13" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/cs.json b/vendor/scrivo/highlight.php/Highlight/languages/cs.json deleted file mode 100644 index f660a6011..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/cs.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "aliases": [ - "csharp", - "c#" - ], - "keywords": { - "keyword": "abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield", - "literal": "null false true" - }, - "illegal": "::", - "contains": [ - { - "className": "comment", - "begin": "\/\/\/", - "end": "$", - "contains": [ - { - "className": "doctag", - "variants": [ - { - "begin": "\/\/\/", - "relevance": 0 - }, - { - "begin": "<!--|-->" - }, - { - "begin": "<\/?", - "end": ">" - } - ] - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "returnBegin": true - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "if else elif endif define undef warning error line region endregion pragma checksum" - } - }, - { - "variants": [ - { - "className": "string", - "begin": "\\$@\"", - "end": "\"", - "contains": [ - { - "begin": "{{" - }, - { - "begin": "}}" - }, - { - "begin": "\"\"" - }, - { - "className": "subst", - "begin": "{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.4.variants.0" - }, - { - "className": "string", - "begin": "\\$\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "{{" - }, - { - "begin": "}}" - }, - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "illegal": "\\n", - "contains": [ - { - "className": "string", - "begin": "\\$@\"", - "end": "\"", - "contains": [ - { - "begin": "{{" - }, - { - "begin": "}}" - }, - { - "begin": "\"\"" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3" - } - ], - "illegal": "\\n" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1" - }, - { - "className": "string", - "begin": "@\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"" - } - ], - "illegal": "\\n" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.2" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.2" - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0b[01']+)" - }, - { - "begin": "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": { - "$ref": "#contains.2.contains" - }, - "illegal": "\\n" - } - ] - } - ] - }, - { - "className": "string", - "begin": "@\"", - "end": "\"", - "contains": { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.2.contains" - } - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.3" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.4" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5" - }, - { - "$ref": "#contains.2" - } - ] - } - ] - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.2" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.3" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.4" - } - ] - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5" - }, - { - "beginKeywords": "class interface", - "end": "[{;=]", - "illegal": "[^\\s:,]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "beginKeywords": "namespace", - "end": "[{;=]", - "illegal": "[^\\s:]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z](\\.?\\w)*", - "relevance": 0 - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "meta", - "begin": "^\\s*\\[", - "excludeBegin": true, - "end": "\\]", - "excludeEnd": true, - "contains": [ - { - "className": "meta-string", - "begin": "\"", - "end": "\"" - } - ] - }, - { - "beginKeywords": "new return throw await else", - "relevance": 0 - }, - { - "className": "function", - "begin": "([a-zA-Z]\\w*(<[a-zA-Z]\\w*(\\s*,\\s*[a-zA-Z]\\w*)*>)?(\\[\\])?\\s+)+[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "end": "\\s*[{;=]", - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "begin": "[a-zA-Z]\\w*\\s*\\(", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ], - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/csp.json b/vendor/scrivo/highlight.php/Highlight/languages/csp.json deleted file mode 100644 index 73c8f3c2a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/csp.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "case_insensitive": false, - "lexemes": "[a-zA-Z][a-zA-Z0-9_\\-]*", - "keywords": { - "keyword": "base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src" - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "className": "attribute", - "begin": "^Content", - "end": ":", - "excludeEnd": true - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/css.json b/vendor/scrivo/highlight.php/Highlight/languages/css.json deleted file mode 100644 index 449207e2a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/css.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "[=\\\/|'\\$]", - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "selector-id", - "begin": "#[A-Za-z0-9_\\-]+" - }, - { - "className": "selector-class", - "begin": "\\.[A-Za-z0-9_\\-]+" - }, - { - "className": "selector-attr", - "begin": "\\[", - "end": "\\]", - "illegal": "$", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0.contains.0" - } - ] - } - ] - }, - { - "className": "selector-pseudo", - "begin": ":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+" - }, - { - "begin": "@(page|font-face)", - "lexemes": "@[a-z\\-]+", - "keywords": "@page @font-face" - }, - { - "begin": "@", - "end": "[{;]", - "illegal": ":", - "returnBegin": true, - "contains": [ - { - "className": "keyword", - "begin": "@\\-?\\w[\\w]*(\\-\\w+)*" - }, - { - "begin": "\\s", - "endsWithParent": true, - "excludeEnd": true, - "relevance": 0, - "keywords": "and or not only", - "contains": [ - { - "begin": "[a-z\\-]+:", - "className": "attribute" - }, - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.3.contains.1" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "selector-tag", - "begin": "[a-zA-Z\\-][a-zA-Z0-9_\\-]*", - "relevance": 0 - }, - { - "begin": "{", - "end": "}", - "illegal": "\\S", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "begin": "(?:[A-Z\\_\\.\\-]+|--[a-zA-Z0-9_\\-]+)\\s*:", - "returnBegin": true, - "end": ";", - "endsWithParent": true, - "contains": [ - { - "className": "attribute", - "begin": "\\S", - "end": ":", - "excludeEnd": true, - "starts": { - "endsWithParent": true, - "excludeEnd": true, - "contains": [ - { - "begin": "[\\w\\-]+\\(", - "returnBegin": true, - "contains": [ - { - "className": "built_in", - "begin": "[\\w\\-]+" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.3.contains.1" - }, - { - "$ref": "#contains.6.contains.1.contains.3" - } - ] - } - ] - }, - { - "$ref": "#contains.6.contains.1.contains.3" - }, - { - "$ref": "#contains.3.contains.1" - }, - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.0" - }, - { - "className": "number", - "begin": "#[0-9A-Fa-f]+" - }, - { - "className": "meta", - "begin": "!important" - } - ] - } - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/d.json b/vendor/scrivo/highlight.php/Highlight/languages/d.json deleted file mode 100644 index 03eb6b4c2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/d.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "lexemes": "[a-zA-Z_]\\w*", - "keywords": { - "keyword": "abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__", - "built_in": "bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring", - "literal": "false null true" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\\/\\+", - "end": "\\+\\\/", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "string", - "begin": "x\"[\\da-fA-F\\s\\n\\r]*\"[cwd]?", - "relevance": 10 - }, - { - "className": "string", - "begin": "\"", - "contains": [ - { - "begin": "\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};", - "relevance": 0 - } - ], - "end": "\"[cwd]?" - }, - { - "className": "string", - "begin": "[rq]\"", - "end": "\"[cwd]?", - "relevance": 5 - }, - { - "className": "string", - "begin": "`", - "end": "`[cwd]?" - }, - { - "className": "string", - "begin": "q\"\\{", - "end": "\\}\"" - }, - { - "className": "number", - "begin": "\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))(i|[fF]i|Li))", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))(L|u|U|Lu|LU|uL|UL)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "'(\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};|.)", - "end": "'", - "illegal": "." - }, - { - "className": "meta", - "begin": "^#!", - "end": "$", - "relevance": 5 - }, - { - "className": "meta", - "begin": "#(line)", - "end": "$", - "relevance": 5 - }, - { - "className": "keyword", - "begin": "@[a-zA-Z_][a-zA-Z_\\d]*" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dart.json b/vendor/scrivo/highlight.php/Highlight/languages/dart.json deleted file mode 100644 index 982c08d57..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dart.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "keywords": { - "keyword": "abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield", - "built_in": "Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window" - }, - "contains": [ - { - "className": "string", - "variants": [ - { - "begin": "r'''", - "end": "'''" - }, - { - "begin": "r\"\"\"", - "end": "\"\"\"" - }, - { - "begin": "r'", - "end": "'", - "illegal": "\\n" - }, - { - "begin": "r\"", - "end": "\"", - "illegal": "\\n" - }, - { - "begin": "'''", - "end": "'''", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "variants": [ - { - "begin": "\\$[A-Za-z0-9_]+" - } - ] - }, - { - "className": "subst", - "variants": [ - { - "begin": "\\${", - "end": "}" - } - ], - "keywords": "true false null this is new super", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.0" - } - ] - } - ] - }, - { - "begin": "\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.0.variants.4.contains.0" - }, - { - "$ref": "#contains.0.variants.4.contains.1" - }, - { - "$ref": "#contains.0.variants.4.contains.2" - } - ] - }, - { - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.variants.4.contains.0" - }, - { - "$ref": "#contains.0.variants.4.contains.1" - }, - { - "$ref": "#contains.0.variants.4.contains.2" - } - ] - }, - { - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.variants.4.contains.0" - }, - { - "$ref": "#contains.0.variants.4.contains.1" - }, - { - "$ref": "#contains.0.variants.4.contains.2" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "subLanguage": "markdown" - }, - { - "className": "comment", - "begin": "\/\/\/+\\s*", - "end": "$", - "contains": [ - { - "subLanguage": "markdown", - "begin": ".", - "end": "$" - }, - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "{", - "excludeEnd": true, - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.variants.4.contains.2.contains.0" - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - }, - { - "begin": "=>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/delphi.json b/vendor/scrivo/highlight.php/Highlight/languages/delphi.json deleted file mode 100644 index d4aef7734..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/delphi.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "aliases": [ - "dpr", - "dfm", - "pas", - "pascal", - "freepascal", - "lazarus", - "lpr", - "lfm" - ], - "case_insensitive": true, - "keywords": "exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ", - "illegal": "\"|\\$[G-Zg-z]|\\\/\\*|<\\\/|\\|", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''" - } - ] - }, - { - "className": "string", - "begin": "(#\\d+)+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "begin": "[a-zA-Z]\\w*\\s*=\\s*class\\s*\\(", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "function", - "beginKeywords": "function constructor destructor procedure", - "end": "[:;]", - "keywords": "function constructor|10 destructor|10 procedure|10", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": "exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "className": "meta", - "variants": [ - { - "begin": "\\{\\$", - "end": "\\}" - }, - { - "begin": "\\(\\*\\$", - "end": "\\*\\)" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\{", - "end": "\\}", - "contains": [ - { - "$ref": "#contains.4.contains.1.contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "$ref": "#contains.4.contains.1.contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - } - ] - }, - { - "$ref": "#contains.4.contains.1.contains.2" - }, - { - "$ref": "#contains.4.contains.1.contains.3" - }, - { - "$ref": "#contains.4.contains.1.contains.4" - }, - { - "$ref": "#contains.4.contains.1.contains.5" - } - ] - }, - { - "$ref": "#contains.4.contains.1.contains.2" - }, - { - "$ref": "#contains.4.contains.1.contains.3" - }, - { - "$ref": "#contains.4.contains.1.contains.4" - }, - { - "$ref": "#contains.4.contains.1.contains.5" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/diff.json b/vendor/scrivo/highlight.php/Highlight/languages/diff.json deleted file mode 100644 index e2f712910..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/diff.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "aliases": [ - "patch" - ], - "contains": [ - { - "className": "meta", - "relevance": 10, - "variants": [ - { - "begin": "^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$" - }, - { - "begin": "^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$" - }, - { - "begin": "^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$" - } - ] - }, - { - "className": "comment", - "variants": [ - { - "begin": "Index: ", - "end": "$" - }, - { - "begin": "={3,}", - "end": "$" - }, - { - "begin": "^\\-{3}", - "end": "$" - }, - { - "begin": "^\\*{3} ", - "end": "$" - }, - { - "begin": "^\\+{3}", - "end": "$" - }, - { - "begin": "^\\*{15}$" - } - ] - }, - { - "className": "addition", - "begin": "^\\+", - "end": "$" - }, - { - "className": "deletion", - "begin": "^\\-", - "end": "$" - }, - { - "className": "addition", - "begin": "^\\!", - "end": "$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/django.json b/vendor/scrivo/highlight.php/Highlight/languages/django.json deleted file mode 100644 index 66319f17a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/django.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "aliases": [ - "jinja" - ], - "case_insensitive": true, - "subLanguage": "xml", - "contains": [ - { - "className": "comment", - "begin": "\\{%\\s*comment\\s*%}", - "end": "\\{%\\s*endcomment\\s*%}", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\{#", - "end": "#}", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "template-tag", - "begin": "\\{%", - "end": "%}", - "contains": [ - { - "className": "name", - "begin": "\\w+", - "keywords": { - "name": "comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" - }, - "starts": { - "endsWithParent": true, - "keywords": "in by as", - "contains": [ - { - "begin": "\\|[A-Za-z]+:?", - "keywords": { - "name": "truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0.starts.contains.0.contains.0.contains.0" - } - ] - } - ] - } - ], - "relevance": 0 - } - } - ] - }, - { - "className": "template-variable", - "begin": "\\{\\{", - "end": "}}", - "contains": [ - { - "$ref": "#contains.2.contains.0.starts.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dns.json b/vendor/scrivo/highlight.php/Highlight/languages/dns.json deleted file mode 100644 index cdf0bface..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dns.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "aliases": [ - "bind", - "zone" - ], - "keywords": { - "keyword": "IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT" - }, - "contains": [ - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "meta", - "begin": "^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b" - }, - { - "className": "number", - "begin": "((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b" - }, - { - "className": "number", - "begin": "((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b" - }, - { - "className": "number", - "begin": "\\b\\d+[dhwm]?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dockerfile.json b/vendor/scrivo/highlight.php/Highlight/languages/dockerfile.json deleted file mode 100644 index b2be955c9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dockerfile.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "aliases": [ - "docker" - ], - "case_insensitive": true, - "keywords": "from maintainer expose env arg user onbuild stopsignal", - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "beginKeywords": "run cmd entrypoint volume add copy workdir label healthcheck shell", - "starts": { - "end": "[^\\\\]$", - "subLanguage": "bash" - } - } - ], - "illegal": "<\/" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dos.json b/vendor/scrivo/highlight.php/Highlight/languages/dos.json deleted file mode 100644 index 822478fc2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dos.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "aliases": [ - "bat", - "cmd" - ], - "case_insensitive": true, - "illegal": "\\\/\\*", - "keywords": { - "keyword": "if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", - "built_in": "prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" - }, - "contains": [ - { - "className": "variable", - "begin": "%%[^ ]|%[^ ]+?%|![^ ]+?!" - }, - { - "className": "function", - "begin": "^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", - "end": "goto:eof", - "contains": [ - { - "className": "title", - "begin": "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "comment", - "begin": "^\\s*@?rem\\b", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+", - "relevance": 0 - }, - { - "$ref": "#contains.1.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dsconfig.json b/vendor/scrivo/highlight.php/Highlight/languages/dsconfig.json deleted file mode 100644 index e034969f1..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dsconfig.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "keywords": "dsconfig", - "contains": [ - { - "className": "keyword", - "begin": "^dsconfig", - "end": "\\s", - "excludeEnd": true, - "relevance": 10 - }, - { - "className": "built_in", - "begin": "(list|create|get|set|delete)-(\\w+)", - "end": "\\s", - "excludeEnd": true, - "illegal": "!@#$%^&*()", - "relevance": 10 - }, - { - "className": "built_in", - "begin": "--(\\w+)", - "end": "\\s", - "excludeEnd": true - }, - { - "className": "string", - "begin": "\"", - "end": "\"" - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "className": "string", - "begin": "[\\w\\-?]+:\\w+", - "end": "\\W", - "relevance": 0 - }, - { - "className": "string", - "begin": "\\w+-?\\w+", - "end": "\\W", - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dts.json b/vendor/scrivo/highlight.php/Highlight/languages/dts.json deleted file mode 100644 index ec84846d9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dts.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "keywords": "", - "contains": [ - { - "className": "class", - "begin": "\/\\s*{", - "end": "};", - "relevance": 10, - "contains": [ - { - "className": "variable", - "begin": "\\&[a-z\\d_]*\\b" - }, - { - "className": "meta-keyword", - "begin": "\/[a-z][a-z\\d\\-]*\/" - }, - { - "className": "symbol", - "begin": "^\\s*[a-zA-Z_][a-zA-Z\\d_]*:" - }, - { - "className": "class", - "begin": "[a-zA-Z_][a-zA-Z\\d_@]*\\s{", - "end": "[{;=]", - "returnBegin": true, - "excludeEnd": true - }, - { - "className": "params", - "begin": "<", - "end": ">", - "contains": [ - { - "className": "number", - "variants": [ - { - "begin": "\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" - } - ], - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.5.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.4.contains.0" - }, - { - "className": "string", - "variants": [ - { - "className": "string", - "begin": "((u8?|U)|L)?\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "(u8?|U)?R\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.0.contains.8.variants.0.contains.0" - } - ] - }, - { - "begin": "'\\\\?.", - "end": "'", - "illegal": "." - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.6" - }, - { - "$ref": "#contains.0.contains.4.contains.0" - }, - { - "$ref": "#contains.0.contains.8" - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "if else elif endif define undef ifdef ifndef" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "beginKeywords": "include", - "end": "$", - "keywords": { - "meta-keyword": "include" - }, - "contains": [ - { - "className": "meta-string", - "variants": { - "$ref": "#contains.0.contains.8.variants" - } - }, - { - "className": "meta-string", - "begin": "<", - "end": ">", - "illegal": "\\n" - } - ] - }, - { - "$ref": "#contains.0.contains.8" - }, - { - "$ref": "#contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.6" - } - ] - }, - { - "begin": "[a-zA-Z]\\w*::", - "keywords": "" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/dust.json b/vendor/scrivo/highlight.php/Highlight/languages/dust.json deleted file mode 100644 index 12f96ae0d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/dust.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "aliases": [ - "dst" - ], - "case_insensitive": true, - "subLanguage": "xml", - "contains": [ - { - "className": "template-tag", - "begin": "\\{[#\\\/]", - "end": "\\}", - "illegal": ";", - "contains": [ - { - "className": "name", - "begin": "[a-zA-Z\\.-]+", - "starts": { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - } - ] - } - } - ] - }, - { - "className": "template-variable", - "begin": "\\{", - "end": "\\}", - "illegal": ";", - "keywords": "if eq ne lt lte gt gte select default math sep" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ebnf.json b/vendor/scrivo/highlight.php/Highlight/languages/ebnf.json deleted file mode 100644 index 9ad36d815..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ebnf.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "illegal": "\\S", - "contains": [ - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "attribute", - "begin": "^[ ]*[a-zA-Z][a-zA-Z\\-_]*([\\s\\-_]+[a-zA-Z][a-zA-Z]*)*" - }, - { - "begin": "=", - "end": "[.;]", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "meta", - "begin": "\\?.*\\?" - }, - { - "className": "string", - "variants": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.2.variants.0.contains.0" - } - ] - }, - { - "begin": "`", - "end": "`" - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/elixir.json b/vendor/scrivo/highlight.php/Highlight/languages/elixir.json deleted file mode 100644 index 6373e0266..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/elixir.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "lexemes": "[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?", - "keywords": "and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0", - "contains": [ - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "#\\{", - "end": "}", - "lexemes": "[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?", - "keywords": "and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0", - "contains": { - "$ref": "#contains" - } - } - ], - "variants": [ - { - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "begin": "'''", - "end": "'''" - }, - { - "begin": "~S\"\"\"", - "end": "\"\"\"", - "contains": [] - }, - { - "begin": "~S\"", - "end": "\"", - "contains": [] - }, - { - "begin": "~S'''", - "end": "'''", - "contains": [] - }, - { - "begin": "~S'", - "end": "'", - "contains": [] - }, - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - } - ] - }, - { - "className": "string", - "begin": "~[A-Z](?=[\/|([{<\"'])", - "contains": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - }, - { - "begin": "\\\/", - "end": "\\\/" - }, - { - "begin": "\\|", - "end": "\\|" - }, - { - "begin": "\\(", - "end": "\\)" - }, - { - "begin": "\\[", - "end": "\\]" - }, - { - "begin": "\\{", - "end": "\\}" - }, - { - "begin": "\\<", - "end": "\\>" - } - ] - }, - { - "className": "string", - "begin": "~[a-z](?=[\/|([{<\"'])", - "contains": [ - { - "endsParent": true, - "contains": [ - { - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - } - ], - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - }, - { - "begin": "\\\/", - "end": "\\\/" - }, - { - "begin": "\\|", - "end": "\\|" - }, - { - "begin": "\\(", - "end": "\\)" - }, - { - "begin": "\\[", - "end": "\\]" - }, - { - "begin": "\\{", - "end": "\\}" - }, - { - "begin": "<", - "end": ">" - } - ] - } - ] - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "defimpl defmodule defprotocol defrecord", - "end": "\\bdo\\b|$|;", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?", - "relevance": 0, - "endsParent": true - } - ] - }, - { - "className": "function", - "beginKeywords": "def defp defmacro", - "end": "\\B\\b", - "contains": { - "$ref": "#contains.4.contains" - } - }, - { - "begin": "::" - }, - { - "className": "symbol", - "begin": ":(?![\\s:])", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~`|]|\\[\\]=?" - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "begin": "[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?:(?!:)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)", - "relevance": 0 - }, - { - "className": "variable", - "begin": "(\\$\\W)|((\\$|\\@\\@?)(\\w+))" - }, - { - "begin": "->" - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~)\\s*", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "className": "regexp", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - } - ], - "variants": [ - { - "begin": "\/", - "end": "\/[a-z]*" - }, - { - "begin": "%r\\[", - "end": "\\][a-z]*" - } - ] - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/elm.json b/vendor/scrivo/highlight.php/Highlight/languages/elm.json deleted file mode 100644 index 037957e68..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/elm.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "keywords": "let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription", - "contains": [ - { - "beginKeywords": "port effect module", - "end": "exposing", - "keywords": "port effect module where command subscription exposing", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "illegal": "\"", - "contains": [ - { - "className": "type", - "begin": "\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?" - }, - { - "variants": [ - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "{-", - "end": "-}", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0.contains.1.variants.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ], - "illegal": "\\W\\.|;" - }, - { - "begin": "import", - "end": "$", - "keywords": "import as exposing", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ], - "illegal": "\\W\\.|;" - }, - { - "begin": "type", - "end": "$", - "keywords": "type alias", - "contains": [ - { - "className": "type", - "begin": "\\b[A-Z][\\w']*", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ] - }, - { - "beginKeywords": "infix infixl infixr", - "end": "$", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0.contains.1" - } - ] - }, - { - "begin": "port", - "end": "$", - "keywords": "port", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.1" - } - ] - }, - { - "className": "string", - "begin": "'\\\\?.", - "end": "'", - "illegal": "." - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "title", - "begin": "^[_a-z][\\w']*", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0.contains.1" - }, - { - "begin": "->|<-" - } - ], - "illegal": ";" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/erb.json b/vendor/scrivo/highlight.php/Highlight/languages/erb.json deleted file mode 100644 index 558578594..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/erb.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "subLanguage": "xml", - "contains": [ - { - "className": "comment", - "begin": "<%#", - "end": "%>", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "<%[%=-]?", - "end": "[%-]?%>", - "subLanguage": "ruby", - "excludeBegin": true, - "excludeEnd": true - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/erlang-repl.json b/vendor/scrivo/highlight.php/Highlight/languages/erlang-repl.json deleted file mode 100644 index 8bba48832..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/erlang-repl.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "keywords": { - "built_in": "spawn spawn_link self", - "keyword": "after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor" - }, - "contains": [ - { - "className": "meta", - "begin": "^[0-9]+> ", - "relevance": 10 - }, - { - "className": "comment", - "begin": "%", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - }, - { - "begin": "\\?(::)?([A-Z]\\w*(::)?)+" - }, - { - "begin": "->" - }, - { - "begin": "ok" - }, - { - "begin": "!" - }, - { - "begin": "(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)", - "relevance": 0 - }, - { - "begin": "[A-Z][a-zA-Z0-9_']*", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/erlang.json b/vendor/scrivo/highlight.php/Highlight/languages/erlang.json deleted file mode 100644 index 9f27e2af9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/erlang.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "aliases": [ - "erl" - ], - "keywords": { - "keyword": "after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor", - "literal": "false true" - }, - "illegal": "(<\/|\\*=|\\+=|-=|\/\\*|\\*\/|\\(\\*|\\*\\))", - "contains": [ - { - "className": "function", - "begin": "^[a-z'][a-zA-Z0-9_']*\\s*\\(", - "end": "->", - "returnBegin": true, - "illegal": "\\(|#|\/\/|\/\\*|\\\\|:|;", - "contains": [ - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "className": "comment", - "begin": "%", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "fun\\s+[a-z'][a-zA-Z0-9_']*\/\\d+" - }, - { - "beginKeywords": "fun receive if try case", - "end": "end", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.1" - }, - { - "className": "", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.2" - }, - { - "begin": "([a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*|[a-z'][a-zA-Z0-9_']*)\\(", - "end": "\\)", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "begin": "([a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*|[a-z'][a-zA-Z0-9_']*)", - "relevance": 0 - }, - { - "begin": "\\(", - "end": "\\)", - "endsWithParent": true, - "returnEnd": true, - "relevance": 0, - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.2.contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "begin": "{", - "end": "}", - "relevance": 0, - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - }, - { - "begin": "\\b_([A-Z][A-Za-z0-9_]*)?", - "relevance": 0 - }, - { - "begin": "[A-Z][a-zA-Z0-9_]*", - "relevance": 0 - }, - { - "begin": "#[a-zA-Z_]\\w*", - "relevance": 0, - "returnBegin": true, - "contains": [ - { - "begin": "#[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "begin": "{", - "end": "}", - "relevance": 0, - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.4" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.5" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.6" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.7" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.8" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.9" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.10" - } - ] - }, - { - "className": "title", - "begin": "[a-z'][a-zA-Z0-9_']*", - "relevance": 0 - } - ], - "starts": { - "end": ";|\\.", - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - } - }, - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "begin": "^-", - "end": "\\.", - "relevance": 0, - "excludeEnd": true, - "returnBegin": true, - "lexemes": "-[a-zA-Z]\\w*", - "keywords": "-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.6" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.5" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.10" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.8" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.9" - }, - { - "$ref": "#contains.0.contains.0.contains.2.contains.7" - }, - { - "begin": "\\.$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/excel.json b/vendor/scrivo/highlight.php/Highlight/languages/excel.json deleted file mode 100644 index 81633bfcc..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/excel.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "aliases": [ - "xlsx", - "xls" - ], - "case_insensitive": true, - "lexemes": "[a-zA-Z][\\w\\.]*", - "keywords": { - "built_in": "ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST" - }, - "contains": [ - { - "begin": "^=", - "end": "[^=]", - "returnEnd": true, - "illegal": "=", - "relevance": 10 - }, - { - "className": "symbol", - "begin": "\\b[A-Z]{1,2}\\d+\\b", - "end": "[^\\d]", - "excludeEnd": true, - "relevance": 0 - }, - { - "className": "symbol", - "begin": "[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*", - "relevance": 0 - }, - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(%)?", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\bN\\(", - "end": "\\)", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "excludeBegin": true, - "excludeEnd": true, - "illegal": "\\n" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/fix.json b/vendor/scrivo/highlight.php/Highlight/languages/fix.json deleted file mode 100644 index b1d372b76..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/fix.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "contains": [ - { - "begin": "[^\\x{2401}\\x{0001}]+", - "end": "[\\x{2401}\\x{0001}]", - "excludeEnd": true, - "returnBegin": true, - "returnEnd": false, - "contains": [ - { - "begin": "([^\\x{2401}\\x{0001}=]+)", - "end": "=([^\\x{2401}\\x{0001}=]+)", - "returnEnd": true, - "returnBegin": false, - "className": "attr" - }, - { - "begin": "=", - "end": "([\\x{2401}\\x{0001}])", - "excludeEnd": true, - "excludeBegin": true, - "className": "string" - } - ] - } - ], - "case_insensitive": true -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/flix.json b/vendor/scrivo/highlight.php/Highlight/languages/flix.json deleted file mode 100644 index f72d64139..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/flix.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "keywords": { - "literal": "true false", - "keyword": "case class def else enum if impl import in lat rel index let match namespace switch type yield with" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'(.|\\\\[xXuU][a-zA-Z0-9]+)'" - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"" - } - ] - }, - { - "className": "function", - "beginKeywords": "def", - "end": "[:={\\[(\\n;]", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/fortran.json b/vendor/scrivo/highlight.php/Highlight/languages/fortran.json deleted file mode 100644 index 74deb1a7d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/fortran.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "f90", - "f95" - ], - "keywords": { - "literal": ".False. .True.", - "keyword": "kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data", - "built_in": "alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "subroutine function program", - "illegal": "[${=\\n]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)" - } - ] - }, - { - "className": "comment", - "begin": "!", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "number", - "begin": "(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/fsharp.json b/vendor/scrivo/highlight.php/Highlight/languages/fsharp.json deleted file mode 100644 index c7e5c05d3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/fsharp.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "aliases": [ - "fs" - ], - "keywords": "abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", - "illegal": "\\\/\\*", - "contains": [ - { - "className": "keyword", - "begin": "\\b(yield|return|let|do)!" - }, - { - "className": "string", - "begin": "@\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "type", - "end": "\\(|=|$", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "begin": "<", - "end": ">", - "contains": [ - { - "className": "title", - "begin": "'[a-zA-Z0-9_]+", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "meta", - "begin": "\\[<", - "end": ">\\]", - "relevance": 10 - }, - { - "className": "symbol", - "begin": "\\B('[A-Za-z])\\b", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gams.json b/vendor/scrivo/highlight.php/Highlight/languages/gams.json deleted file mode 100644 index a0fb9cb9e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gams.json +++ /dev/null @@ -1,286 +0,0 @@ -{ - "aliases": [ - "gms" - ], - "case_insensitive": true, - "keywords": { - "keyword": "abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes", - "literal": "eps inf na", - "built-in": "abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart" - }, - "contains": [ - { - "className": "comment", - "begin": "^\\$ontext", - "end": "^\\$offtext", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "^\\$[a-z0-9]+", - "end": "$", - "returnBegin": true, - "contains": [ - { - "className": "meta-keyword", - "begin": "^\\$[a-z0-9]+" - } - ] - }, - { - "className": "comment", - "begin": "^\\*", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.5.contains.0" - } - ] - }, - { - "beginKeywords": "set sets parameter parameters variable variables scalar scalars equation equations", - "end": ";", - "contains": [ - { - "className": "comment", - "begin": "^\\*", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - }, - { - "begin": "\/", - "end": "\/", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "comment", - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - } - ], - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.5.contains.0" - } - ] - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - }, - { - "begin": "[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+", - "excludeBegin": true, - "end": "$", - "endsWithParent": true, - "contains": [ - { - "$ref": "#contains.7.contains.5.contains.0" - }, - { - "$ref": "#contains.7.contains.5" - }, - { - "className": "comment", - "begin": "([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+", - "relevance": 0 - } - ] - } - ] - }, - { - "beginKeywords": "table", - "end": ";", - "returnBegin": true, - "contains": [ - { - "beginKeywords": "table", - "end": "$", - "contains": [ - { - "$ref": "#contains.7.contains.6" - } - ] - }, - { - "className": "comment", - "begin": "^\\*", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.7.contains.5.contains.5" - } - ] - }, - { - "className": "function", - "begin": "^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "^[a-z0-9_]+" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "symbol", - "variants": [ - { - "begin": "\\=[lgenxc]=" - }, - { - "begin": "\\$" - } - ] - } - ] - }, - { - "$ref": "#contains.7.contains.5.contains.5" - }, - { - "$ref": "#contains.9.contains.2" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gauss.json b/vendor/scrivo/highlight.php/Highlight/languages/gauss.json deleted file mode 100644 index adcd18cd5..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gauss.json +++ /dev/null @@ -1,281 +0,0 @@ -{ - "aliases": [ - "gss" - ], - "case_insensitive": true, - "keywords": { - "keyword": "bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv", - "built_in": "abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim", - "literal": "DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR" - }, - "illegal": "(\\{[%#]|[%#]\\}| <- )", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "@", - "end": "@", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "beginKeywords": "include", - "end": "$", - "keywords": { - "meta-keyword": "include" - }, - "contains": [ - { - "className": "meta-string", - "begin": "\"", - "end": "\"", - "illegal": "\\n" - } - ] - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - } - ] - }, - { - "className": "keyword", - "begin": "\\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)" - }, - { - "className": "function", - "beginKeywords": "proc keyword", - "end": ";", - "excludeEnd": true, - "contains": [ - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "className": "literal", - "begin": "\\.\\.\\." - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "begin": "\\bstruct\\s+", - "end": "\\s", - "keywords": "struct", - "contains": [ - { - "className": "type", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - } - ] - }, - { - "className": "function", - "beginKeywords": "fn", - "end": "=", - "excludeEnd": true, - "contains": [ - { - "$ref": "#contains.7.contains.0" - }, - { - "$ref": "#contains.7.contains.1" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - } - ] - }, - { - "beginKeywords": "for threadfor", - "end": ";", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "begin": "\\(", - "end": "\\)", - "relevance": 0, - "keywords": { - "built_in": "abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim", - "literal": "DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "className": "built_in", - "begin": "\\b(abs|acf|aconcat|aeye|amax|amean|AmericanBinomCall|AmericanBinomCall_Greeks|AmericanBinomCall_ImpVol|AmericanBinomPut|AmericanBinomPut_Greeks|AmericanBinomPut_ImpVol|AmericanBSCall|AmericanBSCall_Greeks|AmericanBSCall_ImpVol|AmericanBSPut|AmericanBSPut_Greeks|AmericanBSPut_ImpVol|amin|amult|annotationGetDefaults|annotationSetBkd|annotationSetFont|annotationSetLineColor|annotationSetLineStyle|annotationSetLineThickness|annualTradingDays|arccos|arcsin|areshape|arrayalloc|arrayindex|arrayinit|arraytomat|asciiload|asclabel|astd|astds|asum|atan|atan2|atranspose|axmargin|balance|band|bandchol|bandcholsol|bandltsol|bandrv|bandsolpd|bar|base10|begwind|besselj|bessely|beta|box|boxcox|cdfBeta|cdfBetaInv|cdfBinomial|cdfBinomialInv|cdfBvn|cdfBvn2|cdfBvn2e|cdfCauchy|cdfCauchyInv|cdfChic|cdfChii|cdfChinc|cdfChincInv|cdfExp|cdfExpInv|cdfFc|cdfFnc|cdfFncInv|cdfGam|cdfGenPareto|cdfHyperGeo|cdfLaplace|cdfLaplaceInv|cdfLogistic|cdfLogisticInv|cdfmControlCreate|cdfMvn|cdfMvn2e|cdfMvnce|cdfMvne|cdfMvt2e|cdfMvtce|cdfMvte|cdfN|cdfN2|cdfNc|cdfNegBinomial|cdfNegBinomialInv|cdfNi|cdfPoisson|cdfPoissonInv|cdfRayleigh|cdfRayleighInv|cdfTc|cdfTci|cdfTnc|cdfTvn|cdfWeibull|cdfWeibullInv|cdir|ceil|ChangeDir|chdir|chiBarSquare|chol|choldn|cholsol|cholup|chrs|close|code|cols|colsf|combinate|combinated|complex|con|cond|conj|cons|ConScore|contour|conv|convertsatostr|convertstrtosa|corrm|corrms|corrvc|corrx|corrxs|cos|cosh|counts|countwts|crossprd|crout|croutp|csrcol|csrlin|csvReadM|csvReadSA|cumprodc|cumsumc|curve|cvtos|datacreate|datacreatecomplex|datalist|dataload|dataloop|dataopen|datasave|date|datestr|datestring|datestrymd|dayinyr|dayofweek|dbAddDatabase|dbClose|dbCommit|dbCreateQuery|dbExecQuery|dbGetConnectOptions|dbGetDatabaseName|dbGetDriverName|dbGetDrivers|dbGetHostName|dbGetLastErrorNum|dbGetLastErrorText|dbGetNumericalPrecPolicy|dbGetPassword|dbGetPort|dbGetTableHeaders|dbGetTables|dbGetUserName|dbHasFeature|dbIsDriverAvailable|dbIsOpen|dbIsOpenError|dbOpen|dbQueryBindValue|dbQueryClear|dbQueryCols|dbQueryExecPrepared|dbQueryFetchAllM|dbQueryFetchAllSA|dbQueryFetchOneM|dbQueryFetchOneSA|dbQueryFinish|dbQueryGetBoundValue|dbQueryGetBoundValues|dbQueryGetField|dbQueryGetLastErrorNum|dbQueryGetLastErrorText|dbQueryGetLastInsertID|dbQueryGetLastQuery|dbQueryGetPosition|dbQueryIsActive|dbQueryIsForwardOnly|dbQueryIsNull|dbQueryIsSelect|dbQueryIsValid|dbQueryPrepare|dbQueryRows|dbQuerySeek|dbQuerySeekFirst|dbQuerySeekLast|dbQuerySeekNext|dbQuerySeekPrevious|dbQuerySetForwardOnly|dbRemoveDatabase|dbRollback|dbSetConnectOptions|dbSetDatabaseName|dbSetHostName|dbSetNumericalPrecPolicy|dbSetPort|dbSetUserName|dbTransaction|DeleteFile|delif|delrows|denseToSp|denseToSpRE|denToZero|design|det|detl|dfft|dffti|diag|diagrv|digamma|doswin|DOSWinCloseall|DOSWinOpen|dotfeq|dotfeqmt|dotfge|dotfgemt|dotfgt|dotfgtmt|dotfle|dotflemt|dotflt|dotfltmt|dotfne|dotfnemt|draw|drop|dsCreate|dstat|dstatmt|dstatmtControlCreate|dtdate|dtday|dttime|dttodtv|dttostr|dttoutc|dtvnormal|dtvtodt|dtvtoutc|dummy|dummybr|dummydn|eig|eigh|eighv|eigv|elapsedTradingDays|endwind|envget|eof|eqSolve|eqSolvemt|eqSolvemtControlCreate|eqSolvemtOutCreate|eqSolveset|erf|erfc|erfccplx|erfcplx|error|etdays|ethsec|etstr|EuropeanBinomCall|EuropeanBinomCall_Greeks|EuropeanBinomCall_ImpVol|EuropeanBinomPut|EuropeanBinomPut_Greeks|EuropeanBinomPut_ImpVol|EuropeanBSCall|EuropeanBSCall_Greeks|EuropeanBSCall_ImpVol|EuropeanBSPut|EuropeanBSPut_Greeks|EuropeanBSPut_ImpVol|exctsmpl|exec|execbg|exp|extern|eye|fcheckerr|fclearerr|feq|feqmt|fflush|fft|ffti|fftm|fftmi|fftn|fge|fgemt|fgets|fgetsa|fgetsat|fgetst|fgt|fgtmt|fileinfo|filesa|fle|flemt|floor|flt|fltmt|fmod|fne|fnemt|fonts|fopen|formatcv|formatnv|fputs|fputst|fseek|fstrerror|ftell|ftocv|ftos|ftostrC|gamma|gammacplx|gammaii|gausset|gdaAppend|gdaCreate|gdaDStat|gdaDStatMat|gdaGetIndex|gdaGetName|gdaGetNames|gdaGetOrders|gdaGetType|gdaGetTypes|gdaGetVarInfo|gdaIsCplx|gdaLoad|gdaPack|gdaRead|gdaReadByIndex|gdaReadSome|gdaReadSparse|gdaReadStruct|gdaReportVarInfo|gdaSave|gdaUpdate|gdaUpdateAndPack|gdaVars|gdaWrite|gdaWrite32|gdaWriteSome|getarray|getdims|getf|getGAUSShome|getmatrix|getmatrix4D|getname|getnamef|getNextTradingDay|getNextWeekDay|getnr|getorders|getpath|getPreviousTradingDay|getPreviousWeekDay|getRow|getscalar3D|getscalar4D|getTrRow|getwind|glm|gradcplx|gradMT|gradMTm|gradMTT|gradMTTm|gradp|graphprt|graphset|hasimag|header|headermt|hess|hessMT|hessMTg|hessMTgw|hessMTm|hessMTmw|hessMTT|hessMTTg|hessMTTgw|hessMTTm|hessMTw|hessp|hist|histf|histp|hsec|imag|indcv|indexcat|indices|indices2|indicesf|indicesfn|indnv|indsav|integrate1d|integrateControlCreate|intgrat2|intgrat3|inthp1|inthp2|inthp3|inthp4|inthpControlCreate|intquad1|intquad2|intquad3|intrleav|intrleavsa|intrsect|intsimp|inv|invpd|invswp|iscplx|iscplxf|isden|isinfnanmiss|ismiss|key|keyav|keyw|lag|lag1|lagn|lapEighb|lapEighi|lapEighvb|lapEighvi|lapgEig|lapgEigh|lapgEighv|lapgEigv|lapgSchur|lapgSvdcst|lapgSvds|lapgSvdst|lapSvdcusv|lapSvds|lapSvdusv|ldlp|ldlsol|linSolve|listwise|ln|lncdfbvn|lncdfbvn2|lncdfmvn|lncdfn|lncdfn2|lncdfnc|lnfact|lngammacplx|lnpdfmvn|lnpdfmvt|lnpdfn|lnpdft|loadd|loadstruct|loadwind|loess|loessmt|loessmtControlCreate|log|loglog|logx|logy|lower|lowmat|lowmat1|ltrisol|lu|lusol|machEpsilon|make|makevars|makewind|margin|matalloc|matinit|mattoarray|maxbytes|maxc|maxindc|maxv|maxvec|mbesselei|mbesselei0|mbesselei1|mbesseli|mbesseli0|mbesseli1|meanc|median|mergeby|mergevar|minc|minindc|minv|miss|missex|missrv|moment|momentd|movingave|movingaveExpwgt|movingaveWgt|nextindex|nextn|nextnevn|nextwind|ntos|null|null1|numCombinations|ols|olsmt|olsmtControlCreate|olsqr|olsqr2|olsqrmt|ones|optn|optnevn|orth|outtyp|pacf|packedToSp|packr|parse|pause|pdfCauchy|pdfChi|pdfExp|pdfGenPareto|pdfHyperGeo|pdfLaplace|pdfLogistic|pdfn|pdfPoisson|pdfRayleigh|pdfWeibull|pi|pinv|pinvmt|plotAddArrow|plotAddBar|plotAddBox|plotAddHist|plotAddHistF|plotAddHistP|plotAddPolar|plotAddScatter|plotAddShape|plotAddTextbox|plotAddTS|plotAddXY|plotArea|plotBar|plotBox|plotClearLayout|plotContour|plotCustomLayout|plotGetDefaults|plotHist|plotHistF|plotHistP|plotLayout|plotLogLog|plotLogX|plotLogY|plotOpenWindow|plotPolar|plotSave|plotScatter|plotSetAxesPen|plotSetBar|plotSetBarFill|plotSetBarStacked|plotSetBkdColor|plotSetFill|plotSetGrid|plotSetLegend|plotSetLineColor|plotSetLineStyle|plotSetLineSymbol|plotSetLineThickness|plotSetNewWindow|plotSetTitle|plotSetWhichYAxis|plotSetXAxisShow|plotSetXLabel|plotSetXRange|plotSetXTicInterval|plotSetXTicLabel|plotSetYAxisShow|plotSetYLabel|plotSetYRange|plotSetZAxisShow|plotSetZLabel|plotSurface|plotTS|plotXY|polar|polychar|polyeval|polygamma|polyint|polymake|polymat|polymroot|polymult|polyroot|pqgwin|previousindex|princomp|printfm|printfmt|prodc|psi|putarray|putf|putvals|pvCreate|pvGetIndex|pvGetParNames|pvGetParVector|pvLength|pvList|pvPack|pvPacki|pvPackm|pvPackmi|pvPacks|pvPacksi|pvPacksm|pvPacksmi|pvPutParVector|pvTest|pvUnpack|QNewton|QNewtonmt|QNewtonmtControlCreate|QNewtonmtOutCreate|QNewtonSet|QProg|QProgmt|QProgmtInCreate|qqr|qqre|qqrep|qr|qre|qrep|qrsol|qrtsol|qtyr|qtyre|qtyrep|quantile|quantiled|qyr|qyre|qyrep|qz|rank|rankindx|readr|real|reclassify|reclassifyCuts|recode|recserar|recsercp|recserrc|rerun|rescale|reshape|rets|rev|rfft|rffti|rfftip|rfftn|rfftnp|rfftp|rndBernoulli|rndBeta|rndBinomial|rndCauchy|rndChiSquare|rndCon|rndCreateState|rndExp|rndGamma|rndGeo|rndGumbel|rndHyperGeo|rndi|rndKMbeta|rndKMgam|rndKMi|rndKMn|rndKMnb|rndKMp|rndKMu|rndKMvm|rndLaplace|rndLCbeta|rndLCgam|rndLCi|rndLCn|rndLCnb|rndLCp|rndLCu|rndLCvm|rndLogNorm|rndMTu|rndMVn|rndMVt|rndn|rndnb|rndNegBinomial|rndp|rndPoisson|rndRayleigh|rndStateSkip|rndu|rndvm|rndWeibull|rndWishart|rotater|round|rows|rowsf|rref|sampleData|satostrC|saved|saveStruct|savewind|scale|scale3d|scalerr|scalinfnanmiss|scalmiss|schtoc|schur|searchsourcepath|seekr|select|selif|seqa|seqm|setdif|setdifsa|setvars|setvwrmode|setwind|shell|shiftr|sin|singleindex|sinh|sleep|solpd|sortc|sortcc|sortd|sorthc|sorthcc|sortind|sortindc|sortmc|sortr|sortrc|spBiconjGradSol|spChol|spConjGradSol|spCreate|spDenseSubmat|spDiagRvMat|spEigv|spEye|spLDL|spline|spLU|spNumNZE|spOnes|spreadSheetReadM|spreadSheetReadSA|spreadSheetWrite|spScale|spSubmat|spToDense|spTrTDense|spTScalar|spZeros|sqpSolve|sqpSolveMT|sqpSolveMTControlCreate|sqpSolveMTlagrangeCreate|sqpSolveMToutCreate|sqpSolveSet|sqrt|statements|stdc|stdsc|stocv|stof|strcombine|strindx|strlen|strput|strrindx|strsect|strsplit|strsplitPad|strtodt|strtof|strtofcplx|strtriml|strtrimr|strtrunc|strtruncl|strtruncpad|strtruncr|submat|subscat|substute|subvec|sumc|sumr|surface|svd|svd1|svd2|svdcusv|svds|svdusv|sysstate|tab|tan|tanh|tempname|time|timedt|timestr|timeutc|title|tkf2eps|tkf2ps|tocart|todaydt|toeplitz|token|topolar|trapchk|trigamma|trimr|trunc|type|typecv|typef|union|unionsa|uniqindx|uniqindxsa|unique|uniquesa|upmat|upmat1|upper|utctodt|utctodtv|utrisol|vals|varCovMS|varCovXS|varget|vargetl|varmall|varmares|varput|varputl|vartypef|vcm|vcms|vcx|vcxs|vec|vech|vecr|vector|vget|view|viewxyz|vlist|vnamecv|volume|vput|vread|vtypecv|wait|waitc|walkindex|where|window|writer|xlabel|xlsGetSheetCount|xlsGetSheetSize|xlsGetSheetTypes|xlsMakeRange|xlsReadM|xlsReadSA|xlsWrite|xlsWriteM|xlsWriteSA|xpnd|xtics|xy|xyz|ylabel|ytics|zeros|zeta|zlabel|ztics|cdfEmpirical|dot|h5create|h5open|h5read|h5readAttribute|h5write|h5writeAttribute|ldl|plotAddErrorBar|plotAddSurface|plotCDFEmpirical|plotSetColormap|plotSetContourLabels|plotSetLegendFont|plotSetTextInterpreter|plotSetXTicCount|plotSetYTicCount|plotSetZLevels|powerm|strjoin|sylvester|strtrim)\\b" - }, - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "beginKeywords": "bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv" - }, - { - "$ref": "#contains.9.contains.2.contains.3" - }, - { - "className": "built_in", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "$ref": "#contains.9.contains.2" - } - ] - }, - { - "$ref": "#contains.4" - }, - "self" - ] - } - ] - }, - { - "variants": [ - { - "begin": "[a-zA-Z_]\\w*\\.[a-zA-Z_]\\w*" - }, - { - "begin": "[a-zA-Z_]\\w*\\s*=" - } - ], - "relevance": 0 - }, - { - "$ref": "#contains.9.contains.2.contains.4" - }, - { - "$ref": "#contains.7.contains.0.contains.4" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gcode.json b/vendor/scrivo/highlight.php/Highlight/languages/gcode.json deleted file mode 100644 index ee571707f..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gcode.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "aliases": [ - "nc" - ], - "case_insensitive": true, - "lexemes": "[A-Z_][A-Z0-9_.]*", - "keywords": "IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR", - "contains": [ - { - "className": "meta", - "begin": "\\%" - }, - { - "className": "meta", - "begin": "([O])([0-9]+)" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "([-+]?([0-9]*\\.?[0-9]+\\.?))|(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "name", - "begin": "([G])([0-9]+\\.?[0-9]?)" - }, - { - "className": "name", - "begin": "([M])([0-9]+\\.?[0-9]?)" - }, - { - "className": "attr", - "begin": "(VC|VS|#)", - "end": "(\\d+)" - }, - { - "className": "attr", - "begin": "(VZOFX|VZOFY|VZOFZ)" - }, - { - "className": "built_in", - "begin": "(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)", - "end": "([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])" - }, - { - "className": "symbol", - "variants": [ - { - "begin": "N", - "end": "\\d+", - "illegal": "\\W" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gherkin.json b/vendor/scrivo/highlight.php/Highlight/languages/gherkin.json deleted file mode 100644 index f1403c4af..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gherkin.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "aliases": [ - "feature" - ], - "keywords": "Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When", - "contains": [ - { - "className": "symbol", - "begin": "\\*", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@[^@\\s]+" - }, - { - "begin": "\\|", - "end": "\\|\\w*$", - "contains": [ - { - "className": "string", - "begin": "[^|]+" - } - ] - }, - { - "className": "variable", - "begin": "<", - "end": ">" - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/glsl.json b/vendor/scrivo/highlight.php/Highlight/languages/glsl.json deleted file mode 100644 index 57f2d9b40..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/glsl.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "keywords": { - "keyword": "break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly", - "type": "atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void", - "built_in": "gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow", - "literal": "true false" - }, - "illegal": "\"", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gml.json b/vendor/scrivo/highlight.php/Highlight/languages/gml.json deleted file mode 100644 index eedf2f1bd..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gml.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "aliases": [ - "gml", - "GML" - ], - "case_insensitive": false, - "keywords": { - "keyword": "begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion", - "built_in": "is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height", - "literal": "self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version timezone_local timezone_utc gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters", - "symbol": "argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/go.json b/vendor/scrivo/highlight.php/Highlight/languages/go.json deleted file mode 100644 index e365b954c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/go.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "aliases": [ - "golang" - ], - "keywords": { - "keyword": "break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune", - "literal": "true false iota nil", - "built_in": "append cap close complex copy imag len make new panic print println real recover delete" - }, - "illegal": "<\/", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "variants": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - } - ] - }, - { - "begin": "`", - "end": "`" - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)[i]", - "relevance": 1 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - }, - { - "begin": ":=" - }, - { - "className": "function", - "beginKeywords": "func", - "end": "\\s*(\\{|$)", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "illegal": "[\"']" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/golo.json b/vendor/scrivo/highlight.php/Highlight/languages/golo.json deleted file mode 100644 index f0d565f73..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/golo.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "keywords": { - "keyword": "println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array", - "literal": "true false null" - }, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/gradle.json b/vendor/scrivo/highlight.php/Highlight/languages/gradle.json deleted file mode 100644 index 6c8eae982..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/gradle.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "keyword": "task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/groovy.json b/vendor/scrivo/highlight.php/Highlight/languages/groovy.json deleted file mode 100644 index cf74ae497..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/groovy.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "keywords": { - "literal": "true false null", - "keyword": "byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\w+@", - "relevance": 0 - }, - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "className": "string", - "begin": "'''", - "end": "'''" - }, - { - "className": "string", - "begin": "\\$\/", - "end": "\/\\$", - "relevance": 10 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "regexp", - "begin": "~?\\\/[^\\\/\\n]+\\\/", - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "meta", - "begin": "^#!\/usr\/bin\/env", - "end": "$", - "illegal": "\n" - }, - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "class", - "beginKeywords": "class interface trait enum", - "end": "{", - "illegal": ":", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - }, - { - "className": "string", - "begin": "[^\\?]{0}[A-Za-z0-9_$]+ *:" - }, - { - "begin": "\\?", - "end": "\\:" - }, - { - "className": "symbol", - "begin": "^\\s*[A-Za-z0-9_$]+:", - "relevance": 0 - } - ], - "illegal": "#|<\\\/" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/haml.json b/vendor/scrivo/highlight.php/Highlight/languages/haml.json deleted file mode 100644 index c7b8e159d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/haml.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "case_insensitive": true, - "contains": [ - { - "className": "meta", - "begin": "^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", - "relevance": 10 - }, - { - "className": "comment", - "begin": "^\\s*(!=#|=#|-#|\/).*$", - "end": false, - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "begin": "^\\s*(-|=|!=)(?!#)", - "starts": { - "end": "\\n", - "subLanguage": "ruby" - } - }, - { - "className": "tag", - "begin": "^\\s*%", - "contains": [ - { - "className": "selector-tag", - "begin": "\\w+" - }, - { - "className": "selector-id", - "begin": "#[\\w\\-]+" - }, - { - "className": "selector-class", - "begin": "\\.[\\w\\-]+" - }, - { - "begin": "{\\s*", - "end": "\\s*}", - "contains": [ - { - "begin": ":\\w+\\s*=>", - "end": ",\\s+", - "returnBegin": true, - "endsWithParent": true, - "contains": [ - { - "className": "attr", - "begin": ":\\w+" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.3.contains.0.contains.1.contains.0" - } - ] - }, - { - "begin": "\\w+", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "\\(\\s*", - "end": "\\s*\\)", - "excludeEnd": true, - "contains": [ - { - "begin": "\\w+\\s*=", - "end": "\\s+", - "returnBegin": true, - "endsWithParent": true, - "contains": [ - { - "className": "attr", - "begin": "\\w+", - "relevance": 0 - }, - { - "$ref": "#contains.3.contains.3.contains.0.contains.1" - }, - { - "$ref": "#contains.3.contains.3.contains.0.contains.2" - }, - { - "begin": "\\w+", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "begin": "^\\s*[=~]\\s*" - }, - { - "begin": "#{", - "starts": { - "end": "}", - "subLanguage": "ruby" - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/handlebars.json b/vendor/scrivo/highlight.php/Highlight/languages/handlebars.json deleted file mode 100644 index 39d952974..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/handlebars.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "aliases": [ - "hbs", - "html.hbs", - "html.handlebars" - ], - "case_insensitive": true, - "subLanguage": "xml", - "contains": [ - { - "begin": "\\\\\\{\\{", - "skip": true - }, - { - "begin": "\\\\\\\\(?=\\{\\{)", - "skip": true - }, - { - "className": "comment", - "begin": "\\{\\{!--", - "end": "--\\}\\}", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\{\\{!", - "end": "\\}\\}", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "template-tag", - "begin": "\\{\\{\\{\\{(?!\\\/)", - "end": "\\}\\}\\}\\}", - "contains": [ - { - "begin": "\".*?\"|'.*?'|\\[.*?\\]|\\w+", - "keywords": { - "builtin-name": "each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup" - }, - "starts": { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "begin": "\".*?\"|'.*?'|\\[.*?\\]|\\w+", - "relevance": 0 - } - ] - }, - "className": "name" - } - ], - "starts": { - "end": "\\{\\{\\{\\{\\\/", - "returnEnd": true, - "subLanguage": "xml" - } - }, - { - "className": "template-tag", - "begin": "\\{\\{\\{\\{\\\/", - "end": "\\}\\}\\}\\}", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "template-tag", - "begin": "\\{\\{[#\\\/]", - "end": "\\}\\}", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "template-variable", - "begin": "\\{\\{\\{", - "end": "\\}\\}\\}", - "keywords": { - "$ref": "#contains.4.contains.0.keywords" - }, - "contains": [ - { - "begin": "\".*?\"|'.*?'|\\[.*?\\]|\\w+", - "keywords": { - "$ref": "#contains.4.contains.0.keywords" - }, - "starts": { - "$ref": "#contains.4.contains.0.starts" - }, - "relevance": 0 - } - ] - }, - { - "className": "template-variable", - "begin": "\\{\\{", - "end": "\\}\\}", - "keywords": { - "$ref": "#contains.4.contains.0.keywords" - }, - "contains": [ - { - "$ref": "#contains.7.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/haskell.json b/vendor/scrivo/highlight.php/Highlight/languages/haskell.json deleted file mode 100644 index 80b325fb6..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/haskell.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "aliases": [ - "hs" - ], - "keywords": "let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec", - "contains": [ - { - "beginKeywords": "module", - "end": "where", - "keywords": "module where", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "illegal": "\"", - "contains": [ - { - "className": "meta", - "begin": "{-#", - "end": "#-}" - }, - { - "className": "meta", - "begin": "^#", - "end": "$" - }, - { - "className": "type", - "begin": "\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?" - }, - { - "className": "title", - "begin": "[_a-z][\\w']*", - "relevance": 0 - }, - { - "variants": [ - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "{-", - "end": "-}", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0.contains.4.variants.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ], - "illegal": "\\W\\.|;" - }, - { - "begin": "\\bimport\\b", - "end": "$", - "keywords": "import qualified as hiding", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ], - "illegal": "\\W\\.|;" - }, - { - "className": "class", - "begin": "^(\\s*)?(class|instance)\\b", - "end": "where", - "keywords": "class family instance where", - "contains": [ - { - "className": "type", - "begin": "\\b[A-Z][\\w']*", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ] - }, - { - "className": "class", - "begin": "\\b(data|(new)?type)\\b", - "end": "$", - "keywords": "data family type newtype deriving", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains.0.contains.0.contains" - } - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ] - }, - { - "beginKeywords": "default", - "end": "$", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ] - }, - { - "beginKeywords": "infix infixl infixr", - "end": "$", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ] - }, - { - "begin": "\\bforeign\\b", - "end": "$", - "keywords": "foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.4" - } - ] - }, - { - "className": "meta", - "begin": "#!\\\/usr\\\/bin\\\/env runhaskell", - "end": "$" - }, - { - "$ref": "#contains.0.contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.0.contains.1" - }, - { - "$ref": "#contains.6.contains.1" - }, - { - "$ref": "#contains.5.contains.0" - }, - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "title", - "begin": "^[_a-z][\\w']*", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.0.contains.4" - }, - { - "begin": "->|<-" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/haxe.json b/vendor/scrivo/highlight.php/Highlight/languages/haxe.json deleted file mode 100644 index 3cbd18103..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/haxe.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "aliases": [ - "hx" - ], - "keywords": { - "keyword": "break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ", - "built_in": "trace this", - "literal": "true false null _" - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "\\$\\{", - "end": "\\}" - }, - { - "className": "subst", - "begin": "\\$", - "end": "\\W}" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@:", - "end": "$" - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "if else elseif end error" - } - }, - { - "className": "type", - "begin": ":[ \t]*", - "end": "[^A-Za-z0-9_ \t\\->]", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0 - }, - { - "className": "type", - "begin": ":[ \t]*", - "end": "\\W", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "type", - "begin": "new *", - "end": "\\W", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "class", - "beginKeywords": "enum", - "end": "\\{", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "abstract", - "end": "[\\{$]", - "contains": [ - { - "className": "type", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "type", - "begin": "from +", - "end": "\\W", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "type", - "begin": "to +", - "end": "\\W", - "excludeBegin": true, - "excludeEnd": true - }, - { - "$ref": "#contains.10.contains.0" - } - ], - "keywords": { - "keyword": "abstract from to" - } - }, - { - "className": "class", - "begin": "\\b(class|interface) +", - "end": "[\\{$]", - "excludeEnd": true, - "keywords": "class interface", - "contains": [ - { - "className": "keyword", - "begin": "\\b(extends|implements) +", - "keywords": "extends implements", - "contains": [ - { - "className": "type", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.10.contains.0" - } - ] - }, - { - "className": "function", - "beginKeywords": "function", - "end": "\\(", - "excludeEnd": true, - "illegal": "\\S", - "contains": [ - { - "$ref": "#contains.10.contains.0" - } - ] - } - ], - "illegal": "<\\\/" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/hsp.json b/vendor/scrivo/highlight.php/Highlight/languages/hsp.json deleted file mode 100644 index 062c8aeaf..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/hsp.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "case_insensitive": true, - "lexemes": "[\\w\\._]+", - "keywords": "goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "string", - "begin": "{\"", - "end": "\"}", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib" - }, - "contains": [ - { - "className": "meta-string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": { - "$ref": "#contains.2.contains" - } - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "className": "symbol", - "begin": "^\\*(\\w+|@)" - }, - { - "$ref": "#contains.6.contains.1" - }, - { - "$ref": "#contains.6.contains.2" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/htmlbars.json b/vendor/scrivo/highlight.php/Highlight/languages/htmlbars.json deleted file mode 100644 index b6f57cca8..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/htmlbars.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "case_insensitive": true, - "subLanguage": "xml", - "contains": [ - { - "className": "comment", - "begin": "{{!(--)?", - "end": "(--)?}}", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "template-tag", - "begin": "\\{\\{[#\\\/]", - "end": "\\}\\}", - "contains": [ - { - "className": "name", - "begin": "[a-zA-Z\\.\\-]+", - "keywords": { - "builtin-name": "action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view" - }, - "starts": { - "endsWithParent": true, - "relevance": 0, - "keywords": { - "keyword": "as", - "built_in": "action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "illegal": "\\}\\}", - "begin": "[a-zA-Z0-9_]+=", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "[a-zA-Z0-9_]+" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] - } - } - ] - }, - { - "className": "template-variable", - "begin": "\\{\\{[a-zA-Z][a-zA-Z\\-]+", - "end": "\\}\\}", - "keywords": { - "keyword": "as", - "built_in": "action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view" - }, - "contains": [ - { - "$ref": "#contains.1.contains.0.starts.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/http.json b/vendor/scrivo/highlight.php/Highlight/languages/http.json deleted file mode 100644 index 113878484..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/http.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "aliases": [ - "https" - ], - "illegal": "\\S", - "contains": [ - { - "begin": "^HTTP\/[0-9\\.]+", - "end": "$", - "contains": [ - { - "className": "number", - "begin": "\\b\\d{3}\\b" - } - ] - }, - { - "begin": "^[A-Z]+ (.*?) HTTP\/[0-9\\.]+$", - "returnBegin": true, - "end": "$", - "contains": [ - { - "className": "string", - "begin": " ", - "end": " ", - "excludeBegin": true, - "excludeEnd": true - }, - { - "begin": "HTTP\/[0-9\\.]+" - }, - { - "className": "keyword", - "begin": "[A-Z]+" - } - ] - }, - { - "className": "attribute", - "begin": "^\\w", - "end": ": ", - "excludeEnd": true, - "illegal": "\\n|\\s|=", - "starts": { - "end": "$", - "relevance": 0 - } - }, - { - "begin": "\\n\\n", - "starts": { - "subLanguage": [], - "endsWithParent": true - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/hy.json b/vendor/scrivo/highlight.php/Highlight/languages/hy.json deleted file mode 100644 index 1ae25f941..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/hy.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "aliases": [ - "hylang" - ], - "illegal": "\\S", - "contains": [ - { - "className": "meta", - "begin": "^#!", - "end": "$" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "className": "comment", - "begin": "comment", - "end": "", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "keywords": { - "builtin-name": "!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . \/ \/\/ \/\/= \/= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro\/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile\/calls profile\/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~" - }, - "lexemes": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "className": "name", - "begin": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "starts": { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.1" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\^[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*" - }, - { - "className": "comment", - "begin": "\\^\\{", - "end": "\\}", - "contains": [ - { - "$ref": "#contains.1.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "$ref": "#contains.1.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "begin": "[:]{1,2}[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*" - }, - { - "begin": "[\\[\\{]", - "end": "[\\]\\}]", - "contains": { - "$ref": "#contains.1.contains.1.starts.contains" - } - }, - { - "className": "number", - "begin": "[-+]?\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "literal", - "begin": "\\b([Tt]rue|[Ff]alse|nil|None)\\b" - }, - { - "begin": "[a-zA-Z_\\-!.?+*=<>&#'][a-zA-Z_\\-!.?+*=<>&#'0-9\/;:]*", - "relevance": 0 - } - ] - } - }, - { - "$ref": "#contains.1.contains.1.starts" - } - ] - }, - { - "$ref": "#contains.1.contains.1.starts.contains.1" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.2" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.3" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.4" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.5" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.6" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.7" - }, - { - "$ref": "#contains.1.contains.1.starts.contains.8" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/inform7.json b/vendor/scrivo/highlight.php/Highlight/languages/inform7.json deleted file mode 100644 index 2073d2f28..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/inform7.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "aliases": [ - "i7" - ], - "case_insensitive": true, - "keywords": { - "keyword": "thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "relevance": 0, - "contains": [ - { - "className": "subst", - "begin": "\\[", - "end": "\\]" - } - ] - }, - { - "className": "section", - "begin": "^(Volume|Book|Part|Chapter|Section|Table)\\b", - "end": "$" - }, - { - "begin": "^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b", - "end": ":", - "contains": [ - { - "begin": "\\(This", - "end": "\\)" - } - ] - }, - { - "className": "comment", - "begin": "\\[", - "end": "\\]", - "contains": [ - "self" - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ini.json b/vendor/scrivo/highlight.php/Highlight/languages/ini.json deleted file mode 100644 index b236d47bf..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ini.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "aliases": [ - "toml" - ], - "case_insensitive": true, - "illegal": "\\S", - "contains": [ - { - "className": "comment", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "variants": [ - { - "begin": ";", - "end": "$" - }, - { - "begin": "#", - "end": "$" - } - ] - }, - { - "className": "section", - "begin": "\\[+", - "end": "\\]+" - }, - { - "begin": "^[a-z0-9\\[\\]_\\.-]+(?=\\s*=\\s*)", - "className": "attr", - "starts": { - "end": "$", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "literal", - "begin": "\\bon|off|true|false|yes|no\\b" - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$[\\w\\d\"][\\w\\d_]*" - }, - { - "begin": "\\$\\{(.*?)}" - } - ] - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "variants": [ - { - "begin": "'''", - "end": "'''", - "relevance": 10 - }, - { - "begin": "\"\"\"", - "end": "\"\"\"", - "relevance": 10 - }, - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - } - ] - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "([\\+\\-]+)?[\\d]+_[\\d_]+" - }, - { - "begin": "\\b\\d+(\\.\\d+)?" - } - ] - }, - "self" - ], - "relevance": 0 - }, - { - "$ref": "#contains.2.starts.contains.1.contains.1" - }, - { - "$ref": "#contains.2.starts.contains.1.contains.2" - }, - { - "$ref": "#contains.2.starts.contains.1.contains.3" - }, - { - "$ref": "#contains.2.starts.contains.1.contains.4" - } - ] - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/irpf90.json b/vendor/scrivo/highlight.php/Highlight/languages/irpf90.json deleted file mode 100644 index 88d90509b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/irpf90.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "literal": ".False. .True.", - "keyword": "kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read", - "built_in": "alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "subroutine function program", - "illegal": "[${=\\n]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)" - } - ] - }, - { - "className": "comment", - "begin": "!", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "begin_doc", - "end": "end_doc", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "number", - "begin": "(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/isbl.json b/vendor/scrivo/highlight.php/Highlight/languages/isbl.json deleted file mode 100644 index c75c223e7..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/isbl.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "aliases": [ - "isbl" - ], - "case_insensitive": true, - "lexemes": "[A-Za-zА\\-Яа-яёЁ_!][A-Za-zА\\-Яа-яёЁ_0-9]*", - "keywords": { - "keyword": "and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ", - "built_in": "SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ", - "class": "AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ", - "literal": "null true false nil " - }, - "illegal": "\\$|\\?|%|,|;$|~|#|@|<\/", - "contains": [ - { - "className": "function", - "begin": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]*\\(", - "end": "\\)$", - "returnBegin": true, - "lexemes": "[A-Za-zА\\-Яа-яёЁ_!][A-Za-zА\\-Яа-яёЁ_0-9]*", - "keywords": { - "$ref": "#keywords" - }, - "illegal": "[\\[\\]\\|\\$\\?%,~#@]", - "contains": [ - { - "className": "title", - "lexemes": "[A-Za-zА\\-Яа-яёЁ_!][A-Za-zА\\-Яа-яёЁ_0-9]*", - "keywords": { - "built_in": "AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр " - }, - "begin": "[A-Za-zА\\-Яа-яёЁ_][A-Za-zА\\-Яа-яёЁ_0-9]*\\(", - "end": "\\(", - "returnBegin": true, - "excludeEnd": true - }, - { - "begin": "\\.\\s*[a-zA-Z_]\\w*", - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0 - }, - { - "className": "variable", - "lexemes": "[A-Za-zА\\-Яа-яёЁ_!][A-Za-zА\\-Яа-яёЁ_0-9]*", - "keywords": { - "$ref": "#keywords" - }, - "begin": "[A-Za-zА\\-Яа-яёЁ_!][A-Za-zА\\-Яа-яёЁ_0-9]*", - "relevance": 0, - "contains": [ - { - "className": "type", - "begin": ":[ \\t]*(IApplication|IAccessRights|IAccountRepository|IAccountSelectionRestrictions|IAction|IActionList|IAdministrationHistoryDescription|IAnchors|IApplication|IArchiveInfo|IAttachment|IAttachmentList|ICheckListBox|ICheckPointedList|IColumn|IComponent|IComponentDescription|IComponentToken|IComponentTokenFactory|IComponentTokenInfo|ICompRecordInfo|IConnection|IContents|IControl|IControlJob|IControlJobInfo|IControlList|ICrypto|ICrypto2|ICustomJob|ICustomJobInfo|ICustomListBox|ICustomObjectWizardStep|ICustomWork|ICustomWorkInfo|IDataSet|IDataSetAccessInfo|IDataSigner|IDateCriterion|IDateRequisite|IDateRequisiteDescription|IDateValue|IDeaAccessRights|IDeaObjectInfo|IDevelopmentComponentLock|IDialog|IDialogFactory|IDialogPickRequisiteItems|IDialogsFactory|IDICSFactory|IDocRequisite|IDocumentInfo|IDualListDialog|IECertificate|IECertificateInfo|IECertificates|IEditControl|IEditorForm|IEdmsExplorer|IEdmsObject|IEdmsObjectDescription|IEdmsObjectFactory|IEdmsObjectInfo|IEDocument|IEDocumentAccessRights|IEDocumentDescription|IEDocumentEditor|IEDocumentFactory|IEDocumentInfo|IEDocumentStorage|IEDocumentVersion|IEDocumentVersionListDialog|IEDocumentVersionSource|IEDocumentWizardStep|IEDocVerSignature|IEDocVersionState|IEnabledMode|IEncodeProvider|IEncrypter|IEvent|IEventList|IException|IExternalEvents|IExternalHandler|IFactory|IField|IFileDialog|IFolder|IFolderDescription|IFolderDialog|IFolderFactory|IFolderInfo|IForEach|IForm|IFormTitle|IFormWizardStep|IGlobalIDFactory|IGlobalIDInfo|IGrid|IHasher|IHistoryDescription|IHyperLinkControl|IImageButton|IImageControl|IInnerPanel|IInplaceHint|IIntegerCriterion|IIntegerList|IIntegerRequisite|IIntegerValue|IISBLEditorForm|IJob|IJobDescription|IJobFactory|IJobForm|IJobInfo|ILabelControl|ILargeIntegerCriterion|ILargeIntegerRequisite|ILargeIntegerValue|ILicenseInfo|ILifeCycleStage|IList|IListBox|ILocalIDInfo|ILocalization|ILock|IMemoryDataSet|IMessagingFactory|IMetadataRepository|INotice|INoticeInfo|INumericCriterion|INumericRequisite|INumericValue|IObject|IObjectDescription|IObjectImporter|IObjectInfo|IObserver|IPanelGroup|IPickCriterion|IPickProperty|IPickRequisite|IPickRequisiteDescription|IPickRequisiteItem|IPickRequisiteItems|IPickValue|IPrivilege|IPrivilegeList|IProcess|IProcessFactory|IProcessMessage|IProgress|IProperty|IPropertyChangeEvent|IQuery|IReference|IReferenceCriterion|IReferenceEnabledMode|IReferenceFactory|IReferenceHistoryDescription|IReferenceInfo|IReferenceRecordCardWizardStep|IReferenceRequisiteDescription|IReferencesFactory|IReferenceValue|IRefRequisite|IReport|IReportFactory|IRequisite|IRequisiteDescription|IRequisiteDescriptionList|IRequisiteFactory|IRichEdit|IRouteStep|IRule|IRuleList|ISchemeBlock|IScript|IScriptFactory|ISearchCriteria|ISearchCriterion|ISearchDescription|ISearchFactory|ISearchFolderInfo|ISearchForObjectDescription|ISearchResultRestrictions|ISecuredContext|ISelectDialog|IServerEvent|IServerEventFactory|IServiceDialog|IServiceFactory|ISignature|ISignProvider|ISignProvider2|ISignProvider3|ISimpleCriterion|IStringCriterion|IStringList|IStringRequisite|IStringRequisiteDescription|IStringValue|ISystemDialogsFactory|ISystemInfo|ITabSheet|ITask|ITaskAbortReasonInfo|ITaskCardWizardStep|ITaskDescription|ITaskFactory|ITaskInfo|ITaskRoute|ITextCriterion|ITextRequisite|ITextValue|ITreeListSelectDialog|IUser|IUserList|IValue|IView|IWebBrowserControl|IWizard|IWizardAction|IWizardFactory|IWizardFormElement|IWizardParam|IWizardPickParam|IWizardReferenceParam|IWizardStep|IWorkAccessRights|IWorkDescription|IWorkflowAskableParam|IWorkflowAskableParams|IWorkflowBlock|IWorkflowBlockResult|IWorkflowEnabledMode|IWorkflowParam|IWorkflowPickParam|IWorkflowReferenceParam|IWorkState|IWorkTreeCustomNode|IWorkTreeJobNode|IWorkTreeTaskNode|IXMLEditorForm|SBCrypto)", - "end": "[ \\t]*=", - "excludeEnd": true - }, - { - "$ref": "#contains.0.contains.1" - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "variants": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "relevance": 0, - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0.contains.5.variants.0.contains.0" - }, - { - "$ref": "#contains.0.contains.5.variants.0.contains.1" - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.2.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.5" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/java.json b/vendor/scrivo/highlight.php/Highlight/languages/java.json deleted file mode 100644 index e9ba6ddde..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/java.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "aliases": [ - "jsp" - ], - "keywords": "false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do", - "illegal": "<\\\/|#", - "contains": [ - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\w+@", - "relevance": 0 - }, - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.2" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "[{;=]", - "excludeEnd": true, - "keywords": "class interface", - "illegal": "[:\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "new throw return else", - "relevance": 0 - }, - { - "className": "function", - "begin": "([À\\-ʸa-zA-Z_$][À\\-ʸa-zA-Z_$0-9]*(<[À\\-ʸa-zA-Z_$][À\\-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À\\-ʸa-zA-Z_$][À\\-ʸa-zA-Z_$0-9]*)*>)?\\s+)+[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "end": "[{;=]", - "excludeEnd": true, - "keywords": "false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do", - "contains": [ - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.5.contains.1" - } - ] - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": "false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "number", - "begin": "\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/javascript.json b/vendor/scrivo/highlight.php/Highlight/languages/javascript.json deleted file mode 100644 index 05bb51f7a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/javascript.json +++ /dev/null @@ -1,398 +0,0 @@ -{ - "aliases": [ - "js", - "jsx", - "mjs", - "cjs" - ], - "keywords": { - "keyword": "in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as", - "literal": "true false null undefined NaN Infinity", - "built_in": "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise" - }, - "contains": [ - { - "className": "meta", - "relevance": 10, - "begin": "^\\s*['\"]use (strict|asm)['\"]" - }, - { - "className": "meta", - "begin": "^#!", - "end": "$" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "begin": "html`", - "end": "", - "starts": { - "end": "`", - "returnEnd": false, - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "subst", - "begin": "\\$\\{", - "end": "\\}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "begin": "css`", - "end": "", - "starts": { - "end": "`", - "returnEnd": false, - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.4.starts.contains.1" - } - ], - "subLanguage": "css" - } - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.4.starts.contains.1" - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0[bB][01]+)n?" - }, - { - "begin": "\\b(0[oO][0-7]+)n?" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)n?" - } - ], - "relevance": 0 - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - } - ] - } - ] - } - ], - "subLanguage": "xml" - } - }, - { - "$ref": "#contains.4.starts.contains.1.contains.3" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.4" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "className": "doctag", - "begin": "@[A-Za-z]+", - "contains": [ - { - "className": "type", - "begin": "\\{", - "end": "\\}", - "relevance": 0 - }, - { - "className": "variable", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)", - "endsParent": true, - "relevance": 0 - }, - { - "begin": "(?=[^\\n])\\s", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.7.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.7.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.4.starts.contains.1.contains.5" - }, - { - "begin": "[{,\\n]\\s*", - "relevance": 0, - "contains": [ - { - "begin": "[A-Za-z$_][0-9A-Za-z$_]*\\s*:", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\b(case|return|throw)\\b)\\s*", - "keywords": "return throw case", - "contains": [ - { - "$ref": "#contains.7" - }, - { - "$ref": "#contains.9" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.6" - }, - { - "className": "function", - "begin": "(\\(.*?\\)|[A-Za-z$_][0-9A-Za-z$_]*)\\s*=>", - "returnBegin": true, - "end": "\\s*=>", - "contains": [ - { - "className": "params", - "variants": [ - { - "begin": "[A-Za-z$_][0-9A-Za-z$_]*" - }, - { - "begin": "\\(\\s*\\)" - }, - { - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.3" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.4" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.5" - }, - { - "$ref": "#contains.4.starts.contains.1.contains.6" - }, - { - "$ref": "#contains.9" - }, - { - "$ref": "#contains.7" - } - ] - } - ] - } - ] - }, - { - "className": "", - "begin": "\\s", - "end": "\\s*", - "skip": true - }, - { - "variants": [ - { - "begin": "<>", - "end": "<\/>" - }, - { - "begin": "<[A-Za-z0-9\\\\._:-]+", - "end": "\\\/[A-Za-z0-9\\\\._:-]+>|\\\/>" - } - ], - "subLanguage": "xml", - "contains": [ - { - "begin": "<[A-Za-z0-9\\\\._:-]+", - "end": "\\\/[A-Za-z0-9\\\\._:-]+>|\\\/>", - "skip": true, - "contains": [ - "self" - ] - } - ] - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "function", - "end": "\\{", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "contains": { - "$ref": "#contains.12.contains.3.contains.0.variants.2.contains" - } - } - ], - "illegal": "\\[|%" - }, - { - "begin": "\\$[(.]" - }, - { - "begin": "\\.\\s*[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "class", - "beginKeywords": "class", - "end": "[{;=]", - "excludeEnd": true, - "illegal": "[:\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "constructor get set", - "end": "\\{", - "excludeEnd": true - } - ], - "illegal": "#(?!!)" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/jboss-cli.json b/vendor/scrivo/highlight.php/Highlight/languages/jboss-cli.json deleted file mode 100644 index 0b379349d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/jboss-cli.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "aliases": [ - "wildfly-cli" - ], - "lexemes": "[a-z\\-]+", - "keywords": { - "keyword": "alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source", - "literal": "true false" - }, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "params", - "begin": "--[\\w\\-=\\\/]+" - }, - { - "className": "function", - "begin": ":[\\w\\-.]+", - "relevance": 0 - }, - { - "className": "string", - "begin": "\\B(([\\\/.])[\\w\\-.\\\/=]+)+" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "begin": "[\\w\\-]+ *=", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "[\\w\\-]+" - } - ] - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/json.json b/vendor/scrivo/highlight.php/Highlight/languages/json.json deleted file mode 100644 index 5e3f87eae..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/json.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "begin": "{", - "end": "}", - "contains": [ - { - "className": "attr", - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ], - "illegal": "\\n" - }, - { - "end": ",", - "endsWithParent": true, - "excludeEnd": true, - "contains": { - "$ref": "#contains" - }, - "keywords": { - "literal": "true false null" - }, - "begin": ":" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ], - "illegal": "\\S" - }, - { - "begin": "\\[", - "end": "\\]", - "contains": [ - { - "end": ",", - "endsWithParent": true, - "excludeEnd": true, - "contains": { - "$ref": "#contains" - }, - "keywords": { - "$ref": "#contains.2.contains.1.keywords" - } - } - ], - "illegal": "\\S" - }, - { - "$ref": "#contains.2.contains.2" - }, - { - "$ref": "#contains.2.contains.3" - } - ], - "keywords": { - "$ref": "#contains.2.contains.1.keywords" - }, - "illegal": "\\S" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/julia-repl.json b/vendor/scrivo/highlight.php/Highlight/languages/julia-repl.json deleted file mode 100644 index 7c8fe0704..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/julia-repl.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "contains": [ - { - "className": "meta", - "begin": "^julia>", - "relevance": 10, - "starts": { - "end": "^(?![ ]{6})", - "subLanguage": "julia" - }, - "aliases": [ - "jldoctest" - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/julia.json b/vendor/scrivo/highlight.php/Highlight/languages/julia.json deleted file mode 100644 index bfb829c7b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/julia.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "lexemes": "[A-Za-z_\\x{00A1}-\\x{FFFF}][A-Za-z_0-9\\x{00A1}-\\x{FFFF}]*", - "keywords": { - "keyword": "in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ", - "literal": "true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ", - "built_in": "ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool " - }, - "illegal": "<\\\/", - "contains": [ - { - "className": "number", - "begin": "(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "'(.|\\\\[xXuU][a-zA-Z0-9]+)'" - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "\\$\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains" - } - }, - { - "className": "variable", - "begin": "\\$[A-Za-z_\\x{00A1}-\\x{FFFF}][A-Za-z_0-9\\x{00A1}-\\x{FFFF}]*" - } - ], - "variants": [ - { - "begin": "\\w*\"\"\"", - "end": "\"\"\"\\w*", - "relevance": 10 - }, - { - "begin": "\\w*\"", - "end": "\"\\w*" - } - ] - }, - { - "className": "string", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.2.contains.1" - }, - { - "$ref": "#contains.2.contains.2" - } - ], - "begin": "`", - "end": "`" - }, - { - "className": "meta", - "begin": "@[A-Za-z_\\x{00A1}-\\x{FFFF}][A-Za-z_0-9\\x{00A1}-\\x{FFFF}]*" - }, - { - "className": "comment", - "variants": [ - { - "begin": "#=", - "end": "=#", - "relevance": 10 - }, - { - "begin": "#", - "end": "$" - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "keyword", - "begin": "\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b" - }, - { - "begin": "<:" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/kotlin.json b/vendor/scrivo/highlight.php/Highlight/languages/kotlin.json deleted file mode 100644 index 1021f5f0a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/kotlin.json +++ /dev/null @@ -1,316 +0,0 @@ -{ - "aliases": [ - "kt" - ], - "keywords": { - "keyword": "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default", - "built_in": "Byte Short Char Int Long Boolean Float Double Void Unit Nothing", - "literal": "true false null" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\\*\\*", - "end": "\\*\/", - "contains": [ - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "keyword", - "begin": "\\b(break|continue|return|this)\\b", - "starts": { - "contains": [ - { - "className": "symbol", - "begin": "@\\w+" - } - ] - } - }, - { - "className": "symbol", - "begin": "[a-zA-Z_]\\w*@" - }, - { - "className": "meta", - "begin": "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*[a-zA-Z_]\\w*)?" - }, - { - "className": "meta", - "begin": "@[a-zA-Z_]\\w*", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "className": "meta-string", - "variants": [ - { - "begin": "\"\"\"", - "end": "\"\"\"(?=[^\"])", - "contains": [ - { - "className": "variable", - "begin": "\\$[a-zA-Z_]\\w*" - }, - { - "className": "subst", - "begin": "\\${", - "end": "}", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "variants": { - "$ref": "#contains.6.contains.0.contains.0.variants" - } - } - ] - } - ] - }, - { - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.6.contains.0.contains.0.variants.1.contains.0" - }, - { - "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.0" - }, - { - "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1" - } - ] - } - ] - } - ] - } - ] - }, - { - "className": "function", - "beginKeywords": "fun", - "end": "[(]|$", - "returnBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "illegal": "fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=", - "relevance": 5, - "contains": [ - { - "begin": "[a-zA-Z_]\\w*\\s*\\(", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "type", - "begin": "<", - "end": ">", - "keywords": "reified", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "begin": ":", - "end": "[=,\\\/]", - "endsWithParent": true, - "contains": [ - { - "variants": [ - { - "className": "type", - "begin": "[a-zA-Z_]\\w*" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.7.contains.2.contains.0.contains.0" - } - ] - } - ] - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ], - "relevance": 0 - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1" - }, - { - "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.0" - } - ] - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface trait", - "end": "[:\\{(]|$", - "excludeEnd": true, - "illegal": "extends implements", - "contains": [ - { - "beginKeywords": "public protected internal private constructor" - }, - { - "$ref": "#contains.7.contains.0.contains.0" - }, - { - "className": "type", - "begin": "<", - "end": ">", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0 - }, - { - "className": "type", - "begin": "[,:]\\s*", - "end": "[<\\(,]|$", - "excludeBegin": true, - "returnEnd": true - }, - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - } - ] - }, - { - "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1" - }, - { - "className": "meta", - "begin": "^#!\/usr\/bin\/env", - "end": "$", - "illegal": "\n" - }, - { - "className": "number", - "begin": "\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/lasso.json b/vendor/scrivo/highlight.php/Highlight/languages/lasso.json deleted file mode 100644 index e9ddfcda1..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/lasso.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "aliases": [ - "ls", - "lassoscript" - ], - "case_insensitive": true, - "lexemes": "[a-zA-Z_][\\w.]*|&[lg]t;", - "keywords": { - "literal": "true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft", - "built_in": "array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock", - "keyword": "cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome" - }, - "contains": [ - { - "className": "meta", - "begin": "\\]|\\?>", - "relevance": 0, - "starts": { - "end": "\\[|<\\?(lasso(script)?|=)", - "returnEnd": true, - "relevance": 0, - "contains": [ - { - "className": "comment", - "begin": "<!--", - "end": "-->", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - } - ] - } - }, - { - "className": "meta", - "begin": "\\[noprocess\\]", - "starts": { - "end": "\\[\/noprocess\\]", - "returnEnd": true, - "contains": [ - { - "$ref": "#contains.0.starts.contains.0" - } - ] - } - }, - { - "className": "meta", - "begin": "\\[\/noprocess|<\\?(lasso(script)?|=)" - }, - { - "className": "meta", - "begin": "\\[no_square_brackets", - "starts": { - "end": "\\[\/no_square_brackets\\]", - "lexemes": "[a-zA-Z_][\\w.]*|&[lg]t;", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "meta", - "begin": "\\]|\\?>", - "relevance": 0, - "starts": { - "end": "\\[noprocess\\]|<\\?(lasso(script)?|=)", - "returnEnd": true, - "contains": [ - { - "$ref": "#contains.0.starts.contains.0" - } - ] - } - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.starts.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.starts.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|(-?infinity|NaN)\\b", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.3.starts.contains.6.contains.0" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`" - }, - { - "variants": [ - { - "begin": "[#$][a-zA-Z_][\\w.]*" - }, - { - "begin": "#", - "end": "\\d+", - "illegal": "\\W" - } - ] - }, - { - "className": "type", - "begin": "::\\s*", - "end": "[a-zA-Z_][\\w.]*", - "illegal": "\\W" - }, - { - "className": "params", - "variants": [ - { - "begin": "-(?!infinity)[a-zA-Z_][\\w.]*", - "relevance": 0 - }, - { - "begin": "(\\.\\.\\.)" - } - ] - }, - { - "begin": "(->|\\.)\\s*", - "relevance": 0, - "contains": [ - { - "className": "symbol", - "begin": "'[a-zA-Z_][\\w.]*'" - } - ] - }, - { - "className": "class", - "beginKeywords": "define", - "returnEnd": true, - "end": "\\(|=>", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_][\\w.]*(=(?!>))?|[-+*\/%](?!>)", - "relevance": 0 - } - ] - } - ] - } - }, - { - "className": "meta", - "begin": "\\[", - "relevance": 0 - }, - { - "className": "meta", - "begin": "^#!", - "end": "lasso9$", - "relevance": 10 - }, - { - "$ref": "#contains.3.starts.contains.3" - }, - { - "$ref": "#contains.3.starts.contains.4" - }, - { - "$ref": "#contains.3.starts.contains.5" - }, - { - "$ref": "#contains.3.starts.contains.6" - }, - { - "$ref": "#contains.3.starts.contains.7" - }, - { - "$ref": "#contains.3.starts.contains.8" - }, - { - "$ref": "#contains.3.starts.contains.9" - }, - { - "$ref": "#contains.3.starts.contains.10" - }, - { - "$ref": "#contains.3.starts.contains.11" - }, - { - "$ref": "#contains.3.starts.contains.12" - }, - { - "$ref": "#contains.3.starts.contains.13" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ldif.json b/vendor/scrivo/highlight.php/Highlight/languages/ldif.json deleted file mode 100644 index e46ecb349..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ldif.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "contains": [ - { - "className": "attribute", - "begin": "^dn", - "end": ": ", - "excludeEnd": true, - "starts": { - "end": "$", - "relevance": 0 - }, - "relevance": 10 - }, - { - "className": "attribute", - "begin": "^\\w", - "end": ": ", - "excludeEnd": true, - "starts": { - "end": "$", - "relevance": 0 - } - }, - { - "className": "literal", - "begin": "^-", - "end": "$" - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/leaf.json b/vendor/scrivo/highlight.php/Highlight/languages/leaf.json deleted file mode 100644 index e9bd2d0fb..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/leaf.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "contains": [ - { - "className": "function", - "begin": "#+[A-Za-z_0-9]*\\(", - "end": " {", - "returnBegin": true, - "excludeEnd": true, - "contains": [ - { - "className": "keyword", - "begin": "#+" - }, - { - "className": "title", - "begin": "[A-Za-z_][A-Za-z_0-9]*" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"" - }, - { - "className": "variable", - "begin": "[A-Za-z_][A-Za-z_0-9]*" - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/less.json b/vendor/scrivo/highlight.php/Highlight/languages/less.json deleted file mode 100644 index 9764e0128..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/less.json +++ /dev/null @@ -1,314 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "[=>'\/<($\"]", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "keyword", - "begin": "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", - "starts": { - "end": "[;{}]", - "returnEnd": true, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "className": "string", - "begin": "~?'.*?'" - }, - { - "className": "string", - "begin": "~?\".*?\"" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", - "relevance": 0 - }, - { - "begin": "(url|data-uri)\\(", - "starts": { - "className": "string", - "end": "[\\)\\n]", - "excludeEnd": true - } - }, - { - "className": "number", - "begin": "#[0-9A-Fa-f]+\\b" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": { - "$ref": "#contains.2.starts.contains" - }, - "relevance": 0 - }, - { - "className": "variable", - "begin": "@@?[\\w\\-]+", - "relevance": 10 - }, - { - "className": "variable", - "begin": "@{[\\w\\-]+}" - }, - { - "className": "built_in", - "begin": "~?`[^`]*?`" - }, - { - "className": "attribute", - "begin": "[\\w\\-]+\\s*:", - "end": ":", - "returnBegin": true, - "excludeEnd": true - }, - { - "className": "meta", - "begin": "!important" - } - ], - "relevance": 0 - } - }, - { - "className": "variable", - "variants": [ - { - "begin": "@[\\w\\-]+\\s*:", - "relevance": 15 - }, - { - "begin": "@[\\w\\-]+" - } - ], - "starts": { - "end": "[;}]", - "returnEnd": true, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2.starts.contains.2" - }, - { - "$ref": "#contains.2.starts.contains.3" - }, - { - "$ref": "#contains.2.starts.contains.4" - }, - { - "$ref": "#contains.2.starts.contains.5" - }, - { - "$ref": "#contains.2.starts.contains.6" - }, - { - "$ref": "#contains.2.starts.contains.7" - }, - { - "$ref": "#contains.2.starts.contains.8" - }, - { - "$ref": "#contains.2.starts.contains.9" - }, - { - "$ref": "#contains.2.starts.contains.10" - }, - { - "$ref": "#contains.2.starts.contains.11" - }, - { - "$ref": "#contains.2.starts.contains.12" - }, - { - "begin": "{", - "end": "}", - "contains": { - "$ref": "#contains" - } - } - ] - } - }, - { - "begin": "([\\w\\-]+|@{[\\w\\-]+})\\s*:", - "returnBegin": true, - "end": "[;}]", - "relevance": 0, - "contains": [ - { - "className": "attribute", - "begin": "([\\w\\-]+|@{[\\w\\-]+})", - "end": ":", - "excludeEnd": true, - "starts": { - "endsWithParent": true, - "illegal": "[<=$]", - "relevance": 0, - "contains": { - "$ref": "#contains.2.starts.contains" - } - } - } - ] - }, - { - "variants": [ - { - "begin": "[\\.#:&\\[>]", - "end": "[;{}]" - }, - { - "begin": "([\\w\\-]+|@{[\\w\\-]+})", - "end": "{" - } - ], - "returnBegin": true, - "returnEnd": true, - "illegal": "[<='$\"]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "beginKeywords": "when", - "endsWithParent": true, - "contains": [ - { - "beginKeywords": "and not" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2.starts.contains.2" - }, - { - "$ref": "#contains.2.starts.contains.3" - }, - { - "$ref": "#contains.2.starts.contains.4" - }, - { - "$ref": "#contains.2.starts.contains.5" - }, - { - "$ref": "#contains.2.starts.contains.6" - }, - { - "$ref": "#contains.2.starts.contains.7" - }, - { - "$ref": "#contains.2.starts.contains.8" - }, - { - "$ref": "#contains.2.starts.contains.9" - }, - { - "$ref": "#contains.2.starts.contains.10" - }, - { - "$ref": "#contains.2.starts.contains.11" - }, - { - "$ref": "#contains.2.starts.contains.12" - } - ] - }, - { - "className": "keyword", - "begin": "all\\b" - }, - { - "className": "variable", - "begin": "@{[\\w\\-]+}" - }, - { - "className": "selector-tag", - "begin": "([\\w\\-]+|@{[\\w\\-]+})%?", - "relevance": 0 - }, - { - "className": "selector-id", - "begin": "#([\\w\\-]+|@{[\\w\\-]+})" - }, - { - "className": "selector-class", - "begin": "\\.([\\w\\-]+|@{[\\w\\-]+})", - "relevance": 0 - }, - { - "className": "selector-tag", - "begin": "&", - "relevance": 0 - }, - { - "className": "selector-attr", - "begin": "\\[", - "end": "\\]" - }, - { - "className": "selector-pseudo", - "begin": ":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": { - "$ref": "#contains.3.starts.contains" - } - }, - { - "begin": "!important" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/lisp.json b/vendor/scrivo/highlight.php/Highlight/languages/lisp.json deleted file mode 100644 index e09a45c28..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/lisp.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "illegal": "\\S", - "contains": [ - { - "className": "number", - "variants": [ - { - "begin": "(\\-|\\+)?\\d+(\\.\\d+|\\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?", - "relevance": 0 - }, - { - "begin": "#(b|B)[0-1]+(\/[0-1]+)?" - }, - { - "begin": "#(o|O)[0-7]+(\/[0-7]+)?" - }, - { - "begin": "#(x|X)[0-9a-fA-F]+(\/[0-9a-fA-F]+)?" - }, - { - "begin": "#(c|C)\\((\\-|\\+)?\\d+(\\.\\d+|\\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)? +(\\-|\\+)?\\d+(\\.\\d+|\\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?", - "end": "\\)" - } - ] - }, - { - "className": "meta", - "begin": "^#!", - "end": "$" - }, - { - "className": "literal", - "begin": "\\b(t{1}|nil)\\b" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.3" - }, - { - "begin": "\\*", - "end": "\\*" - }, - { - "className": "symbol", - "begin": "[:&][a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*" - }, - { - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.0" - }, - { - "begin": "[a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.5.contains.4.contains.4" - } - ], - "variants": [ - { - "begin": "['`]\\(", - "end": "\\)" - }, - { - "begin": "\\(quote ", - "end": "\\)", - "keywords": { - "name": "quote" - } - }, - { - "begin": "'\\|[^|]*?\\|" - } - ] - }, - { - "variants": [ - { - "begin": "'[a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*" - }, - { - "begin": "#'[a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*(::[a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*)*" - } - ] - }, - { - "begin": "\\(\\s*", - "end": "\\)", - "contains": [ - { - "className": "name", - "variants": [ - { - "begin": "[a-zA-Z_\\-\\+\\*\\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\\/\\<\\=\\>\\&\\#!]*" - }, - { - "begin": "\\|[^|]*?\\|" - } - ] - }, - { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.5" - }, - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.7" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5.contains.2" - }, - { - "$ref": "#contains.5.contains.3" - }, - { - "begin": "\\|[^|]*?\\|" - }, - { - "$ref": "#contains.5.contains.4.contains.4" - } - ] - } - ] - }, - { - "$ref": "#contains.5.contains.4.contains.4" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/livecodeserver.json b/vendor/scrivo/highlight.php/Highlight/languages/livecodeserver.json deleted file mode 100644 index 43e14b28c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/livecodeserver.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "case_insensitive": false, - "keywords": { - "keyword": "$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys", - "literal": "SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK", - "built_in": "put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write" - }, - "contains": [ - { - "className": "variable", - "variants": [ - { - "begin": "\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)" - }, - { - "begin": "\\$_[A-Z]+" - } - ], - "relevance": 0 - }, - { - "className": "keyword", - "begin": "\\bend\\sif\\b" - }, - { - "className": "function", - "beginKeywords": "function", - "end": "$", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "title", - "begin": "\\b([A-Za-z0-9_\\-]+)\\b", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "variants": [ - { - "begin": "\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*" - }, - { - "begin": "\\b_[a-z0-9\\-]+" - } - ] - } - ] - }, - { - "className": "function", - "begin": "\\bend\\s+", - "end": "$", - "keywords": "end", - "contains": [ - { - "$ref": "#contains.2.contains.1" - }, - { - "$ref": "#contains.2.contains.6" - } - ], - "relevance": 0 - }, - { - "beginKeywords": "command on", - "end": "$", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.2.contains.1" - }, - { - "$ref": "#contains.2.contains.2" - }, - { - "$ref": "#contains.2.contains.3" - }, - { - "$ref": "#contains.2.contains.4" - }, - { - "$ref": "#contains.2.contains.5" - }, - { - "$ref": "#contains.2.contains.6" - } - ] - }, - { - "className": "meta", - "variants": [ - { - "begin": "<\\?(rev|lc|livecode)", - "relevance": 10 - }, - { - "begin": "<\\?" - }, - { - "begin": "\\?>" - } - ] - }, - { - "$ref": "#contains.2.contains.2" - }, - { - "$ref": "#contains.2.contains.3" - }, - { - "$ref": "#contains.2.contains.4" - }, - { - "$ref": "#contains.2.contains.5" - }, - { - "$ref": "#contains.2.contains.6" - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "$ref": "#contains.11.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "$ref": "#contains.11.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "[^:]\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.11.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ], - "illegal": ";$|^\\[|^=|&|{" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/livescript.json b/vendor/scrivo/highlight.php/Highlight/languages/livescript.json deleted file mode 100644 index f2c53151d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/livescript.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "aliases": [ - "ls" - ], - "keywords": { - "keyword": "in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf", - "literal": "true false null undefined yes no on off it that void", - "built_in": "npm require console print module global window document" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)", - "relevance": 0, - "starts": { - "end": "(\\s*\/)?", - "relevance": 0 - } - }, - { - "className": "string", - "variants": [ - { - "begin": "'''", - "end": "'''", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - } - ] - }, - { - "begin": "\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - }, - { - "className": "subst", - "begin": "#\\{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "className": "regexp", - "variants": [ - { - "begin": "\/\/", - "end": "\/\/[gim]*", - "contains": [ - { - "$ref": "#contains.2.variants.2.contains.1" - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "\\\/(?![ *])(\\\\\\\/|.)*?\\\/[gim]*(?=\\W)" - } - ] - }, - { - "begin": "@[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*" - }, - { - "begin": "``", - "end": "``", - "excludeBegin": true, - "excludeEnd": true, - "subLanguage": "javascript" - } - ] - }, - { - "className": "subst", - "begin": "#[A-Za-z$_]", - "end": "(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*", - "keywords": { - "$ref": "#keywords" - } - } - ] - }, - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - }, - { - "$ref": "#contains.2.variants.2.contains.1" - }, - { - "$ref": "#contains.2.variants.2.contains.2" - } - ] - }, - { - "begin": "\\\\", - "end": "(\\s|$)", - "excludeEnd": true - } - ] - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.4" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.5" - }, - { - "className": "comment", - "begin": "\\\/\\*", - "end": "\\*\\\/", - "contains": [ - { - "$ref": "#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1" - }, - { - "begin": "(#=>|=>|\\|>>|-?->|\\!->)" - }, - { - "className": "function", - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "returnBegin": true, - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.3" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.4" - }, - { - "$ref": "#contains.2.variants.2.contains.1.contains.5" - } - ] - } - ] - } - ], - "returnBegin": true, - "variants": [ - { - "begin": "([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B\\->\\*?", - "end": "\\->\\*?" - }, - { - "begin": "([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\s*(?:=|:=)\\s*)?!?(\\(.*\\))?\\s*\\B[-~]{1,2}>\\*?", - "end": "[-~]{1,2}>\\*?" - }, - { - "begin": "([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\s*(?:=|:=)\\s*)?(\\(.*\\))?\\s*\\B!?[-~]{1,2}>\\*?", - "end": "!?[-~]{1,2}>\\*?" - } - ] - }, - { - "className": "class", - "beginKeywords": "class", - "end": "$", - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends", - "endsWithParent": true, - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "$ref": "#contains.9.contains.0" - } - ] - }, - { - "$ref": "#contains.9.contains.0" - } - ] - }, - { - "begin": "[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*:", - "end": ":", - "returnBegin": true, - "returnEnd": true, - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/llvm.json b/vendor/scrivo/highlight.php/Highlight/languages/llvm.json deleted file mode 100644 index 028a4126e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/llvm.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "keywords": "begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double", - "contains": [ - { - "className": "keyword", - "begin": "i\\d+" - }, - { - "className": "comment", - "begin": ";", - "end": "\\n", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "[^\\\\]\"" - } - ], - "relevance": 0 - }, - { - "className": "title", - "variants": [ - { - "begin": "@([-a-zA-Z$._][\\w\\-$.]*)" - }, - { - "begin": "@\\d+" - }, - { - "begin": "!([-a-zA-Z$._][\\w\\-$.]*)" - }, - { - "begin": "!\\d+([-a-zA-Z$._][\\w\\-$.]*)" - } - ] - }, - { - "className": "symbol", - "variants": [ - { - "begin": "%([-a-zA-Z$._][\\w\\-$.]*)" - }, - { - "begin": "%\\d+" - }, - { - "begin": "#\\d+" - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "0[xX][a-fA-F0-9]+" - }, - { - "begin": "-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?" - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/lsl.json b/vendor/scrivo/highlight.php/Highlight/languages/lsl.json deleted file mode 100644 index b6c7eea10..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/lsl.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "illegal": ":", - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "className": "subst", - "begin": "\\\\[tn\"\\\\]" - } - ] - }, - { - "className": "comment", - "variants": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.variants.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ], - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" - }, - { - "className": "section", - "variants": [ - { - "begin": "\\b(?:state|default)\\b" - }, - { - "begin": "\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\b" - } - ] - }, - { - "className": "built_in", - "begin": "\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b" - }, - { - "className": "literal", - "variants": [ - { - "begin": "\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b" - }, - { - "begin": "\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b" - }, - { - "begin": "\\b(?:FALSE|TRUE)\\b" - }, - { - "begin": "\\b(?:ZERO_ROTATION)\\b" - }, - { - "begin": "\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\b" - }, - { - "begin": "\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\b" - } - ] - }, - { - "className": "type", - "begin": "\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\b" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/lua.json b/vendor/scrivo/highlight.php/Highlight/languages/lua.json deleted file mode 100644 index 2722b60e3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/lua.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "lexemes": "[a-zA-Z_]\\w*", - "keywords": { - "literal": "true false nil", - "keyword": "and break do else elseif end for goto if in local not or repeat return then until while", - "built_in": "_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" - }, - "contains": [ - { - "className": "comment", - "begin": "--(?!\\[=*\\[)", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--\\[=*\\[", - "end": "\\]=*\\]", - "contains": [ - { - "begin": "\\[=*\\[", - "end": "\\]=*\\]", - "contains": [ - "self" - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "function", - "beginKeywords": "function", - "end": "\\)", - "contains": [ - { - "className": "title", - "begin": "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "endsWithParent": true, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\\[=*\\[", - "end": "\\]=*\\]", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ], - "relevance": 5 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/makefile.json b/vendor/scrivo/highlight.php/Highlight/languages/makefile.json deleted file mode 100644 index 2fac6e860..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/makefile.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "aliases": [ - "mk", - "mak" - ], - "keywords": "define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath", - "lexemes": "[\\w\\-]+", - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$\\([a-zA-Z_]\\w*\\)", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "\\$[@%<?\\^\\+\\*]" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.1.variants.0.contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "className": "variable", - "begin": "\\$\\([\\w\\-]+\\s", - "end": "\\)", - "keywords": { - "built_in": "subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value" - }, - "contains": [ - { - "$ref": "#contains.1" - } - ] - }, - { - "begin": "^[a-zA-Z_]\\w*\\s*(?=[:+?]?=)" - }, - { - "className": "meta", - "begin": "^\\.PHONY:", - "end": "$", - "keywords": { - "meta-keyword": ".PHONY" - }, - "lexemes": "[\\.\\w]+" - }, - { - "className": "section", - "begin": "^[^\\s]+:", - "end": "$", - "contains": [ - { - "$ref": "#contains.1" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/markdown.json b/vendor/scrivo/highlight.php/Highlight/languages/markdown.json deleted file mode 100644 index e692445fe..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/markdown.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "aliases": [ - "md", - "mkdown", - "mkd" - ], - "contains": [ - { - "className": "section", - "variants": [ - { - "begin": "^#{1,6}", - "end": "$" - }, - { - "begin": "^.+?\\n[=-]{2,}$" - } - ] - }, - { - "begin": "<", - "end": ">", - "subLanguage": "xml", - "relevance": 0 - }, - { - "className": "bullet", - "begin": "^\\s*([*+-]|(\\d+\\.))\\s+" - }, - { - "className": "strong", - "begin": "[*_]{2}.+?[*_]{2}" - }, - { - "className": "emphasis", - "variants": [ - { - "begin": "\\*.+?\\*" - }, - { - "begin": "_.+?_", - "relevance": 0 - } - ] - }, - { - "className": "quote", - "begin": "^>\\s+", - "end": "$" - }, - { - "className": "code", - "variants": [ - { - "begin": "^```\\w*\\s*$", - "end": "^```[ ]*$" - }, - { - "begin": "`.+?`" - }, - { - "begin": "^( {4}|\\t)", - "end": "$", - "relevance": 0 - } - ] - }, - { - "begin": "^[-\\*]{3,}", - "end": "$" - }, - { - "begin": "\\[.+?\\][\\(\\[].*?[\\)\\]]", - "returnBegin": true, - "contains": [ - { - "className": "string", - "begin": "\\[", - "end": "\\]", - "excludeBegin": true, - "returnEnd": true, - "relevance": 0 - }, - { - "className": "link", - "begin": "\\]\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "symbol", - "begin": "\\]\\[", - "end": "\\]", - "excludeBegin": true, - "excludeEnd": true - } - ], - "relevance": 10 - }, - { - "begin": "^\\[[^\\n]+\\]:", - "returnBegin": true, - "contains": [ - { - "className": "symbol", - "begin": "\\[", - "end": "\\]", - "excludeBegin": true, - "excludeEnd": true - }, - { - "className": "link", - "begin": ":\\s*", - "end": "$", - "excludeBegin": true - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mathematica.json b/vendor/scrivo/highlight.php/Highlight/languages/mathematica.json deleted file mode 100644 index 3d19c385a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mathematica.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "aliases": [ - "mma", - "wl" - ], - "lexemes": "(\\$|\\b)[a-zA-Z]\\w*\\b", - "keywords": "AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID", - "contains": [ - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - "self", - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/matlab.json b/vendor/scrivo/highlight.php/Highlight/languages/matlab.json deleted file mode 100644 index 94f7bd6ac..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/matlab.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "keywords": { - "keyword": "break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while", - "built_in": "sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " - }, - "illegal": "(\/\/|\"|#|\/\\*|\\s+\/\\w+)", - "contains": [ - { - "className": "function", - "beginKeywords": "function", - "end": "$", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "variants": [ - { - "begin": "\\(", - "end": "\\)" - }, - { - "begin": "\\[", - "end": "\\]" - } - ] - } - ] - }, - { - "className": "built_in", - "begin": "true|false", - "relevance": 0, - "starts": { - "relevance": 0, - "contains": [ - { - "begin": "('|\\.')+" - } - ] - } - }, - { - "begin": "[a-zA-Z][a-zA-Z_0-9]*('|\\.')+", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0, - "starts": { - "$ref": "#contains.1.starts" - } - }, - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "begin": "''" - } - ] - }, - { - "begin": "\\]|}|\\)", - "relevance": 0, - "starts": { - "$ref": "#contains.1.starts" - } - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.4.contains.0" - }, - { - "begin": "\"\"" - } - ], - "starts": { - "$ref": "#contains.1.starts" - } - }, - { - "className": "comment", - "begin": "^\\s*\\%\\{\\s*$", - "end": "^\\s*\\%\\}\\s*$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\%", - "end": "$", - "contains": [ - { - "$ref": "#contains.7.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/maxima.json b/vendor/scrivo/highlight.php/Highlight/languages/maxima.json deleted file mode 100644 index c16d10f23..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/maxima.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "lexemes": "[A-Za-z_%][0-9A-Za-z_%]*", - "keywords": { - "keyword": "if then else elseif for thru do while unless step in and or not", - "literal": "true false unknown inf minf ind und %e %i %pi %phi %gamma", - "built_in": " abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest", - "symbol": "_ __ %|0 %%|0" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - "self" - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b" - }, - { - "begin": "\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b", - "relevance": 10 - }, - { - "begin": "\\b(\\.\\d+|\\d+\\.\\d+)\\b" - }, - { - "begin": "\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b" - } - ] - } - ], - "illegal": "@" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mel.json b/vendor/scrivo/highlight.php/Highlight/languages/mel.json deleted file mode 100644 index c77d7c397..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mel.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "keywords": "int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform", - "illegal": "<\/", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "begin": "[\\$\\%\\@](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.5.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mercury.json b/vendor/scrivo/highlight.php/Highlight/languages/mercury.json deleted file mode 100644 index 7236937d3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mercury.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "aliases": [ - "m", - "moo" - ], - "keywords": { - "keyword": "module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure", - "meta": "inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing", - "built_in": "some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure" - }, - "contains": [ - { - "className": "built_in", - "variants": [ - { - "begin": "<=>" - }, - { - "begin": "<=", - "relevance": 0 - }, - { - "begin": "=>", - "relevance": 0 - }, - { - "begin": "\/\\\\" - }, - { - "begin": "\\\\\\\/" - } - ] - }, - { - "className": "built_in", - "variants": [ - { - "begin": ":-\\|-->" - }, - { - "begin": "=", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "%", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "0'.\\|0[box][0-9a-fA-F]*" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "subst", - "begin": "\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "begin": ":-" - }, - { - "begin": "\\.$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mipsasm.json b/vendor/scrivo/highlight.php/Highlight/languages/mipsasm.json deleted file mode 100644 index 37258da36..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mipsasm.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "mips" - ], - "lexemes": "\\.?[a-zA-Z]\\w*", - "keywords": { - "meta": ".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ", - "built_in": "$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt " - }, - "contains": [ - { - "className": "keyword", - "begin": "\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)", - "end": "\\s" - }, - { - "className": "comment", - "begin": "[;#](?!s*$)", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "[^\\\\]'", - "relevance": 0 - }, - { - "className": "title", - "begin": "\\|", - "end": "\\|", - "illegal": "\\n", - "relevance": 0 - }, - { - "className": "number", - "variants": [ - { - "begin": "0x[0-9a-f]+" - }, - { - "begin": "\\b-?\\d+" - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "variants": [ - { - "begin": "^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:" - }, - { - "begin": "^\\s*[0-9]+:" - }, - { - "begin": "[0-9]+[bf]" - } - ], - "relevance": 0 - } - ], - "illegal": "\/" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mizar.json b/vendor/scrivo/highlight.php/Highlight/languages/mizar.json deleted file mode 100644 index 31b18a04c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mizar.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "keywords": "environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity", - "contains": [ - { - "className": "comment", - "begin": "::", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/mojolicious.json b/vendor/scrivo/highlight.php/Highlight/languages/mojolicious.json deleted file mode 100644 index b3f524637..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/mojolicious.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "subLanguage": "xml", - "contains": [ - { - "className": "meta", - "begin": "^__(END|DATA)__$" - }, - { - "begin": "^\\s*%{1,2}={0,2}", - "end": "$", - "subLanguage": "perl" - }, - { - "begin": "<%{1,2}={0,2}", - "end": "={0,1}%>", - "subLanguage": "perl", - "excludeBegin": true, - "excludeEnd": true - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/monkey.json b/vendor/scrivo/highlight.php/Highlight/languages/monkey.json deleted file mode 100644 index 825f55512..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/monkey.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "keyword": "public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import", - "built_in": "DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI", - "literal": "true false null and or shl shr mod" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "comment", - "begin": "#rem", - "end": "#end", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "'", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "function method", - "end": "[(=:]|$", - "illegal": "\\n", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "$", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "built_in", - "begin": "\\b(self|super)\\b" - }, - { - "className": "meta", - "begin": "\\s*#", - "end": "$", - "keywords": { - "meta-keyword": "if else elseif endif end then" - } - }, - { - "className": "meta", - "begin": "^\\s*strict\\b" - }, - { - "beginKeywords": "alias", - "end": "=", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "[$][a-fA-F0-9]+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/moonscript.json b/vendor/scrivo/highlight.php/Highlight/languages/moonscript.json deleted file mode 100644 index b96358b7a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/moonscript.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "aliases": [ - "moon" - ], - "keywords": { - "keyword": "if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using", - "literal": "true false nil", - "built_in": "_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0, - "starts": { - "end": "(\\s*\/)?", - "relevance": 0 - } - }, - { - "className": "string", - "variants": [ - { - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.1.variants.0.contains.0" - }, - { - "className": "subst", - "begin": "#\\{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "className": "built_in", - "begin": "@__[a-zA-Z]\\w*" - }, - { - "begin": "@[a-zA-Z]\\w*" - }, - { - "begin": "[a-zA-Z]\\w*\\\\[a-zA-Z]\\w*" - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.2" - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.3" - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.4" - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "function", - "begin": "^\\s*[A-Za-z$_][0-9A-Za-z$_]*\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>", - "end": "[-=]>", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\([^\\(]", - "returnBegin": true, - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.2" - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.3" - }, - { - "$ref": "#contains.1.variants.1.contains.1.contains.4" - } - ] - } - ] - } - ] - }, - { - "begin": "[\\(,:=]\\s*", - "relevance": 0, - "contains": [ - { - "className": "function", - "begin": "(\\(.*\\))?\\s*\\B[-=]>", - "end": "[-=]>", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.6.contains.1" - } - ] - } - ] - }, - { - "className": "class", - "beginKeywords": "class", - "end": "$", - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "beginKeywords": "extends", - "endsWithParent": true, - "illegal": "[:=\"\\[\\]]", - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "name", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*:", - "end": ":", - "returnBegin": true, - "returnEnd": true, - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/n1ql.json b/vendor/scrivo/highlight.php/Highlight/languages/n1ql.json deleted file mode 100644 index 77cac21f0..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/n1ql.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "case_insensitive": true, - "contains": [ - { - "beginKeywords": "build create index delete drop explain infer|10 insert merge prepare select update upsert|10", - "end": ";", - "endsWithParent": true, - "keywords": { - "keyword": "all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor", - "literal": "true false null missing|5", - "built_in": "array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring" - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.0" - } - ], - "relevance": 2 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.4" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/nginx.json b/vendor/scrivo/highlight.php/Highlight/languages/nginx.json deleted file mode 100644 index c38d837c9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/nginx.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "aliases": [ - "nginxconf" - ], - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "[a-zA-Z_]\\w*\\s+{", - "returnBegin": true, - "end": "{", - "contains": [ - { - "className": "section", - "begin": "[a-zA-Z_]\\w*" - } - ], - "relevance": 0 - }, - { - "begin": "[a-zA-Z_]\\w*\\s", - "end": ";|{", - "returnBegin": true, - "contains": [ - { - "className": "attribute", - "begin": "[a-zA-Z_]\\w*", - "starts": { - "endsWithParent": true, - "lexemes": "[a-z\/_]+", - "keywords": { - "literal": "on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll \/dev\/poll" - }, - "relevance": 0, - "illegal": "=>", - "contains": [ - { - "$ref": "#contains.0" - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$\\d+" - }, - { - "begin": "\\$\\{", - "end": "}" - }, - { - "begin": "[\\$\\@][a-zA-Z_]\\w*" - } - ] - } - ], - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - } - ] - }, - { - "begin": "([a-z]+):\/", - "end": "\\s", - "endsWithParent": true, - "excludeEnd": true, - "contains": [ - { - "$ref": "#contains.2.contains.0.starts.contains.1.contains.1" - } - ] - }, - { - "className": "regexp", - "contains": [ - { - "$ref": "#contains.2.contains.0.starts.contains.1.contains.0" - }, - { - "$ref": "#contains.2.contains.0.starts.contains.1.contains.1" - } - ], - "variants": [ - { - "begin": "\\s\\^", - "end": "\\s|{|;", - "returnEnd": true - }, - { - "begin": "~\\*?\\s+", - "end": "\\s|{|;", - "returnEnd": true - }, - { - "begin": "\\*(\\.[a-z\\-]+)+" - }, - { - "begin": "([a-z\\-]+\\.)+\\*" - } - ] - }, - { - "className": "number", - "begin": "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b" - }, - { - "className": "number", - "begin": "\\b\\d+[kKmMgGdshdwy]*\\b", - "relevance": 0 - }, - { - "$ref": "#contains.2.contains.0.starts.contains.1.contains.1" - } - ] - } - } - ], - "relevance": 0 - } - ], - "illegal": "[^\\s\\}]" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/nimrod.json b/vendor/scrivo/highlight.php/Highlight/languages/nimrod.json deleted file mode 100644 index 65e4c6365..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/nimrod.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "aliases": [ - "nim" - ], - "keywords": { - "keyword": "addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield", - "literal": "shared guarded stdin stdout stderr result true false", - "built_in": "int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic" - }, - "contains": [ - { - "className": "meta", - "begin": "{\\.", - "end": "\\.}", - "relevance": 10 - }, - { - "className": "string", - "begin": "[a-zA-Z]\\w*\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "string", - "begin": "([a-zA-Z]\\w*)?\"\"\"", - "end": "\"\"\"" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "type", - "begin": "\\b[A-Z]\\w+\\b", - "relevance": 0 - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?" - }, - { - "begin": "\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?" - }, - { - "begin": "\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?" - }, - { - "begin": "\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?" - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/nix.json b/vendor/scrivo/highlight.php/Highlight/languages/nix.json deleted file mode 100644 index 136a30119..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/nix.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "aliases": [ - "nixos" - ], - "keywords": { - "keyword": "rec with let in inherit assert if else then", - "literal": "true false or and null", - "built_in": "import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation" - }, - "contains": [ - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "contains": [ - { - "className": "subst", - "begin": "\\$\\{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains" - } - } - ], - "variants": [ - { - "begin": "''", - "end": "''" - }, - { - "begin": "\"", - "end": "\"" - } - ] - }, - { - "begin": "[a-zA-Z0-9\\-_]+(\\s*=)", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "\\S+" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/nsis.json b/vendor/scrivo/highlight.php/Highlight/languages/nsis.json deleted file mode 100644 index 12911dfe3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/nsis.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "case_insensitive": false, - "keywords": { - "keyword": "Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle", - "literal": "admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib" - }, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "Function PageEx Section SectionGroup", - "end": "$" - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - }, - { - "begin": "`", - "end": "`" - } - ], - "illegal": "\\n", - "contains": [ - { - "className": "meta", - "begin": "\\$(\\\\[nrt]|\\$)" - }, - { - "className": "variable", - "begin": "\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)" - }, - { - "className": "variable", - "begin": "\\$+{[\\w\\.:-]+}" - }, - { - "className": "variable", - "begin": "\\$+\\w+", - "illegal": "\\(\\){}" - }, - { - "className": "variable", - "begin": "\\$+\\([\\w\\^\\.:-]+\\)" - } - ] - }, - { - "className": "keyword", - "begin": "\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)" - }, - { - "$ref": "#contains.4.contains.2" - }, - { - "$ref": "#contains.4.contains.3" - }, - { - "$ref": "#contains.4.contains.4" - }, - { - "className": "params", - "begin": "(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)" - }, - { - "className": "class", - "begin": "\\w+\\:\\:\\w+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/objectivec.json b/vendor/scrivo/highlight.php/Highlight/languages/objectivec.json deleted file mode 100644 index 48e4bc54b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/objectivec.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "aliases": [ - "mm", - "objc", - "obj-c" - ], - "keywords": { - "keyword": "int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN", - "literal": "false true FALSE TRUE nil YES NO NULL", - "built_in": "BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once" - }, - "lexemes": "[a-zA-Z@][a-zA-Z0-9_]*", - "illegal": "<\/", - "contains": [ - { - "className": "built_in", - "begin": "\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "@\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - } - ] - }, - { - "className": "meta", - "begin": "#\\s*[a-z]+\\b", - "end": "$", - "keywords": { - "meta-keyword": "if else elif endif define undef warning error line pragma ifdef ifndef include" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "className": "meta-string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": { - "$ref": "#contains.4.contains" - } - }, - { - "className": "meta-string", - "begin": "<.*?>", - "end": "$", - "illegal": "\\n" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "class", - "begin": "(@interface|@class|@protocol|@implementation)\\b", - "end": "({|$)", - "excludeEnd": true, - "keywords": "@interface @class @protocol @implementation", - "lexemes": "[a-zA-Z@][a-zA-Z0-9_]*", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "begin": "\\.[a-zA-Z_]\\w*", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ocaml.json b/vendor/scrivo/highlight.php/Highlight/languages/ocaml.json deleted file mode 100644 index db501bc5c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ocaml.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "aliases": [ - "ml" - ], - "keywords": { - "keyword": "and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", - "built_in": "array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", - "literal": "true false" - }, - "illegal": "\\\/\\\/|>>", - "lexemes": "[a-z_]\\w*!?", - "contains": [ - { - "className": "literal", - "begin": "\\[(\\|\\|)?\\]|\\(\\)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - "self", - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "symbol", - "begin": "'[A-Za-z_](?!')[\\w']*" - }, - { - "className": "type", - "begin": "`[A-Z][\\w']*" - }, - { - "className": "type", - "begin": "\\b[A-Z][\\w']*", - "relevance": 0 - }, - { - "begin": "[a-z_]\\w*'[\\w']*", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", - "relevance": 0 - }, - { - "begin": "[-=]>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/openscad.json b/vendor/scrivo/highlight.php/Highlight/languages/openscad.json deleted file mode 100644 index 8469f9c38..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/openscad.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "aliases": [ - "scad" - ], - "keywords": { - "keyword": "function module include use for intersection_for if else \\%", - "literal": "false true PI undef", - "built_in": "circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(e-?\\d+)?", - "relevance": 0 - }, - { - "className": "meta", - "keywords": { - "meta-keyword": "include use" - }, - "begin": "include|use <", - "end": ">" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "keyword", - "begin": "\\$(f[asn]|t|vp[rtd]|children)" - }, - { - "begin": "[*!#%]", - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "module function", - "end": "\\=|\\{", - "contains": [ - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "className": "literal", - "begin": "false|true|PI|undef" - } - ] - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/oxygene.json b/vendor/scrivo/highlight.php/Highlight/languages/oxygene.json deleted file mode 100644 index c911b2eef..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/oxygene.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "case_insensitive": true, - "lexemes": "\\.?\\w+", - "keywords": "abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained", - "illegal": "(\"|\\$[G-Zg-z]|\\\/\\*|<\/|=>|->)", - "contains": [ - { - "className": "comment", - "begin": "{", - "end": "}", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''" - } - ] - }, - { - "className": "string", - "begin": "(#\\d+)+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "function constructor destructor procedure method", - "end": "[:;]", - "keywords": "function constructor|10 destructor|10 procedure|10 method|10", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "keywords": "abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - } - ] - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - }, - { - "className": "class", - "begin": "=\\bclass\\b", - "end": "end;", - "keywords": "abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.6" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/parser3.json b/vendor/scrivo/highlight.php/Highlight/languages/parser3.json deleted file mode 100644 index f938a3c51..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/parser3.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "subLanguage": "xml", - "relevance": 0, - "contains": [ - { - "className": "comment", - "begin": "^#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\\^rem{", - "end": "}", - "contains": [ - { - "className": "comment", - "begin": "{", - "end": "}", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "meta", - "begin": "^@(?:BASE|USE|CLASS|OPTIONS)$", - "relevance": 10 - }, - { - "className": "title", - "begin": "@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$" - }, - { - "className": "variable", - "begin": "\\$\\{?[\\w\\-\\.\\:]+\\}?" - }, - { - "className": "keyword", - "begin": "\\^[\\w\\-\\.\\:]+" - }, - { - "className": "number", - "begin": "\\^#[0-9a-fA-F]+" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/perl.json b/vendor/scrivo/highlight.php/Highlight/languages/perl.json deleted file mode 100644 index 25f16c4eb..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/perl.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "aliases": [ - "pl", - "pm" - ], - "lexemes": "[\\w\\.]+", - "keywords": "getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when", - "contains": [ - { - "variants": [ - { - "begin": "\\$\\d" - }, - { - "begin": "[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)" - }, - { - "begin": "[\\$%@][^\\s\\w{]", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "^\\=\\w", - "end": "\\=cut", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "endsWithParent": true - }, - { - "begin": "->{", - "end": "}", - "contains": { - "$ref": "#contains" - } - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "[$@]\\{", - "end": "\\}", - "keywords": "getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when", - "contains": { - "$ref": "#contains" - } - }, - { - "$ref": "#contains.0" - } - ], - "variants": [ - { - "begin": "q[qwxr]?\\s*\\(", - "end": "\\)", - "relevance": 5 - }, - { - "begin": "q[qwxr]?\\s*\\[", - "end": "\\]", - "relevance": 5 - }, - { - "begin": "q[qwxr]?\\s*\\{", - "end": "\\}", - "relevance": 5 - }, - { - "begin": "q[qwxr]?\\s*\\|", - "end": "\\|", - "relevance": 5 - }, - { - "begin": "q[qwxr]?\\s*\\<", - "end": "\\>", - "relevance": 5 - }, - { - "begin": "qw\\s+q", - "end": "q", - "relevance": 5 - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "begin": "{\\w+}", - "contains": [], - "relevance": 0 - }, - { - "begin": "-?\\w+\\s*\\=\\>", - "contains": [], - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", - "relevance": 0 - }, - { - "begin": "(\\\/\\\/|!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\b(split|return|print|reverse|grep)\\b)\\s*", - "keywords": "split return print reverse grep", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.1" - }, - { - "className": "regexp", - "begin": "(s|tr|y)\/(\\\\.|[^\/])*\/(\\\\.|[^\/])*\/[a-z]*", - "relevance": 10 - }, - { - "className": "regexp", - "begin": "(m|qr)?\/", - "end": "\/[a-z]*", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ], - "relevance": 0 - } - ] - }, - { - "className": "function", - "beginKeywords": "sub", - "end": "(\\s*\\(.*?\\))?[;{]", - "excludeEnd": true, - "relevance": 5, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "begin": "-\\w\\b", - "relevance": 0 - }, - { - "begin": "^__DATA__$", - "end": "^__END__$", - "subLanguage": "mojolicious", - "contains": [ - { - "begin": "^@@.*", - "end": "$", - "className": "comment" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/pf.json b/vendor/scrivo/highlight.php/Highlight/languages/pf.json deleted file mode 100644 index 15c869dac..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/pf.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "aliases": [ - "pf.conf" - ], - "lexemes": "[a-z0-9_<>-]+", - "keywords": { - "built_in": "block match pass load anchor|5 antispoof|10 set table", - "keyword": "in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id", - "literal": "all any no-route self urpf-failed egress|5 unknown" - }, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "variable", - "begin": "\\$[\\w\\d#@][\\w\\d_]*" - }, - { - "className": "variable", - "begin": "<(?!\\\/)", - "end": ">" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/pgsql.json b/vendor/scrivo/highlight.php/Highlight/languages/pgsql.json deleted file mode 100644 index 9141ee7c9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/pgsql.json +++ /dev/null @@ -1,330 +0,0 @@ -{ - "aliases": [ - "postgres", - "postgresql" - ], - "case_insensitive": true, - "keywords": { - "keyword": "ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ", - "built_in": "CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED " - }, - "illegal": ":==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|{{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:", - "contains": [ - { - "className": "keyword", - "variants": [ - { - "begin": "\\bTEXT\\s*SEARCH\\b" - }, - { - "begin": "\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b" - }, - { - "begin": "\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b" - }, - { - "begin": "\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b" - }, - { - "begin": "\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b" - }, - { - "begin": "\\bNULLS\\s+(FIRST|LAST)\\b" - }, - { - "begin": "\\bEVENT\\s+TRIGGER\\b" - }, - { - "begin": "\\b(MAPPING|OR)\\s+REPLACE\\b" - }, - { - "begin": "\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b" - }, - { - "begin": "\\b(SHARE|EXCLUSIVE)\\s+MODE\\b" - }, - { - "begin": "\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b" - }, - { - "begin": "\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b" - }, - { - "begin": "\\bPRESERVE\\s+ROWS\\b" - }, - { - "begin": "\\bDISCARD\\s+PLANS\\b" - }, - { - "begin": "\\bREFERENCING\\s+(OLD|NEW)\\b" - }, - { - "begin": "\\bSKIP\\s+LOCKED\\b" - }, - { - "begin": "\\bGROUPING\\s+SETS\\b" - }, - { - "begin": "\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b" - }, - { - "begin": "\\b(WITH|WITHOUT)\\s+HOLD\\b" - }, - { - "begin": "\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b" - }, - { - "begin": "\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b" - }, - { - "begin": "\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b" - }, - { - "begin": "\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b" - }, - { - "begin": "\\bIS\\s+(NOT\\s+)?UNKNOWN\\b" - }, - { - "begin": "\\bSECURITY\\s+LABEL\\b" - }, - { - "begin": "\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b" - }, - { - "begin": "\\bWITH\\s+(NO\\s+)?DATA\\b" - }, - { - "begin": "\\b(FOREIGN|SET)\\s+DATA\\b" - }, - { - "begin": "\\bSET\\s+(CATALOG|CONSTRAINTS)\\b" - }, - { - "begin": "\\b(WITH|FOR)\\s+ORDINALITY\\b" - }, - { - "begin": "\\bIS\\s+(NOT\\s+)?DOCUMENT\\b" - }, - { - "begin": "\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b" - }, - { - "begin": "\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b" - }, - { - "begin": "\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b" - }, - { - "begin": "\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b" - }, - { - "begin": "\\bAT\\s+TIME\\s+ZONE\\b" - }, - { - "begin": "\\bGRANTED\\s+BY\\b" - }, - { - "begin": "\\bRETURN\\s+(QUERY|NEXT)\\b" - }, - { - "begin": "\\b(ATTACH|DETACH)\\s+PARTITION\\b" - }, - { - "begin": "\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b" - }, - { - "begin": "\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b" - }, - { - "begin": "\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b" - } - ] - }, - { - "begin": "\\b(FORMAT|FAMILY|VERSION)\\s*\\(" - }, - { - "begin": "\\bINCLUDE\\s*\\(", - "keywords": "INCLUDE" - }, - { - "begin": "\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))" - }, - { - "begin": "\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=" - }, - { - "begin": "\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b", - "relevance": 10 - }, - { - "begin": "\\bEXTRACT\\s*\\(", - "end": "\\bFROM\\b", - "returnEnd": true, - "keywords": { - "type": "CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR" - } - }, - { - "begin": "\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME", - "keywords": { - "keyword": "NAME" - } - }, - { - "begin": "\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)", - "keywords": { - "keyword": "DOCUMENT CONTENT" - } - }, - { - "beginKeywords": "CACHE INCREMENT MAXVALUE MINVALUE", - "end": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "returnEnd": true, - "keywords": "BY CACHE INCREMENT MAXVALUE MINVALUE" - }, - { - "className": "type", - "begin": "\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b" - }, - { - "className": "type", - "begin": "\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b" - }, - { - "begin": "\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b", - "keywords": { - "keyword": "RETURNS", - "type": "LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER" - } - }, - { - "begin": "\\b(ARRAY_AGG|AVG|BIT_AND|BIT_OR|BOOL_AND|BOOL_OR|COUNT|EVERY|JSON_AGG|JSONB_AGG|JSON_OBJECT_AGG|JSONB_OBJECT_AGG|MAX|MIN|MODE|STRING_AGG|SUM|XMLAGG|CORR|COVAR_POP|COVAR_SAMP|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|STDDEV|STDDEV_POP|STDDEV_SAMP|VARIANCE|VAR_POP|VAR_SAMP|PERCENTILE_CONT|PERCENTILE_DISC|ROW_NUMBER|RANK|DENSE_RANK|PERCENT_RANK|CUME_DIST|NTILE|LAG|LEAD|FIRST_VALUE|LAST_VALUE|NTH_VALUE|NUM_NONNULLS|NUM_NULLS|ABS|CBRT|CEIL|CEILING|DEGREES|DIV|EXP|FLOOR|LN|LOG|MOD|PI|POWER|RADIANS|ROUND|SCALE|SIGN|SQRT|TRUNC|WIDTH_BUCKET|RANDOM|SETSEED|ACOS|ACOSD|ASIN|ASIND|ATAN|ATAND|ATAN2|ATAN2D|COS|COSD|COT|COTD|SIN|SIND|TAN|TAND|BIT_LENGTH|CHAR_LENGTH|CHARACTER_LENGTH|LOWER|OCTET_LENGTH|OVERLAY|POSITION|SUBSTRING|TREAT|TRIM|UPPER|ASCII|BTRIM|CHR|CONCAT|CONCAT_WS|CONVERT|CONVERT_FROM|CONVERT_TO|DECODE|ENCODE|INITCAPLEFT|LENGTH|LPAD|LTRIM|MD5|PARSE_IDENT|PG_CLIENT_ENCODING|QUOTE_IDENT|QUOTE_LITERAL|QUOTE_NULLABLE|REGEXP_MATCH|REGEXP_MATCHES|REGEXP_REPLACE|REGEXP_SPLIT_TO_ARRAY|REGEXP_SPLIT_TO_TABLE|REPEAT|REPLACE|REVERSE|RIGHT|RPAD|RTRIM|SPLIT_PART|STRPOS|SUBSTR|TO_ASCII|TO_HEX|TRANSLATE|OCTET_LENGTH|GET_BIT|GET_BYTE|SET_BIT|SET_BYTE|TO_CHAR|TO_DATE|TO_NUMBER|TO_TIMESTAMP|AGE|CLOCK_TIMESTAMP|DATE_PART|DATE_TRUNC|ISFINITE|JUSTIFY_DAYS|JUSTIFY_HOURS|JUSTIFY_INTERVAL|MAKE_DATE|MAKE_INTERVAL|MAKE_TIME|MAKE_TIMESTAMP|MAKE_TIMESTAMPTZ|NOW|STATEMENT_TIMESTAMP|TIMEOFDAY|TRANSACTION_TIMESTAMP|ENUM_FIRST|ENUM_LAST|ENUM_RANGE|AREA|CENTER|DIAMETER|HEIGHT|ISCLOSED|ISOPEN|NPOINTS|PCLOSE|POPEN|RADIUS|WIDTH|BOX|BOUND_BOX|CIRCLE|LINE|LSEG|PATH|POLYGON|ABBREV|BROADCAST|HOST|HOSTMASK|MASKLEN|NETMASK|NETWORK|SET_MASKLEN|TEXT|INET_SAME_FAMILYINET_MERGE|MACADDR8_SET7BIT|ARRAY_TO_TSVECTOR|GET_CURRENT_TS_CONFIG|NUMNODE|PLAINTO_TSQUERY|PHRASETO_TSQUERY|WEBSEARCH_TO_TSQUERY|QUERYTREE|SETWEIGHT|STRIP|TO_TSQUERY|TO_TSVECTOR|JSON_TO_TSVECTOR|JSONB_TO_TSVECTOR|TS_DELETE|TS_FILTER|TS_HEADLINE|TS_RANK|TS_RANK_CD|TS_REWRITE|TSQUERY_PHRASE|TSVECTOR_TO_ARRAY|TSVECTOR_UPDATE_TRIGGER|TSVECTOR_UPDATE_TRIGGER_COLUMN|XMLCOMMENT|XMLCONCAT|XMLELEMENT|XMLFOREST|XMLPI|XMLROOT|XMLEXISTS|XML_IS_WELL_FORMED|XML_IS_WELL_FORMED_DOCUMENT|XML_IS_WELL_FORMED_CONTENT|XPATH|XPATH_EXISTS|XMLTABLE|XMLNAMESPACES|TABLE_TO_XML|TABLE_TO_XMLSCHEMA|TABLE_TO_XML_AND_XMLSCHEMA|QUERY_TO_XML|QUERY_TO_XMLSCHEMA|QUERY_TO_XML_AND_XMLSCHEMA|CURSOR_TO_XML|CURSOR_TO_XMLSCHEMA|SCHEMA_TO_XML|SCHEMA_TO_XMLSCHEMA|SCHEMA_TO_XML_AND_XMLSCHEMA|DATABASE_TO_XML|DATABASE_TO_XMLSCHEMA|DATABASE_TO_XML_AND_XMLSCHEMA|XMLATTRIBUTES|TO_JSON|TO_JSONB|ARRAY_TO_JSON|ROW_TO_JSON|JSON_BUILD_ARRAY|JSONB_BUILD_ARRAY|JSON_BUILD_OBJECT|JSONB_BUILD_OBJECT|JSON_OBJECT|JSONB_OBJECT|JSON_ARRAY_LENGTH|JSONB_ARRAY_LENGTH|JSON_EACH|JSONB_EACH|JSON_EACH_TEXT|JSONB_EACH_TEXT|JSON_EXTRACT_PATH|JSONB_EXTRACT_PATH|JSON_OBJECT_KEYS|JSONB_OBJECT_KEYS|JSON_POPULATE_RECORD|JSONB_POPULATE_RECORD|JSON_POPULATE_RECORDSET|JSONB_POPULATE_RECORDSET|JSON_ARRAY_ELEMENTS|JSONB_ARRAY_ELEMENTS|JSON_ARRAY_ELEMENTS_TEXT|JSONB_ARRAY_ELEMENTS_TEXT|JSON_TYPEOF|JSONB_TYPEOF|JSON_TO_RECORD|JSONB_TO_RECORD|JSON_TO_RECORDSET|JSONB_TO_RECORDSET|JSON_STRIP_NULLS|JSONB_STRIP_NULLS|JSONB_SET|JSONB_INSERT|JSONB_PRETTY|CURRVAL|LASTVAL|NEXTVAL|SETVAL|COALESCE|NULLIF|GREATEST|LEAST|ARRAY_APPEND|ARRAY_CAT|ARRAY_NDIMS|ARRAY_DIMS|ARRAY_FILL|ARRAY_LENGTH|ARRAY_LOWER|ARRAY_POSITION|ARRAY_POSITIONS|ARRAY_PREPEND|ARRAY_REMOVE|ARRAY_REPLACE|ARRAY_TO_STRING|ARRAY_UPPER|CARDINALITY|STRING_TO_ARRAY|UNNEST|ISEMPTY|LOWER_INC|UPPER_INC|LOWER_INF|UPPER_INF|RANGE_MERGE|GENERATE_SERIES|GENERATE_SUBSCRIPTS|CURRENT_DATABASE|CURRENT_QUERY|CURRENT_SCHEMA|CURRENT_SCHEMAS|INET_CLIENT_ADDR|INET_CLIENT_PORT|INET_SERVER_ADDR|INET_SERVER_PORT|ROW_SECURITY_ACTIVE|FORMAT_TYPE|TO_REGCLASS|TO_REGPROC|TO_REGPROCEDURE|TO_REGOPER|TO_REGOPERATOR|TO_REGTYPE|TO_REGNAMESPACE|TO_REGROLE|COL_DESCRIPTION|OBJ_DESCRIPTION|SHOBJ_DESCRIPTION|TXID_CURRENT|TXID_CURRENT_IF_ASSIGNED|TXID_CURRENT_SNAPSHOT|TXID_SNAPSHOT_XIP|TXID_SNAPSHOT_XMAX|TXID_SNAPSHOT_XMIN|TXID_VISIBLE_IN_SNAPSHOT|TXID_STATUS|CURRENT_SETTING|SET_CONFIG|BRIN_SUMMARIZE_NEW_VALUES|BRIN_SUMMARIZE_RANGE|BRIN_DESUMMARIZE_RANGE|GIN_CLEAN_PENDING_LIST|SUPPRESS_REDUNDANT_UPDATES_TRIGGER|LO_FROM_BYTEA|LO_PUT|LO_GET|LO_CREAT|LO_CREATE|LO_UNLINK|LO_IMPORT|LO_EXPORT|LOREAD|LOWRITE|GROUPING|CAST)\\s*\\(" - }, - { - "begin": "\\.(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\b" - }, - { - "begin": "\\b(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\s+PATH\\b", - "keywords": { - "keyword": "PATH", - "type": "BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 " - } - }, - { - "className": "type", - "begin": "\\b(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\b" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''" - } - ] - }, - { - "className": "string", - "begin": "(e|E|u&|U&)'", - "end": "'", - "contains": [ - { - "begin": "\\\\." - } - ], - "relevance": 10 - }, - { - "begin": "\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$", - "endSameAsBegin": true, - "contains": [ - { - "subLanguage": [ - "pgsql", - "perl", - "python", - "tcl", - "r", - "lua", - "java", - "php", - "ruby", - "bash", - "scheme", - "xml", - "json" - ], - "endsWithParent": true - } - ] - }, - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "$ref": "#contains.22.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "variants": [ - { - "begin": "%(ROW)?TYPE", - "relevance": 10 - }, - { - "begin": "\\$\\d+" - }, - { - "begin": "^#\\w", - "end": "$" - } - ] - }, - { - "className": "symbol", - "begin": "<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>", - "relevance": 10 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/php.json b/vendor/scrivo/highlight.php/Highlight/languages/php.json deleted file mode 100644 index ddcab7933..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/php.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "aliases": [ - "php", - "php3", - "php4", - "php5", - "php6", - "php7" - ], - "case_insensitive": true, - "keywords": "and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally", - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "className": "meta", - "begin": "<\\?(php)?|\\?>" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "__halt_compiler.+?;", - "end": false, - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "endsWithParent": true, - "keywords": "__halt_compiler", - "lexemes": "[a-zA-Z_]\\w*" - }, - { - "className": "string", - "begin": "<<<['\"]?\\w+['\"]?$", - "end": "^\\w+;?$", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "variants": [ - { - "begin": "\\$\\w+" - }, - { - "begin": "\\{\\$", - "end": "\\}" - } - ] - } - ] - }, - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "keyword", - "begin": "\\$this\\b" - }, - { - "begin": "\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*" - }, - { - "begin": "(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*" - }, - { - "className": "function", - "beginKeywords": "function", - "end": "[;{]", - "excludeEnd": true, - "illegal": "\\$|\\[|%", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "$ref": "#contains.7" - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "contains": [ - { - "$ref": "#contains.4.contains.0" - }, - { - "$ref": "#contains.1.contains.0" - } - ], - "variants": [ - { - "begin": "b\"", - "end": "\"" - }, - { - "begin": "b'", - "end": "'" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": null, - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - } - ] - }, - { - "variants": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "{", - "excludeEnd": true, - "illegal": "[:\\(\\$\"]", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "$ref": "#contains.9.contains.0" - } - ] - }, - { - "beginKeywords": "namespace", - "end": ";", - "illegal": "[\\.']", - "contains": [ - { - "$ref": "#contains.9.contains.0" - } - ] - }, - { - "beginKeywords": "use", - "end": ";", - "contains": [ - { - "$ref": "#contains.9.contains.0" - } - ] - }, - { - "begin": "=>" - }, - { - "$ref": "#contains.9.contains.1.contains.3" - }, - { - "$ref": "#contains.9.contains.1.contains.4" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/plaintext.json b/vendor/scrivo/highlight.php/Highlight/languages/plaintext.json deleted file mode 100644 index 4fac21cfd..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/plaintext.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "disableAutodetect": true -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/pony.json b/vendor/scrivo/highlight.php/Highlight/languages/pony.json deleted file mode 100644 index 5757ae220..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/pony.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "keywords": { - "keyword": "actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor", - "meta": "iso val tag trn box ref", - "literal": "this false true" - }, - "contains": [ - { - "className": "type", - "begin": "\\b_?[A-Z][\\w]*", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"", - "relevance": 10 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ], - "relevance": 0 - }, - { - "begin": "[a-zA-Z]\\w*'", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/powershell.json b/vendor/scrivo/highlight.php/Highlight/languages/powershell.json deleted file mode 100644 index 3b43c2cb9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/powershell.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "aliases": [ - "ps", - "ps1" - ], - "lexemes": "-?[A-z\\.\\-]+", - "case_insensitive": true, - "keywords": { - "keyword": "if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter" - }, - "contains": [ - { - "className": "function", - "begin": "\\[.*\\]\\s*[\\w]+[ ]??\\(", - "end": "$", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "begin": "\\[", - "end": "\\]", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0, - "contains": [ - "self", - { - "$ref": "#contains.0" - }, - { - "className": "comment", - "begin": null, - "end": null, - "contains": [ - { - "className": "doctag", - "variants": [ - { - "begin": "\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)" - }, - { - "begin": "\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+" - } - ] - } - ], - "variants": [ - { - "begin": "#", - "end": "$" - }, - { - "begin": "<#", - "end": "#>" - } - ] - }, - { - "begin": "`[\\s\\S]", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "@\"", - "end": "^\"@" - } - ], - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.3" - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$\\B" - }, - { - "className": "keyword", - "begin": "\\$this" - }, - { - "begin": "\\$[\\w\\d][\\w\\d_:]*" - } - ] - }, - { - "className": "variable", - "begin": "\\$[A-z]", - "end": "[^A-z]" - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "@'", - "end": "^'@" - } - ] - }, - { - "className": "built_in", - "variants": [ - { - "begin": "(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|New|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Complete|Confirm|Deny|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\w\\d]+" - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.5.contains.1" - }, - { - "className": "literal", - "begin": "\\$(null|true|false)\\b" - }, - { - "className": "selector-tag", - "begin": "\\@\\B", - "relevance": 0 - }, - { - "begin": "(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)", - "className": "built_in", - "relevance": 0 - }, - { - "className": "type", - "begin": "[\\.\\w\\d]+", - "relevance": 0 - } - ] - }, - { - "className": "keyword", - "begin": "(if|else|foreach|return|do|while|until|elseif|begin|for|trap|data|dynamicparam|end|break|throw|param|continue|finally|in|switch|exit|filter|try|process|catch|hidden|static|parameter)\\b", - "endsParent": true, - "relevance": 0 - }, - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "endsParent": true - } - ] - }, - { - "$ref": "#contains.0.contains.0.contains.2" - }, - { - "$ref": "#contains.0.contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.0.contains.6" - }, - { - "$ref": "#contains.0.contains.0.contains.7" - }, - { - "$ref": "#contains.0.contains.0.contains.5.contains.1" - }, - { - "$ref": "#contains.0.contains.0.contains.9" - }, - { - "$ref": "#contains.0.contains.0.contains.10" - }, - { - "className": "class", - "beginKeywords": "class enum", - "end": "\\s*[{]", - "excludeEnd": true, - "relevance": 0, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "function", - "begin": "function\\s+", - "end": "\\s*\\{|$", - "excludeEnd": true, - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "begin": "function", - "relevance": 0, - "className": "keyword" - }, - { - "className": "title", - "begin": "\\w[\\w\\d]*((-)[\\w\\d]+)*", - "relevance": 0 - }, - { - "begin": "\\(", - "end": "\\)", - "className": "params", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.5.contains.1" - } - ] - } - ] - }, - { - "begin": "using\\s", - "end": "$", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.0.contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.0.contains.6" - }, - { - "className": "keyword", - "begin": "(using|assembly|command|module|namespace|type)" - } - ] - }, - { - "variants": [ - { - "className": "operator", - "begin": "(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\b" - }, - { - "className": "literal", - "begin": "(-)[\\w\\d]+", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.0" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/processing.json b/vendor/scrivo/highlight.php/Highlight/languages/processing.json deleted file mode 100644 index 087c54b81..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/processing.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "keywords": { - "keyword": "BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private", - "literal": "P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI", - "title": "setup draw", - "built_in": "displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/profile.json b/vendor/scrivo/highlight.php/Highlight/languages/profile.json deleted file mode 100644 index a3d2b2ac2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/profile.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "begin": "[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}", - "end": ":", - "excludeEnd": true - }, - { - "begin": "(ncalls|tottime|cumtime)", - "end": "$", - "keywords": "ncalls tottime|10 cumtime|10 filename", - "relevance": 10 - }, - { - "begin": "function calls", - "end": "$", - "contains": [ - { - "$ref": "#contains.0" - } - ], - "relevance": 10 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\\(", - "end": "\\)$", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/prolog.json b/vendor/scrivo/highlight.php/Highlight/languages/prolog.json deleted file mode 100644 index 9d3432f8d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/prolog.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "contains": [ - { - "begin": "[a-z][A-Za-z0-9_]*", - "relevance": 0 - }, - { - "className": "symbol", - "variants": [ - { - "begin": "[A-Z][a-zA-Z0-9_]*" - }, - { - "begin": "_[A-Za-z0-9_]*" - } - ], - "relevance": 0 - }, - { - "begin": "\\(", - "end": "\\)", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "begin": ":-" - }, - { - "begin": "\\[", - "end": "\\]", - "contains": { - "$ref": "#contains.2.contains" - } - }, - { - "className": "comment", - "begin": "%", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.5.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.7.contains.0" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.2.contains.7.contains.0" - } - ] - }, - { - "className": "string", - "begin": "0\\'(\\\\\\'|.)" - }, - { - "className": "string", - "begin": "0\\'\\\\s" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.2.contains.3" - }, - { - "$ref": "#contains.2.contains.4" - }, - { - "$ref": "#contains.2.contains.5" - }, - { - "$ref": "#contains.2.contains.6" - }, - { - "$ref": "#contains.2.contains.7" - }, - { - "$ref": "#contains.2.contains.8" - }, - { - "$ref": "#contains.2.contains.9" - }, - { - "$ref": "#contains.2.contains.10" - }, - { - "$ref": "#contains.2.contains.11" - }, - { - "$ref": "#contains.2.contains.12" - }, - { - "begin": "\\.$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/properties.json b/vendor/scrivo/highlight.php/Highlight/languages/properties.json deleted file mode 100644 index 2c639824e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/properties.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "\\S", - "contains": [ - { - "className": "comment", - "begin": "^\\s*[!#]", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "([^\\\\\\W:= \\t\\f\\n]|\\\\.)+([ \\t\\f]*[:=][ \\t\\f]*|[ \\t\\f]+)", - "returnBegin": true, - "contains": [ - { - "className": "attr", - "begin": "([^\\\\\\W:= \\t\\f\\n]|\\\\.)+", - "endsParent": true, - "relevance": 0 - } - ], - "starts": { - "end": "([ \\t\\f]*[:=][ \\t\\f]*|[ \\t\\f]+)", - "relevance": 0, - "starts": { - "className": "string", - "end": "$", - "relevance": 0, - "contains": [ - { - "begin": "\\\\\\n" - } - ] - } - } - }, - { - "begin": "([^\\\\:= \\t\\f\\n]|\\\\.)+([ \\t\\f]*[:=][ \\t\\f]*|[ \\t\\f]+)", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "meta", - "begin": "([^\\\\:= \\t\\f\\n]|\\\\.)+", - "endsParent": true, - "relevance": 0 - } - ], - "starts": { - "$ref": "#contains.1.starts" - } - }, - { - "className": "attr", - "relevance": 0, - "begin": "([^\\\\:= \\t\\f\\n]|\\\\.)+[ \\t\\f]*$" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/protobuf.json b/vendor/scrivo/highlight.php/Highlight/languages/protobuf.json deleted file mode 100644 index bd731c5fe..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/protobuf.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "keywords": { - "keyword": "package import option optional required repeated group oneof", - "built_in": "double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes", - "literal": "true false" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "message enum service", - "end": "\\{", - "illegal": "\\n", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "starts": { - "endsWithParent": true, - "excludeEnd": true - } - } - ] - }, - { - "className": "function", - "beginKeywords": "rpc", - "end": ";", - "excludeEnd": true, - "keywords": "rpc returns" - }, - { - "begin": "^\\s*[A-Z_]+", - "end": "\\s*=", - "excludeEnd": true - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/puppet.json b/vendor/scrivo/highlight.php/Highlight/languages/puppet.json deleted file mode 100644 index 179e3f567..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/puppet.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "aliases": [ - "pp" - ], - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "variable", - "begin": "\\$([A-Za-z_]|::)(\\w|::)*" - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "$ref": "#contains.1" - } - ], - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - } - ] - }, - { - "beginKeywords": "class", - "end": "\\{|;", - "illegal": "=", - "contains": [ - { - "className": "title", - "begin": "([A-Za-z_]|::)(\\w|::)*", - "relevance": 0 - }, - { - "$ref": "#contains.0" - } - ] - }, - { - "beginKeywords": "define", - "end": "\\{", - "contains": [ - { - "className": "section", - "begin": "[a-zA-Z]\\w*", - "endsParent": true - } - ] - }, - { - "begin": "[a-zA-Z]\\w*\\s+\\{", - "returnBegin": true, - "end": "\\S", - "contains": [ - { - "className": "keyword", - "begin": "[a-zA-Z]\\w*" - }, - { - "begin": "\\{", - "end": "\\}", - "keywords": { - "keyword": "and case default else elsif false if in import enherits node or true undef unless main settings $string ", - "literal": "alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted", - "built_in": "architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version" - }, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.0" - }, - { - "begin": "[a-zA-Z_]+\\s*=>", - "returnBegin": true, - "end": "=>", - "contains": [ - { - "className": "attr", - "begin": "[a-zA-Z]\\w*" - } - ] - }, - { - "className": "number", - "begin": "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", - "relevance": 0 - }, - { - "$ref": "#contains.1" - } - ] - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/purebasic.json b/vendor/scrivo/highlight.php/Highlight/languages/purebasic.json deleted file mode 100644 index 15914ecc8..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/purebasic.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "aliases": [ - "pb", - "pbi" - ], - "keywords": "Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule UseModule Wend While With XIncludeFile XOr", - "contains": [ - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "function", - "begin": "\\b(Procedure|Declare)(C|CDLL|DLL)?\\b", - "end": "\\(", - "excludeEnd": true, - "returnBegin": true, - "contains": [ - { - "className": "keyword", - "begin": "(Procedure|Declare)(C|CDLL|DLL)?", - "excludeEnd": true - }, - { - "className": "type", - "begin": "\\.\\w*" - }, - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "(~)?\"", - "end": "\"", - "illegal": "\\n" - }, - { - "className": "symbol", - "begin": "#[a-zA-Z_]\\w*\\$?" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/python.json b/vendor/scrivo/highlight.php/Highlight/languages/python.json deleted file mode 100644 index becf930a9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/python.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "aliases": [ - "py", - "gyp", - "ipython" - ], - "keywords": { - "keyword": "and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10", - "built_in": "Ellipsis NotImplemented", - "literal": "False None True" - }, - "illegal": "(<\\\/|->|\\?)|=>", - "contains": [ - { - "className": "meta", - "begin": "^(>>>|\\.\\.\\.) " - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "\\b(0b[01]+)[lLjJ]?" - }, - { - "begin": "\\b(0o[0-7]+)[lLjJ]?" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)[lLjJ]?" - } - ] - }, - { - "beginKeywords": "if", - "relevance": 0 - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "variants": [ - { - "begin": "(u|b)?r?'''", - "end": "'''", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.0" - } - ], - "relevance": 10 - }, - { - "begin": "(u|b)?r?\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.0" - } - ], - "relevance": 10 - }, - { - "begin": "(fr|rf|f)'''", - "end": "'''", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.0" - }, - { - "begin": "\\{\\{", - "relevance": 0 - }, - { - "className": "subst", - "begin": "\\{", - "end": "\\}", - "keywords": { - "$ref": "#keywords" - }, - "illegal": "#", - "contains": [ - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.0" - } - ] - } - ] - }, - { - "begin": "(fr|rf|f)\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.3.variants.2.contains.2" - }, - { - "$ref": "#contains.3.variants.2.contains.3" - } - ] - }, - { - "begin": "(u|r|ur)'", - "end": "'", - "relevance": 10 - }, - { - "begin": "(u|r|ur)\"", - "end": "\"", - "relevance": 10 - }, - { - "begin": "(b|br)'", - "end": "'" - }, - { - "begin": "(b|br)\"", - "end": "\"" - }, - { - "begin": "(fr|rf|f)'", - "end": "'", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.3.variants.2.contains.2" - }, - { - "$ref": "#contains.3.variants.2.contains.3" - } - ] - }, - { - "begin": "(fr|rf|f)\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.3.contains.0" - }, - { - "$ref": "#contains.3.variants.2.contains.2" - }, - { - "$ref": "#contains.3.variants.2.contains.3" - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.3.contains.0" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "variants": [ - { - "className": "function", - "beginKeywords": "def" - }, - { - "className": "class", - "beginKeywords": "class" - } - ], - "end": ":", - "illegal": "[${=;\\n,]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - } - ] - }, - { - "begin": "->", - "endsWithParent": true, - "keywords": "None" - } - ] - }, - { - "className": "meta", - "begin": "^[\\t ]*@", - "end": "$" - }, - { - "begin": "\\b(print|exec)\\(" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/q.json b/vendor/scrivo/highlight.php/Highlight/languages/q.json deleted file mode 100644 index aaf40fb5a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/q.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "aliases": [ - "k", - "kdb" - ], - "keywords": { - "keyword": "do while select delete by update from", - "literal": "0b 1b", - "built_in": "neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum", - "type": "`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid" - }, - "lexemes": "(`?)[A-Za-z0-9_]+\\b", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/qml.json b/vendor/scrivo/highlight.php/Highlight/languages/qml.json deleted file mode 100644 index b032cd91d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/qml.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "aliases": [ - "qt" - ], - "case_insensitive": false, - "keywords": { - "keyword": "in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import", - "literal": "true false null undefined NaN Infinity", - "built_in": "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise" - }, - "contains": [ - { - "className": "meta", - "begin": "^\\s*['\"]use (strict|asm)['\"]" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "subst", - "begin": "\\$\\{", - "end": "\\}" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.4.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0[bB][01]+)" - }, - { - "begin": "\\b(0[oO][0-7]+)" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" - } - ], - "relevance": 0 - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\b(case|return|throw)\\b)\\s*", - "keywords": "return throw case", - "contains": [ - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - } - ] - }, - { - "begin": "<", - "end": ">\\s*[);\\]]", - "relevance": 0, - "subLanguage": "xml" - } - ], - "relevance": 0 - }, - { - "className": "keyword", - "begin": "\\bsignal\\b", - "starts": { - "className": "string", - "end": "(\\(|:|=|;|,|\/\/|\/\\*|$)", - "returnEnd": true - } - }, - { - "className": "keyword", - "begin": "\\bproperty\\b", - "starts": { - "className": "string", - "end": "(:|=|;|,|\/\/|\/\\*|$)", - "returnEnd": true - } - }, - { - "className": "function", - "beginKeywords": "function", - "end": "\\{", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "contains": [ - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - } - ] - } - ], - "illegal": "\\[|%" - }, - { - "begin": "\\.[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "attribute", - "begin": "\\bid\\s*:", - "starts": { - "className": "string", - "end": "[a-zA-Z_][a-zA-Z0-9\\._]*", - "returnEnd": false - } - }, - { - "begin": "[a-zA-Z_][a-zA-Z0-9\\._]*\\s*:", - "returnBegin": true, - "contains": [ - { - "className": "attribute", - "begin": "[a-zA-Z_][a-zA-Z0-9\\._]*", - "end": "\\s*:", - "excludeEnd": true, - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "begin": "[a-zA-Z_][a-zA-Z0-9\\._]*\\s*{", - "end": "{", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_][a-zA-Z0-9\\._]*", - "relevance": 0 - } - ] - } - ], - "illegal": "#" -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/r.json b/vendor/scrivo/highlight.php/Highlight/languages/r.json deleted file mode 100644 index 714818b80..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/r.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*", - "lexemes": "([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*", - "keywords": { - "keyword": "function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...", - "literal": "NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10" - }, - "relevance": 0 - }, - { - "className": "number", - "begin": "0[xX][0-9a-fA-F]+[Li]?\\b", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\d+(?:[eE][+\\-]?\\d*)?L\\b", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\d+\\.(?!\\d)(?:i\\b)?", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b", - "relevance": 0 - }, - { - "begin": "`", - "end": "`", - "relevance": 0 - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "variants": [ - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "'", - "end": "'" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/reasonml.json b/vendor/scrivo/highlight.php/Highlight/languages/reasonml.json deleted file mode 100644 index 1b9d12a4c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/reasonml.json +++ /dev/null @@ -1,344 +0,0 @@ -{ - "aliases": [ - "re" - ], - "keywords": { - "keyword": "and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with", - "built_in": "array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", - "literal": "true false" - }, - "illegal": "(:\\-|:=|\\${|\\+=)", - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "illegal": "^(\\#,\\\/\\\/)" - }, - { - "className": "character", - "begin": "'(\\\\[^']+|[^'])'", - "illegal": "\\n", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "literal", - "begin": "\\(\\)", - "relevance": 0 - }, - { - "className": "literal", - "begin": "\\[\\|", - "end": "\\|\\]", - "relevance": 0, - "contains": [ - { - "className": "identifier", - "relevance": 0, - "begin": "~?[a-z$_][0-9a-zA-Z$_]*" - }, - { - "className": "operator", - "relevance": 0, - "begin": "(\\|\\||\\&\\&|\\+\\+|\\*\\*|\\+\\.|\\*|\\\/|\\*\\.|\\\/\\.|\\.\\.\\.|\\|\\>|==|===)" - }, - { - "className": "number", - "relevance": 0, - "variants": [ - { - "begin": "\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)" - }, - { - "begin": "\\(\\-\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\\)" - } - ] - } - ] - }, - { - "className": "literal", - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": { - "$ref": "#contains.4.contains" - } - }, - { - "className": "constructor", - "begin": "`?[A-Z$_][0-9a-zA-Z$_]*\\(", - "end": "\\)", - "illegal": "\\n", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4.contains.1" - }, - { - "className": "params", - "begin": "\\b~?[a-z$_][0-9a-zA-Z$_]*" - } - ] - }, - { - "className": "operator", - "begin": "\\s+(\\|\\||\\&\\&|\\+\\+|\\*\\*|\\+\\.|\\*|\\\/|\\*\\.|\\\/\\.|\\.\\.\\.|\\|\\>|==|===)\\s+", - "illegal": "\\-\\->", - "relevance": 0 - }, - { - "$ref": "#contains.4.contains.2" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "pattern-match", - "begin": "\\|", - "returnBegin": true, - "keywords": { - "$ref": "#keywords" - }, - "end": "=>", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.4.contains.1" - }, - { - "relevance": 0, - "className": "constructor", - "begin": "`?[A-Z$_][0-9a-zA-Z$_]*" - } - ] - }, - { - "className": "function", - "relevance": 0, - "keywords": { - "$ref": "#keywords" - }, - "variants": [ - { - "begin": "\\s(\\(\\.?.*?\\)|~?[a-z$_][0-9a-zA-Z$_]*)\\s*=>", - "end": "\\s*=>", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "params", - "variants": [ - { - "begin": "~?[a-z$_][0-9a-zA-Z$_]*" - }, - { - "begin": "~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?" - }, - { - "begin": "\\(\\s*\\)" - } - ] - } - ] - }, - { - "begin": "\\s\\(\\.?[^;\\|]*\\)\\s*=>", - "end": "\\s=>", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "params", - "relevance": 0, - "variants": [ - { - "begin": "~?[a-z$_][0-9a-zA-Z$_]*", - "end": "(,|\\n|\\))", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.4.contains.1" - }, - { - "className": "typing", - "begin": ":", - "end": "(,|\\n)", - "returnBegin": true, - "relevance": 0, - "contains": [ - { - "className": "module", - "begin": "\\b`?[A-Z$_][0-9a-zA-Z$_]*", - "returnBegin": true, - "end": ".", - "relevance": 0, - "contains": [ - { - "className": "identifier", - "begin": "`?[A-Z$_][0-9a-zA-Z$_]*", - "relevance": 0 - } - ] - }, - { - "className": "module-access", - "keywords": { - "$ref": "#keywords" - }, - "returnBegin": true, - "variants": [ - { - "begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+~?[a-z$_][0-9a-zA-Z$_]*" - }, - { - "begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+\\(", - "end": "\\)", - "returnBegin": true, - "contains": [ - { - "$ref": "#contains.11" - }, - { - "begin": "\\(", - "end": "\\)", - "skip": true - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4.contains.1" - }, - { - "className": "module", - "begin": "\\b`?[A-Z$_][0-9a-zA-Z$_]*", - "returnBegin": true, - "end": ".", - "contains": [ - { - "className": "identifier", - "begin": "`?[A-Z$_][0-9a-zA-Z$_]*", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.11" - } - ] - }, - { - "begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+{", - "end": "}" - } - ], - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4.contains.1" - }, - { - "$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4" - }, - { - "$ref": "#contains.11" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "begin": "\\(\\.\\s~?[a-z$_][0-9a-zA-Z$_]*\\)\\s*=>" - } - ] - }, - { - "className": "module-def", - "begin": "\\bmodule\\s+~?[a-z$_][0-9a-zA-Z$_]*\\s+`?[A-Z$_][0-9a-zA-Z$_]*\\s+=\\s+{", - "end": "}", - "returnBegin": true, - "keywords": { - "$ref": "#keywords" - }, - "relevance": 0, - "contains": [ - { - "className": "module", - "relevance": 0, - "begin": "`?[A-Z$_][0-9a-zA-Z$_]*" - }, - { - "begin": "{", - "end": "}", - "skip": true - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4.contains.1" - }, - { - "$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4" - }, - { - "$ref": "#contains.11" - } - ] - }, - { - "$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/rib.json b/vendor/scrivo/highlight.php/Highlight/languages/rib.json deleted file mode 100644 index 8e0674361..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/rib.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "keywords": "ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd", - "illegal": "<\/", - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/roboconf.json b/vendor/scrivo/highlight.php/Highlight/languages/roboconf.json deleted file mode 100644 index 15e78bcd8..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/roboconf.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "aliases": [ - "graph", - "instances" - ], - "case_insensitive": true, - "keywords": "import", - "contains": [ - { - "begin": "^facet [a-zA-Z\\-_][^\\n{]+\\{", - "end": "}", - "keywords": "facet", - "contains": [ - { - "className": "attribute", - "begin": "[a-zA-Z\\-_]+", - "end": "\\s*:", - "excludeEnd": true, - "starts": { - "end": ";", - "relevance": 0, - "contains": [ - { - "className": "variable", - "begin": "\\.[a-zA-Z\\-_]+" - }, - { - "className": "keyword", - "begin": "\\(optional\\)" - } - ] - } - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "begin": "^\\s*instance of [a-zA-Z\\-_][^\\n{]+\\{", - "end": "}", - "keywords": "name count channels instance-data instance-state instance of", - "illegal": "\\S", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - } - ] - }, - { - "begin": "^[a-zA-Z\\-_][^\\n{]+\\{", - "end": "}", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - } - ] - }, - { - "$ref": "#contains.0.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/routeros.json b/vendor/scrivo/highlight.php/Highlight/languages/routeros.json deleted file mode 100644 index bae5e94a2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/routeros.json +++ /dev/null @@ -1,174 +0,0 @@ -{ - "aliases": [ - "routeros", - "mikrotik" - ], - "case_insensitive": true, - "lexemes": ":?[\\w\\-]+", - "keywords": { - "literal": "true false yes no nothing nil null", - "keyword": "foreach do while for if from to step else on-error and or not in :foreach :do :while :for :if :from :to :step :else :on-error :and :or :not :in :global :local :beep :delay :put :len :typeof :pick :log :time :set :find :environment :terminal :error :execute :parse :resolve :toarray :tobool :toid :toip :toip6 :tonum :tostr :totime" - }, - "contains": [ - { - "variants": [ - { - "begin": "^@", - "end": "$" - }, - { - "begin": "\\\/\\*", - "end": "\\*\\\/" - }, - { - "begin": "%%", - "end": "$" - }, - { - "begin": "^'", - "end": "$" - }, - { - "begin": "^\\s*\\\/[\\w\\-]+=", - "end": "$" - }, - { - "begin": "\\\/\\\/", - "end": "$" - }, - { - "begin": "^\\[\\<", - "end": "\\>\\]$" - }, - { - "begin": "<\\\/", - "end": ">" - }, - { - "begin": "^facet ", - "end": "\\}" - }, - { - "begin": "^1\\.\\.(\\d+)$", - "end": "$" - } - ], - "illegal": "." - }, - { - "className": "comment", - "begin": "^#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "variable", - "variants": [ - { - "begin": "\\$[\\w\\d#@][\\w\\d_]*" - }, - { - "begin": "\\$\\{(.*?)}" - } - ] - }, - { - "className": "variable", - "begin": "\\$\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "$ref": "#contains.2.contains.1" - }, - { - "begin": "[\\w\\-]+\\=([^\\s\\{\\}\\[\\]\\(\\)]+)", - "relevance": 0, - "returnBegin": true, - "contains": [ - { - "className": "attribute", - "begin": "[^=]+" - }, - { - "begin": "=", - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.2.contains.1" - }, - { - "className": "literal", - "begin": "\\b(true|false|yes|no|nothing|nil|null)\\b" - }, - { - "begin": "(\"[^\"]*\"|[^\\s\\{\\}\\[\\]]+)" - } - ] - } - ] - }, - { - "className": "number", - "begin": "\\*[0-9a-fA-F]+" - }, - { - "begin": "\\b(add|remove|enable|disable|set|get|print|export|edit|find|run|debug|error|info|warning)([\\s[(]|])", - "returnBegin": true, - "contains": [ - { - "className": "builtin-name", - "begin": "\\w+" - } - ] - }, - { - "className": "built_in", - "variants": [ - { - "begin": "(\\.\\.\/|\/|\\s)((traffic-flow|traffic-generator|firewall|scheduler|aaa|accounting|address-list|address|align|area|bandwidth-server|bfd|bgp|bridge|client|clock|community|config|connection|console|customer|default|dhcp-client|dhcp-server|discovery|dns|e-mail|ethernet|filter|firewall|firmware|gps|graphing|group|hardware|health|hotspot|identity|igmp-proxy|incoming|instance|interface|ip|ipsec|ipv6|irq|l2tp-server|lcd|ldp|logging|mac-server|mac-winbox|mangle|manual|mirror|mme|mpls|nat|nd|neighbor|network|note|ntp|ospf|ospf-v3|ovpn-server|page|peer|pim|ping|policy|pool|port|ppp|pppoe-client|pptp-server|prefix|profile|proposal|proxy|queue|radius|resource|rip|ripng|route|routing|screen|script|security-profiles|server|service|service-port|settings|shares|smb|sms|sniffer|snmp|snooper|socks|sstp-server|system|tool|tracking|type|upgrade|upnp|user-manager|users|user|vlan|secret|vrrp|watchdog|web-access|wireless|pptp|pppoe|lan|wan|layer7-protocol|lease|simple|raw);?\\s)+", - "relevance": 10 - }, - { - "begin": "\\.\\." - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/rsl.json b/vendor/scrivo/highlight.php/Highlight/languages/rsl.json deleted file mode 100644 index f516865eb..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/rsl.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "keywords": { - "keyword": "float color point normal vector matrix while for if do return else break extern continue", - "built_in": "abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp" - }, - "illegal": "<\/", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$" - }, - { - "className": "class", - "beginKeywords": "surface displacement light volume imager", - "end": "\\(" - }, - { - "beginKeywords": "illuminate illuminance gather", - "end": "\\(" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ruby.json b/vendor/scrivo/highlight.php/Highlight/languages/ruby.json deleted file mode 100644 index 631615d83..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ruby.json +++ /dev/null @@ -1,385 +0,0 @@ -{ - "aliases": [ - "rb", - "gemspec", - "podspec", - "thor", - "irb" - ], - "keywords": { - "keyword": "and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor", - "literal": "true false nil" - }, - "illegal": "\\\/\\*", - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "^\\=begin", - "end": "^\\=end", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "className": "comment", - "begin": "^__END__", - "end": "\\n$", - "contains": [ - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": "^\\s*=>", - "starts": { - "end": "$", - "contains": [ - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "#\\{", - "end": "}", - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains.3.starts.contains" - } - } - ], - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "`", - "end": "`" - }, - { - "begin": "%[qQwWx]?\\(", - "end": "\\)" - }, - { - "begin": "%[qQwWx]?\\[", - "end": "\\]" - }, - { - "begin": "%[qQwWx]?{", - "end": "}" - }, - { - "begin": "%[qQwWx]?<", - "end": ">" - }, - { - "begin": "%[qQwWx]?\/", - "end": "\/" - }, - { - "begin": "%[qQwWx]?%", - "end": "%" - }, - { - "begin": "%[qQwWx]?-", - "end": "-" - }, - { - "begin": "%[qQwWx]?\\|", - "end": "\\|" - }, - { - "begin": "\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b" - }, - { - "begin": "<<[-~]?'?(\\w+)(?:.|\\n)*?\\n\\s*\\1\\b", - "returnBegin": true, - "contains": [ - { - "begin": "<<[-~]?'?" - }, - { - "begin": "\\w+", - "endSameAsBegin": true, - "contains": [ - { - "$ref": "#contains.3.starts.contains.0.contains.0" - }, - { - "$ref": "#contains.3.starts.contains.0.contains.1" - } - ] - } - ] - } - ] - }, - { - "begin": "#<", - "end": ">" - }, - { - "className": "class", - "beginKeywords": "class module", - "end": "$|;", - "illegal": "=", - "contains": [ - { - "className": "title", - "begin": "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?", - "relevance": 0 - }, - { - "begin": "<\\s*", - "contains": [ - { - "begin": "([a-zA-Z]\\w*::)?[a-zA-Z]\\w*" - } - ] - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "function", - "beginKeywords": "def", - "end": "$|;", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~`|]|\\[\\]=?", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": { - "$ref": "#contains.3.starts.contains" - } - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - }, - { - "begin": "[a-zA-Z]\\w*::" - }, - { - "className": "symbol", - "begin": "[a-zA-Z_]\\w*(\\!|\\?)?:", - "relevance": 0 - }, - { - "className": "symbol", - "begin": ":(?!\\s)", - "contains": [ - { - "$ref": "#contains.3.starts.contains.0" - }, - { - "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~`|]|\\[\\]=?" - } - ], - "relevance": 0 - }, - { - "className": "number", - "begin": "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", - "relevance": 0 - }, - { - "begin": "(\\$\\W)|((\\$|\\@\\@?)(\\w+))" - }, - { - "className": "params", - "begin": "\\|", - "end": "\\|", - "keywords": { - "$ref": "#keywords" - } - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|unless)\\s*", - "keywords": "unless", - "contains": [ - { - "$ref": "#contains.3.starts.contains.1" - }, - { - "className": "regexp", - "contains": [ - { - "$ref": "#contains.3.starts.contains.0.contains.0" - }, - { - "$ref": "#contains.3.starts.contains.0.contains.1" - } - ], - "illegal": "\\n", - "variants": [ - { - "begin": "\/", - "end": "\/[a-z]*" - }, - { - "begin": "%r{", - "end": "}[a-z]*" - }, - { - "begin": "%r\\(", - "end": "\\)[a-z]*" - }, - { - "begin": "%r!", - "end": "![a-z]*" - }, - { - "begin": "%r\\[", - "end": "\\][a-z]*" - } - ] - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ], - "relevance": 0 - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - } - }, - { - "className": "meta", - "begin": "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)", - "starts": { - "end": "$", - "contains": { - "$ref": "#contains.3.starts.contains" - } - } - }, - { - "$ref": "#contains.3.starts.contains.0" - }, - { - "$ref": "#contains.3.starts.contains.1" - }, - { - "$ref": "#contains.3.starts.contains.2" - }, - { - "$ref": "#contains.3.starts.contains.3" - }, - { - "$ref": "#contains.3.starts.contains.4" - }, - { - "$ref": "#contains.3.starts.contains.5" - }, - { - "$ref": "#contains.3.starts.contains.6" - }, - { - "$ref": "#contains.3.starts.contains.7" - }, - { - "$ref": "#contains.3.starts.contains.8" - }, - { - "$ref": "#contains.3.starts.contains.9" - }, - { - "$ref": "#contains.3.starts.contains.10" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/ruleslanguage.json b/vendor/scrivo/highlight.php/Highlight/languages/ruleslanguage.json deleted file mode 100644 index ee00faad9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/ruleslanguage.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "keywords": { - "keyword": "BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING", - "built_in": "IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "literal", - "variants": [ - { - "begin": "#\\s+[a-zA-Z\\ \\.]*", - "relevance": 0 - }, - { - "begin": "#[a-zA-Z\\ \\.]+" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/rust.json b/vendor/scrivo/highlight.php/Highlight/languages/rust.json deleted file mode 100644 index ae74f2fe0..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/rust.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "aliases": [ - "rs" - ], - "keywords": { - "keyword": "abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield", - "literal": "true false Some None Ok Err", - "built_in": "drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!" - }, - "lexemes": "[a-zA-Z]\\w*!?", - "illegal": "<\/", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "b?\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "r(#*)\"(.|\\n)*?\"\\1(?!#)" - }, - { - "begin": "b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'" - } - ] - }, - { - "className": "symbol", - "begin": "'[a-zA-Z_][a-zA-Z0-9_]*" - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?" - }, - { - "begin": "\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?" - }, - { - "begin": "\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?" - }, - { - "begin": "\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?" - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "fn", - "end": "(\\(|<)", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "#\\!?\\[", - "end": "\\]", - "contains": [ - { - "className": "meta-string", - "begin": "\"", - "end": "\"" - } - ] - }, - { - "className": "class", - "beginKeywords": "type", - "end": ";", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0, - "endsParent": true - } - ], - "illegal": "\\S" - }, - { - "className": "class", - "beginKeywords": "trait enum struct union", - "end": "{", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0, - "endsParent": true - } - ], - "illegal": "[\\w\\d]" - }, - { - "begin": "[a-zA-Z]\\w*::", - "keywords": { - "built_in": "drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!" - } - }, - { - "begin": "->" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/sas.json b/vendor/scrivo/highlight.php/Highlight/languages/sas.json deleted file mode 100644 index 8c1300ca4..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/sas.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "aliases": [ - "sas", - "SAS" - ], - "case_insensitive": true, - "keywords": { - "literal": "null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_", - "meta": "do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where" - }, - "contains": [ - { - "className": "keyword", - "begin": "^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s\\;]" - }, - { - "className": "variable", - "begin": "\\&[a-zA-Z_\\&][a-zA-Z0-9_]*\\.?" - }, - { - "className": "emphasis", - "begin": "^\\s*datalines|cards.*;", - "end": "^\\s*;\\s*$" - }, - { - "className": "built_in", - "begin": "%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)" - }, - { - "className": "name", - "begin": "%[a-zA-Z_][a-zA-Z_0-9]*" - }, - { - "className": "meta", - "begin": "[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]" - }, - { - "className": "string", - "variants": [ - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.6.variants.0.contains.0" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "\\*", - "end": ";", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.7.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/scala.json b/vendor/scrivo/highlight.php/Highlight/languages/scala.json deleted file mode 100644 index 8da1e523b..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/scala.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "keywords": { - "literal": "true false null", - "keyword": "type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "\"\"\"", - "end": "\"\"\"", - "relevance": 10 - }, - { - "begin": "[a-z]+\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.2.variants.0.contains.0" - }, - { - "className": "subst", - "variants": [ - { - "begin": "\\$[A-Za-z0-9_]+" - }, - { - "begin": "\\${", - "end": "}" - } - ] - } - ] - }, - { - "className": "string", - "begin": "[a-z]+\"\"\"", - "end": "\"\"\"", - "contains": [ - { - "$ref": "#contains.2.variants.2.contains.1" - } - ], - "relevance": 10 - } - ] - }, - { - "className": "symbol", - "begin": "'\\w[\\w\\d_]*(?!')" - }, - { - "className": "type", - "begin": "\\b[A-Z][A-Za-z0-9_]*", - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "def", - "end": "[:={\\[(\\n;]", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "class object trait type", - "end": "[:={\\[\\n;]", - "excludeEnd": true, - "contains": [ - { - "beginKeywords": "extends with", - "relevance": 10 - }, - { - "begin": "\\[", - "end": "\\]", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.4" - } - ] - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.4" - } - ] - }, - { - "$ref": "#contains.5.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "@[A-Za-z]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/scheme.json b/vendor/scrivo/highlight.php/Highlight/languages/scheme.json deleted file mode 100644 index bdf9bef6f..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/scheme.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "illegal": "\\S", - "contains": [ - { - "className": "meta", - "begin": "^#!", - "end": "$" - }, - { - "className": "number", - "variants": [ - { - "begin": "(\\-|\\+)?\\d+([.\/]\\d+)?", - "relevance": 0 - }, - { - "begin": "(\\-|\\+)?\\d+([.\/]\\d+)?[+\\-](\\-|\\+)?\\d+([.\/]\\d+)?i", - "relevance": 0 - }, - { - "begin": "#b[0-1]+(\/[0-1]+)?" - }, - { - "begin": "#o[0-7]+(\/[0-7]+)?" - }, - { - "begin": "#x[0-9a-f]+(\/[0-9a-f]+)?" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "symbol", - "begin": "'[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+" - }, - { - "variants": [ - { - "begin": "'" - }, - { - "begin": "`" - } - ], - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "className": "literal", - "begin": "(#t|#f|#\\\\[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+|#\\\\.)" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.1" - }, - { - "begin": "[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+", - "relevance": 0 - }, - { - "$ref": "#contains.3" - } - ] - } - ] - }, - { - "variants": [ - { - "begin": "\\(", - "end": "\\)" - }, - { - "begin": "\\[", - "end": "\\]" - } - ], - "contains": [ - { - "begin": "lambda", - "endsWithParent": true, - "returnBegin": true, - "contains": [ - { - "className": "name", - "begin": "[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+", - "lexemes": "[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+", - "keywords": { - "builtin-name": "case-lambda call\/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let\/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit\/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... \/ ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" - } - }, - { - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "contains": [ - { - "$ref": "#contains.4.contains.0.contains.4" - } - ] - } - ] - }, - { - "$ref": "#contains.5.contains.0.contains.0" - }, - { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "$ref": "#contains.4.contains.0.contains.1" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.4.contains.0.contains.4" - }, - { - "$ref": "#contains.3" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - }, - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "comment", - "begin": "#\\|", - "end": "\\|#", - "contains": [ - { - "$ref": "#contains.5.contains.2.contains.7.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "$ref": "#contains.5.contains.2.contains.7" - }, - { - "$ref": "#contains.5.contains.2.contains.8" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/scilab.json b/vendor/scrivo/highlight.php/Highlight/languages/scilab.json deleted file mode 100644 index ab8379a10..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/scilab.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "aliases": [ - "sci" - ], - "lexemes": "%?\\w+", - "keywords": { - "keyword": "abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while", - "literal": "%f %F %t %T %pi %eps %inf %nan %e %i %z %s", - "built_in": "abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix" - }, - "illegal": "(\"|#|\/\\*|\\s+\/\\w+)", - "contains": [ - { - "className": "function", - "beginKeywords": "function", - "end": "$", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)" - } - ] - }, - { - "begin": "[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)", - "end": "", - "relevance": 0 - }, - { - "begin": "\\[", - "end": "\\]'*[\\.']*", - "relevance": 0, - "contains": [ - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'|\"", - "end": "'|\"", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "begin": "''" - } - ] - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.2.contains.0" - }, - { - "$ref": "#contains.2.contains.1" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/scss.json b/vendor/scrivo/highlight.php/Highlight/languages/scss.json deleted file mode 100644 index 129914ea3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/scss.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "[=\/|']", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "selector-id", - "begin": "\\#[A-Za-z0-9_\\-]+", - "relevance": 0 - }, - { - "className": "selector-class", - "begin": "\\.[A-Za-z0-9_\\-]+", - "relevance": 0 - }, - { - "className": "selector-attr", - "begin": "\\[", - "end": "\\]", - "illegal": "$" - }, - { - "className": "selector-tag", - "begin": "\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b", - "relevance": 0 - }, - { - "className": "selector-pseudo", - "begin": ":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)" - }, - { - "className": "selector-pseudo", - "begin": "::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)" - }, - { - "className": "variable", - "begin": "(\\$[a-zA-Z\\-][a-zA-Z0-9_\\-]*)\\b" - }, - { - "className": "attribute", - "begin": "\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b", - "illegal": "[^\\s]" - }, - { - "begin": "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" - }, - { - "begin": ":", - "end": ";", - "contains": [ - { - "$ref": "#contains.8" - }, - { - "className": "number", - "begin": "#[0-9A-Fa-f]+" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.11.contains.3.contains.0" - } - ] - }, - { - "className": "meta", - "begin": "!important" - } - ] - }, - { - "begin": "@(page|font-face)", - "lexemes": "@[a-z\\-]+", - "keywords": "@page @font-face" - }, - { - "begin": "@", - "end": "[{;]", - "returnBegin": true, - "keywords": "and or not only", - "contains": [ - { - "begin": "@[a-z\\-]+", - "className": "keyword" - }, - { - "$ref": "#contains.8" - }, - { - "$ref": "#contains.11.contains.3" - }, - { - "$ref": "#contains.11.contains.4" - }, - { - "$ref": "#contains.11.contains.1" - }, - { - "$ref": "#contains.11.contains.2" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/shell.json b/vendor/scrivo/highlight.php/Highlight/languages/shell.json deleted file mode 100644 index b817c6fa0..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/shell.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "aliases": [ - "console" - ], - "contains": [ - { - "className": "meta", - "begin": "^\\s{0,3}[\/\\w\\d\\[\\]()@-]*[>%$#]", - "starts": { - "end": "$", - "subLanguage": "bash" - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/smali.json b/vendor/scrivo/highlight.php/Highlight/languages/smali.json deleted file mode 100644 index 36e8e7958..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/smali.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "aliases": [ - "smali" - ], - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "keyword", - "variants": [ - { - "begin": "\\s*\\.end\\s[a-zA-Z0-9]*" - }, - { - "begin": "^[ ]*\\.[a-zA-Z]*", - "relevance": 0 - }, - { - "begin": "\\s:[a-zA-Z_0-9]*", - "relevance": 0 - }, - { - "begin": "\\s(transient|constructor|abstract|final|synthetic|public|private|protected|static|bridge|system)" - } - ] - }, - { - "className": "built_in", - "variants": [ - { - "begin": "\\s(add|and|cmp|cmpg|cmpl|const|div|double|float|goto|if|int|long|move|mul|neg|new|nop|not|or|rem|return|shl|shr|sput|sub|throw|ushr|xor)\\s" - }, - { - "begin": "\\s(add|and|cmp|cmpg|cmpl|const|div|double|float|goto|if|int|long|move|mul|neg|new|nop|not|or|rem|return|shl|shr|sput|sub|throw|ushr|xor)((\\-|\/)[a-zA-Z0-9]+)+\\s", - "relevance": 10 - }, - { - "begin": "\\s(aget|aput|array|check|execute|fill|filled|goto\/16|goto\/32|iget|instance|invoke|iput|monitor|packed|sget|sparse)((\\-|\/)[a-zA-Z0-9]+)*\\s", - "relevance": 10 - } - ] - }, - { - "className": "class", - "begin": "L[^(;:\n]*;", - "relevance": 0 - }, - { - "begin": "[vp][0-9]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/smalltalk.json b/vendor/scrivo/highlight.php/Highlight/languages/smalltalk.json deleted file mode 100644 index f9912f579..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/smalltalk.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "aliases": [ - "st" - ], - "keywords": "self super nil true false thisContext", - "contains": [ - { - "className": "comment", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "type", - "begin": "\\b[A-Z][A-Za-z0-9_]*", - "relevance": 0 - }, - { - "begin": "[a-z][a-zA-Z0-9_]*:", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "symbol", - "begin": "#[a-zA-Z_]\\w*" - }, - { - "className": "string", - "begin": "\\$.{1}" - }, - { - "begin": "\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|", - "returnBegin": true, - "end": "\\|", - "illegal": "\\S", - "contains": [ - { - "begin": "(\\|[ ]*)?[a-z][a-zA-Z0-9_]*" - } - ] - }, - { - "begin": "\\#\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.5" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/sml.json b/vendor/scrivo/highlight.php/Highlight/languages/sml.json deleted file mode 100644 index 09590d593..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/sml.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "aliases": [ - "ml" - ], - "keywords": { - "keyword": "abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", - "built_in": "array bool char exn int list option order real ref string substring vector unit word", - "literal": "true false NONE SOME LESS EQUAL GREATER nil" - }, - "illegal": "\\\/\\\/|>>", - "lexemes": "[a-z_]\\w*!?", - "contains": [ - { - "className": "literal", - "begin": "\\[(\\|\\|)?\\]|\\(\\)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(\\*", - "end": "\\*\\)", - "contains": [ - "self", - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "symbol", - "begin": "'[A-Za-z_](?!')[\\w']*" - }, - { - "className": "type", - "begin": "`[A-Z][\\w']*" - }, - { - "className": "type", - "begin": "\\b[A-Z][\\w']*", - "relevance": 0 - }, - { - "begin": "[a-z_]\\w*'[\\w']*" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "number", - "begin": "\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", - "relevance": 0 - }, - { - "begin": "[-=]>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/sqf.json b/vendor/scrivo/highlight.php/Highlight/languages/sqf.json deleted file mode 100644 index e23c8c673..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/sqf.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "aliases": [ - "sqf" - ], - "case_insensitive": true, - "keywords": { - "keyword": "case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with", - "built_in": "abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ", - "literal": "blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "variable", - "begin": "\\b_+[a-zA-Z_]\\w*" - }, - { - "className": "title", - "begin": "[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*" - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "meta", - "begin": "#\\s*[a-z]+\\b", - "end": "$", - "keywords": { - "meta-keyword": "define undef ifdef ifndef else endif include" - }, - "contains": [ - { - "begin": "\\\\\\n", - "relevance": 0 - }, - { - "className": "meta-string", - "variants": { - "$ref": "#contains.5.variants" - } - }, - { - "className": "meta-string", - "begin": "<[^\\n>]*>", - "end": "$", - "illegal": "\\n" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.1" - } - ] - } - ], - "illegal": "#|^\\$ " -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/sql.json b/vendor/scrivo/highlight.php/Highlight/languages/sql.json deleted file mode 100644 index 6b56cc184..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/sql.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "case_insensitive": true, - "illegal": "[<>{}*]", - "contains": [ - { - "beginKeywords": "begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with", - "end": ";", - "endsWithParent": true, - "lexemes": "[\\w\\.]+", - "keywords": { - "keyword": "as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek", - "literal": "true false null unknown", - "built_in": "array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void" - }, - "contains": [ - { - "className": "string", - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "string", - "begin": "`", - "end": "`" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.4.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.4.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] - }, - { - "$ref": "#contains.0.contains.4" - }, - { - "$ref": "#contains.0.contains.5" - }, - { - "$ref": "#contains.0.contains.6" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/stan.json b/vendor/scrivo/highlight.php/Highlight/languages/stan.json deleted file mode 100644 index b5871b44c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/stan.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "aliases": [ - "stanfuncs" - ], - "keywords": { - "title": "functions model data parameters quantities transformed generated", - "keyword": "for in if else while break continue return int real vector ordered positive_ordered simplex unit_vector row_vector matrix cholesky_factor_corr|10 cholesky_factor_cov|10 corr_matrix|10 cov_matrix|10 void print reject increment_log_prob|10 integrate_ode|10 integrate_ode_rk45|10 integrate_ode_bdf|10 algebra_solver", - "built_in": "Phi Phi_approx abs acos acosh algebra_solver append_array append_col append_row asin asinh atan atan2 atanh bernoulli_cdf bernoulli_lccdf bernoulli_lcdf bernoulli_logit_lpmf bernoulli_logit_rng bernoulli_lpmf bernoulli_rng bessel_first_kind bessel_second_kind beta_binomial_cdf beta_binomial_lccdf beta_binomial_lcdf beta_binomial_lpmf beta_binomial_rng beta_cdf beta_lccdf beta_lcdf beta_lpdf beta_rng binary_log_loss binomial_cdf binomial_coefficient_log binomial_lccdf binomial_lcdf binomial_logit_lpmf binomial_lpmf binomial_rng block categorical_logit_lpmf categorical_logit_rng categorical_lpmf categorical_rng cauchy_cdf cauchy_lccdf cauchy_lcdf cauchy_lpdf cauchy_rng cbrt ceil chi_square_cdf chi_square_lccdf chi_square_lcdf chi_square_lpdf chi_square_rng cholesky_decompose choose col cols columns_dot_product columns_dot_self cos cosh cov_exp_quad crossprod csr_extract_u csr_extract_v csr_extract_w csr_matrix_times_vector csr_to_dense_matrix cumulative_sum determinant diag_matrix diag_post_multiply diag_pre_multiply diagonal digamma dims dirichlet_lpdf dirichlet_rng distance dot_product dot_self double_exponential_cdf double_exponential_lccdf double_exponential_lcdf double_exponential_lpdf double_exponential_rng e eigenvalues_sym eigenvectors_sym erf erfc exp exp2 exp_mod_normal_cdf exp_mod_normal_lccdf exp_mod_normal_lcdf exp_mod_normal_lpdf exp_mod_normal_rng expm1 exponential_cdf exponential_lccdf exponential_lcdf exponential_lpdf exponential_rng fabs falling_factorial fdim floor fma fmax fmin fmod frechet_cdf frechet_lccdf frechet_lcdf frechet_lpdf frechet_rng gamma_cdf gamma_lccdf gamma_lcdf gamma_lpdf gamma_p gamma_q gamma_rng gaussian_dlm_obs_lpdf get_lp gumbel_cdf gumbel_lccdf gumbel_lcdf gumbel_lpdf gumbel_rng head hypergeometric_lpmf hypergeometric_rng hypot inc_beta int_step integrate_ode integrate_ode_bdf integrate_ode_rk45 inv inv_Phi inv_chi_square_cdf inv_chi_square_lccdf inv_chi_square_lcdf inv_chi_square_lpdf inv_chi_square_rng inv_cloglog inv_gamma_cdf inv_gamma_lccdf inv_gamma_lcdf inv_gamma_lpdf inv_gamma_rng inv_logit inv_sqrt inv_square inv_wishart_lpdf inv_wishart_rng inverse inverse_spd is_inf is_nan lbeta lchoose lgamma lkj_corr_cholesky_lpdf lkj_corr_cholesky_rng lkj_corr_lpdf lkj_corr_rng lmgamma lmultiply log log10 log1m log1m_exp log1m_inv_logit log1p log1p_exp log2 log_determinant log_diff_exp log_falling_factorial log_inv_logit log_mix log_rising_factorial log_softmax log_sum_exp logistic_cdf logistic_lccdf logistic_lcdf logistic_lpdf logistic_rng logit lognormal_cdf lognormal_lccdf lognormal_lcdf lognormal_lpdf lognormal_rng machine_precision matrix_exp max mdivide_left_spd mdivide_left_tri_low mdivide_right_spd mdivide_right_tri_low mean min modified_bessel_first_kind modified_bessel_second_kind multi_gp_cholesky_lpdf multi_gp_lpdf multi_normal_cholesky_lpdf multi_normal_cholesky_rng multi_normal_lpdf multi_normal_prec_lpdf multi_normal_rng multi_student_t_lpdf multi_student_t_rng multinomial_lpmf multinomial_rng multiply_log multiply_lower_tri_self_transpose neg_binomial_2_cdf neg_binomial_2_lccdf neg_binomial_2_lcdf neg_binomial_2_log_lpmf neg_binomial_2_log_rng neg_binomial_2_lpmf neg_binomial_2_rng neg_binomial_cdf neg_binomial_lccdf neg_binomial_lcdf neg_binomial_lpmf neg_binomial_rng negative_infinity normal_cdf normal_lccdf normal_lcdf normal_lpdf normal_rng not_a_number num_elements ordered_logistic_lpmf ordered_logistic_rng owens_t pareto_cdf pareto_lccdf pareto_lcdf pareto_lpdf pareto_rng pareto_type_2_cdf pareto_type_2_lccdf pareto_type_2_lcdf pareto_type_2_lpdf pareto_type_2_rng pi poisson_cdf poisson_lccdf poisson_lcdf poisson_log_lpmf poisson_log_rng poisson_lpmf poisson_rng positive_infinity pow print prod qr_Q qr_R quad_form quad_form_diag quad_form_sym rank rayleigh_cdf rayleigh_lccdf rayleigh_lcdf rayleigh_lpdf rayleigh_rng reject rep_array rep_matrix rep_row_vector rep_vector rising_factorial round row rows rows_dot_product rows_dot_self scaled_inv_chi_square_cdf scaled_inv_chi_square_lccdf scaled_inv_chi_square_lcdf scaled_inv_chi_square_lpdf scaled_inv_chi_square_rng sd segment sin singular_values sinh size skew_normal_cdf skew_normal_lccdf skew_normal_lcdf skew_normal_lpdf skew_normal_rng softmax sort_asc sort_desc sort_indices_asc sort_indices_desc sqrt sqrt2 square squared_distance step student_t_cdf student_t_lccdf student_t_lcdf student_t_lpdf student_t_rng sub_col sub_row sum tail tan tanh target tcrossprod tgamma to_array_1d to_array_2d to_matrix to_row_vector to_vector trace trace_gen_quad_form trace_quad_form trigamma trunc uniform_cdf uniform_lccdf uniform_lcdf uniform_lpdf uniform_rng variance von_mises_lpdf von_mises_rng weibull_cdf weibull_lccdf weibull_lcdf weibull_lpdf weibull_rng wiener_lpdf wishart_lpdf wishart_rng" - }, - "lexemes": "[a-zA-Z]\\w*", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0, - "keywords": { - "meta-keyword": "include" - } - }, - { - "className": "comment", - "begin": "\\\/\\*", - "end": "\\*\\\/", - "contains": [ - { - "className": "doctag", - "begin": "@(return|param)" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "begin": "<\\s*lower\\s*=", - "keywords": "lower" - }, - { - "begin": "[<,]*upper\\s*=", - "keywords": "upper" - }, - { - "className": "keyword", - "begin": "\\btarget\\s*\\+=", - "relevance": 10 - }, - { - "begin": "~\\s*([a-zA-Z]\\w*)\\s*\\(", - "keywords": "bernoulli bernoulli_logit beta beta_binomial binomial binomial_logit categorical categorical_logit cauchy chi_square dirichlet double_exponential exp_mod_normal exponential frechet gamma gaussian_dlm_obs gumbel hypergeometric inv_chi_square inv_gamma inv_wishart lkj_corr lkj_corr_cholesky logistic lognormal multi_gp multi_gp_cholesky multi_normal multi_normal_cholesky multi_normal_prec multi_student_t multinomial neg_binomial neg_binomial_2 neg_binomial_2_log normal ordered_logistic pareto pareto_type_2 poisson poisson_log rayleigh scaled_inv_chi_square skew_normal student_t uniform von_mises weibull wiener wishart" - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?" - }, - { - "begin": "\\.\\d+(?:[eE][+-]?\\d+)?\\b" - } - ], - "relevance": 0 - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/stata.json b/vendor/scrivo/highlight.php/Highlight/languages/stata.json deleted file mode 100644 index 1af3a4507..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/stata.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "aliases": [ - "do", - "ado" - ], - "case_insensitive": true, - "keywords": "if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5", - "contains": [ - { - "className": "symbol", - "begin": "`[a-zA-Z0-9_]+'" - }, - { - "className": "variable", - "begin": "\\$\\{?[a-zA-Z0-9_]+\\}?" - }, - { - "className": "string", - "variants": [ - { - "begin": "`\"[^\r\n]*?\"'" - }, - { - "begin": "\"[^\r\n\"]*\"" - } - ] - }, - { - "className": "built_in", - "variants": [ - { - "begin": "\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()" - } - ] - }, - { - "className": "comment", - "begin": "^[ \t]*\\*.*$", - "end": false, - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.4.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.4.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/step21.json b/vendor/scrivo/highlight.php/Highlight/languages/step21.json deleted file mode 100644 index 3c91d477c..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/step21.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "aliases": [ - "p21", - "step", - "stp" - ], - "case_insensitive": true, - "lexemes": "[A-Z_][A-Z0-9_.]*", - "keywords": { - "keyword": "HEADER ENDSEC DATA" - }, - "contains": [ - { - "className": "meta", - "begin": "ISO-10303-21;", - "relevance": 10 - }, - { - "className": "meta", - "begin": "END-ISO-10303-21;", - "relevance": 10 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*\\*!", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": null, - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "className": "symbol", - "variants": [ - { - "begin": "#", - "end": "\\d+", - "illegal": "\\W" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/stylus.json b/vendor/scrivo/highlight.php/Highlight/languages/stylus.json deleted file mode 100644 index 99fd2c385..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/stylus.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "aliases": [ - "styl" - ], - "case_insensitive": false, - "keywords": "if else for in", - "illegal": "(\\?|(\\bReturn\\b)|(\\bEnd\\b)|(\\bend\\b)|(\\bdef\\b)|;|#\\s|\\*\\s|===\\s|\\||%)", - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.0" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})" - }, - { - "begin": "\\.[a-zA-Z][a-zA-Z0-9_\\-]*(?=[\\.\\s\\n\\[\\:,])", - "className": "selector-class" - }, - { - "begin": "\\#[a-zA-Z][a-zA-Z0-9_\\-]*(?=[\\.\\s\\n\\[\\:,])", - "className": "selector-id" - }, - { - "begin": "\\b(a|abbr|address|article|aside|audio|b|blockquote|body|button|canvas|caption|cite|code|dd|del|details|dfn|div|dl|dt|em|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|html|i|iframe|img|input|ins|kbd|label|legend|li|mark|menu|nav|object|ol|p|q|quote|samp|section|span|strong|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|tr|ul|var|video)(?=[\\.\\s\\n\\[\\:,])", - "className": "selector-tag" - }, - { - "begin": "&?:?:\\b(after|before|first-letter|first-line|active|first-child|focus|hover|lang|link|visited)(?=[\\.\\s\\n\\[\\:,])" - }, - { - "begin": "@(charset|css|debug|extend|font-face|for|import|include|media|mixin|page|warn|while)\\b" - }, - { - "className": "variable", - "begin": "\\$[a-zA-Z]\\w*" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", - "relevance": 0 - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "function", - "begin": "^[a-zA-Z][a-zA-Z0-9_\\-]*\\(.*\\)", - "illegal": "[\\n]", - "returnBegin": true, - "contains": [ - { - "className": "title", - "begin": "\\b[a-zA-Z][a-zA-Z0-9_\\-]*" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.10" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.11" - }, - { - "$ref": "#contains.12" - }, - { - "$ref": "#contains.0" - } - ] - } - ] - }, - { - "className": "attribute", - "begin": "\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|table-layout|tab-size|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-resolution|image-rendering|image-orientation|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b", - "starts": { - "end": ";|$", - "contains": [ - { - "$ref": "#contains.4" - }, - { - "$ref": "#contains.10" - }, - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.0" - }, - { - "$ref": "#contains.11" - }, - { - "$ref": "#contains.12" - }, - { - "$ref": "#contains.3" - } - ], - "illegal": "\\.", - "relevance": 0 - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/subunit.json b/vendor/scrivo/highlight.php/Highlight/languages/subunit.json deleted file mode 100644 index 313b4cad2..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/subunit.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "case_insensitive": true, - "contains": [ - { - "className": "string", - "begin": "\\[\n(multipart)?", - "end": "\\]\n" - }, - { - "className": "string", - "begin": "\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z" - }, - { - "className": "string", - "begin": "(\\+|-)\\d+" - }, - { - "className": "keyword", - "relevance": 10, - "variants": [ - { - "begin": "^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?" - }, - { - "begin": "^progress(:?)(\\s+)?(pop|push)?" - }, - { - "begin": "^tags:" - }, - { - "begin": "^time:" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/swift.json b/vendor/scrivo/highlight.php/Highlight/languages/swift.json deleted file mode 100644 index 7458fa205..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/swift.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "keywords": { - "keyword": "#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet", - "literal": "true false nil", - "built_in": "abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip" - }, - "contains": [ - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "subst", - "begin": "\\\\\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "className": "number", - "begin": "\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b", - "relevance": 0 - } - ] - } - ], - "variants": [ - { - "begin": "\"\"\"", - "end": "\"\"\"" - }, - { - "begin": "\"", - "end": "\"" - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - "self", - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "type", - "begin": "\\b[A-Z][\\wÀ\\-ʸ']*[!?]" - }, - { - "className": "type", - "begin": "\\b[A-Z][\\wÀ\\-ʸ']*", - "relevance": 0 - }, - { - "$ref": "#contains.0.contains.1.contains.0" - }, - { - "className": "function", - "beginKeywords": "func", - "end": "{", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "begin": "<", - "end": ">" - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "endsParent": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.0.contains.1.contains.0" - }, - { - "$ref": "#contains.0" - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "begin": ":" - } - ], - "illegal": "[\"']" - } - ], - "illegal": "\\[|%" - }, - { - "className": "class", - "beginKeywords": "struct protocol class extension enum", - "keywords": { - "$ref": "#keywords" - }, - "end": "\\{", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[A-Za-z$_][\\x{00C0}-\\x{02B8}0-9A-Za-z$_]*", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)" - }, - { - "beginKeywords": "import", - "end": "$", - "contains": [ - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/taggerscript.json b/vendor/scrivo/highlight.php/Highlight/languages/taggerscript.json deleted file mode 100644 index 04ebdd445..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/taggerscript.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "contains": [ - { - "className": "comment", - "begin": "\\$noop\\(", - "end": "\\)", - "contains": [ - { - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "begin": "\\\\." - } - ] - } - ], - "relevance": 10 - }, - { - "className": "keyword", - "begin": "\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*", - "end": "\\(", - "excludeEnd": true - }, - { - "className": "variable", - "begin": "%[_a-zA-Z0-9:]*", - "end": "%" - }, - { - "className": "symbol", - "begin": "\\\\." - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/tap.json b/vendor/scrivo/highlight.php/Highlight/languages/tap.json deleted file mode 100644 index 6c1e1e44d..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/tap.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "case_insensitive": true, - "contains": [ - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "variants": [ - { - "begin": "^TAP version (\\d+)$" - }, - { - "begin": "^1\\.\\.(\\d+)$" - } - ] - }, - { - "begin": "(s+)?---$", - "end": "\\.\\.\\.$", - "subLanguage": "yaml", - "relevance": 0 - }, - { - "className": "number", - "begin": " (\\d+) " - }, - { - "className": "symbol", - "variants": [ - { - "begin": "^ok" - }, - { - "begin": "^not ok" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/tcl.json b/vendor/scrivo/highlight.php/Highlight/languages/tcl.json deleted file mode 100644 index bc6800ed9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/tcl.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "aliases": [ - "tk" - ], - "keywords": "after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", - "contains": [ - { - "className": "comment", - "begin": ";[ \\t]*#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "^[ \\t]*#", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "proc", - "end": "[\\{]", - "excludeEnd": true, - "contains": [ - { - "className": "title", - "begin": "[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", - "end": "[ \\t\\n\\r]", - "endsWithParent": true, - "excludeEnd": true - } - ] - }, - { - "excludeEnd": true, - "variants": [ - { - "begin": "\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", - "end": "[^a-zA-Z0-9_\\}\\$]" - }, - { - "begin": "\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", - "end": "(\\))?[^a-zA-Z0-9_\\}\\$]" - } - ] - }, - { - "className": "string", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ], - "variants": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - } - ] - }, - { - "className": "number", - "variants": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/tex.json b/vendor/scrivo/highlight.php/Highlight/languages/tex.json deleted file mode 100644 index 63ed98484..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/tex.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "contains": [ - { - "className": "tag", - "begin": "\\\\", - "relevance": 0, - "contains": [ - { - "className": "name", - "variants": [ - { - "begin": "[a-zA-Z\\x{0430}-\\x{044f}\\x{0410}-\\x{042f}]+[*]?" - }, - { - "begin": "[^a-zA-Z\\x{0430}-\\x{044f}\\x{0410}-\\x{042f0}-9]" - } - ], - "starts": { - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "className": "string", - "variants": [ - { - "begin": "\\[", - "end": "\\]" - }, - { - "begin": "\\{", - "end": "\\}" - } - ] - }, - { - "begin": "\\s*=\\s*", - "endsWithParent": true, - "relevance": 0, - "contains": [ - { - "className": "number", - "begin": "-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?" - } - ] - } - ] - } - } - ] - }, - { - "className": "formula", - "contains": [ - { - "$ref": "#contains.0" - } - ], - "relevance": 0, - "variants": [ - { - "begin": "\\$\\$", - "end": "\\$\\$" - }, - { - "begin": "\\$", - "end": "\\$" - } - ] - }, - { - "className": "comment", - "begin": "%", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/thrift.json b/vendor/scrivo/highlight.php/Highlight/languages/thrift.json deleted file mode 100644 index 6c65fe597..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/thrift.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "keywords": { - "keyword": "namespace const typedef struct enum service exception void oneway set list map required optional", - "built_in": "bool byte i16 i32 i64 double string binary", - "literal": "true false" - }, - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.2.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "class", - "beginKeywords": "struct enum service exception", - "end": "\\{", - "illegal": "\\n", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "starts": { - "endsWithParent": true, - "excludeEnd": true - } - } - ] - }, - { - "begin": "\\b(set|list|map)\\s*<", - "end": ">", - "keywords": "bool byte i16 i32 i64 double string binary", - "contains": [ - "self" - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/tp.json b/vendor/scrivo/highlight.php/Highlight/languages/tp.json deleted file mode 100644 index 3d9fe8fb9..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/tp.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "keywords": { - "keyword": "ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS", - "literal": "ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET" - }, - "contains": [ - { - "className": "built_in", - "begin": "(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[", - "end": "\\]", - "contains": [ - "self", - { - "className": "number", - "begin": "[1-9][0-9]*", - "relevance": 0 - }, - { - "className": "symbol", - "begin": ":[^\\]]+" - } - ] - }, - { - "className": "built_in", - "begin": "(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[", - "end": "\\]", - "contains": [ - "self", - { - "$ref": "#contains.0.contains.1" - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.0.contains.2" - } - ] - }, - { - "className": "keyword", - "begin": "\/(PROG|ATTR|MN|POS|END)\\b" - }, - { - "className": "keyword", - "begin": "(CALL|RUN|POINT_LOGIC|LBL)\\b" - }, - { - "className": "keyword", - "begin": "\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)" - }, - { - "className": "number", - "begin": "\\d+(sec|msec|mm\/sec|cm\/min|inch\/min|deg\/sec|mm|in|cm)?\\b", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\/\/", - "end": "[;$]", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "!", - "end": "[;$]", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--eg:", - "end": "$", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.1.contains.2" - }, - { - "className": "string", - "begin": "'", - "end": "'" - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "variable", - "begin": "\\$[A-Za-z0-9_]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/twig.json b/vendor/scrivo/highlight.php/Highlight/languages/twig.json deleted file mode 100644 index b961028cb..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/twig.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "aliases": [ - "craftcms" - ], - "case_insensitive": true, - "subLanguage": "xml", - "contains": [ - { - "className": "comment", - "begin": "\\{#", - "end": "#}", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "template-tag", - "begin": "\\{%", - "end": "%}", - "contains": [ - { - "className": "name", - "begin": "\\w+", - "keywords": "apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with endapply endautoescape endblock enddeprecated enddo endembed endextends endfilter endflush endfor endfrom endif endimport endinclude endmacro endsandbox endset enduse endverbatim endwith", - "starts": { - "endsWithParent": true, - "contains": [ - { - "begin": "\\|[A-Za-z_]+:?", - "keywords": "abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode", - "contains": [ - { - "beginKeywords": "attribute block constant cycle date dump include max min parent random range source template_from_string", - "keywords": { - "name": "attribute block constant cycle date dump include max min parent random range source template_from_string" - }, - "relevance": 0, - "contains": [ - { - "className": "params", - "begin": "\\(", - "end": "\\)" - } - ] - } - ] - }, - { - "$ref": "#contains.1.contains.0.starts.contains.0.contains.0" - } - ], - "relevance": 0 - } - } - ] - }, - { - "className": "template-variable", - "begin": "\\{\\{", - "end": "}}", - "contains": [ - "self", - { - "$ref": "#contains.1.contains.0.starts.contains.0" - }, - { - "$ref": "#contains.1.contains.0.starts.contains.0.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/typescript.json b/vendor/scrivo/highlight.php/Highlight/languages/typescript.json deleted file mode 100644 index 951f95f7a..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/typescript.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "aliases": [ - "ts" - ], - "keywords": { - "keyword": "in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await", - "literal": "true false null undefined NaN Infinity", - "built_in": "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise" - }, - "contains": [ - { - "className": "meta", - "begin": "^\\s*['\"]use strict['\"]" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - }, - { - "begin": "html`", - "end": "", - "starts": { - "end": "`", - "returnEnd": false, - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "subst", - "begin": "\\$\\{", - "end": "\\}", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.1" - }, - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.3" - }, - { - "begin": "css`", - "end": "", - "starts": { - "end": "`", - "returnEnd": false, - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "$ref": "#contains.3.starts.contains.1" - } - ], - "subLanguage": "css" - } - }, - { - "className": "string", - "begin": "`", - "end": "`", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "$ref": "#contains.3.starts.contains.1" - } - ] - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(0[bB][01]+)n?" - }, - { - "begin": "\\b(0[oO][0-7]+)n?" - }, - { - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)n?" - } - ], - "relevance": 0 - }, - { - "className": "regexp", - "begin": "\\\/", - "end": "\\\/[gimuy]*", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "begin": "\\[", - "end": "\\]", - "relevance": 0, - "contains": [ - { - "$ref": "#contains.1.contains.0" - } - ] - } - ] - } - ] - } - ], - "subLanguage": "xml" - } - }, - { - "$ref": "#contains.3.starts.contains.1.contains.3" - }, - { - "$ref": "#contains.3.starts.contains.1.contains.4" - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.6.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "$ref": "#contains.3.starts.contains.1.contains.5" - }, - { - "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|\\b(case|return|throw)\\b)\\s*", - "keywords": "return throw case", - "contains": [ - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.7" - }, - { - "$ref": "#contains.3.starts.contains.1.contains.6" - }, - { - "className": "function", - "begin": "(\\(.*?\\)|[a-zA-Z]\\w*)\\s*=>", - "returnBegin": true, - "end": "\\s*=>", - "contains": [ - { - "className": "params", - "variants": [ - { - "begin": "[a-zA-Z]\\w*" - }, - { - "begin": "\\(\\s*\\)" - }, - { - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.7" - } - ] - } - ] - } - ] - } - ], - "relevance": 0 - }, - { - "className": "function", - "beginKeywords": "function", - "end": "[\\{;]", - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "className": "title", - "begin": "[A-Za-z$_][0-9A-Za-z$_]*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "excludeBegin": true, - "excludeEnd": true, - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.6" - }, - { - "$ref": "#contains.7" - }, - { - "className": "meta", - "begin": "@[A-Za-z$_][0-9A-Za-z$_]*" - }, - { - "begin": "\\(", - "end": "\\)", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - "self", - { - "$ref": "#contains.2" - }, - { - "$ref": "#contains.1" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] - } - ] - } - ], - "illegal": "%", - "relevance": 0 - }, - { - "beginKeywords": "constructor", - "end": "[\\{;]", - "excludeEnd": true, - "contains": [ - "self", - { - "$ref": "#contains.10.contains.2" - } - ] - }, - { - "begin": "module\\.", - "keywords": { - "built_in": "module" - }, - "relevance": 0 - }, - { - "beginKeywords": "module", - "end": "\\{", - "excludeEnd": true - }, - { - "beginKeywords": "interface", - "end": "\\{", - "excludeEnd": true, - "keywords": "interface extends" - }, - { - "begin": "\\$[(.]" - }, - { - "begin": "\\.[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "$ref": "#contains.10.contains.2.contains.2" - }, - { - "$ref": "#contains.10.contains.2.contains.3" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vala.json b/vendor/scrivo/highlight.php/Highlight/languages/vala.json deleted file mode 100644 index 729a166e3..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vala.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "keywords": { - "keyword": "char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", - "built_in": "DBus GLib CCode Gee Object Gtk Posix", - "literal": "false true null" - }, - "contains": [ - { - "className": "class", - "beginKeywords": "class interface namespace", - "end": "{", - "excludeEnd": true, - "illegal": "[^,:\\n\\s\\.]", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.1.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"\"\"", - "end": "\"\"\"", - "relevance": 5 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "^#", - "end": "$", - "relevance": 2 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vbnet.json b/vendor/scrivo/highlight.php/Highlight/languages/vbnet.json deleted file mode 100644 index 05b2fef75..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vbnet.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "aliases": [ - "vb" - ], - "case_insensitive": true, - "keywords": { - "keyword": "addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass nameof namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield", - "built_in": "boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort", - "literal": "true false nothing" - }, - "illegal": "\/\/|{|}|endif|gosub|variant|wend|^\\$ ", - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "comment", - "begin": "'", - "end": "$", - "contains": [ - { - "className": "doctag", - "begin": "'''|<!--|-->", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - } - ] - }, - { - "className": "doctag", - "begin": "<\/?", - "end": ">", - "contains": [ - { - "$ref": "#contains.1.contains.0.contains.0" - } - ] - }, - { - "$ref": "#contains.1.contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "returnBegin": true - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - }, - { - "className": "meta", - "begin": "#", - "end": "$", - "keywords": { - "meta-keyword": "if else elseif end region externalsource" - } - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vbscript-html.json b/vendor/scrivo/highlight.php/Highlight/languages/vbscript-html.json deleted file mode 100644 index dce239e01..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vbscript-html.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "subLanguage": "xml", - "contains": [ - { - "begin": "<%", - "end": "%>", - "subLanguage": "vbscript" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vbscript.json b/vendor/scrivo/highlight.php/Highlight/languages/vbscript.json deleted file mode 100644 index 80e9f8d15..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vbscript.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "aliases": [ - "vbs" - ], - "case_insensitive": true, - "keywords": { - "keyword": "call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto", - "built_in": "lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err", - "literal": "true false null nothing empty" - }, - "illegal": "\/\/", - "contains": [ - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\"\"" - } - ] - }, - { - "className": "comment", - "begin": "'", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/verilog.json b/vendor/scrivo/highlight.php/Highlight/languages/verilog.json deleted file mode 100644 index 8d76cff0e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/verilog.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "aliases": [ - "v", - "sv", - "svh" - ], - "case_insensitive": false, - "keywords": { - "keyword": "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor", - "literal": "null", - "built_in": "$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror" - }, - "lexemes": "[\\w\\$]+", - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ], - "variants": [ - { - "begin": "\\b((\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)" - }, - { - "begin": "\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)" - }, - { - "begin": "\\b([0-9_])+", - "relevance": 0 - } - ] - }, - { - "className": "variable", - "variants": [ - { - "begin": "#\\((?!parameter).+\\)" - }, - { - "begin": "\\.\\w+", - "relevance": 0 - } - ] - }, - { - "className": "meta", - "begin": "`", - "end": "$", - "keywords": { - "meta-keyword": "define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall" - }, - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vhdl.json b/vendor/scrivo/highlight.php/Highlight/languages/vhdl.json deleted file mode 100644 index 8794f71da..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vhdl.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "case_insensitive": true, - "keywords": { - "keyword": "abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor", - "built_in": "boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector", - "literal": "false true note warning error failure line text side width" - }, - "illegal": "{", - "contains": [ - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "--", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "number", - "begin": "\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)", - "relevance": 0 - }, - { - "className": "string", - "begin": "'(U|X|0|1|Z|W|L|H|-)'", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - }, - { - "className": "symbol", - "begin": "'[A-Za-z](_?[A-Za-z0-9])*", - "contains": [ - { - "$ref": "#contains.2.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/vim.json b/vendor/scrivo/highlight.php/Highlight/languages/vim.json deleted file mode 100644 index 1edb96152..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/vim.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "lexemes": "[!#@\\w]+", - "keywords": { - "keyword": "N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank", - "built_in": "synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp" - }, - "illegal": ";", - "contains": [ - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n" - }, - { - "className": "string", - "begin": "\"(\\\\\"|\\n\\\\|[^\"\\n])*\"" - }, - { - "className": "comment", - "begin": "\"", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "variable", - "begin": "[bwtglsav]:[\\w\\d_]*" - }, - { - "className": "function", - "beginKeywords": "function function!", - "end": "$", - "relevance": 0, - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)" - } - ] - }, - { - "className": "symbol", - "begin": "<[\\w\\-]+>" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/x86asm.json b/vendor/scrivo/highlight.php/Highlight/languages/x86asm.json deleted file mode 100644 index 3fa4d2f05..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/x86asm.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "case_insensitive": true, - "lexemes": "[.%]?[a-zA-Z]\\w*", - "keywords": { - "keyword": "lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63", - "built_in": "ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr", - "meta": "%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__" - }, - "contains": [ - { - "className": "comment", - "begin": ";", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 0 - }, - { - "className": "number", - "variants": [ - { - "begin": "\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b", - "relevance": 0 - }, - { - "begin": "\\$[0-9][0-9A-Fa-f]*", - "relevance": 0 - }, - { - "begin": "\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b" - }, - { - "begin": "\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "'", - "end": "[^\\\\]'" - }, - { - "begin": "`", - "end": "[^\\\\]`" - } - ], - "relevance": 0 - }, - { - "className": "symbol", - "variants": [ - { - "begin": "^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)" - }, - { - "begin": "^\\s*%%[A-Za-z0-9_$#@~.?]*:" - } - ], - "relevance": 0 - }, - { - "className": "subst", - "begin": "%[0-9]+", - "relevance": 0 - }, - { - "className": "subst", - "begin": "%!S+", - "relevance": 0 - }, - { - "className": "meta", - "begin": "^\\s*\\.[\\w_\\-]+" - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/xl.json b/vendor/scrivo/highlight.php/Highlight/languages/xl.json deleted file mode 100644 index dfd66c7cc..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/xl.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "aliases": [ - "tao" - ], - "lexemes": "[a-zA-Z][a-zA-Z0-9_?]*", - "keywords": { - "keyword": "if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree", - "literal": "true false nil", - "built_in": "in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts" - }, - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": "\\n" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": "\\n" - }, - { - "className": "string", - "begin": "<<", - "end": ">>" - }, - { - "className": "function", - "begin": "[a-z][^\\n]*->", - "returnBegin": true, - "end": "->", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z]\\w*", - "relevance": 0, - "starts": { - "endsWithParent": true, - "keywords": { - "$ref": "#keywords" - } - } - } - ] - }, - { - "beginKeywords": "import", - "end": "$", - "keywords": { - "$ref": "#keywords" - }, - "contains": [ - { - "$ref": "#contains.2" - } - ] - }, - { - "className": "number", - "begin": "[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?" - }, - { - "className": "number", - "begin": "\\b\\d+(\\.\\d+)?", - "relevance": 0 - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/xml.json b/vendor/scrivo/highlight.php/Highlight/languages/xml.json deleted file mode 100644 index a991d9a4e..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/xml.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "aliases": [ - "html", - "xhtml", - "rss", - "atom", - "xjb", - "xsd", - "xsl", - "plist", - "wsf", - "svg" - ], - "case_insensitive": true, - "contains": [ - { - "className": "meta", - "begin": "<![a-z]", - "end": ">", - "relevance": 10, - "contains": [ - { - "begin": "\\s", - "contains": [ - { - "className": "meta-keyword", - "begin": "#?[a-z_][a-z1-9_\\-]+", - "illegal": "\\n" - } - ] - }, - { - "className": "meta-string", - "begin": "\"", - "end": "\"", - "illegal": "\\n", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "className": "meta-string", - "begin": "'", - "end": "'", - "illegal": "\\n", - "contains": [ - { - "$ref": "#contains.0.contains.1.contains.0" - } - ] - }, - { - "begin": "\\(", - "contains": { - "$ref": "#contains.0.contains.0.contains" - }, - "end": "\\)" - }, - { - "begin": "\\[", - "end": "\\]", - "contains": [ - { - "className": "meta", - "begin": "<![a-z]", - "end": ">", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "$ref": "#contains.0.contains.3" - }, - { - "$ref": "#contains.0.contains.1" - }, - { - "$ref": "#contains.0.contains.2" - } - ] - } - ] - } - ] - }, - { - "className": "comment", - "begin": "<!--", - "end": "-->", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "relevance": 10 - }, - { - "begin": "<\\!\\[CDATA\\[", - "end": "\\]\\]>", - "relevance": 10 - }, - { - "className": "symbol", - "begin": "&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;" - }, - { - "className": "meta", - "begin": "<\\?xml", - "end": "\\?>", - "relevance": 10 - }, - { - "begin": "<\\?(php)?", - "end": "\\?>", - "subLanguage": "php", - "contains": [ - { - "begin": "\/\\*", - "end": "\\*\/", - "skip": true - }, - { - "begin": "b\"", - "end": "\"", - "skip": true - }, - { - "begin": "b'", - "end": "'", - "skip": true - }, - { - "className": null, - "begin": "'", - "end": "'", - "illegal": null, - "contains": null, - "skip": true - }, - { - "className": null, - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": null, - "skip": true - } - ] - }, - { - "className": "tag", - "begin": "<style(?=\\s|>)", - "end": ">", - "keywords": { - "name": "style" - }, - "contains": [ - { - "endsWithParent": true, - "illegal": "<", - "relevance": 0, - "contains": [ - { - "className": "attr", - "begin": "[A-Za-z0-9\\._:-]+", - "relevance": 0 - }, - { - "begin": "=\\s*", - "relevance": 0, - "contains": [ - { - "className": "string", - "endsParent": true, - "variants": [ - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "$ref": "#contains.3" - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "$ref": "#contains.3" - } - ] - }, - { - "begin": "[^\\s\"'=<>`]+" - } - ] - } - ] - } - ] - } - ], - "starts": { - "end": "<\/style>", - "returnEnd": true, - "subLanguage": [ - "css", - "xml" - ] - } - }, - { - "className": "tag", - "begin": "<script(?=\\s|>)", - "end": ">", - "keywords": { - "name": "script" - }, - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ], - "starts": { - "end": "<\/script>", - "returnEnd": true, - "subLanguage": [ - "actionscript", - "javascript", - "handlebars", - "xml" - ] - } - }, - { - "className": "tag", - "begin": "<\/?", - "end": "\/?>", - "contains": [ - { - "className": "name", - "begin": "[^\\\/><\\s]+", - "relevance": 0 - }, - { - "$ref": "#contains.6.contains.0" - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/xquery.json b/vendor/scrivo/highlight.php/Highlight/languages/xquery.json deleted file mode 100644 index 8f6aab421..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/xquery.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "aliases": [ - "xpath", - "xq" - ], - "case_insensitive": false, - "lexemes": "[a-zA-Z\\$][a-zA-Z0-9_:\\-]*", - "illegal": "(proc)|(abstract)|(extends)|(until)|(#)", - "keywords": { - "keyword": "module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", - "type": "item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", - "literal": "eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" - }, - "contains": [ - { - "className": "variable", - "begin": "[\\$][\\w\\-:]+" - }, - { - "className": "built_in", - "variants": [ - { - "begin": "\\barray\\:", - "end": "(?:append|filter|flatten|fold\\-(?:left|right)|for-each(?:\\-pair)?|get|head|insert\\-before|join|put|remove|reverse|size|sort|subarray|tail)\\b" - }, - { - "begin": "\\bmap\\:", - "end": "(?:contains|entry|find|for\\-each|get|keys|merge|put|remove|size)\\b" - }, - { - "begin": "\\bmath\\:", - "end": "(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\\b" - }, - { - "begin": "\\bop\\:", - "end": "\\(", - "excludeEnd": true - }, - { - "begin": "\\bfn\\:", - "end": "\\(", - "excludeEnd": true - }, - { - "begin": "[^<\\\/\\$\\:'\"-]\\b(?:abs|accumulator\\-(?:after|before)|adjust\\-(?:date(?:Time)?|time)\\-to\\-timezone|analyze\\-string|apply|available\\-(?:environment\\-variables|system\\-properties)|avg|base\\-uri|boolean|ceiling|codepoints?\\-(?:equal|to\\-string)|collation\\-key|collection|compare|concat|contains(?:\\-token)?|copy\\-of|count|current(?:\\-)?(?:date(?:Time)?|time|group(?:ing\\-key)?|output\\-uri|merge\\-(?:group|key))?data|dateTime|days?\\-from\\-(?:date(?:Time)?|duration)|deep\\-equal|default\\-(?:collation|language)|distinct\\-values|document(?:\\-uri)?|doc(?:\\-available)?|element\\-(?:available|with\\-id)|empty|encode\\-for\\-uri|ends\\-with|environment\\-variable|error|escape\\-html\\-uri|exactly\\-one|exists|false|filter|floor|fold\\-(?:left|right)|for\\-each(?:\\-pair)?|format\\-(?:date(?:Time)?|time|integer|number)|function\\-(?:arity|available|lookup|name)|generate\\-id|has\\-children|head|hours\\-from\\-(?:dateTime|duration|time)|id(?:ref)?|implicit\\-timezone|in\\-scope\\-prefixes|index\\-of|innermost|insert\\-before|iri\\-to\\-uri|json\\-(?:doc|to\\-xml)|key|lang|last|load\\-xquery\\-module|local\\-name(?:\\-from\\-QName)?|(?:lower|upper)\\-case|matches|max|minutes\\-from\\-(?:dateTime|duration|time)|min|months?\\-from\\-(?:date(?:Time)?|duration)|name(?:space\\-uri\\-?(?:for\\-prefix|from\\-QName)?)?|nilled|node\\-name|normalize\\-(?:space|unicode)|not|number|one\\-or\\-more|outermost|parse\\-(?:ietf\\-date|json)|path|position|(?:prefix\\-from\\-)?QName|random\\-number\\-generator|regex\\-group|remove|replace|resolve\\-(?:QName|uri)|reverse|root|round(?:\\-half\\-to\\-even)?|seconds\\-from\\-(?:dateTime|duration|time)|snapshot|sort|starts\\-with|static\\-base\\-uri|stream\\-available|string\\-?(?:join|length|to\\-codepoints)?|subsequence|substring\\-?(?:after|before)?|sum|system\\-property|tail|timezone\\-from\\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\\-available|unordered|unparsed\\-(?:entity|text)?\\-?(?:public\\-id|uri|available|lines)?|uri\\-collection|xml\\-to\\-json|years?\\-from\\-(?:date(?:Time)?|duration)|zero\\-or\\-one)\\b" - }, - { - "begin": "\\blocal\\:", - "end": "\\(", - "excludeEnd": true - }, - { - "begin": "\\bzip\\:", - "end": "(?:zip\\-file|(?:xml|html|text|binary)\\-entry| (?:update\\-)?entries)\\b" - }, - { - "begin": "\\b(?:util|db|functx|app|xdmp|xmldb)\\:", - "end": "\\(", - "excludeEnd": true - } - ] - }, - { - "className": "string", - "variants": [ - { - "begin": "\"", - "end": "\"", - "contains": [ - { - "begin": "\"\"", - "relevance": 0 - } - ] - }, - { - "begin": "'", - "end": "'", - "contains": [ - { - "begin": "''", - "relevance": 0 - } - ] - } - ] - }, - { - "className": "number", - "begin": "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", - "relevance": 0 - }, - { - "className": "comment", - "begin": "\\(:", - "end": ":\\)", - "relevance": 10, - "contains": [ - { - "className": "doctag", - "begin": "@\\w+" - } - ] - }, - { - "className": "meta", - "begin": "%[\\w\\-:]+" - }, - { - "className": "title", - "begin": "\\bxquery version \"[13]\\.[01]\"\\s?(?:encoding \".+\")?", - "end": ";" - }, - { - "beginKeywords": "element attribute comment document processing-instruction", - "end": "{", - "excludeEnd": true - }, - { - "begin": "<([\\w\\._:\\-]+)((\\s*.*)=('|\").*('|\"))?>", - "end": "(\\\/[\\w\\._:\\-]+>)", - "subLanguage": "xml", - "contains": [ - { - "begin": "{", - "end": "}", - "subLanguage": "xquery" - }, - "self" - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/yaml.json b/vendor/scrivo/highlight.php/Highlight/languages/yaml.json deleted file mode 100644 index e8a596850..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/yaml.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "case_insensitive": true, - "aliases": [ - "yml", - "YAML", - "yaml" - ], - "contains": [ - { - "className": "attr", - "variants": [ - { - "begin": "\\w[\\w :\\\/.-]*:(?=[ \t]|$)" - }, - { - "begin": "\"\\w[\\w :\\\/.-]*\":(?=[ \t]|$)" - }, - { - "begin": "'\\w[\\w :\\\/.-]*':(?=[ \t]|$)" - } - ] - }, - { - "className": "meta", - "begin": "^---s*$", - "relevance": 10 - }, - { - "className": "string", - "begin": "[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*" - }, - { - "begin": "<%[%=-]?", - "end": "[%-]?%>", - "subLanguage": "ruby", - "excludeBegin": true, - "excludeEnd": true, - "relevance": 0 - }, - { - "className": "type", - "begin": "![a-zA-Z_]\\w*" - }, - { - "className": "type", - "begin": "!![a-zA-Z_]\\w*" - }, - { - "className": "meta", - "begin": "&[a-zA-Z_]\\w*$" - }, - { - "className": "meta", - "begin": "\\*[a-zA-Z_]\\w*$" - }, - { - "className": "bullet", - "begin": "\\-(?=[ ]|$)", - "relevance": 0 - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "beginKeywords": "true false yes no null", - "keywords": { - "literal": "true false yes no null" - } - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)\\b" - }, - { - "className": "string", - "relevance": 0, - "variants": [ - { - "begin": "'", - "end": "'" - }, - { - "begin": "\"", - "end": "\"" - }, - { - "begin": "\\S+" - } - ], - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - }, - { - "className": "template-variable", - "variants": [ - { - "begin": "{{", - "end": "}}" - }, - { - "begin": "%{", - "end": "}" - } - ] - } - ] - } - ] -} diff --git a/vendor/scrivo/highlight.php/Highlight/languages/zephir.json b/vendor/scrivo/highlight.php/Highlight/languages/zephir.json deleted file mode 100644 index 7231f4868..000000000 --- a/vendor/scrivo/highlight.php/Highlight/languages/zephir.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "aliases": [ - "zep" - ], - "case_insensitive": true, - "keywords": "and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely", - "contains": [ - { - "className": "comment", - "begin": "\/\/", - "end": "$", - "contains": [ - { - "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "#", - "end": "$", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "className": "doctag", - "begin": "@[A-Za-z]+" - }, - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "comment", - "begin": "__halt_compiler.+?;", - "end": false, - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ], - "endsWithParent": true, - "keywords": "__halt_compiler", - "lexemes": "[a-zA-Z_]\\w*" - }, - { - "className": "string", - "begin": "<<<['\"]?\\w+['\"]?$", - "end": "^\\w+;", - "contains": [ - { - "begin": "\\\\[\\s\\S]", - "relevance": 0 - } - ] - }, - { - "begin": "(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*" - }, - { - "className": "function", - "beginKeywords": "function", - "end": "[;{]", - "excludeEnd": true, - "illegal": "\\$|\\[|%", - "contains": [ - { - "className": "title", - "begin": "[a-zA-Z_]\\w*", - "relevance": 0 - }, - { - "className": "params", - "begin": "\\(", - "end": "\\)", - "contains": [ - "self", - { - "className": "comment", - "begin": "\/\\*", - "end": "\\*\/", - "contains": [ - { - "$ref": "#contains.0.contains.0" - }, - { - "className": "doctag", - "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):", - "relevance": 0 - } - ] - }, - { - "className": "string", - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ], - "variants": [ - { - "begin": "b\"", - "end": "\"" - }, - { - "begin": "b'", - "end": "'" - }, - { - "className": "string", - "begin": "'", - "end": "'", - "illegal": null, - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - }, - { - "className": "string", - "begin": "\"", - "end": "\"", - "illegal": null, - "contains": [ - { - "$ref": "#contains.4.contains.0" - } - ] - } - ] - }, - { - "variants": [ - { - "className": "number", - "begin": "\\b(0b[01]+)", - "relevance": 0 - }, - { - "className": "number", - "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", - "relevance": 0 - } - ] - } - ] - } - ] - }, - { - "className": "class", - "beginKeywords": "class interface", - "end": "{", - "excludeEnd": true, - "illegal": "[:\\(\\$\"]", - "contains": [ - { - "beginKeywords": "extends implements" - }, - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "beginKeywords": "namespace", - "end": ";", - "illegal": "[\\.']", - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "beginKeywords": "use", - "end": ";", - "contains": [ - { - "$ref": "#contains.6.contains.0" - } - ] - }, - { - "begin": "=>" - }, - { - "$ref": "#contains.6.contains.1.contains.2" - }, - { - "$ref": "#contains.6.contains.1.contains.3" - } - ] -} diff --git a/vendor/scrivo/highlight.php/HighlightUtilities/_internals.php b/vendor/scrivo/highlight.php/HighlightUtilities/_internals.php deleted file mode 100644 index fd7f0f9fd..000000000 --- a/vendor/scrivo/highlight.php/HighlightUtilities/_internals.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -/** - * Remove the `.css` extension from a string if it has one. - * - * @internal - * - * @param string $name - * - * @return string - */ -function _getNoCssExtension($name) -{ - if (substr($name, -4, 4) === ".css") { - $name = preg_replace("/\.css$/", "", $name); - } - - return $name; -} diff --git a/vendor/scrivo/highlight.php/HighlightUtilities/_themeColors.php b/vendor/scrivo/highlight.php/HighlightUtilities/_themeColors.php deleted file mode 100644 index 2cb7ace6e..000000000 --- a/vendor/scrivo/highlight.php/HighlightUtilities/_themeColors.php +++ /dev/null @@ -1,479 +0,0 @@ -<?php - -// DO NOT MODIFY. This file is automatically generated. - -/** - * Get the background color for a specific CSS theme. - * - * @param string $theme The theme name - * - * @throws \DomainException when no stylesheet with this name exists - * - * @return float[] - */ -function _getThemeBackgroundColor($theme) -{ - $colors = array( - 'a11y-dark' => array( - 'r' => 43.0, - 'g' => 43.0, - 'b' => 43.0, - ), - 'a11y-light' => array( - 'r' => 254.0, - 'g' => 254.0, - 'b' => 254.0, - ), - 'agate' => array( - 'r' => 51.0, - 'g' => 51.0, - 'b' => 51.0, - ), - 'an-old-hope' => array( - 'r' => 28.0, - 'g' => 29.0, - 'b' => 33.0, - ), - 'androidstudio' => array( - 'r' => 40.0, - 'g' => 43.0, - 'b' => 46.0, - ), - 'arduino-light' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'arta' => array( - 'r' => 34.0, - 'g' => 34.0, - 'b' => 34.0, - ), - 'ascetic' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'atelier-cave-dark' => array( - 'r' => 25.0, - 'g' => 23.0, - 'b' => 28.0, - ), - 'atelier-cave-light' => array( - 'r' => 239.0, - 'g' => 236.0, - 'b' => 244.0, - ), - 'atelier-dune-dark' => array( - 'r' => 32.0, - 'g' => 32.0, - 'b' => 29.0, - ), - 'atelier-dune-light' => array( - 'r' => 254.0, - 'g' => 251.0, - 'b' => 236.0, - ), - 'atelier-estuary-dark' => array( - 'r' => 34.0, - 'g' => 34.0, - 'b' => 27.0, - ), - 'atelier-estuary-light' => array( - 'r' => 244.0, - 'g' => 243.0, - 'b' => 236.0, - ), - 'atelier-forest-dark' => array( - 'r' => 27.0, - 'g' => 25.0, - 'b' => 24.0, - ), - 'atelier-forest-light' => array( - 'r' => 241.0, - 'g' => 239.0, - 'b' => 238.0, - ), - 'atelier-heath-dark' => array( - 'r' => 27.0, - 'g' => 24.0, - 'b' => 27.0, - ), - 'atelier-heath-light' => array( - 'r' => 247.0, - 'g' => 243.0, - 'b' => 247.0, - ), - 'atelier-lakeside-dark' => array( - 'r' => 22.0, - 'g' => 27.0, - 'b' => 29.0, - ), - 'atelier-lakeside-light' => array( - 'r' => 235.0, - 'g' => 248.0, - 'b' => 255.0, - ), - 'atelier-plateau-dark' => array( - 'r' => 27.0, - 'g' => 24.0, - 'b' => 24.0, - ), - 'atelier-plateau-light' => array( - 'r' => 244.0, - 'g' => 236.0, - 'b' => 236.0, - ), - 'atelier-savanna-dark' => array( - 'r' => 23.0, - 'g' => 28.0, - 'b' => 25.0, - ), - 'atelier-savanna-light' => array( - 'r' => 236.0, - 'g' => 244.0, - 'b' => 238.0, - ), - 'atelier-seaside-dark' => array( - 'r' => 19.0, - 'g' => 21.0, - 'b' => 19.0, - ), - 'atelier-seaside-light' => array( - 'r' => 244.0, - 'g' => 251.0, - 'b' => 244.0, - ), - 'atelier-sulphurpool-dark' => array( - 'r' => 32.0, - 'g' => 39.0, - 'b' => 70.0, - ), - 'atelier-sulphurpool-light' => array( - 'r' => 245.0, - 'g' => 247.0, - 'b' => 255.0, - ), - 'atom-one-dark-reasonable' => array( - 'r' => 40.0, - 'g' => 44.0, - 'b' => 52.0, - ), - 'atom-one-dark' => array( - 'r' => 40.0, - 'g' => 44.0, - 'b' => 52.0, - ), - 'atom-one-light' => array( - 'r' => 250.0, - 'g' => 250.0, - 'b' => 250.0, - ), - 'brown-paper' => array( - 'r' => 183.0, - 'g' => 166.0, - 'b' => 142.0, - ), - 'codepen-embed' => array( - 'r' => 34.0, - 'g' => 34.0, - 'b' => 34.0, - ), - 'color-brewer' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'darcula' => array( - 'r' => 43.0, - 'g' => 43.0, - 'b' => 43.0, - ), - 'dark' => array( - 'r' => 68.0, - 'g' => 68.0, - 'b' => 68.0, - ), - 'darkula' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'default' => array( - 'r' => 240.0, - 'g' => 240.0, - 'b' => 240.0, - ), - 'docco' => array( - 'r' => 248.0, - 'g' => 248.0, - 'b' => 255.0, - ), - 'dracula' => array( - 'r' => 40.0, - 'g' => 42.0, - 'b' => 54.0, - ), - 'far' => array( - 'r' => 0.0, - 'g' => 0.0, - 'b' => 128.0, - ), - 'foundation' => array( - 'r' => 238.0, - 'g' => 238.0, - 'b' => 238.0, - ), - 'github-gist' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'github' => array( - 'r' => 248.0, - 'g' => 248.0, - 'b' => 248.0, - ), - 'gml' => array( - 'r' => 34.0, - 'g' => 34.0, - 'b' => 34.0, - ), - 'googlecode' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'gradient-dark' => array( - 'r' => 80.0, - 'g' => 31.0, - 'b' => 122.0, - ), - 'grayscale' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'gruvbox-dark' => array( - 'r' => 40.0, - 'g' => 40.0, - 'b' => 40.0, - ), - 'gruvbox-light' => array( - 'r' => 251.0, - 'g' => 241.0, - 'b' => 199.0, - ), - 'hopscotch' => array( - 'r' => 50.0, - 'g' => 41.0, - 'b' => 49.0, - ), - 'hybrid' => array( - 'r' => 29.0, - 'g' => 31.0, - 'b' => 33.0, - ), - 'idea' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'ir-black' => array( - 'r' => 0.0, - 'g' => 0.0, - 'b' => 0.0, - ), - 'isbl-editor-dark' => array( - 'r' => 64.0, - 'g' => 64.0, - 'b' => 64.0, - ), - 'isbl-editor-light' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'kimbie.dark' => array( - 'r' => 34.0, - 'g' => 26.0, - 'b' => 15.0, - ), - 'kimbie.light' => array( - 'r' => 251.0, - 'g' => 235.0, - 'b' => 212.0, - ), - 'lightfair' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'magula' => array( - 'r' => 244.0, - 'g' => 244.0, - 'b' => 244.0, - ), - 'mono-blue' => array( - 'r' => 234.0, - 'g' => 238.0, - 'b' => 243.0, - ), - 'monokai-sublime' => array( - 'r' => 35.0, - 'g' => 36.0, - 'b' => 31.0, - ), - 'monokai' => array( - 'r' => 39.0, - 'g' => 40.0, - 'b' => 34.0, - ), - 'night-owl' => array( - 'r' => 1.0, - 'g' => 22.0, - 'b' => 39.0, - ), - 'nord' => array( - 'r' => 46.0, - 'g' => 52.0, - 'b' => 64.0, - ), - 'obsidian' => array( - 'r' => 40.0, - 'g' => 43.0, - 'b' => 46.0, - ), - 'ocean' => array( - 'r' => 43.0, - 'g' => 48.0, - 'b' => 59.0, - ), - 'paraiso-dark' => array( - 'r' => 47.0, - 'g' => 30.0, - 'b' => 46.0, - ), - 'paraiso-light' => array( - 'r' => 231.0, - 'g' => 233.0, - 'b' => 219.0, - ), - 'pojoaque' => array( - 'r' => 24.0, - 'g' => 25.0, - 'b' => 20.0, - ), - 'purebasic' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 223.0, - ), - 'qtcreator_dark' => array( - 'r' => 0.0, - 'g' => 0.0, - 'b' => 0.0, - ), - 'qtcreator_light' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'railscasts' => array( - 'r' => 35.0, - 'g' => 35.0, - 'b' => 35.0, - ), - 'rainbow' => array( - 'r' => 71.0, - 'g' => 73.0, - 'b' => 73.0, - ), - 'routeros' => array( - 'r' => 240.0, - 'g' => 240.0, - 'b' => 240.0, - ), - 'school-book' => array( - 'r' => 246.0, - 'g' => 246.0, - 'b' => 174.0, - ), - 'shades-of-purple' => array( - 'r' => 45.0, - 'g' => 43.0, - 'b' => 87.0, - ), - 'solarized-dark' => array( - 'r' => 0.0, - 'g' => 43.0, - 'b' => 54.0, - ), - 'solarized-light' => array( - 'r' => 253.0, - 'g' => 246.0, - 'b' => 227.0, - ), - 'sunburst' => array( - 'r' => 0.0, - 'g' => 0.0, - 'b' => 0.0, - ), - 'tomorrow-night-blue' => array( - 'r' => 0.0, - 'g' => 36.0, - 'b' => 81.0, - ), - 'tomorrow-night-bright' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'tomorrow-night-eighties' => array( - 'r' => 45.0, - 'g' => 45.0, - 'b' => 45.0, - ), - 'tomorrow-night' => array( - 'r' => 29.0, - 'g' => 31.0, - 'b' => 33.0, - ), - 'tomorrow' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'vs' => array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - ), - 'vs2015' => array( - 'r' => 30.0, - 'g' => 30.0, - 'b' => 30.0, - ), - 'xcode' => array( - 'r' => 255.0, - 'g' => 255.0, - 'b' => 255.0, - ), - 'xt256' => array( - 'r' => 0.0, - 'g' => 0.0, - 'b' => 0.0, - ), - 'zenburn' => array( - 'r' => 63.0, - 'g' => 63.0, - 'b' => 63.0, - ), - ); - - if (!isset($colors[$theme])) { - throw new DomainException("There is no stylesheet by the name of '$theme'"); - } - - return $colors[$theme]; -} diff --git a/vendor/scrivo/highlight.php/HighlightUtilities/functions.php b/vendor/scrivo/highlight.php/HighlightUtilities/functions.php deleted file mode 100644 index 517810325..000000000 --- a/vendor/scrivo/highlight.php/HighlightUtilities/functions.php +++ /dev/null @@ -1,254 +0,0 @@ -<?php - -/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. Neither the name of "highlight.js", "highlight.php", nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. - */ - -namespace HighlightUtilities; - -require_once __DIR__ . '/_internals.php'; -require_once __DIR__ . '/_themeColors.php'; - -/** - * Get a list of available stylesheets. - * - * By default, a list of filenames without the `.css` extension will be returned. - * This can be configured with the `$filePaths` argument. - * - * @api - * - * @since 9.15.8.1 - * - * @param bool $filePaths Return absolute paths to stylesheets instead - * - * @return string[] - */ -function getAvailableStyleSheets($filePaths = false) -{ - $results = array(); - - $folder = getStyleSheetFolder(); - $dh = @dir($folder); - - if ($dh) { - while (($entry = $dh->read()) !== false) { - if (substr($entry, -4, 4) !== ".css") { - continue; - } - - if ($filePaths) { - $results[] = implode(DIRECTORY_SEPARATOR, array($folder, $entry)); - } else { - $results[] = basename($entry, ".css"); - } - } - - $dh->close(); - } - - return $results; -} - -/** - * Get the RGB representation used for the background of a given theme as an - * array of three numbers. - * - * @api - * - * @since 9.18.1.1 - * - * @param string $name The stylesheet name (with or without the extension) - * - * @throws \DomainException when no stylesheet with this name exists - * - * @return float[] An array representing RGB numerical values - */ -function getThemeBackgroundColor($name) -{ - return _getThemeBackgroundColor(_getNoCssExtension($name)); -} - -/** - * Get the contents of the given stylesheet. - * - * @api - * - * @since 9.15.8.1 - * - * @param string $name The stylesheet name (with or without the extension) - * - * @throws \DomainException when the no stylesheet with this name exists - * - * @return false|string The CSS content of the stylesheet or FALSE when - * the stylesheet content could be read - */ -function getStyleSheet($name) -{ - $path = getStyleSheetPath($name); - - return file_get_contents($path); -} - -/** - * Get the absolute path to the folder containing the stylesheets distributed in this package. - * - * @api - * - * @since 9.15.8.1 - * - * @return string An absolute path to the folder - */ -function getStyleSheetFolder() -{ - $paths = array(__DIR__, '..', 'styles'); - - return implode(DIRECTORY_SEPARATOR, $paths); -} - -/** - * Get the absolute path to a given stylesheet distributed in this package. - * - * @api - * - * @since 9.15.8.1 - * - * @param string $name The stylesheet name (with or without the extension) - * - * @throws \DomainException when the no stylesheet with this name exists - * - * @return string The absolute path to the stylesheet with the given name - */ -function getStyleSheetPath($name) -{ - $name = _getNoCssExtension($name); - $path = implode(DIRECTORY_SEPARATOR, array(getStyleSheetFolder(), $name)) . ".css"; - - if (!file_exists($path)) { - throw new \DomainException("There is no stylesheet with by the name of '$name'."); - } - - return $path; -} - -/** - * Get the directory path for the bundled languages folder. - * - * @api - * - * @since 9.18.1.4 - * - * @return string An absolute path to the bundled languages folder - */ -function getLanguagesFolder() -{ - return __DIR__ . '/../Highlight/languages'; -} - -/** - * Get the file path for the specified bundled language definition. - * - * @api - * - * @since 9.18.1.4 - * - * @param string $name The slug of the language to look for - * - * @throws \DomainException when the no definition for this language exists - * - * @return string - */ -function getLanguageDefinitionPath($name) -{ - $path = getLanguagesFolder() . '/' . $name . '.json'; - - if (!file_exists($path)) { - throw new \DomainException("There is no language definition for $name"); - } - - return $path; -} - -/** - * Convert the HTML generated by Highlighter and split it up into an array of lines. - * - * @api - * - * @since 9.18.1.6 `RuntimeException` and `UnexpectedValueException` can no longer be thrown. - * @since 9.15.6.1 - * - * @param string $html An HTML string generated by `Highlighter::highlight()` - * - * @return string[]|false An array of lines of code as strings. False if an error occurred in splitting up by lines - */ -function splitCodeIntoArray($html) -{ - if (trim($html) === "") { - return array(); - } - - $queuedPrefix = ''; - $regexWorkspace = array(); - $rawLines = preg_split('/\R/u', $html); - - if ($rawLines === false) { - return false; - } - - foreach ($rawLines as &$rawLine) { - // If the previous line has been marked as "open", then we'll have something - // in our queue - if ($queuedPrefix !== '') { - $rawLine = $queuedPrefix . $rawLine; - $queuedPrefix = ''; - } - - // Find how many opening `<span>` tags exist on this line - preg_match_all('/<span[^>]*+>/u', $rawLine, $regexWorkspace); - $openingTags = count($regexWorkspace[0]); - - // Find all of the closing `</span>` tags that exist on this line - preg_match_all('/<\/span>/u', $rawLine, $regexWorkspace); - $closingTags = count($regexWorkspace[0]); - - // If the number of opening tags matches the number of closing tags, then - // we don't have any new tags that span multiple lines - if ($openingTags === $closingTags) { - continue; - } - - // Find all of the complete `<span>` tags and remove them from a working - // copy of the line. Then we'll be left with just opening tags. - $workingLine = preg_replace('/<span[^>]*+>[^<]*+<\/span>/u', '', $rawLine); - preg_match_all('/<span[^>]*+>/u', $workingLine, $regexWorkspace); - $queuedPrefix = implode('', $regexWorkspace[0]); - - // Close all of the remaining open tags on this line - $diff = str_repeat('</span>', $openingTags - $closingTags); - $rawLine .= $diff; - } - - return $rawLines; -} diff --git a/vendor/scrivo/highlight.php/LICENSE.md b/vendor/scrivo/highlight.php/LICENSE.md deleted file mode 100644 index cf041cba0..000000000 --- a/vendor/scrivo/highlight.php/LICENSE.md +++ /dev/null @@ -1,30 +0,0 @@ -BSD 3-Clause License -==================== - -Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author) -Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php -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 the "highlight.js", "highlight.php" nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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/scrivo/highlight.php/README.md b/vendor/scrivo/highlight.php/README.md deleted file mode 100644 index 7918f8d2e..000000000 --- a/vendor/scrivo/highlight.php/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# highlight.php - -[![Unit Tests](https://github.com/scrivo/highlight.php/workflows/Unit%20Tests/badge.svg?branch=9.18)](https://github.com/scrivo/highlight.php/actions?query=workflow%3A%22Unit+Tests%22+branch%3A9.18) -[![Latest Packagist release](https://img.shields.io/packagist/v/scrivo/highlight.php.svg)](https://packagist.org/packages/scrivo/highlight.php) -[![Monthly downloads on Packagist](https://img.shields.io/packagist/dm/scrivo/highlight.php.svg)](https://packagist.org/packages/scrivo/highlight.php/stats) - -*highlight.php* is a server-side syntax highlighter written in PHP that currently supports 185 languages. It's a port of [highlight.js](http://www.highlightjs.org) by Ivan Sagalaev that makes full use of the language and style definitions of the original JavaScript project. - -[TOC]: # "## Table of Contents" - -## Table of Contents -- [Installation + Setup](#installation--setup) - - [Composer Version Constraints](#composer-version-constraints) -- [Usage](#usage) - - [Explicit Mode](#explicit-mode) - - [Automatic Language Detection Mode](#automatic-language-detection-mode) - - [Stylesheets](#stylesheets) -- [Highlighter Utilities](#highlighter-utilities) -- [Versioning](#versioning) - - [Backward Compatibility Promise](#backward-compatibility-promise) -- [Some History](#some-history) -- [License](#license) - - -## Installation + Setup - -The recommended approach is to install the project through [Composer](https://getcomposer.org/). - -```bash -composer require scrivo/highlight.php -``` - -If you're not using Composer, ensure that the classes defined in the `Highlight` namespace can be found either by inclusion or by an autoloader. A trivial autoloader for this purpose is included in this project as `Highlight\Autoloader.php` - -### Composer Version Constraints - -When requiring this project in your `composer.json`, it is recommended you use the [caret version range](https://getcomposer.org/doc/articles/versions.md#caret-version-range-) and use only the major and minor values; i.e. `^9.14`. - -It's come to our attention that a lot of tutorials and projects out there are locking themselves into highly specific versions of this project; e.g. `"scrivo/highlight.php": "v9.12.0.1"`. Please do **not** do this or encourage it. We promise a [reliable backward compatibility policy](#backward-compatibility-promise) so there's no reason to lock yourself to such a specific version. By doing this, you are preventing yourself or your users from receiving updates to language definitions and bug fixes. - -## Usage - -The `\Highlight\Highlighter` class contains the syntax highlighting functionality. You can choose between two highlighting modes: - -1. explicit mode -2. automatic language detection mode - -### Explicit Mode - -In explicit mode, you must define which language you will be highlighting as. - -```php -// Instantiate the Highlighter. -$hl = new \Highlight\Highlighter(); -$code = file_get_contents('some_ruby_script.rb'); - -try { - // Highlight some code. - $highlighted = $hl->highlight('ruby', $code); - - echo "<pre><code class=\"hljs {$highlighted->language}\">"; - echo $highlighted->value; - echo "</code></pre>"; -} -catch (DomainException $e) { - // This is thrown if the specified language does not exist - - echo "<pre><code>"; - echo htmlentities($code); - echo "</code></pre>"; -} -``` - -### Automatic Language Detection Mode - -Alternatively you can use the automatic detection mode, which highlights your code with the language the library thinks is best. It is highly recommended you explicitly choose the language or limit the number of languages to automatically detect to reduce the number of inaccuracies. - -> **Warning:** Auto-detection occurs in a brute force fashion and the language with the most accurate result will be selected. This is extremely inefficient as you supply more languages and may not always be 100% accurate if similar languages are configured. - -```php -$hl = new \Highlight\Highlighter(); -$hl->setAutodetectLanguages(array('ruby', 'python', 'perl')); - -$highlighted = $hl->highlightAuto(file_get_contents('some_ruby_script.rb')); - -echo "<pre><code class=\"hljs {$highlighted->language}\">"; -echo $highlighted->value; -echo "</code></pre>"; -``` - -#### Default Languages - -In version 9.x of this project, the following languages are the default auto-detected languages: - -- XML -- JSON -- JavaScript -- CSS -- PHP -- HTTP - -These default languages are considered "legacy behavior" and will be removed in version 10.x of this library to match highlight.js behavior; the new default behavior in 10.x will be to use *every* language. - -### Stylesheets - -The same stylesheets available in the **highlight.js** project are available in the `styles` directory of this project and may be included in your own CSS or made accessible to your web server. - -## Highlighter Utilities - -The core of the project is loyal port of **highlight.js** and is available under the main `Highlight` namespace. A series of convenience functions are provided under the `HighlightUtilities` namespace to introduce additional functionality without the need for another dependency. - -Available functions: - -- [`getAvailableStyleSheets(bool $filePaths = false): string[]`](HighlightUtilities/functions.php#L35-L48) -- [`getLanguagesFolder(): string`](HighlightUtilities/functions.php#L156-L164) -- [`getLanguageDefinitionPath(string $name): string`](HighlightUtilities/functions.php#L170-L182) -- [`getStyleSheet(string $name): false|string`](HighlightUtilities/functions.php#L94-L107) -- [`getStyleSheetFolder(): string`](HighlightUtilities/functions.php#L115-L123) -- [`getStyleSheetPath(string $name): string`](HighlightUtilities/functions.php#L131-L143) -- [`getThemeBackgroundColor(string $name): float[]`](HighlightUtilities/functions.php#L75-L88) -- [`splitCodeIntoArray(string $html): false|string[]`](HighlightUtilities/functions.php#L194-L205) - -## Versioning - -This project will follow the same version numbers as the highlight.js project with regards to languages, meaning that a language definition available in highlight.js 9.12.0 will be available in highlight.php 9.12.0. However, there are times where bugs may arise in this project or its translated definition files, so there'll be one more number appended to the version number. For example, version 9.12.0.1 will contain all of the same languages as highlight.js 9.12.0 but also contain fixes solely to this project. This is done so this project can have version bumps without conflicts should highlight.js release version 9.12.1. - -### Backward Compatibility Promise - -Despite the fact that the semantic versioning used in this project mirrors that of highlight.js, this project will adhere to [Symfony's Backward Compatibility Promise](https://symfony.com/doc/current/contributing/code/bc.html#using-symfony-code). You can rest assured that there will be no breaking changes during `9.x` and any deprecations will be marked with `@deprecated` and won't be removed until the next major release. - -## Some History - -Geert Bergman -Sep 30, 2013 - -JavaScript code highlighting is very convenient and in many cases just what you want to use. Especially for programming blogs I would not advice you to use otherwise. But there are occasions where you're better off with a more 'static' approach, for instance if you want to send highlighted code in an email or for API documents. For this I needed a code highlighting program preferably written in PHP. - -I couldn't found any satisfactory PHP solution so I decided to port one from JavaScript. After some comparison of different highlighting programs based on license, technology, language support [highlight.js](http://www.highlightjs.org) came out most favorable in my opinion. - -It was my decision not to make a PHP highlighter but to do a port of highlight.js, these are different things. The goal was to make it work exactly as [highlight.js](http://www.highlightjs.org) to make as much use as possible of the language definitions and CSS files of the original program. - -Happy coding! - -## License - -[BSD](./LICENSE.md) diff --git a/vendor/scrivo/highlight.php/composer.json b/vendor/scrivo/highlight.php/composer.json deleted file mode 100644 index 5e822fb7a..000000000 --- a/vendor/scrivo/highlight.php/composer.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "scrivo/highlight.php", - "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", - "keywords": [ - "code", - "syntax", - "highlight", - "highlight.js", - "highlight.php" - ], - "type": "library", - "license": "BSD-3-Clause", - "scripts": { - "test:detection": "phpunit test/DetectionTest.php", - "test:markup": "phpunit test/MarkupTest.php", - "test": "phpunit -v" - }, - "support": { - "issues": "https://github.com/scrivo/highlight.php/issues", - "source": "https://github.com/scrivo/highlight.php" - }, - "autoload": { - "psr-0": { - "Highlight\\": "", - "HighlightUtilities\\": "" - }, - "files": [ - "HighlightUtilities/functions.php" - ] - }, - "authors": [ - { - "name": "Geert Bergman", - "homepage": "http://www.scrivo.org/", - "role": "Project Author" - }, - { - "name": "Vladimir Jimenez", - "homepage": "https://allejo.io", - "role": "Maintainer" - }, - { - "name": "Martin Folkers", - "homepage": "https://twobrain.io", - "role": "Contributor" - } - ], - "require": { - "php": ">=5.4", - "ext-json": "*" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7", - "sabberworm/php-css-parser": "^8.3", - "symfony/finder": "^2.8|^3.4|^5.4", - "symfony/var-dumper": "^2.8|^3.4|^5.4" - }, - "suggest": { - "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords" - } -} diff --git a/vendor/scrivo/highlight.php/styles/a11y-dark.css b/vendor/scrivo/highlight.php/styles/a11y-dark.css deleted file mode 100644 index b93b742a4..000000000 --- a/vendor/scrivo/highlight.php/styles/a11y-dark.css +++ /dev/null @@ -1,99 +0,0 @@ -/* a11y-dark theme */ -/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ -/* @author: ericwbailey */ - -/* Comment */ -.hljs-comment, -.hljs-quote { - color: #d4d0ab; -} - -/* Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #ffa07a; -} - -/* Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #f5ab35; -} - -/* Yellow */ -.hljs-attribute { - color: #ffd700; -} - -/* Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #abe338; -} - -/* Blue */ -.hljs-title, -.hljs-section { - color: #00e0e0; -} - -/* Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #dcc6e0; -} - -.hljs { - display: block; - overflow-x: auto; - background: #2b2b2b; - color: #f8f8f2; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -@media screen and (-ms-high-contrast: active) { - .hljs-addition, - .hljs-attribute, - .hljs-built_in, - .hljs-builtin-name, - .hljs-bullet, - .hljs-comment, - .hljs-link, - .hljs-literal, - .hljs-meta, - .hljs-number, - .hljs-params, - .hljs-string, - .hljs-symbol, - .hljs-type, - .hljs-quote { - color: highlight; - } - - .hljs-keyword, - .hljs-selector-tag { - font-weight: bold; - } -} diff --git a/vendor/scrivo/highlight.php/styles/a11y-light.css b/vendor/scrivo/highlight.php/styles/a11y-light.css deleted file mode 100644 index f1bf8f3f8..000000000 --- a/vendor/scrivo/highlight.php/styles/a11y-light.css +++ /dev/null @@ -1,99 +0,0 @@ -/* a11y-light theme */ -/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ -/* @author: ericwbailey */ - -/* Comment */ -.hljs-comment, -.hljs-quote { - color: #696969; -} - -/* Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #d91e18; -} - -/* Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #aa5d00; -} - -/* Yellow */ -.hljs-attribute { - color: #aa5d00; -} - -/* Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #008000; -} - -/* Blue */ -.hljs-title, -.hljs-section { - color: #007faa; -} - -/* Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #7928a1; -} - -.hljs { - display: block; - overflow-x: auto; - background: #fefefe; - color: #545454; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -@media screen and (-ms-high-contrast: active) { - .hljs-addition, - .hljs-attribute, - .hljs-built_in, - .hljs-builtin-name, - .hljs-bullet, - .hljs-comment, - .hljs-link, - .hljs-literal, - .hljs-meta, - .hljs-number, - .hljs-params, - .hljs-string, - .hljs-symbol, - .hljs-type, - .hljs-quote { - color: highlight; - } - - .hljs-keyword, - .hljs-selector-tag { - font-weight: bold; - } -} diff --git a/vendor/scrivo/highlight.php/styles/agate.css b/vendor/scrivo/highlight.php/styles/agate.css deleted file mode 100644 index 5d7a3e8c7..000000000 --- a/vendor/scrivo/highlight.php/styles/agate.css +++ /dev/null @@ -1,108 +0,0 @@ -/*! - * Agate by Taufik Nurrohman <https://github.com/taufik-nurrohman> - * --------------------------------------------------------------- - * - * #ade5fc - * #a2fca2 - * #c6b4f0 - * #d36363 - * #fcc28c - * #fc9b9b - * #ffa - * #fff - * #333 - * #62c8f3 - * #888 - * - */ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #333; - color: white; -} - -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-code, -.hljs-emphasis { - font-style: italic; -} - -.hljs-tag { - color: #62c8f3; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-selector-id, -.hljs-selector-class { - color: #ade5fc; -} - -.hljs-string, -.hljs-bullet { - color: #a2fca2; -} - -.hljs-type, -.hljs-title, -.hljs-section, -.hljs-attribute, -.hljs-quote, -.hljs-built_in, -.hljs-builtin-name { - color: #ffa; -} - -.hljs-number, -.hljs-symbol, -.hljs-bullet { - color: #d36363; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal { - color: #fcc28c; -} - -.hljs-comment, -.hljs-deletion, -.hljs-code { - color: #888; -} - -.hljs-regexp, -.hljs-link { - color: #c6b4f0; -} - -.hljs-meta { - color: #fc9b9b; -} - -.hljs-deletion { - background-color: #fc9b9b; - color: #333; -} - -.hljs-addition { - background-color: #a2fca2; - color: #333; -} - -.hljs a { - color: inherit; -} - -.hljs a:focus, -.hljs a:hover { - color: inherit; - text-decoration: underline; -} diff --git a/vendor/scrivo/highlight.php/styles/an-old-hope.css b/vendor/scrivo/highlight.php/styles/an-old-hope.css deleted file mode 100644 index a6d56f4b4..000000000 --- a/vendor/scrivo/highlight.php/styles/an-old-hope.css +++ /dev/null @@ -1,89 +0,0 @@ -/* - -An Old Hope – Star Wars Syntax (c) Gustavo Costa <gusbemacbe@gmail.com> -Original theme - Ocean Dark Theme – by https://github.com/gavsiu -Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/JesseLeite/an-old-hope-syntax-atom - -*/ - -/* Death Star Comment */ -.hljs-comment, -.hljs-quote -{ - color: #B6B18B; -} - -/* Darth Vader */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion -{ - color: #EB3C54; -} - -/* Threepio */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link -{ - color: #E7CE56; -} - -/* Luke Skywalker */ -.hljs-attribute -{ - color: #EE7C2B; -} - -/* Obi Wan Kenobi */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition -{ - color: #4FB4D7; -} - -/* Yoda */ -.hljs-title, -.hljs-section -{ - color: #78BB65; -} - -/* Mace Windu */ -.hljs-keyword, -.hljs-selector-tag -{ - color: #B45EA4; -} - -/* Millenium Falcon */ -.hljs -{ - display: block; - overflow-x: auto; - background: #1C1D21; - color: #c0c5ce; - padding: 0.5em; -} - -.hljs-emphasis -{ - font-style: italic; -} - -.hljs-strong -{ - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/androidstudio.css b/vendor/scrivo/highlight.php/styles/androidstudio.css deleted file mode 100644 index bc8e473b5..000000000 --- a/vendor/scrivo/highlight.php/styles/androidstudio.css +++ /dev/null @@ -1,66 +0,0 @@ -/* -Date: 24 Fev 2015 -Author: Pedro Oliveira <kanytu@gmail . com> -*/ - -.hljs { - color: #a9b7c6; - background: #282b2e; - display: block; - overflow-x: auto; - padding: 0.5em; -} - -.hljs-number, -.hljs-literal, -.hljs-symbol, -.hljs-bullet { - color: #6897BB; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-deletion { - color: #cc7832; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-link { - color: #629755; -} - -.hljs-comment, -.hljs-quote { - color: #808080; -} - -.hljs-meta { - color: #bbb529; -} - -.hljs-string, -.hljs-attribute, -.hljs-addition { - color: #6A8759; -} - -.hljs-section, -.hljs-title, -.hljs-type { - color: #ffc66d; -} - -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #e8bf6a; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/arduino-light.css b/vendor/scrivo/highlight.php/styles/arduino-light.css deleted file mode 100644 index e6039c36f..000000000 --- a/vendor/scrivo/highlight.php/styles/arduino-light.css +++ /dev/null @@ -1,87 +0,0 @@ -/* - -Arduino® Light Theme - Stefania Mellai <s.mellai@arduino.cc> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #FFFFFF; -} - -.hljs, -.hljs-subst { - color: #434f54; -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-doctag, -.hljs-name { - color: #00979D; -} - -.hljs-built_in, -.hljs-literal, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #D35400; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #00979D; -} - -.hljs-type, -.hljs-string, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #005C5F; -} - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; -} - -.hljs-comment { - color: rgba(149,165,166,.8); -} - -.hljs-meta-keyword { - color: #728E00; -} - -.hljs-meta { - color: #434f54; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-function { - color: #728E00; -} - -.hljs-number { - color: #8A7B52; -} diff --git a/vendor/scrivo/highlight.php/styles/arta.css b/vendor/scrivo/highlight.php/styles/arta.css deleted file mode 100644 index 75ef3a9e5..000000000 --- a/vendor/scrivo/highlight.php/styles/arta.css +++ /dev/null @@ -1,73 +0,0 @@ -/* -Date: 17.V.2011 -Author: pumbur <pumbur@pumbur.net> -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #222; -} - -.hljs, -.hljs-subst { - color: #aaa; -} - -.hljs-section { - color: #fff; -} - -.hljs-comment, -.hljs-quote, -.hljs-meta { - color: #444; -} - -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-regexp { - color: #ffcc33; -} - -.hljs-number, -.hljs-addition { - color: #00cc66; -} - -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-template-variable, -.hljs-attribute, -.hljs-link { - color: #32aaee; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #6644aa; -} - -.hljs-title, -.hljs-variable, -.hljs-deletion, -.hljs-template-tag { - color: #bb1166; -} - -.hljs-section, -.hljs-doctag, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/ascetic.css b/vendor/scrivo/highlight.php/styles/ascetic.css deleted file mode 100644 index 48397e889..000000000 --- a/vendor/scrivo/highlight.php/styles/ascetic.css +++ /dev/null @@ -1,45 +0,0 @@ -/* - -Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: white; - color: black; -} - -.hljs-string, -.hljs-variable, -.hljs-template-variable, -.hljs-symbol, -.hljs-bullet, -.hljs-section, -.hljs-addition, -.hljs-attribute, -.hljs-link { - color: #888; -} - -.hljs-comment, -.hljs-quote, -.hljs-meta, -.hljs-deletion { - color: #ccc; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-section, -.hljs-name, -.hljs-type, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-cave-dark.css b/vendor/scrivo/highlight.php/styles/atelier-cave-dark.css deleted file mode 100644 index 65428f3b1..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-cave-dark.css +++ /dev/null @@ -1,83 +0,0 @@ -/* Base16 Atelier Cave Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Cave Comment */ -.hljs-comment, -.hljs-quote { - color: #7e7887; -} - -/* Atelier-Cave Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-regexp, -.hljs-link, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #be4678; -} - -/* Atelier-Cave Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #aa573c; -} - -/* Atelier-Cave Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #2a9292; -} - -/* Atelier-Cave Blue */ -.hljs-title, -.hljs-section { - color: #576ddb; -} - -/* Atelier-Cave Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #955ae7; -} - -.hljs-deletion, -.hljs-addition { - color: #19171c; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #be4678; -} - -.hljs-addition { - background-color: #2a9292; -} - -.hljs { - display: block; - overflow-x: auto; - background: #19171c; - color: #8b8792; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-cave-light.css b/vendor/scrivo/highlight.php/styles/atelier-cave-light.css deleted file mode 100644 index b419f9fd8..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-cave-light.css +++ /dev/null @@ -1,85 +0,0 @@ -/* Base16 Atelier Cave Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Cave Comment */ -.hljs-comment, -.hljs-quote { - color: #655f6d; -} - -/* Atelier-Cave Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #be4678; -} - -/* Atelier-Cave Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #aa573c; -} - -/* Atelier-Cave Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #2a9292; -} - -/* Atelier-Cave Blue */ -.hljs-title, -.hljs-section { - color: #576ddb; -} - -/* Atelier-Cave Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #955ae7; -} - -.hljs-deletion, -.hljs-addition { - color: #19171c; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #be4678; -} - -.hljs-addition { - background-color: #2a9292; -} - -.hljs { - display: block; - overflow-x: auto; - background: #efecf4; - color: #585260; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-dune-dark.css b/vendor/scrivo/highlight.php/styles/atelier-dune-dark.css deleted file mode 100644 index 1684f5225..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-dune-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Dune Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Dune Comment */ -.hljs-comment, -.hljs-quote { - color: #999580; -} - -/* Atelier-Dune Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #d73737; -} - -/* Atelier-Dune Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #b65611; -} - -/* Atelier-Dune Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #60ac39; -} - -/* Atelier-Dune Blue */ -.hljs-title, -.hljs-section { - color: #6684e1; -} - -/* Atelier-Dune Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #b854d4; -} - -.hljs { - display: block; - overflow-x: auto; - background: #20201d; - color: #a6a28c; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-dune-light.css b/vendor/scrivo/highlight.php/styles/atelier-dune-light.css deleted file mode 100644 index 547719de8..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-dune-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Dune Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Dune Comment */ -.hljs-comment, -.hljs-quote { - color: #7d7a68; -} - -/* Atelier-Dune Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #d73737; -} - -/* Atelier-Dune Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #b65611; -} - -/* Atelier-Dune Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #60ac39; -} - -/* Atelier-Dune Blue */ -.hljs-title, -.hljs-section { - color: #6684e1; -} - -/* Atelier-Dune Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #b854d4; -} - -.hljs { - display: block; - overflow-x: auto; - background: #fefbec; - color: #6e6b5e; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-estuary-dark.css b/vendor/scrivo/highlight.php/styles/atelier-estuary-dark.css deleted file mode 100644 index a5e507187..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-estuary-dark.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Estuary Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Estuary Comment */ -.hljs-comment, -.hljs-quote { - color: #878573; -} - -/* Atelier-Estuary Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ba6236; -} - -/* Atelier-Estuary Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #ae7313; -} - -/* Atelier-Estuary Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #7d9726; -} - -/* Atelier-Estuary Blue */ -.hljs-title, -.hljs-section { - color: #36a166; -} - -/* Atelier-Estuary Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #5f9182; -} - -.hljs-deletion, -.hljs-addition { - color: #22221b; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #ba6236; -} - -.hljs-addition { - background-color: #7d9726; -} - -.hljs { - display: block; - overflow-x: auto; - background: #22221b; - color: #929181; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-estuary-light.css b/vendor/scrivo/highlight.php/styles/atelier-estuary-light.css deleted file mode 100644 index 1daee5d98..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-estuary-light.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Estuary Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Estuary Comment */ -.hljs-comment, -.hljs-quote { - color: #6c6b5a; -} - -/* Atelier-Estuary Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ba6236; -} - -/* Atelier-Estuary Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #ae7313; -} - -/* Atelier-Estuary Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #7d9726; -} - -/* Atelier-Estuary Blue */ -.hljs-title, -.hljs-section { - color: #36a166; -} - -/* Atelier-Estuary Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #5f9182; -} - -.hljs-deletion, -.hljs-addition { - color: #22221b; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #ba6236; -} - -.hljs-addition { - background-color: #7d9726; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f4f3ec; - color: #5f5e4e; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-forest-dark.css b/vendor/scrivo/highlight.php/styles/atelier-forest-dark.css deleted file mode 100644 index 0ef4fae31..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-forest-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Forest Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Forest Comment */ -.hljs-comment, -.hljs-quote { - color: #9c9491; -} - -/* Atelier-Forest Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #f22c40; -} - -/* Atelier-Forest Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #df5320; -} - -/* Atelier-Forest Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #7b9726; -} - -/* Atelier-Forest Blue */ -.hljs-title, -.hljs-section { - color: #407ee7; -} - -/* Atelier-Forest Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6666ea; -} - -.hljs { - display: block; - overflow-x: auto; - background: #1b1918; - color: #a8a19f; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-forest-light.css b/vendor/scrivo/highlight.php/styles/atelier-forest-light.css deleted file mode 100644 index bbedde18a..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-forest-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Forest Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Forest Comment */ -.hljs-comment, -.hljs-quote { - color: #766e6b; -} - -/* Atelier-Forest Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #f22c40; -} - -/* Atelier-Forest Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #df5320; -} - -/* Atelier-Forest Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #7b9726; -} - -/* Atelier-Forest Blue */ -.hljs-title, -.hljs-section { - color: #407ee7; -} - -/* Atelier-Forest Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6666ea; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f1efee; - color: #68615e; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-heath-dark.css b/vendor/scrivo/highlight.php/styles/atelier-heath-dark.css deleted file mode 100644 index fe01ff721..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-heath-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Heath Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Heath Comment */ -.hljs-comment, -.hljs-quote { - color: #9e8f9e; -} - -/* Atelier-Heath Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ca402b; -} - -/* Atelier-Heath Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #a65926; -} - -/* Atelier-Heath Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #918b3b; -} - -/* Atelier-Heath Blue */ -.hljs-title, -.hljs-section { - color: #516aec; -} - -/* Atelier-Heath Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #7b59c0; -} - -.hljs { - display: block; - overflow-x: auto; - background: #1b181b; - color: #ab9bab; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-heath-light.css b/vendor/scrivo/highlight.php/styles/atelier-heath-light.css deleted file mode 100644 index ee43786d1..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-heath-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Heath Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Heath Comment */ -.hljs-comment, -.hljs-quote { - color: #776977; -} - -/* Atelier-Heath Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ca402b; -} - -/* Atelier-Heath Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #a65926; -} - -/* Atelier-Heath Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #918b3b; -} - -/* Atelier-Heath Blue */ -.hljs-title, -.hljs-section { - color: #516aec; -} - -/* Atelier-Heath Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #7b59c0; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f7f3f7; - color: #695d69; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-lakeside-dark.css b/vendor/scrivo/highlight.php/styles/atelier-lakeside-dark.css deleted file mode 100644 index a937d3bf5..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-lakeside-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Lakeside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Lakeside Comment */ -.hljs-comment, -.hljs-quote { - color: #7195a8; -} - -/* Atelier-Lakeside Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #d22d72; -} - -/* Atelier-Lakeside Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #935c25; -} - -/* Atelier-Lakeside Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #568c3b; -} - -/* Atelier-Lakeside Blue */ -.hljs-title, -.hljs-section { - color: #257fad; -} - -/* Atelier-Lakeside Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6b6bb8; -} - -.hljs { - display: block; - overflow-x: auto; - background: #161b1d; - color: #7ea2b4; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-lakeside-light.css b/vendor/scrivo/highlight.php/styles/atelier-lakeside-light.css deleted file mode 100644 index 6c7e8f9ef..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-lakeside-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Lakeside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Lakeside Comment */ -.hljs-comment, -.hljs-quote { - color: #5a7b8c; -} - -/* Atelier-Lakeside Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #d22d72; -} - -/* Atelier-Lakeside Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #935c25; -} - -/* Atelier-Lakeside Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #568c3b; -} - -/* Atelier-Lakeside Blue */ -.hljs-title, -.hljs-section { - color: #257fad; -} - -/* Atelier-Lakeside Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6b6bb8; -} - -.hljs { - display: block; - overflow-x: auto; - background: #ebf8ff; - color: #516d7b; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-plateau-dark.css b/vendor/scrivo/highlight.php/styles/atelier-plateau-dark.css deleted file mode 100644 index 3bb052693..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-plateau-dark.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Plateau Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Plateau Comment */ -.hljs-comment, -.hljs-quote { - color: #7e7777; -} - -/* Atelier-Plateau Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ca4949; -} - -/* Atelier-Plateau Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #b45a3c; -} - -/* Atelier-Plateau Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #4b8b8b; -} - -/* Atelier-Plateau Blue */ -.hljs-title, -.hljs-section { - color: #7272ca; -} - -/* Atelier-Plateau Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #8464c4; -} - -.hljs-deletion, -.hljs-addition { - color: #1b1818; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #ca4949; -} - -.hljs-addition { - background-color: #4b8b8b; -} - -.hljs { - display: block; - overflow-x: auto; - background: #1b1818; - color: #8a8585; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-plateau-light.css b/vendor/scrivo/highlight.php/styles/atelier-plateau-light.css deleted file mode 100644 index 5f0222bec..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-plateau-light.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Plateau Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Plateau Comment */ -.hljs-comment, -.hljs-quote { - color: #655d5d; -} - -/* Atelier-Plateau Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #ca4949; -} - -/* Atelier-Plateau Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #b45a3c; -} - -/* Atelier-Plateau Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #4b8b8b; -} - -/* Atelier-Plateau Blue */ -.hljs-title, -.hljs-section { - color: #7272ca; -} - -/* Atelier-Plateau Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #8464c4; -} - -.hljs-deletion, -.hljs-addition { - color: #1b1818; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #ca4949; -} - -.hljs-addition { - background-color: #4b8b8b; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f4ecec; - color: #585050; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-savanna-dark.css b/vendor/scrivo/highlight.php/styles/atelier-savanna-dark.css deleted file mode 100644 index 38f831431..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-savanna-dark.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Savanna Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Savanna Comment */ -.hljs-comment, -.hljs-quote { - color: #78877d; -} - -/* Atelier-Savanna Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #b16139; -} - -/* Atelier-Savanna Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #9f713c; -} - -/* Atelier-Savanna Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #489963; -} - -/* Atelier-Savanna Blue */ -.hljs-title, -.hljs-section { - color: #478c90; -} - -/* Atelier-Savanna Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #55859b; -} - -.hljs-deletion, -.hljs-addition { - color: #171c19; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #b16139; -} - -.hljs-addition { - background-color: #489963; -} - -.hljs { - display: block; - overflow-x: auto; - background: #171c19; - color: #87928a; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-savanna-light.css b/vendor/scrivo/highlight.php/styles/atelier-savanna-light.css deleted file mode 100644 index 1ccd7c685..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-savanna-light.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Base16 Atelier Savanna Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Savanna Comment */ -.hljs-comment, -.hljs-quote { - color: #5f6d64; -} - -/* Atelier-Savanna Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #b16139; -} - -/* Atelier-Savanna Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #9f713c; -} - -/* Atelier-Savanna Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #489963; -} - -/* Atelier-Savanna Blue */ -.hljs-title, -.hljs-section { - color: #478c90; -} - -/* Atelier-Savanna Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #55859b; -} - -.hljs-deletion, -.hljs-addition { - color: #171c19; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #b16139; -} - -.hljs-addition { - background-color: #489963; -} - -.hljs { - display: block; - overflow-x: auto; - background: #ecf4ee; - color: #526057; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-seaside-dark.css b/vendor/scrivo/highlight.php/styles/atelier-seaside-dark.css deleted file mode 100644 index df29949c6..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-seaside-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Seaside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Seaside Comment */ -.hljs-comment, -.hljs-quote { - color: #809980; -} - -/* Atelier-Seaside Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #e6193c; -} - -/* Atelier-Seaside Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #87711d; -} - -/* Atelier-Seaside Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #29a329; -} - -/* Atelier-Seaside Blue */ -.hljs-title, -.hljs-section { - color: #3d62f5; -} - -/* Atelier-Seaside Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #ad2bee; -} - -.hljs { - display: block; - overflow-x: auto; - background: #131513; - color: #8ca68c; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-seaside-light.css b/vendor/scrivo/highlight.php/styles/atelier-seaside-light.css deleted file mode 100644 index 9d960f29f..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-seaside-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Seaside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Seaside Comment */ -.hljs-comment, -.hljs-quote { - color: #687d68; -} - -/* Atelier-Seaside Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #e6193c; -} - -/* Atelier-Seaside Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #87711d; -} - -/* Atelier-Seaside Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #29a329; -} - -/* Atelier-Seaside Blue */ -.hljs-title, -.hljs-section { - color: #3d62f5; -} - -/* Atelier-Seaside Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #ad2bee; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f4fbf4; - color: #5e6e5e; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-dark.css b/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-dark.css deleted file mode 100644 index c2ab7938d..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-dark.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Sulphurpool Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Sulphurpool Comment */ -.hljs-comment, -.hljs-quote { - color: #898ea4; -} - -/* Atelier-Sulphurpool Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #c94922; -} - -/* Atelier-Sulphurpool Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #c76b29; -} - -/* Atelier-Sulphurpool Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #ac9739; -} - -/* Atelier-Sulphurpool Blue */ -.hljs-title, -.hljs-section { - color: #3d8fd1; -} - -/* Atelier-Sulphurpool Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6679cc; -} - -.hljs { - display: block; - overflow-x: auto; - background: #202746; - color: #979db4; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-light.css b/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-light.css deleted file mode 100644 index 96c47d086..000000000 --- a/vendor/scrivo/highlight.php/styles/atelier-sulphurpool-light.css +++ /dev/null @@ -1,69 +0,0 @@ -/* Base16 Atelier Sulphurpool Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ - -/* Atelier-Sulphurpool Comment */ -.hljs-comment, -.hljs-quote { - color: #6b7394; -} - -/* Atelier-Sulphurpool Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #c94922; -} - -/* Atelier-Sulphurpool Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #c76b29; -} - -/* Atelier-Sulphurpool Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #ac9739; -} - -/* Atelier-Sulphurpool Blue */ -.hljs-title, -.hljs-section { - color: #3d8fd1; -} - -/* Atelier-Sulphurpool Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #6679cc; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f5f7ff; - color: #5e6687; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/atom-one-dark-reasonable.css b/vendor/scrivo/highlight.php/styles/atom-one-dark-reasonable.css deleted file mode 100644 index 0a43fe26b..000000000 --- a/vendor/scrivo/highlight.php/styles/atom-one-dark-reasonable.css +++ /dev/null @@ -1,75 +0,0 @@ -/* - -Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage - -Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax - -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #abb2bf; - background: #282c34; -} -.hljs-keyword, .hljs-operator { - color: #F92672; -} -.hljs-pattern-match { - color: #F92672; -} -.hljs-pattern-match .hljs-constructor { - color: #61aeee; -} -.hljs-function { - color: #61aeee; -} -.hljs-function .hljs-params { - color: #A6E22E; -} -.hljs-function .hljs-params .hljs-typing { - color: #FD971F; -} -.hljs-module-access .hljs-module { - color: #7e57c2; -} -.hljs-constructor { - color: #e2b93d; -} -.hljs-constructor .hljs-string { - color: #9CCC65; -} -.hljs-comment, .hljs-quote { - color: #b18eb1; - font-style: italic; -} -.hljs-doctag, .hljs-formula { - color: #c678dd; -} -.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { - color: #e06c75; -} -.hljs-literal { - color: #56b6c2; -} -.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string { - color: #98c379; -} -.hljs-built_in, .hljs-class .hljs-title { - color: #e6c07b; -} -.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { - color: #d19a66; -} -.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { - color: #61aeee; -} -.hljs-emphasis { - font-style: italic; -} -.hljs-strong { - font-weight: bold; -} -.hljs-link { - text-decoration: underline; -} diff --git a/vendor/scrivo/highlight.php/styles/atom-one-dark.css b/vendor/scrivo/highlight.php/styles/atom-one-dark.css deleted file mode 100644 index 1616aafe3..000000000 --- a/vendor/scrivo/highlight.php/styles/atom-one-dark.css +++ /dev/null @@ -1,96 +0,0 @@ -/* - -Atom One Dark by Daniel Gamage -Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax - -base: #282c34 -mono-1: #abb2bf -mono-2: #818896 -mono-3: #5c6370 -hue-1: #56b6c2 -hue-2: #61aeee -hue-3: #c678dd -hue-4: #98c379 -hue-5: #e06c75 -hue-5-2: #be5046 -hue-6: #d19a66 -hue-6-2: #e6c07b - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #abb2bf; - background: #282c34; -} - -.hljs-comment, -.hljs-quote { - color: #5c6370; - font-style: italic; -} - -.hljs-doctag, -.hljs-keyword, -.hljs-formula { - color: #c678dd; -} - -.hljs-section, -.hljs-name, -.hljs-selector-tag, -.hljs-deletion, -.hljs-subst { - color: #e06c75; -} - -.hljs-literal { - color: #56b6c2; -} - -.hljs-string, -.hljs-regexp, -.hljs-addition, -.hljs-attribute, -.hljs-meta-string { - color: #98c379; -} - -.hljs-built_in, -.hljs-class .hljs-title { - color: #e6c07b; -} - -.hljs-attr, -.hljs-variable, -.hljs-template-variable, -.hljs-type, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-number { - color: #d19a66; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link, -.hljs-meta, -.hljs-selector-id, -.hljs-title { - color: #61aeee; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-link { - text-decoration: underline; -} diff --git a/vendor/scrivo/highlight.php/styles/atom-one-light.css b/vendor/scrivo/highlight.php/styles/atom-one-light.css deleted file mode 100644 index d5bd1d2a9..000000000 --- a/vendor/scrivo/highlight.php/styles/atom-one-light.css +++ /dev/null @@ -1,96 +0,0 @@ -/* - -Atom One Light by Daniel Gamage -Original One Light Syntax theme from https://github.com/atom/one-light-syntax - -base: #fafafa -mono-1: #383a42 -mono-2: #686b77 -mono-3: #a0a1a7 -hue-1: #0184bb -hue-2: #4078f2 -hue-3: #a626a4 -hue-4: #50a14f -hue-5: #e45649 -hue-5-2: #c91243 -hue-6: #986801 -hue-6-2: #c18401 - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #383a42; - background: #fafafa; -} - -.hljs-comment, -.hljs-quote { - color: #a0a1a7; - font-style: italic; -} - -.hljs-doctag, -.hljs-keyword, -.hljs-formula { - color: #a626a4; -} - -.hljs-section, -.hljs-name, -.hljs-selector-tag, -.hljs-deletion, -.hljs-subst { - color: #e45649; -} - -.hljs-literal { - color: #0184bb; -} - -.hljs-string, -.hljs-regexp, -.hljs-addition, -.hljs-attribute, -.hljs-meta-string { - color: #50a14f; -} - -.hljs-built_in, -.hljs-class .hljs-title { - color: #c18401; -} - -.hljs-attr, -.hljs-variable, -.hljs-template-variable, -.hljs-type, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-number { - color: #986801; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link, -.hljs-meta, -.hljs-selector-id, -.hljs-title { - color: #4078f2; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-link { - text-decoration: underline; -} diff --git a/vendor/scrivo/highlight.php/styles/brown-paper.css b/vendor/scrivo/highlight.php/styles/brown-paper.css deleted file mode 100644 index f0197b924..000000000 --- a/vendor/scrivo/highlight.php/styles/brown-paper.css +++ /dev/null @@ -1,64 +0,0 @@ -/* - -Brown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background:#b7a68e url(./brown-papersq.png); -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst { - color: #363c69; -} - -.hljs-string, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-attribute, -.hljs-symbol, -.hljs-bullet, -.hljs-built_in, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable, -.hljs-link, -.hljs-name { - color: #2c009f; -} - -.hljs-comment, -.hljs-quote, -.hljs-meta, -.hljs-deletion { - color: #802022; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-doctag, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/brown-papersq.png b/vendor/scrivo/highlight.php/styles/brown-papersq.png deleted file mode 100644 index 3813903dbf9fa7b1fb5bd11d9534c06667d9056f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18198 zcmZsCRajhYlWil7yGw9LaCaw2kl^kP!M%at?m>cka0u>ctf6s&e8CzTLSrGMaSIUS zWM<BsGxPla&EEUH*jKfxYSpUsCh2Is!N;M&0RRB_YN|?l000{N?>7q;>fa~s$OpT> zFLY-GO$7j;Wl{{7eE9cF?XPU&ukYpLA870A2vBhFvU6lq^RRVx)N{0T2=<wBlm-A) z>eQ4J41(5=2G+8;)w1ZEPMkbF2bGnazV|OLZz2Hb@=WyXBX0)f+0o;fWze0N{t<*y ztIiNnZC{LRA&k!$ZY8RSSkRr34SfzyO1FQ1#+`5DKBGKIaW*#IpS|)H)0b)RO)vVT zdmZs``V5~Rd=7^niGNRi-KohFdl7;cLNt=6H%jET$<@@a?HPC}DI+UeV-R$j(|Cgb zovyEp&h`&JS~h*u+dsTgScW2zDVr4f<Q^WcQ~UfHvU+2PMyM789^pt4^sSp)eW|qF zptAV`{mj^akc}`o;i97Aj;-gNz^uB#{(g1C8Y+16=LXlpmrTjy!o7l{2DxLd#%$Fq z*C!RYvT-^+DqLyS$8al(DR8yw;raH%#YL7~61fS|U&>~<H^}nkMkrzUR+uSSkosc& zriW}SRaW{Z5grh+qIWn{-;NAC^6VW!tb`TP)<g<w_kf?==uKVTweJpsNKxj?wDX+( z?ujb7?c3gZUEbc@!cKVa1_}@0;2~LAi^6+>DH;Zx@cQhlKiyzUik!{j?26_bcGl3n zz;xi(8ENgs!;6LMT9?9^)|SgIm+Xu<9pAn@Jwvr@j|kU$Ps<;yJK|Ptilz{)cF~50 z>3}X}-GE2L$gd5vToUcA;ufTe+vCmq6y;EHLIF1Y)!*mMIk7Ufz<IXq&lk3|S_iWy z{CLtSo7yuDg*6QChY~i|*YnlYr93LKe=Nn5wLNt=9)oSf9(U2Y+nW7Whu1%4Lk#N- z_C-TmWB8OVf>`-6@{%j+0t}5by-kjAimHgt*AfoWQ3<}2%HH1G)X=gxwsGTnqo!jS zPp^mHU)Wdo9i$J93f_cGL~o081HVh2MIfFb&r#24&zMhy4-B`@-M4wqKeV5e3rOCk zzfxnXb=ed%7QxZsGFZ!Bk=ojIqXM0lz`=t&N`(ieb`uT$vaWG--x!ps=kokELG7^v z+{LRR;H>H{+#Sy9)~}T-X{s*WDIF9ko?!YOUr<Zup=MumQG-aUl^ahE4l{N=PPIN~ zn-l^?RKDuV@=n3+zLOZobbuL=?iq!V`LGHA*RF@Cm+IZ?*xepkW(o__+~GH;_KN|R z{fT-8;DoeQk2DTf%YvFF#8I#;KAoMtRc-~lBgdcSguAnaFhZdh`nj;a3^tvVxcjx{ zOH@{}tY?zc-B^5;0~=dz6e<OSkURs9sA89X!$@OOsat_N^}L#Ipn{m9lD^$apDlZ) z+F%}BLotzW`brjYCfTlL$A?!oo1nfet-KU0HB@FSmeE+E%|lk40j*XtPa<1FC2CY| zLEP-F%&!)9#+>BL6c1UTt%|c-C%-<d%s%A?9Qw0wD#NMZ2BT4As8=6FW-E-^<mv1o z%y4z4`#yG_Q@pM|fvT#@&Eu+CNErvly+g_m;8!<%Lww-az%?q6yKUU#Zy7k09_RcL z$a%Kp(M5QWAV}VT&=y5z{L!n=UJ*!IXVmx&`PTj+$H<%c+jQX2En6e{&_?a5V@W9k zUwW+qN@cXl(477n;`bSqU8C}}Dy;C$cc01W96giS{|^PZ|H4Mk*w6#R)1L_JLEsA3 zDAeVj-AhN@jet>R`h{*D&-?xTv6%U;Fy)q@zD7n;Mm&VTYo!f>`4|^@IrUrWqi<2` zIK=%8Y<M`hR&&lrT`sgoO2e#xH1^?uW1Q*gnF<R^+{Rd}kov{D)UCW~RDtlYz9!J0 zvuzG#esVN#MA2q6X0(?Qe}99XcjC9KNVICw+cr$m)_i<qsw_E*igb*Y$g49orOhx4 zK;VYH(YPe;w9pj~0DlCR58o2A%4Us5R>>k7_cJFc62Fm1dsu5V%^D!kOF(oA;3duw z%pO09{DvbtIv+U1{6MQ8Wq|e~4(8R<QVp|BKxY6b@ms$w<mJdEzk;EVq-<vB6xQ$n z%BeKbvX1%kg!C|4zjZO@(LO{6MdJ71yKphNKsFdZc#EG*ZP9QKzGXHf|4G?ws|OLo zTDm-pO%<N~Xs52%nU|g@e1tpy8c%8nH@?m@ks*j$4u)xFWs?B)RyWC*Xd>FaZSiu$ z|CJ~BTvRLdM64V<l%{G@ZG=2gV)qsc@-J1H=OzYFczd=+EHftsd^8tBCp<coL8T2A zKeBQyr!n=ytc(8y9sJ=kZWl#y_7g0sn4t7UdzY>`xYr`XpzSoka%-H{0)Ro-jT6+} zT18|CY&T<`K}73~WMQMkzj<-{e`EjOV2Ch(n321C+#16;>MjIhblly|M?Br0UERMA z8yIvk9sVuv0~h)1=S{wY{&V6fDi@0c8|@S!>h`gR_^u~(f!y=uu=3o8U2>$VV-mwV zeJKl8K*mz%0O$3!XmmqEd#rW!>oY?U<|?CBsX=UMCSrinA}B9GA5MTUzn%ILQD=}Q z^-qc}to5D!{UYEBFfSF{7{}5#I2`7!9Xcs|{e!rTVYvNetFc@43N$#e!DM_Y#5_4V z3P*)qJyw97IJGZYj53iEQKK~Zk6QE|wnDAQ6e%ci7WM9yX{3Voy>2v7-{d<kg-Gz= zL~i2NYm+Jz{)Vu=O{-|Xa^xvlliPb~{};7-MuwYsXkxG1lj00SnqkGbog9SeL|$gg zWwMWn??T^)njDa$U{w%C<B};yZAq!bp`P-!;%1n+g9<43nESZ@blaZWv@Je<*xwVX z+svoY8BY(e{M&b#<CrwbPzF;$#Xo|tB+d|-ql+ARHV#xN2m_p(t$_)gsHcFE&2D~t zGE}UXiJ|AaEx2^MYaBY}3$%MIQu(rj$Qn;-<4;b7OGW0k6?2`vSVj9zHV^$R`4GmO zO>W*|+Zvy7%^(o^DMc&%_Tp}4@Jo%0Bs7ObY$K2QS=1v19slY*WwV!8B05I;*7gc| zC}iWT!ocL=zoXCa-*EVkQZPGoFVou4>|(ng{&T`5ns(d;`0IW<cE)-zv>RE4$3aCE zX={pif)<o*iDoSpB$}uyh3B!TW;&bzq8ZkN5V!Go6J3<IZ`{x=pnKYSK0qa_%*uG3 zVZi35uKLvY)6enbqPNS^yzpQ06n)L(>xfKL2J&CwL-rbsVhFX~Ast|24AzGCb$6bP zzjP96&p17?0<d_~za()iT`s)+v!iqje}jQB4e}}^qoPp+ch#U8(uuem<AvNDj^gm? zz}V3tP009uYV@^_drJXfk|hYe{Oo-DEcU!HCt1_7c%iz3N06fYjt|I>`zA}Cr(1{- zBWmAc^Tih%c@PSpJD39Rtvbpc27|&`W}18q&trP3z4xp%4^t5T!T})zWON*!hQ+0C zGnKXI-(t5+$xcN_*!vy^Ebcn(`}3GQ=EjrR)jEu#)a!Qo+uU^L6Sf!vtQo@-)YCH_ zIkq!}#RQ?#H9Na)c>fA?i%F=AwN>+%6IHG_6~07@;tNMw)pj-py?fm5OAkUXC)Brp z)eG?cTAV-ODy=aRrlcS^!0S!95GOO@_zy6Yr~oZODHiWB(rYDHVW+oP+iSHanvW_2 zD+33#kuvw;P&BQf8OM-`63t1%h)cdnm8}>fIrS=425~>gpk!*nOPF^FRJ!}0{NO(e z1ANE&sU_mPMS;Pw9^8F*v5!k1Dr?=^%?eWij0f~to7y`V{K(<#9fgxsh1qZ}irc;t zApc;fE}TBG^?-(ZYfC3hk)rzA9||a50&`5$fO<eY3cKJBSAkuCMjM_C==EME6Dks^ zzL=O1{%{4KFMA@$9qabdwjjLOeGqM`bO8jSW-M#y0#*V%h-!j8OjJ-c48C!9ps{gG z+obX;M8N7J9hu}!-T~v$m#BL6+rCAZ@~{(|Qp{KA8QP~|Ws!GcNZ6IsjuPg2)Ay@# zlkbm<lDRjHuEV?0-rG|2dAN_szeTtjjfi+x8X(NVs%cA~RM$E&0%PK~Dlx@JV(!97 zB9-b{!&C4hwW4Zvjd5VueJVf4{f7pkLgZvi#QI25A`7?N3{%j1jOL_jn00q#zq*O+ z)JHKWyez5-4i8t!X6kJXb>MODInB^CQQz-%|FVW(Me6cd&RQ!Em*`8(cOiTV*}I0^ zkh9#bz+b`^Achh+t!T{E%m*7Spr8X*#NFvrNeQKR9N#NYImXo$orFW}S<u$C_j~T- zg9F0XYA~w{k0^t+C3!N6^t9l3zrxxAVY3|1tsn~^0A*24ye}FGou{e!xQ}|mm8~+e zK(kVmmvpXAwz(keVcsKxTC+E`EBiqR5Gq;nAH?u~b%Y^-r{_Jw@E(tl%n|YL=VI^k zBMMcd@st1`qAKO2Wg@XJAdDC~Qw<oVjqM#%sgT#L8_mbIn#wh-(7}%vswlrRXxYH% z<|ss_5^Tty1I<y{-`XOvk8+%Oyu&SxXC!w?1Mr`m1AC0CF)%m_=y^S4#TPvNTKoLC zWS?%gi?s!(!KfblG_LxYIv%vz)!Ce6*rb!^cN-d@WP|7lCSMD$L|X**XKL`^Uj18x zIFmf$?adp_D-%Up+mKL?AXT#OY^M)`Bh<aLfOO2X-9&aip)XNk+n(aI7NmVPOynVI zk{Gs1R0(7~pK_Qz`(i#dz^?<ka%-Jdl!=LpTZxH|#2$28&qwVU`iPR&Y7>#|kp!g) zC|mslRtj<WpwH*$1?0vyPMOEsIf9XMH~KDSK79kjc8JAHgVYJbR*Wp&#T$=RC|_a> z{<(wk5heSmNTLQPjVu+tu`Ax0<<A#5#ux4wy~Nol)akOY-;exwWwK!-b_@)qlV7$w zetK)O5ko-*<1Kt;3=9nLny}iY#7-PfBbuMeL7vh$4l|;veeCVPm^Vu!@#TM1iVU!9 zVoo(teMS{K_Cz!_rjzR+6dBcb7m6G({++e6)*WJEo!9<Mv%`tX1OcY)zPN{74Ta#+ zabo}Cu>Jp<3;sv=x5%C^te-lbQRUIA>ktvMAj}|$FYU$Qp}=T~;pv%9btR=dxklUy zkR9E*9e)3CPHhghYGI4o&yB<6Ek^@&s6_$^hHm%y;<q2JXN)zzFe^8`IJKdn2s#$7 z6!_s!!&<P?eKE%-i~G{hpj@<pS*<z8RkV!#kW_z_I`*AM9lyN-^CE#A(_~hf^&~Ee z<paf6|9NuFs$!0`MLbU~F3r%m*u>$mG#6s2Gj@yUh|7NNvbZ*-CiW>(<tYM3C0`s^ zA?3&t82Kk)&HL^$!Flv%wS`ZZNIdhvDw67m;Lj-U8B5QW_0}LGEo9@;;WynGnvllt zKUBAARXOXTZLbPvm!dqlSf^{Cvv_^I%67;pSHDWETa(6%b3ArFBn*KzgS982%7L=y zSb*z*qJG&*lj1pd2*||o6H{5P*+0zp>`$PB*?kxl)}lSZKB^Wx?u%oy%PiU;Ucb|V z|JbtHI`e>wDu43V9mbmTz-O*hsj=x3p@_52uHWdv$KHWXIJ?hAN_O+SE^)}7#rG|6 z_BKM`Ghwpm2fNaI-XM&&0MIf<WD;>Lw+nk~2$Q9!(m1H({sIm*PjV$tD(vHzF8J^I z$5d)V3#P=#{X0~lkvdz*hO?2|P39$67m%BB>cJ;P&i?e>f6oD0A_x(fXnlhN8_iy~ z=8_i6_?scR{Q@F{<_+s`6F0?)4q>Y!TZURG@z1Xg(XF|Uq<7M}+x3!5CKzKPU%EBw zWsc%dMB{e=rbNFynyQz;$Wk>xdNDkRB!r}hPlheoBDRi4NdE0U68C8T=FwmB)E|du zu(3Ry^ER}qt8o=s^t;)ka7?Rw9BkK-AbMm!5YyN{n8j%4(FS=#^NXNFzOKvDh-fh_ ztrMuN#+;}%O*fdC_O-zikI?cL4FkQFbMJ&%;LsLdp2pU1z81byeDrcnfVfSPjd&Tx z0uTNCRa&zYgwCK{AP>=r8Sx{G=0I#zQ4SAF*CLY5@Ge_3>$_ebR&z8QuoP^G_nMbA zR!J5=NfW+bA;6g4yh|56J$}zRiUEt*T!NqU4MM$Ik(YO<fa!*pqlS%~x5Vh1>5ElC z3I>TTR5(&RS-e$~mJ610i3Tb|O!%oihx<r;%EzNWrw(%;e7HcAM1+i2m!U<@3yx_A z@BrjnKZyu$_}uiD=n0T$pyaOo8LkmtBoO3sn;jzHnw!Wmh|2+UElz(n$)TVtn!1Zt zLPt*`B+x+P=WK)u%SW-pzM&Y971W?PE44Vx(!$L}r$^ffzjr9pWkS%0^O#5c1H7fS zULKW}oc`O~pMSpnz2UkxE7^i0d&m_F&EsonY2g#_&}@?5Xq{jEV<N(6<>2Dou=SDi zY8QGbi&iMst0x9N)(Qw|m<=v9=H$h=d9q7_RC$8&xiTCpO(nAT)09jNd*kDz)xA=d zA>mDJMEO}wm=z8%##p8Epux^Z?6*hT+bBf^Yw~9wh1mOBI2*B_&;n6YqN$_sLi+`r zN+}oUEH%!)UEZO0kGwoV{fV0125Liy{XQRjOG;ll15xL$5w(ynu*BE#Y!uUbJlqhC z*)p9Akd=!p3VXT;Mo_Zvej_{xJkq)x&0<&B)@Utjud|co5aPb~dM)3OKXKmRzZ}RD zt~hR#D>70m`e$6d9RY-q2@W6QANld%I<S55;;N27*Te)k{(3q1=Zui}3!`sEsx<$3 zka`~a)1<vnEVU<#Mp&OF$SR?x@YH&BZG;E@>vZ*VmwpbdVCzWDJ`&UO%hC*(c9AJ; z<Fw_L+~}P#;?LFX6=U+__3^UQg8QE49{J1RQH)f4Z@i-xBAXi%obwJAYYfY%oC|O$ zmBEM*5R`p`^-^7;%3%0NKBiISX0k)fk&s|UUKP-iI1nuY3gIxgm?UHEnp8#pFmXAs z-0Fmb1tN<imBci6=|jcvYM7xI=iz;6SoEw;y50`*hFnhelz}TDIr9Hr80d+($MhyK z!Z1=A_}#4Aep2`ZO-OezP)Mv=2ff1_m`ib4*T>8qe|b;=knC|ZRghL9-j+JpIpBjS zLIz{G#rkZ%K&UOs1pgA;bi1JjfXryT;9AV*AdF1(P;A$V^MMS0X10gTzoNjJBTB;U z#kJ5|QkG?|zHY}$^ddtj_$wAkIcd;Wk|&B6^`fnOL3uIPj@Z+b!gftAC_YE@sh~EY z@awBver>U-j(pBMf%*W;OI?#3J3yRO&^PqFHW`#yr|<HN5*1V6<7*_>%#0rDM+^ZV zw!IXpiDk0Qo5i<HY~uMDSv#WPCC3L1r8!oCt%KzGPXPVM>L_mNZlA`+m>mgyn-Z9( z1VK4OJry2Iq?o90-NhDNVAP3Niev{MJh~PQ7M5U9?Ob1#H}q=Dgn%~Ng=3b;7jX>n zADv=?=pgaOIN2G2JCr_(7k0YF#OlE0c}by4_|pb-iJ-CYzLbWw<r^K#=rJHNzDF3~ zEYIbLJyB5cO;v>Hs2A)ZY;uuYwbQMUa1ed5)1G+DXr$;MC*sQ-N@4$xD327+bTrT^ z?kmr?X}=Lu2xf<Nh9GBhB<B}i(hZyzCc!9WX&S8UyPAxyPc{wk;(%N}_KJn|{{B#p zx61(sX#!>7X5|gkw#k>FEC139#QtL*Y>C)kvvqB=d;fVQ8{+;RhP-)is9rX&jj-Ik zT00%|O4wv`6`(<QwZmiMoVuppt!}Q#^NL*Agqa&nMe)?_P_xX3`IZ5v>M(&W*hs2A z?qIa9QPvO>*ssTM+$((GcA1>?(C1jm10t6@Dy(k%HtIN+5d!B<k2qQv(35Ye2Zl~A z&Fon+6YBHg@i;~Lm}LvKO7N&WuPU0S!i10Z+`i!#*F^1Y1_{B)lHS7EAt|nEW^7Hv zZIs`CuC5-ca-Pl?33=+y4`W~P&iD>k;~J%32ZhcKu$-i2gOM1Ek)Av0js<&PBErK4 zp0BqauJ^Yy7bnHdyGOO!FbWP*qG)O@I>y%wAIOX9eD)7R>ow6xlYRy-h|ZmQaLshv zm7r7H)>I5~>_i>NDSv6k)mCwZu$9K6)JGn#ni#>O5}3aMrYt7e67}_&zNlt_@b&$n z)VO|sK6qnt57(FA0!{d&$}h!DdNgOgYMn=8${CJ<oF1@0pd2cV%NwECVxVAPw7T15 zmTtdP+auOaA|sV(P`XiQ*iRLnx4L09flS!i+pZdv^4L$4l1eAo08i=p4hB6yTGnXo zwA{hlb*N&+9IIe%`QR63XgvigLQBwix~7%fg2;~k&!<T6a2CP8(0`t%eTL^JIqMp1 z|6hkt7K+)5;OgNgP<OeRxLV@Q`+=eU(D+)Pk3QfDr6zSteHr@s8dz<{_|>>S2YIAe zYh9atd77_K6soYC+WALnJL7SxqnE#(+1G`m^0I56gta@e+L0z>IRG+?>DS@Oe-NlQ z-mQ)F{=7b($L)X@jB5Ot*D*>ceMR8793ItK-tTO`iAnNm-xzYn0#;&=gXJYz8<Xj< zi+ynPbztvyuhwadre(flpQkggk^85;A%tnEDOaI0l=6A!yf~<L19u+=@%~LO5Huow z(fb!48*a?bWkULAo)Iep92Z;fZj;kq+fRm+DRfJ}{A((l7ndYEzC~l2H5x<d6{cSF zjXfR;F8D-yuqEcY6ng&VGFMXn)G!WA;9k7pp~HQTA9UUO>KmnUBrL#cb@ELwnkp?O z<rzEA*BP7^$AbGBhxry`;QR%SO~vs>ZZ{8tSRklRk}8Ts29G>v-&z?qob#qYSe!ek zt^r`X2W(J?(qxhOf%h#^?8D`^&MPbuUE<rgB}g}ksqJvUa$;kd!781Nj$b4{a;FZT z^#)PL%o;pe^G+K=P?M^<{GuSG?zQajbs{}|2(@b_GwxoaW+#jOk_q`oxM<7Xe($`u zEYd9L^~U$V(}nfr7iaN*yCIk<d%iz}lETnt-beSP86$FL$5eiYx%FHhALC;@-)>9s z$80u<1iU&&+mQB<4bZeyBaOB}$!d@`^f4+iXS3;h>rXP~*FRrr)Wki^(q)&E<x3mP zCiPB6n+re(61W5?qrRAF_xuw-0YTpto}F3N&!f*yk-<l23&wa=89l|M65LJlJD@t* zLAJ4uW;5z8n$BM2docaXJN!4OO^lKzhO;{L^1;J;oua1;7J1a@?JnA2&-><i8ygLb zMDD3~l|n_?t%yh2+!s6G0ZT8n(S(GFh6au_vf+HOO!WN_7%quu&xktnvJao4_wEA@ zYy@ky@rFT=!nVh;RHHh@AUeC_Rvq0iujY`H>wAMt?71xOWwtXa8UsY(_;C*7d*d9Z z-#(@Mu>`+6lrEC|=E^q^u&A=e+P9|#`hdP0Rg9`gUbNqm@!-Gg-V6vL;!*U<4ZtIa zv@cWy_^m4cV=F@sv3lCwx|?r%lb?NGQobaW&#Mi<9dngpq({-uy?<X8bYhrHzd&4Z zY!;p42(tOwMWiY&eRgqF&KHSpg-c4dvwcCwi?HCUE-<2-h}kx>xwAR&#MBUtybddE z1Ka>|_TRpK@#mBE#M;ka;RDR*2pXmP#YHG|5qh#YgXDUPD*cs3)<j0y;@=j4p~pqJ zQPG<78z|w>>>Co@wnbArjo;_^QGnuQGdUSqu6AMPxBHbW99c9gHFZ*u&-M5cS}n@d z@wWUbV?X7y#NTCaqV_t*)w+Vzpte?L^08$=xiju5lCZ4~#~@34qa{rJM!{y~Tqe5H z-`N}U;ZKj9jnYas%EXCD=*$|XC$h{m@?;&T(uT--QOR_H^PcjyAP~pc&dS&v#J%KN zK|)APC-pnC;EKdibK<GG!r!33O?jjHT2P5c#5qarLr$U9kYI9j|G;c|9^ujVM2D|X zw5P2oE8gFE$kicS+qHqsI3(w@@zCREllVcezd}^tXMb(E=MyLtQ~E0y>x8O+Pqef? zY3J^)uf~;VDge4m$gh`Aj{?OYnES!Tftm1kjZwLB-5soBf8q9RaPk~e{SqHq+Gh(R z<}KbtcWaoIC!do+k`h}5s~QzJ&#Ro?TzU_eO^<L_7Omn7g9T{r(7H!=+FuhNN@rPB z;~&KTEpS=0EY+~p;4hZM9m(JtliH7_{E67nW&05^fu`^-6LIzOIEjIDl^%DWZO6Dv zsi%+Ej`e1-K@~NxG)~mry-I2kMB6ChSCcYwYS$kvP={@x0ci#%`Q1zs7<o6XZ`X-J zu&&!Tj8<>xAgvNoX&oKS7|-8Lm;%2@BRKwb9H4rRICqXPIQLdOMGtG>0(Kh}5xDzW z<`R5ub7|^ov6hX(i^R_d6ZdLQ5t}vu@?2|ueBl^W!CoR=LZ1Urel(cC{`jK##xJ5Z zW6m&PFV^e{7~mrz4!xy@n!O%C(vIRG0g>FrE1t+=n3;z9D!vWHCUjqMi*QAc4!hId zk9MAo2%jf}g*lzYPM7_RYQxo3rJR%jUCd5FoBmmSn@QTM@?QERM*E-uEb}GD!7+W4 z;ucS;Fa1*ZgF9U&8>R&|tjy3FH;93-Kpof^^nCm9kp4U+SFqwi@6}>$jo4)7x?L*p z5e<NgLBlrhpA1IZk>HsG=We;aDoq*x+H6v7x39;dP<1mgK0fQuG+#L+=2<$z#m5Z5 zCEto{j1wIIxQ(7>!yi2iRgQS~c_6N5JHqo=$`<Z4>q=PD?Y@90#727stD}1n!C~qy z1q^LAqT}jq4r2TFIf&-|vYu|DXI}0>^}2ev5jUXZCM+Z<H2PEc!}cksDTJ)dT4Gi_ zIn3-w>OWL>l4t}d2Pur%y+XM$j(Cc126Ww7ST~4S;g=2q8j3!|OoWynEtKkuUjZ>k za%azP+sS^P^KJ=|`TAdnlNkRHqn@0nFWdFe<s`~4P9^t78|9}Q-+1$dm8;9dxVsP! z8kelq;Okl7bX$l|^{+^vc)myvzt+wRuEx>MoI4<uZsqpeGFeTpjh1gtfm(G|yxwnj z=b+f_Utf;Kk7Tys)wT?bXBt0W2Z_LbN%O2p^31?B7k7Jh+hNC{vXrOlCkRV2Yi^T$ z1{NYfy3~j1v@U_F+F>-_sH22UA`hq_xA?B;_u;ixDrx%9ajWMqLgzfYCofw8KF`gO zWh92d@!_T((;rc7)Y0;~o3^0R^ALS8opgP}hX%hpsuO^eo@L^`#d1RJD{m2kN6wGw z5T;|y=;jNZl}W2j;Bc$yGn_%Ti(Jtk4%<zmI=TPkLM$Bu`+OR4_j|5(X6SilsLG$X zcId;vw(SCZCdXq|eZX?dTVPhaxzBuUMemFVr;6ZgJbdFv6(_8aZsg8C{u08%mv<>` zDK<n{OFDvSie@8%akOPC#ZM!JA)ceoSV2<Tor`idjCQ1gZ+ydh>5cCl`%fdh(p%F! zN4;@Huf@ukLx1k|0(qt;@&Xiw=4#8cVPcfFDX~atn}9jl7(Tz#p-Q|4F%ywo(jlv# z%qISsaHlw>1|(CS*2KqRSCP8NF(6NfJ>HP|lV`v4llSyqe<E|J5l24&->D!0%X_1> zg{vvN5D0m~n!O3#;}}s;n>z%iE0e^EX_%IQaWRp4yx4LOzqV3T+W(;k{udVh!#EJ} zgnXu%H1P~HO=bwcbt57%T)u4QT05g9BA!O6PoHP#DPg-80&W|M33F=n@!{4j6>-=9 z<hAqWVp}XyfyN=oZ7B_bW=4{IF;%){?PLw?TWdV?CMJ$!Q-*V%InBc`tdg2AKJ4{P z0{-QIn9Zm#Z?a$Q{bJsG9rO(?ULUFrY;u9P?c%vOTrLU|>l9KJP6S3H+U>;T?}#WA z_O%upq*IdOTe9b~q#{Y}07vk515LC)Il|+Aa$f}Tc<VN$!X7Zb>r-&vQOIH)UZ$6& z36g&<+>7?MFwXUe`uwpa`gVyIwLJn~p1QK-H&X5vGa};Wdy^Q_m|$Lgl*a(g9EO{h z##w%7(g(SjboyvXP~vP72(|N1)ZI{XNa-&bPjF54D`q-}^mUm=DGk7I_a#t~zNU)> zJD=vyGTVi2y<U{L&m=!HRbZwWQ)hRWTcIT3njw$#H;fw=v=!7nxFdBX|E5YWT1~Y` zYHpUHg-A#nwuGMaO+8sSTpmA@`QG-O=124NHAT89JT&>}*&qMByXD3Tn-Wj|5S#f( z1uWJ`3RnO6rh+Yy?c=B~PUJ?nV_{w6l7FulT#(2M_~r)HsCX+L?$5L39mEvBSU`8$ zYq&EhHXoxg(J-om_c-<sk}HMeU-tnVPy0i6A0tq}<(g?jtIxArPqXlAq}=_R=fi~B zgMcm%XYZuuVR)w>f<e=;AaoiUReo^7japP;U-gopFGhk~JsPJ~i+(}-S4lhLpuDou z%4<yLHdzwPfB|<}u0ka}u$_$2b#p%y9IONXDbYn?9#?dCRRbL}A^+@gR^0HTKm#Iz zElOWY?CGY8qM!&er1<^k`Z8TEqX1poLu>e@=~3q#OG#^kYLhMnV)y;ZF6Gqz_mr2P zugbL0xc8{kyxRcLC?m)K&Yj$%)>_B@og|1@e~QPf=dh!p2dBQAtX$a~q4}AI9ArA; za(4@-P0mv5dlML~u;DO#U*_mx8yZv31rn3O5F4pLW;#xXKA<~u3@cMIw&h)_VR<hr z!9BUkX`tVYVsZnBQyLoK?@el`7pjsMZnW+-rdM%a7fk;yM(^G|FP~#ffZfDXDUnI; zG3L{|yxApgedaGdPwRpes$t!ZxLHD@k>G3S-EN>9CM!{YB*|;6wg-K3V?)eR((z#1 zHyX+Us~H@9)~!8`K-#ZDU>v8HpiaQ|@=VU5MgT@ehzQ(1nZ!M0ZDk{Fb`>pCb0vQE z`gX@ZK}6S!(-($v3w8-+L6Xs~;@WTrR}q42gH9p2ncZYDab8*`#p8jbS&H9$DTx{1 z|8L)r+}X3oIp6b9dN^fZsl0TpRK4NW^TVGZOit8~r*qM+QL3pd7G0|~C`PHxw2PM3 z->n8iEh)LU)Je%r7nEt|D%&F&(={XI*19z_HKI38aE6Cfm-buU7W|=mo3gMA57~g` z7aBx4OS&(O5w@W;2pO@ZVyG;2^F+2cYshx%M2*M@%;(4quYc}>z1WX(9ccb&>8#{j zE=VlFg+&2-xsr%AY_}ciz4+<$^}2TO2e)byPmJl?+aOU7{UVx$=ZNQDTQLxsh}+(_ zak-NBw`v4=+Ydp_L=w^J1&NT$-AbEUuj%8LN7nJzt^APyl$(ght>;(o{)xCqf8IX6 zq`a-CyPq$UOPJN(oo>$gX?v65Y<IVrD>$GnIq7Fq?=??};kY4#Na69k#iG|Wd|{Tt z&uFLgaDQ<f-bY#NK*2`a#nEB^i$K<i5_Q{%$<LupJKT0N_`-X{OF?W{!1NJAm~0u` z90aa)SRx2Sa3I6RwT9D8=?$qhuud=4*FtzmnQxw3c3!jU6#Tr2C%>4)`{9^3rX|Bg zNY8N2w1??HVsq#}Xk&RcmoQ<y;6(;#7|x1fmj@yz&`|WH(-s-BRWLXV4-35HyVley zVTQAu+(g>Bacog;CZ%I-HU?7dT+nZRo?h7BQd5Yrv%sI0rPF^Sk^9@l-_4``bwK!A z5Ud{#8B%fMPHat04G9kj%j5>0maQK}jQTzGC!2<9FicZ-#V^ZaC)A?QK9EelA!nP) z+Z2DqYAqTsfZ9k1CW9+h;Uao59}OnJ9>r}xs&nHlM5^Y58T*TkM80zn8=UE2e8u{j zpH(Cv<_IWBdh<6_f1={d7#R|wGLcIoegMU>82VZLrcn;{FuCmF59Tpu<i#i}Oa^ad z$fDiiTwo@;h7K+%9&a`0=up)0!TEh`KX3AS{`5Ddr>7qQ5TEj5`AFXQxx{XS6|0N# z3g?J^0RDM8_l@3M4G0f^O03>$S#_it3cdG%7HWo_Xb-<{a&<IuxPG{G;MwU24!(<a zP)MR56XYh?+~2I&qkeH6s#3b(VLDf~Yy(rVXGi>XHHzW`(2t54<~-m{AO)J~7AhPI zbkz9A9Eq!7aijhY%^=rG`j6?w^hb13^_LKf!X*}jaV$GaXvsies~+H0T#v%OcveHN zw6t*A@XdVfqJIPsPwPO4;>%M4C+{dTVU{cOk`3puW6b36K2&z%>btSk&&H>Z;<`p> z`FMTMiHw&wO<Bcc{If!ESS4RjvT^h}GielUk8~1rKJJ^m>XcQ$-Y{pG@3aN}s_>;# zeQ6GDsqIMA?iz{B1XzIIegeu-#qL_ZBH|eh`L{~J(A{bH*vND8W}io(WZ9s;;m3qZ zElXp!ru)Ht+yJJ|dfvRtcX?~Pn_nW{zZbM5z3mB?Hbf_|+7ZC-9yVjR&7mnNul4vE z%KEK*b1~tReV{kNh2E=&iwgU8w0kYs3c1o6m;*fZfrF-g?1!~+<-`f!Dj8+i7NJUI zcZj}vt?|8iHQ3TdM;gn(X(Vidn!cd{^x{>dX&Vt<c~kY$*=!Jlt$zH<$)D{`Ucajy z&;VwxYuf_O)~Jr~=04@ngQFW>^`^_3pu?t)#>x|K0cW=egSMl9#+mqq-8|RdMP1Dw zx^5}L#|i6)ERW8LBjm}wD6@3<?Nud{P#@qIK#`tV-h;`V=p69O^mLAGF(TMW6~DOP zyDpyxO|p|cePp`grO!8?nQ0#ZY2{(!U(nqA?%<@tbhA;!=~G~ZIe4_6={B1*bUI|h zJc&0To~1MU!jryCL?K6{3hjC{&E_}cR>$`!cXl0aV*W>(xz)J2m+v|RNGEXIA%XWv z$Hx$v!@W5LfaU7iEY}no2e;*F&dh{F;<$?``JyH&l3RVjA{xC<KlGaMVsbmn>=Rq{ z6}dLQKK(BW4N!Y)Mzd3h)PX8L3OR6JX82vsk<?!K2=fGX6aY;;A)HZGGb}75<{uxX zkhV+ntp7HV{y%c)l^Ai?67k4&6NU3ZyurWYD?w*Qj*(z}17rs@Aw;Q94T!Fg@K!Sn zsAbYnXgAJgNnt%$bTut_I2mveeqHC8Faxz$2j&9JB3~`l(8gbSfTOt8G(TUK*Q(lR zn7M6$UCb0D0-H=Y_@ozfR2F|pyOD)+$%M{Va&ls>%|<`y{3G<99ycR8(ZD;4@=k|d zx1nPOrARPmMi86c#Qn^1g5RVk00)%LY3fdvDm`_|D|ZP>a4hmnJmTiqc40*eItZ0G z(Cfxe`6oWB{4L&V2-lf)Dz{MkXQ(A{E}?e1cWU;s-J?xBbGBUgebeTI{+k+LT|P=A z;GHDn*981}=hBJAGXPX?iXEu)RoZN2kKn)}Yp)=+)%`(=Hk2z^Csu^a+hNSE9<}O4 zW9BhF843QW<{+N^4NZ(+Ohu0L$qp9AhpJ?UbX8~fibx(>f<ko>3CRh|ZH~FPW;%L4 z2Jfb`#^2zr=0rNvM5{6`q6x-M;Q<N0#SuM;>J8B$W1lwJwBT6OTa+L|E?*68NnD-d zqirI@#!DTk6=nvBq1t|F2a57+*JomCoPO&bkNHd&fq@7CoA#=ogI<ZG86lOO9TWza zOa3ncx>@ER;^g6MTjnNJpU8$17lkcby!fn#Y^cf59qs4;WjW9@I`pu+^=!$XvlzSp zHl-BP6qCLifc*pwQ8vDfUY0lgjC>>zTLL$6VLQBKH2U4M(&?%A718nspPj%tmUBw+ z#X>LH_#p;`9!I5vv6@cVh1b)~bHTXz;!@s>4omWjec#A;((g=Fq_p{u1|<#I-D{h1 zr%{sZ%zv+3T?)s{c78c|r6Ez1kf5OuR<!e%FZH3R@ys2(iOnrffDi;zFe@cBMPZ}# zs$Wo{1&)itUJ&gr?)P<{0_b#pfgA0N_`4D>J<^!_`!;|HxG;mZiSf=CdVqy^)Fpf= zR6<3YrraF!c1|tIJ#;9sg<)`+=a+cw8*6)$-yV3w_=*W`MB#~zjz6^LYX4eVoTxdI zc3h_Bc-v+z^z5>e3vEp)brfA?bQ>r1^-8x`-ATBNL)9<bX9-R%aS<I@mO9YTx@_@J z@?;QUJ#BrrGOlk#&jHnb_{Da$9gIOeJQJZoWumRlYaFdADd{Ghq(F2U3aF+rM*Qu= z{vr}dei%tp99#wcVX<|+zNA|00cR#5V&NAV6OCFed83?o&V4f)Yz)JnEl%mb2*LgJ zq))r7=SA)YHIpU`%y7^56`#wSWhhSn8f5pyYU2CDX3V?qUSjTFkRdaaghF~~B>9$& z<i7A=ti-0W`x|Gu=P_^8An}dce`6IZ6O#HfXuJJovyNQfWFhl|X5W*qtYHI&GN7hD z+KTh07-NP17+0C02;6o#B6jU>;rXG-!IBn08OxyuZoj`hcQ)a@7O5;d=o7$6_hSTJ z;(^Dr%6p+QhE473G62?L^T{&S2^UB8^~fFHE0@wP^b_T#h%rn7^=(?yQf+N!)<~#c zB&mh#W%khdZrGJgs@ixb%h?ad2HG&$G8+QXR6zbUk;$(r4F#>F^1>Br!mAfDkRR@D z!K|#|oQj<FEnak?Kq3<@2Yk@3?uUAF%MKQp-ri)?dltM&Nb;3zDJ4aCuLXozF6<uf zjk9k;7aVNl4ZD6nf7y}cM-NiW-L5ky9{!^25Nx_5fRi!>Ah)DlY~3|CG`+4@opGIM z^i^Z4rXu>d*NVX<Si0H~gd6A-MvG~P(lUxp9Xw5PA2rLSX({wc=au31fwxTVQh~Ia zt5qVs=~AMZa#%%;=wcXperc&(evRpI)^$1=_Y%I05s*G{QuhuY-NY-QieofB`^yhI zg_~}T?ri%R_{;XV%%zN?*DE+(@Ym8gooZ7%{3sm<dlkfHY_(m$*lMH1I#=-$%lN2o zli}b)GkLuqT(<UE0U$x+&|^Js4D=Da)tUC`7`)_vE%+%BcLx#oTSvvE)8}de<TRtI zi2+49xnZlr^?%jCke*=-tgK+O4x%c6sSAykJg_uqqf-4w@Kj695uo3f*_Ruzb<=v< z{?$gUn)_|7tJb?F1>ngpKK<ky<s<PQz}KKn?8pSD$t|n$<geGgwo|)k4OmfB`jQw9 z?0LU-=VqjfzQPep9wm;ty@1!dk?YB5K)kxIBeI*=D**1)6&UjPIDQuV)l#&lKlF|y zkZ?|Hp2C1&@4`16-G-e&y?_ao%s(0W`C;w^HCNL1QmXc!cE_q;;FDL&w3`&}F9^8c zFU^t}+D1~F(Bj{MbCk!ltfB_Qs|ss8^46lwJ-(QEQfUbUYFhKkq`r_2x}jqNNm#3H zqTj9TpQBK`{gQ6-<Io|Jz-BrR2elDAuF@({MtJm^6C6H?DT1wa!CiXcF2=#y7k@D2 zd9%GOjfa*m^AiNepX8EdxcF&i_+k&&-xa|kW@}(tP*>I2U_*K}S3_}=T|7q^w`XB` z2D5mfvT(`vMwh8DGJql?=LI15;DsNI&n^nhYwgI&-{a#V-{;<=cJWiZ5HEkDY(4jD zc2?xCALMIz@)_iwDG(vRJQ8kP<l+Vwoy?kB5BPyiEC_R&2<|7Wee(Y$j>7xC8|N5n z-mb8AOpEdA->ZPnh_c<&o3Jg+X;AwynF(`1Ihpp<naOdzTu&{<jq6!k7HV>9xt|hy zu7!?dLSahdVg=JpZk#xq{L7i0<LiK0GU*LgdG1N4P))+NkQk48m_zc2zKcI0^I35+ zfbG1(u$`5N%GHCWUY*F)hG3~VBWeFl!~Kc#P@Uf0%|(ECR|6*{X8Rbm>Y3(N`w+}g zn}vYJKK$VH`HhCBK)g%Cw8flu&$)8+Ef5m{+5}|bRYsP&t~Jk0TLEENO=yT3nr<lm z@Zi~Hi?v*t)~m%x#XyA2@56Zi?f$WQ(xOpQ+m+uuZcE}tNvin=5=Yw)-cK$;Zpr*K zVdb5N_lpZ<ym>vyfYKk*n#uYjkyI9wC{A(mO8ae&B%;9#dTh)|_V0}&D>^xO(UZ2e z2{_|CZ)7#U(3yWf5i9##7`c79OX{6Y8(moRVE~tW6|XopYg$JLlxm|Q3X{o#=h{Lt zyCavxXR*2;2qGJ^XJ;nKfb^TpVwPUUM{br*(tWeRu{4Id4v!3gY2#K~T^)u_Zer}E zn_7xjY>yK@ouN|9;O0P^ZRT#CcRfGYf%F#Vs;VRb^a|0p^Z(QZ<vLJSPjez4r24#( z;S+YY4APm^cJ-}u+PmVLPRVEbwe<_*-WNP?*8Y9+%RT={Z+mnpmN)Z8JHzNX-t>;v z_h#9VcRfJ+!d^?N=4N?P&mP&Il_OwCQMpD;0zHfk@ay$}8TVzgO~mUpV_LitM@Q8z z?9S+w#)-R7Wl<Jqtbu^+Oi~n!$nu+s02ZOf<4j@X%-U%cf9f~&-C(#s-KB6=hXw{6 z3>o;vsZz9D@#<Cq3+cao2&D#!x?aJ@En0faklj*k8?qGY2W7NqF`8U&<O2d0SAO`v z-@`NS^|91k#Ix*iAf7JVoHz*|f-VJAULIBVzI7XOq%9PKEJ{U_o_Blv5g#1q{%)Yt zuHV`t7OdsEDT-d&T)1I8rwj4MqY%~C2oLVJ2;Ey#pY)Y@iCf}yrVI*5khguM+aJ?D zi8k08g0MGr24%YWdh&l++)v%RzPJERPF}`GVXT3;Q~SQ3);N&{uLjx_s7gcdjOIR4 zUR=<qVZ)snd>pj>8Cxn}a*?q4(u0!Y^j5C?U$fc+Q?CL<P4o5nci5lNCx*piDO7p3 zw7s)X1*lLp08=l03J&gycNVzHUhT)Dhg(-$$ObXIk$=&)DcV)O9^w49G9x3O8?~ET z{YEEdco)~jSjott&Coi_j{th-KghVYJ&c8~|2d#UD0n&g5@E1~|8LV>`w3ANg?&_1 z?FycB-DhP^mg2^y?@lqA_P>^f{|QRaU~igN=blSkS9CZwMjy&9MHhfv%{2!{eynf` z$pvnj!j!PJ^$UUrQOmKo@@YFMK}y`iI9Na(F-H2m)K^;G@|^OUI0RWuw$|>Zi>>4v zq8|c(foEJT-K`qR-DS<QQpmplNi`({O8SNeecMxWE%*Vy&h5(LR9K#;zv?ll#_(?x z@tC)@f+VPd`nOgyNryPs{OP1L^$HKVzP5{%Px7Qs(0FV1;_w5{2P}96%1Uie<Y~-@ zaV1)4xxWX785&z+zFv!TU)IztsnpwkC7^~V_b@ZTxQPf0QOuT=i%@E1tbEHNlEi7s zoMB^98n7I2#oEYI6n)O`vX0@jN3DhjcO_<+6f7pkRp%uamx1%N|ASCRpqYo?Jp`M& z!{6CwnC}RG9~=ygpHMjJJT!0U#5q{yUgh*Fp_s?BMbo?NS77C+qRn#5fHzNU%5x!W zZ27tg+u5U}YF4ON-9EEIg;mZ}8Hdm1v;2C*jqtCevErWh+ssQ25B{JQ^ON0tVXuaF zXC>&5P&JlKeXe6o?f<I!hD$G|QT#FL5|x<?czG-ItCa-8l)GerV?s5785`=lA{;M+ zkeuiJ@dxim$-nmb<cPb^5%*<jm*n!Z;Hy(tf#{KpBsvss@``UdNeL4&-ImX1-t?!J zkKxc71wH`B4KphR*)XnGk9o6mOIxDHR+?w4(LyPrXRs11^*OHU9iD}rp4rDu+N}9% z3&J7~+$S9qTpc5vt8Cy!B6VPJ?;cB48kr<eOXpkmrY#+5l+wWb+jk9SJ?{0hLe;O6 z7wL*k_D|653^agS^OspkT2n08ZYVzPqj#Ilm)FSJ&AB#pN8(}Bt=d}2bcAlX+)?p0 zL1e1J9sq(0OKNiaIOhMY^R2Y0E}Lw7qrRI>)$qE9Lfsl2!ik}0GeaVk8W1YV42f9! zrDpRi_q@-CcyuXkqt%*k_=Sc09&?96Tu==56A9)J#}xMwb)PC2fO#x-Caabw>Rn0y z{HI2_IqLYwp=X|p=?Np~=<UJRjui>954+Ml?kfMhR7O0xujiI*!b{uTA~|{_q>bBp z=-{T8<|tDq3CTI;lW2D@h@1>&cH*BDa_y{)8j?pQ@ST4-bycb_leaSjIqXOg!I-dI zwNUCuLgX|9CoCb|R&9g{#A6D$#nUq#?A;pr8AdUx?+Mg??0rWBc7w@CmP8$GxdE}e zzHzq~`$CYEEw*mQui5d*E?e~uhB&}WX3EcR8?CKn>HfFzpYY*7uYx^#J!@o8sI_T# z<9>7j4!UEiu=RQ98@44ed!uGToSby}kzEY$x!v2ihKXiyj2);!CRiFr>vI6V7wV&~ zpF$-W<*Q*jZKoda1CDyKwXd4AY%8NW?9?a@Y<jmp4Jb~hx@`Tnx)fT?5|=(2n7q?} zL+k?$%;k_^|2#bCLyFFc`<yhbT0Q+PD)1KLlcigl2(xq<{gAx`StVK9NBRT>y}T{I z8l%p<QwEx46v^x@>zl<xyp1Td;Ir1*>#*N&hVTtVAK9|*u$h3nx1=6hC?%PgdUH$1 zgU4B#9LvX`-GA_Cqke<q(>n?Okqp8ZYE~ymacnbL{jExU#!eyp{f&~&7KrUZ(@I$| z*^;qz>W?cO%fU+}`r^A}yw+(=Jny@=CHlQvYr*sZn~<g>Mq?a}U+deU_vMDx=p%_S zeq4>UTvg|Ns%zPo!tKDK1jo!MHXs5k!B@$&Iw30U0NMQkIcpzN?DYb2*ymZtS+0tL z|7ZN81f&h|3Gcxa1-K}FIu}UC&Q5;*yA>^uZA?ny{4)}sFcUL|IrhZMoeaaeLpX1W z;w-j*w2UV02#G(CdabMIPx^&kQ$y&xwe3xF%dn^Zx=-2<iAp6|^VK;0&iq;2n+I;U z#cse&zt)^-b;`eH{a<!3_qfJTs!iDCVtT~KQKt$aH7T8tl-f5_r4kH4qq~yrdgL&c zkJ}49)If>>R>1)!wONiAju(G&X}wa&e3M9e@y*jUOnq=Da;aeY3U?)V#0wlC4b>zD zYg41RpwFSrtQS5)@i*U(!g@ZK3qpF#ekkwhzv36}MIRhhvDIX_{kvF-w-i!URUy&1 zZ(GVLd13Rxa`n}=54^&rT5t6b{-~*ny>~1i9TpVYZ!wNEQFHytZc3QlVJihZ*&r<0 z+pVZ@C%9pIE7QsXE_Wp;lEw)G|JA?Qr?Kw4JQlq%?zBMH%<rqGFBhcVOuaWs7im>3 zQ6JVx`e*&{{{B6UR&7EDCoSR>Ia4d+4zz1c4JkkrJzYuTQJ&qreUvcDtG1l9xOB(^ zrc~7sn*MO0arcJ>5^dNJY0Dd`dhvNp0zvzsHa0TO=<$99GqoAfRNXiNXf(!*IEnmP zr8tbeCb^b*$m_VvC6g&*bjtGqCpo-Ox`{)A5lw;yGH&b+sGu3`p#9`TQsPue)fUR< z&`V+$NVA8gzWIS^yrU#20h!!^9m?LW?#vpgS2M(T!&ts|UtGu)ibm12hjYQH3>Qh9 z&4Gq1i{aI05C~XPmovUh_g2b!EvwQ{JyK_xNk>x&ulaux-hYGOKQD&wmOXCwH|wi# z>ZA;Hh-sqvZJyfmPTTsim;OTNb>l5w$r>9)Wr+8Y<E4v4YxmC&%(mx%tN_kOE8Ye< zkXQ4yxUj#M>$ptx_kA@kv@KugIc@7s51}<>$GYQ56)Ki`;R>$*#5fm%=a3oHXA{2r ze(gE^q7@6M#NOKDk?lQ!5v+|OS})<3Q$-XinH=iC%oZ$K*8mR&EYajonfKIB3qJw` zEh)zGw95_xD1yBg7v#8+sMaF^CW02x=1c30XZN3`1|S3xsHPU&%AtideyTVxW^pmN zC+CEKwcWLdiPK%WA><$Zk_5~1-n5;YlQ3aqhz90Q0Xyfxt(2@|0?VzodBvU=`;yT2 z97iv%rVlOZAzEh~-1FWqO$aNkyaLq>*<|?mOs(GR3FT392W{moZ;HD&I)GzNjoj|$ z6#h>D!~{G0fG#7m_{NwN;WBo+FBYH&u^ak!z=N*W+uPe4om4A>NYVy$G_k2Ag|NAO z1wvW{1B!~LG<?~xZCj+`QiJu+^DH%mVP9T8JGVVNJR;fE6}Y{@+QxZmTcl%iyWfB# z4>ZRF@(ZG@sG?88UFOlrO7R5%3$!Z0a^39~K+xO1U`7jU^5z(@hy;s>te8_ua9x0Q zn(l}+Nj+K~g&_``wy#um;Qzq?f&T;l2mTNIANW7;|84Ov|JCpRS8NUz9_W9coCNv_ z?xl52VVa7r#b5F5PRa<1$EH=S_I<UR)$HsQrfD>dUhr^0@&t!&FBRvJ)_Pg&>TFXt z;Him`;9z20Fs(B_&VW(!)c3<MEbQjBipuz$FG~gfu2)j!M&sQVJFJ{h8rh|rn_)rI zI@4qXgv9Y$W}YVMx_3?3)3)vGXRRAh&5py9ShWSJ0%vfT?b{W1W&^=I<8Gp;t#v6k zT$5489f<F-u<l`=ms(dGc`7A`>M{jzBor(F1Dq}caD#skevw=^xy`W{jSaVH-|RF^ zSxJ<1s$c_lG4y9pCj12Kt805nHipE(fmI(remtK}i2v8umpU5=fE&6Kz!tKfD5{zY zco!fp1V_e}JZR%cv(4G}(kNtwr>75|O)au*I`|}b#FsjqhIe!NJ-zeaOcKF`RqzgX zM*JenjN>g8sc(CV9npdUo7l-3T~TbOt`ob-!+y>EHiCg>^;n^+rmplETdVk@A`cVT zA1`NM{`03FQ?x4Ad8O#s9fGCv7?9O}iuG`+X$PzYMAI#+5>jAk1=DDL4Zw~OY#s>1 zQelFQX}adIQepTSq~Q#Jb(w>Y{qR)gW)Aw04L6*=W|uYVCY8oiUWoVZpBMokVRv`n z|G@u&{{#OA{tx^g_&@OfZSgOE^Xp%o&t1c5t;L4bTyJavWpxv!`N2~II|QWnuI)Ob zYv3~hzdJ|?XBxHj0LyR7#yX)CPY)MQMfjp;<xK?l;shk6@+{d*R|{(CgT2Amkqx}y zezs|wEUjZ%T2yf?EIT=h(zGq0hzQwpKZM~Cg~l%Iy0UYblTN`uXz@~3tYm694^}G! zGX^$M^Kb~z0Yl5p%LR~EWnCTsk+PLRtaf%gdj)DR<A|^<mU)ccJwN~Ka=t9H{rdIg zeQ@i(?_gDdCm@^|1%gG|$GR>JB;mJUhwT5L@?^+5I~?-#K5{H_o>s$tlw9%!2JAO% zwPewi-QXC{!xhKIj#2<sKw-^!!m=OENDVKquN+K;h@IEg7?RE1n^t2b-lr^M<QYq{ z0_g|Dx~|6>sjTTl)0}n}@N`7N{W=1DLw7kpe!!Zsa-=pa8*m(NH%XbHdb1Xf#@^W+ z0!Yl(Z&WF*q+t}rJ+X~J$AAkhsNVDQV?(l=i7Q)eikH_fxBDBC;`#gl3*YY74ymO- zu^WR8?-b)qS)xc+#&MP};#uWZXjqxtS8$~83O9k&BTMF?%87MjbR|<Ouz^f>K3ytK zDO-8yV;5vhR^p`+p+(ZmL}s%bYB1U6cA4RPB%6{$xxo07C&85m{tx^g_&@M};Qzq? jf&T;l-xmM>p8x{@D(Mktb)u`N00000NkvXXu0mjf(?NUb diff --git a/vendor/scrivo/highlight.php/styles/codepen-embed.css b/vendor/scrivo/highlight.php/styles/codepen-embed.css deleted file mode 100644 index 195c4a078..000000000 --- a/vendor/scrivo/highlight.php/styles/codepen-embed.css +++ /dev/null @@ -1,60 +0,0 @@ -/* - codepen.io Embed Theme - Author: Justin Perry <http://github.com/ourmaninamsterdam> - Original theme - https://github.com/chriskempson/tomorrow-theme -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #222; - color: #fff; -} - -.hljs-comment, -.hljs-quote { - color: #777; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-regexp, -.hljs-meta, -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-params, -.hljs-symbol, -.hljs-bullet, -.hljs-link, -.hljs-deletion { - color: #ab875d; -} - -.hljs-section, -.hljs-title, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-type, -.hljs-attribute { - color: #9b869b; -} - -.hljs-string, -.hljs-keyword, -.hljs-selector-tag, -.hljs-addition { - color: #8f9c6c; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/color-brewer.css b/vendor/scrivo/highlight.php/styles/color-brewer.css deleted file mode 100644 index 7934d986a..000000000 --- a/vendor/scrivo/highlight.php/styles/color-brewer.css +++ /dev/null @@ -1,71 +0,0 @@ -/* - -Colorbrewer theme -Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org> -Ported by Fabrício Tavares de Oliveira - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #fff; -} - -.hljs, -.hljs-subst { - color: #000; -} - -.hljs-string, -.hljs-meta, -.hljs-symbol, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition { - color: #756bb1; -} - -.hljs-comment, -.hljs-quote { - color: #636363; -} - -.hljs-number, -.hljs-regexp, -.hljs-literal, -.hljs-bullet, -.hljs-link { - color: #31a354; -} - -.hljs-deletion, -.hljs-variable { - color: #88f; -} - - - -.hljs-keyword, -.hljs-selector-tag, -.hljs-title, -.hljs-section, -.hljs-built_in, -.hljs-doctag, -.hljs-type, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-strong { - color: #3182bd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-attribute { - color: #e6550d; -} diff --git a/vendor/scrivo/highlight.php/styles/darcula.css b/vendor/scrivo/highlight.php/styles/darcula.css deleted file mode 100644 index 4c734f1cd..000000000 --- a/vendor/scrivo/highlight.php/styles/darcula.css +++ /dev/null @@ -1,74 +0,0 @@ -/* - -Darcula color scheme from the JetBrains family of IDEs - -*/ - - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #2b2b2b; - color: #bababa; -} - -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-quote, -.hljs-link, -.hljs-number, -.hljs-regexp, -.hljs-literal { - color: #6896ba; -} - -.hljs-code, -.hljs-selector-class { - color: #a6e22e; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-section, -.hljs-attribute, -.hljs-name, -.hljs-variable { - color: #cb7832; -} - -.hljs-params { - color: #b9b9b9; -} - -.hljs-string { - color: #6a8759; -} - -.hljs-subst, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-symbol, -.hljs-selector-id, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition { - color: #e0c46c; -} - -.hljs-comment, -.hljs-deletion, -.hljs-meta { - color: #7f7f7f; -} diff --git a/vendor/scrivo/highlight.php/styles/dark.css b/vendor/scrivo/highlight.php/styles/dark.css deleted file mode 100644 index b4724f5f5..000000000 --- a/vendor/scrivo/highlight.php/styles/dark.css +++ /dev/null @@ -1,63 +0,0 @@ -/* - -Dark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #444; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-section, -.hljs-link { - color: white; -} - -.hljs, -.hljs-subst { - color: #ddd; -} - -.hljs-string, -.hljs-title, -.hljs-name, -.hljs-type, -.hljs-attribute, -.hljs-symbol, -.hljs-bullet, -.hljs-built_in, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #d88; -} - -.hljs-comment, -.hljs-quote, -.hljs-deletion, -.hljs-meta { - color: #777; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-title, -.hljs-section, -.hljs-doctag, -.hljs-type, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/darkula.css b/vendor/scrivo/highlight.php/styles/darkula.css deleted file mode 100644 index f4646c3c5..000000000 --- a/vendor/scrivo/highlight.php/styles/darkula.css +++ /dev/null @@ -1,6 +0,0 @@ -/* - Deprecated due to a typo in the name and left here for compatibility purpose only. - Please use darcula.css instead. -*/ - -@import url('darcula.css'); diff --git a/vendor/scrivo/highlight.php/styles/default.css b/vendor/scrivo/highlight.php/styles/default.css deleted file mode 100644 index f1bfade31..000000000 --- a/vendor/scrivo/highlight.php/styles/default.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - -Original highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; -} - - -/* Base color: saturation 0; */ - -.hljs, -.hljs-subst { - color: #444; -} - -.hljs-comment { - color: #888888; -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold; -} - - -/* User color: hue: 0 */ - -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #880000; -} - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060; -} - - -/* Language color: hue: 90; */ - -.hljs-literal { - color: #78A960; -} - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; -} - - -/* Meta color: hue: 200 */ - -.hljs-meta { - color: #1f7199; -} - -.hljs-meta-string { - color: #4d99bf; -} - - -/* Misc effects */ - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/docco.css b/vendor/scrivo/highlight.php/styles/docco.css deleted file mode 100644 index db366be37..000000000 --- a/vendor/scrivo/highlight.php/styles/docco.css +++ /dev/null @@ -1,97 +0,0 @@ -/* -Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #000; - background: #f8f8ff; -} - -.hljs-comment, -.hljs-quote { - color: #408080; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-subst { - color: #954121; -} - -.hljs-number { - color: #40a070; -} - -.hljs-string, -.hljs-doctag { - color: #219161; -} - -.hljs-selector-id, -.hljs-selector-class, -.hljs-section, -.hljs-type { - color: #19469d; -} - -.hljs-params { - color: #00f; -} - -.hljs-title { - color: #458; - font-weight: bold; -} - -.hljs-tag, -.hljs-name, -.hljs-attribute { - color: #000080; - font-weight: normal; -} - -.hljs-variable, -.hljs-template-variable { - color: #008080; -} - -.hljs-regexp, -.hljs-link { - color: #b68; -} - -.hljs-symbol, -.hljs-bullet { - color: #990073; -} - -.hljs-built_in, -.hljs-builtin-name { - color: #0086b3; -} - -.hljs-meta { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/dracula.css b/vendor/scrivo/highlight.php/styles/dracula.css deleted file mode 100644 index d591db680..000000000 --- a/vendor/scrivo/highlight.php/styles/dracula.css +++ /dev/null @@ -1,76 +0,0 @@ -/* - -Dracula Theme v1.2.0 - -https://github.com/zenorocha/dracula-theme - -Copyright 2015, All rights reserved - -Code licensed under the MIT license -http://zenorocha.mit-license.org - -@author Éverton Ribeiro <nuxlli@gmail.com> -@author Zeno Rocha <hi@zenorocha.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #282a36; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-section, -.hljs-link { - color: #8be9fd; -} - -.hljs-function .hljs-keyword { - color: #ff79c6; -} - -.hljs, -.hljs-subst { - color: #f8f8f2; -} - -.hljs-string, -.hljs-title, -.hljs-name, -.hljs-type, -.hljs-attribute, -.hljs-symbol, -.hljs-bullet, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #f1fa8c; -} - -.hljs-comment, -.hljs-quote, -.hljs-deletion, -.hljs-meta { - color: #6272a4; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-title, -.hljs-section, -.hljs-doctag, -.hljs-type, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/far.css b/vendor/scrivo/highlight.php/styles/far.css deleted file mode 100644 index 2b3f87b56..000000000 --- a/vendor/scrivo/highlight.php/styles/far.css +++ /dev/null @@ -1,71 +0,0 @@ -/* - -FAR Style (c) MajestiC <majestic2k@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #000080; -} - -.hljs, -.hljs-subst { - color: #0ff; -} - -.hljs-string, -.hljs-attribute, -.hljs-symbol, -.hljs-bullet, -.hljs-built_in, -.hljs-builtin-name, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition { - color: #ff0; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-section, -.hljs-type, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-variable { - color: #fff; -} - -.hljs-comment, -.hljs-quote, -.hljs-doctag, -.hljs-deletion { - color: #888; -} - -.hljs-number, -.hljs-regexp, -.hljs-literal, -.hljs-link { - color: #0f0; -} - -.hljs-meta { - color: #008080; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-title, -.hljs-section, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/foundation.css b/vendor/scrivo/highlight.php/styles/foundation.css deleted file mode 100644 index 67c6e1015..000000000 --- a/vendor/scrivo/highlight.php/styles/foundation.css +++ /dev/null @@ -1,89 +0,0 @@ -/* -Description: Foundation 4 docs style for highlight.js -Author: Dan Allen <dan.j.allen@gmail.com> -Website: http://foundation.zurb.com/docs/ -Version: 1.0 -Date: 2013-04-02 -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #eee; - color: black; -} - -.hljs-link, -.hljs-emphasis, -.hljs-attribute, -.hljs-addition { - color: #070; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong, -.hljs-string, -.hljs-deletion { - color: #d14; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-quote, -.hljs-comment { - color: #998; - font-style: italic; -} - -.hljs-section, -.hljs-title { - color: #900; -} - -.hljs-class .hljs-title, -.hljs-type { - color: #458; -} - -.hljs-variable, -.hljs-template-variable { - color: #336699; -} - -.hljs-bullet { - color: #997700; -} - -.hljs-meta { - color: #3344bb; -} - -.hljs-code, -.hljs-number, -.hljs-literal, -.hljs-keyword, -.hljs-selector-tag { - color: #099; -} - -.hljs-regexp { - background-color: #fff0ff; - color: #880088; -} - -.hljs-symbol { - color: #990073; -} - -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #007700; -} diff --git a/vendor/scrivo/highlight.php/styles/github-gist.css b/vendor/scrivo/highlight.php/styles/github-gist.css deleted file mode 100644 index 18240c888..000000000 --- a/vendor/scrivo/highlight.php/styles/github-gist.css +++ /dev/null @@ -1,79 +0,0 @@ -/** - * GitHub Gist Theme - * Author : Anthony Attard - https://github.com/AnthonyAttard - * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro - */ - -.hljs { - display: block; - background: white; - padding: 0.5em; - color: #333333; - overflow-x: auto; -} - -.hljs-comment, -.hljs-meta { - color: #969896; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-strong, -.hljs-emphasis, -.hljs-quote { - color: #df5000; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-type { - color: #d73a49; -} - -.hljs-literal, -.hljs-symbol, -.hljs-bullet, -.hljs-attribute { - color: #0086b3; -} - -.hljs-section, -.hljs-name { - color: #63a35c; -} - -.hljs-tag { - color: #333333; -} - -.hljs-title, -.hljs-attr, -.hljs-selector-id, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #6f42c1; -} - -.hljs-addition { - color: #55a532; - background-color: #eaffea; -} - -.hljs-deletion { - color: #bd2c00; - background-color: #ffecec; -} - -.hljs-link { - text-decoration: underline; -} - -.hljs-number { - color: #005cc5; -} - -.hljs-string { - color: #032f62; -} diff --git a/vendor/scrivo/highlight.php/styles/github.css b/vendor/scrivo/highlight.php/styles/github.css deleted file mode 100644 index 791932b87..000000000 --- a/vendor/scrivo/highlight.php/styles/github.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #f8f8f8; -} - -.hljs-comment, -.hljs-quote { - color: #998; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: #333; - font-weight: bold; -} - -.hljs-number, -.hljs-literal, -.hljs-variable, -.hljs-template-variable, -.hljs-tag .hljs-attr { - color: #008080; -} - -.hljs-string, -.hljs-doctag { - color: #d14; -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: #900; - font-weight: bold; -} - -.hljs-subst { - font-weight: normal; -} - -.hljs-type, -.hljs-class .hljs-title { - color: #458; - font-weight: bold; -} - -.hljs-tag, -.hljs-name, -.hljs-attribute { - color: #000080; - font-weight: normal; -} - -.hljs-regexp, -.hljs-link { - color: #009926; -} - -.hljs-symbol, -.hljs-bullet { - color: #990073; -} - -.hljs-built_in, -.hljs-builtin-name { - color: #0086b3; -} - -.hljs-meta { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/gml.css b/vendor/scrivo/highlight.php/styles/gml.css deleted file mode 100644 index 7fff0b877..000000000 --- a/vendor/scrivo/highlight.php/styles/gml.css +++ /dev/null @@ -1,78 +0,0 @@ -/* - -GML Theme - Meseta <meseta@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #222222; - color: #C0C0C0; -} - -.hljs-keyword { - color: #FFB871; - font-weight: bold; -} - -.hljs-built_in { - color: #FFB871; -} - -.hljs-literal { - color: #FF8080; -} - -.hljs-symbol { - color: #58E55A; -} - -.hljs-comment { - color: #5B995B; -} - -.hljs-string { - color: #FFFF00; -} - -.hljs-number { - color: #FF8080; -} - -.hljs-attribute, -.hljs-selector-tag, -.hljs-doctag, -.hljs-name, -.hljs-bullet, -.hljs-code, -.hljs-addition, -.hljs-regexp, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-type, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion, -.hljs-title, -.hljs-section, -.hljs-function, -.hljs-meta-keyword, -.hljs-meta, -.hljs-subst { - color: #C0C0C0; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/googlecode.css b/vendor/scrivo/highlight.php/styles/googlecode.css deleted file mode 100644 index 884ad6353..000000000 --- a/vendor/scrivo/highlight.php/styles/googlecode.css +++ /dev/null @@ -1,89 +0,0 @@ -/* - -Google Code style (c) Aahan Krish <geekpanth3r@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: white; - color: black; -} - -.hljs-comment, -.hljs-quote { - color: #800; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-section, -.hljs-title, -.hljs-name { - color: #008; -} - -.hljs-variable, -.hljs-template-variable { - color: #660; -} - -.hljs-string, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-regexp { - color: #080; -} - -.hljs-literal, -.hljs-symbol, -.hljs-bullet, -.hljs-meta, -.hljs-number, -.hljs-link { - color: #066; -} - -.hljs-title, -.hljs-doctag, -.hljs-type, -.hljs-attr, -.hljs-built_in, -.hljs-builtin-name, -.hljs-params { - color: #606; -} - -.hljs-attribute, -.hljs-subst { - color: #000; -} - -.hljs-formula { - background-color: #eee; - font-style: italic; -} - -.hljs-selector-id, -.hljs-selector-class { - color: #9B703F -} - -.hljs-addition { - background-color: #baeeba; -} - -.hljs-deletion { - background-color: #ffc8bd; -} - -.hljs-doctag, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/gradient-dark.css b/vendor/scrivo/highlight.php/styles/gradient-dark.css deleted file mode 100644 index ca6d001b4..000000000 --- a/vendor/scrivo/highlight.php/styles/gradient-dark.css +++ /dev/null @@ -1,122 +0,0 @@ -/* - -Gradient Dark (c) Samia Ali <samiaab1990@gmail.com> - -*/ - -.hljs -{ -display: block; -overflow-x: auto; -padding: 0.5em; -background: rgb(80,31,122); -background: linear-gradient(166deg, rgba(80,31,122,1) 0%, rgba(40,32,179,1) 80%); -color:#e7e4eb; -} - -.hljs-subtr{ - color:#e7e4eb; -} - -.hljs-doctag, -.hljs-meta, -.hljs-comment, -.hljs-quote -{ - color:#af8dd9; -} - -.hljs-selector-tag, -.hljs-selector-id, -.hljs-template-tag, -.hljs-regexp, -.hljs-attr, -.hljs-tag -{ - color:#AEFBFF; -} - -.hljs-params, -.hljs-selector-class, -.hljs-bullet - -{ - color:#F19FFF; - -} - -.hljs-keyword, -.hljs-section, -.hljs-meta-keyword, -.hljs-symbol, -.hljs-type - -{ - - color:#17fc95; -} - -.hljs-addition, -.hljs-number, -.hljs-link -{ - color:#C5FE00; -} - - -.hljs-string -{ - color: #38c0ff; -} - - -.hljs-attribute, -.hljs-addition -{ - color:#E7FF9F; -} - -.hljs-variable, -.hljs-template-variable - -{ - color:#E447FF; -} - -.hljs-builtin-name, -.hljs-built_in, -.hljs-formula, -.hljs-name, -.hljs-title, -.hljs-class, -.hljs-function -{ - color: #FFC800; - -} - -.hljs-selector-pseudo, -.hljs-deletion, -.hljs-literal -{ - color:#FF9E44; - -} - -.hljs-emphasis, -.hljs-quote -{ - font-style:italic; -} - -.hljs-params, -.hljs-selector-class, -.hljs-strong, -.hljs-selector-tag, -.hljs-selector-id, -.hljs-template-tag, -.hljs-section, -.hljs-keyword -{ - font-weight:bold; -} diff --git a/vendor/scrivo/highlight.php/styles/grayscale.css b/vendor/scrivo/highlight.php/styles/grayscale.css deleted file mode 100644 index 5376f3406..000000000 --- a/vendor/scrivo/highlight.php/styles/grayscale.css +++ /dev/null @@ -1,101 +0,0 @@ -/* - -grayscale style (c) MY Sun <simonmysun@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #fff; -} - -.hljs-comment, -.hljs-quote { - color: #777; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: #333; - font-weight: bold; -} - -.hljs-number, -.hljs-literal { - color: #777; -} - -.hljs-string, -.hljs-doctag, -.hljs-formula { - color: #333; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat; -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: #000; - font-weight: bold; -} - -.hljs-subst { - font-weight: normal; -} - -.hljs-class .hljs-title, -.hljs-type, -.hljs-name { - color: #333; - font-weight: bold; -} - -.hljs-tag { - color: #333; -} - -.hljs-regexp { - color: #333; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link { - color: #000; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; -} - -.hljs-built_in, -.hljs-builtin-name { - color: #000; - text-decoration: underline; -} - -.hljs-meta { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - color: #fff; - background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; -} - -.hljs-addition { - color: #000; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/gruvbox-dark.css b/vendor/scrivo/highlight.php/styles/gruvbox-dark.css deleted file mode 100644 index f563811a8..000000000 --- a/vendor/scrivo/highlight.php/styles/gruvbox-dark.css +++ /dev/null @@ -1,108 +0,0 @@ -/* - -Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #282828; -} - -.hljs, -.hljs-subst { - color: #ebdbb2; -} - -/* Gruvbox Red */ -.hljs-deletion, -.hljs-formula, -.hljs-keyword, -.hljs-link, -.hljs-selector-tag { - color: #fb4934; -} - -/* Gruvbox Blue */ -.hljs-built_in, -.hljs-emphasis, -.hljs-name, -.hljs-quote, -.hljs-strong, -.hljs-title, -.hljs-variable { - color: #83a598; -} - -/* Gruvbox Yellow */ -.hljs-attr, -.hljs-params, -.hljs-template-tag, -.hljs-type { - color: #fabd2f; -} - -/* Gruvbox Purple */ -.hljs-builtin-name, -.hljs-doctag, -.hljs-literal, -.hljs-number { - color: #8f3f71; -} - -/* Gruvbox Orange */ -.hljs-code, -.hljs-meta, -.hljs-regexp, -.hljs-selector-id, -.hljs-template-variable { - color: #fe8019; -} - -/* Gruvbox Green */ -.hljs-addition, -.hljs-meta-string, -.hljs-section, -.hljs-selector-attr, -.hljs-selector-class, -.hljs-string, -.hljs-symbol { - color: #b8bb26; -} - -/* Gruvbox Aqua */ -.hljs-attribute, -.hljs-bullet, -.hljs-class, -.hljs-function, -.hljs-function .hljs-keyword, -.hljs-meta-keyword, -.hljs-selector-pseudo, -.hljs-tag { - color: #8ec07c; -} - -/* Gruvbox Gray */ -.hljs-comment { - color: #928374; -} - -/* Gruvbox Purple */ -.hljs-link_label, -.hljs-literal, -.hljs-number { - color: #d3869b; -} - -.hljs-comment, -.hljs-emphasis { - font-style: italic; -} - -.hljs-section, -.hljs-strong, -.hljs-tag { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/gruvbox-light.css b/vendor/scrivo/highlight.php/styles/gruvbox-light.css deleted file mode 100644 index ff45468eb..000000000 --- a/vendor/scrivo/highlight.php/styles/gruvbox-light.css +++ /dev/null @@ -1,108 +0,0 @@ -/* - -Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #fbf1c7; -} - -.hljs, -.hljs-subst { - color: #3c3836; -} - -/* Gruvbox Red */ -.hljs-deletion, -.hljs-formula, -.hljs-keyword, -.hljs-link, -.hljs-selector-tag { - color: #9d0006; -} - -/* Gruvbox Blue */ -.hljs-built_in, -.hljs-emphasis, -.hljs-name, -.hljs-quote, -.hljs-strong, -.hljs-title, -.hljs-variable { - color: #076678; -} - -/* Gruvbox Yellow */ -.hljs-attr, -.hljs-params, -.hljs-template-tag, -.hljs-type { - color: #b57614; -} - -/* Gruvbox Purple */ -.hljs-builtin-name, -.hljs-doctag, -.hljs-literal, -.hljs-number { - color: #8f3f71; -} - -/* Gruvbox Orange */ -.hljs-code, -.hljs-meta, -.hljs-regexp, -.hljs-selector-id, -.hljs-template-variable { - color: #af3a03; -} - -/* Gruvbox Green */ -.hljs-addition, -.hljs-meta-string, -.hljs-section, -.hljs-selector-attr, -.hljs-selector-class, -.hljs-string, -.hljs-symbol { - color: #79740e; -} - -/* Gruvbox Aqua */ -.hljs-attribute, -.hljs-bullet, -.hljs-class, -.hljs-function, -.hljs-function .hljs-keyword, -.hljs-meta-keyword, -.hljs-selector-pseudo, -.hljs-tag { - color: #427b58; -} - -/* Gruvbox Gray */ -.hljs-comment { - color: #928374; -} - -/* Gruvbox Purple */ -.hljs-link_label, -.hljs-literal, -.hljs-number { - color: #8f3f71; -} - -.hljs-comment, -.hljs-emphasis { - font-style: italic; -} - -.hljs-section, -.hljs-strong, -.hljs-tag { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/hopscotch.css b/vendor/scrivo/highlight.php/styles/hopscotch.css deleted file mode 100644 index 5934601a0..000000000 --- a/vendor/scrivo/highlight.php/styles/hopscotch.css +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Hopscotch - * by Jan T. Sott - * https://github.com/idleberg/Hopscotch - * - * This work is licensed under the Creative Commons CC0 1.0 Universal License - */ - -/* Comment */ -.hljs-comment, -.hljs-quote { - color: #989498; -} - -/* Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-link, -.hljs-deletion { - color: #dd464c; -} - -/* Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #fd8b19; -} - -/* Yellow */ -.hljs-class .hljs-title { - color: #fdcc59; -} - -/* Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #8fc13e; -} - -/* Aqua */ -.hljs-meta { - color: #149b93; -} - -/* Blue */ -.hljs-function, -.hljs-section, -.hljs-title { - color: #1290bf; -} - -/* Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #c85e7c; -} - -.hljs { - display: block; - overflow-x: auto; - background: #322931; - color: #b9b5b8; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/hybrid.css b/vendor/scrivo/highlight.php/styles/hybrid.css deleted file mode 100644 index 29735a189..000000000 --- a/vendor/scrivo/highlight.php/styles/hybrid.css +++ /dev/null @@ -1,102 +0,0 @@ -/* - -vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) - -*/ - -/*background color*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #1d1f21; -} - -/*selection color*/ -.hljs::selection, -.hljs span::selection { - background: #373b41; -} - -.hljs::-moz-selection, -.hljs span::-moz-selection { - background: #373b41; -} - -/*foreground color*/ -.hljs { - color: #c5c8c6; -} - -/*color: fg_yellow*/ -.hljs-title, -.hljs-name { - color: #f0c674; -} - -/*color: fg_comment*/ -.hljs-comment, -.hljs-meta, -.hljs-meta .hljs-keyword { - color: #707880; -} - -/*color: fg_red*/ -.hljs-number, -.hljs-symbol, -.hljs-literal, -.hljs-deletion, -.hljs-link { - color: #cc6666 -} - -/*color: fg_green*/ -.hljs-string, -.hljs-doctag, -.hljs-addition, -.hljs-regexp, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #b5bd68; -} - -/*color: fg_purple*/ -.hljs-attribute, -.hljs-code, -.hljs-selector-id { - color: #b294bb; -} - -/*color: fg_blue*/ -.hljs-keyword, -.hljs-selector-tag, -.hljs-bullet, -.hljs-tag { - color: #81a2be; -} - -/*color: fg_aqua*/ -.hljs-subst, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #8abeb7; -} - -/*color: fg_orange*/ -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-quote, -.hljs-section, -.hljs-selector-class { - color: #de935f; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/idea.css b/vendor/scrivo/highlight.php/styles/idea.css deleted file mode 100644 index 3bf1892bd..000000000 --- a/vendor/scrivo/highlight.php/styles/idea.css +++ /dev/null @@ -1,97 +0,0 @@ -/* - -Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #000; - background: #fff; -} - -.hljs-subst, -.hljs-title { - font-weight: normal; - color: #000; -} - -.hljs-comment, -.hljs-quote { - color: #808080; - font-style: italic; -} - -.hljs-meta { - color: #808000; -} - -.hljs-tag { - background: #efefef; -} - -.hljs-section, -.hljs-name, -.hljs-literal, -.hljs-keyword, -.hljs-selector-tag, -.hljs-type, -.hljs-selector-id, -.hljs-selector-class { - font-weight: bold; - color: #000080; -} - -.hljs-attribute, -.hljs-number, -.hljs-regexp, -.hljs-link { - font-weight: bold; - color: #0000ff; -} - -.hljs-number, -.hljs-regexp, -.hljs-link { - font-weight: normal; -} - -.hljs-string { - color: #008000; - font-weight: bold; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-formula { - color: #000; - background: #d0eded; - font-style: italic; -} - -.hljs-doctag { - text-decoration: underline; -} - -.hljs-variable, -.hljs-template-variable { - color: #660e7a; -} - -.hljs-addition { - background: #baeeba; -} - -.hljs-deletion { - background: #ffc8bd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/ir-black.css b/vendor/scrivo/highlight.php/styles/ir-black.css deleted file mode 100644 index bd4c755ed..000000000 --- a/vendor/scrivo/highlight.php/styles/ir-black.css +++ /dev/null @@ -1,73 +0,0 @@ -/* - IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru> -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #000; - color: #f8f8f8; -} - -.hljs-comment, -.hljs-quote, -.hljs-meta { - color: #7c7c7c; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-tag, -.hljs-name { - color: #96cbfe; -} - -.hljs-attribute, -.hljs-selector-id { - color: #ffffb6; -} - -.hljs-string, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-addition { - color: #a8ff60; -} - -.hljs-subst { - color: #daefa3; -} - -.hljs-regexp, -.hljs-link { - color: #e9c062; -} - -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-doctag { - color: #ffffb6; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-variable, -.hljs-template-variable, -.hljs-literal { - color: #c6c5fe; -} - -.hljs-number, -.hljs-deletion { - color:#ff73fd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/isbl-editor-dark.css b/vendor/scrivo/highlight.php/styles/isbl-editor-dark.css deleted file mode 100644 index 2f1d95dd5..000000000 --- a/vendor/scrivo/highlight.php/styles/isbl-editor-dark.css +++ /dev/null @@ -1,112 +0,0 @@ -/* - -ISBL Editor style dark color scheme (c) Dmitriy Tarasov <dimatar@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #404040; - color: #f0f0f0; -} - -/* Base color: saturation 0; */ - -.hljs, -.hljs-subst { - color: #f0f0f0; -} - -.hljs-comment { - color: #b5b5b5; - font-style: italic; -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - color: #f0f0f0; - font-weight: bold; -} - - -/* User color: hue: 0 */ - -.hljs-string { - color: #97bf0d; -} - -.hljs-type, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #f0f0f0; -} - -.hljs-title, -.hljs-section { - color: #df471e; -} - -.hljs-title>.hljs-built_in { - color: #81bce9; - font-weight: normal; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #e2c696; -} - -/* Language color: hue: 90; */ - -.hljs-built_in, -.hljs-literal { - color: #97bf0d; - font-weight: bold; -} - -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; -} - -.hljs-class { - color: #ce9d4d; - font-weight: bold; -} - -/* Meta color: hue: 200 */ - -.hljs-meta { - color: #1f7199; -} - -.hljs-meta-string { - color: #4d99bf; -} - - -/* Misc effects */ - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/isbl-editor-light.css b/vendor/scrivo/highlight.php/styles/isbl-editor-light.css deleted file mode 100644 index 5dee9ca03..000000000 --- a/vendor/scrivo/highlight.php/styles/isbl-editor-light.css +++ /dev/null @@ -1,111 +0,0 @@ -/* - -ISBL Editor style light color schemec (c) Dmitriy Tarasov <dimatar@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: white; - color: black; -} - -/* Base color: saturation 0; */ - -.hljs-subst { - color: black; -} - -.hljs-comment { - color: #555555; - font-style: italic; -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - color: #000000; - font-weight: bold; -} - - -/* User color: hue: 0 */ - -.hljs-string { - color: #000080; -} - -.hljs-type, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #000000; -} - -.hljs-title, -.hljs-section { - color: #fb2c00; -} - -.hljs-title>.hljs-built_in { - color: #008080; - font-weight: normal; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #5e1700; -} - -/* Language color: hue: 90; */ - -.hljs-built_in, -.hljs-literal { - color: #000080; - font-weight: bold; -} - -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; -} - -.hljs-class { - color: #6f1C00; - font-weight: bold; -} - -/* Meta color: hue: 200 */ - -.hljs-meta { - color: #1f7199; -} - -.hljs-meta-string { - color: #4d99bf; -} - - -/* Misc effects */ - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/kimbie.dark.css b/vendor/scrivo/highlight.php/styles/kimbie.dark.css deleted file mode 100644 index d139cb5d0..000000000 --- a/vendor/scrivo/highlight.php/styles/kimbie.dark.css +++ /dev/null @@ -1,74 +0,0 @@ -/* - Name: Kimbie (dark) - Author: Jan T. Sott - License: Creative Commons Attribution-ShareAlike 4.0 Unported License - URL: https://github.com/idleberg/Kimbie-highlight.js -*/ - -/* Kimbie Comment */ -.hljs-comment, -.hljs-quote { - color: #d6baad; -} - -/* Kimbie Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-meta { - color: #dc3958; -} - -/* Kimbie Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-deletion, -.hljs-link { - color: #f79a32; -} - -/* Kimbie Yellow */ -.hljs-title, -.hljs-section, -.hljs-attribute { - color: #f06431; -} - -/* Kimbie Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #889b4a; -} - -/* Kimbie Purple */ -.hljs-keyword, -.hljs-selector-tag, -.hljs-function { - color: #98676a; -} - -.hljs { - display: block; - overflow-x: auto; - background: #221a0f; - color: #d3af86; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/kimbie.light.css b/vendor/scrivo/highlight.php/styles/kimbie.light.css deleted file mode 100644 index 04ff6ed3a..000000000 --- a/vendor/scrivo/highlight.php/styles/kimbie.light.css +++ /dev/null @@ -1,74 +0,0 @@ -/* - Name: Kimbie (light) - Author: Jan T. Sott - License: Creative Commons Attribution-ShareAlike 4.0 Unported License - URL: https://github.com/idleberg/Kimbie-highlight.js -*/ - -/* Kimbie Comment */ -.hljs-comment, -.hljs-quote { - color: #a57a4c; -} - -/* Kimbie Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-meta { - color: #dc3958; -} - -/* Kimbie Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-deletion, -.hljs-link { - color: #f79a32; -} - -/* Kimbie Yellow */ -.hljs-title, -.hljs-section, -.hljs-attribute { - color: #f06431; -} - -/* Kimbie Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #889b4a; -} - -/* Kimbie Purple */ -.hljs-keyword, -.hljs-selector-tag, -.hljs-function { - color: #98676a; -} - -.hljs { - display: block; - overflow-x: auto; - background: #fbebd4; - color: #84613d; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/lightfair.css b/vendor/scrivo/highlight.php/styles/lightfair.css deleted file mode 100644 index b5c45e87c..000000000 --- a/vendor/scrivo/highlight.php/styles/lightfair.css +++ /dev/null @@ -1,88 +0,0 @@ -/* - -Lightfair style (c) Tristian Kelly <tristian.kelly560@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - /* TODO: background? */ -} - -.hljs-name { - color:#01a3a3; -} - -.hljs-tag,.hljs-meta { - color:#778899; -} - -.hljs, -.hljs-subst { - color: #444 -} - -.hljs-comment { - color: #888888 -} - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold -} - -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #4286f4 -} - -.hljs-title, -.hljs-section { - color: #4286f4; - font-weight: bold -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060 -} - -.hljs-literal { - color: #62bcbc -} - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #25c6c6 -} - -.hljs-meta-string { - color: #4d99bf -} - -.hljs-emphasis { - font-style: italic -} - -.hljs-strong { - font-weight: bold -} diff --git a/vendor/scrivo/highlight.php/styles/magula.css b/vendor/scrivo/highlight.php/styles/magula.css deleted file mode 100644 index b8003bf42..000000000 --- a/vendor/scrivo/highlight.php/styles/magula.css +++ /dev/null @@ -1,70 +0,0 @@ -/* -Description: Magula style for highligh.js -Author: Ruslan Keba <rukeba@gmail.com> -Website: http://rukeba.com/ -Version: 1.0 -Date: 2009-01-03 -Music: Aphex Twin / Xtal -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background-color: #f4f4f4; - color: black; -} - -.hljs-subst { - color: black; -} - -.hljs-string, -.hljs-title, -.hljs-symbol, -.hljs-bullet, -.hljs-attribute, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #050; -} - -.hljs-comment, -.hljs-quote { - color: #777; -} - -.hljs-number, -.hljs-regexp, -.hljs-literal, -.hljs-type, -.hljs-link { - color: #800; -} - -.hljs-deletion, -.hljs-meta { - color: #00e; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-doctag, -.hljs-title, -.hljs-section, -.hljs-built_in, -.hljs-tag, -.hljs-name { - font-weight: bold; - color: navy; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/mono-blue.css b/vendor/scrivo/highlight.php/styles/mono-blue.css deleted file mode 100644 index 24a35a3d8..000000000 --- a/vendor/scrivo/highlight.php/styles/mono-blue.css +++ /dev/null @@ -1,56 +0,0 @@ -/* - Five-color theme from a single blue hue. -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #eaeef3; - color: #00193a; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-title, -.hljs-section, -.hljs-doctag, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-comment { - color: #738191; -} - -.hljs-string, -.hljs-title, -.hljs-section, -.hljs-built_in, -.hljs-literal, -.hljs-type, -.hljs-addition, -.hljs-tag, -.hljs-quote, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #0048ab; -} - -.hljs-meta, -.hljs-subst, -.hljs-symbol, -.hljs-regexp, -.hljs-attribute, -.hljs-deletion, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-bullet { - color: #4c81c9; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/monokai-sublime.css b/vendor/scrivo/highlight.php/styles/monokai-sublime.css deleted file mode 100644 index 2864170da..000000000 --- a/vendor/scrivo/highlight.php/styles/monokai-sublime.css +++ /dev/null @@ -1,83 +0,0 @@ -/* - -Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #23241f; -} - -.hljs, -.hljs-tag, -.hljs-subst { - color: #f8f8f2; -} - -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-quote, -.hljs-number, -.hljs-regexp, -.hljs-literal, -.hljs-link { - color: #ae81ff; -} - -.hljs-code, -.hljs-title, -.hljs-section, -.hljs-selector-class { - color: #a6e22e; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-name, -.hljs-attr { - color: #f92672; -} - -.hljs-symbol, -.hljs-attribute { - color: #66d9ef; -} - -.hljs-params, -.hljs-class .hljs-title { - color: #f8f8f2; -} - -.hljs-string, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-selector-id, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-addition, -.hljs-variable, -.hljs-template-variable { - color: #e6db74; -} - -.hljs-comment, -.hljs-deletion, -.hljs-meta { - color: #75715e; -} diff --git a/vendor/scrivo/highlight.php/styles/monokai.css b/vendor/scrivo/highlight.php/styles/monokai.css deleted file mode 100644 index af24834a9..000000000 --- a/vendor/scrivo/highlight.php/styles/monokai.css +++ /dev/null @@ -1,71 +0,0 @@ -/* -Monokai style - ported by Luigi Maselli - http://grigio.org -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #272822; - color: #ddd; -} - -.hljs-tag, -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-strong, -.hljs-name { - color: #f92672; -} - -.hljs-code { - color: #66d9ef; -} - -.hljs-class .hljs-title { - color: white; -} - -.hljs-attribute, -.hljs-symbol, -.hljs-regexp, -.hljs-link { - color: #bf79db; -} - -.hljs-string, -.hljs-bullet, -.hljs-subst, -.hljs-title, -.hljs-section, -.hljs-emphasis, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #a6e22e; -} - -.hljs-comment, -.hljs-quote, -.hljs-deletion, -.hljs-meta { - color: #75715e; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-doctag, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-selector-id { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/night-owl.css b/vendor/scrivo/highlight.php/styles/night-owl.css deleted file mode 100644 index 45f45cd29..000000000 --- a/vendor/scrivo/highlight.php/styles/night-owl.css +++ /dev/null @@ -1,182 +0,0 @@ -/* - -Night Owl for highlight.js (c) Carl Baxter <carl@cbax.tech> - -An adaptation of Sarah Drasner's Night Owl VS Code Theme -https://github.com/sdras/night-owl-vscode-theme - -Copyright (c) 2018 Sarah Drasner - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #011627; - color: #d6deeb; -} - -/* General Purpose */ -.hljs-keyword { - color: #c792ea; - font-style: italic; -} -.hljs-built_in { - color: #addb67; - font-style: italic; -} -.hljs-type { - color: #82aaff; -} -.hljs-literal { - color: #ff5874; -} -.hljs-number { - color: #F78C6C; -} -.hljs-regexp { - color: #5ca7e4; -} -.hljs-string { - color: #ecc48d; -} -.hljs-subst { - color: #d3423e; -} -.hljs-symbol { - color: #82aaff; -} -.hljs-class { - color: #ffcb8b; -} -.hljs-function { - color: #82AAFF; -} -.hljs-title { - color: #DCDCAA; - font-style: italic; -} -.hljs-params { - color: #7fdbca; -} - -/* Meta */ -.hljs-comment { - color: #637777; - font-style: italic; -} -.hljs-doctag { - color: #7fdbca; -} -.hljs-meta { - color: #82aaff; -} -.hljs-meta-keyword { - color: #82aaff; -} -.hljs-meta-string { - color: #ecc48d; -} - -/* Tags, attributes, config */ -.hljs-section { - color: #82b1ff; -} -.hljs-tag, -.hljs-name, -.hljs-builtin-name { - color: #7fdbca; -} -.hljs-attr { - color: #7fdbca; -} -.hljs-attribute { - color: #80cbc4; -} -.hljs-variable { - color: #addb67; -} - -/* Markup */ -.hljs-bullet { - color: #d9f5dd; -} -.hljs-code { - color: #80CBC4; -} -.hljs-emphasis { - color: #c792ea; - font-style: italic; -} -.hljs-strong { - color: #addb67; - font-weight: bold; -} -.hljs-formula { - color: #c792ea; -} -.hljs-link { - color: #ff869a; -} -.hljs-quote { - color: #697098; - font-style: italic; -} - -/* CSS */ -.hljs-selector-tag { - color: #ff6363; -} - -.hljs-selector-id { - color: #fad430; -} - -.hljs-selector-class { - color: #addb67; - font-style: italic; -} - -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #c792ea; - font-style: italic; -} - -/* Templates */ -.hljs-template-tag { - color: #c792ea; -} -.hljs-template-variable { - color: #addb67; -} - -/* diff */ -.hljs-addition { - color: #addb67ff; - font-style: italic; -} - -.hljs-deletion { - color: #EF535090; - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/nord.css b/vendor/scrivo/highlight.php/styles/nord.css deleted file mode 100644 index 424038443..000000000 --- a/vendor/scrivo/highlight.php/styles/nord.css +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (c) 2017-present Arctic Ice Studio <development@arcticicestudio.com> - * Copyright (c) 2017-present Sven Greb <development@svengreb.de> - * - * Project: Nord highlight.js - * Version: 0.1.0 - * Repository: https://github.com/arcticicestudio/nord-highlightjs - * License: MIT - * References: - * https://github.com/arcticicestudio/nord - */ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #2E3440; -} - -.hljs, -.hljs-subst { - color: #D8DEE9; -} - -.hljs-selector-tag { - color: #81A1C1; -} - -.hljs-selector-id { - color: #8FBCBB; - font-weight: bold; -} - -.hljs-selector-class { - color: #8FBCBB; -} - -.hljs-selector-attr { - color: #8FBCBB; -} - -.hljs-selector-pseudo { - color: #88C0D0; -} - -.hljs-addition { - background-color: rgba(163, 190, 140, 0.5); -} - -.hljs-deletion { - background-color: rgba(191, 97, 106, 0.5); -} - -.hljs-built_in, -.hljs-type { - color: #8FBCBB; -} - -.hljs-class { - color: #8FBCBB; -} - -.hljs-function { - color: #88C0D0; -} - -.hljs-function > .hljs-title { - color: #88C0D0; -} - -.hljs-keyword, -.hljs-literal, -.hljs-symbol { - color: #81A1C1; -} - -.hljs-number { - color: #B48EAD; -} - -.hljs-regexp { - color: #EBCB8B; -} - -.hljs-string { - color: #A3BE8C; -} - -.hljs-title { - color: #8FBCBB; -} - -.hljs-params { - color: #D8DEE9; -} - -.hljs-bullet { - color: #81A1C1; -} - -.hljs-code { - color: #8FBCBB; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-formula { - color: #8FBCBB; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-link:hover { - text-decoration: underline; -} - -.hljs-quote { - color: #4C566A; -} - -.hljs-comment { - color: #4C566A; -} - -.hljs-doctag { - color: #8FBCBB; -} - -.hljs-meta, -.hljs-meta-keyword { - color: #5E81AC; -} - -.hljs-meta-string { - color: #A3BE8C; -} - -.hljs-attr { - color: #8FBCBB; -} - -.hljs-attribute { - color: #D8DEE9; -} - -.hljs-builtin-name { - color: #81A1C1; -} - -.hljs-name { - color: #81A1C1; -} - -.hljs-section { - color: #88C0D0; -} - -.hljs-tag { - color: #81A1C1; -} - -.hljs-variable { - color: #D8DEE9; -} - -.hljs-template-variable { - color: #D8DEE9; -} - -.hljs-template-tag { - color: #5E81AC; -} - -.abnf .hljs-attribute { - color: #88C0D0; -} - -.abnf .hljs-symbol { - color: #EBCB8B; -} - -.apache .hljs-attribute { - color: #88C0D0; -} - -.apache .hljs-section { - color: #81A1C1; -} - -.arduino .hljs-built_in { - color: #88C0D0; -} - -.aspectj .hljs-meta { - color: #D08770; -} - -.aspectj > .hljs-title { - color: #88C0D0; -} - -.bnf .hljs-attribute { - color: #8FBCBB; -} - -.clojure .hljs-name { - color: #88C0D0; -} - -.clojure .hljs-symbol { - color: #EBCB8B; -} - -.coq .hljs-built_in { - color: #88C0D0; -} - -.cpp .hljs-meta-string { - color: #8FBCBB; -} - -.css .hljs-built_in { - color: #88C0D0; -} - -.css .hljs-keyword { - color: #D08770; -} - -.diff .hljs-meta { - color: #8FBCBB; -} - -.ebnf .hljs-attribute { - color: #8FBCBB; -} - -.glsl .hljs-built_in { - color: #88C0D0; -} - -.groovy .hljs-meta:not(:first-child) { - color: #D08770; -} - -.haxe .hljs-meta { - color: #D08770; -} - -.java .hljs-meta { - color: #D08770; -} - -.ldif .hljs-attribute { - color: #8FBCBB; -} - -.lisp .hljs-name { - color: #88C0D0; -} - -.lua .hljs-built_in { - color: #88C0D0; -} - -.moonscript .hljs-built_in { - color: #88C0D0; -} - -.nginx .hljs-attribute { - color: #88C0D0; -} - -.nginx .hljs-section { - color: #5E81AC; -} - -.pf .hljs-built_in { - color: #88C0D0; -} - -.processing .hljs-built_in { - color: #88C0D0; -} - -.scss .hljs-keyword { - color: #81A1C1; -} - -.stylus .hljs-keyword { - color: #81A1C1; -} - -.swift .hljs-meta { - color: #D08770; -} - -.vim .hljs-built_in { - color: #88C0D0; - font-style: italic; -} - -.yaml .hljs-meta { - color: #D08770; -} diff --git a/vendor/scrivo/highlight.php/styles/obsidian.css b/vendor/scrivo/highlight.php/styles/obsidian.css deleted file mode 100644 index 356630fa2..000000000 --- a/vendor/scrivo/highlight.php/styles/obsidian.css +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Obsidian style - * ported by Alexander Marenin (http://github.com/ioncreature) - */ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #282b2e; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-selector-id { - color: #93c763; -} - -.hljs-number { - color: #ffcd22; -} - -.hljs { - color: #e0e2e4; -} - -.hljs-attribute { - color: #668bb0; -} - -.hljs-code, -.hljs-class .hljs-title, -.hljs-section { - color: white; -} - -.hljs-regexp, -.hljs-link { - color: #d39745; -} - -.hljs-meta { - color: #557182; -} - -.hljs-tag, -.hljs-name, -.hljs-bullet, -.hljs-subst, -.hljs-emphasis, -.hljs-type, -.hljs-built_in, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #8cbbad; -} - -.hljs-string, -.hljs-symbol { - color: #ec7600; -} - -.hljs-comment, -.hljs-quote, -.hljs-deletion { - color: #818e96; -} - -.hljs-selector-class { - color: #A082BD -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-doctag, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-name, -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/ocean.css b/vendor/scrivo/highlight.php/styles/ocean.css deleted file mode 100644 index 5901581b4..000000000 --- a/vendor/scrivo/highlight.php/styles/ocean.css +++ /dev/null @@ -1,74 +0,0 @@ -/* Ocean Dark Theme */ -/* https://github.com/gavsiu */ -/* Original theme - https://github.com/chriskempson/base16 */ - -/* Ocean Comment */ -.hljs-comment, -.hljs-quote { - color: #65737e; -} - -/* Ocean Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #bf616a; -} - -/* Ocean Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #d08770; -} - -/* Ocean Yellow */ -.hljs-attribute { - color: #ebcb8b; -} - -/* Ocean Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #a3be8c; -} - -/* Ocean Blue */ -.hljs-title, -.hljs-section { - color: #8fa1b3; -} - -/* Ocean Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #b48ead; -} - -.hljs { - display: block; - overflow-x: auto; - background: #2b303b; - color: #c0c5ce; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/paraiso-dark.css b/vendor/scrivo/highlight.php/styles/paraiso-dark.css deleted file mode 100644 index e7292401c..000000000 --- a/vendor/scrivo/highlight.php/styles/paraiso-dark.css +++ /dev/null @@ -1,72 +0,0 @@ -/* - Paraíso (dark) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-quote { - color: #8d8687; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-link, -.hljs-meta { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-deletion { - color: #f99b15; -} - -/* Paraíso Yellow */ -.hljs-title, -.hljs-section, -.hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #48b685; -} - -/* Paraíso Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #815ba4; -} - -.hljs { - display: block; - overflow-x: auto; - background: #2f1e2e; - color: #a39e9b; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/paraiso-light.css b/vendor/scrivo/highlight.php/styles/paraiso-light.css deleted file mode 100644 index 944857cd8..000000000 --- a/vendor/scrivo/highlight.php/styles/paraiso-light.css +++ /dev/null @@ -1,72 +0,0 @@ -/* - Paraíso (light) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-quote { - color: #776e71; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-link, -.hljs-meta { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-deletion { - color: #f99b15; -} - -/* Paraíso Yellow */ -.hljs-title, -.hljs-section, -.hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #48b685; -} - -/* Paraíso Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #815ba4; -} - -.hljs { - display: block; - overflow-x: auto; - background: #e7e9db; - color: #4f424c; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/pojoaque.css b/vendor/scrivo/highlight.php/styles/pojoaque.css deleted file mode 100644 index 2e07847b2..000000000 --- a/vendor/scrivo/highlight.php/styles/pojoaque.css +++ /dev/null @@ -1,83 +0,0 @@ -/* - -Pojoaque Style by Jason Tate -http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html -Based on Solarized Style from http://ethanschoonover.com/solarized - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #dccf8f; - background: url(./pojoaque.jpg) repeat scroll left top #181914; -} - -.hljs-comment, -.hljs-quote { - color: #586e75; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-addition { - color: #b64926; -} - -.hljs-number, -.hljs-string, -.hljs-doctag, -.hljs-regexp { - color: #468966; -} - -.hljs-title, -.hljs-section, -.hljs-built_in, -.hljs-name { - color: #ffb03b; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-class .hljs-title, -.hljs-type, -.hljs-tag { - color: #b58900; -} - -.hljs-attribute { - color: #b89859; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link, -.hljs-subst, -.hljs-meta { - color: #cb4b16; -} - -.hljs-deletion { - color: #dc322f; -} - -.hljs-selector-id, -.hljs-selector-class { - color: #d3a60c; -} - -.hljs-formula { - background: #073642; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/pojoaque.jpg b/vendor/scrivo/highlight.php/styles/pojoaque.jpg deleted file mode 100644 index 9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0 zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5 z@ci`~)&qzDP(lO<O#w_=Ra{yPARq$(#Dp~sI5{Qw_V+=FlW<^Y6zm5ml}e>iQ5p?p z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6<E5Jc&8l!3As3|1J6!wQRd z-V(uI9KaVwV1y!skwSq$AdHNO5ej2s5)+pvCcfxj8FB)Q4jMoM2_^spgCq=wu7Iro zLP#9>A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ zG|~pGp<w4_&QCo@xn1P1M0j6PuuaUUx?w)Q15Ksdv-E1Uyr8jff%m|S;O0KGX4?5u zcY>EGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D zjzpyzPnD3}hBNaS4aFX7=0&~I*<I1gl);;MHu4&K1%I;}H}}pdeV}msD&8ZuzDzH< zjs%}^eZx9tj&Cj4Rem!m7?W9-;wPH|CTw__Q8b>Hu7#4au@qVBglH#-m;QFOx_`=j z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@ z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMy<Tt*(wEUr;=}T08 zwr4iQLXQt-4U$zHxQBaftQf(Yp<ET%udI>P7eA&RS{)h5{??W3^Rq=goFJ>?lA~J- zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9<C`ZfC?$$I3ZovN#F=y~=x<iwqpGc&Fa z!>_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g z`Hd<uZEy9yjY6-c(?%?S4=3`QI_=xfg529VWEEJk$>}h<_WR<Zc1@js5HPhhe{UnV z+qpwizwrJv_3wqH(KR=Zp2|HqVCv6SNX`wV`OPQRXJj)}%e$t=$MRdar)ZmEr9R!$ z<l(H`+bxXKz73<WvNG=#;y(f(W{xUg<V#f`{pr)>vUc|n*%v4Hbb-4tJD40iyF^<n zrd(ZUzA$o-V2Gj0TB0p$%WvWRao2gif1>q%g*&!6>hkYDvi-<Lx9G?TP4>{Uc4yTM zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i` zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~ qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ diff --git a/vendor/scrivo/highlight.php/styles/purebasic.css b/vendor/scrivo/highlight.php/styles/purebasic.css deleted file mode 100644 index 20a5230bc..000000000 --- a/vendor/scrivo/highlight.php/styles/purebasic.css +++ /dev/null @@ -1,96 +0,0 @@ -/* - -PureBASIC native IDE style ( version 1.0 - April 2016 ) - -by Tristano Ajmone <tajmone@gmail.com> - -Public Domain - -NOTE_1: PureBASIC code syntax highlighting only applies the following classes: - .hljs-comment - .hljs-function - .hljs-keywords - .hljs-string - .hljs-symbol - - Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. - If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by - a "--- used for PureBASIC ... ---" comment on same line. - -NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: - http://chir.ag/projects/name-that-color -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #FFFFDF; /* Half and Half (approx.) */ -/* --- Uncomment to add PureBASIC native IDE styled font! - font-family: Consolas; -*/ -} - -.hljs, /* --- used for PureBASIC base color --- */ -.hljs-type, /* --- used for PureBASIC Procedures return type --- */ -.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ -.hljs-name, -.hljs-number, -.hljs-attr, -.hljs-params, -.hljs-subst { - color: #000000; /* Black */ -} - -.hljs-comment, /* --- used for PureBASIC Comments --- */ -.hljs-regexp, -.hljs-section, -.hljs-selector-pseudo, -.hljs-addition { - color: #00AAAA; /* Persian Green (approx.) */ -} - -.hljs-title, /* --- used for PureBASIC Procedures Names --- */ -.hljs-tag, -.hljs-variable, -.hljs-code { - color: #006666; /* Blue Stone (approx.) */ -} - -.hljs-keyword, /* --- used for PureBASIC Keywords --- */ -.hljs-class, -.hljs-meta-keyword, -.hljs-selector-class, -.hljs-built_in, -.hljs-builtin-name { - color: #006666; /* Blue Stone (approx.) */ - font-weight: bold; -} - -.hljs-string, /* --- used for PureBASIC Strings --- */ -.hljs-selector-attr { - color: #0080FF; /* Azure Radiance (approx.) */ -} - -.hljs-symbol, /* --- used for PureBASIC Constants --- */ -.hljs-link, -.hljs-deletion, -.hljs-attribute { - color: #924B72; /* Cannon Pink (approx.) */ -} - -.hljs-meta, -.hljs-literal, -.hljs-selector-id { - color: #924B72; /* Cannon Pink (approx.) */ - font-weight: bold; -} - -.hljs-strong, -.hljs-name { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/qtcreator_dark.css b/vendor/scrivo/highlight.php/styles/qtcreator_dark.css deleted file mode 100644 index 7aa56a365..000000000 --- a/vendor/scrivo/highlight.php/styles/qtcreator_dark.css +++ /dev/null @@ -1,83 +0,0 @@ -/* - -Qt Creator dark color scheme - -*/ - - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #000000; -} - -.hljs, -.hljs-subst, -.hljs-tag, -.hljs-title { - color: #aaaaaa; -} - -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-quote, -.hljs-number, -.hljs-regexp, -.hljs-literal { - color: #ff55ff; -} - -.hljs-code -.hljs-selector-class { - color: #aaaaff; -} - -.hljs-emphasis, -.hljs-stronge, -.hljs-type { - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-function, -.hljs-section, -.hljs-symbol, -.hljs-name { - color: #ffff55; -} - -.hljs-attribute { - color: #ff5555; -} - -.hljs-variable, -.hljs-params, -.hljs-class .hljs-title { - color: #8888ff; -} - -.hljs-string, -.hljs-selector-id, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition, -.hljs-link { - color: #ff55ff; -} - -.hljs-comment, -.hljs-meta, -.hljs-deletion { - color: #55ffff; -} diff --git a/vendor/scrivo/highlight.php/styles/qtcreator_light.css b/vendor/scrivo/highlight.php/styles/qtcreator_light.css deleted file mode 100644 index 1efa2c660..000000000 --- a/vendor/scrivo/highlight.php/styles/qtcreator_light.css +++ /dev/null @@ -1,83 +0,0 @@ -/* - -Qt Creator light color scheme - -*/ - - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #ffffff; -} - -.hljs, -.hljs-subst, -.hljs-tag, -.hljs-title { - color: #000000; -} - -.hljs-strong, -.hljs-emphasis { - color: #000000; -} - -.hljs-bullet, -.hljs-quote, -.hljs-number, -.hljs-regexp, -.hljs-literal { - color: #000080; -} - -.hljs-code -.hljs-selector-class { - color: #800080; -} - -.hljs-emphasis, -.hljs-stronge, -.hljs-type { - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-function, -.hljs-section, -.hljs-symbol, -.hljs-name { - color: #808000; -} - -.hljs-attribute { - color: #800000; -} - -.hljs-variable, -.hljs-params, -.hljs-class .hljs-title { - color: #0055AF; -} - -.hljs-string, -.hljs-selector-id, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition, -.hljs-link { - color: #008000; -} - -.hljs-comment, -.hljs-meta, -.hljs-deletion { - color: #008000; -} diff --git a/vendor/scrivo/highlight.php/styles/railscasts.css b/vendor/scrivo/highlight.php/styles/railscasts.css deleted file mode 100644 index 008cdc5bf..000000000 --- a/vendor/scrivo/highlight.php/styles/railscasts.css +++ /dev/null @@ -1,106 +0,0 @@ -/* - -Railscasts-like style (c) Visoft, Inc. (Damien White) - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #232323; - color: #e6e1dc; -} - -.hljs-comment, -.hljs-quote { - color: #bc9458; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag { - color: #c26230; -} - -.hljs-string, -.hljs-number, -.hljs-regexp, -.hljs-variable, -.hljs-template-variable { - color: #a5c261; -} - -.hljs-subst { - color: #519f50; -} - -.hljs-tag, -.hljs-name { - color: #e8bf6a; -} - -.hljs-type { - color: #da4939; -} - - -.hljs-symbol, -.hljs-bullet, -.hljs-built_in, -.hljs-builtin-name, -.hljs-attr, -.hljs-link { - color: #6d9cbe; -} - -.hljs-params { - color: #d0d0ff; -} - -.hljs-attribute { - color: #cda869; -} - -.hljs-meta { - color: #9b859d; -} - -.hljs-title, -.hljs-section { - color: #ffc66d; -} - -.hljs-addition { - background-color: #144212; - color: #e6e1dc; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #600; - color: #e6e1dc; - display: inline-block; - width: 100%; -} - -.hljs-selector-class { - color: #9b703f; -} - -.hljs-selector-id { - color: #8b98ab; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-link { - text-decoration: underline; -} diff --git a/vendor/scrivo/highlight.php/styles/rainbow.css b/vendor/scrivo/highlight.php/styles/rainbow.css deleted file mode 100644 index 905eb8ef1..000000000 --- a/vendor/scrivo/highlight.php/styles/rainbow.css +++ /dev/null @@ -1,85 +0,0 @@ -/* - -Style with support for rainbow parens - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #474949; - color: #d1d9e1; -} - - -.hljs-comment, -.hljs-quote { - color: #969896; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-type, -.hljs-addition { - color: #cc99cc; -} - -.hljs-number, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #f99157; -} - -.hljs-string, -.hljs-doctag, -.hljs-regexp { - color: #8abeb7; -} - -.hljs-title, -.hljs-name, -.hljs-section, -.hljs-built_in { - color: #b5bd68; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-selector-id, -.hljs-class .hljs-title { - color: #ffcc66; -} - -.hljs-section, -.hljs-name, -.hljs-strong { - font-weight: bold; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-subst, -.hljs-meta, -.hljs-link { - color: #f99157; -} - -.hljs-deletion { - color: #dc322f; -} - -.hljs-formula { - background: #eee8d5; -} - -.hljs-attr, -.hljs-attribute { - color: #81a2be; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/routeros.css b/vendor/scrivo/highlight.php/styles/routeros.css deleted file mode 100644 index ebe23990d..000000000 --- a/vendor/scrivo/highlight.php/styles/routeros.css +++ /dev/null @@ -1,108 +0,0 @@ -/* - - highlight.js style for Microtik RouterOS script - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; -} - -/* Base color: saturation 0; */ - -.hljs, -.hljs-subst { - color: #444; -} - -.hljs-comment { - color: #888888; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold; -} - -.hljs-attribute { - color: #0E9A00; -} - -.hljs-function { - color: #99069A; -} - -.hljs-builtin-name { - color: #99069A; -} - -/* User color: hue: 0 */ - -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #880000; -} - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; -} - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060; -} - - -/* Language color: hue: 90; */ - -.hljs-literal { - color: #78A960; -} - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #0C9A9A; -} - - -/* Meta color: hue: 200 */ - -.hljs-meta { - color: #1f7199; -} - -.hljs-meta-string { - color: #4d99bf; -} - - -/* Misc effects */ - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/school-book.css b/vendor/scrivo/highlight.php/styles/school-book.css deleted file mode 100644 index 94838513f..000000000 --- a/vendor/scrivo/highlight.php/styles/school-book.css +++ /dev/null @@ -1,69 +0,0 @@ -/* - -School Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 15px 0.5em 0.5em 30px; - font-size: 11px; - line-height:16px; - background:#f6f6ae url(./school-book.png); - border-top: solid 2px #d2e8b9; - border-bottom: solid 1px #d2e8b9; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst { - color: #3e5915; -} - -.hljs-string, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-symbol, -.hljs-bullet, -.hljs-attribute, -.hljs-built_in, -.hljs-builtin-name, -.hljs-addition, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable, -.hljs-link { - color: #2c009f; -} - -.hljs-comment, -.hljs-quote, -.hljs-deletion, -.hljs-meta { - color: #e60415; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-doctag, -.hljs-title, -.hljs-section, -.hljs-type, -.hljs-name, -.hljs-selector-id, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/school-book.png b/vendor/scrivo/highlight.php/styles/school-book.png deleted file mode 100644 index 956e9790a0e2c079b3d568348ff3accd1d9cac30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV7?7x3vjRjNjAS6Ga$v1?&#~tz_9*=IcwKTAYZb? zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4)r;B4q#jQ7Ycl#YS5MfK$ z?b^fh#qmaEhFDxvyThwfhdfkOPApt1lr{NA;Vr%uzxJuVIyzm(ed_<E=VqS`p8l-k zMtpHz{$@YRySeLE*Ya}$?Ok`{te)BVtcjm@Ca0ycGcY`ur8@;E%+QhxBm}lGGB7yY z0680(Z#S8FKUh{@M?@OPNCXi`Y7>8_-0$LLU})H&o5Re&aDemE>EG#(|F^t9_pa-H z_Mf?rMVrs}-M?S|?ZdY@c6s41zy8~}@a{v&#Ea7V)wJ$+#K|u$<a;jco6PrHvRYR7 zd%!Bk+<CfxufI!;xGfPoxmaf1$vs==)R}qJUdyr#eg1fxWvS-#bL&}n`+t3#d9p8N z!?kDKTLZga?|R;GcVE5XB+g&IH(a^x?fZ81;t8fvzjU{H8y{PLR#EDh##{B^#6KJN zOib&U@Ahrg;rF_q!%YQaoy1Q|n*P>5UvWCdFLwGac}6w{_s*=8A6L7Rfc|9gboFyt I=akR{0OLZ+qyPW_ diff --git a/vendor/scrivo/highlight.php/styles/shades-of-purple.css b/vendor/scrivo/highlight.php/styles/shades-of-purple.css deleted file mode 100644 index 9759cdd2b..000000000 --- a/vendor/scrivo/highlight.php/styles/shades-of-purple.css +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Shades of Purple Theme — for Highlightjs. - * - * @author (c) Ahmad Awais <https://twitter.com/mrahmadawais/> - * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS - * @version 1.5.0 - */ - -.hljs { - display: block; - overflow-x: auto; - /* Custom font is optional */ - /* font-family: 'Operator Mono', 'Fira Code', 'Menlo', 'Monaco', 'Courier New', 'monospace'; */ - padding: 0.5em; - background: #2d2b57; - font-weight: normal; -} - -.hljs-title { - color: #fad000; - font-weight: normal; -} - -.hljs-name { - color: #a1feff; -} - -.hljs-tag { - color: #ffffff; -} - -.hljs-attr { - color: #f8d000; - font-style: italic; -} - -.hljs-built_in, -.hljs-selector-tag, -.hljs-section { - color: #fb9e00; -} - -.hljs-keyword { - color: #fb9e00; -} - -.hljs, -.hljs-subst { - color: #e3dfff; -} - -.hljs-string, -.hljs-attribute, -.hljs-symbol, -.hljs-bullet, -.hljs-addition, -.hljs-code, -.hljs-regexp, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-template-tag, -.hljs-quote, -.hljs-deletion { - color: #4cd213; -} - -.hljs-meta, -.hljs-meta-string { - color: #fb9e00; -} - -.hljs-comment { - color: #ac65ff; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-name, -.hljs-strong { - font-weight: normal; -} - -.hljs-literal, -.hljs-number { - color: #fa658d; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/solarized-dark.css b/vendor/scrivo/highlight.php/styles/solarized-dark.css deleted file mode 100644 index b4c0da1f7..000000000 --- a/vendor/scrivo/highlight.php/styles/solarized-dark.css +++ /dev/null @@ -1,84 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #002b36; - color: #839496; -} - -.hljs-comment, -.hljs-quote { - color: #586e75; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-selector-tag, -.hljs-addition { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-string, -.hljs-meta .hljs-meta-string, -.hljs-literal, -.hljs-doctag, -.hljs-regexp { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-section, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-attr, -.hljs-variable, -.hljs-template-variable, -.hljs-class .hljs-title, -.hljs-type { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-symbol, -.hljs-bullet, -.hljs-subst, -.hljs-meta, -.hljs-meta .hljs-keyword, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-link { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-built_in, -.hljs-deletion { - color: #dc322f; -} - -.hljs-formula { - background: #073642; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/solarized-light.css b/vendor/scrivo/highlight.php/styles/solarized-light.css deleted file mode 100644 index fdcfcc72c..000000000 --- a/vendor/scrivo/highlight.php/styles/solarized-light.css +++ /dev/null @@ -1,84 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #fdf6e3; - color: #657b83; -} - -.hljs-comment, -.hljs-quote { - color: #93a1a1; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-selector-tag, -.hljs-addition { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-string, -.hljs-meta .hljs-meta-string, -.hljs-literal, -.hljs-doctag, -.hljs-regexp { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-section, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-attr, -.hljs-variable, -.hljs-template-variable, -.hljs-class .hljs-title, -.hljs-type { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-symbol, -.hljs-bullet, -.hljs-subst, -.hljs-meta, -.hljs-meta .hljs-keyword, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-link { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-built_in, -.hljs-deletion { - color: #dc322f; -} - -.hljs-formula { - background: #eee8d5; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/sunburst.css b/vendor/scrivo/highlight.php/styles/sunburst.css deleted file mode 100644 index f56dd5e9b..000000000 --- a/vendor/scrivo/highlight.php/styles/sunburst.css +++ /dev/null @@ -1,102 +0,0 @@ -/* - -Sunburst-like style (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #000; - color: #f8f8f8; -} - -.hljs-comment, -.hljs-quote { - color: #aeaeae; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-type { - color: #e28964; -} - -.hljs-string { - color: #65b042; -} - -.hljs-subst { - color: #daefa3; -} - -.hljs-regexp, -.hljs-link { - color: #e9c062; -} - -.hljs-title, -.hljs-section, -.hljs-tag, -.hljs-name { - color: #89bdff; -} - -.hljs-class .hljs-title, -.hljs-doctag { - text-decoration: underline; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-number { - color: #3387cc; -} - -.hljs-params, -.hljs-variable, -.hljs-template-variable { - color: #3e87e3; -} - -.hljs-attribute { - color: #cda869; -} - -.hljs-meta { - color: #8996a8; -} - -.hljs-formula { - background-color: #0e2231; - color: #f8f8f8; - font-style: italic; -} - -.hljs-addition { - background-color: #253b22; - color: #f8f8f8; -} - -.hljs-deletion { - background-color: #420e09; - color: #f8f8f8; -} - -.hljs-selector-class { - color: #9b703f; -} - -.hljs-selector-id { - color: #8b98ab; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/tomorrow-night-blue.css b/vendor/scrivo/highlight.php/styles/tomorrow-night-blue.css deleted file mode 100644 index 78e59cc8c..000000000 --- a/vendor/scrivo/highlight.php/styles/tomorrow-night-blue.css +++ /dev/null @@ -1,75 +0,0 @@ -/* Tomorrow Night Blue Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-quote { - color: #7285b7; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #ff9da4; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #ffc58f; -} - -/* Tomorrow Yellow */ -.hljs-attribute { - color: #ffeead; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #d1f1a9; -} - -/* Tomorrow Blue */ -.hljs-title, -.hljs-section { - color: #bbdaff; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #ebbbff; -} - -.hljs { - display: block; - overflow-x: auto; - background: #002451; - color: white; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/tomorrow-night-bright.css b/vendor/scrivo/highlight.php/styles/tomorrow-night-bright.css deleted file mode 100644 index e05af8ae2..000000000 --- a/vendor/scrivo/highlight.php/styles/tomorrow-night-bright.css +++ /dev/null @@ -1,74 +0,0 @@ -/* Tomorrow Night Bright Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-quote { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #d54e53; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #e78c45; -} - -/* Tomorrow Yellow */ -.hljs-attribute { - color: #e7c547; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #b9ca4a; -} - -/* Tomorrow Blue */ -.hljs-title, -.hljs-section { - color: #7aa6da; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #c397d8; -} - -.hljs { - display: block; - overflow-x: auto; - background: black; - color: #eaeaea; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/tomorrow-night-eighties.css b/vendor/scrivo/highlight.php/styles/tomorrow-night-eighties.css deleted file mode 100644 index 08fd51c74..000000000 --- a/vendor/scrivo/highlight.php/styles/tomorrow-night-eighties.css +++ /dev/null @@ -1,74 +0,0 @@ -/* Tomorrow Night Eighties Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-quote { - color: #999999; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #f2777a; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #f99157; -} - -/* Tomorrow Yellow */ -.hljs-attribute { - color: #ffcc66; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #99cc99; -} - -/* Tomorrow Blue */ -.hljs-title, -.hljs-section { - color: #6699cc; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #cc99cc; -} - -.hljs { - display: block; - overflow-x: auto; - background: #2d2d2d; - color: #cccccc; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/tomorrow-night.css b/vendor/scrivo/highlight.php/styles/tomorrow-night.css deleted file mode 100644 index ddd270a4e..000000000 --- a/vendor/scrivo/highlight.php/styles/tomorrow-night.css +++ /dev/null @@ -1,75 +0,0 @@ -/* Tomorrow Night Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-quote { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #cc6666; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #de935f; -} - -/* Tomorrow Yellow */ -.hljs-attribute { - color: #f0c674; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #b5bd68; -} - -/* Tomorrow Blue */ -.hljs-title, -.hljs-section { - color: #81a2be; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #b294bb; -} - -.hljs { - display: block; - overflow-x: auto; - background: #1d1f21; - color: #c5c8c6; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/tomorrow.css b/vendor/scrivo/highlight.php/styles/tomorrow.css deleted file mode 100644 index 026a62fe3..000000000 --- a/vendor/scrivo/highlight.php/styles/tomorrow.css +++ /dev/null @@ -1,72 +0,0 @@ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-quote { - color: #8e908c; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - color: #c82829; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - color: #f5871f; -} - -/* Tomorrow Yellow */ -.hljs-attribute { - color: #eab700; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - color: #718c00; -} - -/* Tomorrow Blue */ -.hljs-title, -.hljs-section { - color: #4271ae; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #8959a8; -} - -.hljs { - display: block; - overflow-x: auto; - background: white; - color: #4d4d4c; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/vs.css b/vendor/scrivo/highlight.php/styles/vs.css deleted file mode 100644 index c5d07d311..000000000 --- a/vendor/scrivo/highlight.php/styles/vs.css +++ /dev/null @@ -1,68 +0,0 @@ -/* - -Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name> - -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: white; - color: black; -} - -.hljs-comment, -.hljs-quote, -.hljs-variable { - color: #008000; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-built_in, -.hljs-name, -.hljs-tag { - color: #00f; -} - -.hljs-string, -.hljs-title, -.hljs-section, -.hljs-attribute, -.hljs-literal, -.hljs-template-tag, -.hljs-template-variable, -.hljs-type, -.hljs-addition { - color: #a31515; -} - -.hljs-deletion, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-meta { - color: #2b91af; -} - -.hljs-doctag { - color: #808080; -} - -.hljs-attr { - color: #f00; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link { - color: #00b0e8; -} - - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/scrivo/highlight.php/styles/vs2015.css b/vendor/scrivo/highlight.php/styles/vs2015.css deleted file mode 100644 index d1d9be3ca..000000000 --- a/vendor/scrivo/highlight.php/styles/vs2015.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Visual Studio 2015 dark style - * Author: Nicolas LLOBERA <nllobera@gmail.com> - */ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #1E1E1E; - color: #DCDCDC; -} - -.hljs-keyword, -.hljs-literal, -.hljs-symbol, -.hljs-name { - color: #569CD6; -} -.hljs-link { - color: #569CD6; - text-decoration: underline; -} - -.hljs-built_in, -.hljs-type { - color: #4EC9B0; -} - -.hljs-number, -.hljs-class { - color: #B8D7A3; -} - -.hljs-string, -.hljs-meta-string { - color: #D69D85; -} - -.hljs-regexp, -.hljs-template-tag { - color: #9A5334; -} - -.hljs-subst, -.hljs-function, -.hljs-title, -.hljs-params, -.hljs-formula { - color: #DCDCDC; -} - -.hljs-comment, -.hljs-quote { - color: #57A64A; - font-style: italic; -} - -.hljs-doctag { - color: #608B4E; -} - -.hljs-meta, -.hljs-meta-keyword, -.hljs-tag { - color: #9B9B9B; -} - -.hljs-variable, -.hljs-template-variable { - color: #BD63C5; -} - -.hljs-attr, -.hljs-attribute, -.hljs-builtin-name { - color: #9CDCFE; -} - -.hljs-section { - color: gold; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -/*.hljs-code { - font-family:'Monospace'; -}*/ - -.hljs-bullet, -.hljs-selector-tag, -.hljs-selector-id, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #D7BA7D; -} - -.hljs-addition { - background-color: #144212; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #600; - display: inline-block; - width: 100%; -} diff --git a/vendor/scrivo/highlight.php/styles/xcode.css b/vendor/scrivo/highlight.php/styles/xcode.css deleted file mode 100644 index b3056655c..000000000 --- a/vendor/scrivo/highlight.php/styles/xcode.css +++ /dev/null @@ -1,104 +0,0 @@ -/* - -XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com> - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #fff; - color: black; -} - -/* Gray DOCTYPE selectors like WebKit */ -.xml .hljs-meta { - color: #c0c0c0; -} - -.hljs-comment, -.hljs-quote { - color: #007400; -} - -.hljs-tag, -.hljs-attribute, -.hljs-keyword, -.hljs-selector-tag, -.hljs-literal, -.hljs-name { - color: #aa0d91; -} - -.hljs-variable, -.hljs-template-variable { - color: #3F6E74; -} - -.hljs-code, -.hljs-string, -.hljs-meta-string { - color: #c41a16; -} - -.hljs-regexp, -.hljs-link { - color: #0E0EFF; -} - -.hljs-title, -.hljs-symbol, -.hljs-bullet, -.hljs-number { - color: #1c00cf; -} - -.hljs-section, -.hljs-meta { - color: #643820; -} - - -.hljs-class .hljs-title, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-params { - color: #5c2699; -} - -.hljs-attr { - color: #836C28; -} - -.hljs-subst { - color: #000; -} - -.hljs-formula { - background-color: #eee; - font-style: italic; -} - -.hljs-addition { - background-color: #baeeba; -} - -.hljs-deletion { - background-color: #ffc8bd; -} - -.hljs-selector-id, -.hljs-selector-class { - color: #9b703f; -} - -.hljs-doctag, -.hljs-strong { - font-weight: bold; -} - -.hljs-emphasis { - font-style: italic; -} diff --git a/vendor/scrivo/highlight.php/styles/xt256.css b/vendor/scrivo/highlight.php/styles/xt256.css deleted file mode 100644 index 3e35ad2d5..000000000 --- a/vendor/scrivo/highlight.php/styles/xt256.css +++ /dev/null @@ -1,92 +0,0 @@ - -/* - xt256.css - - Contact: initbar [at] protonmail [dot] ch - : github.com/initbar -*/ - -.hljs { - display: block; - overflow-x: auto; - color: #eaeaea; - background: #000; - padding: 0.5em; -} - -.hljs-subst { - color: #eaeaea; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-builtin-name, -.hljs-type { - color: #eaeaea; -} - -.hljs-params { - color: #da0000; -} - -.hljs-literal, -.hljs-number, -.hljs-name { - color: #ff0000; - font-weight: bolder; -} - -.hljs-comment { - color: #969896; -} - -.hljs-selector-id, -.hljs-quote { - color: #00ffff; -} - -.hljs-template-variable, -.hljs-variable, -.hljs-title { - color: #00ffff; - font-weight: bold; -} - -.hljs-selector-class, -.hljs-keyword, -.hljs-symbol { - color: #fff000; -} - -.hljs-string, -.hljs-bullet { - color: #00ff00; -} - -.hljs-tag, -.hljs-section { - color: #000fff; -} - -.hljs-selector-tag { - color: #000fff; - font-weight: bold; -} - -.hljs-attribute, -.hljs-built_in, -.hljs-regexp, -.hljs-link { - color: #ff00ff; -} - -.hljs-meta { - color: #fff; - font-weight: bolder; -} diff --git a/vendor/scrivo/highlight.php/styles/zenburn.css b/vendor/scrivo/highlight.php/styles/zenburn.css deleted file mode 100644 index 07be50201..000000000 --- a/vendor/scrivo/highlight.php/styles/zenburn.css +++ /dev/null @@ -1,80 +0,0 @@ -/* - -Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru> -based on dark.css by Ivan Sagalaev - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #3f3f3f; - color: #dcdcdc; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-tag { - color: #e3ceab; -} - -.hljs-template-tag { - color: #dcdcdc; -} - -.hljs-number { - color: #8cd0d3; -} - -.hljs-variable, -.hljs-template-variable, -.hljs-attribute { - color: #efdcbc; -} - -.hljs-literal { - color: #efefaf; -} - -.hljs-subst { - color: #8f8f8f; -} - -.hljs-title, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-section, -.hljs-type { - color: #efef8f; -} - -.hljs-symbol, -.hljs-bullet, -.hljs-link { - color: #dca3a3; -} - -.hljs-deletion, -.hljs-string, -.hljs-built_in, -.hljs-builtin-name { - color: #cc9393; -} - -.hljs-addition, -.hljs-comment, -.hljs-quote, -.hljs-meta { - color: #7f9f7f; -} - - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/vendor/sebastian/cli-parser/ChangeLog.md b/vendor/sebastian/cli-parser/ChangeLog.md new file mode 100644 index 000000000..9431ec594 --- /dev/null +++ b/vendor/sebastian/cli-parser/ChangeLog.md @@ -0,0 +1,15 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [1.0.1] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [1.0.0] - 2020-08-12 + +* Initial release + +[1.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/bb7bb3297957927962b0a3335befe7b66f7462e9...1.0.0 diff --git a/vendor/sebastian/cli-parser/LICENSE b/vendor/sebastian/cli-parser/LICENSE new file mode 100644 index 000000000..0e33c0591 --- /dev/null +++ b/vendor/sebastian/cli-parser/LICENSE @@ -0,0 +1,33 @@ +sebastian/cli-parser + +Copyright (c) 2020, Sebastian Bergmann <sebastian@phpunit.de>. +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/sebastian/cli-parser/README.md b/vendor/sebastian/cli-parser/README.md new file mode 100644 index 000000000..39c17a72c --- /dev/null +++ b/vendor/sebastian/cli-parser/README.md @@ -0,0 +1,17 @@ +# sebastian/cli-parser + +Library for parsing `$_SERVER['argv']`, extracted from `phpunit/phpunit`. + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require sebastian/cli-parser +``` + +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 sebastian/cli-parser +``` diff --git a/vendor/sebastian/cli-parser/composer.json b/vendor/sebastian/cli-parser/composer.json new file mode 100644 index 000000000..34c376f91 --- /dev/null +++ b/vendor/sebastian/cli-parser/composer.json @@ -0,0 +1,41 @@ +{ + "name": "sebastian/cli-parser", + "description": "Library for parsing CLI options", + "type": "library", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues" + }, + "prefer-stable": true, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + } +} diff --git a/vendor/sebastian/cli-parser/infection.json b/vendor/sebastian/cli-parser/infection.json new file mode 100644 index 000000000..09546514f --- /dev/null +++ b/vendor/sebastian/cli-parser/infection.json @@ -0,0 +1,12 @@ +{ + "source": { + "directories": [ + "src" + ] + }, + "mutators": { + "@default": true + }, + "minMsi": 100, + "minCoveredMsi": 100 +} diff --git a/vendor/sebastian/cli-parser/src/Parser.php b/vendor/sebastian/cli-parser/src/Parser.php new file mode 100644 index 000000000..a4f728bc6 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/Parser.php @@ -0,0 +1,204 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use function array_map; +use function array_merge; +use function array_shift; +use function array_slice; +use function assert; +use function count; +use function current; +use function explode; +use function is_array; +use function is_int; +use function is_string; +use function key; +use function next; +use function preg_replace; +use function reset; +use function sort; +use function strlen; +use function strpos; +use function strstr; +use function substr; + +final class Parser +{ + /** + * @psalm-param list<string> $argv + * @psalm-param list<string> $longOptions + * + * @throws AmbiguousOptionException + * @throws RequiredOptionArgumentMissingException + * @throws OptionDoesNotAllowArgumentException + * @throws UnknownOptionException + */ + public function parse(array $argv, string $shortOptions, array $longOptions = null): array + { + if (empty($argv)) { + return [[], []]; + } + + $options = []; + $nonOptions = []; + + if ($longOptions) { + sort($longOptions); + } + + if (isset($argv[0][0]) && $argv[0][0] !== '-') { + array_shift($argv); + } + + reset($argv); + + $argv = array_map('trim', $argv); + + while (false !== $arg = current($argv)) { + $i = key($argv); + + assert(is_int($i)); + + next($argv); + + if ($arg === '') { + continue; + } + + if ($arg === '--') { + $nonOptions = array_merge($nonOptions, array_slice($argv, $i + 1)); + + break; + } + + if ($arg[0] !== '-' || (strlen($arg) > 1 && $arg[1] === '-' && !$longOptions)) { + $nonOptions[] = $arg; + + continue; + } + + if (strlen($arg) > 1 && $arg[1] === '-' && is_array($longOptions)) { + $this->parseLongOption( + substr($arg, 2), + $longOptions, + $options, + $argv + ); + } else { + $this->parseShortOption( + substr($arg, 1), + $shortOptions, + $options, + $argv + ); + } + } + + return [$options, $nonOptions]; + } + + /** + * @throws RequiredOptionArgumentMissingException + */ + private function parseShortOption(string $arg, string $shortOptions, array &$opts, array &$args): void + { + $argLength = strlen($arg); + + for ($i = 0; $i < $argLength; $i++) { + $option = $arg[$i]; + $optionArgument = null; + + if ($arg[$i] === ':' || ($spec = strstr($shortOptions, $option)) === false) { + throw new UnknownOptionException('-' . $option); + } + + assert(is_string($spec)); + + if (strlen($spec) > 1 && $spec[1] === ':') { + if ($i + 1 < $argLength) { + $opts[] = [$option, substr($arg, $i + 1)]; + + break; + } + + if (!(strlen($spec) > 2 && $spec[2] === ':')) { + $optionArgument = current($args); + + if (!$optionArgument) { + throw new RequiredOptionArgumentMissingException('-' . $option); + } + + assert(is_string($optionArgument)); + + next($args); + } + } + + $opts[] = [$option, $optionArgument]; + } + } + + /** + * @psalm-param list<string> $longOptions + * + * @throws AmbiguousOptionException + * @throws RequiredOptionArgumentMissingException + * @throws OptionDoesNotAllowArgumentException + * @throws UnknownOptionException + */ + private function parseLongOption(string $arg, array $longOptions, array &$opts, array &$args): void + { + $count = count($longOptions); + $list = explode('=', $arg); + $option = $list[0]; + $optionArgument = null; + + if (count($list) > 1) { + $optionArgument = $list[1]; + } + + $optionLength = strlen($option); + + foreach ($longOptions as $i => $longOption) { + $opt_start = substr($longOption, 0, $optionLength); + + if ($opt_start !== $option) { + continue; + } + + $opt_rest = substr($longOption, $optionLength); + + if ($opt_rest !== '' && $i + 1 < $count && $option[0] !== '=' && strpos($longOptions[$i + 1], $option) === 0) { + throw new AmbiguousOptionException('--' . $option); + } + + if (substr($longOption, -1) === '=') { + /* @noinspection StrlenInEmptyStringCheckContextInspection */ + if (substr($longOption, -2) !== '==' && !strlen((string) $optionArgument)) { + if (false === $optionArgument = current($args)) { + throw new RequiredOptionArgumentMissingException('--' . $option); + } + + next($args); + } + } elseif ($optionArgument) { + throw new OptionDoesNotAllowArgumentException('--' . $option); + } + + $fullOption = '--' . preg_replace('/={1,2}$/', '', $longOption); + $opts[] = [$fullOption, $optionArgument]; + + return; + } + + throw new UnknownOptionException('--' . $option); + } +} diff --git a/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php b/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php new file mode 100644 index 000000000..a99f63697 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php @@ -0,0 +1,26 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use function sprintf; +use RuntimeException; + +final class AmbiguousOptionException extends RuntimeException implements Exception +{ + public function __construct(string $option) + { + parent::__construct( + sprintf( + 'Option "%s" is ambiguous', + $option + ) + ); + } +} diff --git a/vendor/sebastian/cli-parser/src/exceptions/Exception.php b/vendor/sebastian/cli-parser/src/exceptions/Exception.php new file mode 100644 index 000000000..f35ad2457 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/exceptions/Exception.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php b/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php new file mode 100644 index 000000000..0aad29ac0 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php @@ -0,0 +1,26 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use function sprintf; +use RuntimeException; + +final class OptionDoesNotAllowArgumentException extends RuntimeException implements Exception +{ + public function __construct(string $option) + { + parent::__construct( + sprintf( + 'Option "%s" does not allow an argument', + $option + ) + ); + } +} diff --git a/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php b/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php new file mode 100644 index 000000000..d2a930b62 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php @@ -0,0 +1,26 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use function sprintf; +use RuntimeException; + +final class RequiredOptionArgumentMissingException extends RuntimeException implements Exception +{ + public function __construct(string $option) + { + parent::__construct( + sprintf( + 'Required argument for option "%s" is missing', + $option + ) + ); + } +} diff --git a/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php b/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php new file mode 100644 index 000000000..e98d9fd02 --- /dev/null +++ b/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php @@ -0,0 +1,26 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/cli-parser. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CliParser; + +use function sprintf; +use RuntimeException; + +final class UnknownOptionException extends RuntimeException implements Exception +{ + public function __construct(string $option) + { + parent::__construct( + sprintf( + 'Unknown option "%s"', + $option + ) + ); + } +} diff --git a/vendor/sebastian/code-unit-reverse-lookup/.gitignore b/vendor/sebastian/code-unit-reverse-lookup/.gitignore deleted file mode 100644 index 9e5f1db31..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.idea -/composer.lock -/vendor - diff --git a/vendor/sebastian/code-unit-reverse-lookup/.php_cs b/vendor/sebastian/code-unit-reverse-lookup/.php_cs deleted file mode 100644 index b7393bdac..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/.php_cs +++ /dev/null @@ -1,67 +0,0 @@ -<?php -$finder = Symfony\CS\Finder\DefaultFinder::create() - ->files() - ->in('src') - ->in('tests') - ->name('*.php'); - -return Symfony\CS\Config\Config::create() - ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) - ->fixers( - array( - 'align_double_arrow', - 'align_equals', - 'braces', - 'concat_with_spaces', - 'duplicate_semicolon', - 'elseif', - 'empty_return', - 'encoding', - 'eof_ending', - 'extra_empty_lines', - 'function_call_space', - 'function_declaration', - 'indentation', - 'join_function', - 'line_after_namespace', - 'linefeed', - 'list_commas', - 'lowercase_constants', - 'lowercase_keywords', - 'method_argument_space', - 'multiple_use', - 'namespace_no_leading_whitespace', - 'no_blank_lines_after_class_opening', - 'no_empty_lines_after_phpdocs', - 'parenthesis', - 'php_closing_tag', - 'phpdoc_indent', - 'phpdoc_no_access', - 'phpdoc_no_empty_return', - 'phpdoc_no_package', - 'phpdoc_params', - 'phpdoc_scalar', - 'phpdoc_separation', - 'phpdoc_to_comment', - 'phpdoc_trim', - 'phpdoc_types', - 'phpdoc_var_without_name', - 'remove_lines_between_uses', - 'return', - 'self_accessor', - 'short_array_syntax', - 'short_tag', - 'single_line_after_imports', - 'single_quote', - 'spaces_before_semicolon', - 'spaces_cast', - 'ternary_spaces', - 'trailing_spaces', - 'trim_array_spaces', - 'unused_use', - 'visibility', - 'whitespacy_lines' - ) - ) - ->finder($finder); - diff --git a/vendor/sebastian/code-unit-reverse-lookup/.travis.yml b/vendor/sebastian/code-unit-reverse-lookup/.travis.yml deleted file mode 100644 index 9d9c9d978..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: php - -php: - - 5.6 - - 7.0 - - 7.0snapshot - - 7.1 - - 7.1snapshot - - master - -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: - - ./vendor/bin/phpunit - -notifications: - email: false - diff --git a/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md b/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md index d136bf58f..43a5db90d 100644 --- a/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md +++ b/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md @@ -2,14 +2,37 @@ All notable changes to `sebastianbergmann/code-unit-reverse-lookup` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [1.0.2] - 2020-11-30 +## [2.0.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^5.6 || ^7.0` to `>=5.6` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [2.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [2.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## 2.0.0 - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2 ## 1.0.0 - 2016-02-13 +### Added + * Initial release -[1.0.2]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/1.0.1...1.0.2 +[2.0.3]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/1.0.0...2.0.0 diff --git a/vendor/sebastian/code-unit-reverse-lookup/LICENSE b/vendor/sebastian/code-unit-reverse-lookup/LICENSE index 8f243844c..dc4bf7019 100644 --- a/vendor/sebastian/code-unit-reverse-lookup/LICENSE +++ b/vendor/sebastian/code-unit-reverse-lookup/LICENSE @@ -1,6 +1,6 @@ code-unit-reverse-lookup -Copyright (c) 2016-2017, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2016-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/code-unit-reverse-lookup/README.md b/vendor/sebastian/code-unit-reverse-lookup/README.md index 2bf26afd3..1c0ca235e 100644 --- a/vendor/sebastian/code-unit-reverse-lookup/README.md +++ b/vendor/sebastian/code-unit-reverse-lookup/README.md @@ -1,4 +1,7 @@ -# code-unit-reverse-lookup +# sebastian/code-unit-reverse-lookup + +[![CI Status](https://github.com/sebastianbergmann/code-unit-reverse-lookup/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/code-unit-reverse-lookup/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/code-unit-reverse-lookup/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/code-unit-reverse-lookup) Looks up which function or method a line of code belongs to. @@ -6,9 +9,12 @@ Looks up which function or method a line of code belongs to. You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/code-unit-reverse-lookup +``` +composer require sebastian/code-unit-reverse-lookup +``` 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 sebastian/code-unit-reverse-lookup - +``` +composer require --dev sebastian/code-unit-reverse-lookup +``` diff --git a/vendor/sebastian/code-unit-reverse-lookup/build.xml b/vendor/sebastian/code-unit-reverse-lookup/build.xml deleted file mode 100644 index 24cf32e89..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/build.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="code-unit-reverse-lookup" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - <arg value="--optimize-autoloader"/> - <arg value="--prefer-stable"/> - </exec> - </target> -</project> - diff --git a/vendor/sebastian/code-unit-reverse-lookup/composer.json b/vendor/sebastian/code-unit-reverse-lookup/composer.json index ba32ed635..cff96167a 100644 --- a/vendor/sebastian/code-unit-reverse-lookup/composer.json +++ b/vendor/sebastian/code-unit-reverse-lookup/composer.json @@ -9,11 +9,19 @@ "email": "sebastian@phpunit.de" } ], + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ @@ -22,7 +30,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } } } diff --git a/vendor/sebastian/code-unit-reverse-lookup/phpunit.xml b/vendor/sebastian/code-unit-reverse-lookup/phpunit.xml deleted file mode 100644 index 2c0569e4a..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/phpunit.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.4/phpunit.xsd" - bootstrap="vendor/autoload.php" - backupGlobals="false" - backupStaticAttributes="false" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTestsThatDoNotTestAnything="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuite> - <directory suffix="Test.php">tests</directory> - </testsuite> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php b/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php index 20f8880fe..35de53981 100644 --- a/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php +++ b/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php @@ -1,15 +1,26 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of code-unit-reverse-lookup. + * This file is part of sebastian/code-unit-reverse-lookup. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\CodeUnitReverseLookup; +use function array_merge; +use function assert; +use function get_declared_classes; +use function get_declared_traits; +use function get_defined_functions; +use function is_array; +use function range; +use ReflectionClass; +use ReflectionFunction; +use ReflectionFunctionAbstract; +use ReflectionMethod; + /** * @since Class available since Release 1.0.0 */ @@ -44,25 +55,31 @@ class Wizard if (isset($this->lookupTable[$filename][$lineNumber])) { return $this->lookupTable[$filename][$lineNumber]; - } else { - return $filename . ':' . $lineNumber; } + + return $filename . ':' . $lineNumber; } - private function updateLookupTable() + private function updateLookupTable(): void { $this->processClassesAndTraits(); $this->processFunctions(); } - private function processClassesAndTraits() + private function processClassesAndTraits(): void { - foreach (array_merge(get_declared_classes(), get_declared_traits()) as $classOrTrait) { + $classes = get_declared_classes(); + $traits = get_declared_traits(); + + assert(is_array($classes)); + assert(is_array($traits)); + + foreach (array_merge($classes, $traits) as $classOrTrait) { if (isset($this->processedClasses[$classOrTrait])) { continue; } - $reflector = new \ReflectionClass($classOrTrait); + $reflector = new ReflectionClass($classOrTrait); foreach ($reflector->getMethods() as $method) { $this->processFunctionOrMethod($method); @@ -72,23 +89,20 @@ class Wizard } } - private function processFunctions() + private function processFunctions(): void { foreach (get_defined_functions()['user'] as $function) { if (isset($this->processedFunctions[$function])) { continue; } - $this->processFunctionOrMethod(new \ReflectionFunction($function)); + $this->processFunctionOrMethod(new ReflectionFunction($function)); $this->processedFunctions[$function] = true; } } - /** - * @param \ReflectionFunctionAbstract $functionOrMethod - */ - private function processFunctionOrMethod(\ReflectionFunctionAbstract $functionOrMethod) + private function processFunctionOrMethod(ReflectionFunctionAbstract $functionOrMethod): void { if ($functionOrMethod->isInternal()) { return; @@ -96,7 +110,7 @@ class Wizard $name = $functionOrMethod->getName(); - if ($functionOrMethod instanceof \ReflectionMethod) { + if ($functionOrMethod instanceof ReflectionMethod) { $name = $functionOrMethod->getDeclaringClass()->getName() . '::' . $name; } diff --git a/vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php b/vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php deleted file mode 100644 index 711ad2864..000000000 --- a/vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/* - * This file is part of code-unit-reverse-lookup. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\CodeUnitReverseLookup; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\CodeUnitReverseLookup\Wizard - */ -class WizardTest extends TestCase -{ - /** - * @var Wizard - */ - private $wizard; - - protected function setUp(): void - { - $this->wizard = new Wizard; - } - - public function testMethodCanBeLookedUp() - { - $this->assertEquals( - __METHOD__, - $this->wizard->lookup(__FILE__, __LINE__) - ); - } - - public function testReturnsFilenameAndLineNumberAsStringWhenNotInCodeUnit() - { - $this->assertEquals( - 'file.php:1', - $this->wizard->lookup('file.php', 1) - ); - } -} diff --git a/vendor/sebastian/code-unit/.psalm/baseline.xml b/vendor/sebastian/code-unit/.psalm/baseline.xml new file mode 100644 index 000000000..e44889190 --- /dev/null +++ b/vendor/sebastian/code-unit/.psalm/baseline.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"> + <file src="src/Mapper.php"> + <ArgumentTypeCoercion occurrences="16"> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$firstPart</code> + <code>$secondPart</code> + <code>$unit</code> + <code>$unit</code> + <code>$unit</code> + <code>$unit</code> + <code>$unit</code> + <code>$unit</code> + </ArgumentTypeCoercion> + </file> +</files> diff --git a/vendor/sebastian/code-unit/.psalm/config.xml b/vendor/sebastian/code-unit/.psalm/config.xml new file mode 100644 index 000000000..a39e9a4c3 --- /dev/null +++ b/vendor/sebastian/code-unit/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + totallyTyped="true" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + errorBaseline=".psalm/baseline.xml" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/code-unit/ChangeLog.md b/vendor/sebastian/code-unit/ChangeLog.md new file mode 100644 index 000000000..0978e651e --- /dev/null +++ b/vendor/sebastian/code-unit/ChangeLog.md @@ -0,0 +1,65 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [1.0.8] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\CodeUnit\Exception` now correctly extends `\Throwable` + +## [1.0.7] - 2020-10-02 + +### Fixed + +* `SebastianBergmann\CodeUnit\Mapper::stringToCodeUnits()` no longer attempts to create `CodeUnit` objects for code units that are not declared in userland + +## [1.0.6] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [1.0.5] - 2020-06-26 + +### Fixed + +* [#3](https://github.com/sebastianbergmann/code-unit/issues/3): Regression in 1.0.4 + +## [1.0.4] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [1.0.3] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [1.0.2] - 2020-04-30 + +### Fixed + +* `Mapper::stringToCodeUnits()` raised the wrong exception for `Class::method` when a class named `Class` exists but does not have a method named `method` + +## [1.0.1] - 2020-04-27 + +### Fixed + +* [#2](https://github.com/sebastianbergmann/code-unit/issues/2): `Mapper::stringToCodeUnits()` breaks when `ClassName<extended>` is used for class that extends built-in class + +## [1.0.0] - 2020-03-30 + +* Initial release + +[1.0.8]: https://github.com/sebastianbergmann/code-unit/compare/1.0.7...1.0.8 +[1.0.7]: https://github.com/sebastianbergmann/code-unit/compare/1.0.6...1.0.7 +[1.0.6]: https://github.com/sebastianbergmann/code-unit/compare/1.0.5...1.0.6 +[1.0.5]: https://github.com/sebastianbergmann/code-unit/compare/1.0.4...1.0.5 +[1.0.4]: https://github.com/sebastianbergmann/code-unit/compare/1.0.3...1.0.4 +[1.0.3]: https://github.com/sebastianbergmann/code-unit/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/sebastianbergmann/code-unit/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/sebastianbergmann/code-unit/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/sebastianbergmann/code-unit/compare/530c3900e5db9bcb8516da545bef0d62536cedaa...1.0.0 diff --git a/vendor/sebastian/code-unit/LICENSE b/vendor/sebastian/code-unit/LICENSE new file mode 100644 index 000000000..b99bc8ac4 --- /dev/null +++ b/vendor/sebastian/code-unit/LICENSE @@ -0,0 +1,33 @@ +sebastian/code-unit + +Copyright (c) 2020, Sebastian Bergmann <sebastian@phpunit.de>. +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/sebastian/code-unit/README.md b/vendor/sebastian/code-unit/README.md new file mode 100644 index 000000000..d20227a9b --- /dev/null +++ b/vendor/sebastian/code-unit/README.md @@ -0,0 +1,17 @@ +# sebastian/code-unit + +Collection of value objects that represent the PHP code units. + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require sebastian/code-unit +``` + +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 sebastian/code-unit +``` diff --git a/vendor/sebastian/code-unit/composer.json b/vendor/sebastian/code-unit/composer.json new file mode 100644 index 000000000..5b86ec589 --- /dev/null +++ b/vendor/sebastian/code-unit/composer.json @@ -0,0 +1,50 @@ +{ + "name": "sebastian/code-unit", + "description": "Collection of value objects that represent the PHP code units", + "type": "library", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues" + }, + "prefer-stable": true, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "autoload-dev": { + "classmap": [ + "tests/_fixture" + ], + "files": [ + "tests/_fixture/file_with_multiple_code_units.php", + "tests/_fixture/function.php" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + } +} diff --git a/vendor/sebastian/code-unit/src/ClassMethodUnit.php b/vendor/sebastian/code-unit/src/ClassMethodUnit.php new file mode 100644 index 000000000..f9ddac29e --- /dev/null +++ b/vendor/sebastian/code-unit/src/ClassMethodUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class ClassMethodUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true ClassMethodUnit $this + */ + public function isClassMethod(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/ClassUnit.php b/vendor/sebastian/code-unit/src/ClassUnit.php new file mode 100644 index 000000000..3ba0ee661 --- /dev/null +++ b/vendor/sebastian/code-unit/src/ClassUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class ClassUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true ClassUnit $this + */ + public function isClass(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/CodeUnit.php b/vendor/sebastian/code-unit/src/CodeUnit.php new file mode 100644 index 000000000..9e5cceb35 --- /dev/null +++ b/vendor/sebastian/code-unit/src/CodeUnit.php @@ -0,0 +1,445 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use function range; +use function sprintf; +use ReflectionClass; +use ReflectionFunction; +use ReflectionMethod; + +/** + * @psalm-immutable + */ +abstract class CodeUnit +{ + /** + * @var string + */ + private $name; + + /** + * @var string + */ + private $sourceFileName; + + /** + * @var array + * @psalm-var list<int> + */ + private $sourceLines; + + /** + * @psalm-param class-string $className + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forClass(string $className): ClassUnit + { + self::ensureUserDefinedClass($className); + + $reflector = self::reflectorForClass($className); + + return new ClassUnit( + $className, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param class-string $className + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forClassMethod(string $className, string $methodName): ClassMethodUnit + { + self::ensureUserDefinedClass($className); + + $reflector = self::reflectorForClassMethod($className, $methodName); + + return new ClassMethodUnit( + $className . '::' . $methodName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param class-string $interfaceName + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forInterface(string $interfaceName): InterfaceUnit + { + self::ensureUserDefinedInterface($interfaceName); + + $reflector = self::reflectorForClass($interfaceName); + + return new InterfaceUnit( + $interfaceName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param class-string $interfaceName + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forInterfaceMethod(string $interfaceName, string $methodName): InterfaceMethodUnit + { + self::ensureUserDefinedInterface($interfaceName); + + $reflector = self::reflectorForClassMethod($interfaceName, $methodName); + + return new InterfaceMethodUnit( + $interfaceName . '::' . $methodName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param class-string $traitName + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forTrait(string $traitName): TraitUnit + { + self::ensureUserDefinedTrait($traitName); + + $reflector = self::reflectorForClass($traitName); + + return new TraitUnit( + $traitName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param class-string $traitName + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forTraitMethod(string $traitName, string $methodName): TraitMethodUnit + { + self::ensureUserDefinedTrait($traitName); + + $reflector = self::reflectorForClassMethod($traitName, $methodName); + + return new TraitMethodUnit( + $traitName . '::' . $methodName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param callable-string $functionName + * + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public static function forFunction(string $functionName): FunctionUnit + { + $reflector = self::reflectorForFunction($functionName); + + if (!$reflector->isUserDefined()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a user-defined function', + $functionName + ) + ); + } + + return new FunctionUnit( + $functionName, + $reflector->getFileName(), + range( + $reflector->getStartLine(), + $reflector->getEndLine() + ) + ); + } + + /** + * @psalm-param list<int> $sourceLines + */ + private function __construct(string $name, string $sourceFileName, array $sourceLines) + { + $this->name = $name; + $this->sourceFileName = $sourceFileName; + $this->sourceLines = $sourceLines; + } + + public function name(): string + { + return $this->name; + } + + public function sourceFileName(): string + { + return $this->sourceFileName; + } + + /** + * @psalm-return list<int> + */ + public function sourceLines(): array + { + return $this->sourceLines; + } + + public function isClass(): bool + { + return false; + } + + public function isClassMethod(): bool + { + return false; + } + + public function isInterface(): bool + { + return false; + } + + public function isInterfaceMethod(): bool + { + return false; + } + + public function isTrait(): bool + { + return false; + } + + public function isTraitMethod(): bool + { + return false; + } + + public function isFunction(): bool + { + return false; + } + + /** + * @psalm-param class-string $className + * + * @throws InvalidCodeUnitException + */ + private static function ensureUserDefinedClass(string $className): void + { + try { + $reflector = new ReflectionClass($className); + + if ($reflector->isInterface()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is an interface and not a class', + $className + ) + ); + } + + if ($reflector->isTrait()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is a trait and not a class', + $className + ) + ); + } + + if (!$reflector->isUserDefined()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a user-defined class', + $className + ) + ); + } + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @psalm-param class-string $interfaceName + * + * @throws InvalidCodeUnitException + */ + private static function ensureUserDefinedInterface(string $interfaceName): void + { + try { + $reflector = new ReflectionClass($interfaceName); + + if (!$reflector->isInterface()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not an interface', + $interfaceName + ) + ); + } + + if (!$reflector->isUserDefined()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a user-defined interface', + $interfaceName + ) + ); + } + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @psalm-param class-string $traitName + * + * @throws InvalidCodeUnitException + */ + private static function ensureUserDefinedTrait(string $traitName): void + { + try { + $reflector = new ReflectionClass($traitName); + + if (!$reflector->isTrait()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a trait', + $traitName + ) + ); + } + + // @codeCoverageIgnoreStart + if (!$reflector->isUserDefined()) { + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a user-defined trait', + $traitName + ) + ); + } + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private static function reflectorForClass(string $className): ReflectionClass + { + try { + return new ReflectionClass($className); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private static function reflectorForClassMethod(string $className, string $methodName): ReflectionMethod + { + try { + return new ReflectionMethod($className, $methodName); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @psalm-param callable-string $functionName + * + * @throws ReflectionException + */ + private static function reflectorForFunction(string $functionName): ReflectionFunction + { + try { + return new ReflectionFunction($functionName); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } +} diff --git a/vendor/sebastian/code-unit/src/CodeUnitCollection.php b/vendor/sebastian/code-unit/src/CodeUnitCollection.php new file mode 100644 index 000000000..f53db8a12 --- /dev/null +++ b/vendor/sebastian/code-unit/src/CodeUnitCollection.php @@ -0,0 +1,84 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use function array_merge; +use function count; +use Countable; +use IteratorAggregate; + +final class CodeUnitCollection implements Countable, IteratorAggregate +{ + /** + * @psalm-var list<CodeUnit> + */ + private $codeUnits = []; + + /** + * @psalm-param list<CodeUnit> $items + */ + public static function fromArray(array $items): self + { + $collection = new self; + + foreach ($items as $item) { + $collection->add($item); + } + + return $collection; + } + + public static function fromList(CodeUnit ...$items): self + { + return self::fromArray($items); + } + + private function __construct() + { + } + + /** + * @psalm-return list<CodeUnit> + */ + public function asArray(): array + { + return $this->codeUnits; + } + + public function getIterator(): CodeUnitCollectionIterator + { + return new CodeUnitCollectionIterator($this); + } + + public function count(): int + { + return count($this->codeUnits); + } + + public function isEmpty(): bool + { + return empty($this->codeUnits); + } + + public function mergeWith(self $other): self + { + return self::fromArray( + array_merge( + $this->asArray(), + $other->asArray() + ) + ); + } + + private function add(CodeUnit $item): void + { + $this->codeUnits[] = $item; + } +} diff --git a/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php b/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php new file mode 100644 index 000000000..bdc86d888 --- /dev/null +++ b/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php @@ -0,0 +1,55 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use Iterator; + +final class CodeUnitCollectionIterator implements Iterator +{ + /** + * @psalm-var list<CodeUnit> + */ + private $codeUnits; + + /** + * @var int + */ + private $position = 0; + + public function __construct(CodeUnitCollection $collection) + { + $this->codeUnits = $collection->asArray(); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return isset($this->codeUnits[$this->position]); + } + + public function key(): int + { + return $this->position; + } + + public function current(): CodeUnit + { + return $this->codeUnits[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/sebastian/code-unit/src/FunctionUnit.php b/vendor/sebastian/code-unit/src/FunctionUnit.php new file mode 100644 index 000000000..df76cf195 --- /dev/null +++ b/vendor/sebastian/code-unit/src/FunctionUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class FunctionUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true FunctionUnit $this + */ + public function isFunction(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php b/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php new file mode 100644 index 000000000..fcd44f41a --- /dev/null +++ b/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class InterfaceMethodUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true InterfaceMethod $this + */ + public function isInterfaceMethod(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/InterfaceUnit.php b/vendor/sebastian/code-unit/src/InterfaceUnit.php new file mode 100644 index 000000000..5cf585bfd --- /dev/null +++ b/vendor/sebastian/code-unit/src/InterfaceUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class InterfaceUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true InterfaceUnit $this + */ + public function isInterface(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/Mapper.php b/vendor/sebastian/code-unit/src/Mapper.php new file mode 100644 index 000000000..a72b3b0dd --- /dev/null +++ b/vendor/sebastian/code-unit/src/Mapper.php @@ -0,0 +1,414 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use function array_keys; +use function array_merge; +use function array_unique; +use function array_values; +use function class_exists; +use function explode; +use function function_exists; +use function interface_exists; +use function ksort; +use function method_exists; +use function sort; +use function sprintf; +use function str_replace; +use function strpos; +use function trait_exists; +use ReflectionClass; +use ReflectionFunction; +use ReflectionMethod; + +final class Mapper +{ + /** + * @psalm-return array<string,list<int>> + */ + public function codeUnitsToSourceLines(CodeUnitCollection $codeUnits): array + { + $result = []; + + foreach ($codeUnits as $codeUnit) { + $sourceFileName = $codeUnit->sourceFileName(); + + if (!isset($result[$sourceFileName])) { + $result[$sourceFileName] = []; + } + + $result[$sourceFileName] = array_merge($result[$sourceFileName], $codeUnit->sourceLines()); + } + + foreach (array_keys($result) as $sourceFileName) { + $result[$sourceFileName] = array_values(array_unique($result[$sourceFileName])); + + sort($result[$sourceFileName]); + } + + ksort($result); + + return $result; + } + + /** + * @throws InvalidCodeUnitException + * @throws ReflectionException + */ + public function stringToCodeUnits(string $unit): CodeUnitCollection + { + if (strpos($unit, '::') !== false) { + [$firstPart, $secondPart] = explode('::', $unit); + + if (empty($firstPart) && $this->isUserDefinedFunction($secondPart)) { + return CodeUnitCollection::fromList(CodeUnit::forFunction($secondPart)); + } + + if ($this->isUserDefinedClass($firstPart)) { + if ($secondPart === '<public>') { + return $this->publicMethodsOfClass($firstPart); + } + + if ($secondPart === '<!public>') { + return $this->protectedAndPrivateMethodsOfClass($firstPart); + } + + if ($secondPart === '<protected>') { + return $this->protectedMethodsOfClass($firstPart); + } + + if ($secondPart === '<!protected>') { + return $this->publicAndPrivateMethodsOfClass($firstPart); + } + + if ($secondPart === '<private>') { + return $this->privateMethodsOfClass($firstPart); + } + + if ($secondPart === '<!private>') { + return $this->publicAndProtectedMethodsOfClass($firstPart); + } + + if ($this->isUserDefinedMethod($firstPart, $secondPart)) { + return CodeUnitCollection::fromList(CodeUnit::forClassMethod($firstPart, $secondPart)); + } + } + + if ($this->isUserDefinedInterface($firstPart)) { + return CodeUnitCollection::fromList(CodeUnit::forInterfaceMethod($firstPart, $secondPart)); + } + + if ($this->isUserDefinedTrait($firstPart)) { + return CodeUnitCollection::fromList(CodeUnit::forTraitMethod($firstPart, $secondPart)); + } + } else { + if ($this->isUserDefinedClass($unit)) { + $units = [CodeUnit::forClass($unit)]; + + foreach ($this->reflectorForClass($unit)->getTraits() as $trait) { + if (!$trait->isUserDefined()) { + // @codeCoverageIgnoreStart + continue; + // @codeCoverageIgnoreEnd + } + + $units[] = CodeUnit::forTrait($trait->getName()); + } + + return CodeUnitCollection::fromArray($units); + } + + if ($this->isUserDefinedInterface($unit)) { + return CodeUnitCollection::fromList(CodeUnit::forInterface($unit)); + } + + if ($this->isUserDefinedTrait($unit)) { + return CodeUnitCollection::fromList(CodeUnit::forTrait($unit)); + } + + if ($this->isUserDefinedFunction($unit)) { + return CodeUnitCollection::fromList(CodeUnit::forFunction($unit)); + } + + $unit = str_replace('<extended>', '', $unit); + + if ($this->isUserDefinedClass($unit)) { + return $this->classAndParentClassesAndTraits($unit); + } + } + + throw new InvalidCodeUnitException( + sprintf( + '"%s" is not a valid code unit', + $unit + ) + ); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function publicMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function publicAndProtectedMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function publicAndPrivateMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PRIVATE); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function protectedMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PROTECTED); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function protectedAndPrivateMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PROTECTED | ReflectionMethod::IS_PRIVATE); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function privateMethodsOfClass(string $className): CodeUnitCollection + { + return $this->methodsOfClass($className, ReflectionMethod::IS_PRIVATE); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function methodsOfClass(string $className, int $filter): CodeUnitCollection + { + $units = []; + + foreach ($this->reflectorForClass($className)->getMethods($filter) as $method) { + if (!$method->isUserDefined()) { + continue; + } + + $units[] = CodeUnit::forClassMethod($className, $method->getName()); + } + + return CodeUnitCollection::fromArray($units); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function classAndParentClassesAndTraits(string $className): CodeUnitCollection + { + $units = [CodeUnit::forClass($className)]; + + $reflector = $this->reflectorForClass($className); + + foreach ($this->reflectorForClass($className)->getTraits() as $trait) { + if (!$trait->isUserDefined()) { + // @codeCoverageIgnoreStart + continue; + // @codeCoverageIgnoreEnd + } + + $units[] = CodeUnit::forTrait($trait->getName()); + } + + while ($reflector = $reflector->getParentClass()) { + if (!$reflector->isUserDefined()) { + break; + } + + $units[] = CodeUnit::forClass($reflector->getName()); + + foreach ($reflector->getTraits() as $trait) { + if (!$trait->isUserDefined()) { + // @codeCoverageIgnoreStart + continue; + // @codeCoverageIgnoreEnd + } + + $units[] = CodeUnit::forTrait($trait->getName()); + } + } + + return CodeUnitCollection::fromArray($units); + } + + /** + * @psalm-param class-string $className + * + * @throws ReflectionException + */ + private function reflectorForClass(string $className): ReflectionClass + { + try { + return new ReflectionClass($className); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @throws ReflectionException + */ + private function isUserDefinedFunction(string $functionName): bool + { + if (!function_exists($functionName)) { + return false; + } + + try { + return (new ReflectionFunction($functionName))->isUserDefined(); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @throws ReflectionException + */ + private function isUserDefinedClass(string $className): bool + { + if (!class_exists($className)) { + return false; + } + + try { + return (new ReflectionClass($className))->isUserDefined(); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @throws ReflectionException + */ + private function isUserDefinedInterface(string $interfaceName): bool + { + if (!interface_exists($interfaceName)) { + return false; + } + + try { + return (new ReflectionClass($interfaceName))->isUserDefined(); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @throws ReflectionException + */ + private function isUserDefinedTrait(string $traitName): bool + { + if (!trait_exists($traitName)) { + return false; + } + + try { + return (new ReflectionClass($traitName))->isUserDefined(); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @throws ReflectionException + */ + private function isUserDefinedMethod(string $className, string $methodName): bool + { + if (!class_exists($className)) { + // @codeCoverageIgnoreStart + return false; + // @codeCoverageIgnoreEnd + } + + if (!method_exists($className, $methodName)) { + // @codeCoverageIgnoreStart + return false; + // @codeCoverageIgnoreEnd + } + + try { + return (new ReflectionMethod($className, $methodName))->isUserDefined(); + // @codeCoverageIgnoreStart + } catch (\ReflectionException $e) { + throw new ReflectionException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + } + // @codeCoverageIgnoreEnd + } +} diff --git a/vendor/sebastian/code-unit/src/TraitMethodUnit.php b/vendor/sebastian/code-unit/src/TraitMethodUnit.php new file mode 100644 index 000000000..a58f7249f --- /dev/null +++ b/vendor/sebastian/code-unit/src/TraitMethodUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class TraitMethodUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true TraitMethodUnit $this + */ + public function isTraitMethod(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/TraitUnit.php b/vendor/sebastian/code-unit/src/TraitUnit.php new file mode 100644 index 000000000..abddfc112 --- /dev/null +++ b/vendor/sebastian/code-unit/src/TraitUnit.php @@ -0,0 +1,24 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +/** + * @psalm-immutable + */ +final class TraitUnit extends CodeUnit +{ + /** + * @psalm-assert-if-true TraitUnit $this + */ + public function isTrait(): bool + { + return true; + } +} diff --git a/vendor/sebastian/code-unit/src/exceptions/Exception.php b/vendor/sebastian/code-unit/src/exceptions/Exception.php new file mode 100644 index 000000000..74d0eeef8 --- /dev/null +++ b/vendor/sebastian/code-unit/src/exceptions/Exception.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php b/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php new file mode 100644 index 000000000..60a3da82b --- /dev/null +++ b/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use RuntimeException; + +final class InvalidCodeUnitException extends RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php b/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php new file mode 100644 index 000000000..e9b9b9c7a --- /dev/null +++ b/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use RuntimeException; + +final class NoTraitException extends RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php b/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php new file mode 100644 index 000000000..232012783 --- /dev/null +++ b/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/code-unit. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\CodeUnit; + +use RuntimeException; + +final class ReflectionException extends RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/comparator/ChangeLog.md b/vendor/sebastian/comparator/ChangeLog.md index b091163dd..17557536c 100644 --- a/vendor/sebastian/comparator/ChangeLog.md +++ b/vendor/sebastian/comparator/ChangeLog.md @@ -2,6 +2,60 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. +## [4.0.8] - 2022-09-14 + +### Fixed + +* [#102](https://github.com/sebastianbergmann/comparator/pull/102): Fix `float` comparison precision + +## [4.0.7] - 2022-09-14 + +### Fixed + +* [#99](https://github.com/sebastianbergmann/comparator/pull/99): Fix weak comparison between `'0'` and `false` + +## [4.0.6] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Comparator\Exception` now correctly extends `\Throwable` + +## [4.0.5] - 2020-09-30 + +### Fixed + +* [#89](https://github.com/sebastianbergmann/comparator/pull/89): Handle PHP 8 `ValueError` + +## [4.0.4] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [4.0.3] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [4.0.2] - 2020-06-15 + +### Fixed + +* [#85](https://github.com/sebastianbergmann/comparator/issues/85): Version 4.0.1 breaks backward compatibility + +## [4.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [4.0.0] - 2020-02-07 + +### Removed + +* Removed support for PHP 7.1 and PHP 7.2 + ## [3.0.5] - 2022-09-14 ### Fixed @@ -68,6 +122,15 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * Added `SebastianBergmann\Comparator\Factory::reset()` to unregister all non-default comparators * Added support for `phpunit/phpunit-mock-objects` version `^5.0` +[4.0.8]: https://github.com/sebastianbergmann/comparator/compare/4.0.7...4.0.8 +[4.0.7]: https://github.com/sebastianbergmann/comparator/compare/4.0.6...4.0.7 +[4.0.6]: https://github.com/sebastianbergmann/comparator/compare/4.0.5...4.0.6 +[4.0.5]: https://github.com/sebastianbergmann/comparator/compare/4.0.4...4.0.5 +[4.0.4]: https://github.com/sebastianbergmann/comparator/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/comparator/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/comparator/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/comparator/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/comparator/compare/3.0.5...4.0.0 [3.0.5]: https://github.com/sebastianbergmann/comparator/compare/3.0.4...3.0.5 [3.0.4]: https://github.com/sebastianbergmann/comparator/compare/3.0.3...3.0.4 [3.0.3]: https://github.com/sebastianbergmann/comparator/compare/3.0.2...3.0.3 diff --git a/vendor/sebastian/comparator/LICENSE b/vendor/sebastian/comparator/LICENSE index 46d0f2547..6ad70cbaf 100644 --- a/vendor/sebastian/comparator/LICENSE +++ b/vendor/sebastian/comparator/LICENSE @@ -1,6 +1,6 @@ Comparator -Copyright (c) 2002-2018, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2002-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/comparator/README.md b/vendor/sebastian/comparator/README.md index 524211af0..f6002db65 100644 --- a/vendor/sebastian/comparator/README.md +++ b/vendor/sebastian/comparator/README.md @@ -1,6 +1,7 @@ -[![Build Status](https://travis-ci.org/sebastianbergmann/comparator.svg?branch=master)](https://travis-ci.org/sebastianbergmann/comparator) +# sebastian/comparator -# Comparator +[![CI Status](https://github.com/sebastianbergmann/comparator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/comparator/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/comparator/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/comparator) This component provides the functionality to compare PHP values for equality. @@ -8,11 +9,15 @@ This component provides the functionality to compare PHP values for equality. You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/comparator +``` +composer require sebastian/comparator +``` 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 sebastian/comparator +``` +composer require --dev sebastian/comparator +``` ## Usage @@ -34,4 +39,3 @@ try { print "Dates don't match"; } ``` - diff --git a/vendor/sebastian/comparator/composer.json b/vendor/sebastian/comparator/composer.json index 00dfc2977..b758e03c9 100644 --- a/vendor/sebastian/comparator/composer.json +++ b/vendor/sebastian/comparator/composer.json @@ -24,14 +24,17 @@ ], "prefer-stable": true, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "config": { + "platform": { + "php": "7.3.0" + }, "optimize-autoloader": true, "sort-packages": true }, @@ -47,7 +50,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } } } diff --git a/vendor/sebastian/comparator/src/ArrayComparator.php b/vendor/sebastian/comparator/src/ArrayComparator.php index 4b2fadf9f..5d9fbce6e 100644 --- a/vendor/sebastian/comparator/src/ArrayComparator.php +++ b/vendor/sebastian/comparator/src/ArrayComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,8 +9,19 @@ */ namespace SebastianBergmann\Comparator; +use function array_key_exists; +use function is_array; +use function sort; +use function sprintf; +use function str_replace; +use function trim; + /** * Compares arrays for equality. + * + * Arrays are equal if they contain the same key-value pairs. + * The order of the keys does not matter. + * The types of key-value pairs do not matter. */ class ArrayComparator extends Comparator { @@ -24,11 +35,11 @@ class ArrayComparator extends Comparator */ public function accepts($expected, $actual) { - return \is_array($expected) && \is_array($actual); + return is_array($expected) && is_array($actual); } /** - * Asserts that two values are equal. + * Asserts that two arrays are equal. * * @param mixed $expected First value to compare * @param mixed $actual Second value to compare @@ -39,11 +50,11 @@ class ArrayComparator extends Comparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = []) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/ { if ($canonicalize) { - \sort($expected); - \sort($actual); + sort($expected); + sort($actual); } $remaining = $actual; @@ -54,8 +65,8 @@ class ArrayComparator extends Comparator foreach ($expected as $key => $value) { unset($remaining[$key]); - if (!\array_key_exists($key, $actual)) { - $expectedAsString .= \sprintf( + if (!array_key_exists($key, $actual)) { + $expectedAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $this->exporter->shortenedExport($value) @@ -70,25 +81,25 @@ class ArrayComparator extends Comparator $comparator = $this->factory->getComparatorFor($value, $actual[$key]); $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed); - $expectedAsString .= \sprintf( + $expectedAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $this->exporter->shortenedExport($value) ); - $actualAsString .= \sprintf( + $actualAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $this->exporter->shortenedExport($actual[$key]) ); } catch (ComparisonFailure $e) { - $expectedAsString .= \sprintf( + $expectedAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $e->getExpectedAsString() ? $this->indent($e->getExpectedAsString()) : $this->exporter->shortenedExport($e->getExpected()) ); - $actualAsString .= \sprintf( + $actualAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $e->getActualAsString() ? $this->indent($e->getActualAsString()) : $this->exporter->shortenedExport($e->getActual()) @@ -99,7 +110,7 @@ class ArrayComparator extends Comparator } foreach ($remaining as $key => $value) { - $actualAsString .= \sprintf( + $actualAsString .= sprintf( " %s => %s\n", $this->exporter->export($key), $this->exporter->shortenedExport($value) @@ -125,6 +136,6 @@ class ArrayComparator extends Comparator protected function indent($lines) { - return \trim(\str_replace("\n", "\n ", $lines)); + return trim(str_replace("\n", "\n ", $lines)); } } diff --git a/vendor/sebastian/comparator/src/Comparator.php b/vendor/sebastian/comparator/src/Comparator.php index 661746dc2..e1906c167 100644 --- a/vendor/sebastian/comparator/src/Comparator.php +++ b/vendor/sebastian/comparator/src/Comparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -31,7 +31,7 @@ abstract class Comparator $this->exporter = new Exporter; } - public function setFactory(Factory $factory) + public function setFactory(Factory $factory)/*: void*/ { $this->factory = $factory; } diff --git a/vendor/sebastian/comparator/src/ComparisonFailure.php b/vendor/sebastian/comparator/src/ComparisonFailure.php index d04328877..857314daa 100644 --- a/vendor/sebastian/comparator/src/ComparisonFailure.php +++ b/vendor/sebastian/comparator/src/ComparisonFailure.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,13 +9,14 @@ */ namespace SebastianBergmann\Comparator; +use RuntimeException; use SebastianBergmann\Diff\Differ; use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; /** * Thrown when an assertion for string equality failed. */ -class ComparisonFailure extends \RuntimeException +class ComparisonFailure extends RuntimeException { /** * Expected value of the retrieval which does not match $actual. @@ -32,14 +33,14 @@ class ComparisonFailure extends \RuntimeException protected $actual; /** - * The string representation of the expected value + * The string representation of the expected value. * * @var string */ protected $expectedAsString; /** - * The string representation of the actual value + * The string representation of the actual value. * * @var string */ diff --git a/vendor/sebastian/comparator/src/DOMNodeComparator.php b/vendor/sebastian/comparator/src/DOMNodeComparator.php index c0ad70c31..5bf854eae 100644 --- a/vendor/sebastian/comparator/src/DOMNodeComparator.php +++ b/vendor/sebastian/comparator/src/DOMNodeComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,8 +9,11 @@ */ namespace SebastianBergmann\Comparator; +use function sprintf; +use function strtolower; use DOMDocument; use DOMNode; +use ValueError; /** * Compares DOMNode instances for equality. @@ -42,7 +45,7 @@ class DOMNodeComparator extends ObjectComparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = []) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/ { $expectedAsString = $this->nodeToText($expected, true, $ignoreCase); $actualAsString = $this->nodeToText($actual, true, $ignoreCase); @@ -56,7 +59,7 @@ class DOMNodeComparator extends ObjectComparator $expectedAsString, $actualAsString, false, - \sprintf("Failed asserting that two DOM %s are equal.\n", $type) + sprintf("Failed asserting that two DOM %s are equal.\n", $type) ); } } @@ -69,7 +72,11 @@ class DOMNodeComparator extends ObjectComparator { if ($canonicalize) { $document = new DOMDocument; - @$document->loadXML($node->C14N()); + + try { + @$document->loadXML($node->C14N()); + } catch (ValueError $e) { + } $node = $document; } @@ -81,6 +88,6 @@ class DOMNodeComparator extends ObjectComparator $text = $node instanceof DOMDocument ? $node->saveXML() : $document->saveXML($node); - return $ignoreCase ? \strtolower($text) : $text; + return $ignoreCase ? strtolower($text) : $text; } } diff --git a/vendor/sebastian/comparator/src/DateTimeComparator.php b/vendor/sebastian/comparator/src/DateTimeComparator.php index af94b5cdb..0a303b623 100644 --- a/vendor/sebastian/comparator/src/DateTimeComparator.php +++ b/vendor/sebastian/comparator/src/DateTimeComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,15 @@ */ namespace SebastianBergmann\Comparator; +use function abs; +use function floor; +use function sprintf; +use DateInterval; +use DateTime; +use DateTimeInterface; +use DateTimeZone; +use Exception; + /** * Compares DateTimeInterface instances for equality. */ @@ -24,8 +33,8 @@ class DateTimeComparator extends ObjectComparator */ public function accepts($expected, $actual) { - return ($expected instanceof \DateTime || $expected instanceof \DateTimeInterface) && - ($actual instanceof \DateTime || $actual instanceof \DateTimeInterface); + return ($expected instanceof DateTime || $expected instanceof DateTimeInterface) && + ($actual instanceof DateTime || $actual instanceof DateTimeInterface); } /** @@ -38,26 +47,26 @@ class DateTimeComparator extends ObjectComparator * @param bool $ignoreCase Case is ignored when set to true * @param array $processed List of already processed elements (used to prevent infinite recursion) * - * @throws \Exception + * @throws Exception * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = []) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/ { - /** @var \DateTimeInterface $expected */ - /** @var \DateTimeInterface $actual */ - $absDelta = \abs($delta); - $delta = new \DateInterval(\sprintf('PT%dS', $absDelta)); - $delta->f = $absDelta - \floor($absDelta); + /** @var DateTimeInterface $expected */ + /** @var DateTimeInterface $actual */ + $absDelta = abs($delta); + $delta = new DateInterval(sprintf('PT%dS', $absDelta)); + $delta->f = $absDelta - floor($absDelta); $actualClone = (clone $actual) - ->setTimezone(new \DateTimeZone('UTC')); + ->setTimezone(new DateTimeZone('UTC')); $expectedLower = (clone $expected) - ->setTimezone(new \DateTimeZone('UTC')) + ->setTimezone(new DateTimeZone('UTC')) ->sub($delta); $expectedUpper = (clone $expected) - ->setTimezone(new \DateTimeZone('UTC')) + ->setTimezone(new DateTimeZone('UTC')) ->add($delta); if ($actualClone < $expectedLower || $actualClone > $expectedUpper) { @@ -77,7 +86,7 @@ class DateTimeComparator extends ObjectComparator * 'Invalid DateTimeInterface object' if the provided DateTimeInterface was not properly * initialized. */ - private function dateTimeToString(\DateTimeInterface $datetime): string + private function dateTimeToString(DateTimeInterface $datetime): string { $string = $datetime->format('Y-m-d\TH:i:s.uO'); diff --git a/vendor/sebastian/comparator/src/DoubleComparator.php b/vendor/sebastian/comparator/src/DoubleComparator.php index c84deabcd..423522193 100644 --- a/vendor/sebastian/comparator/src/DoubleComparator.php +++ b/vendor/sebastian/comparator/src/DoubleComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,9 @@ */ namespace SebastianBergmann\Comparator; +use function is_float; +use function is_numeric; + /** * Compares doubles for equality. * @@ -21,7 +24,7 @@ class DoubleComparator extends NumericComparator * * @var float */ - const EPSILON = 0.0000000001; + public const EPSILON = 0.0000000001; /** * Returns whether the comparator can compare two values. @@ -33,7 +36,7 @@ class DoubleComparator extends NumericComparator */ public function accepts($expected, $actual) { - return (\is_float($expected) || \is_float($actual)) && \is_numeric($expected) && \is_numeric($actual); + return (is_float($expected) || is_float($actual)) && is_numeric($expected) && is_numeric($actual); } /** @@ -47,7 +50,7 @@ class DoubleComparator extends NumericComparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { if ($delta == 0) { $delta = self::EPSILON; diff --git a/vendor/sebastian/comparator/src/ExceptionComparator.php b/vendor/sebastian/comparator/src/ExceptionComparator.php index 42c40cfcf..1fc0174ef 100644 --- a/vendor/sebastian/comparator/src/ExceptionComparator.php +++ b/vendor/sebastian/comparator/src/ExceptionComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Comparator; +use Exception; + /** * Compares Exception instances for equality. */ @@ -24,7 +26,7 @@ class ExceptionComparator extends ObjectComparator */ public function accepts($expected, $actual) { - return $expected instanceof \Exception && $actual instanceof \Exception; + return $expected instanceof Exception && $actual instanceof Exception; } /** diff --git a/vendor/sebastian/comparator/src/Factory.php b/vendor/sebastian/comparator/src/Factory.php index 0590d6bc7..6a8b5b442 100644 --- a/vendor/sebastian/comparator/src/Factory.php +++ b/vendor/sebastian/comparator/src/Factory.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Comparator; +use function array_unshift; + /** * Factory for comparators which compare values for equality. */ @@ -35,7 +37,7 @@ class Factory public static function getInstance() { if (self::$instance === null) { - self::$instance = new self; + self::$instance = new self; // @codeCoverageIgnore } return self::$instance; @@ -70,6 +72,8 @@ class Factory return $comparator; } } + + throw new RuntimeException('No suitable Comparator implementation found'); } /** @@ -82,9 +86,9 @@ class Factory * * @param Comparator $comparator The comparator to be registered */ - public function register(Comparator $comparator) + public function register(Comparator $comparator)/*: void*/ { - \array_unshift($this->customComparators, $comparator); + array_unshift($this->customComparators, $comparator); $comparator->setFactory($this); } @@ -96,7 +100,7 @@ class Factory * * @param Comparator $comparator The comparator to be unregistered */ - public function unregister(Comparator $comparator) + public function unregister(Comparator $comparator)/*: void*/ { foreach ($this->customComparators as $key => $_comparator) { if ($comparator === $_comparator) { @@ -108,12 +112,12 @@ class Factory /** * Unregisters all non-default comparators. */ - public function reset() + public function reset()/*: void*/ { $this->customComparators = []; } - private function registerDefaultComparators() + private function registerDefaultComparators(): void { $this->registerDefaultComparator(new MockObjectComparator); $this->registerDefaultComparator(new DateTimeComparator); @@ -128,7 +132,7 @@ class Factory $this->registerDefaultComparator(new TypeComparator); } - private function registerDefaultComparator(Comparator $comparator) + private function registerDefaultComparator(Comparator $comparator): void { $this->defaultComparators[] = $comparator; diff --git a/vendor/sebastian/comparator/src/MockObjectComparator.php b/vendor/sebastian/comparator/src/MockObjectComparator.php index f439d842f..cb6703161 100644 --- a/vendor/sebastian/comparator/src/MockObjectComparator.php +++ b/vendor/sebastian/comparator/src/MockObjectComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,8 +9,10 @@ */ namespace SebastianBergmann\Comparator; +use PHPUnit\Framework\MockObject\MockObject; + /** - * Compares PHPUnit_Framework_MockObject_MockObject instances for equality. + * Compares PHPUnit\Framework\MockObject\MockObject instances for equality. */ class MockObjectComparator extends ObjectComparator { @@ -24,8 +26,7 @@ class MockObjectComparator extends ObjectComparator */ public function accepts($expected, $actual) { - return ($expected instanceof \PHPUnit_Framework_MockObject_MockObject || $expected instanceof \PHPUnit\Framework\MockObject\MockObject) && - ($actual instanceof \PHPUnit_Framework_MockObject_MockObject || $actual instanceof \PHPUnit\Framework\MockObject\MockObject); + return $expected instanceof MockObject && $actual instanceof MockObject; } /** diff --git a/vendor/sebastian/comparator/src/NumericComparator.php b/vendor/sebastian/comparator/src/NumericComparator.php index b7db879ad..841881c99 100644 --- a/vendor/sebastian/comparator/src/NumericComparator.php +++ b/vendor/sebastian/comparator/src/NumericComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,14 @@ */ namespace SebastianBergmann\Comparator; +use function abs; +use function is_float; +use function is_infinite; +use function is_nan; +use function is_numeric; +use function is_string; +use function sprintf; + /** * Compares numerical values for equality. */ @@ -25,8 +33,8 @@ class NumericComparator extends ScalarComparator public function accepts($expected, $actual) { // all numerical values, but not if both of them are strings - return \is_numeric($expected) && \is_numeric($actual) && - !(\is_string($expected) && \is_string($actual)); + return is_numeric($expected) && is_numeric($actual) && + !(is_string($expected) && is_string($actual)); } /** @@ -40,22 +48,22 @@ class NumericComparator extends ScalarComparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { - if (\is_infinite($actual) && \is_infinite($expected)) { - return; // @codeCoverageIgnore + if ($this->isInfinite($actual) && $this->isInfinite($expected)) { + return; } - if ((\is_infinite($actual) xor \is_infinite($expected)) || - (\is_nan($actual) || \is_nan($expected)) || - \abs($actual - $expected) > $delta) { + if (($this->isInfinite($actual) xor $this->isInfinite($expected)) || + ($this->isNan($actual) || $this->isNan($expected)) || + abs($actual - $expected) > $delta) { throw new ComparisonFailure( $expected, $actual, '', '', false, - \sprintf( + sprintf( 'Failed asserting that %s matches expected %s.', $this->exporter->export($actual), $this->exporter->export($expected) @@ -63,4 +71,14 @@ class NumericComparator extends ScalarComparator ); } } + + private function isInfinite($value): bool + { + return is_float($value) && is_infinite($value); + } + + private function isNan($value): bool + { + return is_float($value) && is_nan($value); + } } diff --git a/vendor/sebastian/comparator/src/ObjectComparator.php b/vendor/sebastian/comparator/src/ObjectComparator.php index 54fce8244..9380ba150 100644 --- a/vendor/sebastian/comparator/src/ObjectComparator.php +++ b/vendor/sebastian/comparator/src/ObjectComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,12 @@ */ namespace SebastianBergmann\Comparator; +use function get_class; +use function in_array; +use function is_object; +use function sprintf; +use function substr_replace; + /** * Compares objects for equality. */ @@ -24,7 +30,7 @@ class ObjectComparator extends ArrayComparator */ public function accepts($expected, $actual) { - return \is_object($expected) && \is_object($actual); + return is_object($expected) && is_object($actual); } /** @@ -39,26 +45,26 @@ class ObjectComparator extends ArrayComparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = []) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/ { - if (\get_class($actual) !== \get_class($expected)) { + if (get_class($actual) !== get_class($expected)) { throw new ComparisonFailure( $expected, $actual, $this->exporter->export($expected), $this->exporter->export($actual), false, - \sprintf( + sprintf( '%s is not instance of expected class "%s".', $this->exporter->export($actual), - \get_class($expected) + get_class($expected) ) ); } // don't compare twice to allow for cyclic dependencies - if (\in_array([$actual, $expected], $processed, true) || - \in_array([$expected, $actual], $processed, true)) { + if (in_array([$actual, $expected], $processed, true) || + in_array([$expected, $actual], $processed, true)) { return; } @@ -82,8 +88,8 @@ class ObjectComparator extends ArrayComparator $expected, $actual, // replace "Array" with "MyClass object" - \substr_replace($e->getExpectedAsString(), \get_class($expected) . ' Object', 0, 5), - \substr_replace($e->getActualAsString(), \get_class($actual) . ' Object', 0, 5), + substr_replace($e->getExpectedAsString(), get_class($expected) . ' Object', 0, 5), + substr_replace($e->getActualAsString(), get_class($actual) . ' Object', 0, 5), false, 'Failed asserting that two objects are equal.' ); diff --git a/vendor/sebastian/comparator/src/ResourceComparator.php b/vendor/sebastian/comparator/src/ResourceComparator.php index 547182643..7822598b1 100644 --- a/vendor/sebastian/comparator/src/ResourceComparator.php +++ b/vendor/sebastian/comparator/src/ResourceComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Comparator; +use function is_resource; + /** * Compares resources for equality. */ @@ -24,7 +26,7 @@ class ResourceComparator extends Comparator */ public function accepts($expected, $actual) { - return \is_resource($expected) && \is_resource($actual); + return is_resource($expected) && is_resource($actual); } /** @@ -38,7 +40,7 @@ class ResourceComparator extends Comparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { if ($actual != $expected) { throw new ComparisonFailure( diff --git a/vendor/sebastian/comparator/src/ScalarComparator.php b/vendor/sebastian/comparator/src/ScalarComparator.php index 02f398647..7f131229a 100644 --- a/vendor/sebastian/comparator/src/ScalarComparator.php +++ b/vendor/sebastian/comparator/src/ScalarComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,14 @@ */ namespace SebastianBergmann\Comparator; +use function is_bool; +use function is_object; +use function is_scalar; +use function is_string; +use function method_exists; +use function sprintf; +use function strtolower; + /** * Compares scalar or NULL values for equality. */ @@ -26,11 +34,11 @@ class ScalarComparator extends Comparator */ public function accepts($expected, $actual) { - return ((\is_scalar($expected) xor null === $expected) && - (\is_scalar($actual) xor null === $actual)) + return ((is_scalar($expected) xor null === $expected) && + (is_scalar($actual) xor null === $actual)) // allow comparison between strings and objects featuring __toString() - || (\is_string($expected) && \is_object($actual) && \method_exists($actual, '__toString')) - || (\is_object($expected) && \method_exists($expected, '__toString') && \is_string($actual)); + || (is_string($expected) && is_object($actual) && method_exists($actual, '__toString')) + || (is_object($expected) && method_exists($expected, '__toString') && is_string($actual)); } /** @@ -44,24 +52,24 @@ class ScalarComparator extends Comparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { $expectedToCompare = $expected; $actualToCompare = $actual; // always compare as strings to avoid strange behaviour // otherwise 0 == 'Foobar' - if ((\is_string($expected) && !\is_bool($actual)) || (\is_string($actual) && !\is_bool($expected))) { + if ((is_string($expected) && !is_bool($actual)) || (is_string($actual) && !is_bool($expected))) { $expectedToCompare = (string) $expectedToCompare; $actualToCompare = (string) $actualToCompare; if ($ignoreCase) { - $expectedToCompare = \strtolower($expectedToCompare); - $actualToCompare = \strtolower($actualToCompare); + $expectedToCompare = strtolower($expectedToCompare); + $actualToCompare = strtolower($actualToCompare); } } - if ($expectedToCompare !== $actualToCompare && \is_string($expected) && \is_string($actual)) { + if ($expectedToCompare !== $actualToCompare && is_string($expected) && is_string($actual)) { throw new ComparisonFailure( $expected, $actual, @@ -80,7 +88,7 @@ class ScalarComparator extends Comparator '', '', false, - \sprintf( + sprintf( 'Failed asserting that %s matches expected %s.', $this->exporter->export($actual), $this->exporter->export($expected) diff --git a/vendor/sebastian/comparator/src/SplObjectStorageComparator.php b/vendor/sebastian/comparator/src/SplObjectStorageComparator.php index 5900d57f2..d9b6f541a 100644 --- a/vendor/sebastian/comparator/src/SplObjectStorageComparator.php +++ b/vendor/sebastian/comparator/src/SplObjectStorageComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Comparator; +use SplObjectStorage; + /** * Compares \SplObjectStorage instances for equality. */ @@ -24,7 +26,7 @@ class SplObjectStorageComparator extends Comparator */ public function accepts($expected, $actual) { - return $expected instanceof \SplObjectStorage && $actual instanceof \SplObjectStorage; + return $expected instanceof SplObjectStorage && $actual instanceof SplObjectStorage; } /** @@ -38,7 +40,7 @@ class SplObjectStorageComparator extends Comparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { foreach ($actual as $object) { if (!$expected->contains($object)) { diff --git a/vendor/sebastian/comparator/src/TypeComparator.php b/vendor/sebastian/comparator/src/TypeComparator.php index e7f551f89..b0d38d72e 100644 --- a/vendor/sebastian/comparator/src/TypeComparator.php +++ b/vendor/sebastian/comparator/src/TypeComparator.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of sebastian/comparator. * @@ -9,6 +9,9 @@ */ namespace SebastianBergmann\Comparator; +use function gettype; +use function sprintf; + /** * Compares values for type equality. */ @@ -38,9 +41,9 @@ class TypeComparator extends Comparator * * @throws ComparisonFailure */ - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/ { - if (\gettype($expected) != \gettype($actual)) { + if (gettype($expected) != gettype($actual)) { throw new ComparisonFailure( $expected, $actual, @@ -48,10 +51,10 @@ class TypeComparator extends Comparator '', '', false, - \sprintf( + sprintf( '%s does not match expected type "%s".', $this->exporter->shortenedExport($actual), - \gettype($expected) + gettype($expected) ) ); } diff --git a/vendor/sebastian/comparator/src/exceptions/Exception.php b/vendor/sebastian/comparator/src/exceptions/Exception.php new file mode 100644 index 000000000..8975aaf1b --- /dev/null +++ b/vendor/sebastian/comparator/src/exceptions/Exception.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/comparator. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Comparator; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/sebastian/comparator/src/exceptions/RuntimeException.php b/vendor/sebastian/comparator/src/exceptions/RuntimeException.php new file mode 100644 index 000000000..ca726084a --- /dev/null +++ b/vendor/sebastian/comparator/src/exceptions/RuntimeException.php @@ -0,0 +1,14 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/comparator. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Comparator; + +final class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/complexity/.psalm/baseline.xml b/vendor/sebastian/complexity/.psalm/baseline.xml new file mode 100644 index 000000000..77e688e07 --- /dev/null +++ b/vendor/sebastian/complexity/.psalm/baseline.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/> diff --git a/vendor/sebastian/complexity/.psalm/config.xml b/vendor/sebastian/complexity/.psalm/config.xml new file mode 100644 index 000000000..8172fe15a --- /dev/null +++ b/vendor/sebastian/complexity/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + errorBaseline=".psalm/baseline.xml" + totallyTyped="true" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/complexity/ChangeLog.md b/vendor/sebastian/complexity/ChangeLog.md new file mode 100644 index 000000000..cb93ff620 --- /dev/null +++ b/vendor/sebastian/complexity/ChangeLog.md @@ -0,0 +1,30 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [2.0.2] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Complexity\Exception` now correctly extends `\Throwable` + +## [2.0.1] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [2.0.0] - 2020-07-25 + +### Removed + +* The `ParentConnectingVisitor` has been removed (it should have been marked as `@internal`) + +## [1.0.0] - 2020-07-22 + +* Initial release + +[2.0.2]: https://github.com/sebastianbergmann/complexity/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/sebastianbergmann/complexity/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/sebastianbergmann/complexity/compare/1.0.0...2.0.0 +[1.0.0]: https://github.com/sebastianbergmann/complexity/compare/70ee0ad32d9e2be3f85beffa3e2eb474193f2487...1.0.0 diff --git a/vendor/sebastian/complexity/LICENSE b/vendor/sebastian/complexity/LICENSE new file mode 100644 index 000000000..5f818df69 --- /dev/null +++ b/vendor/sebastian/complexity/LICENSE @@ -0,0 +1,33 @@ +sebastian/complexity + +Copyright (c) 2020, Sebastian Bergmann <sebastian@phpunit.de>. +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/sebastian/complexity/README.md b/vendor/sebastian/complexity/README.md new file mode 100644 index 000000000..5f53b0b5d --- /dev/null +++ b/vendor/sebastian/complexity/README.md @@ -0,0 +1,22 @@ +# sebastian/complexity + +Library for calculating the complexity of PHP code units. + +[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/complexity.svg?style=flat-square)](https://packagist.org/packages/sebastian/complexity) +[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/) +[![CI Status](https://github.com/sebastianbergmann/complexity/workflows/CI/badge.svg?branch=master&event=push)](https://phpunit.de/build-status.html) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/complexity/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/complexity) + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require sebastian/complexity +``` + +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 sebastian/complexity +``` diff --git a/vendor/sebastian/complexity/composer.json b/vendor/sebastian/complexity/composer.json new file mode 100644 index 000000000..7aa38314e --- /dev/null +++ b/vendor/sebastian/complexity/composer.json @@ -0,0 +1,41 @@ +{ + "name": "sebastian/complexity", + "description": "Library for calculating the complexity of PHP code units", + "type": "library", + "homepage": "https://github.com/sebastianbergmann/complexity", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues" + }, + "require": { + "php": ">=7.3", + "nikic/php-parser": "^4.7" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + } +} diff --git a/vendor/sebastian/complexity/src/Calculator.php b/vendor/sebastian/complexity/src/Calculator.php new file mode 100644 index 000000000..9abdcd169 --- /dev/null +++ b/vendor/sebastian/complexity/src/Calculator.php @@ -0,0 +1,88 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use PhpParser\Error; +use PhpParser\Lexer; +use PhpParser\Node; +use PhpParser\NodeTraverser; +use PhpParser\NodeVisitor\NameResolver; +use PhpParser\NodeVisitor\ParentConnectingVisitor; +use PhpParser\Parser; +use PhpParser\ParserFactory; + +final class Calculator +{ + /** + * @throws RuntimeException + */ + public function calculateForSourceFile(string $sourceFile): ComplexityCollection + { + return $this->calculateForSourceString(file_get_contents($sourceFile)); + } + + /** + * @throws RuntimeException + */ + public function calculateForSourceString(string $source): ComplexityCollection + { + try { + $nodes = $this->parser()->parse($source); + + assert($nodes !== null); + + return $this->calculateForAbstractSyntaxTree($nodes); + + // @codeCoverageIgnoreStart + } catch (Error $error) { + throw new RuntimeException( + $error->getMessage(), + (int) $error->getCode(), + $error + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @param Node[] $nodes + * + * @throws RuntimeException + */ + public function calculateForAbstractSyntaxTree(array $nodes): ComplexityCollection + { + $traverser = new NodeTraverser; + $complexityCalculatingVisitor = new ComplexityCalculatingVisitor(true); + + $traverser->addVisitor(new NameResolver); + $traverser->addVisitor(new ParentConnectingVisitor); + $traverser->addVisitor($complexityCalculatingVisitor); + + try { + /* @noinspection UnusedFunctionResultInspection */ + $traverser->traverse($nodes); + // @codeCoverageIgnoreStart + } catch (Error $error) { + throw new RuntimeException( + $error->getMessage(), + (int) $error->getCode(), + $error + ); + } + // @codeCoverageIgnoreEnd + + return $complexityCalculatingVisitor->result(); + } + + private function parser(): Parser + { + return (new ParserFactory)->create(ParserFactory::PREFER_PHP7, new Lexer); + } +} diff --git a/vendor/sebastian/complexity/src/Complexity/Complexity.php b/vendor/sebastian/complexity/src/Complexity/Complexity.php new file mode 100644 index 000000000..dc6708dde --- /dev/null +++ b/vendor/sebastian/complexity/src/Complexity/Complexity.php @@ -0,0 +1,42 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +/** + * @psalm-immutable + */ +final class Complexity +{ + /** + * @var string + */ + private $name; + + /** + * @var int + */ + private $cyclomaticComplexity; + + public function __construct(string $name, int $cyclomaticComplexity) + { + $this->name = $name; + $this->cyclomaticComplexity = $cyclomaticComplexity; + } + + public function name(): string + { + return $this->name; + } + + public function cyclomaticComplexity(): int + { + return $this->cyclomaticComplexity; + } +} diff --git a/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php b/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php new file mode 100644 index 000000000..ccbddbf77 --- /dev/null +++ b/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php @@ -0,0 +1,72 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use function count; +use Countable; +use IteratorAggregate; + +/** + * @psalm-immutable + */ +final class ComplexityCollection implements Countable, IteratorAggregate +{ + /** + * @psalm-var list<Complexity> + */ + private $items = []; + + public static function fromList(Complexity ...$items): self + { + return new self($items); + } + + /** + * @psalm-param list<Complexity> $items + */ + private function __construct(array $items) + { + $this->items = $items; + } + + /** + * @psalm-return list<Complexity> + */ + public function asArray(): array + { + return $this->items; + } + + public function getIterator(): ComplexityCollectionIterator + { + return new ComplexityCollectionIterator($this); + } + + public function count(): int + { + return count($this->items); + } + + public function isEmpty(): bool + { + return empty($this->items); + } + + public function cyclomaticComplexity(): int + { + $cyclomaticComplexity = 0; + + foreach ($this as $item) { + $cyclomaticComplexity += $item->cyclomaticComplexity(); + } + + return $cyclomaticComplexity; + } +} diff --git a/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php b/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php new file mode 100644 index 000000000..ec39e199f --- /dev/null +++ b/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php @@ -0,0 +1,55 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use Iterator; + +final class ComplexityCollectionIterator implements Iterator +{ + /** + * @psalm-var list<Complexity> + */ + private $items; + + /** + * @var int + */ + private $position = 0; + + public function __construct(ComplexityCollection $items) + { + $this->items = $items->asArray(); + } + + public function rewind(): void + { + $this->position = 0; + } + + public function valid(): bool + { + return isset($this->items[$this->position]); + } + + public function key(): int + { + return $this->position; + } + + public function current(): Complexity + { + return $this->items[$this->position]; + } + + public function next(): void + { + $this->position++; + } +} diff --git a/vendor/sebastian/complexity/src/Exception/Exception.php b/vendor/sebastian/complexity/src/Exception/Exception.php new file mode 100644 index 000000000..897ecdcf7 --- /dev/null +++ b/vendor/sebastian/complexity/src/Exception/Exception.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/sebastian/complexity/src/Exception/RuntimeException.php b/vendor/sebastian/complexity/src/Exception/RuntimeException.php new file mode 100644 index 000000000..6c68a6f0f --- /dev/null +++ b/vendor/sebastian/complexity/src/Exception/RuntimeException.php @@ -0,0 +1,14 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +final class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php b/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php new file mode 100644 index 000000000..b69f2b09f --- /dev/null +++ b/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php @@ -0,0 +1,109 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use function assert; +use function is_array; +use PhpParser\Node; +use PhpParser\Node\Name; +use PhpParser\Node\Stmt; +use PhpParser\Node\Stmt\Class_; +use PhpParser\Node\Stmt\ClassMethod; +use PhpParser\Node\Stmt\Function_; +use PhpParser\Node\Stmt\Trait_; +use PhpParser\NodeTraverser; +use PhpParser\NodeVisitorAbstract; + +final class ComplexityCalculatingVisitor extends NodeVisitorAbstract +{ + /** + * @psalm-var list<Complexity> + */ + private $result = []; + + /** + * @var bool + */ + private $shortCircuitTraversal; + + public function __construct(bool $shortCircuitTraversal) + { + $this->shortCircuitTraversal = $shortCircuitTraversal; + } + + public function enterNode(Node $node): ?int + { + if (!$node instanceof ClassMethod && !$node instanceof Function_) { + return null; + } + + if ($node instanceof ClassMethod) { + $name = $this->classMethodName($node); + } else { + $name = $this->functionName($node); + } + + $statements = $node->getStmts(); + + assert(is_array($statements)); + + $this->result[] = new Complexity( + $name, + $this->cyclomaticComplexity($statements) + ); + + if ($this->shortCircuitTraversal) { + return NodeTraverser::DONT_TRAVERSE_CHILDREN; + } + + return null; + } + + public function result(): ComplexityCollection + { + return ComplexityCollection::fromList(...$this->result); + } + + /** + * @param Stmt[] $statements + */ + private function cyclomaticComplexity(array $statements): int + { + $traverser = new NodeTraverser; + + $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor; + + $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor); + + /* @noinspection UnusedFunctionResultInspection */ + $traverser->traverse($statements); + + return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity(); + } + + private function classMethodName(ClassMethod $node): string + { + $parent = $node->getAttribute('parent'); + + assert($parent instanceof Class_ || $parent instanceof Trait_); + assert(isset($parent->namespacedName)); + assert($parent->namespacedName instanceof Name); + + return $parent->namespacedName->toString() . '::' . $node->name->toString(); + } + + private function functionName(Function_ $node): string + { + assert(isset($node->namespacedName)); + assert($node->namespacedName instanceof Name); + + return $node->namespacedName->toString(); + } +} diff --git a/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php b/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php new file mode 100644 index 000000000..d4430876d --- /dev/null +++ b/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php @@ -0,0 +1,59 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/complexity. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Complexity; + +use function get_class; +use PhpParser\Node; +use PhpParser\Node\Expr\BinaryOp\BooleanAnd; +use PhpParser\Node\Expr\BinaryOp\BooleanOr; +use PhpParser\Node\Expr\BinaryOp\LogicalAnd; +use PhpParser\Node\Expr\BinaryOp\LogicalOr; +use PhpParser\Node\Expr\Ternary; +use PhpParser\Node\Stmt\Case_; +use PhpParser\Node\Stmt\Catch_; +use PhpParser\Node\Stmt\ElseIf_; +use PhpParser\Node\Stmt\For_; +use PhpParser\Node\Stmt\Foreach_; +use PhpParser\Node\Stmt\If_; +use PhpParser\Node\Stmt\While_; +use PhpParser\NodeVisitorAbstract; + +final class CyclomaticComplexityCalculatingVisitor extends NodeVisitorAbstract +{ + /** + * @var int + */ + private $cyclomaticComplexity = 1; + + public function enterNode(Node $node): void + { + /* @noinspection GetClassMissUseInspection */ + switch (get_class($node)) { + case BooleanAnd::class: + case BooleanOr::class: + case Case_::class: + case Catch_::class: + case ElseIf_::class: + case For_::class: + case Foreach_::class: + case If_::class: + case LogicalAnd::class: + case LogicalOr::class: + case Ternary::class: + case While_::class: + $this->cyclomaticComplexity++; + } + } + + public function cyclomaticComplexity(): int + { + return $this->cyclomaticComplexity; + } +} diff --git a/vendor/sebastian/diff/.github/stale.yml b/vendor/sebastian/diff/.github/stale.yml deleted file mode 100644 index 1c523ab30..000000000 --- a/vendor/sebastian/diff/.github/stale.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - enhancement - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: wontfix - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had activity within the last 60 days. It will be closed after 7 days if no further activity occurs. Thank you for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This issue has been automatically closed because it has not had activity since it was marked as stale. Thank you for your contributions. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - diff --git a/vendor/sebastian/diff/.gitignore b/vendor/sebastian/diff/.gitignore deleted file mode 100644 index 35dc21185..000000000 --- a/vendor/sebastian/diff/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/.idea -/composer.lock -/vendor -/.php_cs.cache -/.phpunit.result.cache -/from.txt.orig \ No newline at end of file diff --git a/vendor/sebastian/diff/.php_cs.dist b/vendor/sebastian/diff/.php_cs.dist deleted file mode 100644 index 921460756..000000000 --- a/vendor/sebastian/diff/.php_cs.dist +++ /dev/null @@ -1,168 +0,0 @@ -<?php declare(strict_types=1); -$header = <<<'EOF' -This file is part of sebastian/diff. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['method']], - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'no_alias_functions' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_null_property_initialization' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => true, - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/sebastian/diff/.travis.yml b/vendor/sebastian/diff/.travis.yml deleted file mode 100644 index 13cd9ff83..000000000 --- a/vendor/sebastian/diff/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -language: php - -php: - - 7.1 - - 7.2 - - 7.3 - - master - -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: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false - diff --git a/vendor/sebastian/diff/ChangeLog.md b/vendor/sebastian/diff/ChangeLog.md index 88332f7da..9bdcc5b6d 100644 --- a/vendor/sebastian/diff/ChangeLog.md +++ b/vendor/sebastian/diff/ChangeLog.md @@ -2,11 +2,35 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [3.0.3] - 2020-11-30 +## [4.0.4] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Diff\Exception` now correctly extends `\Throwable` + +## [4.0.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [4.0.2] - 2020-06-30 + +### Added + +* This component is now supported on PHP 8 + +## [4.0.1] - 2020-05-08 + +### Fixed + +* [#99](https://github.com/sebastianbergmann/diff/pull/99): Regression in unified diff output of identical strings + +## [4.0.0] - 2020-02-07 + +### Removed + +* Removed support for PHP 7.1 and PHP 7.2 ## [3.0.2] - 2019-02-04 @@ -34,25 +58,29 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt ### Fixed -* Fixed [#70](https://github.com/sebastianbergmann/diff/issues/70): Diffing of arrays no longer works +* [#70](https://github.com/sebastianbergmann/diff/issues/70): Diffing of arrays no longer works ## [2.0.1] - 2017-08-03 ### Fixed -* Fixed [#66](https://github.com/sebastianbergmann/diff/pull/66): Restored backwards compatibility for PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 +* [#66](https://github.com/sebastianbergmann/diff/pull/66): Restored backwards compatibility for PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 ## [2.0.0] - 2017-07-11 [YANKED] ### Added -* Implemented [#64](https://github.com/sebastianbergmann/diff/pull/64): Show line numbers for chunks of a diff +* [#64](https://github.com/sebastianbergmann/diff/pull/64): Show line numbers for chunks of a diff ### Removed * This component is no longer supported on PHP 5.6 -[3.0.3]: https://github.com/sebastianbergmann/diff/compare/3.0.2...3.0.3 +[4.0.4]: https://github.com/sebastianbergmann/diff/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/diff/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/diff/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/diff/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/diff/compare/3.0.2...4.0.0 [3.0.2]: https://github.com/sebastianbergmann/diff/compare/3.0.1...3.0.2 [3.0.1]: https://github.com/sebastianbergmann/diff/compare/3.0.0...3.0.1 [3.0.0]: https://github.com/sebastianbergmann/diff/compare/2.0...3.0.0 diff --git a/vendor/sebastian/diff/LICENSE b/vendor/sebastian/diff/LICENSE index 3ad1d7c3c..f22f31cf0 100644 --- a/vendor/sebastian/diff/LICENSE +++ b/vendor/sebastian/diff/LICENSE @@ -1,6 +1,6 @@ sebastian/diff -Copyright (c) 2002-2019, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2002-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/diff/README.md b/vendor/sebastian/diff/README.md index 78dbecd5d..734b852de 100644 --- a/vendor/sebastian/diff/README.md +++ b/vendor/sebastian/diff/README.md @@ -1,16 +1,23 @@ # sebastian/diff +[![CI Status](https://github.com/sebastianbergmann/diff/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/diff/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/diff/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/diff) + Diff implementation for PHP, factored out of PHPUnit into a stand-alone component. ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/diff +``` +composer require sebastian/diff +``` 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 sebastian/diff +``` +composer require --dev sebastian/diff +``` ### Usage @@ -37,7 +44,7 @@ The code above yields the output below: There are three output builders available in this package: -#### UnifiedDiffOutputBuilder +#### UnifiedDiffOutputBuilder This is default builder, which generates the output close to udiff and is used by PHPUnit. @@ -101,7 +108,7 @@ print $differ->diff('foo', 'bar'); #### DiffOutputBuilderInterface -You can pass any output builder to the `Differ` class as longs as it implements the `DiffOutputBuilderInterface`. +You can pass any output builder to the `Differ` class as longs as it implements the `DiffOutputBuilderInterface`. #### Parsing diff diff --git a/vendor/sebastian/diff/build.xml b/vendor/sebastian/diff/build.xml deleted file mode 100644 index fa7b7e2b9..000000000 --- a/vendor/sebastian/diff/build.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="diff" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - <arg value="--optimize-autoloader"/> - <arg value="--prefer-stable"/> - </exec> - </target> -</project> - diff --git a/vendor/sebastian/diff/composer.json b/vendor/sebastian/diff/composer.json index fe2d77fe3..cf92202ba 100644 --- a/vendor/sebastian/diff/composer.json +++ b/vendor/sebastian/diff/composer.json @@ -14,12 +14,20 @@ "email": "mail@kore-nordmann.de" } ], + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "autoload": { "classmap": [ @@ -33,7 +41,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } } } diff --git a/vendor/sebastian/diff/phpunit.xml b/vendor/sebastian/diff/phpunit.xml deleted file mode 100644 index 3e12be416..000000000 --- a/vendor/sebastian/diff/phpunit.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.2/phpunit.xsd" - bootstrap="vendor/autoload.php" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuites> - <testsuite name="default"> - <directory suffix="Test.php">tests</directory> - </testsuite> - </testsuites> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/diff/src/Chunk.php b/vendor/sebastian/diff/src/Chunk.php index d030954ab..16ae34f41 100644 --- a/vendor/sebastian/diff/src/Chunk.php +++ b/vendor/sebastian/diff/src/Chunk.php @@ -7,7 +7,6 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; final class Chunk diff --git a/vendor/sebastian/diff/src/Diff.php b/vendor/sebastian/diff/src/Diff.php index 3029e5915..17b2084f9 100644 --- a/vendor/sebastian/diff/src/Diff.php +++ b/vendor/sebastian/diff/src/Diff.php @@ -7,7 +7,6 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; final class Diff @@ -28,8 +27,6 @@ final class Diff private $chunks; /** - * @param string $from - * @param string $to * @param Chunk[] $chunks */ public function __construct(string $from, string $to, array $chunks = []) diff --git a/vendor/sebastian/diff/src/Differ.php b/vendor/sebastian/diff/src/Differ.php index 3c90a5a13..5a4d9d102 100644 --- a/vendor/sebastian/diff/src/Differ.php +++ b/vendor/sebastian/diff/src/Differ.php @@ -7,21 +7,42 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; +use const PHP_INT_SIZE; +use const PREG_SPLIT_DELIM_CAPTURE; +use const PREG_SPLIT_NO_EMPTY; +use function array_shift; +use function array_unshift; +use function array_values; +use function count; +use function current; +use function end; +use function get_class; +use function gettype; +use function is_array; +use function is_object; +use function is_string; +use function key; +use function min; +use function preg_split; +use function prev; +use function reset; +use function sprintf; +use function substr; use SebastianBergmann\Diff\Output\DiffOutputBuilderInterface; use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; -/** - * Diff implementation. - */ final class Differ { public const OLD = 0; + public const ADDED = 1; + public const REMOVED = 2; + public const DIFF_LINE_END_WARNING = 3; + public const NO_LINE_END_EOF_WARNING = 4; /** @@ -40,16 +61,16 @@ final class Differ $this->outputBuilder = $outputBuilder; } elseif (null === $outputBuilder) { $this->outputBuilder = new UnifiedDiffOutputBuilder; - } elseif (\is_string($outputBuilder)) { + } elseif (is_string($outputBuilder)) { // PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 support // @see https://github.com/sebastianbergmann/phpunit/issues/2734#issuecomment-314514056 // @deprecated $this->outputBuilder = new UnifiedDiffOutputBuilder($outputBuilder); } else { throw new InvalidArgumentException( - \sprintf( + sprintf( 'Expected builder to be an instance of DiffOutputBuilderInterface, <null> or a string, got %s.', - \is_object($outputBuilder) ? 'instance of "' . \get_class($outputBuilder) . '"' : \gettype($outputBuilder) . ' "' . $outputBuilder . '"' + is_object($outputBuilder) ? 'instance of "' . get_class($outputBuilder) . '"' : gettype($outputBuilder) . ' "' . $outputBuilder . '"' ) ); } @@ -58,11 +79,8 @@ final class Differ /** * Returns the diff between two arrays or strings as string. * - * @param array|string $from - * @param array|string $to - * @param null|LongestCommonSubsequenceCalculator $lcs - * - * @return string + * @param array|string $from + * @param array|string $to */ public function diff($from, $to, LongestCommonSubsequenceCalculator $lcs = null): string { @@ -89,20 +107,18 @@ final class Differ * @param array|string $from * @param array|string $to * @param LongestCommonSubsequenceCalculator $lcs - * - * @return array */ public function diffToArray($from, $to, LongestCommonSubsequenceCalculator $lcs = null): array { - if (\is_string($from)) { + if (is_string($from)) { $from = $this->splitStringByLines($from); - } elseif (!\is_array($from)) { + } elseif (!is_array($from)) { throw new InvalidArgumentException('"from" must be an array or string.'); } - if (\is_string($to)) { + if (is_string($to)) { $to = $this->splitStringByLines($to); - } elseif (!\is_array($to)) { + } elseif (!is_array($to)) { throw new InvalidArgumentException('"to" must be an array or string.'); } @@ -112,36 +128,36 @@ final class Differ $lcs = $this->selectLcsImplementation($from, $to); } - $common = $lcs->calculate(\array_values($from), \array_values($to)); + $common = $lcs->calculate(array_values($from), array_values($to)); $diff = []; foreach ($start as $token) { $diff[] = [$token, self::OLD]; } - \reset($from); - \reset($to); + reset($from); + reset($to); foreach ($common as $token) { - while (($fromToken = \reset($from)) !== $token) { - $diff[] = [\array_shift($from), self::REMOVED]; + while (($fromToken = reset($from)) !== $token) { + $diff[] = [array_shift($from), self::REMOVED]; } - while (($toToken = \reset($to)) !== $token) { - $diff[] = [\array_shift($to), self::ADDED]; + while (($toToken = reset($to)) !== $token) { + $diff[] = [array_shift($to), self::ADDED]; } $diff[] = [$token, self::OLD]; - \array_shift($from); - \array_shift($to); + array_shift($from); + array_shift($to); } - while (($token = \array_shift($from)) !== null) { + while (($token = array_shift($from)) !== null) { $diff[] = [$token, self::REMOVED]; } - while (($token = \array_shift($to)) !== null) { + while (($token = array_shift($to)) !== null) { $diff[] = [$token, self::ADDED]; } @@ -150,7 +166,7 @@ final class Differ } if ($this->detectUnmatchedLineEndings($diff)) { - \array_unshift($diff, ["#Warning: Strings contain different line endings!\n", self::DIFF_LINE_END_WARNING]); + array_unshift($diff, ["#Warning: Strings contain different line endings!\n", self::DIFF_LINE_END_WARNING]); } return $diff; @@ -159,13 +175,11 @@ final class Differ /** * Casts variable to string if it is not a string or array. * - * @param mixed $input - * * @return array|string */ private function normalizeDiffInput($input) { - if (!\is_array($input) && !\is_string($input)) { + if (!is_array($input) && !is_string($input)) { return (string) $input; } @@ -174,22 +188,12 @@ final class Differ /** * Checks if input is string, if so it will split it line-by-line. - * - * @param string $input - * - * @return array */ private function splitStringByLines(string $input): array { - return \preg_split('/(.*\R)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); + return preg_split('/(.*\R)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); } - /** - * @param array $from - * @param array $to - * - * @return LongestCommonSubsequenceCalculator - */ private function selectLcsImplementation(array $from, array $to): LongestCommonSubsequenceCalculator { // We do not want to use the time-efficient implementation if its memory @@ -208,24 +212,17 @@ final class Differ /** * Calculates the estimated memory footprint for the DP-based method. * - * @param array $from - * @param array $to - * * @return float|int */ private function calculateEstimatedFootprint(array $from, array $to) { $itemSize = PHP_INT_SIZE === 4 ? 76 : 144; - return $itemSize * \min(\count($from), \count($to)) ** 2; + return $itemSize * min(count($from), count($to)) ** 2; } /** * Returns true if line ends don't match in a diff. - * - * @param array $diff - * - * @return bool */ private function detectUnmatchedLineEndings(array $diff): bool { @@ -267,11 +264,11 @@ final class Differ private function getLinebreak($line): string { - if (!\is_string($line)) { + if (!is_string($line)) { return ''; } - $lc = \substr($line, -1); + $lc = substr($line, -1); if ("\r" === $lc) { return "\r"; @@ -281,7 +278,7 @@ final class Differ return ''; } - if ("\r\n" === \substr($line, -2)) { + if ("\r\n" === substr($line, -2)) { return "\r\n"; } @@ -293,10 +290,10 @@ final class Differ $start = []; $end = []; - \reset($to); + reset($to); foreach ($from as $k => $v) { - $toK = \key($to); + $toK = key($to); if ($toK === $k && $v === $to[$k]) { $start[$k] = $v; @@ -307,19 +304,19 @@ final class Differ } } - \end($from); - \end($to); + end($from); + end($to); do { - $fromK = \key($from); - $toK = \key($to); + $fromK = key($from); + $toK = key($to); - if (null === $fromK || null === $toK || \current($from) !== \current($to)) { + if (null === $fromK || null === $toK || current($from) !== current($to)) { break; } - \prev($from); - \prev($to); + prev($from); + prev($to); $end = [$fromK => $from[$fromK]] + $end; unset($from[$fromK], $to[$toK]); diff --git a/vendor/sebastian/diff/src/Exception/ConfigurationException.php b/vendor/sebastian/diff/src/Exception/ConfigurationException.php index 78f16fde4..b767b2194 100644 --- a/vendor/sebastian/diff/src/Exception/ConfigurationException.php +++ b/vendor/sebastian/diff/src/Exception/ConfigurationException.php @@ -7,31 +7,29 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; +use function get_class; +use function gettype; +use function is_object; +use function sprintf; +use Exception; + final class ConfigurationException extends InvalidArgumentException { - /** - * @param string $option - * @param string $expected - * @param mixed $value - * @param int $code - * @param null|\Exception $previous - */ public function __construct( string $option, string $expected, $value, int $code = 0, - \Exception $previous = null + Exception $previous = null ) { parent::__construct( - \sprintf( + sprintf( 'Option "%s" must be %s, got "%s".', $option, $expected, - \is_object($value) ? \get_class($value) : (null === $value ? '<null>' : \gettype($value) . '#' . $value) + is_object($value) ? get_class($value) : (null === $value ? '<null>' : gettype($value) . '#' . $value) ), $code, $previous diff --git a/vendor/sebastian/diff/src/Exception/Exception.php b/vendor/sebastian/diff/src/Exception/Exception.php index 249a2ba01..e20d32036 100644 --- a/vendor/sebastian/diff/src/Exception/Exception.php +++ b/vendor/sebastian/diff/src/Exception/Exception.php @@ -7,9 +7,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php b/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php index 7bca77dc6..846ac3fbd 100644 --- a/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php +++ b/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php @@ -7,7 +7,6 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; class InvalidArgumentException extends \InvalidArgumentException implements Exception diff --git a/vendor/sebastian/diff/src/Line.php b/vendor/sebastian/diff/src/Line.php index 125bafd3b..3596ed264 100644 --- a/vendor/sebastian/diff/src/Line.php +++ b/vendor/sebastian/diff/src/Line.php @@ -7,13 +7,14 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; final class Line { public const ADDED = 1; + public const REMOVED = 2; + public const UNCHANGED = 3; /** diff --git a/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php index 7eb1707ec..dea8fe1cb 100644 --- a/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php +++ b/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php @@ -7,18 +7,12 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; interface LongestCommonSubsequenceCalculator { /** * Calculates the longest common subsequence of two arrays. - * - * @param array $from - * @param array $to - * - * @return array */ public function calculate(array $from, array $to): array; } diff --git a/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php index 82dc20c8a..0b626eaff 100644 --- a/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php +++ b/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php @@ -7,9 +7,16 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; +use function array_fill; +use function array_merge; +use function array_reverse; +use function array_slice; +use function count; +use function in_array; +use function max; + final class MemoryEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator { /** @@ -17,15 +24,15 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest */ public function calculate(array $from, array $to): array { - $cFrom = \count($from); - $cTo = \count($to); + $cFrom = count($from); + $cTo = count($to); if ($cFrom === 0) { return []; } if ($cFrom === 1) { - if (\in_array($from[0], $to, true)) { + if (in_array($from[0], $to, true)) { return [$from[0]]; } @@ -33,10 +40,10 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest } $i = (int) ($cFrom / 2); - $fromStart = \array_slice($from, 0, $i); - $fromEnd = \array_slice($from, $i); + $fromStart = array_slice($from, 0, $i); + $fromEnd = array_slice($from, $i); $llB = $this->length($fromStart, $to); - $llE = $this->length(\array_reverse($fromEnd), \array_reverse($to)); + $llE = $this->length(array_reverse($fromEnd), array_reverse($to)); $jMax = 0; $max = 0; @@ -49,10 +56,10 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest } } - $toStart = \array_slice($to, 0, $jMax); - $toEnd = \array_slice($to, $jMax); + $toStart = array_slice($to, 0, $jMax); + $toEnd = array_slice($to, $jMax); - return \array_merge( + return array_merge( $this->calculate($fromStart, $toStart), $this->calculate($fromEnd, $toEnd) ); @@ -60,9 +67,9 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest private function length(array $from, array $to): array { - $current = \array_fill(0, \count($to) + 1, 0); - $cFrom = \count($from); - $cTo = \count($to); + $current = array_fill(0, count($to) + 1, 0); + $cFrom = count($from); + $cTo = count($to); for ($i = 0; $i < $cFrom; $i++) { $prev = $current; @@ -71,7 +78,7 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest if ($from[$i] === $to[$j]) { $current[$j + 1] = $prev[$j] + 1; } else { - $current[$j + 1] = \max($current[$j], $prev[$j + 1]); + $current[$j + 1] = max($current[$j], $prev[$j + 1]); } } } diff --git a/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php b/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php index 6e590b0ba..e55757c38 100644 --- a/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php +++ b/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php @@ -7,23 +7,19 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff\Output; +use function count; + abstract class AbstractChunkOutputBuilder implements DiffOutputBuilderInterface { /** * Takes input of the diff array and returns the common parts. * Iterates through diff line by line. - * - * @param array $diff - * @param int $lineThreshold - * - * @return array */ protected function getCommonChunks(array $diff, int $lineThreshold = 5): array { - $diffSize = \count($diff); + $diffSize = count($diff); $capturing = false; $chunkStart = 0; $chunkSize = 0; diff --git a/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php b/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php index 8a186b53b..f79a935cb 100644 --- a/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php +++ b/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php @@ -7,9 +7,13 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff\Output; +use function fclose; +use function fopen; +use function fwrite; +use function stream_get_contents; +use function substr; use SebastianBergmann\Diff\Differ; /** @@ -30,38 +34,38 @@ final class DiffOnlyOutputBuilder implements DiffOutputBuilderInterface public function getDiff(array $diff): string { - $buffer = \fopen('php://memory', 'r+b'); + $buffer = fopen('php://memory', 'r+b'); if ('' !== $this->header) { - \fwrite($buffer, $this->header); + fwrite($buffer, $this->header); - if ("\n" !== \substr($this->header, -1, 1)) { - \fwrite($buffer, "\n"); + if ("\n" !== substr($this->header, -1, 1)) { + fwrite($buffer, "\n"); } } foreach ($diff as $diffEntry) { if ($diffEntry[1] === Differ::ADDED) { - \fwrite($buffer, '+' . $diffEntry[0]); + fwrite($buffer, '+' . $diffEntry[0]); } elseif ($diffEntry[1] === Differ::REMOVED) { - \fwrite($buffer, '-' . $diffEntry[0]); + fwrite($buffer, '-' . $diffEntry[0]); } elseif ($diffEntry[1] === Differ::DIFF_LINE_END_WARNING) { - \fwrite($buffer, ' ' . $diffEntry[0]); + fwrite($buffer, ' ' . $diffEntry[0]); continue; // Warnings should not be tested for line break, it will always be there } else { /* Not changed (old) 0 */ continue; // we didn't write the non changs line, so do not add a line break either } - $lc = \substr($diffEntry[0], -1); + $lc = substr($diffEntry[0], -1); if ($lc !== "\n" && $lc !== "\r") { - \fwrite($buffer, "\n"); // \No newline at end of file + fwrite($buffer, "\n"); // \No newline at end of file } } - $diff = \stream_get_contents($buffer, -1, 0); - \fclose($buffer); + $diff = stream_get_contents($buffer, -1, 0); + fclose($buffer); return $diff; } diff --git a/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php b/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php index f6e6afd46..0e18f9f2e 100644 --- a/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php +++ b/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php @@ -7,7 +7,6 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff\Output; /** diff --git a/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php b/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php index 941b1a746..9c55ab2aa 100644 --- a/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php +++ b/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php @@ -7,9 +7,22 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff\Output; +use function array_merge; +use function array_splice; +use function count; +use function fclose; +use function fopen; +use function fwrite; +use function is_bool; +use function is_int; +use function is_string; +use function max; +use function min; +use function sprintf; +use function stream_get_contents; +use function substr; use SebastianBergmann\Diff\ConfigurationException; use SebastianBergmann\Diff\Differ; @@ -29,6 +42,7 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface 'toFile' => null, 'toFileDate' => null, ]; + /** * @var bool */ @@ -56,33 +70,26 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface public function __construct(array $options = []) { - $options = \array_merge(self::$default, $options); + $options = array_merge(self::$default, $options); - if (!\is_bool($options['collapseRanges'])) { + if (!is_bool($options['collapseRanges'])) { throw new ConfigurationException('collapseRanges', 'a bool', $options['collapseRanges']); } - if (!\is_int($options['contextLines']) || $options['contextLines'] < 0) { + if (!is_int($options['contextLines']) || $options['contextLines'] < 0) { throw new ConfigurationException('contextLines', 'an int >= 0', $options['contextLines']); } - if (!\is_int($options['commonLineThreshold']) || $options['commonLineThreshold'] <= 0) { + if (!is_int($options['commonLineThreshold']) || $options['commonLineThreshold'] <= 0) { throw new ConfigurationException('commonLineThreshold', 'an int > 0', $options['commonLineThreshold']); } - foreach (['fromFile', 'toFile'] as $option) { - if (!\is_string($options[$option])) { - throw new ConfigurationException($option, 'a string', $options[$option]); - } - } + $this->assertString($options, 'fromFile'); + $this->assertString($options, 'toFile'); + $this->assertStringOrNull($options, 'fromFileDate'); + $this->assertStringOrNull($options, 'toFileDate'); - foreach (['fromFileDate', 'toFileDate'] as $option) { - if (null !== $options[$option] && !\is_string($options[$option])) { - throw new ConfigurationException($option, 'a string or <null>', $options[$option]); - } - } - - $this->header = \sprintf( + $this->header = sprintf( "--- %s%s\n+++ %s%s\n", $options['fromFile'], null === $options['fromFileDate'] ? '' : "\t" . $options['fromFileDate'], @@ -97,48 +104,47 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface public function getDiff(array $diff): string { - if (0 === \count($diff)) { + if (0 === count($diff)) { return ''; } $this->changed = false; - $buffer = \fopen('php://memory', 'r+b'); - \fwrite($buffer, $this->header); + $buffer = fopen('php://memory', 'r+b'); + fwrite($buffer, $this->header); $this->writeDiffHunks($buffer, $diff); if (!$this->changed) { - \fclose($buffer); + fclose($buffer); return ''; } - $diff = \stream_get_contents($buffer, -1, 0); + $diff = stream_get_contents($buffer, -1, 0); - \fclose($buffer); + fclose($buffer); // If the last char is not a linebreak: add it. // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = \substr($diff, -1); + $last = substr($diff, -1); return "\n" !== $last && "\r" !== $last ? $diff . "\n" - : $diff - ; + : $diff; } private function writeDiffHunks($output, array $diff): void { // detect "No newline at end of file" and insert into `$diff` if needed - $upperLimit = \count($diff); + $upperLimit = count($diff); if (0 === $diff[$upperLimit - 1][1]) { - $lc = \substr($diff[$upperLimit - 1][0], -1); + $lc = substr($diff[$upperLimit - 1][0], -1); if ("\n" !== $lc) { - \array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); + array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); } } else { // search back for the last `+` and `-` line, @@ -148,13 +154,13 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface for ($i = $upperLimit - 1; $i >= 0; --$i) { if (isset($toFind[$diff[$i][1]])) { unset($toFind[$diff[$i][1]]); - $lc = \substr($diff[$i][0], -1); + $lc = substr($diff[$i][0], -1); if ("\n" !== $lc) { - \array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); + array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); } - if (!\count($toFind)) { + if (!count($toFind)) { break; } } @@ -163,11 +169,13 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface // write hunks to output buffer - $cutOff = \max($this->commonLineThreshold, $this->contextLines); + $cutOff = max($this->commonLineThreshold, $this->contextLines); $hunkCapture = false; $sameCount = $toRange = $fromRange = 0; $toStart = $fromStart = 1; + $i = 0; + /** @var int $i */ foreach ($diff as $i => $entry) { if (0 === $entry[1]) { // same if (false === $hunkCapture) { @@ -184,8 +192,7 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface if ($sameCount === $cutOff) { $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 ? $hunkCapture - : $this->contextLines - ; + : $this->contextLines; // note: $contextEndOffset = $this->contextLines; // @@ -249,12 +256,11 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface $contextStartOffset = $hunkCapture - $this->contextLines < 0 ? $hunkCapture - : $this->contextLines - ; + : $this->contextLines; // prevent trying to write out more common lines than there are in the diff _and_ // do not write more than configured through the context lines - $contextEndOffset = \min($sameCount, $this->contextLines); + $contextEndOffset = min($sameCount, $this->contextLines); $fromRange -= $sameCount; $toRange -= $sameCount; @@ -281,32 +287,32 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface int $toRange, $output ): void { - \fwrite($output, '@@ -' . $fromStart); + fwrite($output, '@@ -' . $fromStart); if (!$this->collapseRanges || 1 !== $fromRange) { - \fwrite($output, ',' . $fromRange); + fwrite($output, ',' . $fromRange); } - \fwrite($output, ' +' . $toStart); + fwrite($output, ' +' . $toStart); if (!$this->collapseRanges || 1 !== $toRange) { - \fwrite($output, ',' . $toRange); + fwrite($output, ',' . $toRange); } - \fwrite($output, " @@\n"); + fwrite($output, " @@\n"); for ($i = $diffStartIndex; $i < $diffEndIndex; ++$i) { if ($diff[$i][1] === Differ::ADDED) { $this->changed = true; - \fwrite($output, '+' . $diff[$i][0]); + fwrite($output, '+' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::REMOVED) { $this->changed = true; - \fwrite($output, '-' . $diff[$i][0]); + fwrite($output, '-' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::OLD) { - \fwrite($output, ' ' . $diff[$i][0]); + fwrite($output, ' ' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { $this->changed = true; - \fwrite($output, $diff[$i][0]); + fwrite($output, $diff[$i][0]); } //} elseif ($diff[$i][1] === Differ::DIFF_LINE_END_WARNING) { // custom comment inserted by PHPUnit/diff package // skip @@ -315,4 +321,18 @@ final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface //} } } + + private function assertString(array $options, string $option): void + { + if (!is_string($options[$option])) { + throw new ConfigurationException($option, 'a string', $options[$option]); + } + } + + private function assertStringOrNull(array $options, string $option): void + { + if (null !== $options[$option] && !is_string($options[$option])) { + throw new ConfigurationException($option, 'a string or <null>', $options[$option]); + } + } } diff --git a/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php b/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php index e7f0a9d06..8aae64504 100644 --- a/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php +++ b/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php @@ -7,9 +7,18 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff\Output; +use function array_splice; +use function count; +use function fclose; +use function fopen; +use function fwrite; +use function max; +use function min; +use function stream_get_contents; +use function strlen; +use function substr; use SebastianBergmann\Diff\Differ; /** @@ -50,45 +59,44 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder public function getDiff(array $diff): string { - $buffer = \fopen('php://memory', 'r+b'); + $buffer = fopen('php://memory', 'r+b'); if ('' !== $this->header) { - \fwrite($buffer, $this->header); + fwrite($buffer, $this->header); - if ("\n" !== \substr($this->header, -1, 1)) { - \fwrite($buffer, "\n"); + if ("\n" !== substr($this->header, -1, 1)) { + fwrite($buffer, "\n"); } } - if (0 !== \count($diff)) { + if (0 !== count($diff)) { $this->writeDiffHunks($buffer, $diff); } - $diff = \stream_get_contents($buffer, -1, 0); + $diff = stream_get_contents($buffer, -1, 0); - \fclose($buffer); + fclose($buffer); - // If the last char is not a linebreak: add it. + // If the diff is non-empty and last char is not a linebreak: add it. // This might happen when both the `from` and `to` do not have a trailing linebreak - $last = \substr($diff, -1); + $last = substr($diff, -1); - return "\n" !== $last && "\r" !== $last + return 0 !== strlen($diff) && "\n" !== $last && "\r" !== $last ? $diff . "\n" - : $diff - ; + : $diff; } private function writeDiffHunks($output, array $diff): void { // detect "No newline at end of file" and insert into `$diff` if needed - $upperLimit = \count($diff); + $upperLimit = count($diff); if (0 === $diff[$upperLimit - 1][1]) { - $lc = \substr($diff[$upperLimit - 1][0], -1); + $lc = substr($diff[$upperLimit - 1][0], -1); if ("\n" !== $lc) { - \array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); + array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); } } else { // search back for the last `+` and `-` line, @@ -98,13 +106,13 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder for ($i = $upperLimit - 1; $i >= 0; --$i) { if (isset($toFind[$diff[$i][1]])) { unset($toFind[$diff[$i][1]]); - $lc = \substr($diff[$i][0], -1); + $lc = substr($diff[$i][0], -1); if ("\n" !== $lc) { - \array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); + array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]); } - if (!\count($toFind)) { + if (!count($toFind)) { break; } } @@ -113,11 +121,13 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder // write hunks to output buffer - $cutOff = \max($this->commonLineThreshold, $this->contextLines); + $cutOff = max($this->commonLineThreshold, $this->contextLines); $hunkCapture = false; $sameCount = $toRange = $fromRange = 0; $toStart = $fromStart = 1; + $i = 0; + /** @var int $i */ foreach ($diff as $i => $entry) { if (0 === $entry[1]) { // same if (false === $hunkCapture) { @@ -134,8 +144,7 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder if ($sameCount === $cutOff) { $contextStartOffset = ($hunkCapture - $this->contextLines) < 0 ? $hunkCapture - : $this->contextLines - ; + : $this->contextLines; // note: $contextEndOffset = $this->contextLines; // @@ -197,12 +206,11 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder $contextStartOffset = $hunkCapture - $this->contextLines < 0 ? $hunkCapture - : $this->contextLines - ; + : $this->contextLines; // prevent trying to write out more common lines than there are in the diff _and_ // do not write more than configured through the context lines - $contextEndOffset = \min($sameCount, $this->contextLines); + $contextEndOffset = min($sameCount, $this->contextLines); $fromRange -= $sameCount; $toRange -= $sameCount; @@ -230,34 +238,34 @@ final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder $output ): void { if ($this->addLineNumbers) { - \fwrite($output, '@@ -' . $fromStart); + fwrite($output, '@@ -' . $fromStart); if (!$this->collapseRanges || 1 !== $fromRange) { - \fwrite($output, ',' . $fromRange); + fwrite($output, ',' . $fromRange); } - \fwrite($output, ' +' . $toStart); + fwrite($output, ' +' . $toStart); if (!$this->collapseRanges || 1 !== $toRange) { - \fwrite($output, ',' . $toRange); + fwrite($output, ',' . $toRange); } - \fwrite($output, " @@\n"); + fwrite($output, " @@\n"); } else { - \fwrite($output, "@@ @@\n"); + fwrite($output, "@@ @@\n"); } for ($i = $diffStartIndex; $i < $diffEndIndex; ++$i) { if ($diff[$i][1] === Differ::ADDED) { - \fwrite($output, '+' . $diff[$i][0]); + fwrite($output, '+' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::REMOVED) { - \fwrite($output, '-' . $diff[$i][0]); + fwrite($output, '-' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::OLD) { - \fwrite($output, ' ' . $diff[$i][0]); + fwrite($output, ' ' . $diff[$i][0]); } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) { - \fwrite($output, "\n"); // $diff[$i][0] + fwrite($output, "\n"); // $diff[$i][0] } else { /* Not changed (old) Differ::OLD or Warning Differ::DIFF_LINE_END_WARNING */ - \fwrite($output, ' ' . $diff[$i][0]); + fwrite($output, ' ' . $diff[$i][0]); } } } diff --git a/vendor/sebastian/diff/src/Parser.php b/vendor/sebastian/diff/src/Parser.php index 3c52f4365..cc9e38871 100644 --- a/vendor/sebastian/diff/src/Parser.php +++ b/vendor/sebastian/diff/src/Parser.php @@ -7,35 +7,38 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; +use function array_pop; +use function count; +use function max; +use function preg_match; +use function preg_split; + /** * Unified diff parser. */ final class Parser { /** - * @param string $string - * * @return Diff[] */ public function parse(string $string): array { - $lines = \preg_split('(\r\n|\r|\n)', $string); + $lines = preg_split('(\r\n|\r|\n)', $string); - if (!empty($lines) && $lines[\count($lines) - 1] === '') { - \array_pop($lines); + if (!empty($lines) && $lines[count($lines) - 1] === '') { + array_pop($lines); } - $lineCount = \count($lines); + $lineCount = count($lines); $diffs = []; $diff = null; $collected = []; for ($i = 0; $i < $lineCount; ++$i) { - if (\preg_match('(^---\\s+(?P<file>\\S+))', $lines[$i], $fromMatch) && - \preg_match('(^\\+\\+\\+\\s+(?P<file>\\S+))', $lines[$i + 1], $toMatch)) { + if (preg_match('#^---\h+"?(?P<file>[^\\v\\t"]+)#', $lines[$i], $fromMatch) && + preg_match('#^\\+\\+\\+\\h+"?(?P<file>[^\\v\\t"]+)#', $lines[$i + 1], $toMatch)) { if ($diff !== null) { $this->parseFileDiff($diff, $collected); @@ -47,7 +50,7 @@ final class Parser ++$i; } else { - if (\preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) { + if (preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) { continue; } @@ -55,7 +58,7 @@ final class Parser } } - if ($diff !== null && \count($collected)) { + if ($diff !== null && count($collected)) { $this->parseFileDiff($diff, $collected); $diffs[] = $diff; @@ -66,16 +69,17 @@ final class Parser private function parseFileDiff(Diff $diff, array $lines): void { - $chunks = []; - $chunk = null; + $chunks = []; + $chunk = null; + $diffLines = []; foreach ($lines as $line) { - if (\preg_match('/^@@\s+-(?P<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\d+))?\s+@@/', $line, $match)) { + if (preg_match('/^@@\s+-(?P<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\d+))?\s+@@/', $line, $match)) { $chunk = new Chunk( (int) $match['start'], - isset($match['startrange']) ? \max(1, (int) $match['startrange']) : 1, + isset($match['startrange']) ? max(1, (int) $match['startrange']) : 1, (int) $match['end'], - isset($match['endrange']) ? \max(1, (int) $match['endrange']) : 1 + isset($match['endrange']) ? max(1, (int) $match['endrange']) : 1 ); $chunks[] = $chunk; @@ -84,7 +88,7 @@ final class Parser continue; } - if (\preg_match('/^(?P<type>[+ -])?(?P<line>.*)/', $line, $match)) { + if (preg_match('/^(?P<type>[+ -])?(?P<line>.*)/', $line, $match)) { $type = Line::UNCHANGED; if ($match['type'] === '+') { diff --git a/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php index 97dadbd58..fd19cac76 100644 --- a/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php +++ b/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php @@ -7,9 +7,13 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\Diff; +use function array_reverse; +use function count; +use function max; +use SplFixedArray; + final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator { /** @@ -18,10 +22,10 @@ final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCo public function calculate(array $from, array $to): array { $common = []; - $fromLength = \count($from); - $toLength = \count($to); + $fromLength = count($from); + $toLength = count($to); $width = $fromLength + 1; - $matrix = new \SplFixedArray($width * ($toLength + 1)); + $matrix = new SplFixedArray($width * ($toLength + 1)); for ($i = 0; $i <= $fromLength; ++$i) { $matrix[$i] = 0; @@ -34,7 +38,7 @@ final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCo for ($i = 1; $i <= $fromLength; ++$i) { for ($j = 1; $j <= $toLength; ++$j) { $o = ($j * $width) + $i; - $matrix[$o] = \max( + $matrix[$o] = max( $matrix[$o - 1], $matrix[$o - $width], $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0 @@ -61,6 +65,6 @@ final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCo } } - return \array_reverse($common); + return array_reverse($common); } } diff --git a/vendor/sebastian/diff/tests/ChunkTest.php b/vendor/sebastian/diff/tests/ChunkTest.php deleted file mode 100644 index 40106c0ee..000000000 --- a/vendor/sebastian/diff/tests/ChunkTest.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\Chunk - */ -final class ChunkTest extends TestCase -{ - /** - * @var Chunk - */ - private $chunk; - - protected function setUp(): void - { - $this->chunk = new Chunk; - } - - public function testHasInitiallyNoLines(): void - { - $this->assertSame([], $this->chunk->getLines()); - } - - public function testCanBeCreatedWithoutArguments(): void - { - $this->assertInstanceOf(Chunk::class, $this->chunk); - } - - public function testStartCanBeRetrieved(): void - { - $this->assertSame(0, $this->chunk->getStart()); - } - - public function testStartRangeCanBeRetrieved(): void - { - $this->assertSame(1, $this->chunk->getStartRange()); - } - - public function testEndCanBeRetrieved(): void - { - $this->assertSame(0, $this->chunk->getEnd()); - } - - public function testEndRangeCanBeRetrieved(): void - { - $this->assertSame(1, $this->chunk->getEndRange()); - } - - public function testLinesCanBeRetrieved(): void - { - $this->assertSame([], $this->chunk->getLines()); - } - - public function testLinesCanBeSet(): void - { - $lines = [new Line(Line::ADDED, 'added'), new Line(Line::REMOVED, 'removed')]; - - $this->chunk->setLines($lines); - - $this->assertSame($lines, $this->chunk->getLines()); - } -} diff --git a/vendor/sebastian/diff/tests/DiffTest.php b/vendor/sebastian/diff/tests/DiffTest.php deleted file mode 100644 index 20f76e15d..000000000 --- a/vendor/sebastian/diff/tests/DiffTest.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\Diff - * - * @uses SebastianBergmann\Diff\Chunk - */ -final class DiffTest extends TestCase -{ - public function testGettersAfterConstructionWithDefault(): void - { - $from = 'line1a'; - $to = 'line2a'; - $diff = new Diff($from, $to); - - $this->assertSame($from, $diff->getFrom()); - $this->assertSame($to, $diff->getTo()); - $this->assertSame([], $diff->getChunks(), 'Expect chunks to be default value "array()".'); - } - - public function testGettersAfterConstructionWithChunks(): void - { - $from = 'line1b'; - $to = 'line2b'; - $chunks = [new Chunk(), new Chunk(2, 3)]; - - $diff = new Diff($from, $to, $chunks); - - $this->assertSame($from, $diff->getFrom()); - $this->assertSame($to, $diff->getTo()); - $this->assertSame($chunks, $diff->getChunks(), 'Expect chunks to be passed value.'); - } - - public function testSetChunksAfterConstruction(): void - { - $diff = new Diff('line1c', 'line2c'); - $this->assertSame([], $diff->getChunks(), 'Expect chunks to be default value "array()".'); - - $chunks = [new Chunk(), new Chunk(2, 3)]; - $diff->setChunks($chunks); - $this->assertSame($chunks, $diff->getChunks(), 'Expect chunks to be passed value.'); - } -} diff --git a/vendor/sebastian/diff/tests/DifferTest.php b/vendor/sebastian/diff/tests/DifferTest.php deleted file mode 100644 index 5a8962ef0..000000000 --- a/vendor/sebastian/diff/tests/DifferTest.php +++ /dev/null @@ -1,444 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; - -/** - * @covers SebastianBergmann\Diff\Differ - * @covers SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder - * - * @uses SebastianBergmann\Diff\MemoryEfficientLongestCommonSubsequenceCalculator - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - * @uses SebastianBergmann\Diff\Output\AbstractChunkOutputBuilder - */ -final class DifferTest extends TestCase -{ - /** - * @var Differ - */ - private $differ; - - protected function setUp(): void - { - $this->differ = new Differ; - } - - /** - * @param array $expected - * @param array|string $from - * @param array|string $to - * - * @dataProvider arrayProvider - */ - public function testArrayRepresentationOfDiffCanBeRenderedUsingTimeEfficientLcsImplementation(array $expected, $from, $to): void - { - $this->assertSame($expected, $this->differ->diffToArray($from, $to, new TimeEfficientLongestCommonSubsequenceCalculator)); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider textProvider - */ - public function testTextRepresentationOfDiffCanBeRenderedUsingTimeEfficientLcsImplementation(string $expected, string $from, string $to): void - { - $this->assertSame($expected, $this->differ->diff($from, $to, new TimeEfficientLongestCommonSubsequenceCalculator)); - } - - /** - * @param array $expected - * @param array|string $from - * @param array|string $to - * - * @dataProvider arrayProvider - */ - public function testArrayRepresentationOfDiffCanBeRenderedUsingMemoryEfficientLcsImplementation(array $expected, $from, $to): void - { - $this->assertSame($expected, $this->differ->diffToArray($from, $to, new MemoryEfficientLongestCommonSubsequenceCalculator)); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider textProvider - */ - public function testTextRepresentationOfDiffCanBeRenderedUsingMemoryEfficientLcsImplementation(string $expected, string $from, string $to): void - { - $this->assertSame($expected, $this->differ->diff($from, $to, new MemoryEfficientLongestCommonSubsequenceCalculator)); - } - - public function testTypesOtherThanArrayAndStringCanBePassed(): void - { - $this->assertSame( - "--- Original\n+++ New\n@@ @@\n-1\n+2\n", - $this->differ->diff(1, 2) - ); - } - - public function testArrayDiffs(): void - { - $this->assertSame( - '--- Original -+++ New -@@ @@ --one -+two -', - $this->differ->diff(['one'], ['two']) - ); - } - - public function arrayProvider(): array - { - return [ - [ - [ - ['a', Differ::REMOVED], - ['b', Differ::ADDED], - ], - 'a', - 'b', - ], - [ - [ - ['ba', Differ::REMOVED], - ['bc', Differ::ADDED], - ], - 'ba', - 'bc', - ], - [ - [ - ['ab', Differ::REMOVED], - ['cb', Differ::ADDED], - ], - 'ab', - 'cb', - ], - [ - [ - ['abc', Differ::REMOVED], - ['adc', Differ::ADDED], - ], - 'abc', - 'adc', - ], - [ - [ - ['ab', Differ::REMOVED], - ['abc', Differ::ADDED], - ], - 'ab', - 'abc', - ], - [ - [ - ['bc', Differ::REMOVED], - ['abc', Differ::ADDED], - ], - 'bc', - 'abc', - ], - [ - [ - ['abc', Differ::REMOVED], - ['abbc', Differ::ADDED], - ], - 'abc', - 'abbc', - ], - [ - [ - ['abcdde', Differ::REMOVED], - ['abcde', Differ::ADDED], - ], - 'abcdde', - 'abcde', - ], - 'same start' => [ - [ - [17, Differ::OLD], - ['b', Differ::REMOVED], - ['d', Differ::ADDED], - ], - [30 => 17, 'a' => 'b'], - [30 => 17, 'c' => 'd'], - ], - 'same end' => [ - [ - [1, Differ::REMOVED], - [2, Differ::ADDED], - ['b', Differ::OLD], - ], - [1 => 1, 'a' => 'b'], - [1 => 2, 'a' => 'b'], - ], - 'same start (2), same end (1)' => [ - [ - [17, Differ::OLD], - [2, Differ::OLD], - [4, Differ::REMOVED], - ['a', Differ::ADDED], - [5, Differ::ADDED], - ['x', Differ::OLD], - ], - [30 => 17, 1 => 2, 2 => 4, 'z' => 'x'], - [30 => 17, 1 => 2, 3 => 'a', 2 => 5, 'z' => 'x'], - ], - 'same' => [ - [ - ['x', Differ::OLD], - ], - ['z' => 'x'], - ['z' => 'x'], - ], - 'diff' => [ - [ - ['y', Differ::REMOVED], - ['x', Differ::ADDED], - ], - ['x' => 'y'], - ['z' => 'x'], - ], - 'diff 2' => [ - [ - ['y', Differ::REMOVED], - ['b', Differ::REMOVED], - ['x', Differ::ADDED], - ['d', Differ::ADDED], - ], - ['x' => 'y', 'a' => 'b'], - ['z' => 'x', 'c' => 'd'], - ], - 'test line diff detection' => [ - [ - [ - "#Warning: Strings contain different line endings!\n", - Differ::DIFF_LINE_END_WARNING, - ], - [ - "<?php\r\n", - Differ::REMOVED, - ], - [ - "<?php\n", - Differ::ADDED, - ], - ], - "<?php\r\n", - "<?php\n", - ], - 'test line diff detection in array input' => [ - [ - [ - "#Warning: Strings contain different line endings!\n", - Differ::DIFF_LINE_END_WARNING, - ], - [ - "<?php\r\n", - Differ::REMOVED, - ], - [ - "<?php\n", - Differ::ADDED, - ], - ], - ["<?php\r\n"], - ["<?php\n"], - ], - ]; - } - - public function textProvider(): array - { - return [ - [ - "--- Original\n+++ New\n@@ @@\n-a\n+b\n", - 'a', - 'b', - ], - [ - "--- Original\n+++ New\n@@ @@\n-A\n+A1\n B\n", - "A\nB", - "A1\nB", - ], - [ - <<<EOF ---- Original -+++ New -@@ @@ - a --b -+p - c - d - e -@@ @@ - g - h - i --j -+w - k - -EOF - , - "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\n", - "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk\n", - ], - [ - <<<EOF ---- Original -+++ New -@@ @@ --A -+B - 1 - 2 - 3 - -EOF - , - "A\n1\n2\n3\n4\n5\n6\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n", - "B\n1\n2\n3\n4\n5\n6\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n", - ], - [ - "--- Original\n+++ New\n@@ @@\n #Warning: Strings contain different line endings!\n-<?php\r\n+<?php\n A\n", - "<?php\r\nA\n", - "<?php\nA\n", - ], - [ - "--- Original\n+++ New\n@@ @@\n #Warning: Strings contain different line endings!\n-a\r\n+\n+c\r\n", - "a\r\n", - "\nc\r", - ], - ]; - } - - public function testDiffToArrayInvalidFromType(): void - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessageRegExp('#^"from" must be an array or string\.$#'); - - $this->differ->diffToArray(null, ''); - } - - public function testDiffInvalidToType(): void - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessageRegExp('#^"to" must be an array or string\.$#'); - - $this->differ->diffToArray('', new \stdClass); - } - - /** - * @param array $expected - * @param string $input - * - * @dataProvider provideSplitStringByLinesCases - */ - public function testSplitStringByLines(array $expected, string $input): void - { - $reflection = new \ReflectionObject($this->differ); - $method = $reflection->getMethod('splitStringByLines'); - $method->setAccessible(true); - - $this->assertSame($expected, $method->invoke($this->differ, $input)); - } - - public function provideSplitStringByLinesCases(): array - { - return [ - [ - [], - '', - ], - [ - ['a'], - 'a', - ], - [ - ["a\n"], - "a\n", - ], - [ - ["a\r"], - "a\r", - ], - [ - ["a\r\n"], - "a\r\n", - ], - [ - ["\n"], - "\n", - ], - [ - ["\r"], - "\r", - ], - [ - ["\r\n"], - "\r\n", - ], - [ - [ - "A\n", - "B\n", - "\n", - "C\n", - ], - "A\nB\n\nC\n", - ], - [ - [ - "A\r\n", - "B\n", - "\n", - "C\r", - ], - "A\r\nB\n\nC\r", - ], - [ - [ - "\n", - "A\r\n", - "B\n", - "\n", - 'C', - ], - "\nA\r\nB\n\nC", - ], - ]; - } - - public function testConstructorInvalidArgInt(): void - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessageRegExp('/^Expected builder to be an instance of DiffOutputBuilderInterface, <null> or a string, got integer "1"\.$/'); - - new Differ(1); - } - - public function testConstructorInvalidArgObject(): void - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessageRegExp('/^Expected builder to be an instance of DiffOutputBuilderInterface, <null> or a string, got instance of "SplFileInfo"\.$/'); - - new Differ(new \SplFileInfo(__FILE__)); - } -} diff --git a/vendor/sebastian/diff/tests/Exception/ConfigurationExceptionTest.php b/vendor/sebastian/diff/tests/Exception/ConfigurationExceptionTest.php deleted file mode 100644 index 1ce887a73..000000000 --- a/vendor/sebastian/diff/tests/Exception/ConfigurationExceptionTest.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\ConfigurationException - */ -final class ConfigurationExceptionTest extends TestCase -{ - public function testConstructWithDefaults(): void - { - $e = new ConfigurationException('test', 'A', 'B'); - - $this->assertSame(0, $e->getCode()); - $this->assertNull($e->getPrevious()); - $this->assertSame('Option "test" must be A, got "string#B".', $e->getMessage()); - } - - public function testConstruct(): void - { - $e = new ConfigurationException( - 'test', - 'integer', - new \SplFileInfo(__FILE__), - 789, - new \BadMethodCallException(__METHOD__) - ); - - $this->assertSame('Option "test" must be integer, got "SplFileInfo".', $e->getMessage()); - } -} diff --git a/vendor/sebastian/diff/tests/Exception/InvalidArgumentExceptionTest.php b/vendor/sebastian/diff/tests/Exception/InvalidArgumentExceptionTest.php deleted file mode 100644 index a112920c4..000000000 --- a/vendor/sebastian/diff/tests/Exception/InvalidArgumentExceptionTest.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\InvalidArgumentException - */ -final class InvalidArgumentExceptionTest extends TestCase -{ - public function testInvalidArgumentException(): void - { - $previousException = new \LogicException(); - $message = 'test'; - $code = 123; - - $exception = new InvalidArgumentException($message, $code, $previousException); - - $this->assertInstanceOf(Exception::class, $exception); - $this->assertSame($message, $exception->getMessage()); - $this->assertSame($code, $exception->getCode()); - $this->assertSame($previousException, $exception->getPrevious()); - } -} diff --git a/vendor/sebastian/diff/tests/LineTest.php b/vendor/sebastian/diff/tests/LineTest.php deleted file mode 100644 index 5aca39b25..000000000 --- a/vendor/sebastian/diff/tests/LineTest.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\Line - */ -final class LineTest extends TestCase -{ - /** - * @var Line - */ - private $line; - - protected function setUp(): void - { - $this->line = new Line; - } - - public function testCanBeCreatedWithoutArguments(): void - { - $this->assertInstanceOf(Line::class, $this->line); - } - - public function testTypeCanBeRetrieved(): void - { - $this->assertSame(Line::UNCHANGED, $this->line->getType()); - } - - public function testContentCanBeRetrieved(): void - { - $this->assertSame('', $this->line->getContent()); - } -} diff --git a/vendor/sebastian/diff/tests/LongestCommonSubsequenceTest.php b/vendor/sebastian/diff/tests/LongestCommonSubsequenceTest.php deleted file mode 100644 index 28d2809fb..000000000 --- a/vendor/sebastian/diff/tests/LongestCommonSubsequenceTest.php +++ /dev/null @@ -1,201 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; - -/** - * @coversNothing - */ -abstract class LongestCommonSubsequenceTest extends TestCase -{ - /** - * @var LongestCommonSubsequenceCalculator - */ - private $implementation; - - /** - * @var string - */ - private $memoryLimit; - - /** - * @var int[] - */ - private $stress_sizes = [1, 2, 3, 100, 500, 1000, 2000]; - - protected function setUp(): void - { - $this->memoryLimit = \ini_get('memory_limit'); - \ini_set('memory_limit', '256M'); - - $this->implementation = $this->createImplementation(); - } - - protected function tearDown(): void - { - \ini_set('memory_limit', $this->memoryLimit); - } - - public function testBothEmpty(): void - { - $from = []; - $to = []; - $common = $this->implementation->calculate($from, $to); - - $this->assertSame([], $common); - } - - public function testIsStrictComparison(): void - { - $from = [ - false, 0, 0.0, '', null, [], - true, 1, 1.0, 'foo', ['foo', 'bar'], ['foo' => 'bar'], - ]; - $to = $from; - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($from, $common); - - $to = [ - false, false, false, false, false, false, - true, true, true, true, true, true, - ]; - - $expected = [ - false, - true, - ]; - - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($expected, $common); - } - - public function testEqualSequences(): void - { - foreach ($this->stress_sizes as $size) { - $range = \range(1, $size); - $from = $range; - $to = $range; - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($range, $common); - } - } - - public function testDistinctSequences(): void - { - $from = ['A']; - $to = ['B']; - $common = $this->implementation->calculate($from, $to); - $this->assertSame([], $common); - - $from = ['A', 'B', 'C']; - $to = ['D', 'E', 'F']; - $common = $this->implementation->calculate($from, $to); - $this->assertSame([], $common); - - foreach ($this->stress_sizes as $size) { - $from = \range(1, $size); - $to = \range($size + 1, $size * 2); - $common = $this->implementation->calculate($from, $to); - $this->assertSame([], $common); - } - } - - public function testCommonSubsequence(): void - { - $from = ['A', 'C', 'E', 'F', 'G']; - $to = ['A', 'B', 'D', 'E', 'H']; - $expected = ['A', 'E']; - $common = $this->implementation->calculate($from, $to); - $this->assertSame($expected, $common); - - $from = ['A', 'C', 'E', 'F', 'G']; - $to = ['B', 'C', 'D', 'E', 'F', 'H']; - $expected = ['C', 'E', 'F']; - $common = $this->implementation->calculate($from, $to); - $this->assertSame($expected, $common); - - foreach ($this->stress_sizes as $size) { - $from = $size < 2 ? [1] : \range(1, $size + 1, 2); - $to = $size < 3 ? [1] : \range(1, $size + 1, 3); - $expected = $size < 6 ? [1] : \range(1, $size + 1, 6); - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($expected, $common); - } - } - - public function testSingleElementSubsequenceAtStart(): void - { - foreach ($this->stress_sizes as $size) { - $from = \range(1, $size); - $to = \array_slice($from, 0, 1); - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($to, $common); - } - } - - public function testSingleElementSubsequenceAtMiddle(): void - { - foreach ($this->stress_sizes as $size) { - $from = \range(1, $size); - $to = \array_slice($from, (int) ($size / 2), 1); - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($to, $common); - } - } - - public function testSingleElementSubsequenceAtEnd(): void - { - foreach ($this->stress_sizes as $size) { - $from = \range(1, $size); - $to = \array_slice($from, $size - 1, 1); - $common = $this->implementation->calculate($from, $to); - - $this->assertSame($to, $common); - } - } - - public function testReversedSequences(): void - { - $from = ['A', 'B']; - $to = ['B', 'A']; - $expected = ['A']; - $common = $this->implementation->calculate($from, $to); - $this->assertSame($expected, $common); - - foreach ($this->stress_sizes as $size) { - $from = \range(1, $size); - $to = \array_reverse($from); - $common = $this->implementation->calculate($from, $to); - - $this->assertSame([1], $common); - } - } - - public function testStrictTypeCalculate(): void - { - $diff = $this->implementation->calculate(['5'], ['05']); - - $this->assertIsArray($diff); - $this->assertCount(0, $diff); - } - - /** - * @return LongestCommonSubsequenceCalculator - */ - abstract protected function createImplementation(): LongestCommonSubsequenceCalculator; -} diff --git a/vendor/sebastian/diff/tests/MemoryEfficientImplementationTest.php b/vendor/sebastian/diff/tests/MemoryEfficientImplementationTest.php deleted file mode 100644 index a8a21e2ea..000000000 --- a/vendor/sebastian/diff/tests/MemoryEfficientImplementationTest.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -/** - * @covers SebastianBergmann\Diff\MemoryEfficientLongestCommonSubsequenceCalculator - */ -final class MemoryEfficientImplementationTest extends LongestCommonSubsequenceTest -{ - protected function createImplementation(): LongestCommonSubsequenceCalculator - { - return new MemoryEfficientLongestCommonSubsequenceCalculator; - } -} diff --git a/vendor/sebastian/diff/tests/Output/AbstractChunkOutputBuilderTest.php b/vendor/sebastian/diff/tests/Output/AbstractChunkOutputBuilderTest.php deleted file mode 100644 index ad6ceb2c4..000000000 --- a/vendor/sebastian/diff/tests/Output/AbstractChunkOutputBuilderTest.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Differ; - -/** - * @covers SebastianBergmann\Diff\Output\AbstractChunkOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - * @uses SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - */ -final class AbstractChunkOutputBuilderTest extends TestCase -{ - /** - * @param array $expected - * @param string $from - * @param string $to - * @param int $lineThreshold - * - * @dataProvider provideGetCommonChunks - */ - public function testGetCommonChunks(array $expected, string $from, string $to, int $lineThreshold = 5): void - { - $output = new class extends AbstractChunkOutputBuilder { - public function getDiff(array $diff): string - { - return ''; - } - - public function getChunks(array $diff, $lineThreshold) - { - return $this->getCommonChunks($diff, $lineThreshold); - } - }; - - $this->assertSame( - $expected, - $output->getChunks((new Differ)->diffToArray($from, $to), $lineThreshold) - ); - } - - public function provideGetCommonChunks(): array - { - return[ - 'same (with default threshold)' => [ - [], - 'A', - 'A', - ], - 'same (threshold 0)' => [ - [0 => 0], - 'A', - 'A', - 0, - ], - 'empty' => [ - [], - '', - '', - ], - 'single line diff' => [ - [], - 'A', - 'B', - ], - 'below threshold I' => [ - [], - "A\nX\nC", - "A\nB\nC", - ], - 'below threshold II' => [ - [], - "A\n\n\n\nX\nC", - "A\n\n\n\nB\nC", - ], - 'below threshold III' => [ - [0 => 5], - "A\n\n\n\n\n\nB", - "A\n\n\n\n\n\nA", - ], - 'same start' => [ - [0 => 5], - "A\n\n\n\n\n\nX\nC", - "A\n\n\n\n\n\nB\nC", - ], - 'same start long' => [ - [0 => 13], - "\n\n\n\n\n\n\n\n\n\n\n\n\n\nA", - "\n\n\n\n\n\n\n\n\n\n\n\n\n\nB", - ], - 'same part in between' => [ - [2 => 8], - "A\n\n\n\n\n\n\nX\nY\nZ\n\n", - "B\n\n\n\n\n\n\nX\nA\nZ\n\n", - ], - 'same trailing' => [ - [2 => 14], - "A\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - "B\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - ], - 'same part in between, same trailing' => [ - [2 => 7, 10 => 15], - "A\n\n\n\n\n\n\nA\n\n\n\n\n\n\n", - "B\n\n\n\n\n\n\nB\n\n\n\n\n\n\n", - ], - 'below custom threshold I' => [ - [], - "A\n\nB", - "A\n\nD", - 2, - ], - 'custom threshold I' => [ - [0 => 1], - "A\n\nB", - "A\n\nD", - 1, - ], - 'custom threshold II' => [ - [], - "A\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - "A\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - 19, - ], - [ - [3 => 9], - "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk", - "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk", - ], - [ - [0 => 5, 8 => 13], - "A\nA\nA\nA\nA\nA\nX\nC\nC\nC\nC\nC\nC", - "A\nA\nA\nA\nA\nA\nB\nC\nC\nC\nC\nC\nC", - ], - [ - [0 => 5, 8 => 13], - "A\nA\nA\nA\nA\nA\nX\nC\nC\nC\nC\nC\nC\nX", - "A\nA\nA\nA\nA\nA\nB\nC\nC\nC\nC\nC\nC\nY", - ], - ]; - } -} diff --git a/vendor/sebastian/diff/tests/Output/DiffOnlyOutputBuilderTest.php b/vendor/sebastian/diff/tests/Output/DiffOnlyOutputBuilderTest.php deleted file mode 100644 index 87c017601..000000000 --- a/vendor/sebastian/diff/tests/Output/DiffOnlyOutputBuilderTest.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Differ; - -/** - * @covers SebastianBergmann\Diff\Output\DiffOnlyOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - */ -final class DiffOnlyOutputBuilderTest extends TestCase -{ - /** - * @param string $expected - * @param string $from - * @param string $to - * @param string $header - * - * @dataProvider textForNoNonDiffLinesProvider - */ - public function testDiffDoNotShowNonDiffLines(string $expected, string $from, string $to, string $header = ''): void - { - $differ = new Differ(new DiffOnlyOutputBuilder($header)); - - $this->assertSame($expected, $differ->diff($from, $to)); - } - - public function textForNoNonDiffLinesProvider(): array - { - return [ - [ - " #Warning: Strings contain different line endings!\n-A\r\n+B\n", - "A\r\n", - "B\n", - ], - [ - "-A\n+B\n", - "\nA", - "\nB", - ], - [ - '', - 'a', - 'a', - ], - [ - "-A\n+C\n", - "A\n\n\nB", - "C\n\n\nB", - ], - [ - "header\n", - 'a', - 'a', - 'header', - ], - [ - "header\n", - 'a', - 'a', - "header\n", - ], - ]; - } -} diff --git a/vendor/sebastian/diff/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php b/vendor/sebastian/diff/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php deleted file mode 100644 index d15f44578..000000000 --- a/vendor/sebastian/diff/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php +++ /dev/null @@ -1,299 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Utils\FileUtils; -use SebastianBergmann\Diff\Utils\UnifiedDiffAssertTrait; -use Symfony\Component\Process\Process; - -/** - * @covers SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - * - * @requires OS Linux - */ -final class StrictUnifiedDiffOutputBuilderIntegrationTest extends TestCase -{ - use UnifiedDiffAssertTrait; - - private $dir; - - private $fileFrom; - - private $fileTo; - - private $filePatch; - - protected function setUp(): void - { - $this->dir = \realpath(__DIR__ . '/../../fixtures/out') . '/'; - $this->fileFrom = $this->dir . 'from.txt'; - $this->fileTo = $this->dir . 'to.txt'; - $this->filePatch = $this->dir . 'diff.patch'; - - if (!\is_dir($this->dir)) { - throw new \RuntimeException('Integration test working directory not found.'); - } - - $this->cleanUpTempFiles(); - } - - protected function tearDown(): void - { - $this->cleanUpTempFiles(); - } - - /** - * Integration test - * - * - get a file pair - * - create a `diff` between the files - * - test applying the diff using `git apply` - * - test applying the diff using `patch` - * - * @param string $fileFrom - * @param string $fileTo - * - * @dataProvider provideFilePairs - */ - public function testIntegrationUsingPHPFileInVendorGitApply(string $fileFrom, string $fileTo): void - { - $from = FileUtils::getFileContent($fileFrom); - $to = FileUtils::getFileContent($fileTo); - - $diff = (new Differ(new StrictUnifiedDiffOutputBuilder(['fromFile' => 'Original', 'toFile' => 'New'])))->diff($from, $to); - - if ('' === $diff && $from === $to) { - // odd case: test after executing as it is more efficient than to read the files and check the contents every time - $this->addToAssertionCount(1); - - return; - } - - $this->doIntegrationTestGitApply($diff, $from, $to); - } - - /** - * Integration test - * - * - get a file pair - * - create a `diff` between the files - * - test applying the diff using `git apply` - * - test applying the diff using `patch` - * - * @param string $fileFrom - * @param string $fileTo - * - * @dataProvider provideFilePairs - */ - public function testIntegrationUsingPHPFileInVendorPatch(string $fileFrom, string $fileTo): void - { - $from = FileUtils::getFileContent($fileFrom); - $to = FileUtils::getFileContent($fileTo); - - $diff = (new Differ(new StrictUnifiedDiffOutputBuilder(['fromFile' => 'Original', 'toFile' => 'New'])))->diff($from, $to); - - if ('' === $diff && $from === $to) { - // odd case: test after executing as it is more efficient than to read the files and check the contents every time - $this->addToAssertionCount(1); - - return; - } - - $this->doIntegrationTestPatch($diff, $from, $to); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider provideOutputBuildingCases - * @dataProvider provideSample - * @dataProvider provideBasicDiffGeneration - */ - public function testIntegrationOfUnitTestCasesGitApply(string $expected, string $from, string $to): void - { - $this->doIntegrationTestGitApply($expected, $from, $to); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider provideOutputBuildingCases - * @dataProvider provideSample - * @dataProvider provideBasicDiffGeneration - */ - public function testIntegrationOfUnitTestCasesPatch(string $expected, string $from, string $to): void - { - $this->doIntegrationTestPatch($expected, $from, $to); - } - - public function provideOutputBuildingCases(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideOutputBuildingCases(); - } - - public function provideSample(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideSample(); - } - - public function provideBasicDiffGeneration(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideBasicDiffGeneration(); - } - - public function provideFilePairs(): array - { - $cases = []; - $fromFile = __FILE__; - $vendorDir = \realpath(__DIR__ . '/../../../vendor'); - - $fileIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($vendorDir, \RecursiveDirectoryIterator::SKIP_DOTS)); - - /** @var \SplFileInfo $file */ - foreach ($fileIterator as $file) { - if ('php' !== $file->getExtension()) { - continue; - } - - $toFile = $file->getPathname(); - $cases[\sprintf("Diff file:\n\"%s\"\nvs.\n\"%s\"\n", \realpath($fromFile), \realpath($toFile))] = [$fromFile, $toFile]; - $fromFile = $toFile; - } - - return $cases; - } - - /** - * Compare diff create by builder and against one create by `diff` command. - * - * @param string $diff - * @param string $from - * @param string $to - * - * @dataProvider provideBasicDiffGeneration - */ - public function testIntegrationDiffOutputBuilderVersusDiffCommand(string $diff, string $from, string $to): void - { - $this->assertNotSame('', $diff); - $this->assertValidUnifiedDiffFormat($diff); - - $this->assertNotFalse(\file_put_contents($this->fileFrom, $from)); - $this->assertNotFalse(\file_put_contents($this->fileTo, $to)); - - $p = new Process(\sprintf('diff -u %s %s', \escapeshellarg($this->fileFrom), \escapeshellarg($this->fileTo))); - $p->run(); - $this->assertSame(1, $p->getExitCode()); // note: Process assumes exit code 0 for `isSuccessful`, however `diff` uses the exit code `1` for success with diff - - $output = $p->getOutput(); - - $diffLines = \preg_split('/(.*\R)/', $diff, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - $diffLines[0] = \preg_replace('#^\-\-\- .*#', '--- /' . $this->fileFrom, $diffLines[0], 1); - $diffLines[1] = \preg_replace('#^\+\+\+ .*#', '+++ /' . $this->fileFrom, $diffLines[1], 1); - $diff = \implode('', $diffLines); - - $outputLines = \preg_split('/(.*\R)/', $output, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - $outputLines[0] = \preg_replace('#^\-\-\- .*#', '--- /' . $this->fileFrom, $outputLines[0], 1); - $outputLines[1] = \preg_replace('#^\+\+\+ .*#', '+++ /' . $this->fileFrom, $outputLines[1], 1); - $output = \implode('', $outputLines); - - $this->assertSame($diff, $output); - } - - private function doIntegrationTestGitApply(string $diff, string $from, string $to): void - { - $this->assertNotSame('', $diff); - $this->assertValidUnifiedDiffFormat($diff); - - $diff = self::setDiffFileHeader($diff, $this->fileFrom); - - $this->assertNotFalse(\file_put_contents($this->fileFrom, $from)); - $this->assertNotFalse(\file_put_contents($this->filePatch, $diff)); - - $p = new Process(\sprintf( - 'git --git-dir %s apply --check -v --unsafe-paths --ignore-whitespace %s', - \escapeshellarg($this->dir), - \escapeshellarg($this->filePatch) - )); - - $p->run(); - - $this->assertProcessSuccessful($p); - } - - private function doIntegrationTestPatch(string $diff, string $from, string $to): void - { - $this->assertNotSame('', $diff); - $this->assertValidUnifiedDiffFormat($diff); - - $diff = self::setDiffFileHeader($diff, $this->fileFrom); - - $this->assertNotFalse(\file_put_contents($this->fileFrom, $from)); - $this->assertNotFalse(\file_put_contents($this->filePatch, $diff)); - - $command = \sprintf( - 'patch -u --verbose --posix %s < %s', - \escapeshellarg($this->fileFrom), - \escapeshellarg($this->filePatch) - ); - - $p = new Process($command); - $p->run(); - - $this->assertProcessSuccessful($p); - - $this->assertStringEqualsFile( - $this->fileFrom, - $to, - \sprintf('Patch command "%s".', $command) - ); - } - - private function assertProcessSuccessful(Process $p): void - { - $this->assertTrue( - $p->isSuccessful(), - \sprintf( - "Command exec. was not successful:\n\"%s\"\nOutput:\n\"%s\"\nStdErr:\n\"%s\"\nExit code %d.\n", - $p->getCommandLine(), - $p->getOutput(), - $p->getErrorOutput(), - $p->getExitCode() - ) - ); - } - - private function cleanUpTempFiles(): void - { - @\unlink($this->fileFrom . '.orig'); - @\unlink($this->fileFrom . '.rej'); - @\unlink($this->fileFrom); - @\unlink($this->fileTo); - @\unlink($this->filePatch); - } - - private static function setDiffFileHeader(string $diff, string $file): string - { - $diffLines = \preg_split('/(.*\R)/', $diff, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - $diffLines[0] = \preg_replace('#^\-\-\- .*#', '--- /' . $file, $diffLines[0], 1); - $diffLines[1] = \preg_replace('#^\+\+\+ .*#', '+++ /' . $file, $diffLines[1], 1); - - return \implode('', $diffLines); - } -} diff --git a/vendor/sebastian/diff/tests/Output/Integration/UnifiedDiffOutputBuilderIntegrationTest.php b/vendor/sebastian/diff/tests/Output/Integration/UnifiedDiffOutputBuilderIntegrationTest.php deleted file mode 100644 index c3fe0575b..000000000 --- a/vendor/sebastian/diff/tests/Output/Integration/UnifiedDiffOutputBuilderIntegrationTest.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Utils\UnifiedDiffAssertTrait; -use Symfony\Component\Process\Process; - -/** - * @covers SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - * - * @requires OS Linux - */ -final class UnifiedDiffOutputBuilderIntegrationTest extends TestCase -{ - use UnifiedDiffAssertTrait; - - private $dir; - - private $fileFrom; - - private $filePatch; - - protected function setUp(): void - { - $this->dir = \realpath(__DIR__ . '/../../fixtures/out/') . '/'; - $this->fileFrom = $this->dir . 'from.txt'; - $this->filePatch = $this->dir . 'patch.txt'; - - $this->cleanUpTempFiles(); - } - - protected function tearDown(): void - { - $this->cleanUpTempFiles(); - } - - /** - * @dataProvider provideDiffWithLineNumbers - * - * @param mixed $expected - * @param mixed $from - * @param mixed $to - */ - public function testDiffWithLineNumbersPath($expected, $from, $to): void - { - $this->doIntegrationTestPatch($expected, $from, $to); - } - - /** - * @dataProvider provideDiffWithLineNumbers - * - * @param mixed $expected - * @param mixed $from - * @param mixed $to - */ - public function testDiffWithLineNumbersGitApply($expected, $from, $to): void - { - $this->doIntegrationTestGitApply($expected, $from, $to); - } - - public function provideDiffWithLineNumbers() - { - return \array_filter( - UnifiedDiffOutputBuilderDataProvider::provideDiffWithLineNumbers(), - static function ($key) { - return !\is_string($key) || false === \strpos($key, 'non_patch_compat'); - }, - ARRAY_FILTER_USE_KEY - ); - } - - private function doIntegrationTestPatch(string $diff, string $from, string $to): void - { - $this->assertNotSame('', $diff); - $this->assertValidUnifiedDiffFormat($diff); - - $diff = self::setDiffFileHeader($diff, $this->fileFrom); - - $this->assertNotFalse(\file_put_contents($this->fileFrom, $from)); - $this->assertNotFalse(\file_put_contents($this->filePatch, $diff)); - - $command = \sprintf( - 'patch -u --verbose --posix %s < %s', // --posix - \escapeshellarg($this->fileFrom), - \escapeshellarg($this->filePatch) - ); - - $p = new Process($command); - $p->run(); - - $this->assertProcessSuccessful($p); - - $this->assertStringEqualsFile( - $this->fileFrom, - $to, - \sprintf('Patch command "%s".', $command) - ); - } - - private function doIntegrationTestGitApply(string $diff, string $from, string $to): void - { - $this->assertNotSame('', $diff); - $this->assertValidUnifiedDiffFormat($diff); - - $diff = self::setDiffFileHeader($diff, $this->fileFrom); - - $this->assertNotFalse(\file_put_contents($this->fileFrom, $from)); - $this->assertNotFalse(\file_put_contents($this->filePatch, $diff)); - - $command = \sprintf( - 'git --git-dir %s apply --check -v --unsafe-paths --ignore-whitespace %s', - \escapeshellarg($this->dir), - \escapeshellarg($this->filePatch) - ); - - $p = new Process($command); - $p->run(); - - $this->assertProcessSuccessful($p); - } - - private function assertProcessSuccessful(Process $p): void - { - $this->assertTrue( - $p->isSuccessful(), - \sprintf( - "Command exec. was not successful:\n\"%s\"\nOutput:\n\"%s\"\nStdErr:\n\"%s\"\nExit code %d.\n", - $p->getCommandLine(), - $p->getOutput(), - $p->getErrorOutput(), - $p->getExitCode() - ) - ); - } - - private function cleanUpTempFiles(): void - { - @\unlink($this->fileFrom . '.orig'); - @\unlink($this->fileFrom); - @\unlink($this->filePatch); - } - - private static function setDiffFileHeader(string $diff, string $file): string - { - $diffLines = \preg_split('/(.*\R)/', $diff, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - $diffLines[0] = \preg_replace('#^\-\-\- .*#', '--- /' . $file, $diffLines[0], 1); - $diffLines[1] = \preg_replace('#^\+\+\+ .*#', '+++ /' . $file, $diffLines[1], 1); - - return \implode('', $diffLines); - } -} diff --git a/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderDataProvider.php b/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderDataProvider.php deleted file mode 100644 index 56d3a1e24..000000000 --- a/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderDataProvider.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -final class StrictUnifiedDiffOutputBuilderDataProvider -{ - public static function provideOutputBuildingCases(): array - { - return [ - [ -'--- input.txt -+++ output.txt -@@ -1,3 +1,4 @@ -+b - ' . ' - ' . ' - ' . ' -@@ -16,5 +17,4 @@ - ' . ' - ' . ' - ' . ' -- --B -+A -', - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nB\n", - "b\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nA\n", - [ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ], - ], - [ -'--- ' . __FILE__ . "\t2017-10-02 17:38:11.586413675 +0100 -+++ output1.txt\t2017-10-03 12:09:43.086719482 +0100 -@@ -1,1 +1,1 @@ --B -+X -", - "B\n", - "X\n", - [ - 'fromFile' => __FILE__, - 'fromFileDate' => '2017-10-02 17:38:11.586413675 +0100', - 'toFile' => 'output1.txt', - 'toFileDate' => '2017-10-03 12:09:43.086719482 +0100', - 'collapseRanges' => false, - ], - ], - [ -'--- input.txt -+++ output.txt -@@ -1 +1 @@ --B -+X -', - "B\n", - "X\n", - [ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - 'collapseRanges' => true, - ], - ], - ]; - } - - public static function provideSample(): array - { - return [ - [ -'--- input.txt -+++ output.txt -@@ -1,6 +1,6 @@ - 1 - 2 - 3 --4 -+X - 5 - 6 -', - "1\n2\n3\n4\n5\n6\n", - "1\n2\n3\nX\n5\n6\n", - [ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ], - ], - ]; - } - - public static function provideBasicDiffGeneration(): array - { - return [ - [ -"--- input.txt -+++ output.txt -@@ -1,2 +1 @@ --A --B -+A\rB -", - "A\nB\n", - "A\rB\n", - ], - [ -"--- input.txt -+++ output.txt -@@ -1 +1 @@ -- -+\r -\\ No newline at end of file -", - "\n", - "\r", - ], - [ -"--- input.txt -+++ output.txt -@@ -1 +1 @@ --\r -\\ No newline at end of file -+ -", - "\r", - "\n", - ], - [ -'--- input.txt -+++ output.txt -@@ -1,3 +1,3 @@ - X - A --A -+B -', - "X\nA\nA\n", - "X\nA\nB\n", - ], - [ -'--- input.txt -+++ output.txt -@@ -1,3 +1,3 @@ - X - A --A -\ No newline at end of file -+B -', - "X\nA\nA", - "X\nA\nB\n", - ], - [ -'--- input.txt -+++ output.txt -@@ -1,3 +1,3 @@ - A - A --A -+B -\ No newline at end of file -', - "A\nA\nA\n", - "A\nA\nB", - ], - [ -'--- input.txt -+++ output.txt -@@ -1 +1 @@ --A -\ No newline at end of file -+B -\ No newline at end of file -', - 'A', - 'B', - ], - ]; - } -} diff --git a/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderTest.php b/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderTest.php deleted file mode 100644 index 64cb25b2c..000000000 --- a/vendor/sebastian/diff/tests/Output/StrictUnifiedDiffOutputBuilderTest.php +++ /dev/null @@ -1,684 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\ConfigurationException; -use SebastianBergmann\Diff\Differ; -use SebastianBergmann\Diff\Utils\UnifiedDiffAssertTrait; - -/** - * @covers SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - */ -final class StrictUnifiedDiffOutputBuilderTest extends TestCase -{ - use UnifiedDiffAssertTrait; - - /** - * @param string $expected - * @param string $from - * @param string $to - * @param array $options - * - * @dataProvider provideOutputBuildingCases - */ - public function testOutputBuilding(string $expected, string $from, string $to, array $options): void - { - $diff = $this->getDiffer($options)->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * @param array $options - * - * @dataProvider provideSample - */ - public function testSample(string $expected, string $from, string $to, array $options): void - { - $diff = $this->getDiffer($options)->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - /** - * {@inheritdoc} - */ - public function assertValidDiffFormat(string $diff): void - { - $this->assertValidUnifiedDiffFormat($diff); - } - - /** - * {@inheritdoc} - */ - public function provideOutputBuildingCases(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideOutputBuildingCases(); - } - - /** - * {@inheritdoc} - */ - public function provideSample(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideSample(); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider provideBasicDiffGeneration - */ - public function testBasicDiffGeneration(string $expected, string $from, string $to): void - { - $diff = $this->getDiffer([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ])->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - public function provideBasicDiffGeneration(): array - { - return StrictUnifiedDiffOutputBuilderDataProvider::provideBasicDiffGeneration(); - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * @param array $config - * - * @dataProvider provideConfiguredDiffGeneration - */ - public function testConfiguredDiffGeneration(string $expected, string $from, string $to, array $config = []): void - { - $diff = $this->getDiffer(\array_merge([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ], $config))->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - public function provideConfiguredDiffGeneration(): array - { - return [ - [ - '--- input.txt -+++ output.txt -@@ -1 +1 @@ --a -\ No newline at end of file -+b -\ No newline at end of file -', - 'a', - 'b', - ], - [ - '', - "1\n2", - "1\n2", - ], - [ - '', - "1\n", - "1\n", - ], - [ -'--- input.txt -+++ output.txt -@@ -4 +4 @@ --X -+4 -', - "1\n2\n3\nX\n5\n6\n7\n8\n9\n0\n", - "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", - [ - 'contextLines' => 0, - ], - ], - [ -'--- input.txt -+++ output.txt -@@ -3,3 +3,3 @@ - 3 --X -+4 - 5 -', - "1\n2\n3\nX\n5\n6\n7\n8\n9\n0\n", - "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", - [ - 'contextLines' => 1, - ], - ], - [ -'--- input.txt -+++ output.txt -@@ -1,10 +1,10 @@ - 1 - 2 - 3 --X -+4 - 5 - 6 - 7 - 8 - 9 - 0 -', - "1\n2\n3\nX\n5\n6\n7\n8\n9\n0\n", - "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", - [ - 'contextLines' => 999, - ], - ], - [ -'--- input.txt -+++ output.txt -@@ -1,0 +1,2 @@ -+ -+A -', - '', - "\nA\n", - ], - [ -'--- input.txt -+++ output.txt -@@ -1,2 +1,0 @@ -- --A -', - "\nA\n", - '', - ], - [ - '--- input.txt -+++ output.txt -@@ -1,5 +1,5 @@ - 1 --X -+2 - 3 --Y -+4 - 5 -@@ -8,3 +8,3 @@ - 8 --X -+9 - 0 -', - "1\nX\n3\nY\n5\n6\n7\n8\nX\n0\n", - "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", - [ - 'commonLineThreshold' => 2, - 'contextLines' => 1, - ], - ], - [ - '--- input.txt -+++ output.txt -@@ -2 +2 @@ --X -+2 -@@ -4 +4 @@ --Y -+4 -@@ -9 +9 @@ --X -+9 -', - "1\nX\n3\nY\n5\n6\n7\n8\nX\n0\n", - "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", - [ - 'commonLineThreshold' => 1, - 'contextLines' => 0, - ], - ], - ]; - } - - public function testReUseBuilder(): void - { - $differ = $this->getDiffer([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ]); - - $diff = $differ->diff("A\nB\n", "A\nX\n"); - $this->assertSame( -'--- input.txt -+++ output.txt -@@ -1,2 +1,2 @@ - A --B -+X -', - $diff - ); - - $diff = $differ->diff("A\n", "A\n"); - $this->assertSame( - '', - $diff - ); - } - - public function testEmptyDiff(): void - { - $builder = new StrictUnifiedDiffOutputBuilder([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - ]); - - $this->assertSame( - '', - $builder->getDiff([]) - ); - } - - /** - * @param array $options - * @param string $message - * - * @dataProvider provideInvalidConfiguration - */ - public function testInvalidConfiguration(array $options, string $message): void - { - $this->expectException(ConfigurationException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote($message, '#'))); - - new StrictUnifiedDiffOutputBuilder($options); - } - - public function provideInvalidConfiguration(): array - { - $time = \time(); - - return [ - [ - ['collapseRanges' => 1], - 'Option "collapseRanges" must be a bool, got "integer#1".', - ], - [ - ['contextLines' => 'a'], - 'Option "contextLines" must be an int >= 0, got "string#a".', - ], - [ - ['commonLineThreshold' => -2], - 'Option "commonLineThreshold" must be an int > 0, got "integer#-2".', - ], - [ - ['commonLineThreshold' => 0], - 'Option "commonLineThreshold" must be an int > 0, got "integer#0".', - ], - [ - ['fromFile' => new \SplFileInfo(__FILE__)], - 'Option "fromFile" must be a string, got "SplFileInfo".', - ], - [ - ['fromFile' => null], - 'Option "fromFile" must be a string, got "<null>".', - ], - [ - [ - 'fromFile' => __FILE__, - 'toFile' => 1, - ], - 'Option "toFile" must be a string, got "integer#1".', - ], - [ - [ - 'fromFile' => __FILE__, - 'toFile' => __FILE__, - 'toFileDate' => $time, - ], - 'Option "toFileDate" must be a string or <null>, got "integer#' . $time . '".', - ], - [ - [], - 'Option "fromFile" must be a string, got "<null>".', - ], - ]; - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * @param int $threshold - * - * @dataProvider provideCommonLineThresholdCases - */ - public function testCommonLineThreshold(string $expected, string $from, string $to, int $threshold): void - { - $diff = $this->getDiffer([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - 'commonLineThreshold' => $threshold, - 'contextLines' => 0, - ])->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - public function provideCommonLineThresholdCases(): array - { - return [ - [ -'--- input.txt -+++ output.txt -@@ -2,3 +2,3 @@ --X -+B - C12 --Y -+D -@@ -7 +7 @@ --X -+Z -', - "A\nX\nC12\nY\nA\nA\nX\n", - "A\nB\nC12\nD\nA\nA\nZ\n", - 2, - ], - [ -'--- input.txt -+++ output.txt -@@ -2 +2 @@ --X -+B -@@ -4 +4 @@ --Y -+D -', - "A\nX\nV\nY\n", - "A\nB\nV\nD\n", - 1, - ], - ]; - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * @param int $contextLines - * @param int $commonLineThreshold - * - * @dataProvider provideContextLineConfigurationCases - */ - public function testContextLineConfiguration(string $expected, string $from, string $to, int $contextLines, int $commonLineThreshold = 6): void - { - $diff = $this->getDiffer([ - 'fromFile' => 'input.txt', - 'toFile' => 'output.txt', - 'contextLines' => $contextLines, - 'commonLineThreshold' => $commonLineThreshold, - ])->diff($from, $to); - - $this->assertValidDiffFormat($diff); - $this->assertSame($expected, $diff); - } - - public function provideContextLineConfigurationCases(): array - { - $from = "A\nB\nC\nD\nE\nF\nX\nG\nH\nI\nJ\nK\nL\nM\n"; - $to = "A\nB\nC\nD\nE\nF\nY\nG\nH\nI\nJ\nK\nL\nM\n"; - - return [ - 'EOF 0' => [ - "--- input.txt\n+++ output.txt\n@@ -3 +3 @@ --X -\\ No newline at end of file -+Y -\\ No newline at end of file -", - "A\nB\nX", - "A\nB\nY", - 0, - ], - 'EOF 1' => [ - "--- input.txt\n+++ output.txt\n@@ -2,2 +2,2 @@ - B --X -\\ No newline at end of file -+Y -\\ No newline at end of file -", - "A\nB\nX", - "A\nB\nY", - 1, -], - 'EOF 2' => [ - "--- input.txt\n+++ output.txt\n@@ -1,3 +1,3 @@ - A - B --X -\\ No newline at end of file -+Y -\\ No newline at end of file -", - "A\nB\nX", - "A\nB\nY", - 2, - ], - 'EOF 200' => [ - "--- input.txt\n+++ output.txt\n@@ -1,3 +1,3 @@ - A - B --X -\\ No newline at end of file -+Y -\\ No newline at end of file -", - "A\nB\nX", - "A\nB\nY", - 200, - ], - 'n/a 0' => [ - "--- input.txt\n+++ output.txt\n@@ -7 +7 @@\n-X\n+Y\n", - $from, - $to, - 0, - ], - 'G' => [ - "--- input.txt\n+++ output.txt\n@@ -6,3 +6,3 @@\n F\n-X\n+Y\n G\n", - $from, - $to, - 1, - ], - 'H' => [ - "--- input.txt\n+++ output.txt\n@@ -5,5 +5,5 @@\n E\n F\n-X\n+Y\n G\n H\n", - $from, - $to, - 2, - ], - 'I' => [ - "--- input.txt\n+++ output.txt\n@@ -4,7 +4,7 @@\n D\n E\n F\n-X\n+Y\n G\n H\n I\n", - $from, - $to, - 3, - ], - 'J' => [ - "--- input.txt\n+++ output.txt\n@@ -3,9 +3,9 @@\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n", - $from, - $to, - 4, - ], - 'K' => [ - "--- input.txt\n+++ output.txt\n@@ -2,11 +2,11 @@\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n", - $from, - $to, - 5, - ], - 'L' => [ - "--- input.txt\n+++ output.txt\n@@ -1,13 +1,13 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n", - $from, - $to, - 6, - ], - 'M' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n M\n", - $from, - $to, - 7, - ], - 'M no linebreak EOF .1' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n-M\n+M\n\\ No newline at end of file\n", - $from, - \substr($to, 0, -1), - 7, - ], - 'M no linebreak EOF .2' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n-M\n\\ No newline at end of file\n+M\n", - \substr($from, 0, -1), - $to, - 7, - ], - 'M no linebreak EOF .3' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n M\n", - \substr($from, 0, -1), - \substr($to, 0, -1), - 7, - ], - 'M no linebreak EOF .4' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n M\n\\ No newline at end of file\n", - \substr($from, 0, -1), - \substr($to, 0, -1), - 10000, - 10000, - ], - 'M+1' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n M\n", - $from, - $to, - 8, - ], - 'M+100' => [ - "--- input.txt\n+++ output.txt\n@@ -1,14 +1,14 @@\n A\n B\n C\n D\n E\n F\n-X\n+Y\n G\n H\n I\n J\n K\n L\n M\n", - $from, - $to, - 107, - ], - '0 II' => [ - "--- input.txt\n+++ output.txt\n@@ -12 +12 @@\n-X\n+Y\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nM\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nM\n", - 0, - 999, - ], - '0\' II' => [ - "--- input.txt\n+++ output.txt\n@@ -12 +12 @@\n-X\n+Y\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nM\nA\nA\nA\nA\nA\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nM\nA\nA\nA\nA\nA\n", - 0, - 999, - ], - '0\'\' II' => [ - "--- input.txt\n+++ output.txt\n@@ -12,2 +12,2 @@\n-X\n-M\n\\ No newline at end of file\n+Y\n+M\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nM", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nM\n", - 0, - ], - '0\'\'\' II' => [ - "--- input.txt\n+++ output.txt\n@@ -12,2 +12,2 @@\n-X\n-X1\n+Y\n+Y2\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nX1\nM\nA\nA\nA\nA\nA\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nY2\nM\nA\nA\nA\nA\nA\n", - 0, - 999, - ], - '1 II' => [ - "--- input.txt\n+++ output.txt\n@@ -11,3 +11,3 @@\n K\n-X\n+Y\n M\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nM\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nM\n", - 1, - ], - '5 II' => [ - "--- input.txt\n+++ output.txt\n@@ -7,7 +7,7 @@\n G\n H\n I\n J\n K\n-X\n+Y\n M\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nX\nM\n", - "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nY\nM\n", - 5, - ], - [ - '--- input.txt -+++ output.txt -@@ -1,28 +1,28 @@ - A --X -+B - V --Y -+D - 1 - A - 2 - A - 3 - A - 4 - A - 8 - A - 9 - A - 5 - A - A - A - A - A - A - A - A - A - A - A -', - "A\nX\nV\nY\n1\nA\n2\nA\n3\nA\n4\nA\n8\nA\n9\nA\n5\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n", - "A\nB\nV\nD\n1\nA\n2\nA\n3\nA\n4\nA\n8\nA\n9\nA\n5\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n", - 9999, - 99999, - ], - ]; - } - - /** - * Returns a new instance of a Differ with a new instance of the class (DiffOutputBuilderInterface) under test. - * - * @param array $options - * - * @return Differ - */ - private function getDiffer(array $options = []): Differ - { - return new Differ(new StrictUnifiedDiffOutputBuilder($options)); - } -} diff --git a/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderDataProvider.php b/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderDataProvider.php deleted file mode 100644 index 391a9b151..000000000 --- a/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderDataProvider.php +++ /dev/null @@ -1,396 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -final class UnifiedDiffOutputBuilderDataProvider -{ - public static function provideDiffWithLineNumbers(): array - { - return [ - 'diff line 1 non_patch_compat' => [ -'--- Original -+++ New -@@ -1 +1 @@ --AA -+BA -', - 'AA', - 'BA', - ], - 'diff line +1 non_patch_compat' => [ -'--- Original -+++ New -@@ -1 +1,2 @@ --AZ -+ -+B -', - 'AZ', - "\nB", - ], - 'diff line -1 non_patch_compat' => [ -'--- Original -+++ New -@@ -1,2 +1 @@ -- --AF -+B -', - "\nAF", - 'B', - ], - 'II non_patch_compat' => [ -'--- Original -+++ New -@@ -1,4 +1,2 @@ -- -- - A - 1 -', - "\n\nA\n1", - "A\n1", - ], - 'diff last line II - no trailing linebreak non_patch_compat' => [ -'--- Original -+++ New -@@ -5,4 +5,4 @@ - ' . ' - ' . ' - ' . ' --E -+B -', - "A\n\n\n\n\n\n\nE", - "A\n\n\n\n\n\n\nB", - ], - [ - "--- Original\n+++ New\n@@ -1,2 +1 @@\n \n-\n", - "\n\n", - "\n", - ], - 'diff line endings non_patch_compat' => [ - "--- Original\n+++ New\n@@ -1 +1 @@\n #Warning: Strings contain different line endings!\n-<?php\r\n+<?php\n", - "<?php\r\n", - "<?php\n", - ], - 'same non_patch_compat' => [ -'--- Original -+++ New -', - "AT\n", - "AT\n", - ], - [ -'--- Original -+++ New -@@ -1,4 +1,4 @@ --b -+a - ' . ' - ' . ' - ' . ' -', - "b\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - "a\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", - ], - 'diff line @1' => [ -'--- Original -+++ New -@@ -1,2 +1,2 @@ - ' . ' --AG -+B -', - "\nAG\n", - "\nB\n", - ], - 'same multiple lines' => [ -'--- Original -+++ New -@@ -1,4 +1,4 @@ - ' . ' - ' . ' --V -+B - C213 -', - "\n\nV\nC213", - "\n\nB\nC213", - ], - 'diff last line I' => [ -'--- Original -+++ New -@@ -5,4 +5,4 @@ - ' . ' - ' . ' - ' . ' --E -+B -', - "A\n\n\n\n\n\n\nE\n", - "A\n\n\n\n\n\n\nB\n", - ], - 'diff line middle' => [ -'--- Original -+++ New -@@ -5,7 +5,7 @@ - ' . ' - ' . ' - ' . ' --X -+Z - ' . ' - ' . ' - ' . ' -', - "A\n\n\n\n\n\n\nX\n\n\n\n\n\n\nAY", - "A\n\n\n\n\n\n\nZ\n\n\n\n\n\n\nAY", - ], - 'diff last line III' => [ -'--- Original -+++ New -@@ -12,4 +12,4 @@ - ' . ' - ' . ' - ' . ' --A -+B -', - "A\n\n\n\n\n\n\nA\n\n\n\n\n\n\nA\n", - "A\n\n\n\n\n\n\nA\n\n\n\n\n\n\nB\n", - ], - [ -'--- Original -+++ New -@@ -1,8 +1,8 @@ - A --B -+B1 - D - E - EE - F --G -+G1 - H -', - "A\nB\nD\nE\nEE\nF\nG\nH", - "A\nB1\nD\nE\nEE\nF\nG1\nH", - ], - [ -'--- Original -+++ New -@@ -1,4 +1,5 @@ - Z -+ - a - b - c -@@ -7,5 +8,5 @@ - f - g - h --i -+x - j -', -'Z -a -b -c -d -e -f -g -h -i -j -', -'Z - -a -b -c -d -e -f -g -h -x -j -', - ], - [ -'--- Original -+++ New -@@ -1,7 +1,5 @@ -- --a -+b - A --X -- -+Y - ' . ' - A -', - "\na\nA\nX\n\n\nA\n", - "b\nA\nY\n\nA\n", - ], - [ -<<<EOF ---- Original -+++ New -@@ -1,7 +1,5 @@ -- -- - a --b -+p - c - d - e -@@ -9,5 +7,5 @@ - g - h - i --j -+w - k - -EOF - , - "\n\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\n", - "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk\n", - ], - [ -'--- Original -+++ New -@@ -8,7 +8,7 @@ - ' . ' - ' . ' - ' . ' --A -+C - ' . ' - ' . ' - ' . ' -', - "E\n\n\n\n\nB\n\n\n\n\nA\n\n\n\n\n\n\n\n\nD1", - "E\n\n\n\n\nB\n\n\n\n\nC\n\n\n\n\n\n\n\n\nD1", - ], - [ -'--- Original -+++ New -@@ -5,7 +5,7 @@ - ' . ' - ' . ' - ' . ' --Z -+U - ' . ' - ' . ' - ' . ' -@@ -12,7 +12,7 @@ - ' . ' - ' . ' - ' . ' --X -+V - ' . ' - ' . ' - ' . ' -@@ -19,7 +19,7 @@ - ' . ' - ' . ' - ' . ' --Y -+W - ' . ' - ' . ' - ' . ' -@@ -26,7 +26,7 @@ - ' . ' - ' . ' - ' . ' --W -+X - ' . ' - ' . ' - ' . ' -@@ -33,7 +33,7 @@ - ' . ' - ' . ' - ' . ' --V -+Y - ' . ' - ' . ' - ' . ' -@@ -40,4 +40,4 @@ - ' . ' - ' . ' - ' . ' --U -+Z -', - "\n\n\n\n\n\n\nZ\n\n\n\n\n\n\nX\n\n\n\n\n\n\nY\n\n\n\n\n\n\nW\n\n\n\n\n\n\nV\n\n\n\n\n\n\nU\n", - "\n\n\n\n\n\n\nU\n\n\n\n\n\n\nV\n\n\n\n\n\n\nW\n\n\n\n\n\n\nX\n\n\n\n\n\n\nY\n\n\n\n\n\n\nZ\n", - ], - [ -<<<EOF ---- Original -+++ New -@@ -1,5 +1,5 @@ - a --b -+p - c - d - e -@@ -7,5 +7,5 @@ - g - h - i --j -+w - k - -EOF - , - "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\n", - "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk\n", - ], - [ -<<<EOF ---- Original -+++ New -@@ -1,4 +1,4 @@ --A -+B - 1 - 2 - 3 - -EOF - , - "A\n1\n2\n3\n4\n5\n6\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1", - "B\n1\n2\n3\n4\n5\n6\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1", - ], - [ - "--- Original\n+++ New\n@@ -4,7 +4,7 @@\n D\n E\n F\n-X\n+Y\n G\n H\n I\n", - "A\nB\nC\nD\nE\nF\nX\nG\nH\nI\nJ\nK\nL\nM\n", - "A\nB\nC\nD\nE\nF\nY\nG\nH\nI\nJ\nK\nL\nM\n", - ], - ]; - } -} diff --git a/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderTest.php b/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderTest.php deleted file mode 100644 index e587fff6d..000000000 --- a/vendor/sebastian/diff/tests/Output/UnifiedDiffOutputBuilderTest.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Output; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Differ; - -/** - * @covers SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder - * - * @uses SebastianBergmann\Diff\Differ - * @uses SebastianBergmann\Diff\Output\AbstractChunkOutputBuilder - * @uses SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - */ -final class UnifiedDiffOutputBuilderTest extends TestCase -{ - /** - * @param string $expected - * @param string $from - * @param string $to - * @param string $header - * - * @dataProvider headerProvider - */ - public function testCustomHeaderCanBeUsed(string $expected, string $from, string $to, string $header): void - { - $differ = new Differ(new UnifiedDiffOutputBuilder($header)); - - $this->assertSame( - $expected, - $differ->diff($from, $to) - ); - } - - public function headerProvider(): array - { - return [ - [ - "CUSTOM HEADER\n@@ @@\n-a\n+b\n", - 'a', - 'b', - 'CUSTOM HEADER', - ], - [ - "CUSTOM HEADER\n@@ @@\n-a\n+b\n", - 'a', - 'b', - "CUSTOM HEADER\n", - ], - [ - "CUSTOM HEADER\n\n@@ @@\n-a\n+b\n", - 'a', - 'b', - "CUSTOM HEADER\n\n", - ], - [ - "@@ @@\n-a\n+b\n", - 'a', - 'b', - '', - ], - ]; - } - - /** - * @param string $expected - * @param string $from - * @param string $to - * - * @dataProvider provideDiffWithLineNumbers - */ - public function testDiffWithLineNumbers($expected, $from, $to): void - { - $differ = new Differ(new UnifiedDiffOutputBuilder("--- Original\n+++ New\n", true)); - $this->assertSame($expected, $differ->diff($from, $to)); - } - - public function provideDiffWithLineNumbers(): array - { - return UnifiedDiffOutputBuilderDataProvider::provideDiffWithLineNumbers(); - } -} diff --git a/vendor/sebastian/diff/tests/ParserTest.php b/vendor/sebastian/diff/tests/ParserTest.php deleted file mode 100644 index 69bf4644a..000000000 --- a/vendor/sebastian/diff/tests/ParserTest.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Diff\Utils\FileUtils; - -/** - * @covers SebastianBergmann\Diff\Parser - * - * @uses SebastianBergmann\Diff\Chunk - * @uses SebastianBergmann\Diff\Diff - * @uses SebastianBergmann\Diff\Line - */ -final class ParserTest extends TestCase -{ - /** - * @var Parser - */ - private $parser; - - protected function setUp(): void - { - $this->parser = new Parser; - } - - public function testParse(): void - { - $content = FileUtils::getFileContent(__DIR__ . '/fixtures/patch.txt'); - - $diffs = $this->parser->parse($content); - - $this->assertContainsOnlyInstancesOf(Diff::class, $diffs); - $this->assertCount(1, $diffs); - - $chunks = $diffs[0]->getChunks(); - $this->assertContainsOnlyInstancesOf(Chunk::class, $chunks); - - $this->assertCount(1, $chunks); - - $this->assertSame(20, $chunks[0]->getStart()); - - $this->assertCount(4, $chunks[0]->getLines()); - } - - public function testParseWithMultipleChunks(): void - { - $content = FileUtils::getFileContent(__DIR__ . '/fixtures/patch2.txt'); - - $diffs = $this->parser->parse($content); - - $this->assertCount(1, $diffs); - - $chunks = $diffs[0]->getChunks(); - $this->assertCount(3, $chunks); - - $this->assertSame(20, $chunks[0]->getStart()); - $this->assertSame(320, $chunks[1]->getStart()); - $this->assertSame(600, $chunks[2]->getStart()); - - $this->assertCount(5, $chunks[0]->getLines()); - $this->assertCount(5, $chunks[1]->getLines()); - $this->assertCount(4, $chunks[2]->getLines()); - } - - public function testParseWithRemovedLines(): void - { - $content = <<<END -diff --git a/Test.txt b/Test.txt -index abcdefg..abcdefh 100644 ---- a/Test.txt -+++ b/Test.txt -@@ -49,9 +49,8 @@ - A --B -END; - $diffs = $this->parser->parse($content); - $this->assertContainsOnlyInstancesOf(Diff::class, $diffs); - $this->assertCount(1, $diffs); - - $chunks = $diffs[0]->getChunks(); - - $this->assertContainsOnlyInstancesOf(Chunk::class, $chunks); - $this->assertCount(1, $chunks); - - $chunk = $chunks[0]; - $this->assertSame(49, $chunk->getStart()); - $this->assertSame(49, $chunk->getEnd()); - $this->assertSame(9, $chunk->getStartRange()); - $this->assertSame(8, $chunk->getEndRange()); - - $lines = $chunk->getLines(); - $this->assertContainsOnlyInstancesOf(Line::class, $lines); - $this->assertCount(2, $lines); - - /** @var Line $line */ - $line = $lines[0]; - $this->assertSame('A', $line->getContent()); - $this->assertSame(Line::UNCHANGED, $line->getType()); - - $line = $lines[1]; - $this->assertSame('B', $line->getContent()); - $this->assertSame(Line::REMOVED, $line->getType()); - } - - public function testParseDiffForMulitpleFiles(): void - { - $content = <<<END -diff --git a/Test.txt b/Test.txt -index abcdefg..abcdefh 100644 ---- a/Test.txt -+++ b/Test.txt -@@ -1,3 +1,2 @@ - A --B - -diff --git a/Test123.txt b/Test123.txt -index abcdefg..abcdefh 100644 ---- a/Test2.txt -+++ b/Test2.txt -@@ -1,2 +1,3 @@ - A -+B -END; - $diffs = $this->parser->parse($content); - $this->assertCount(2, $diffs); - - /** @var Diff $diff */ - $diff = $diffs[0]; - $this->assertSame('a/Test.txt', $diff->getFrom()); - $this->assertSame('b/Test.txt', $diff->getTo()); - $this->assertCount(1, $diff->getChunks()); - - $diff = $diffs[1]; - $this->assertSame('a/Test2.txt', $diff->getFrom()); - $this->assertSame('b/Test2.txt', $diff->getTo()); - $this->assertCount(1, $diff->getChunks()); - } - - /** - * @param string $diff - * @param Diff[] $expected - * - * @dataProvider diffProvider - */ - public function testParser(string $diff, array $expected): void - { - $result = $this->parser->parse($diff); - - $this->assertEquals($expected, $result); - } - - public function diffProvider(): array - { - return [ - [ - "--- old.txt 2014-11-04 08:51:02.661868729 +0300\n+++ new.txt 2014-11-04 08:51:02.665868730 +0300\n@@ -1,3 +1,4 @@\n+2222111\n 1111111\n 1111111\n 1111111\n@@ -5,10 +6,8 @@\n 1111111\n 1111111\n 1111111\n +1121211\n 1111111\n -1111111\n -1111111\n -2222222\n 2222222\n 2222222\n 2222222\n@@ -17,5 +16,6 @@\n 2222222\n 2222222\n 2222222\n +2122212\n 2222222\n 2222222\n", - \unserialize(FileUtils::getFileContent(__DIR__ . '/fixtures/serialized_diff.bin')), - ], - ]; - } -} diff --git a/vendor/sebastian/diff/tests/TimeEfficientImplementationTest.php b/vendor/sebastian/diff/tests/TimeEfficientImplementationTest.php deleted file mode 100644 index 2bb683d67..000000000 --- a/vendor/sebastian/diff/tests/TimeEfficientImplementationTest.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff; - -/** - * @covers SebastianBergmann\Diff\TimeEfficientLongestCommonSubsequenceCalculator - */ -final class TimeEfficientImplementationTest extends LongestCommonSubsequenceTest -{ - protected function createImplementation(): LongestCommonSubsequenceCalculator - { - return new TimeEfficientLongestCommonSubsequenceCalculator; - } -} diff --git a/vendor/sebastian/diff/tests/Utils/FileUtils.php b/vendor/sebastian/diff/tests/Utils/FileUtils.php deleted file mode 100644 index 36e76fa01..000000000 --- a/vendor/sebastian/diff/tests/Utils/FileUtils.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Utils; - -final class FileUtils -{ - public static function getFileContent(string $file): string - { - $content = @\file_get_contents($file); - - if (false === $content) { - $error = \error_get_last(); - - throw new \RuntimeException(\sprintf( - 'Failed to read content of file "%s".%s', - $file, - $error ? ' ' . $error['message'] : '' - )); - } - - return $content; - } -} diff --git a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTrait.php b/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTrait.php deleted file mode 100644 index 40ab44cc4..000000000 --- a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTrait.php +++ /dev/null @@ -1,277 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Utils; - -trait UnifiedDiffAssertTrait -{ - /** - * @param string $diff - * - * @throws \UnexpectedValueException - */ - public function assertValidUnifiedDiffFormat(string $diff): void - { - if ('' === $diff) { - $this->addToAssertionCount(1); - - return; - } - - // test diff ends with a line break - $last = \substr($diff, -1); - - if ("\n" !== $last && "\r" !== $last) { - throw new \UnexpectedValueException(\sprintf('Expected diff to end with a line break, got "%s".', $last)); - } - - $lines = \preg_split('/(.*\R)/', $diff, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - $lineCount = \count($lines); - $lineNumber = $diffLineFromNumber = $diffLineToNumber = 1; - $fromStart = $fromTillOffset = $toStart = $toTillOffset = -1; - $expectHunkHeader = true; - - // check for header - if ($lineCount > 1) { - $this->unifiedDiffAssertLinePrefix($lines[0], 'Line 1.'); - $this->unifiedDiffAssertLinePrefix($lines[1], 'Line 2.'); - - if ('---' === \substr($lines[0], 0, 3)) { - if ('+++' !== \substr($lines[1], 0, 3)) { - throw new \UnexpectedValueException(\sprintf("Line 1 indicates a header, so line 2 must start with \"+++\".\nLine 1: \"%s\"\nLine 2: \"%s\".", $lines[0], $lines[1])); - } - - $this->unifiedDiffAssertHeaderLine($lines[0], '--- ', 'Line 1.'); - $this->unifiedDiffAssertHeaderLine($lines[1], '+++ ', 'Line 2.'); - - $lineNumber = 3; - } - } - - $endOfLineTypes = []; - $diffClosed = false; - - // assert format of lines, get all hunks, test the line numbers - for (; $lineNumber <= $lineCount; ++$lineNumber) { - if ($diffClosed) { - throw new \UnexpectedValueException(\sprintf('Unexpected line as 2 "No newline" markers have found, ". Line %d.', $lineNumber)); - } - - $line = $lines[$lineNumber - 1]; // line numbers start by 1, array index at 0 - $type = $this->unifiedDiffAssertLinePrefix($line, \sprintf('Line %d.', $lineNumber)); - - if ($expectHunkHeader && '@' !== $type && '\\' !== $type) { - throw new \UnexpectedValueException(\sprintf('Expected hunk start (\'@\'), got "%s". Line %d.', $type, $lineNumber)); - } - - if ('@' === $type) { - if (!$expectHunkHeader) { - throw new \UnexpectedValueException(\sprintf('Unexpected hunk start (\'@\'). Line %d.', $lineNumber)); - } - - $previousHunkFromEnd = $fromStart + $fromTillOffset; - $previousHunkTillEnd = $toStart + $toTillOffset; - - [$fromStart, $fromTillOffset, $toStart, $toTillOffset] = $this->unifiedDiffAssertHunkHeader($line, \sprintf('Line %d.', $lineNumber)); - - // detect overlapping hunks - if ($fromStart < $previousHunkFromEnd) { - throw new \UnexpectedValueException(\sprintf('Unexpected new hunk; "from" (\'-\') start overlaps previous hunk. Line %d.', $lineNumber)); - } - - if ($toStart < $previousHunkTillEnd) { - throw new \UnexpectedValueException(\sprintf('Unexpected new hunk; "to" (\'+\') start overlaps previous hunk. Line %d.', $lineNumber)); - } - - /* valid states; hunks touches against each other: - $fromStart === $previousHunkFromEnd - $toStart === $previousHunkTillEnd - */ - - $diffLineFromNumber = $fromStart; - $diffLineToNumber = $toStart; - $expectHunkHeader = false; - - continue; - } - - if ('-' === $type) { - if (isset($endOfLineTypes['-'])) { - throw new \UnexpectedValueException(\sprintf('Not expected from (\'-\'), already closed by "\\ No newline at end of file". Line %d.', $lineNumber)); - } - - ++$diffLineFromNumber; - } elseif ('+' === $type) { - if (isset($endOfLineTypes['+'])) { - throw new \UnexpectedValueException(\sprintf('Not expected to (\'+\'), already closed by "\\ No newline at end of file". Line %d.', $lineNumber)); - } - - ++$diffLineToNumber; - } elseif (' ' === $type) { - if (isset($endOfLineTypes['-'])) { - throw new \UnexpectedValueException(\sprintf('Not expected same (\' \'), \'-\' already closed by "\\ No newline at end of file". Line %d.', $lineNumber)); - } - - if (isset($endOfLineTypes['+'])) { - throw new \UnexpectedValueException(\sprintf('Not expected same (\' \'), \'+\' already closed by "\\ No newline at end of file". Line %d.', $lineNumber)); - } - - ++$diffLineFromNumber; - ++$diffLineToNumber; - } elseif ('\\' === $type) { - if (!isset($lines[$lineNumber - 2])) { - throw new \UnexpectedValueException(\sprintf('Unexpected "\\ No newline at end of file", it must be preceded by \'+\' or \'-\' line. Line %d.', $lineNumber)); - } - - $previousType = $this->unifiedDiffAssertLinePrefix($lines[$lineNumber - 2], \sprintf('Preceding line of "\\ No newline at end of file" of unexpected format. Line %d.', $lineNumber)); - - if (isset($endOfLineTypes[$previousType])) { - throw new \UnexpectedValueException(\sprintf('Unexpected "\\ No newline at end of file", "%s" was already closed. Line %d.', $type, $lineNumber)); - } - - $endOfLineTypes[$previousType] = true; - $diffClosed = \count($endOfLineTypes) > 1; - } else { - // internal state error - throw new \RuntimeException(\sprintf('Unexpected line type "%s" Line %d.', $type, $lineNumber)); - } - - $expectHunkHeader = - $diffLineFromNumber === ($fromStart + $fromTillOffset) - && $diffLineToNumber === ($toStart + $toTillOffset) - ; - } - - if ( - $diffLineFromNumber !== ($fromStart + $fromTillOffset) - && $diffLineToNumber !== ($toStart + $toTillOffset) - ) { - throw new \UnexpectedValueException(\sprintf('Unexpected EOF, number of lines in hunk "from" (\'-\')) and "to" (\'+\') mismatched. Line %d.', $lineNumber)); - } - - if ($diffLineFromNumber !== ($fromStart + $fromTillOffset)) { - throw new \UnexpectedValueException(\sprintf('Unexpected EOF, number of lines in hunk "from" (\'-\')) mismatched. Line %d.', $lineNumber)); - } - - if ($diffLineToNumber !== ($toStart + $toTillOffset)) { - throw new \UnexpectedValueException(\sprintf('Unexpected EOF, number of lines in hunk "to" (\'+\')) mismatched. Line %d.', $lineNumber)); - } - - $this->addToAssertionCount(1); - } - - /** - * @param string $line - * @param string $message - * - * @return string '+', '-', '@', ' ' or '\' - */ - private function unifiedDiffAssertLinePrefix(string $line, string $message): string - { - $this->unifiedDiffAssertStrLength($line, 2, $message); // 2: line type indicator ('+', '-', ' ' or '\') and a line break - $firstChar = $line[0]; - - if ('+' === $firstChar || '-' === $firstChar || '@' === $firstChar || ' ' === $firstChar) { - return $firstChar; - } - - if ("\\ No newline at end of file\n" === $line) { - return '\\'; - } - - throw new \UnexpectedValueException(\sprintf('Expected line to start with \'@\', \'-\' or \'+\', got "%s". %s', $line, $message)); - } - - private function unifiedDiffAssertStrLength(string $line, int $min, string $message): void - { - $length = \strlen($line); - - if ($length < $min) { - throw new \UnexpectedValueException(\sprintf('Expected string length of minimal %d, got %d. %s', $min, $length, $message)); - } - } - - /** - * Assert valid unified diff header line - * - * Samples: - * - "+++ from1.txt\t2017-08-24 19:51:29.383985722 +0200" - * - "+++ from1.txt" - * - * @param string $line - * @param string $start - * @param string $message - */ - private function unifiedDiffAssertHeaderLine(string $line, string $start, string $message): void - { - if (0 !== \strpos($line, $start)) { - throw new \UnexpectedValueException(\sprintf('Expected header line to start with "%s", got "%s". %s', $start . ' ', $line, $message)); - } - - // sample "+++ from1.txt\t2017-08-24 19:51:29.383985722 +0200\n" - $match = \preg_match( - "/^([^\t]*)(?:[\t]([\\S].*[\\S]))?\n$/", - \substr($line, 4), // 4 === string length of "+++ " / "--- " - $matches - ); - - if (1 !== $match) { - throw new \UnexpectedValueException(\sprintf('Header line does not match expected pattern, got "%s". %s', $line, $message)); - } - - // $file = $matches[1]; - - if (\count($matches) > 2) { - $this->unifiedDiffAssertHeaderDate($matches[2], $message); - } - } - - private function unifiedDiffAssertHeaderDate(string $date, string $message): void - { - // sample "2017-08-24 19:51:29.383985722 +0200" - $match = \preg_match( - '/^([\d]{4})-([01]?[\d])-([0123]?[\d])(:? [\d]{1,2}:[\d]{1,2}(?::[\d]{1,2}(:?\.[\d]+)?)?(?: ([\+\-][\d]{4}))?)?$/', - $date, - $matches - ); - - if (1 !== $match || ($matchesCount = \count($matches)) < 4) { - throw new \UnexpectedValueException(\sprintf('Date of header line does not match expected pattern, got "%s". %s', $date, $message)); - } - - // [$full, $year, $month, $day, $time] = $matches; - } - - /** - * @param string $line - * @param string $message - * - * @return int[] - */ - private function unifiedDiffAssertHunkHeader(string $line, string $message): array - { - if (1 !== \preg_match('#^@@ -([\d]+)((?:,[\d]+)?) \+([\d]+)((?:,[\d]+)?) @@\n$#', $line, $matches)) { - throw new \UnexpectedValueException( - \sprintf( - 'Hunk header line does not match expected pattern, got "%s". %s', - $line, - $message - ) - ); - } - - return [ - (int) $matches[1], - empty($matches[2]) ? 1 : (int) \substr($matches[2], 1), - (int) $matches[3], - empty($matches[4]) ? 1 : (int) \substr($matches[4], 1), - ]; - } -} diff --git a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitIntegrationTest.php b/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitIntegrationTest.php deleted file mode 100644 index c88dc52e7..000000000 --- a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitIntegrationTest.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Utils; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Process\Process; - -/** - * @requires OS Linux - * - * @coversNothing - */ -final class UnifiedDiffAssertTraitIntegrationTest extends TestCase -{ - use UnifiedDiffAssertTrait; - - private $filePatch; - - protected function setUp(): void - { - $this->filePatch = __DIR__ . '/../fixtures/out/patch.txt'; - - $this->cleanUpTempFiles(); - } - - protected function tearDown(): void - { - $this->cleanUpTempFiles(); - } - - /** - * @param string $fileFrom - * @param string $fileTo - * - * @dataProvider provideFilePairsCases - */ - public function testValidPatches(string $fileFrom, string $fileTo): void - { - $command = \sprintf( - 'diff -u %s %s > %s', - \escapeshellarg(\realpath($fileFrom)), - \escapeshellarg(\realpath($fileTo)), - \escapeshellarg($this->filePatch) - ); - - $p = new Process($command); - $p->run(); - - $exitCode = $p->getExitCode(); - - if (0 === $exitCode) { - // odd case when two files have the same content. Test after executing as it is more efficient than to read the files and check the contents every time. - $this->addToAssertionCount(1); - - return; - } - - $this->assertSame( - 1, // means `diff` found a diff between the files we gave it - $exitCode, - \sprintf( - "Command exec. was not successful:\n\"%s\"\nOutput:\n\"%s\"\nStdErr:\n\"%s\"\nExit code %d.\n", - $command, - $p->getOutput(), - $p->getErrorOutput(), - $p->getExitCode() - ) - ); - - $this->assertValidUnifiedDiffFormat(FileUtils::getFileContent($this->filePatch)); - } - - /** - * @return array<string, array<string, string>> - */ - public function provideFilePairsCases(): array - { - $cases = []; - - // created cases based on dedicated fixtures - $dir = \realpath(__DIR__ . '/../fixtures/UnifiedDiffAssertTraitIntegrationTest'); - $dirLength = \strlen($dir); - - for ($i = 1;; ++$i) { - $fromFile = \sprintf('%s/%d_a.txt', $dir, $i); - $toFile = \sprintf('%s/%d_b.txt', $dir, $i); - - if (!\file_exists($fromFile)) { - break; - } - - $this->assertFileExists($toFile); - $cases[\sprintf("Diff file:\n\"%s\"\nvs.\n\"%s\"\n", \substr(\realpath($fromFile), $dirLength), \substr(\realpath($toFile), $dirLength))] = [$fromFile, $toFile]; - } - - // create cases based on PHP files within the vendor directory for integration testing - $dir = \realpath(__DIR__ . '/../../vendor'); - $dirLength = \strlen($dir); - - $fileIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS)); - $fromFile = __FILE__; - - /** @var \SplFileInfo $file */ - foreach ($fileIterator as $file) { - if ('php' !== $file->getExtension()) { - continue; - } - - $toFile = $file->getPathname(); - $cases[\sprintf("Diff file:\n\"%s\"\nvs.\n\"%s\"\n", \substr(\realpath($fromFile), $dirLength), \substr(\realpath($toFile), $dirLength))] = [$fromFile, $toFile]; - $fromFile = $toFile; - } - - return $cases; - } - - private function cleanUpTempFiles(): void - { - @\unlink($this->filePatch); - } -} diff --git a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitTest.php b/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitTest.php deleted file mode 100644 index 7d5cc6545..000000000 --- a/vendor/sebastian/diff/tests/Utils/UnifiedDiffAssertTraitTest.php +++ /dev/null @@ -1,434 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/diff. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\Diff\Utils; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\Diff\Utils\UnifiedDiffAssertTrait - */ -final class UnifiedDiffAssertTraitTest extends TestCase -{ - use UnifiedDiffAssertTrait; - - /** - * @param string $diff - * - * @dataProvider provideValidCases - */ - public function testValidCases(string $diff): void - { - $this->assertValidUnifiedDiffFormat($diff); - } - - public function provideValidCases(): array - { - return [ - [ -'--- Original -+++ New -@@ -8 +8 @@ --Z -+U -', - ], - [ -'--- Original -+++ New -@@ -8 +8 @@ --Z -+U -@@ -15 +15 @@ --X -+V -', - ], - 'empty diff. is valid' => [ - '', - ], - ]; - } - - public function testNoLinebreakEnd(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Expected diff to end with a line break, got "C".', '#'))); - - $this->assertValidUnifiedDiffFormat("A\nB\nC"); - } - - public function testInvalidStartWithoutHeader(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Expected line to start with '@', '-' or '+', got \"A\n\". Line 1.", '#'))); - - $this->assertValidUnifiedDiffFormat("A\n"); - } - - public function testInvalidStartHeader1(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Line 1 indicates a header, so line 2 must start with \"+++\".\nLine 1: \"--- A\n\"\nLine 2: \"+ 1\n\".", '#'))); - - $this->assertValidUnifiedDiffFormat("--- A\n+ 1\n"); - } - - public function testInvalidStartHeader2(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Header line does not match expected pattern, got \"+++ file X\n\". Line 2.", '#'))); - - $this->assertValidUnifiedDiffFormat("--- A\n+++ file\tX\n"); - } - - public function testInvalidStartHeader3(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Date of header line does not match expected pattern, got "[invalid date]". Line 1.', '#'))); - - $this->assertValidUnifiedDiffFormat( -"--- Original\t[invalid date] -+++ New -@@ -1,2 +1,2 @@ --A -+B - " . ' -' - ); - } - - public function testInvalidStartHeader4(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Expected header line to start with \"+++ \", got \"+++INVALID\n\". Line 2.", '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++INVALID -@@ -1,2 +1,2 @@ --A -+B - ' . ' -' - ); - } - - public function testInvalidLine1(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Expected line to start with '@', '-' or '+', got \"1\n\". Line 5.", '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ --Z -1 -+U -' - ); - } - - public function testInvalidLine2(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Expected string length of minimal 2, got 1. Line 4.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ - - -' - ); - } - - public function testHunkInvalidFormat(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote("Hunk header line does not match expected pattern, got \"@@ INVALID -1,1 +1,1 @@\n\". Line 3.", '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ INVALID -1,1 +1,1 @@ --Z -+U -' - ); - } - - public function testHunkOverlapFrom(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected new hunk; "from" (\'-\') start overlaps previous hunk. Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,1 +8,1 @@ --Z -+U -@@ -7,1 +9,1 @@ --Z -+U -' - ); - } - - public function testHunkOverlapTo(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected new hunk; "to" (\'+\') start overlaps previous hunk. Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,1 +8,1 @@ --Z -+U -@@ -17,1 +7,1 @@ --Z -+U -' - ); - } - - public function testExpectHunk1(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Expected hunk start (\'@\'), got "+". Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ --Z -+U -+O -' - ); - } - - public function testExpectHunk2(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected hunk start (\'@\'). Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,12 +8,12 @@ - ' . ' - ' . ' -@@ -38,12 +48,12 @@ -' - ); - } - - public function testMisplacedLineAfterComments1(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected line as 2 "No newline" markers have found, ". Line 8.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ --Z -\ No newline at end of file -+U -\ No newline at end of file -+A -' - ); - } - - public function testMisplacedLineAfterComments2(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected line as 2 "No newline" markers have found, ". Line 7.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ -+U -\ No newline at end of file -\ No newline at end of file -\ No newline at end of file -' - ); - } - - public function testMisplacedLineAfterComments3(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected line as 2 "No newline" markers have found, ". Line 7.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8 +8 @@ -+U -\ No newline at end of file -\ No newline at end of file -+A -' - ); - } - - public function testMisplacedComment(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected "\ No newline at end of file", it must be preceded by \'+\' or \'-\' line. Line 1.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'\ No newline at end of file -' - ); - } - - public function testUnexpectedDuplicateNoNewLineEOF(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected "\\ No newline at end of file", "\\" was already closed. Line 8.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,12 +8,12 @@ - ' . ' - ' . ' -\ No newline at end of file - ' . ' -\ No newline at end of file -' - ); - } - - public function testFromAfterClose(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Not expected from (\'-\'), already closed by "\ No newline at end of file". Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,12 +8,12 @@ --A -\ No newline at end of file --A -\ No newline at end of file -' - ); - } - - public function testSameAfterFromClose(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Not expected same (\' \'), \'-\' already closed by "\ No newline at end of file". Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( - '--- Original -+++ New -@@ -8,12 +8,12 @@ --A -\ No newline at end of file - A -\ No newline at end of file -' - ); - } - - public function testToAfterClose(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Not expected to (\'+\'), already closed by "\ No newline at end of file". Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( - '--- Original -+++ New -@@ -8,12 +8,12 @@ -+A -\ No newline at end of file -+A -\ No newline at end of file -' - ); - } - - public function testSameAfterToClose(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Not expected same (\' \'), \'+\' already closed by "\ No newline at end of file". Line 6.', '#'))); - - $this->assertValidUnifiedDiffFormat( - '--- Original -+++ New -@@ -8,12 +8,12 @@ -+A -\ No newline at end of file - A -\ No newline at end of file -' - ); - } - - public function testUnexpectedEOFFromMissingLines(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected EOF, number of lines in hunk "from" (\'-\')) mismatched. Line 7.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,19 +7,2 @@ --A -+B - ' . ' -' - ); - } - - public function testUnexpectedEOFToMissingLines(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected EOF, number of lines in hunk "to" (\'+\')) mismatched. Line 7.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -8,2 +7,3 @@ --A -+B - ' . ' -' - ); - } - - public function testUnexpectedEOFBothFromAndToMissingLines(): void - { - $this->expectException(\UnexpectedValueException::class); - $this->expectExceptionMessageRegExp(\sprintf('#^%s$#', \preg_quote('Unexpected EOF, number of lines in hunk "from" (\'-\')) and "to" (\'+\') mismatched. Line 7.', '#'))); - - $this->assertValidUnifiedDiffFormat( -'--- Original -+++ New -@@ -1,12 +1,14 @@ --A -+B - ' . ' -' - ); - } -} diff --git a/vendor/sebastian/diff/tests/fixtures/.editorconfig b/vendor/sebastian/diff/tests/fixtures/.editorconfig deleted file mode 100644 index 78b36ca08..000000000 --- a/vendor/sebastian/diff/tests/fixtures/.editorconfig +++ /dev/null @@ -1 +0,0 @@ -root = true diff --git a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_a.txt b/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_a.txt deleted file mode 100644 index 2e65efe2a..000000000 --- a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_a.txt +++ /dev/null @@ -1 +0,0 @@ -a \ No newline at end of file diff --git a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_b.txt b/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/1_b.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_a.txt b/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_a.txt deleted file mode 100644 index c7fe26e98..000000000 --- a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_a.txt +++ /dev/null @@ -1,35 +0,0 @@ -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a \ No newline at end of file diff --git a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_b.txt b/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_b.txt deleted file mode 100644 index 377a70f80..000000000 --- a/vendor/sebastian/diff/tests/fixtures/UnifiedDiffAssertTraitIntegrationTest/2_b.txt +++ /dev/null @@ -1,18 +0,0 @@ -a -a -a -a -a -a -a -a -a -a -b -a -a -a -a -a -a -c \ No newline at end of file diff --git a/vendor/sebastian/diff/tests/fixtures/out/.editorconfig b/vendor/sebastian/diff/tests/fixtures/out/.editorconfig deleted file mode 100644 index 78b36ca08..000000000 --- a/vendor/sebastian/diff/tests/fixtures/out/.editorconfig +++ /dev/null @@ -1 +0,0 @@ -root = true diff --git a/vendor/sebastian/diff/tests/fixtures/out/.gitignore b/vendor/sebastian/diff/tests/fixtures/out/.gitignore deleted file mode 100644 index f6f7a4784..000000000 --- a/vendor/sebastian/diff/tests/fixtures/out/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# reset all ignore rules to create sandbox for integration test -!/** \ No newline at end of file diff --git a/vendor/sebastian/diff/tests/fixtures/patch.txt b/vendor/sebastian/diff/tests/fixtures/patch.txt deleted file mode 100644 index 144b61d01..000000000 --- a/vendor/sebastian/diff/tests/fixtures/patch.txt +++ /dev/null @@ -1,9 +0,0 @@ -diff --git a/Foo.php b/Foo.php -index abcdefg..abcdefh 100644 ---- a/Foo.php -+++ b/Foo.php -@@ -20,4 +20,5 @@ class Foo - const ONE = 1; - const TWO = 2; -+ const THREE = 3; - const FOUR = 4; diff --git a/vendor/sebastian/diff/tests/fixtures/patch2.txt b/vendor/sebastian/diff/tests/fixtures/patch2.txt deleted file mode 100644 index 41fbc9597..000000000 --- a/vendor/sebastian/diff/tests/fixtures/patch2.txt +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/Foo.php b/Foo.php -index abcdefg..abcdefh 100644 ---- a/Foo.php -+++ b/Foo.php -@@ -20,4 +20,5 @@ class Foo - const ONE = 1; - const TWO = 2; -+ const THREE = 3; - const FOUR = 4; - -@@ -320,4 +320,5 @@ class Foo - const A = 'A'; - const B = 'B'; -+ const C = 'C'; - const D = 'D'; - -@@ -600,4 +600,5 @@ class Foo - public function doSomething() { - -+ return 'foo'; - } diff --git a/vendor/sebastian/diff/tests/fixtures/serialized_diff.bin b/vendor/sebastian/diff/tests/fixtures/serialized_diff.bin deleted file mode 100644 index 377404d442d6e690beef8f276a647492d1b5c850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4143 zcmeH~O;5ux42Jt#az&t}X}jUxfFlwTT)C7j8x>oM)*wLB{yVn2l_Jqk4K)W+snR4n zeQd{hy#yreQkcYd;7>t3=%*yNX=1MQcC|^2dAv!NOMVGZu**Ry5MG0sx7=nM5$Axr zW$VR-{jl^)$rd-89h{7QFP*{`r}^`ndC5hb5ZfV&S#1>8WGx`%FdDXIJ1@7%7SU6X zh#ySqNh;>|iCJm#Q514RrV1Zz7RL`L#I8$gX<Tj}(DtnntW%>oIYF76`V!xwu>ilV z#AN2#&sUC;GNYn;a5kQ2#%jZd0Ke|zl2VFzPl;_jbVG<Z@BN67h87d~&Jiici1x?2 zoxIJ$0c|EHeflgS<6eC>BaiNVCcE6FBOL4hMnetz<uWQdzi5328V!%;nUp?01ybNx z@23!sPlQQ2uhuPc4{7QK5=kvC7Pi^=NC)vh5?wk+gks{tJi<levXR#EL~?SimD2%Y zO9I_}rtL4b?9p9pqdyvI2aJ&4C39t{trEF0)K-Zc(OOhm{4-KqkZx#gHAxO=?T;&a GPwNYZvRl~z diff --git a/vendor/sebastian/environment/.github/FUNDING.yml b/vendor/sebastian/environment/.github/FUNDING.yml deleted file mode 100644 index c2fba0f90..000000000 --- a/vendor/sebastian/environment/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: sebastianbergmann diff --git a/vendor/sebastian/environment/.gitignore b/vendor/sebastian/environment/.gitignore deleted file mode 100644 index 1adc0207e..000000000 --- a/vendor/sebastian/environment/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/.idea -/vendor -/composer.lock -/composer.phar -/.php_cs.cache -/.phpunit.result.cache diff --git a/vendor/sebastian/environment/.php_cs.dist b/vendor/sebastian/environment/.php_cs.dist deleted file mode 100644 index 67dd70e05..000000000 --- a/vendor/sebastian/environment/.php_cs.dist +++ /dev/null @@ -1,199 +0,0 @@ -<?php -$header = <<<'EOF' -This file is part of sebastian/environment. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'align_multiline_comment' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'combine_nested_dirname' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'is_null' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'new_with_braces' => false, - 'no_alias_functions' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_before_namespace' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'random_api_migration' => true, - 'return_assignment' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'semicolon_after_instruction' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => [ - 'elements' => [ - 'const', - 'method', - 'property', - ], - ], - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/sebastian/environment/.travis.yml b/vendor/sebastian/environment/.travis.yml deleted file mode 100644 index e066fa935..000000000 --- a/vendor/sebastian/environment/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: php - -php: - - 7.1 - - 7.2 - - 7.3 - - 7.4snapshot - -env: - matrix: - - DRIVER="phpdbg" - - DRIVER="xdebug" - -before_install: - - composer clear-cache - -install: - - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest - -script: - - if [[ "$DRIVER" = 'phpdbg' ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml; fi - - if [[ "$DRIVER" != 'phpdbg' ]]; 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/sebastian/environment/ChangeLog.md b/vendor/sebastian/environment/ChangeLog.md index 172a8db8c..8943aee4c 100644 --- a/vendor/sebastian/environment/ChangeLog.md +++ b/vendor/sebastian/environment/ChangeLog.md @@ -2,27 +2,69 @@ All notable changes in `sebastianbergmann/environment` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [4.2.4] - 2020-11-30 +## [5.1.4] - 2022-04-03 + +### Fixed + +* [#63](https://github.com/sebastianbergmann/environment/pull/63): `Runtime::getCurrentSettings()` does not correctly process INI settings + +## [5.1.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [5.1.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [5.1.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [5.1.0] - 2020-04-14 + +### Added + +* `Runtime::performsJustInTimeCompilation()` returns `true` if PHP 8's JIT is active, `false` otherwise + +## [5.0.2] - 2020-03-31 + +### Fixed + +* [#55](https://github.com/sebastianbergmann/environment/issues/55): `stty` command is executed even if no tty is available + +## [5.0.1] - 2020-02-19 + +### Changed + +* `Runtime::getNameWithVersionAndCodeCoverageDriver()` now prioritizes PCOV over Xdebug when both extensions are loaded (just like php-code-coverage does) + +## [5.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 ## [4.2.3] - 2019-11-20 ### Changed -* Implemented [#50](https://github.com/sebastianbergmann/environment/pull/50): Windows improvements to console capabilities +* [#50](https://github.com/sebastianbergmann/environment/pull/50): Windows improvements to console capabilities ### Fixed -* Fixed [#49](https://github.com/sebastianbergmann/environment/issues/49): Detection how OpCache handles docblocks does not work correctly when PHPDBG is used +* [#49](https://github.com/sebastianbergmann/environment/issues/49): Detection how OpCache handles docblocks does not work correctly when PHPDBG is used ## [4.2.2] - 2019-05-05 ### Fixed -* Fixed [#44](https://github.com/sebastianbergmann/environment/pull/44): `TypeError` in `Console::getNumberOfColumnsInteractive()` +* [#44](https://github.com/sebastianbergmann/environment/pull/44): `TypeError` in `Console::getNumberOfColumnsInteractive()` ## [4.2.1] - 2019-04-25 @@ -34,20 +76,20 @@ All notable changes in `sebastianbergmann/environment` are documented in this fi ### Added -* Implemented [#36](https://github.com/sebastianbergmann/environment/pull/36): `Runtime::getCurrentSettings()` +* [#36](https://github.com/sebastianbergmann/environment/pull/36): `Runtime::getCurrentSettings()` ## [4.1.0] - 2019-02-01 ### Added * Implemented `Runtime::getNameWithVersionAndCodeCoverageDriver()` method -* Implemented [#34](https://github.com/sebastianbergmann/environment/pull/34): Support for PCOV extension +* [#34](https://github.com/sebastianbergmann/environment/pull/34): Support for PCOV extension ## [4.0.2] - 2019-01-28 ### Fixed -* Fixed [#33](https://github.com/sebastianbergmann/environment/issues/33): `Runtime::discardsComments()` returns true too eagerly +* [#33](https://github.com/sebastianbergmann/environment/issues/33): `Runtime::discardsComments()` returns true too eagerly ### Removed @@ -57,13 +99,13 @@ All notable changes in `sebastianbergmann/environment` are documented in this fi ### Fixed -* Fixed [#31](https://github.com/sebastianbergmann/environment/issues/31): Regressions in `Console` class +* [#31](https://github.com/sebastianbergmann/environment/issues/31): Regressions in `Console` class ## [4.0.0] - 2018-10-23 [YANKED] ### Fixed -* Fixed [#25](https://github.com/sebastianbergmann/environment/pull/25): `Console::hasColorSupport()` does not work on Windows +* [#25](https://github.com/sebastianbergmann/environment/pull/25): `Console::hasColorSupport()` does not work on Windows ### Removed @@ -73,25 +115,25 @@ All notable changes in `sebastianbergmann/environment` are documented in this fi ### Added -* Implemented [#21](https://github.com/sebastianbergmann/environment/issues/21): Equivalent of `PHP_OS_FAMILY` (for PHP < 7.2) +* [#21](https://github.com/sebastianbergmann/environment/issues/21): Equivalent of `PHP_OS_FAMILY` (for PHP < 7.2) ## [3.0.4] - 2017-06-20 ### Fixed -* Fixed [#20](https://github.com/sebastianbergmann/environment/pull/20): PHP 7 mode of HHVM not forced +* [#20](https://github.com/sebastianbergmann/environment/pull/20): PHP 7 mode of HHVM not forced ## [3.0.3] - 2017-05-18 ### Fixed -* Fixed [#18](https://github.com/sebastianbergmann/environment/issues/18): `Uncaught TypeError: preg_match() expects parameter 2 to be string, null given` +* [#18](https://github.com/sebastianbergmann/environment/issues/18): `Uncaught TypeError: preg_match() expects parameter 2 to be string, null given` ## [3.0.2] - 2017-04-21 ### Fixed -* Fixed [#17](https://github.com/sebastianbergmann/environment/issues/17): `Uncaught TypeError: trim() expects parameter 1 to be string, boolean given` +* [#17](https://github.com/sebastianbergmann/environment/issues/17): `Uncaught TypeError: trim() expects parameter 1 to be string, boolean given` ## [3.0.1] - 2017-04-21 @@ -109,19 +151,26 @@ All notable changes in `sebastianbergmann/environment` are documented in this fi * This component is no longer supported on PHP 5.6 -[4.2.4]: https://github.com/sebastianbergmann/phpunit/compare/4.2.3...4.2.4 -[4.2.3]: https://github.com/sebastianbergmann/phpunit/compare/4.2.2...4.2.3 -[4.2.2]: https://github.com/sebastianbergmann/phpunit/compare/4.2.1...4.2.2 -[4.2.1]: https://github.com/sebastianbergmann/phpunit/compare/4.2.0...4.2.1 -[4.2.0]: https://github.com/sebastianbergmann/phpunit/compare/4.1.0...4.2.0 -[4.1.0]: https://github.com/sebastianbergmann/phpunit/compare/4.0.2...4.1.0 -[4.0.2]: https://github.com/sebastianbergmann/phpunit/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/sebastianbergmann/phpunit/compare/66691f8e2dc4641909166b275a9a4f45c0e89092...4.0.1 -[4.0.0]: https://github.com/sebastianbergmann/phpunit/compare/3.1.0...66691f8e2dc4641909166b275a9a4f45c0e89092 -[3.1.0]: https://github.com/sebastianbergmann/phpunit/compare/3.0...3.1.0 -[3.0.4]: https://github.com/sebastianbergmann/phpunit/compare/3.0.3...3.0.4 -[3.0.3]: https://github.com/sebastianbergmann/phpunit/compare/3.0.2...3.0.3 -[3.0.2]: https://github.com/sebastianbergmann/phpunit/compare/3.0.1...3.0.2 -[3.0.1]: https://github.com/sebastianbergmann/phpunit/compare/3.0.0...3.0.1 -[3.0.0]: https://github.com/sebastianbergmann/phpunit/compare/2.0...3.0.0 +[5.1.4]: https://github.com/sebastianbergmann/environment/compare/5.1.3...5.1.4 +[5.1.3]: https://github.com/sebastianbergmann/environment/compare/5.1.2...5.1.3 +[5.1.2]: https://github.com/sebastianbergmann/environment/compare/5.1.1...5.1.2 +[5.1.1]: https://github.com/sebastianbergmann/environment/compare/5.1.0...5.1.1 +[5.1.0]: https://github.com/sebastianbergmann/environment/compare/5.0.2...5.1.0 +[5.0.2]: https://github.com/sebastianbergmann/environment/compare/5.0.1...5.0.2 +[5.0.1]: https://github.com/sebastianbergmann/environment/compare/5.0.0...5.0.1 +[5.0.0]: https://github.com/sebastianbergmann/environment/compare/4.2.3...5.0.0 +[4.2.3]: https://github.com/sebastianbergmann/environment/compare/4.2.2...4.2.3 +[4.2.2]: https://github.com/sebastianbergmann/environment/compare/4.2.1...4.2.2 +[4.2.1]: https://github.com/sebastianbergmann/environment/compare/4.2.0...4.2.1 +[4.2.0]: https://github.com/sebastianbergmann/environment/compare/4.1.0...4.2.0 +[4.1.0]: https://github.com/sebastianbergmann/environment/compare/4.0.2...4.1.0 +[4.0.2]: https://github.com/sebastianbergmann/environment/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/environment/compare/66691f8e2dc4641909166b275a9a4f45c0e89092...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/environment/compare/3.1.0...66691f8e2dc4641909166b275a9a4f45c0e89092 +[3.1.0]: https://github.com/sebastianbergmann/environment/compare/3.0...3.1.0 +[3.0.4]: https://github.com/sebastianbergmann/environment/compare/3.0.3...3.0.4 +[3.0.3]: https://github.com/sebastianbergmann/environment/compare/3.0.2...3.0.3 +[3.0.2]: https://github.com/sebastianbergmann/environment/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/environment/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/environment/compare/2.0...3.0.0 diff --git a/vendor/sebastian/environment/LICENSE b/vendor/sebastian/environment/LICENSE index 3291fbdfa..42546339c 100644 --- a/vendor/sebastian/environment/LICENSE +++ b/vendor/sebastian/environment/LICENSE @@ -1,6 +1,6 @@ sebastian/environment -Copyright (c) 2014-2019, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2014-2022, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/environment/README.md b/vendor/sebastian/environment/README.md index 3e854af35..1fead13ef 100644 --- a/vendor/sebastian/environment/README.md +++ b/vendor/sebastian/environment/README.md @@ -1,17 +1,21 @@ # sebastian/environment -This component provides functionality that helps writing PHP code that has runtime-specific (PHP / HHVM) execution paths. - [![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/environment.svg?style=flat-square)](https://packagist.org/packages/sebastian/environment) -[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/) -[![Build Status](https://travis-ci.org/sebastianbergmann/environment.svg?branch=master)](https://travis-ci.org/sebastianbergmann/environment) +[![CI Status](https://github.com/sebastianbergmann/environment/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/environment/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/environment/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/environment) + +This component provides functionality that helps writing PHP code that has runtime-specific (PHP / HHVM) execution paths. ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/environment +``` +composer require sebastian/environment +``` 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 sebastian/environment +``` +composer require --dev sebastian/environment +``` diff --git a/vendor/sebastian/environment/build.xml b/vendor/sebastian/environment/build.xml deleted file mode 100644 index 591a58bbf..000000000 --- a/vendor/sebastian/environment/build.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="environment" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - </exec> - </target> -</project> diff --git a/vendor/sebastian/environment/composer.json b/vendor/sebastian/environment/composer.json index d02bb384a..d50dcfd78 100644 --- a/vendor/sebastian/environment/composer.json +++ b/vendor/sebastian/environment/composer.json @@ -11,15 +11,18 @@ } ], "config": { + "platform": { + "php": "7.3.0" + }, "optimize-autoloader": true, "sort-packages": true }, "prefer-stable": true, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -31,7 +34,7 @@ }, "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } } } diff --git a/vendor/sebastian/environment/phpunit.xml b/vendor/sebastian/environment/phpunit.xml deleted file mode 100644 index 01852650c..000000000 --- a/vendor/sebastian/environment/phpunit.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.5/phpunit.xsd" - bootstrap="vendor/autoload.php" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - verbose="true"> - <testsuites> - <testsuite name="default"> - <directory suffix="Test.php">tests</directory> - </testsuite> - </testsuites> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/environment/src/Console.php b/vendor/sebastian/environment/src/Console.php index 947dacfc7..e7fd1643f 100644 --- a/vendor/sebastian/environment/src/Console.php +++ b/vendor/sebastian/environment/src/Console.php @@ -9,12 +9,32 @@ */ namespace SebastianBergmann\Environment; +use const DIRECTORY_SEPARATOR; +use const STDIN; +use const STDOUT; +use function defined; +use function fclose; +use function fstat; +use function function_exists; +use function getenv; +use function is_resource; +use function is_string; +use function posix_isatty; +use function preg_match; +use function proc_close; +use function proc_open; +use function sapi_windows_vt100_support; +use function shell_exec; +use function stream_get_contents; +use function stream_isatty; +use function trim; + final class Console { /** * @var int */ - public const STDIN = 0; + public const STDIN = 0; /** * @var int @@ -34,26 +54,26 @@ final class Console */ public function hasColorSupport(): bool { - if ('Hyper' === \getenv('TERM_PROGRAM')) { + if ('Hyper' === getenv('TERM_PROGRAM')) { return true; } if ($this->isWindows()) { // @codeCoverageIgnoreStart - return (\defined('STDOUT') && \function_exists('sapi_windows_vt100_support') && @\sapi_windows_vt100_support(\STDOUT)) - || false !== \getenv('ANSICON') - || 'ON' === \getenv('ConEmuANSI') - || 'xterm' === \getenv('TERM'); + return (defined('STDOUT') && function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT)) || + false !== getenv('ANSICON') || + 'ON' === getenv('ConEmuANSI') || + 'xterm' === getenv('TERM'); // @codeCoverageIgnoreEnd } - if (!\defined('STDOUT')) { + if (!defined('STDOUT')) { // @codeCoverageIgnoreStart return false; // @codeCoverageIgnoreEnd } - return $this->isInteractive(\STDOUT); + return $this->isInteractive(STDOUT); } /** @@ -63,7 +83,7 @@ final class Console */ public function getNumberOfColumns(): int { - if (!$this->isInteractive(\defined('STDIN') ? \STDIN : self::STDIN)) { + if (!$this->isInteractive(defined('STDIN') ? STDIN : self::STDIN)) { return 80; } @@ -84,23 +104,28 @@ final class Console */ public function isInteractive($fileDescriptor = self::STDOUT): bool { - if (\is_resource($fileDescriptor)) { + if (is_resource($fileDescriptor)) { // These functions require a descriptor that is a real resource, not a numeric ID of it - if (\function_exists('stream_isatty') && @\stream_isatty($fileDescriptor)) { + if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) { return true; } - $stat = @\fstat(\STDOUT); // Check if formatted mode is S_IFCHR - return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; + if (function_exists('fstat') && @stream_isatty($fileDescriptor)) { + $stat = @fstat(STDOUT); + + return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; + } + + return false; } - return \function_exists('posix_isatty') && @\posix_isatty($fileDescriptor); + return function_exists('posix_isatty') && @posix_isatty($fileDescriptor); } private function isWindows(): bool { - return \DIRECTORY_SEPARATOR === '\\'; + return DIRECTORY_SEPARATOR === '\\'; } /** @@ -108,13 +133,13 @@ final class Console */ private function getNumberOfColumnsInteractive(): int { - if (\function_exists('shell_exec') && \preg_match('#\d+ (\d+)#', \shell_exec('stty size') ?: '', $match) === 1) { + if (function_exists('shell_exec') && preg_match('#\d+ (\d+)#', shell_exec('stty size') ?: '', $match) === 1) { if ((int) $match[1] > 0) { return (int) $match[1]; } } - if (\function_exists('shell_exec') && \preg_match('#columns = (\d+);#', \shell_exec('stty') ?: '', $match) === 1) { + if (function_exists('shell_exec') && preg_match('#columns = (\d+);#', shell_exec('stty') ?: '', $match) === 1) { if ((int) $match[1] > 0) { return (int) $match[1]; } @@ -128,13 +153,13 @@ final class Console */ private function getNumberOfColumnsWindows(): int { - $ansicon = \getenv('ANSICON'); + $ansicon = getenv('ANSICON'); $columns = 80; - if (\is_string($ansicon) && \preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', \trim($ansicon), $matches)) { - $columns = $matches[1]; - } elseif (\function_exists('proc_open')) { - $process = \proc_open( + if (is_string($ansicon) && preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim($ansicon), $matches)) { + $columns = (int) $matches[1]; + } elseif (function_exists('proc_open')) { + $process = proc_open( 'mode CON', [ 1 => ['pipe', 'w'], @@ -146,15 +171,15 @@ final class Console ['suppress_errors' => true] ); - if (\is_resource($process)) { - $info = \stream_get_contents($pipes[1]); + if (is_resource($process)) { + $info = stream_get_contents($pipes[1]); - \fclose($pipes[1]); - \fclose($pipes[2]); - \proc_close($process); + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($process); - if (\preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { - $columns = $matches[2]; + if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { + $columns = (int) $matches[2]; } } } diff --git a/vendor/sebastian/environment/src/OperatingSystem.php b/vendor/sebastian/environment/src/OperatingSystem.php index 67a35bc9a..1f3ebca7c 100644 --- a/vendor/sebastian/environment/src/OperatingSystem.php +++ b/vendor/sebastian/environment/src/OperatingSystem.php @@ -9,6 +9,11 @@ */ namespace SebastianBergmann\Environment; +use const DIRECTORY_SEPARATOR; +use const PHP_OS; +use const PHP_OS_FAMILY; +use function defined; + final class OperatingSystem { /** @@ -17,15 +22,15 @@ final class OperatingSystem */ public function getFamily(): string { - if (\defined('PHP_OS_FAMILY')) { - return \PHP_OS_FAMILY; + if (defined('PHP_OS_FAMILY')) { + return PHP_OS_FAMILY; } - if (\DIRECTORY_SEPARATOR === '\\') { + if (DIRECTORY_SEPARATOR === '\\') { return 'Windows'; } - switch (\PHP_OS) { + switch (PHP_OS) { case 'Darwin': return 'Darwin'; diff --git a/vendor/sebastian/environment/src/Runtime.php b/vendor/sebastian/environment/src/Runtime.php index 0cbc4db67..d1b92d620 100644 --- a/vendor/sebastian/environment/src/Runtime.php +++ b/vendor/sebastian/environment/src/Runtime.php @@ -9,6 +9,27 @@ */ namespace SebastianBergmann\Environment; +use const PHP_BINARY; +use const PHP_BINDIR; +use const PHP_MAJOR_VERSION; +use const PHP_SAPI; +use const PHP_VERSION; +use function array_map; +use function array_merge; +use function defined; +use function escapeshellarg; +use function explode; +use function extension_loaded; +use function getenv; +use function ini_get; +use function is_readable; +use function parse_ini_file; +use function php_ini_loaded_file; +use function php_ini_scanned_files; +use function phpversion; +use function sprintf; +use function strpos; + /** * Utility class for HHVM/PHP environment handling. */ @@ -29,27 +50,41 @@ final class Runtime } /** - * Returns true when Zend OPcache is loaded, enabled, and is configured to discard comments. + * Returns true when Zend OPcache is loaded, enabled, + * and is configured to discard comments. */ public function discardsComments(): bool { - if (!\extension_loaded('Zend OPcache')) { + if (!$this->isOpcacheActive()) { return false; } - if (\ini_get('opcache.save_comments') !== '0') { + if (ini_get('opcache.save_comments') !== '0') { return false; } - if ((\PHP_SAPI === 'cli' || \PHP_SAPI === 'phpdbg') && \ini_get('opcache.enable_cli') === '1') { - return true; + return true; + } + + /** + * Returns true when Zend OPcache is loaded, enabled, + * and is configured to perform just-in-time compilation. + */ + public function performsJustInTimeCompilation(): bool + { + if (PHP_MAJOR_VERSION < 8) { + return false; } - if (\PHP_SAPI !== 'cli' && \PHP_SAPI !== 'phpdbg' && \ini_get('opcache.enable') === '1') { - return true; + if (!$this->isOpcacheActive()) { + return false; } - return false; + if (strpos(ini_get('opcache.jit'), '0') === 0) { + return false; + } + + return true; } /** @@ -61,30 +96,30 @@ final class Runtime // HHVM if (self::$binary === null && $this->isHHVM()) { // @codeCoverageIgnoreStart - if ((self::$binary = \getenv('PHP_BINARY')) === false) { - self::$binary = \PHP_BINARY; + if ((self::$binary = getenv('PHP_BINARY')) === false) { + self::$binary = PHP_BINARY; } - self::$binary = \escapeshellarg(self::$binary) . ' --php' . + self::$binary = escapeshellarg(self::$binary) . ' --php' . ' -d hhvm.php7.all=1'; // @codeCoverageIgnoreEnd } - if (self::$binary === null && \PHP_BINARY !== '') { - self::$binary = \escapeshellarg(\PHP_BINARY); + if (self::$binary === null && PHP_BINARY !== '') { + self::$binary = escapeshellarg(PHP_BINARY); } if (self::$binary === null) { // @codeCoverageIgnoreStart $possibleBinaryLocations = [ - \PHP_BINDIR . '/php', - \PHP_BINDIR . '/php-cli.exe', - \PHP_BINDIR . '/php.exe', + PHP_BINDIR . '/php', + PHP_BINDIR . '/php-cli.exe', + PHP_BINDIR . '/php.exe', ]; foreach ($possibleBinaryLocations as $binary) { - if (\is_readable($binary)) { - self::$binary = \escapeshellarg($binary); + if (is_readable($binary)) { + self::$binary = escapeshellarg($binary); break; } @@ -112,19 +147,19 @@ final class Runtime return $this->getNameWithVersion(); } - if ($this->hasXdebug()) { - return \sprintf( - '%s with Xdebug %s', + if ($this->hasPCOV()) { + return sprintf( + '%s with PCOV %s', $this->getNameWithVersion(), - \phpversion('xdebug') + phpversion('pcov') ); } - if ($this->hasPCOV()) { - return \sprintf( - '%s with PCOV %s', + if ($this->hasXdebug()) { + return sprintf( + '%s with Xdebug %s', $this->getNameWithVersion(), - \phpversion('pcov') + phpversion('xdebug') ); } } @@ -165,7 +200,7 @@ final class Runtime // @codeCoverageIgnoreEnd } - return \PHP_VERSION; + return PHP_VERSION; } /** @@ -173,7 +208,7 @@ final class Runtime */ public function hasXdebug(): bool { - return ($this->isPHP() || $this->isHHVM()) && \extension_loaded('xdebug'); + return ($this->isPHP() || $this->isHHVM()) && extension_loaded('xdebug'); } /** @@ -181,7 +216,7 @@ final class Runtime */ public function isHHVM(): bool { - return \defined('HHVM_VERSION'); + return defined('HHVM_VERSION'); } /** @@ -197,7 +232,7 @@ final class Runtime */ public function isPHPDBG(): bool { - return \PHP_SAPI === 'phpdbg' && !$this->isHHVM(); + return PHP_SAPI === 'phpdbg' && !$this->isHHVM(); } /** @@ -210,11 +245,11 @@ final class Runtime } /** - * Returns true when the runtime used is PHP with PCOV loaded and enabled + * Returns true when the runtime used is PHP with PCOV loaded and enabled. */ public function hasPCOV(): bool { - return $this->isPHP() && \extension_loaded('pcov') && \ini_get('pcov.enabled'); + return $this->isPHP() && extension_loaded('pcov') && ini_get('pcov.enabled'); } /** @@ -234,32 +269,53 @@ final class Runtime $diff = []; $files = []; - if ($file = \php_ini_loaded_file()) { + if ($file = php_ini_loaded_file()) { $files[] = $file; } - if ($scanned = \php_ini_scanned_files()) { - $files = \array_merge( + if ($scanned = php_ini_scanned_files()) { + $files = array_merge( $files, - \array_map( + array_map( 'trim', - \explode(",\n", $scanned) + explode(",\n", $scanned) ) ); } foreach ($files as $ini) { - $config = \parse_ini_file($ini, true); + $config = parse_ini_file($ini, true); foreach ($values as $value) { - $set = \ini_get($value); + $set = ini_get($value); - if (isset($config[$value]) && $set != $config[$value]) { - $diff[] = \sprintf('%s=%s', $value, $set); + if (empty($set)) { + continue; + } + + if ((!isset($config[$value]) || ($set !== $config[$value]))) { + $diff[$value] = sprintf('%s=%s', $value, $set); } } } return $diff; } + + private function isOpcacheActive(): bool + { + if (!extension_loaded('Zend OPcache')) { + return false; + } + + if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && ini_get('opcache.enable_cli') === '1') { + return true; + } + + if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg' && ini_get('opcache.enable') === '1') { + return true; + } + + return false; + } } diff --git a/vendor/sebastian/environment/tests/ConsoleTest.php b/vendor/sebastian/environment/tests/ConsoleTest.php deleted file mode 100644 index e7f670469..000000000 --- a/vendor/sebastian/environment/tests/ConsoleTest.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/environment. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Environment\Console - */ -final class ConsoleTest extends TestCase -{ - /** - * @var \SebastianBergmann\Environment\Console - */ - private $console; - - protected function setUp(): void - { - $this->console = new Console; - } - - /** - * @todo Now that this component is PHP 7-only and uses return type declarations - * this test makes even less sense than before - */ - public function testCanDetectIfStdoutIsInteractiveByDefault(): void - { - $this->assertIsBool($this->console->isInteractive()); - } - - /** - * @todo Now that this component is PHP 7-only and uses return type declarations - * this test makes even less sense than before - */ - public function testCanDetectIfFileDescriptorIsInteractive(): void - { - $this->assertIsBool($this->console->isInteractive(\STDOUT)); - } - - /** - * @todo Now that this component is PHP 7-only and uses return type declarations - * this test makes even less sense than before - */ - public function testCanDetectColorSupport(): void - { - $this->assertIsBool($this->console->hasColorSupport()); - } - - /** - * @todo Now that this component is PHP 7-only and uses return type declarations - * this test makes even less sense than before - */ - public function testCanDetectNumberOfColumns(): void - { - $this->assertIsInt($this->console->getNumberOfColumns()); - } -} diff --git a/vendor/sebastian/environment/tests/OperatingSystemTest.php b/vendor/sebastian/environment/tests/OperatingSystemTest.php deleted file mode 100644 index f48618e0a..000000000 --- a/vendor/sebastian/environment/tests/OperatingSystemTest.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/environment. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Environment\OperatingSystem - */ -final class OperatingSystemTest extends TestCase -{ - /** - * @var \SebastianBergmann\Environment\OperatingSystem - */ - private $os; - - protected function setUp(): void - { - $this->os = new OperatingSystem; - } - - /** - * @requires OS Linux - */ - public function testFamilyCanBeRetrieved(): void - { - $this->assertEquals('Linux', $this->os->getFamily()); - } - - /** - * @requires OS Darwin - */ - public function testFamilyReturnsDarwinWhenRunningOnDarwin(): void - { - $this->assertEquals('Darwin', $this->os->getFamily()); - } - - /** - * @requires OS Windows - */ - public function testGetFamilyReturnsWindowsWhenRunningOnWindows(): void - { - $this->assertSame('Windows', $this->os->getFamily()); - } - - /** - * @requires PHP 7.2.0 - */ - public function testGetFamilyReturnsPhpOsFamilyWhenRunningOnPhp72AndGreater(): void - { - $this->assertSame(\PHP_OS_FAMILY, $this->os->getFamily()); - } -} diff --git a/vendor/sebastian/environment/tests/RuntimeTest.php b/vendor/sebastian/environment/tests/RuntimeTest.php deleted file mode 100644 index 12be2e596..000000000 --- a/vendor/sebastian/environment/tests/RuntimeTest.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/environment. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Environment; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Environment\Runtime - */ -final class RuntimeTest extends TestCase -{ - /** - * @var \SebastianBergmann\Environment\Runtime - */ - private $env; - - protected function setUp(): void - { - $this->env = new Runtime; - } - - /** - * @requires extension xdebug - */ - public function testCanCollectCodeCoverageWhenXdebugExtensionIsEnabled(): void - { - $this->assertTrue($this->env->canCollectCodeCoverage()); - } - - /** - * @requires extension pcov - */ - public function testCanCollectCodeCoverageWhenPcovExtensionIsEnabled(): void - { - $this->assertTrue($this->env->canCollectCodeCoverage()); - } - - public function testCanCollectCodeCoverageWhenRunningOnPhpdbg(): void - { - $this->markTestSkippedWhenNotRunningOnPhpdbg(); - - $this->assertTrue($this->env->canCollectCodeCoverage()); - } - - public function testBinaryCanBeRetrieved(): void - { - $this->assertNotEmpty($this->env->getBinary()); - } - - /** - * @requires PHP - */ - public function testIsHhvmReturnsFalseWhenRunningOnPhp(): void - { - $this->assertFalse($this->env->isHHVM()); - } - - /** - * @requires PHP - */ - public function testIsPhpReturnsTrueWhenRunningOnPhp(): void - { - $this->markTestSkippedWhenRunningOnPhpdbg(); - - $this->assertTrue($this->env->isPHP()); - } - - /** - * @requires extension pcov - */ - public function testPCOVCanBeDetected(): void - { - $this->assertTrue($this->env->hasPCOV()); - } - - public function testPhpdbgCanBeDetected(): void - { - $this->markTestSkippedWhenNotRunningOnPhpdbg(); - - $this->assertTrue($this->env->hasPHPDBGCodeCoverage()); - } - - /** - * @requires extension xdebug - */ - public function testXdebugCanBeDetected(): void - { - $this->markTestSkippedWhenRunningOnPhpdbg(); - - $this->assertTrue($this->env->hasXdebug()); - } - - public function testNameAndVersionCanBeRetrieved(): void - { - $this->assertNotEmpty($this->env->getNameWithVersion()); - } - - public function testGetNameReturnsPhpdbgWhenRunningOnPhpdbg(): void - { - $this->markTestSkippedWhenNotRunningOnPhpdbg(); - - $this->assertSame('PHPDBG', $this->env->getName()); - } - - /** - * @requires PHP - */ - public function testGetNameReturnsPhpdbgWhenRunningOnPhp(): void - { - $this->markTestSkippedWhenRunningOnPhpdbg(); - - $this->assertSame('PHP', $this->env->getName()); - } - - public function testNameAndCodeCoverageDriverCanBeRetrieved(): void - { - $this->assertNotEmpty($this->env->getNameWithVersionAndCodeCoverageDriver()); - } - - /** - * @requires PHP - */ - public function testGetVersionReturnsPhpVersionWhenRunningPhp(): void - { - $this->assertSame(\PHP_VERSION, $this->env->getVersion()); - } - - /** - * @requires PHP - */ - public function testGetVendorUrlReturnsPhpDotNetWhenRunningPhp(): void - { - $this->assertSame('https://secure.php.net/', $this->env->getVendorUrl()); - } - - private function markTestSkippedWhenNotRunningOnPhpdbg(): void - { - if ($this->isRunningOnPhpdbg()) { - return; - } - - $this->markTestSkipped('PHPDBG is required.'); - } - - private function markTestSkippedWhenRunningOnPhpdbg(): void - { - if (!$this->isRunningOnPhpdbg()) { - return; - } - - $this->markTestSkipped('Cannot run on PHPDBG'); - } - - private function isRunningOnPhpdbg(): bool - { - return \PHP_SAPI === 'phpdbg'; - } -} diff --git a/vendor/sebastian/exporter/ChangeLog.md b/vendor/sebastian/exporter/ChangeLog.md index cd2f17be9..91a4220d5 100644 --- a/vendor/sebastian/exporter/ChangeLog.md +++ b/vendor/sebastian/exporter/ChangeLog.md @@ -2,6 +2,42 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. +## [4.0.5] - 2022-09-14 + +### Fixed + +* [#47](https://github.com/sebastianbergmann/exporter/pull/47): Fix `float` export precision + +## [4.0.4] - 2021-11-11 + +### Changed + +* [#37](https://github.com/sebastianbergmann/exporter/pull/37): Improve export of closed resources + +## [4.0.3] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [4.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [4.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [4.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 + ## [3.1.5] - 2022-09-14 ### Fixed @@ -30,6 +66,12 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * Remove HHVM-specific code that is no longer needed +[4.0.5]: https://github.com/sebastianbergmann/exporter/compare/4.0.4...4.0.5 +[4.0.4]: https://github.com/sebastianbergmann/exporter/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/exporter/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/exporter/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/exporter/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...4.0.0 [3.1.5]: https://github.com/sebastianbergmann/exporter/compare/3.1.4...3.1.5 [3.1.4]: https://github.com/sebastianbergmann/exporter/compare/3.1.3...3.1.4 [3.1.3]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...3.1.3 diff --git a/vendor/sebastian/exporter/README.md b/vendor/sebastian/exporter/README.md index e5b67f265..ed8719f56 100644 --- a/vendor/sebastian/exporter/README.md +++ b/vendor/sebastian/exporter/README.md @@ -1,8 +1,24 @@ -Exporter -======== +# sebastian/exporter + +[![CI Status](https://github.com/sebastianbergmann/exporter/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/exporter/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/exporter/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/exporter) This component provides the functionality to export PHP variables for visualization. +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require sebastian/exporter +``` + +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 sebastian/exporter +``` + ## Usage Exporting: @@ -156,14 +172,3 @@ space LONG_STRING ); ``` - -## Installation - -You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - - composer require sebastian/exporter - -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 sebastian/exporter - diff --git a/vendor/sebastian/exporter/composer.json b/vendor/sebastian/exporter/composer.json index e57ca157e..baa958443 100644 --- a/vendor/sebastian/exporter/composer.json +++ b/vendor/sebastian/exporter/composer.json @@ -2,7 +2,7 @@ "name": "sebastian/exporter", "description": "Provides the functionality to export PHP variables for visualization", "keywords": ["exporter","export"], - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "license": "BSD-3-Clause", "authors": [ { @@ -27,16 +27,19 @@ } ], "config": { + "platform": { + "php": "7.3.0" + }, "optimize-autoloader": true, "sort-packages": true }, "prefer-stable": true, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5", + "phpunit/phpunit": "^9.3", "ext-mbstring": "*" }, "autoload": { @@ -46,7 +49,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } } } diff --git a/vendor/sebastian/exporter/src/Exporter.php b/vendor/sebastian/exporter/src/Exporter.php index 2ee89d1fa..ca006ad6d 100644 --- a/vendor/sebastian/exporter/src/Exporter.php +++ b/vendor/sebastian/exporter/src/Exporter.php @@ -1,6 +1,6 @@ <?php declare(strict_types=1); /* - * This file is part of exporter package. + * This file is part of sebastian/exporter. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * @@ -9,7 +9,32 @@ */ namespace SebastianBergmann\Exporter; +use function bin2hex; +use function count; +use function function_exists; +use function get_class; +use function get_resource_type; +use function gettype; +use function implode; +use function ini_get; +use function ini_set; +use function is_array; +use function is_float; +use function is_object; +use function is_resource; +use function is_string; +use function mb_strlen; +use function mb_substr; +use function preg_match; +use function spl_object_hash; +use function sprintf; +use function str_repeat; +use function str_replace; +use function strlen; +use function substr; +use function var_export; use SebastianBergmann\RecursionContext\Context; +use SplObjectStorage; /** * A nifty utility for visualizing PHP variables. @@ -25,7 +50,7 @@ use SebastianBergmann\RecursionContext\Context; class Exporter { /** - * Exports a value as a string + * Exports a value as a string. * * The output of this method is similar to the output of print_r(), but * improved in various aspects: @@ -65,11 +90,11 @@ class Exporter $context->add($data); foreach ($array as $key => $value) { - if (\is_array($value)) { + if (is_array($value)) { if ($context->contains($data[$key]) !== false) { $result[] = '*RECURSION*'; } else { - $result[] = \sprintf( + $result[] = sprintf( 'array(%s)', $this->shortenedRecursiveExport($data[$key], $context) ); @@ -79,11 +104,11 @@ class Exporter } } - return \implode(', ', $result); + return implode(', ', $result); } /** - * Exports a value into a single-line string + * Exports a value into a single-line string. * * The output of this method is similar to the output of * SebastianBergmann\Exporter\Exporter::export(). @@ -97,34 +122,34 @@ class Exporter */ public function shortenedExport($value) { - if (\is_string($value)) { - $string = \str_replace("\n", '', $this->export($value)); + if (is_string($value)) { + $string = str_replace("\n", '', $this->export($value)); - if (\function_exists('mb_strlen')) { - if (\mb_strlen($string) > 40) { - $string = \mb_substr($string, 0, 30) . '...' . \mb_substr($string, -7); + if (function_exists('mb_strlen')) { + if (mb_strlen($string) > 40) { + $string = mb_substr($string, 0, 30) . '...' . mb_substr($string, -7); } } else { - if (\strlen($string) > 40) { - $string = \substr($string, 0, 30) . '...' . \substr($string, -7); + if (strlen($string) > 40) { + $string = substr($string, 0, 30) . '...' . substr($string, -7); } } return $string; } - if (\is_object($value)) { - return \sprintf( + if (is_object($value)) { + return sprintf( '%s Object (%s)', - \get_class($value), - \count($this->toArray($value)) > 0 ? '...' : '' + get_class($value), + count($this->toArray($value)) > 0 ? '...' : '' ); } - if (\is_array($value)) { - return \sprintf( + if (is_array($value)) { + return sprintf( 'Array (%s)', - \count($value) > 0 ? '...' : '' + count($value) > 0 ? '...' : '' ); } @@ -139,7 +164,7 @@ class Exporter */ public function toArray($value) { - if (!\is_object($value)) { + if (!is_object($value)) { return (array) $value; } @@ -157,7 +182,7 @@ class Exporter // private $property => "\0Classname\0property" // protected $property => "\0*\0property" // public $property => "property" - if (\preg_match('/^\0.+\0(.+)$/', (string) $key, $matches)) { + if (preg_match('/^\0.+\0(.+)$/', (string) $key, $matches)) { $key = $matches[1]; } @@ -172,9 +197,9 @@ class Exporter // Some internal classes like SplObjectStorage don't work with the // above (fast) mechanism nor with reflection in Zend. // Format the output similarly to print_r() in this case - if ($value instanceof \SplObjectStorage) { + if ($value instanceof SplObjectStorage) { foreach ($value as $key => $val) { - $array[\spl_object_hash($val)] = [ + $array[spl_object_hash($val)] = [ 'obj' => $val, 'inf' => $value->getInfo(), ]; @@ -185,7 +210,7 @@ class Exporter } /** - * Recursive implementation of export + * Recursive implementation of export. * * @param mixed $value The value to export * @param int $indentation The indentation level of the 2nd+ line @@ -209,10 +234,10 @@ class Exporter return 'false'; } - if (\is_float($value)) { - $precisionBackup = \ini_get('precision'); + if (is_float($value)) { + $precisionBackup = ini_get('precision'); - \ini_set('precision', '-1'); + ini_set('precision', '-1'); try { $valueStr = (string) $value; @@ -223,33 +248,33 @@ class Exporter return $valueStr; } finally { - \ini_set('precision', $precisionBackup); + ini_set('precision', $precisionBackup); } } - if ($this->isClosedResource($value)) { + if (gettype($value) === 'resource (closed)') { return 'resource (closed)'; } - if (\is_resource($value)) { - return \sprintf( + if (is_resource($value)) { + return sprintf( 'resource(%d) of type (%s)', $value, - \get_resource_type($value) + get_resource_type($value) ); } - if (\is_string($value)) { + if (is_string($value)) { // Match for most non printable chars somewhat taking multibyte chars into account - if (\preg_match('/[^\x09-\x0d\x1b\x20-\xff]/', $value)) { - return 'Binary String: 0x' . \bin2hex($value); + if (preg_match('/[^\x09-\x0d\x1b\x20-\xff]/', $value)) { + return 'Binary String: 0x' . bin2hex($value); } return "'" . - \str_replace( + str_replace( '<lf>', "\n", - \str_replace( + str_replace( ["\r\n", "\n\r", "\r", "\n"], ['\r\n<lf>', '\n\r<lf>', '\r<lf>', '\n<lf>'], $value @@ -258,13 +283,13 @@ class Exporter "'"; } - $whitespace = \str_repeat(' ', (int)(4 * $indentation)); + $whitespace = str_repeat(' ', 4 * $indentation); if (!$processed) { $processed = new Context; } - if (\is_array($value)) { + if (is_array($value)) { if (($key = $processed->contains($value)) !== false) { return 'Array &' . $key; } @@ -273,9 +298,9 @@ class Exporter $key = $processed->add($value); $values = ''; - if (\count($array) > 0) { + if (count($array) > 0) { foreach ($array as $k => $v) { - $values .= \sprintf( + $values .= sprintf( '%s %s => %s' . "\n", $whitespace, $this->recursiveExport($k, $indentation), @@ -286,23 +311,23 @@ class Exporter $values = "\n" . $values . $whitespace; } - return \sprintf('Array &%s (%s)', $key, $values); + return sprintf('Array &%s (%s)', $key, $values); } - if (\is_object($value)) { - $class = \get_class($value); + if (is_object($value)) { + $class = get_class($value); if ($hash = $processed->contains($value)) { - return \sprintf('%s Object &%s', $class, $hash); + return sprintf('%s Object &%s', $class, $hash); } $hash = $processed->add($value); $values = ''; $array = $this->toArray($value); - if (\count($array) > 0) { + if (count($array) > 0) { foreach ($array as $k => $v) { - $values .= \sprintf( + $values .= sprintf( '%s %s => %s' . "\n", $whitespace, $this->recursiveExport($k, $indentation), @@ -313,68 +338,9 @@ class Exporter $values = "\n" . $values . $whitespace; } - return \sprintf('%s Object &%s (%s)', $class, $hash, $values); + return sprintf('%s Object &%s (%s)', $class, $hash, $values); } - return \var_export($value, true); - } - - /** - * Determines whether a variable represents a resource, either open or closed. - * - * @param mixed $actual The variable to test. - * - * @return bool - */ - private function isResource($value) - { - return $value !== null - && \is_scalar($value) === false - && \is_array($value) === false - && \is_object($value) === false; - } - - /** - * Determines whether a variable represents a closed resource. - * - * @param mixed $actual The variable to test. - * - * @return bool - */ - private function isClosedResource($value) - { - /* - * PHP 7.2 introduced "resource (closed)". - */ - if (\gettype($value) === 'resource (closed)') { - return true; - } - - /* - * If gettype did not work, attempt to determine whether this is - * a closed resource in another way. - */ - $isResource = \is_resource($value); - $isNotNonResource = $this->isResource($value); - - if ($isResource === false && $isNotNonResource === true) { - return true; - } - - if ($isNotNonResource === true) { - try { - $resourceType = @\get_resource_type($value); - - if ($resourceType === 'Unknown') { - return true; - } - } catch (TypeError $e) { - // Ignore. Not a resource. - } catch (Exception $e) { - // Ignore. Not a resource. - } - } - - return false; + return var_export($value, true); } } diff --git a/vendor/sebastian/global-state/.github/stale.yml b/vendor/sebastian/global-state/.github/stale.yml deleted file mode 100644 index 4eadca327..000000000 --- a/vendor/sebastian/global-state/.github/stale.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - enhancement - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had activity within the last 60 days. It will be closed after 7 days if no further activity occurs. Thank you for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This issue has been automatically closed because it has not had activity since it was marked as stale. Thank you for your contributions. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - diff --git a/vendor/sebastian/global-state/.gitignore b/vendor/sebastian/global-state/.gitignore deleted file mode 100644 index 96c0f28a6..000000000 --- a/vendor/sebastian/global-state/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/.idea -/.php_cs -/.php_cs.cache -/.phpunit.result.cache -/composer.lock -/vendor diff --git a/vendor/sebastian/global-state/.php_cs.dist b/vendor/sebastian/global-state/.php_cs.dist deleted file mode 100644 index c42d7e8b7..000000000 --- a/vendor/sebastian/global-state/.php_cs.dist +++ /dev/null @@ -1,197 +0,0 @@ -<?php declare(strict_types=1); -$header = <<<'EOF' -This file is part of sebastian/global-state. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'align_multiline_comment' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'is_null' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'new_with_braces' => false, - 'no_alias_functions' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_before_namespace' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => ['groups' => ['simple', 'meta']], - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_assignment' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'semicolon_after_instruction' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => [ - 'elements' => [ - 'const', - 'method', - 'property', - ], - ], - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/sebastian/global-state/.travis.yml b/vendor/sebastian/global-state/.travis.yml deleted file mode 100644 index 3a8412783..000000000 --- a/vendor/sebastian/global-state/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: php - -php: - - 7.2 - - 7.3 - - master - -sudo: false - -before_install: - - composer self-update - - composer clear-cache - -install: - - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest - -script: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false diff --git a/vendor/sebastian/global-state/ChangeLog.md b/vendor/sebastian/global-state/ChangeLog.md index e3c785991..a27a5cf16 100644 --- a/vendor/sebastian/global-state/ChangeLog.md +++ b/vendor/sebastian/global-state/ChangeLog.md @@ -2,6 +2,48 @@ All notable changes in `sebastian/global-state` are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. +## [5.0.5] - 2022-02-14 + +### Fixed + +* [#34](https://github.com/sebastianbergmann/global-state/pull/34): Uninitialised typed static properties are not handled correctly + +## [5.0.4] - 2022-02-10 + +### Fixed + +* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected + +## [5.0.3] - 2021-06-11 + +### Changed + +* `SebastianBergmann\GlobalState\CodeExporter::globalVariables()` now generates code that is compatible with PHP 8.1 + +## [5.0.2] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\GlobalState\Exception` now correctly extends `\Throwable` + +## [5.0.1] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [5.0.0] - 2020-08-07 + +### Changed + +* The `SebastianBergmann\GlobalState\Blacklist` class has been renamed to `SebastianBergmann\GlobalState\ExcludeList` + +## [4.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.2 + ## [3.0.2] - 2022-02-10 ### Fixed @@ -24,6 +66,13 @@ All notable changes in `sebastian/global-state` are documented in this file usin * This component is no longer supported on PHP 7.0 and PHP 7.1 +[5.0.5]: https://github.com/sebastianbergmann/global-state/compare/5.0.4...5.0.5 +[5.0.4]: https://github.com/sebastianbergmann/global-state/compare/5.0.3...5.0.4 +[5.0.3]: https://github.com/sebastianbergmann/global-state/compare/5.0.2...5.0.3 +[5.0.2]: https://github.com/sebastianbergmann/global-state/compare/5.0.1...5.0.2 +[5.0.1]: https://github.com/sebastianbergmann/global-state/compare/5.0.0...5.0.1 +[5.0.0]: https://github.com/sebastianbergmann/global-state/compare/4.0.0...5.0.0 +[4.0.0]: https://github.com/sebastianbergmann/global-state/compare/3.0.2...4.0.0 [3.0.2]: https://github.com/sebastianbergmann/phpunit/compare/3.0.1...3.0.2 [3.0.1]: https://github.com/sebastianbergmann/phpunit/compare/3.0.0...3.0.1 [3.0.0]: https://github.com/sebastianbergmann/phpunit/compare/2.0.0...3.0.0 diff --git a/vendor/sebastian/global-state/README.md b/vendor/sebastian/global-state/README.md index a804f85c0..af15bedde 100644 --- a/vendor/sebastian/global-state/README.md +++ b/vendor/sebastian/global-state/README.md @@ -1,16 +1,20 @@ -# global-state +# sebastian/global-state + +[![CI Status](https://github.com/sebastianbergmann/global-state/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/global-state/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/global-state/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/global-state) Snapshotting of global state, factored out of PHPUnit into a stand-alone component. -[![Build Status](https://travis-ci.org/sebastianbergmann/global-state.svg?branch=master)](https://travis-ci.org/sebastianbergmann/global-state) - ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/global-state +``` +composer require sebastian/global-state +``` 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 sebastian/global-state - +``` +composer require --dev sebastian/global-state +``` diff --git a/vendor/sebastian/global-state/build.xml b/vendor/sebastian/global-state/build.xml deleted file mode 100644 index 35c179054..000000000 --- a/vendor/sebastian/global-state/build.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="global-state" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - </exec> - </target> -</project> diff --git a/vendor/sebastian/global-state/composer.json b/vendor/sebastian/global-state/composer.json index 0cbc33d7b..0fef446a6 100644 --- a/vendor/sebastian/global-state/composer.json +++ b/vendor/sebastian/global-state/composer.json @@ -12,17 +12,20 @@ ], "prefer-stable": true, "config": { + "platform": { + "php": "7.3.0" + }, "optimize-autoloader": true, "sort-packages": true }, "require": { - "php": ">=7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -42,7 +45,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } } } diff --git a/vendor/sebastian/global-state/phpunit.xml b/vendor/sebastian/global-state/phpunit.xml deleted file mode 100644 index c02c9bc6a..000000000 --- a/vendor/sebastian/global-state/phpunit.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.0/phpunit.xsd" - bootstrap="vendor/autoload.php" - executionOrder="depends,defects" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuites> - <testsuite name="default"> - <directory suffix="Test.php">tests</directory> - </testsuite> - </testsuites> - - <php> - <const name="GLOBALSTATE_TESTSUITE" value="true"/> - <ini name="date.timezone" value="Etc/UTC"/> - </php> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/global-state/src/Blacklist.php b/vendor/sebastian/global-state/src/Blacklist.php deleted file mode 100644 index ce8f25c2f..000000000 --- a/vendor/sebastian/global-state/src/Blacklist.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -/** - * A blacklist for global state elements that should not be snapshotted. - */ -final class Blacklist -{ - /** - * @var array - */ - private $globalVariables = []; - - /** - * @var string[] - */ - private $classes = []; - - /** - * @var string[] - */ - private $classNamePrefixes = []; - - /** - * @var string[] - */ - private $parentClasses = []; - - /** - * @var string[] - */ - private $interfaces = []; - - /** - * @var array - */ - private $staticAttributes = []; - - public function addGlobalVariable(string $variableName): void - { - $this->globalVariables[$variableName] = true; - } - - public function addClass(string $className): void - { - $this->classes[] = $className; - } - - public function addSubclassesOf(string $className): void - { - $this->parentClasses[] = $className; - } - - public function addImplementorsOf(string $interfaceName): void - { - $this->interfaces[] = $interfaceName; - } - - public function addClassNamePrefix(string $classNamePrefix): void - { - $this->classNamePrefixes[] = $classNamePrefix; - } - - public function addStaticAttribute(string $className, string $attributeName): void - { - if (!isset($this->staticAttributes[$className])) { - $this->staticAttributes[$className] = []; - } - - $this->staticAttributes[$className][$attributeName] = true; - } - - public function isGlobalVariableBlacklisted(string $variableName): bool - { - return isset($this->globalVariables[$variableName]); - } - - public function isStaticAttributeBlacklisted(string $className, string $attributeName): bool - { - if (\in_array($className, $this->classes)) { - return true; - } - - foreach ($this->classNamePrefixes as $prefix) { - if (\strpos($className, $prefix) === 0) { - return true; - } - } - - $class = new \ReflectionClass($className); - - foreach ($this->parentClasses as $type) { - if ($class->isSubclassOf($type)) { - return true; - } - } - - foreach ($this->interfaces as $type) { - if ($class->implementsInterface($type)) { - return true; - } - } - - if (isset($this->staticAttributes[$className][$attributeName])) { - return true; - } - - return false; - } -} diff --git a/vendor/sebastian/global-state/src/CodeExporter.php b/vendor/sebastian/global-state/src/CodeExporter.php index 860457b13..71cdbf504 100644 --- a/vendor/sebastian/global-state/src/CodeExporter.php +++ b/vendor/sebastian/global-state/src/CodeExporter.php @@ -9,6 +9,13 @@ */ namespace SebastianBergmann\GlobalState; +use const PHP_EOL; +use function is_array; +use function is_scalar; +use function serialize; +use function sprintf; +use function var_export; + /** * Exports parts of a Snapshot as PHP code. */ @@ -19,7 +26,7 @@ final class CodeExporter $result = ''; foreach ($snapshot->constants() as $name => $value) { - $result .= \sprintf( + $result .= sprintf( 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", $name, $name, @@ -32,11 +39,22 @@ final class CodeExporter public function globalVariables(Snapshot $snapshot): string { - $result = '$GLOBALS = [];' . \PHP_EOL; + $result = <<<'EOT' +call_user_func( + function () + { + foreach (array_keys($GLOBALS) as $key) { + unset($GLOBALS[$key]); + } + } +); + + +EOT; foreach ($snapshot->globalVariables() as $name => $value) { - $result .= \sprintf( - '$GLOBALS[%s] = %s;' . \PHP_EOL, + $result .= sprintf( + '$GLOBALS[%s] = %s;' . PHP_EOL, $this->exportVariable($name), $this->exportVariable($value) ); @@ -50,7 +68,7 @@ final class CodeExporter $result = ''; foreach ($snapshot->iniSettings() as $key => $value) { - $result .= \sprintf( + $result .= sprintf( '@ini_set(%s, %s);' . "\n", $this->exportVariable($key), $this->exportVariable($value) @@ -62,12 +80,12 @@ final class CodeExporter private function exportVariable($variable): string { - if (\is_scalar($variable) || null === $variable || - (\is_array($variable) && $this->arrayOnlyContainsScalars($variable))) { - return \var_export($variable, true); + if (is_scalar($variable) || null === $variable || + (is_array($variable) && $this->arrayOnlyContainsScalars($variable))) { + return var_export($variable, true); } - return 'unserialize(' . \var_export(\serialize($variable), true) . ')'; + return 'unserialize(' . var_export(serialize($variable), true) . ')'; } private function arrayOnlyContainsScalars(array $array): bool @@ -75,9 +93,9 @@ final class CodeExporter $result = true; foreach ($array as $element) { - if (\is_array($element)) { + if (is_array($element)) { $result = $this->arrayOnlyContainsScalars($element); - } elseif (!\is_scalar($element) && null !== $element) { + } elseif (!is_scalar($element) && null !== $element) { $result = false; } diff --git a/vendor/sebastian/global-state/src/ExcludeList.php b/vendor/sebastian/global-state/src/ExcludeList.php new file mode 100644 index 000000000..5631f1186 --- /dev/null +++ b/vendor/sebastian/global-state/src/ExcludeList.php @@ -0,0 +1,119 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/global-state. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\GlobalState; + +use function in_array; +use function strpos; +use ReflectionClass; + +final class ExcludeList +{ + /** + * @var array + */ + private $globalVariables = []; + + /** + * @var string[] + */ + private $classes = []; + + /** + * @var string[] + */ + private $classNamePrefixes = []; + + /** + * @var string[] + */ + private $parentClasses = []; + + /** + * @var string[] + */ + private $interfaces = []; + + /** + * @var array + */ + private $staticAttributes = []; + + public function addGlobalVariable(string $variableName): void + { + $this->globalVariables[$variableName] = true; + } + + public function addClass(string $className): void + { + $this->classes[] = $className; + } + + public function addSubclassesOf(string $className): void + { + $this->parentClasses[] = $className; + } + + public function addImplementorsOf(string $interfaceName): void + { + $this->interfaces[] = $interfaceName; + } + + public function addClassNamePrefix(string $classNamePrefix): void + { + $this->classNamePrefixes[] = $classNamePrefix; + } + + public function addStaticAttribute(string $className, string $attributeName): void + { + if (!isset($this->staticAttributes[$className])) { + $this->staticAttributes[$className] = []; + } + + $this->staticAttributes[$className][$attributeName] = true; + } + + public function isGlobalVariableExcluded(string $variableName): bool + { + return isset($this->globalVariables[$variableName]); + } + + public function isStaticAttributeExcluded(string $className, string $attributeName): bool + { + if (in_array($className, $this->classes, true)) { + return true; + } + + foreach ($this->classNamePrefixes as $prefix) { + if (strpos($className, $prefix) === 0) { + return true; + } + } + + $class = new ReflectionClass($className); + + foreach ($this->parentClasses as $type) { + if ($class->isSubclassOf($type)) { + return true; + } + } + + foreach ($this->interfaces as $type) { + if ($class->implementsInterface($type)) { + return true; + } + } + + if (isset($this->staticAttributes[$className][$attributeName])) { + return true; + } + + return false; + } +} diff --git a/vendor/sebastian/global-state/src/Restorer.php b/vendor/sebastian/global-state/src/Restorer.php index ed55d9fe0..1633fcc11 100644 --- a/vendor/sebastian/global-state/src/Restorer.php +++ b/vendor/sebastian/global-state/src/Restorer.php @@ -9,6 +9,17 @@ */ namespace SebastianBergmann\GlobalState; +use function array_diff; +use function array_key_exists; +use function array_keys; +use function array_merge; +use function function_exists; +use function get_defined_functions; +use function in_array; +use function is_array; +use ReflectionClass; +use ReflectionProperty; + /** * Restorer of snapshots of global state. */ @@ -23,13 +34,13 @@ class Restorer */ public function restoreFunctions(Snapshot $snapshot): void { - if (!\function_exists('uopz_delete')) { + if (!function_exists('uopz_delete')) { throw new RuntimeException('The uopz_delete() function is required for this operation'); } - $functions = \get_defined_functions(); + $functions = get_defined_functions(); - foreach (\array_diff($functions['user'], $snapshot->functions()) as $function) { + foreach (array_diff($functions['user'], $snapshot->functions()) as $function) { uopz_delete($function); } } @@ -47,11 +58,11 @@ class Restorer $globalVariables = $snapshot->globalVariables(); - foreach (\array_keys($GLOBALS) as $key) { + foreach (array_keys($GLOBALS) as $key) { if ($key !== 'GLOBALS' && - !\in_array($key, $superGlobalArrays) && - !$snapshot->blacklist()->isGlobalVariableBlacklisted($key)) { - if (\array_key_exists($key, $globalVariables)) { + !in_array($key, $superGlobalArrays, true) && + !$snapshot->excludeList()->isGlobalVariableExcluded($key)) { + if (array_key_exists($key, $globalVariables)) { $GLOBALS[$key] = $globalVariables[$key]; } else { unset($GLOBALS[$key]); @@ -65,21 +76,21 @@ class Restorer */ public function restoreStaticAttributes(Snapshot $snapshot): void { - $current = new Snapshot($snapshot->blacklist(), false, false, false, false, true, false, false, false, false); - $newClasses = \array_diff($current->classes(), $snapshot->classes()); + $current = new Snapshot($snapshot->excludeList(), false, false, false, false, true, false, false, false, false); + $newClasses = array_diff($current->classes(), $snapshot->classes()); unset($current); foreach ($snapshot->staticAttributes() as $className => $staticAttributes) { foreach ($staticAttributes as $name => $value) { - $reflector = new \ReflectionProperty($className, $name); + $reflector = new ReflectionProperty($className, $name); $reflector->setAccessible(true); $reflector->setValue($value); } } foreach ($newClasses as $className) { - $class = new \ReflectionClass($className); + $class = new ReflectionClass($className); $defaults = $class->getDefaultProperties(); foreach ($class->getProperties() as $attribute) { @@ -89,7 +100,7 @@ class Restorer $name = $attribute->getName(); - if ($snapshot->blacklist()->isStaticAttributeBlacklisted($className, $name)) { + if ($snapshot->excludeList()->isStaticAttributeExcluded($className, $name)) { continue; } @@ -111,10 +122,10 @@ class Restorer $superGlobalVariables = $snapshot->superGlobalVariables(); if (isset($GLOBALS[$superGlobalArray]) && - \is_array($GLOBALS[$superGlobalArray]) && + is_array($GLOBALS[$superGlobalArray]) && isset($superGlobalVariables[$superGlobalArray])) { - $keys = \array_keys( - \array_merge( + $keys = array_keys( + array_merge( $GLOBALS[$superGlobalArray], $superGlobalVariables[$superGlobalArray] ) diff --git a/vendor/sebastian/global-state/src/Snapshot.php b/vendor/sebastian/global-state/src/Snapshot.php index d15bab1f0..e33264eb0 100644 --- a/vendor/sebastian/global-state/src/Snapshot.php +++ b/vendor/sebastian/global-state/src/Snapshot.php @@ -9,8 +9,29 @@ */ namespace SebastianBergmann\GlobalState; +use const PHP_VERSION_ID; +use function array_keys; +use function array_merge; +use function array_reverse; +use function func_get_args; +use function get_declared_classes; +use function get_declared_interfaces; +use function get_declared_traits; +use function get_defined_constants; +use function get_defined_functions; +use function get_included_files; +use function in_array; +use function ini_get_all; +use function is_array; +use function is_object; +use function is_resource; +use function is_scalar; +use function serialize; +use function unserialize; +use ReflectionClass; use SebastianBergmann\ObjectReflector\ObjectReflector; use SebastianBergmann\RecursionContext\Context; +use Throwable; /** * A snapshot of global state. @@ -18,9 +39,9 @@ use SebastianBergmann\RecursionContext\Context; class Snapshot { /** - * @var Blacklist + * @var ExcludeList */ - private $blacklist; + private $excludeList; /** * @var array @@ -80,13 +101,9 @@ class Snapshot /** * Creates a snapshot of the current global state. */ - public function __construct(Blacklist $blacklist = null, bool $includeGlobalVariables = true, bool $includeStaticAttributes = true, bool $includeConstants = true, bool $includeFunctions = true, bool $includeClasses = true, bool $includeInterfaces = true, bool $includeTraits = true, bool $includeIniSettings = true, bool $includeIncludedFiles = true) + public function __construct(ExcludeList $excludeList = null, bool $includeGlobalVariables = true, bool $includeStaticAttributes = true, bool $includeConstants = true, bool $includeFunctions = true, bool $includeClasses = true, bool $includeInterfaces = true, bool $includeTraits = true, bool $includeIniSettings = true, bool $includeIncludedFiles = true) { - if ($blacklist === null) { - $blacklist = new Blacklist; - } - - $this->blacklist = $blacklist; + $this->excludeList = $excludeList ?: new ExcludeList; if ($includeConstants) { $this->snapshotConstants(); @@ -114,21 +131,21 @@ class Snapshot } if ($includeIniSettings) { - $this->iniSettings = \ini_get_all(null, false); + $this->iniSettings = ini_get_all(null, false); } if ($includeIncludedFiles) { - $this->includedFiles = \get_included_files(); + $this->includedFiles = get_included_files(); } if ($includeTraits) { - $this->traits = \get_declared_traits(); + $this->traits = get_declared_traits(); } } - public function blacklist(): Blacklist + public function excludeList(): ExcludeList { - return $this->blacklist; + return $this->excludeList; } public function globalVariables(): array @@ -191,7 +208,7 @@ class Snapshot */ private function snapshotConstants(): void { - $constants = \get_defined_constants(true); + $constants = get_defined_constants(true); if (isset($constants['user'])) { $this->constants = $constants['user']; @@ -203,7 +220,7 @@ class Snapshot */ private function snapshotFunctions(): void { - $functions = \get_defined_functions(); + $functions = get_defined_functions(); $this->functions = $functions['user']; } @@ -213,8 +230,8 @@ class Snapshot */ private function snapshotClasses(): void { - foreach (\array_reverse(\get_declared_classes()) as $className) { - $class = new \ReflectionClass($className); + foreach (array_reverse(get_declared_classes()) as $className) { + $class = new ReflectionClass($className); if (!$class->isUserDefined()) { break; @@ -223,7 +240,7 @@ class Snapshot $this->classes[] = $className; } - $this->classes = \array_reverse($this->classes); + $this->classes = array_reverse($this->classes); } /** @@ -231,8 +248,8 @@ class Snapshot */ private function snapshotInterfaces(): void { - foreach (\array_reverse(\get_declared_interfaces()) as $interfaceName) { - $class = new \ReflectionClass($interfaceName); + foreach (array_reverse(get_declared_interfaces()) as $interfaceName) { + $class = new ReflectionClass($interfaceName); if (!$class->isUserDefined()) { break; @@ -241,7 +258,7 @@ class Snapshot $this->interfaces[] = $interfaceName; } - $this->interfaces = \array_reverse($this->interfaces); + $this->interfaces = array_reverse($this->interfaces); } /** @@ -255,13 +272,13 @@ class Snapshot $this->snapshotSuperGlobalArray($superGlobalArray); } - foreach (\array_keys($GLOBALS) as $key) { + foreach (array_keys($GLOBALS) as $key) { if ($key !== 'GLOBALS' && - !\in_array($key, $superGlobalArrays) && + !in_array($key, $superGlobalArrays, true) && $this->canBeSerialized($GLOBALS[$key]) && - !$this->blacklist->isGlobalVariableBlacklisted($key)) { + !$this->excludeList->isGlobalVariableExcluded($key)) { /* @noinspection UnserializeExploitsInspection */ - $this->globalVariables[$key] = \unserialize(\serialize($GLOBALS[$key])); + $this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key])); } } } @@ -273,10 +290,10 @@ class Snapshot { $this->superGlobalVariables[$superGlobalArray] = []; - if (isset($GLOBALS[$superGlobalArray]) && \is_array($GLOBALS[$superGlobalArray])) { + if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { foreach ($GLOBALS[$superGlobalArray] as $key => $value) { /* @noinspection UnserializeExploitsInspection */ - $this->superGlobalVariables[$superGlobalArray][$key] = \unserialize(\serialize($value)); + $this->superGlobalVariables[$superGlobalArray][$key] = unserialize(serialize($value)); } } } @@ -287,23 +304,28 @@ class Snapshot private function snapshotStaticAttributes(): void { foreach ($this->classes as $className) { - $class = new \ReflectionClass($className); + $class = new ReflectionClass($className); $snapshot = []; foreach ($class->getProperties() as $attribute) { if ($attribute->isStatic()) { $name = $attribute->getName(); - if ($this->blacklist->isStaticAttributeBlacklisted($className, $name)) { + if ($this->excludeList->isStaticAttributeExcluded($className, $name)) { continue; } $attribute->setAccessible(true); + + if (PHP_VERSION_ID >= 70400 && !$attribute->isInitialized()) { + continue; + } + $value = $attribute->getValue(); if ($this->canBeSerialized($value)) { /* @noinspection UnserializeExploitsInspection */ - $snapshot[$name] = \unserialize(\serialize($value)); + $snapshot[$name] = unserialize(serialize($value)); } } } @@ -332,29 +354,29 @@ class Snapshot private function canBeSerialized($variable): bool { - if (\is_scalar($variable) || $variable === null) { + if (is_scalar($variable) || $variable === null) { return true; } - if (\is_resource($variable)) { + if (is_resource($variable)) { return false; } foreach ($this->enumerateObjectsAndResources($variable) as $value) { - if (\is_resource($value)) { + if (is_resource($value)) { return false; } - if (\is_object($value)) { - $class = new \ReflectionClass($value); + if (is_object($value)) { + $class = new ReflectionClass($value); if ($class->isAnonymous()) { return false; } try { - @\serialize($value); - } catch (\Throwable $t) { + @serialize($value); + } catch (Throwable $t) { return false; } } @@ -365,8 +387,8 @@ class Snapshot private function enumerateObjectsAndResources($variable): array { - if (isset(\func_get_args()[1])) { - $processed = \func_get_args()[1]; + if (isset(func_get_args()[1])) { + $processed = func_get_args()[1]; } else { $processed = new Context; } @@ -380,15 +402,15 @@ class Snapshot $array = $variable; $processed->add($variable); - if (\is_array($variable)) { + if (is_array($variable)) { foreach ($array as $element) { - if (!\is_array($element) && !\is_object($element) && !\is_resource($element)) { + if (!is_array($element) && !is_object($element) && !is_resource($element)) { continue; } - if (!\is_resource($element)) { + if (!is_resource($element)) { /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = \array_merge( + $result = array_merge( $result, $this->enumerateObjectsAndResources($element, $processed) ); @@ -400,13 +422,13 @@ class Snapshot $result[] = $variable; foreach ((new ObjectReflector)->getAttributes($variable) as $value) { - if (!\is_array($value) && !\is_object($value) && !\is_resource($value)) { + if (!is_array($value) && !is_object($value) && !is_resource($value)) { continue; } - if (!\is_resource($value)) { + if (!is_resource($value)) { /** @noinspection SlowArrayOperationsInLoopInspection */ - $result = \array_merge( + $result = array_merge( $result, $this->enumerateObjectsAndResources($value, $processed) ); diff --git a/vendor/sebastian/global-state/src/exceptions/Exception.php b/vendor/sebastian/global-state/src/exceptions/Exception.php index d8fd3c3aa..94432008e 100644 --- a/vendor/sebastian/global-state/src/exceptions/Exception.php +++ b/vendor/sebastian/global-state/src/exceptions/Exception.php @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\GlobalState; -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/global-state/tests/BlacklistTest.php b/vendor/sebastian/global-state/tests/BlacklistTest.php deleted file mode 100644 index 4d1b64d38..000000000 --- a/vendor/sebastian/global-state/tests/BlacklistTest.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\GlobalState\TestFixture\BlacklistedChildClass; -use SebastianBergmann\GlobalState\TestFixture\BlacklistedClass; -use SebastianBergmann\GlobalState\TestFixture\BlacklistedImplementor; -use SebastianBergmann\GlobalState\TestFixture\BlacklistedInterface; - -/** - * @covers \SebastianBergmann\GlobalState\Blacklist - */ -final class BlacklistTest extends TestCase -{ - /** - * @var \SebastianBergmann\GlobalState\Blacklist - */ - private $blacklist; - - protected function setUp(): void - { - $this->blacklist = new Blacklist; - } - - public function testGlobalVariableThatIsNotBlacklistedIsNotTreatedAsBlacklisted(): void - { - $this->assertFalse($this->blacklist->isGlobalVariableBlacklisted('variable')); - } - - public function testGlobalVariableCanBeBlacklisted(): void - { - $this->blacklist->addGlobalVariable('variable'); - - $this->assertTrue($this->blacklist->isGlobalVariableBlacklisted('variable')); - } - - public function testStaticAttributeThatIsNotBlacklistedIsNotTreatedAsBlacklisted(): void - { - $this->assertFalse( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedClass::class, - 'attribute' - ) - ); - } - - public function testClassCanBeBlacklisted(): void - { - $this->blacklist->addClass(BlacklistedClass::class); - - $this->assertTrue( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedClass::class, - 'attribute' - ) - ); - } - - public function testSubclassesCanBeBlacklisted(): void - { - $this->blacklist->addSubclassesOf(BlacklistedClass::class); - - $this->assertTrue( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedChildClass::class, - 'attribute' - ) - ); - } - - public function testImplementorsCanBeBlacklisted(): void - { - $this->blacklist->addImplementorsOf(BlacklistedInterface::class); - - $this->assertTrue( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedImplementor::class, - 'attribute' - ) - ); - } - - public function testClassNamePrefixesCanBeBlacklisted(): void - { - $this->blacklist->addClassNamePrefix('SebastianBergmann\GlobalState'); - - $this->assertTrue( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedClass::class, - 'attribute' - ) - ); - } - - public function testStaticAttributeCanBeBlacklisted(): void - { - $this->blacklist->addStaticAttribute( - BlacklistedClass::class, - 'attribute' - ); - - $this->assertTrue( - $this->blacklist->isStaticAttributeBlacklisted( - BlacklistedClass::class, - 'attribute' - ) - ); - } -} diff --git a/vendor/sebastian/global-state/tests/CodeExporterTest.php b/vendor/sebastian/global-state/tests/CodeExporterTest.php deleted file mode 100644 index b121d7e26..000000000 --- a/vendor/sebastian/global-state/tests/CodeExporterTest.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\GlobalState\CodeExporter - */ -final class CodeExporterTest extends TestCase -{ - /** - * @runInSeparateProcess - */ - public function testCanExportGlobalVariablesToCode(): void - { - $GLOBALS = ['foo' => 'bar']; - - $snapshot = new Snapshot(null, true, false, false, false, false, false, false, false, false); - - $exporter = new CodeExporter; - - $this->assertEquals( - '$GLOBALS = [];' . \PHP_EOL . '$GLOBALS[\'foo\'] = \'bar\';' . \PHP_EOL, - $exporter->globalVariables($snapshot) - ); - } -} diff --git a/vendor/sebastian/global-state/tests/RestorerTest.php b/vendor/sebastian/global-state/tests/RestorerTest.php deleted file mode 100644 index 6dcb94e99..000000000 --- a/vendor/sebastian/global-state/tests/RestorerTest.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\GlobalState\Restorer - * - * @uses \SebastianBergmann\GlobalState\Blacklist - * @uses \SebastianBergmann\GlobalState\Snapshot - */ -final class RestorerTest extends TestCase -{ - public static function setUpBeforeClass(): void - { - $GLOBALS['varBool'] = false; - $GLOBALS['varNull'] = null; - $_GET['varGet'] = 0; - } - - public function testRestorerGlobalVariable(): void - { - $snapshot = new Snapshot(null, true, false, false, false, false, false, false, false, false); - $restorer = new Restorer; - $restorer->restoreGlobalVariables($snapshot); - - $this->assertArrayHasKey('varBool', $GLOBALS); - $this->assertEquals(false, $GLOBALS['varBool']); - $this->assertArrayHasKey('varNull', $GLOBALS); - $this->assertEquals(null, $GLOBALS['varNull']); - $this->assertArrayHasKey('varGet', $_GET); - $this->assertEquals(0, $_GET['varGet']); - } - - /** - * @backupGlobals enabled - */ - public function testIntegrationRestorerGlobalVariables(): void - { - $this->assertArrayHasKey('varBool', $GLOBALS); - $this->assertEquals(false, $GLOBALS['varBool']); - $this->assertArrayHasKey('varNull', $GLOBALS); - $this->assertEquals(null, $GLOBALS['varNull']); - $this->assertArrayHasKey('varGet', $_GET); - $this->assertEquals(0, $_GET['varGet']); - } - - /** - * @depends testIntegrationRestorerGlobalVariables - */ - public function testIntegrationRestorerGlobalVariables2(): void - { - $this->assertArrayHasKey('varBool', $GLOBALS); - $this->assertEquals(false, $GLOBALS['varBool']); - $this->assertArrayHasKey('varNull', $GLOBALS); - $this->assertEquals(null, $GLOBALS['varNull']); - $this->assertArrayHasKey('varGet', $_GET); - $this->assertEquals(0, $_GET['varGet']); - } -} diff --git a/vendor/sebastian/global-state/tests/SnapshotTest.php b/vendor/sebastian/global-state/tests/SnapshotTest.php deleted file mode 100644 index 56d584979..000000000 --- a/vendor/sebastian/global-state/tests/SnapshotTest.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\GlobalState\TestFixture\BlacklistedInterface; -use SebastianBergmann\GlobalState\TestFixture\SnapshotClass; -use SebastianBergmann\GlobalState\TestFixture\SnapshotTrait; - -/** - * @covers \SebastianBergmann\GlobalState\Snapshot - * - * @uses \SebastianBergmann\GlobalState\Blacklist - */ -final class SnapshotTest extends TestCase -{ - /** - * @var Blacklist - */ - private $blacklist; - - protected function setUp(): void - { - $this->blacklist = new Blacklist; - } - - public function testStaticAttributes(): void - { - SnapshotClass::init(); - - $this->blacklistAllLoadedClassesExceptSnapshotClass(); - - $snapshot = new Snapshot($this->blacklist, false, true, false, false, false, false, false, false, false); - - $expected = [ - SnapshotClass::class => [ - 'string' => 'string', - 'objects' => [new \stdClass], - ], - ]; - - $this->assertEquals($expected, $snapshot->staticAttributes()); - } - - public function testConstants(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, true, false, false, false, false, false, false); - - $this->assertArrayHasKey('GLOBALSTATE_TESTSUITE', $snapshot->constants()); - } - - public function testFunctions(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, false, true, false, false, false, false, false); - $functions = $snapshot->functions(); - - $this->assertContains('sebastianbergmann\globalstate\testfixture\snapshotfunction', $functions); - $this->assertNotContains('assert', $functions); - } - - public function testClasses(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, false, false, true, false, false, false, false); - $classes = $snapshot->classes(); - - $this->assertContains(TestCase::class, $classes); - $this->assertNotContains(Exception::class, $classes); - } - - public function testInterfaces(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, true, false, false, false); - $interfaces = $snapshot->interfaces(); - - $this->assertContains(BlacklistedInterface::class, $interfaces); - $this->assertNotContains(\Countable::class, $interfaces); - } - - public function testTraits(): void - { - \spl_autoload_call('SebastianBergmann\GlobalState\TestFixture\SnapshotTrait'); - - $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, false, true, false, false); - - $this->assertContains(SnapshotTrait::class, $snapshot->traits()); - } - - public function testIniSettings(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, false, false, true, false); - $iniSettings = $snapshot->iniSettings(); - - $this->assertArrayHasKey('date.timezone', $iniSettings); - $this->assertEquals('Etc/UTC', $iniSettings['date.timezone']); - } - - public function testIncludedFiles(): void - { - $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, false, false, false, true); - $this->assertContains(__FILE__, $snapshot->includedFiles()); - } - - private function blacklistAllLoadedClassesExceptSnapshotClass(): void - { - foreach (\get_declared_classes() as $class) { - if ($class === SnapshotClass::class) { - continue; - } - - $this->blacklist->addClass($class); - } - } -} diff --git a/vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php b/vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php deleted file mode 100644 index 585c39660..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -class BlacklistedChildClass extends BlacklistedClass -{ -} diff --git a/vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php b/vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php deleted file mode 100644 index c1dc25983..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -class BlacklistedClass -{ - private static $attribute; -} diff --git a/vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php b/vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php deleted file mode 100644 index c42751edd..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -class BlacklistedImplementor implements BlacklistedInterface -{ - private static $attribute; -} diff --git a/vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php b/vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php deleted file mode 100644 index f531a3aba..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -interface BlacklistedInterface -{ -} diff --git a/vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php b/vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php deleted file mode 100644 index bf3305d59..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -class SnapshotClass -{ - private static $string = 'string'; - - private static $closures = []; - - private static $files = []; - - private static $resources = []; - - private static $objects = []; - - public static function init(): void - { - self::$closures[] = function (): void { - }; - - self::$files[] = new \SplFileInfo(__FILE__); - - self::$resources[] = \fopen('php://memory', 'r'); - - self::$objects[] = new \stdClass; - } -} diff --git a/vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php b/vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php deleted file mode 100644 index 42eafd090..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -use DomDocument; - -class SnapshotDomDocument extends DomDocument -{ -} diff --git a/vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php b/vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php deleted file mode 100644 index b3e8d007a..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -function snapshotFunction(): void -{ -} diff --git a/vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php b/vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php deleted file mode 100644 index c3490a6ef..000000000 --- a/vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/global-state. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\GlobalState\TestFixture; - -trait SnapshotTrait -{ -} diff --git a/vendor/sebastian/lines-of-code/.psalm/baseline.xml b/vendor/sebastian/lines-of-code/.psalm/baseline.xml new file mode 100644 index 000000000..77e688e07 --- /dev/null +++ b/vendor/sebastian/lines-of-code/.psalm/baseline.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/> diff --git a/vendor/sebastian/lines-of-code/.psalm/config.xml b/vendor/sebastian/lines-of-code/.psalm/config.xml new file mode 100644 index 000000000..15abef058 --- /dev/null +++ b/vendor/sebastian/lines-of-code/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + totallyTyped="true" + errorBaseline=".psalm/baseline.xml" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/lines-of-code/ChangeLog.md b/vendor/sebastian/lines-of-code/ChangeLog.md new file mode 100644 index 000000000..39bcaad49 --- /dev/null +++ b/vendor/sebastian/lines-of-code/ChangeLog.md @@ -0,0 +1,34 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [1.0.3] - 2020-11-28 + +### Fixed + +* Files that do not contain a newline were not handled correctly + +### Changed + +* A line of code is no longer considered to be a Logical Line of Code if it does not contain an `Expr` node + +## [1.0.2] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\LinesOfCode\Exception` now correctly extends `\Throwable` + +## [1.0.1] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [1.0.0] - 2020-07-22 + +* Initial release + +[1.0.3]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/sebastianbergmann/lines-of-code/compare/f959e71f00e591288acc024afe9cb966c6cf9bd6...1.0.0 diff --git a/vendor/sebastian/lines-of-code/LICENSE b/vendor/sebastian/lines-of-code/LICENSE new file mode 100644 index 000000000..d170181fa --- /dev/null +++ b/vendor/sebastian/lines-of-code/LICENSE @@ -0,0 +1,33 @@ +sebastian/lines-of-code + +Copyright (c) 2020, Sebastian Bergmann <sebastian@phpunit.de>. +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/sebastian/lines-of-code/README.md b/vendor/sebastian/lines-of-code/README.md new file mode 100644 index 000000000..9457ef5a7 --- /dev/null +++ b/vendor/sebastian/lines-of-code/README.md @@ -0,0 +1,22 @@ +# sebastian/lines-of-code + +Library for counting the lines of code in PHP source code. + +[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/lines-of-code.svg?style=flat-square)](https://packagist.org/packages/sebastian/lines-of-code) +[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/) +[![CI Status](https://github.com/sebastianbergmann/lines-of-code/workflows/CI/badge.svg?branch=master&event=push)](https://phpunit.de/build-status.html) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/lines-of-code/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/lines-of-code) + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + +``` +composer require sebastian/lines-of-code +``` + +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 sebastian/lines-of-code +``` diff --git a/vendor/sebastian/lines-of-code/composer.json b/vendor/sebastian/lines-of-code/composer.json new file mode 100644 index 000000000..95bb9e363 --- /dev/null +++ b/vendor/sebastian/lines-of-code/composer.json @@ -0,0 +1,42 @@ +{ + "name": "sebastian/lines-of-code", + "description": "Library for counting the lines of code in PHP source code", + "type": "library", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues" + }, + "prefer-stable": true, + "require": { + "php": ">=7.3", + "nikic/php-parser": "^4.6" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + } +} diff --git a/vendor/sebastian/lines-of-code/src/Counter.php b/vendor/sebastian/lines-of-code/src/Counter.php new file mode 100644 index 000000000..cfe5e20a7 --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/Counter.php @@ -0,0 +1,91 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +use function substr_count; +use PhpParser\Error; +use PhpParser\Lexer; +use PhpParser\Node; +use PhpParser\NodeTraverser; +use PhpParser\Parser; +use PhpParser\ParserFactory; + +final class Counter +{ + /** + * @throws RuntimeException + */ + public function countInSourceFile(string $sourceFile): LinesOfCode + { + return $this->countInSourceString(file_get_contents($sourceFile)); + } + + /** + * @throws RuntimeException + */ + public function countInSourceString(string $source): LinesOfCode + { + $linesOfCode = substr_count($source, "\n"); + + if ($linesOfCode === 0 && !empty($source)) { + $linesOfCode = 1; + } + + try { + $nodes = $this->parser()->parse($source); + + assert($nodes !== null); + + return $this->countInAbstractSyntaxTree($linesOfCode, $nodes); + + // @codeCoverageIgnoreStart + } catch (Error $error) { + throw new RuntimeException( + $error->getMessage(), + (int) $error->getCode(), + $error + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * @param Node[] $nodes + * + * @throws RuntimeException + */ + public function countInAbstractSyntaxTree(int $linesOfCode, array $nodes): LinesOfCode + { + $traverser = new NodeTraverser; + $visitor = new LineCountingVisitor($linesOfCode); + + $traverser->addVisitor($visitor); + + try { + /* @noinspection UnusedFunctionResultInspection */ + $traverser->traverse($nodes); + // @codeCoverageIgnoreStart + } catch (Error $error) { + throw new RuntimeException( + $error->getMessage(), + (int) $error->getCode(), + $error + ); + } + // @codeCoverageIgnoreEnd + + return $visitor->result(); + } + + private function parser(): Parser + { + return (new ParserFactory)->create(ParserFactory::PREFER_PHP7, new Lexer); + } +} diff --git a/vendor/sebastian/lines-of-code/src/Exception/Exception.php b/vendor/sebastian/lines-of-code/src/Exception/Exception.php new file mode 100644 index 000000000..11d543aa7 --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/Exception/Exception.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +use Throwable; + +interface Exception extends Throwable +{ +} diff --git a/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php b/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php new file mode 100644 index 000000000..46a5c1b1f --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +use LogicException; + +final class IllogicalValuesException extends LogicException implements Exception +{ +} diff --git a/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php b/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php new file mode 100644 index 000000000..40d27e1f0 --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php @@ -0,0 +1,16 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +use InvalidArgumentException; + +final class NegativeValueException extends InvalidArgumentException implements Exception +{ +} diff --git a/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php b/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php new file mode 100644 index 000000000..4e6d66d0d --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php @@ -0,0 +1,14 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +final class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php b/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php new file mode 100644 index 000000000..ff433b2fc --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php @@ -0,0 +1,82 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +use function array_merge; +use function array_unique; +use function count; +use PhpParser\Comment; +use PhpParser\Node; +use PhpParser\Node\Expr; +use PhpParser\NodeVisitorAbstract; + +final class LineCountingVisitor extends NodeVisitorAbstract +{ + /** + * @var int + */ + private $linesOfCode; + + /** + * @var Comment[] + */ + private $comments = []; + + /** + * @var int[] + */ + private $linesWithStatements = []; + + public function __construct(int $linesOfCode) + { + $this->linesOfCode = $linesOfCode; + } + + public function enterNode(Node $node): void + { + $this->comments = array_merge($this->comments, $node->getComments()); + + if (!$node instanceof Expr) { + return; + } + + $this->linesWithStatements[] = $node->getStartLine(); + } + + public function result(): LinesOfCode + { + $commentLinesOfCode = 0; + + foreach ($this->comments() as $comment) { + $commentLinesOfCode += ($comment->getEndLine() - $comment->getStartLine() + 1); + } + + return new LinesOfCode( + $this->linesOfCode, + $commentLinesOfCode, + $this->linesOfCode - $commentLinesOfCode, + count(array_unique($this->linesWithStatements)) + ); + } + + /** + * @return Comment[] + */ + private function comments(): array + { + $comments = []; + + foreach ($this->comments as $comment) { + $comments[$comment->getStartLine() . '_' . $comment->getStartTokenPos() . '_' . $comment->getEndLine() . '_' . $comment->getEndTokenPos()] = $comment; + } + + return $comments; + } +} diff --git a/vendor/sebastian/lines-of-code/src/LinesOfCode.php b/vendor/sebastian/lines-of-code/src/LinesOfCode.php new file mode 100644 index 000000000..41829981a --- /dev/null +++ b/vendor/sebastian/lines-of-code/src/LinesOfCode.php @@ -0,0 +1,98 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/lines-of-code. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\LinesOfCode; + +/** + * @psalm-immutable + */ +final class LinesOfCode +{ + /** + * @var int + */ + private $linesOfCode; + + /** + * @var int + */ + private $commentLinesOfCode; + + /** + * @var int + */ + private $nonCommentLinesOfCode; + + /** + * @var int + */ + private $logicalLinesOfCode; + + /** + * @throws IllogicalValuesException + * @throws NegativeValueException + */ + public function __construct(int $linesOfCode, int $commentLinesOfCode, int $nonCommentLinesOfCode, int $logicalLinesOfCode) + { + if ($linesOfCode < 0) { + throw new NegativeValueException('$linesOfCode must not be negative'); + } + + if ($commentLinesOfCode < 0) { + throw new NegativeValueException('$commentLinesOfCode must not be negative'); + } + + if ($nonCommentLinesOfCode < 0) { + throw new NegativeValueException('$nonCommentLinesOfCode must not be negative'); + } + + if ($logicalLinesOfCode < 0) { + throw new NegativeValueException('$logicalLinesOfCode must not be negative'); + } + + if ($linesOfCode - $commentLinesOfCode !== $nonCommentLinesOfCode) { + throw new IllogicalValuesException('$linesOfCode !== $commentLinesOfCode + $nonCommentLinesOfCode'); + } + + $this->linesOfCode = $linesOfCode; + $this->commentLinesOfCode = $commentLinesOfCode; + $this->nonCommentLinesOfCode = $nonCommentLinesOfCode; + $this->logicalLinesOfCode = $logicalLinesOfCode; + } + + public function linesOfCode(): int + { + return $this->linesOfCode; + } + + public function commentLinesOfCode(): int + { + return $this->commentLinesOfCode; + } + + public function nonCommentLinesOfCode(): int + { + return $this->nonCommentLinesOfCode; + } + + public function logicalLinesOfCode(): int + { + return $this->logicalLinesOfCode; + } + + public function plus(self $other): self + { + return new self( + $this->linesOfCode() + $other->linesOfCode(), + $this->commentLinesOfCode() + $other->commentLinesOfCode(), + $this->nonCommentLinesOfCode() + $other->nonCommentLinesOfCode(), + $this->logicalLinesOfCode() + $other->logicalLinesOfCode(), + ); + } +} diff --git a/vendor/sebastian/object-enumerator/.gitignore b/vendor/sebastian/object-enumerator/.gitignore deleted file mode 100644 index 5d748a85c..000000000 --- a/vendor/sebastian/object-enumerator/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.idea -composer.lock -composer.phar -vendor/ -cache.properties -build/LICENSE -build/README.md -build/*.tgz diff --git a/vendor/sebastian/object-enumerator/.php_cs b/vendor/sebastian/object-enumerator/.php_cs deleted file mode 100644 index b7393bdac..000000000 --- a/vendor/sebastian/object-enumerator/.php_cs +++ /dev/null @@ -1,67 +0,0 @@ -<?php -$finder = Symfony\CS\Finder\DefaultFinder::create() - ->files() - ->in('src') - ->in('tests') - ->name('*.php'); - -return Symfony\CS\Config\Config::create() - ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) - ->fixers( - array( - 'align_double_arrow', - 'align_equals', - 'braces', - 'concat_with_spaces', - 'duplicate_semicolon', - 'elseif', - 'empty_return', - 'encoding', - 'eof_ending', - 'extra_empty_lines', - 'function_call_space', - 'function_declaration', - 'indentation', - 'join_function', - 'line_after_namespace', - 'linefeed', - 'list_commas', - 'lowercase_constants', - 'lowercase_keywords', - 'method_argument_space', - 'multiple_use', - 'namespace_no_leading_whitespace', - 'no_blank_lines_after_class_opening', - 'no_empty_lines_after_phpdocs', - 'parenthesis', - 'php_closing_tag', - 'phpdoc_indent', - 'phpdoc_no_access', - 'phpdoc_no_empty_return', - 'phpdoc_no_package', - 'phpdoc_params', - 'phpdoc_scalar', - 'phpdoc_separation', - 'phpdoc_to_comment', - 'phpdoc_trim', - 'phpdoc_types', - 'phpdoc_var_without_name', - 'remove_lines_between_uses', - 'return', - 'self_accessor', - 'short_array_syntax', - 'short_tag', - 'single_line_after_imports', - 'single_quote', - 'spaces_before_semicolon', - 'spaces_cast', - 'ternary_spaces', - 'trailing_spaces', - 'trim_array_spaces', - 'unused_use', - 'visibility', - 'whitespacy_lines' - ) - ) - ->finder($finder); - diff --git a/vendor/sebastian/object-enumerator/.psalm/baseline.xml b/vendor/sebastian/object-enumerator/.psalm/baseline.xml new file mode 100644 index 000000000..180b3f803 --- /dev/null +++ b/vendor/sebastian/object-enumerator/.psalm/baseline.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"> + <file src="src/Enumerator.php"> + <DocblockTypeContradiction occurrences="2"> + <code>!is_array($variable) && !is_object($variable)</code> + <code>is_object($variable)</code> + </DocblockTypeContradiction> + </file> +</files> diff --git a/vendor/sebastian/object-enumerator/.psalm/config.xml b/vendor/sebastian/object-enumerator/.psalm/config.xml new file mode 100644 index 000000000..2a4b16f22 --- /dev/null +++ b/vendor/sebastian/object-enumerator/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + totallyTyped="false" + errorBaseline=".psalm/baseline.xml" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/object-enumerator/.travis.yml b/vendor/sebastian/object-enumerator/.travis.yml deleted file mode 100644 index 5ea0f5311..000000000 --- a/vendor/sebastian/object-enumerator/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -language: php - -php: - - 7.0 - - 7.0snapshot - - 7.1 - - 7.1snapshot - - master - -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: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false diff --git a/vendor/sebastian/object-enumerator/ChangeLog.md b/vendor/sebastian/object-enumerator/ChangeLog.md index 2bf007bd6..886554189 100644 --- a/vendor/sebastian/object-enumerator/ChangeLog.md +++ b/vendor/sebastian/object-enumerator/ChangeLog.md @@ -2,11 +2,35 @@ All notable changes to `sebastianbergmann/object-enumerator` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [3.0.4] - 2020-11-30 +## [4.0.4] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\ObjectEnumerator\Exception` now correctly extends `\Throwable` + +## [4.0.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.0` to `>=7.0` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [4.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [4.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [4.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 ## [3.0.3] - 2017-08-03 @@ -50,7 +74,11 @@ All notable changes to `sebastianbergmann/object-enumerator` are documented in t * Initial release -[3.0.4]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.3...3.0.4 +[4.0.4]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.3...4.0.0 [3.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.2...3.0.3 [3.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.1...3.0.2 [3.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.0...3.0.1 diff --git a/vendor/sebastian/object-enumerator/LICENSE b/vendor/sebastian/object-enumerator/LICENSE index ab8b70489..1389ad396 100644 --- a/vendor/sebastian/object-enumerator/LICENSE +++ b/vendor/sebastian/object-enumerator/LICENSE @@ -1,6 +1,6 @@ Object Enumerator -Copyright (c) 2016-2017, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2016-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/object-enumerator/README.md b/vendor/sebastian/object-enumerator/README.md index be6f2dd26..afca0177b 100644 --- a/vendor/sebastian/object-enumerator/README.md +++ b/vendor/sebastian/object-enumerator/README.md @@ -1,4 +1,7 @@ -# Object Enumerator +# sebastian/object-enumerator + +[![CI Status](https://github.com/sebastianbergmann/object-enumerator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-enumerator/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/object-enumerator/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/object-enumerator) Traverses array structures and object graphs to enumerate all referenced objects. @@ -6,9 +9,12 @@ Traverses array structures and object graphs to enumerate all referenced objects You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/object-enumerator +``` +composer require sebastian/object-enumerator +``` 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 sebastian/object-enumerator - +``` +composer require --dev sebastian/object-enumerator +``` diff --git a/vendor/sebastian/object-enumerator/build.xml b/vendor/sebastian/object-enumerator/build.xml deleted file mode 100644 index 086694f67..000000000 --- a/vendor/sebastian/object-enumerator/build.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="object-enumerator" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - <arg value="--optimize-autoloader"/> - <arg value="--prefer-stable"/> - </exec> - </target> -</project> - diff --git a/vendor/sebastian/object-enumerator/composer.json b/vendor/sebastian/object-enumerator/composer.json index 33a946597..d68a21330 100644 --- a/vendor/sebastian/object-enumerator/composer.json +++ b/vendor/sebastian/object-enumerator/composer.json @@ -9,13 +9,21 @@ "email": "sebastian@phpunit.de" } ], + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ @@ -29,7 +37,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } } } diff --git a/vendor/sebastian/object-enumerator/phpunit.xml b/vendor/sebastian/object-enumerator/phpunit.xml index c401ba82c..7be976b13 100644 --- a/vendor/sebastian/object-enumerator/phpunit.xml +++ b/vendor/sebastian/object-enumerator/phpunit.xml @@ -1,20 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" bootstrap="vendor/autoload.php" - backupGlobals="false" + executionOrder="depends,defects" + forceCoversAnnotation="true" beStrictAboutCoversAnnotation="true" beStrictAboutOutputDuringTests="true" - beStrictAboutTestsThatDoNotTestAnything="true" beStrictAboutTodoAnnotatedTests="true" + failOnRisky="true" + failOnWarning="true" verbose="true"> - <testsuite> - <directory suffix="Test.php">tests</directory> - </testsuite> + <testsuites> + <testsuite name="default"> + <directory suffix="Test.php">tests</directory> + </testsuite> + </testsuites> - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> + <coverage processUncoveredFiles="true"> + <include> <directory suffix=".php">src</directory> - </whitelist> - </filter> + </include> + </coverage> </phpunit> diff --git a/vendor/sebastian/object-enumerator/src/Enumerator.php b/vendor/sebastian/object-enumerator/src/Enumerator.php index 3a40f6d98..de75d17c5 100644 --- a/vendor/sebastian/object-enumerator/src/Enumerator.php +++ b/vendor/sebastian/object-enumerator/src/Enumerator.php @@ -1,15 +1,18 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of Object Enumerator. + * This file is part of sebastian/object-enumerator. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\ObjectEnumerator; +use function array_merge; +use function func_get_args; +use function is_array; +use function is_object; use SebastianBergmann\ObjectReflector\ObjectReflector; use SebastianBergmann\RecursionContext\Context; diff --git a/vendor/sebastian/object-enumerator/src/Exception.php b/vendor/sebastian/object-enumerator/src/Exception.php index 903b0b110..2f09d70aa 100644 --- a/vendor/sebastian/object-enumerator/src/Exception.php +++ b/vendor/sebastian/object-enumerator/src/Exception.php @@ -1,15 +1,16 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of Object Enumerator. + * This file is part of sebastian/object-enumerator. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\ObjectEnumerator; -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php b/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php index 5250c1a16..ce2037cdb 100644 --- a/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php +++ b/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php @@ -1,13 +1,12 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of Object Enumerator. + * This file is part of sebastian/object-enumerator. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\ObjectEnumerator; class InvalidArgumentException extends \InvalidArgumentException implements Exception diff --git a/vendor/sebastian/object-enumerator/tests/EnumeratorTest.php b/vendor/sebastian/object-enumerator/tests/EnumeratorTest.php deleted file mode 100644 index a6bd29a6a..000000000 --- a/vendor/sebastian/object-enumerator/tests/EnumeratorTest.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/* - * This file is part of Object Enumerator. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\ObjectEnumerator; - -use SebastianBergmann\ObjectEnumerator\Fixtures\ExceptionThrower; -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\ObjectEnumerator\Enumerator - */ -class EnumeratorTest extends TestCase -{ - /** - * @var Enumerator - */ - private $enumerator; - - protected function setUp() - { - $this->enumerator = new Enumerator; - } - - public function testEnumeratesSingleObject() - { - $a = new \stdClass; - - $objects = $this->enumerator->enumerate($a); - - $this->assertCount(1, $objects); - $this->assertSame($a, $objects[0]); - } - - public function testEnumeratesArrayWithSingleObject() - { - $a = new \stdClass; - - $objects = $this->enumerator->enumerate([$a]); - - $this->assertCount(1, $objects); - $this->assertSame($a, $objects[0]); - } - - public function testEnumeratesArrayWithTwoReferencesToTheSameObject() - { - $a = new \stdClass; - - $objects = $this->enumerator->enumerate([$a, $a]); - - $this->assertCount(1, $objects); - $this->assertSame($a, $objects[0]); - } - - public function testEnumeratesArrayOfObjects() - { - $a = new \stdClass; - $b = new \stdClass; - - $objects = $this->enumerator->enumerate([$a, $b, null]); - - $this->assertCount(2, $objects); - $this->assertSame($a, $objects[0]); - $this->assertSame($b, $objects[1]); - } - - public function testEnumeratesObjectWithAggregatedObject() - { - $a = new \stdClass; - $b = new \stdClass; - - $a->b = $b; - $a->c = null; - - $objects = $this->enumerator->enumerate($a); - - $this->assertCount(2, $objects); - $this->assertSame($a, $objects[0]); - $this->assertSame($b, $objects[1]); - } - - public function testEnumeratesObjectWithAggregatedObjectsInArray() - { - $a = new \stdClass; - $b = new \stdClass; - - $a->b = [$b]; - - $objects = $this->enumerator->enumerate($a); - - $this->assertCount(2, $objects); - $this->assertSame($a, $objects[0]); - $this->assertSame($b, $objects[1]); - } - - public function testEnumeratesObjectsWithCyclicReferences() - { - $a = new \stdClass; - $b = new \stdClass; - - $a->b = $b; - $b->a = $a; - - $objects = $this->enumerator->enumerate([$a, $b]); - - $this->assertCount(2, $objects); - $this->assertSame($a, $objects[0]); - $this->assertSame($b, $objects[1]); - } - - public function testEnumeratesClassThatThrowsException() - { - $thrower = new ExceptionThrower(); - - $objects = $this->enumerator->enumerate($thrower); - - $this->assertSame($thrower, $objects[0]); - } - - public function testExceptionIsRaisedForInvalidArgument() - { - $this->expectException(InvalidArgumentException::class); - - $this->enumerator->enumerate(null); - } - - public function testExceptionIsRaisedForInvalidArgument2() - { - $this->expectException(InvalidArgumentException::class); - - $this->enumerator->enumerate([], ''); - } -} diff --git a/vendor/sebastian/object-enumerator/tests/_fixture/ExceptionThrower.php b/vendor/sebastian/object-enumerator/tests/_fixture/ExceptionThrower.php deleted file mode 100644 index a75f58522..000000000 --- a/vendor/sebastian/object-enumerator/tests/_fixture/ExceptionThrower.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/* - * This file is part of Object Enumerator. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\ObjectEnumerator\Fixtures; - -use RuntimeException; - -class ExceptionThrower -{ - private $property; - - public function __construct() - { - unset($this->property); - } - - public function __get($property) - { - throw new RuntimeException; - } -} diff --git a/vendor/sebastian/object-reflector/.gitignore b/vendor/sebastian/object-reflector/.gitignore deleted file mode 100644 index c3e9d7e3c..000000000 --- a/vendor/sebastian/object-reflector/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.idea -/.php_cs.cache -/composer.lock -/vendor diff --git a/vendor/sebastian/object-reflector/.php_cs b/vendor/sebastian/object-reflector/.php_cs deleted file mode 100644 index cb814f395..000000000 --- a/vendor/sebastian/object-reflector/.php_cs +++ /dev/null @@ -1,79 +0,0 @@ -<?php -$header = <<<'EOF' -This file is part of object-reflector. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'align_double_arrow' => true, - 'align_equals' => true - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_return' => true, - 'braces' => true, - 'cast_spaces' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_strict_types' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - #'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'line_ending' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'method_argument_space' => true, - 'no_alias_functions' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_closing_tag' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_consecutive_blank_lines' => true, - 'no_leading_namespace_whitespace' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_whitespace' => true, - 'no_unused_imports' => true, - 'no_whitespace_in_blank_line' => true, - 'phpdoc_align' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_types' => true, - 'phpdoc_var_without_name' => true, - 'self_accessor' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'ternary_operator_spaces' => true, - 'trim_array_spaces' => true, - 'visibility_required' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ->name('*.php') - ); diff --git a/vendor/sebastian/object-reflector/.psalm/baseline.xml b/vendor/sebastian/object-reflector/.psalm/baseline.xml new file mode 100644 index 000000000..965c12757 --- /dev/null +++ b/vendor/sebastian/object-reflector/.psalm/baseline.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"> + <file src="src/ObjectReflector.php"> + <DocblockTypeContradiction occurrences="1"> + <code>is_object($object)</code> + </DocblockTypeContradiction> + </file> +</files> diff --git a/vendor/sebastian/object-reflector/.psalm/config.xml b/vendor/sebastian/object-reflector/.psalm/config.xml new file mode 100644 index 000000000..2a4b16f22 --- /dev/null +++ b/vendor/sebastian/object-reflector/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + totallyTyped="false" + errorBaseline=".psalm/baseline.xml" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/object-reflector/.travis.yml b/vendor/sebastian/object-reflector/.travis.yml deleted file mode 100644 index 5ea0f5311..000000000 --- a/vendor/sebastian/object-reflector/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -language: php - -php: - - 7.0 - - 7.0snapshot - - 7.1 - - 7.1snapshot - - master - -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: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false diff --git a/vendor/sebastian/object-reflector/ChangeLog.md b/vendor/sebastian/object-reflector/ChangeLog.md index 89b034628..7fa62e90f 100644 --- a/vendor/sebastian/object-reflector/ChangeLog.md +++ b/vendor/sebastian/object-reflector/ChangeLog.md @@ -2,17 +2,41 @@ All notable changes to `sebastianbergmann/object-reflector` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## 1.1.2 - 2020-11-30 +## [2.0.4] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\ObjectReflector\Exception` now correctly extends `\Throwable` + +## [2.0.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.0` to `>=7.1` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` -## 1.1.1 - 2017-03-29 +## [2.0.2] - 2020-06-26 -* Fixed [#1](https://github.com/sebastianbergmann/object-reflector/issues/1): Attributes that with non-string names are not handled correctly +### Added -## 1.1.0 - 2017-03-16 +* This component is now supported on PHP 8 + +## [2.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [2.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2 + +## [1.1.1] - 2017-03-29 + +* Fixed [#1](https://github.com/sebastianbergmann/object-reflector/issues/1): Attributes with non-string names are not handled correctly + +## [1.1.0] - 2017-03-16 ### Changed @@ -22,6 +46,10 @@ All notable changes to `sebastianbergmann/object-reflector` are documented in th * Initial release -[1.1.2]: https://github.com/sebastianbergmann/object-enumerator/compare/1.1.1...1.1.2 -[1.1.1]: https://github.com/sebastianbergmann/object-enumerator/compare/1.1.0...1.1.1 -[1.1.0]: https://github.com/sebastianbergmann/object-enumerator/compare/1.0.0...1.1.0 +[2.0.4]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.1...2.0.0 +[1.1.1]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.0...1.1.1 +[1.1.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.0.0...1.1.0 diff --git a/vendor/sebastian/object-reflector/LICENSE b/vendor/sebastian/object-reflector/LICENSE index 54b1fd831..a80c16192 100644 --- a/vendor/sebastian/object-reflector/LICENSE +++ b/vendor/sebastian/object-reflector/LICENSE @@ -1,6 +1,6 @@ Object Reflector -Copyright (c) 2017, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2017-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/object-reflector/README.md b/vendor/sebastian/object-reflector/README.md index 13b24f1f8..b7d5ae95f 100644 --- a/vendor/sebastian/object-reflector/README.md +++ b/vendor/sebastian/object-reflector/README.md @@ -1,4 +1,7 @@ -# Object Reflector +# sebastian/object-reflector + +[![CI Status](https://github.com/sebastianbergmann/object-reflector/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-reflector/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/object-reflector/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/object-reflector) Allows reflection of object attributes, including inherited and non-public ones. @@ -6,9 +9,12 @@ Allows reflection of object attributes, including inherited and non-public ones. You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/object-reflector +``` +composer require sebastian/object-reflector +``` 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 sebastian/object-reflector - +``` +composer require --dev sebastian/object-reflector +``` diff --git a/vendor/sebastian/object-reflector/build.xml b/vendor/sebastian/object-reflector/build.xml deleted file mode 100644 index 3368432aa..000000000 --- a/vendor/sebastian/object-reflector/build.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="object-reflector" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - <arg value="--optimize-autoloader"/> - <arg value="--prefer-stable"/> - </exec> - </target> -</project> - diff --git a/vendor/sebastian/object-reflector/composer.json b/vendor/sebastian/object-reflector/composer.json index 14b7c5c6c..36a337885 100644 --- a/vendor/sebastian/object-reflector/composer.json +++ b/vendor/sebastian/object-reflector/composer.json @@ -9,11 +9,19 @@ "email": "sebastian@phpunit.de" } ], + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ @@ -27,7 +35,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } } } diff --git a/vendor/sebastian/object-reflector/phpunit.xml b/vendor/sebastian/object-reflector/phpunit.xml deleted file mode 100644 index 68febeb04..000000000 --- a/vendor/sebastian/object-reflector/phpunit.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd" - bootstrap="vendor/autoload.php" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuite> - <directory suffix="Test.php">tests</directory> - </testsuite> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/object-reflector/src/Exception.php b/vendor/sebastian/object-reflector/src/Exception.php index 9964b0924..36f8efeca 100644 --- a/vendor/sebastian/object-reflector/src/Exception.php +++ b/vendor/sebastian/object-reflector/src/Exception.php @@ -1,17 +1,16 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of object-reflector. + * This file is part of sebastian/object-reflector. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - -declare(strict_types=1); - namespace SebastianBergmann\ObjectReflector; -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/object-reflector/src/InvalidArgumentException.php b/vendor/sebastian/object-reflector/src/InvalidArgumentException.php index e63c5d5ee..34b4cca19 100644 --- a/vendor/sebastian/object-reflector/src/InvalidArgumentException.php +++ b/vendor/sebastian/object-reflector/src/InvalidArgumentException.php @@ -1,15 +1,12 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of object-reflector. + * This file is part of sebastian/object-reflector. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - -declare(strict_types=1); - namespace SebastianBergmann\ObjectReflector; class InvalidArgumentException extends \InvalidArgumentException implements Exception diff --git a/vendor/sebastian/object-reflector/src/ObjectReflector.php b/vendor/sebastian/object-reflector/src/ObjectReflector.php index 8b0390ad4..4abb5f55f 100644 --- a/vendor/sebastian/object-reflector/src/ObjectReflector.php +++ b/vendor/sebastian/object-reflector/src/ObjectReflector.php @@ -1,24 +1,24 @@ -<?php +<?php declare(strict_types=1); /* - * This file is part of object-reflector. + * This file is part of sebastian/object-reflector. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - -declare(strict_types=1); - namespace SebastianBergmann\ObjectReflector; +use function count; +use function explode; +use function get_class; +use function is_object; + class ObjectReflector { /** * @param object $object * - * @return array - * * @throws InvalidArgumentException */ public function getAttributes($object): array diff --git a/vendor/sebastian/object-reflector/tests/ObjectReflectorTest.php b/vendor/sebastian/object-reflector/tests/ObjectReflectorTest.php deleted file mode 100644 index ba0d97fc1..000000000 --- a/vendor/sebastian/object-reflector/tests/ObjectReflectorTest.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/* - * This file is part of object-reflector. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace SebastianBergmann\ObjectReflector; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\ObjectReflector\TestFixture\ChildClass; -use SebastianBergmann\ObjectReflector\TestFixture\ClassWithIntegerAttributeName; - -/** - * @covers SebastianBergmann\ObjectReflector\ObjectReflector - */ -class ObjectReflectorTest extends TestCase -{ - /** - * @var ObjectReflector - */ - private $objectReflector; - - protected function setUp()/*: void */ - { - $this->objectReflector = new ObjectReflector; - } - - public function testReflectsAttributesOfObject()/*: void */ - { - $o = new ChildClass; - - $this->assertEquals( - [ - 'privateInChild' => 'private', - 'protectedInChild' => 'protected', - 'publicInChild' => 'public', - 'undeclared' => 'undeclared', - 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::privateInParent' => 'private', - 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::protectedInParent' => 'protected', - 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::publicInParent' => 'public', - ], - $this->objectReflector->getAttributes($o) - ); - } - - public function testReflectsAttributeWithIntegerName()/*: void */ - { - $o = new ClassWithIntegerAttributeName; - - $this->assertEquals( - [ - 1 => 2 - ], - $this->objectReflector->getAttributes($o) - ); - } - - public function testRaisesExceptionWhenPassedArgumentIsNotAnObject()/*: void */ - { - $this->expectException(InvalidArgumentException::class); - - $this->objectReflector->getAttributes(null); - } -} diff --git a/vendor/sebastian/object-reflector/tests/_fixture/ChildClass.php b/vendor/sebastian/object-reflector/tests/_fixture/ChildClass.php deleted file mode 100644 index 5ee05f36a..000000000 --- a/vendor/sebastian/object-reflector/tests/_fixture/ChildClass.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/* - * This file is part of object-reflector. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace SebastianBergmann\ObjectReflector\TestFixture; - -class ChildClass extends ParentClass -{ - private $privateInChild = 'private'; - private $protectedInChild = 'protected'; - private $publicInChild = 'public'; - - public function __construct() - { - $this->undeclared = 'undeclared'; - } -} diff --git a/vendor/sebastian/object-reflector/tests/_fixture/ClassWithIntegerAttributeName.php b/vendor/sebastian/object-reflector/tests/_fixture/ClassWithIntegerAttributeName.php deleted file mode 100644 index ee49df3b1..000000000 --- a/vendor/sebastian/object-reflector/tests/_fixture/ClassWithIntegerAttributeName.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/* - * This file is part of object-reflector. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace SebastianBergmann\ObjectReflector\TestFixture; - -class ClassWithIntegerAttributeName -{ - public function __construct() - { - $i = 1; - $this->$i = 2; - } -} diff --git a/vendor/sebastian/object-reflector/tests/_fixture/ParentClass.php b/vendor/sebastian/object-reflector/tests/_fixture/ParentClass.php deleted file mode 100644 index b6886be95..000000000 --- a/vendor/sebastian/object-reflector/tests/_fixture/ParentClass.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php -/* - * This file is part of object-reflector. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace SebastianBergmann\ObjectReflector\TestFixture; - -class ParentClass -{ - private $privateInParent = 'private'; - private $protectedInParent = 'protected'; - private $publicInParent = 'public'; -} diff --git a/vendor/sebastian/recursion-context/.gitignore b/vendor/sebastian/recursion-context/.gitignore deleted file mode 100644 index 77aae3df6..000000000 --- a/vendor/sebastian/recursion-context/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/.idea -/composer.lock -/vendor diff --git a/vendor/sebastian/recursion-context/.psalm/baseline.xml b/vendor/sebastian/recursion-context/.psalm/baseline.xml new file mode 100644 index 000000000..b946db1a5 --- /dev/null +++ b/vendor/sebastian/recursion-context/.psalm/baseline.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"> + <file src="src/Context.php"> + <RedundantConditionGivenDocblockType occurrences="1"> + <code>is_array($array)</code> + </RedundantConditionGivenDocblockType> + </file> +</files> diff --git a/vendor/sebastian/recursion-context/.psalm/config.xml b/vendor/sebastian/recursion-context/.psalm/config.xml new file mode 100644 index 000000000..2a4b16f22 --- /dev/null +++ b/vendor/sebastian/recursion-context/.psalm/config.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<psalm + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" + xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + resolveFromConfigFile="false" + totallyTyped="false" + errorBaseline=".psalm/baseline.xml" +> + <projectFiles> + <directory name="src" /> + <ignoreFiles> + <directory name="vendor" /> + </ignoreFiles> + </projectFiles> +</psalm> diff --git a/vendor/sebastian/recursion-context/.travis.yml b/vendor/sebastian/recursion-context/.travis.yml deleted file mode 100644 index ee0e40b21..000000000 --- a/vendor/sebastian/recursion-context/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: php - -php: - - 7.0 - - 7.0snapshot - - 7.1 - - 7.1snapshot - - master - -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: - - ./vendor/bin/phpunit - -notifications: - email: false diff --git a/vendor/sebastian/recursion-context/ChangeLog.md b/vendor/sebastian/recursion-context/ChangeLog.md new file mode 100644 index 000000000..2fbacc2c3 --- /dev/null +++ b/vendor/sebastian/recursion-context/ChangeLog.md @@ -0,0 +1,33 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [4.0.4] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\RecursionContext\Exception` now correctly extends `\Throwable` + +## [4.0.3] - 2020-09-28 + +### Changed + +* [#21](https://github.com/sebastianbergmann/recursion-context/pull/21): Add type annotations for in/out parameters +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [4.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [4.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +[4.0.4]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.0...4.0.1 diff --git a/vendor/sebastian/recursion-context/LICENSE b/vendor/sebastian/recursion-context/LICENSE index 00bfec5e8..0faffbbb2 100644 --- a/vendor/sebastian/recursion-context/LICENSE +++ b/vendor/sebastian/recursion-context/LICENSE @@ -1,6 +1,6 @@ Recursion Context -Copyright (c) 2002-2017, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2002-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/recursion-context/README.md b/vendor/sebastian/recursion-context/README.md index 0b8949626..8e4d2a084 100644 --- a/vendor/sebastian/recursion-context/README.md +++ b/vendor/sebastian/recursion-context/README.md @@ -1,14 +1,18 @@ -# Recursion Context +# sebastian/recursion-context -... +[![CI Status](https://github.com/sebastianbergmann/recursion-context/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/recursion-context/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/recursion-context/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/recursion-context) ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): - composer require sebastian/recursion-context +``` +composer require sebastian/recursion-context +``` 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 sebastian/recursion-context - +``` +composer require --dev sebastian/recursion-context +``` diff --git a/vendor/sebastian/recursion-context/build.xml b/vendor/sebastian/recursion-context/build.xml deleted file mode 100644 index 896bd34ea..000000000 --- a/vendor/sebastian/recursion-context/build.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="recursion-context" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - <arg value="--optimize-autoloader"/> - <arg value="--prefer-stable"/> - </exec> - </target> -</project> diff --git a/vendor/sebastian/recursion-context/composer.json b/vendor/sebastian/recursion-context/composer.json index f2bef3621..8a5408232 100644 --- a/vendor/sebastian/recursion-context/composer.json +++ b/vendor/sebastian/recursion-context/composer.json @@ -17,11 +17,19 @@ "email": "aharvey@php.net" } ], + "prefer-stable": true, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "autoload": { "classmap": [ @@ -30,7 +38,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } } } diff --git a/vendor/sebastian/recursion-context/phpunit.xml b/vendor/sebastian/recursion-context/phpunit.xml deleted file mode 100644 index 68febeb04..000000000 --- a/vendor/sebastian/recursion-context/phpunit.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd" - bootstrap="vendor/autoload.php" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuite> - <directory suffix="Test.php">tests</directory> - </testsuite> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/recursion-context/src/Context.php b/vendor/sebastian/recursion-context/src/Context.php index 0b4b8a0dd..87fe7b04f 100644 --- a/vendor/sebastian/recursion-context/src/Context.php +++ b/vendor/sebastian/recursion-context/src/Context.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of the Recursion Context package. * @@ -7,9 +7,19 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\RecursionContext; +use const PHP_INT_MAX; +use const PHP_INT_MIN; +use function array_pop; +use function array_slice; +use function count; +use function is_array; +use function is_object; +use function random_int; +use function spl_object_hash; +use SplObjectStorage; + /** * A context containing previously processed arrays and objects * when recursively processing a value. @@ -22,33 +32,52 @@ final class Context private $arrays; /** - * @var \SplObjectStorage + * @var SplObjectStorage */ private $objects; /** - * Initialises the context + * Initialises the context. */ public function __construct() { - $this->arrays = array(); - $this->objects = new \SplObjectStorage; + $this->arrays = []; + $this->objects = new SplObjectStorage; + } + + /** + * @codeCoverageIgnore + */ + public function __destruct() + { + foreach ($this->arrays as &$array) { + if (is_array($array)) { + array_pop($array); + array_pop($array); + } + } } /** * Adds a value to the context. * - * @param array|object $value The value to add. - * - * @return int|string The ID of the stored value, either as a string or integer. + * @param array|object $value the value to add * * @throws InvalidArgumentException Thrown if $value is not an array or object + * + * @return bool|int|string the ID of the stored value, either as a string or integer + * + * @psalm-template T + * @psalm-param T $value + * @param-out T $value */ public function add(&$value) { if (is_array($value)) { return $this->addArray($value); - } elseif (is_object($value)) { + } + + if (is_object($value)) { return $this->addObject($value); } @@ -60,17 +89,23 @@ final class Context /** * Checks if the given value exists within the context. * - * @param array|object $value The value to check. - * - * @return int|string|false The string or integer ID of the stored value if it has already been seen, or false if the value is not stored. + * @param array|object $value the value to check * * @throws InvalidArgumentException Thrown if $value is not an array or object + * + * @return false|int|string the string or integer ID of the stored value if it has already been seen, or false if the value is not stored + * + * @psalm-template T + * @psalm-param T $value + * @param-out T $value */ public function contains(&$value) { if (is_array($value)) { return $this->containsArray($value); - } elseif (is_object($value)) { + } + + if (is_object($value)) { return $this->containsObject($value); } @@ -80,8 +115,6 @@ final class Context } /** - * @param array $array - * * @return bool|int */ private function addArray(array &$array) @@ -117,10 +150,8 @@ final class Context /** * @param object $object - * - * @return string */ - private function addObject($object) + private function addObject($object): string { if (!$this->objects->contains($object)) { $this->objects->attach($object); @@ -130,9 +161,7 @@ final class Context } /** - * @param array $array - * - * @return int|false + * @return false|int */ private function containsArray(array &$array) { @@ -144,7 +173,7 @@ final class Context /** * @param object $value * - * @return string|false + * @return false|string */ private function containsObject($value) { @@ -154,14 +183,4 @@ final class Context return false; } - - public function __destruct() - { - foreach ($this->arrays as &$array) { - if (is_array($array)) { - array_pop($array); - array_pop($array); - } - } - } } diff --git a/vendor/sebastian/recursion-context/src/Exception.php b/vendor/sebastian/recursion-context/src/Exception.php index 4a1557ba3..e3a9c017d 100644 --- a/vendor/sebastian/recursion-context/src/Exception.php +++ b/vendor/sebastian/recursion-context/src/Exception.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of the Recursion Context package. * @@ -7,11 +7,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\RecursionContext; -/** - */ -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/recursion-context/src/InvalidArgumentException.php b/vendor/sebastian/recursion-context/src/InvalidArgumentException.php index 032c50432..627c8bdf4 100644 --- a/vendor/sebastian/recursion-context/src/InvalidArgumentException.php +++ b/vendor/sebastian/recursion-context/src/InvalidArgumentException.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of the Recursion Context package. * @@ -7,11 +7,8 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ - namespace SebastianBergmann\RecursionContext; -/** - */ final class InvalidArgumentException extends \InvalidArgumentException implements Exception { } diff --git a/vendor/sebastian/recursion-context/tests/ContextTest.php b/vendor/sebastian/recursion-context/tests/ContextTest.php deleted file mode 100644 index 6e7af68a1..000000000 --- a/vendor/sebastian/recursion-context/tests/ContextTest.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php -/* - * This file is part of the Recursion Context package. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\RecursionContext; - -use PHPUnit\Framework\TestCase; - -/** - * @covers SebastianBergmann\RecursionContext\Context - */ -class ContextTest extends TestCase -{ - /** - * @var \SebastianBergmann\RecursionContext\Context - */ - private $context; - - protected function setUp() - { - $this->context = new Context(); - } - - public function failsProvider() - { - return array( - array(true), - array(false), - array(null), - array('string'), - array(1), - array(1.5), - array(fopen('php://memory', 'r')) - ); - } - - public function valuesProvider() - { - $obj2 = new \stdClass(); - $obj2->foo = 'bar'; - - $obj3 = (object) array(1,2,"Test\r\n",4,5,6,7,8); - - $obj = new \stdClass(); - //@codingStandardsIgnoreStart - $obj->null = null; - //@codingStandardsIgnoreEnd - $obj->boolean = true; - $obj->integer = 1; - $obj->double = 1.2; - $obj->string = '1'; - $obj->text = "this\nis\na\nvery\nvery\nvery\nvery\nvery\nvery\rlong\n\rtext"; - $obj->object = $obj2; - $obj->objectagain = $obj2; - $obj->array = array('foo' => 'bar'); - $obj->array2 = array(1,2,3,4,5,6); - $obj->array3 = array($obj, $obj2, $obj3); - $obj->self = $obj; - - $storage = new \SplObjectStorage(); - $storage->attach($obj2); - $storage->foo = $obj2; - - return array( - array($obj, spl_object_hash($obj)), - array($obj2, spl_object_hash($obj2)), - array($obj3, spl_object_hash($obj3)), - array($storage, spl_object_hash($storage)), - array($obj->array, 0), - array($obj->array2, 0), - array($obj->array3, 0) - ); - } - - /** - * @covers SebastianBergmann\RecursionContext\Context::add - * @uses SebastianBergmann\RecursionContext\InvalidArgumentException - * @dataProvider failsProvider - */ - public function testAddFails($value) - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Only arrays and objects are supported'); - - $this->context->add($value); - } - - /** - * @covers SebastianBergmann\RecursionContext\Context::contains - * @uses SebastianBergmann\RecursionContext\InvalidArgumentException - * @dataProvider failsProvider - */ - public function testContainsFails($value) - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('Only arrays and objects are supported'); - - $this->context->contains($value); - } - - /** - * @covers SebastianBergmann\RecursionContext\Context::add - * @dataProvider valuesProvider - */ - public function testAdd($value, $key) - { - $this->assertEquals($key, $this->context->add($value)); - - // Test we get the same key on subsequent adds - $this->assertEquals($key, $this->context->add($value)); - } - - /** - * @covers SebastianBergmann\RecursionContext\Context::contains - * @uses SebastianBergmann\RecursionContext\Context::add - * @depends testAdd - * @dataProvider valuesProvider - */ - public function testContainsFound($value, $key) - { - $this->context->add($value); - $this->assertEquals($key, $this->context->contains($value)); - - // Test we get the same key on subsequent calls - $this->assertEquals($key, $this->context->contains($value)); - } - - /** - * @covers SebastianBergmann\RecursionContext\Context::contains - * @dataProvider valuesProvider - */ - public function testContainsNotFound($value) - { - $this->assertFalse($this->context->contains($value)); - } -} diff --git a/vendor/sebastian/resource-operations/.gitattributes b/vendor/sebastian/resource-operations/.gitattributes new file mode 100644 index 000000000..85e55ebca --- /dev/null +++ b/vendor/sebastian/resource-operations/.gitattributes @@ -0,0 +1,7 @@ +/.github export-ignore +/.php_cs.dist export-ignore +/build.xml export-ignore +/phpunit.xml export-ignore +/tests export-ignore + +*.php diff=php diff --git a/vendor/sebastian/resource-operations/.github/stale.yml b/vendor/sebastian/resource-operations/.github/stale.yml deleted file mode 100644 index 4eadca327..000000000 --- a/vendor/sebastian/resource-operations/.github/stale.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - enhancement - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: stale - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had activity within the last 60 days. It will be closed after 7 days if no further activity occurs. Thank you for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -closeComment: > - This issue has been automatically closed because it has not had activity since it was marked as stale. Thank you for your contributions. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - diff --git a/vendor/sebastian/resource-operations/.gitignore b/vendor/sebastian/resource-operations/.gitignore index 4f9b2392f..a086c7819 100644 --- a/vendor/sebastian/resource-operations/.gitignore +++ b/vendor/sebastian/resource-operations/.gitignore @@ -3,3 +3,4 @@ /build/FunctionSignatureMap.php /composer.lock /vendor +/.phpunit.result.cache diff --git a/vendor/sebastian/resource-operations/.php_cs.dist b/vendor/sebastian/resource-operations/.php_cs.dist deleted file mode 100644 index 22641a643..000000000 --- a/vendor/sebastian/resource-operations/.php_cs.dist +++ /dev/null @@ -1,191 +0,0 @@ -<?php -$header = <<<'EOF' -This file is part of resource-operations. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'align_multiline_comment' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'is_null' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'new_with_braces' => false, - 'no_alias_functions' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_before_namespace' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_assignment' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'self_accessor' => true, - 'semicolon_after_instruction' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => true, - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/sebastian/resource-operations/ChangeLog.md b/vendor/sebastian/resource-operations/ChangeLog.md index 311f2d4b0..e6dc73922 100644 --- a/vendor/sebastian/resource-operations/ChangeLog.md +++ b/vendor/sebastian/resource-operations/ChangeLog.md @@ -2,11 +2,29 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. -## [2.0.2] - 2020-11-30 +## [3.0.3] - 2020-09-28 ### Changed -* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1` +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [3.0.2] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [3.0.1] - 2020-06-15 + +### Changed + +* Tests etc. are now ignored for archive exports + +## [3.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 ## [2.0.1] - 2018-10-04 @@ -28,6 +46,9 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * Initial release -[2.0.2]: https://github.com/sebastianbergmann/comparator/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/sebastianbergmann/comparator/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/sebastianbergmann/comparator/compare/1.0.0...2.0.0 +[3.0.3]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.2...3.0.3 +[3.0.2]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/comparator/resource-operations/2.0.1...3.0.0 +[2.0.1]: https://github.com/sebastianbergmann/comparator/resource-operations/2.0.0...2.0.1 +[2.0.0]: https://github.com/sebastianbergmann/comparator/resource-operations/1.0.0...2.0.0 diff --git a/vendor/sebastian/resource-operations/LICENSE b/vendor/sebastian/resource-operations/LICENSE index 272721811..dccd6b074 100644 --- a/vendor/sebastian/resource-operations/LICENSE +++ b/vendor/sebastian/resource-operations/LICENSE @@ -1,6 +1,6 @@ Resource Operations -Copyright (c) 2015-2018, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2015-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/resource-operations/build.xml b/vendor/sebastian/resource-operations/build.xml deleted file mode 100644 index 695ffa88e..000000000 --- a/vendor/sebastian/resource-operations/build.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="resource-operations" default="setup"> - <target name="setup" depends="clean,composer,generate"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - </exec> - </target> - - <target name="generate" depends="-download-arginfo"> - <exec executable="${basedir}/build/generate.php" taskname="generate" /> - </target> - - <target name="-download-arginfo"> - <tstamp> - <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/> - </tstamp> - - <delete> - <fileset dir="${basedir}/build"> - <include name="arginfo.php" /> - <date datetime="${thirty.days.ago}" when="before"/> - </fileset> - </delete> - - <get src="https://raw.githubusercontent.com/phan/phan/master/src/Phan/Language/Internal/FunctionSignatureMap.php" dest="${basedir}/build/FunctionSignatureMap.php" skipexisting="true"/> - </target> -</project> diff --git a/vendor/sebastian/resource-operations/composer.json b/vendor/sebastian/resource-operations/composer.json index 733a3f829..870be3c12 100644 --- a/vendor/sebastian/resource-operations/composer.json +++ b/vendor/sebastian/resource-operations/composer.json @@ -9,8 +9,12 @@ "email": "sebastian@phpunit.de" } ], + "prefer-stable": true, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "autoload": { "classmap": [ @@ -19,14 +23,14 @@ }, "config": { "platform": { - "php": "7.1.0" + "php": "7.3.0" }, "optimize-autoloader": true, "sort-packages": true }, "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } } } diff --git a/vendor/sebastian/resource-operations/tests/ResourceOperationsTest.php b/vendor/sebastian/resource-operations/tests/ResourceOperationsTest.php deleted file mode 100644 index f05ea0d50..000000000 --- a/vendor/sebastian/resource-operations/tests/ResourceOperationsTest.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of resource-operations. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\ResourceOperations; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\ResourceOperations\ResourceOperations - */ -final class ResourceOperationsTest extends TestCase -{ - public function testGetFunctions(): void - { - $functions = ResourceOperations::getFunctions(); - - $this->assertInternalType('array', $functions); - $this->assertContains('fopen', $functions); - } -} diff --git a/vendor/sebastian/type/.gitattributes b/vendor/sebastian/type/.gitattributes deleted file mode 100644 index 15e41cb1b..000000000 --- a/vendor/sebastian/type/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/tools export-ignore - diff --git a/vendor/sebastian/type/.github/FUNDING.yml b/vendor/sebastian/type/.github/FUNDING.yml deleted file mode 100644 index b19ea81a0..000000000 --- a/vendor/sebastian/type/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -patreon: s_bergmann diff --git a/vendor/sebastian/type/.gitignore b/vendor/sebastian/type/.gitignore deleted file mode 100644 index 832c68a7b..000000000 --- a/vendor/sebastian/type/.gitignore +++ /dev/null @@ -1,72 +0,0 @@ -/.php_cs -/.php_cs.cache -/.phpunit.result.cache -/composer.lock -/vendor - -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/modules.xml -# .idea/*.iml -# .idea/modules - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - -# Android studio 3.1+ serialized cache file -.idea/caches/build_file_checksums.ser diff --git a/vendor/sebastian/type/.idea/inspectionProfiles/Project_Default.xml b/vendor/sebastian/type/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 272394b89..000000000 --- a/vendor/sebastian/type/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,499 +0,0 @@ -<component name="InspectionProjectProfileManager"> - <profile version="1.0"> - <option name="myName" value="Project Default" /> - <inspection_tool class="AmdModulesDependencies" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="AngularAmbiguousComponentTag" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularCliAddDependency" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="AngularIncorrectTemplateDefinition" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularInsecureBindingToEvent" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidAnimationTriggerAssignment" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidEntryComponent" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidExpressionResultType" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidImportedOrDeclaredSymbol" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidSelector" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularInvalidTemplateReferenceVariable" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularMissingEventHandler" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularMissingOrInvalidDeclarationInModule" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularMultipleStructuralDirectives" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularNonEmptyNgContent" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularRecursiveModuleImportExport" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularUndefinedBinding" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularUndefinedModuleExport" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AngularUndefinedTag" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="AutoloadingIssuesInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="BadExceptionsProcessingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="BadExpressionStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="BladeControlDirectives" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CallerJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CheckDtdRefs" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CheckEmptyScriptTag" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CheckImageSize" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CheckNodeTest" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CheckTagEmptyBody" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CheckValidXmlInScriptTagBody" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CheckXmlFileWithXercesValidator" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="ClassOverridesFieldOfSuperClassInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="CoffeeScriptArgumentsOutsideFunction" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptFunctionSignatures" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptInfiniteLoop" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptLiteralNotFunction" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptModulesDependencies" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptSillyAssignment" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptSwitchStatementWithNoDefaultBranch" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CoffeeScriptUnusedLocalSymbols" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CommaExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ComposeUnknownKeys" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="ComposeUnknownValues" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="ConstantConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ConstantIfStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ContinueOrBreakFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssFloatPxLength" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="CssInvalidAtRule" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssInvalidCharsetRule" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssInvalidElement" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssInvalidFunction" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssInvalidHtmlTagReference" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssInvalidImport" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssInvalidMediaFeature" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssInvalidPropertyValue" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssInvalidPseudoSelector" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssMissingComma" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssNegativeValue" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssNoGenericFontName" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssOverwrittenProperties" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssRedundantUnit" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssReplaceWithShorthandSafely" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="CssReplaceWithShorthandUnsafely" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="CssUnitlessNumber" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CssUnknownProperty" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="myCustomPropertiesEnabled" value="false" /> - <option name="myIgnoreVendorSpecificProperties" value="false" /> - <option name="myCustomPropertiesList"> - <value> - <list size="0" /> - </value> - </option> - </inspection_tool> - <inspection_tool class="CssUnknownTarget" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssUnresolvedClass" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssUnresolvedCustomProperty" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CssUnusedSymbol" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CucumberExamplesColon" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CucumberMissedExamples" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="CucumberTableInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="CucumberUndefinedStep" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="DisallowWritingIntoStaticPropertiesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="DockerFileAddOrCopySemantic" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="DockerFileArgumentCount" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="DockerFileAssignments" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="DuplicateCaseLabelJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="DuplicateKeyInSection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="DuplicateSectionInFile" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6BindWithArrowFunction" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6CheckImport" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6ClassMemberInitializationOrder" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6ConvertModuleExportToExport" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="ES6ConvertRequireIntoImport" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="ES6ConvertToForOf" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="ES6ConvertVarToLetConst" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6MissingAwait" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="ES6ModulesDependencies" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6PossiblyAsyncFunction" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="ES6ShorthandObjectProperty" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="EmptyStatementBodyJS" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="m_reportEmptyBlocks" value="false" /> - </inspection_tool> - <inspection_tool class="ExceptionCaughtLocallyJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="FallThroughInSwitchStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="FileHeaderInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="FlowJSConfig" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="FlowJSFlagCommentPlacement" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ForgottenDebugOutputInspection" enabled="true" level="ERROR" enabled_by_default="true"> - <option name="configuration"> - <list> - <option value="\Codeception\Util\Debug::debug" /> - <option value="\Codeception\Util\Debug::pause" /> - <option value="\Doctrine::dump" /> - <option value="\Doctrine\Common\Util\Debug::dump" /> - <option value="\Doctrine\Common\Util\Debug::export" /> - <option value="\Illuminate\Support\Debug\Dumper::dump" /> - <option value="\Symfony\Component\Debug\Debug::enable" /> - <option value="\Symfony\Component\Debug\DebugClassLoader::enable" /> - <option value="\Symfony\Component\Debug\ErrorHandler::register" /> - <option value="\Symfony\Component\Debug\ExceptionHandler::register" /> - <option value="\TYPO3\CMS\Core\Utility\DebugUtility::debug" /> - <option value="\Zend\Debug\Debug::dump" /> - <option value="\Zend\Di\Display\Console::export" /> - <option value="\Zend_Debug::dump" /> - <option value="dd" /> - <option value="debug_print_backtrace" /> - <option value="debug_zval_dump" /> - <option value="dpm" /> - <option value="dpq" /> - <option value="dsm" /> - <option value="dump" /> - <option value="dvm" /> - <option value="error_log" /> - <option value="kpr" /> - <option value="phpinfo" /> - <option value="print_r" /> - <option value="var_dump" /> - <option value="var_export" /> - <option value="xdebug_break" /> - <option value="xdebug_call_class" /> - <option value="xdebug_call_file" /> - <option value="xdebug_call_function" /> - <option value="xdebug_call_line" /> - <option value="xdebug_code_coverage_started" /> - <option value="xdebug_debug_zval" /> - <option value="xdebug_debug_zval_stdout" /> - <option value="xdebug_dump_superglobals" /> - <option value="xdebug_enable" /> - <option value="xdebug_get_code_coverage" /> - <option value="xdebug_get_collected_errors" /> - <option value="xdebug_get_declared_vars" /> - <option value="xdebug_get_function_stack" /> - <option value="xdebug_get_headers" /> - <option value="xdebug_get_monitored_functions" /> - <option value="xdebug_get_profiler_filename" /> - <option value="xdebug_get_stack_depth" /> - <option value="xdebug_get_tracefile_name" /> - <option value="xdebug_is_enabled" /> - <option value="xdebug_memory_usage" /> - <option value="xdebug_peak_memory_usage" /> - <option value="xdebug_print_function_stack" /> - <option value="xdebug_start_code_coverage" /> - <option value="xdebug_start_error_collection" /> - <option value="xdebug_start_function_monitor" /> - <option value="xdebug_start_trace" /> - <option value="xdebug_stop_code_coverage" /> - <option value="xdebug_stop_error_collection" /> - <option value="xdebug_stop_function_monitor" /> - <option value="xdebug_stop_trace" /> - <option value="xdebug_time_index" /> - <option value="xdebug_var_dump" /> - </list> - </option> - <option name="migratedIntoUserSpace" value="true" /> - </inspection_tool> - <inspection_tool class="GherkinBrokenTableInspection" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="GherkinMisplacedBackground" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="GherkinScenarioToScenarioOutline" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="HamlNestedTagContent" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HardwiredNamespacePrefix" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlDeprecatedAttribute" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlDeprecatedTag" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlExtraClosingTag" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlFormInputWithoutLabel" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlMissingClosingTag" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="HtmlRequiredAltAttribute" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlRequiredLangAttribute" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlRequiredTitleElement" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlUnknownAnchorTarget" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlUnknownAttribute" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="myValues"> - <value> - <list size="0" /> - </value> - </option> - <option name="myCustomValuesEnabled" value="true" /> - </inspection_tool> - <inspection_tool class="HtmlUnknownBooleanAttribute" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="HtmlUnknownTag" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="myValues"> - <value> - <list size="6"> - <item index="0" class="java.lang.String" itemvalue="nobr" /> - <item index="1" class="java.lang.String" itemvalue="noembed" /> - <item index="2" class="java.lang.String" itemvalue="comment" /> - <item index="3" class="java.lang.String" itemvalue="noscript" /> - <item index="4" class="java.lang.String" itemvalue="embed" /> - <item index="5" class="java.lang.String" itemvalue="script" /> - </list> - </value> - </option> - <option name="myCustomValuesEnabled" value="true" /> - </inspection_tool> - <inspection_tool class="HtmlUnknownTarget" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ImplicitTypeConversion" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="BITS" value="1720" /> - <option name="FLAG_EXPLICIT_CONVERSION" value="true" /> - <option name="IGNORE_NODESET_TO_BOOLEAN_VIA_STRING" value="true" /> - </inspection_tool> - <inspection_tool class="IncompatibleMaskJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="InconsistentLineSeparators" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="IndexZeroUsage" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="InfiniteLoopJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="InfiniteRecursionJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSAccessibilityCheck" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSAnnotator" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="JSArrowFunctionBracesCanBeRemoved" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSAssignmentUsedAsCondition" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSBitwiseOperatorUsage" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSCheckFunctionSignatures" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSClosureCompilerSyntax" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSCommentMatchesSignature" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSComparisonWithNaN" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSConsecutiveCommasInArrayLiteral" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSConstructorReturnsPrimitive" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSDeprecatedSymbols" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSDuplicatedDeclaration" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSEqualityComparisonWithCoercion" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSFileReferences" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSFunctionExpressionToArrowFunction" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSIgnoredPromiseFromCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSIncompatibleTypesComparison" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSJQueryEfficiency" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSJoinVariableDeclarationAndAssignment" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSLastCommaInArrayLiteral" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSLastCommaInObjectLiteral" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSMethodCanBeStatic" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSMismatchedCollectionQueryUpdate" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="queries" value="trace,write,forEach,length" /> - <option name="updates" value="pop,push,shift,splice,unshift,add,insert,remove" /> - </inspection_tool> - <inspection_tool class="JSMissingSwitchBranches" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSMissingSwitchDefault" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSNonASCIINames" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSObjectNullOrUndefined" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSPotentiallyInvalidConstructorUsage" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="myConsiderUppercaseFunctionsToBeConstructors" value="true" /> - </inspection_tool> - <inspection_tool class="JSPotentiallyInvalidTargetOfIndexedPropertyAccess" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSPotentiallyInvalidUsageOfClassThis" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSPotentiallyInvalidUsageOfThis" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSPrimitiveTypeWrapperUsage" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSRedeclarationOfBlockScope" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="JSRedundantSwitchStatement" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSReferencingArgumentsOutsideOfFunction" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="JSReferencingMutableVariableFromClosure" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSRemoveUnnecessaryParentheses" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSStringConcatenationToES6Template" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="JSSuspiciousNameCombination" enabled="false" level="WARNING" enabled_by_default="false"> - <group names="x,width,left,right" /> - <group names="y,height,top,bottom" /> - <exclude classes="Math" /> - </inspection_tool> - <inspection_tool class="JSSwitchVariableDeclarationIssue" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSTestFailedLine" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSTypeOfValues" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUndeclaredVariable" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUndefinedPropertyAssignment" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnnecessarySemicolon" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnreachableSwitchBranches" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnresolvedExtXType" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnresolvedFunction" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnresolvedLibraryURL" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnresolvedVariable" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnusedAssignment" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnusedGlobalSymbols" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSUnusedLocalSymbols" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSValidateJSDoc" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JSValidateTypes" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JSXNamespaceValidation" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="Json5StandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="JsonDuplicatePropertyKeys" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JsonSchemaCompliance" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JsonSchemaDeprecation" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="JsonSchemaRefReference" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="JsonStandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="LessResolvedByNameOnly" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="LessUnresolvedMixin" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="LessUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="LoopStatementThatDoesntLoopJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="MarkdownUnresolvedFileReference" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="MissingSinceTagDocInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="MssqlBuiltinInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="MssqlTriggerInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="MysqlParsingInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="NodeJsCodingAssistanceForCoreModules" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="NodeModulesDependencies" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="NpmUsedModulesInstalled" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="OctalIntegerJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PackageJsonMismatchedDependency" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PgSelectFromProcedureInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PhingDomInspection" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="PhpAssignmentInConditionInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpDivisionByZeroInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpDocMissingReturnTagInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="PhpDocSignatureInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="PhpFullyQualifiedNameUsageInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PhpIncludeInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PhpMethodOrClassCallIsNotCaseSensitiveInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpMissingStrictTypesDeclarationInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpMultipleClassesDeclarationsInOneFile" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpShortOpenTagInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpTraditionalSyntaxArrayLiteralInspection" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpUnnecessaryFullyQualifiedNameInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PhpUsageOfSilenceOperatorInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="PhpVariableVariableInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="PointlessArithmeticExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="PointlessBooleanExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ProblematicWhitespace" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="RedundantTypeConversion" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="CHECK_ANY" value="false" /> - </inspection_tool> - <inspection_tool class="RegExpAnonymousGroup" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="RequiredAttributes" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="myAdditionalRequiredHtmlAttributes" value="" /> - </inspection_tool> - <inspection_tool class="ReservedWordUsedAsNameJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ReturnFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SassScssResolvedByNameOnly" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="SassScssUnresolvedMixin" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SassScssUnresolvedPlaceholderSelector" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SassScssUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SecurityAdvisoriesInspection" enabled="true" level="WARNING" enabled_by_default="true"> - <option name="REPORT_MISSING_ROAVE_ADVISORIES" value="false" /> - <option name="optionConfiguration"> - <list> - <option value="barryvdh/laravel-debugbar" /> - <option value="behat/behat" /> - <option value="brianium/paratest" /> - <option value="codeception/codeception" /> - <option value="codeception/mockery-module" /> - <option value="codeception/specify" /> - <option value="codeception/verify" /> - <option value="codedungeon/phpunit-result-printer" /> - <option value="composer/composer" /> - <option value="doctrine/coding-standard" /> - <option value="filp/whoops" /> - <option value="friendsofphp/php-cs-fixer" /> - <option value="humbug/humbug" /> - <option value="infection/infection" /> - <option value="jakub-onderka/php-parallel-lint" /> - <option value="johnkary/phpunit-speedtrap" /> - <option value="mikey179/vfsStream" /> - <option value="mockery/mockery" /> - <option value="mybuilder/phpunit-accelerator" /> - <option value="orchestra/testbench" /> - <option value="pdepend/pdepend" /> - <option value="phan/phan" /> - <option value="phing/phing" /> - <option value="phpcompatibility/php-compatibility" /> - <option value="phpmd/phpmd" /> - <option value="phpro/grumphp" /> - <option value="phpspec/phpspec" /> - <option value="phpspec/prophecy" /> - <option value="phpstan/phpstan" /> - <option value="phpunit/dbunit" /> - <option value="phpunit/phpcov" /> - <option value="phpunit/phpunit" /> - <option value="phpunit/phpunit-selenium" /> - <option value="povils/phpmnd" /> - <option value="roave/security-advisories" /> - <option value="satooshi/php-coveralls" /> - <option value="sebastian/phpcpd" /> - <option value="slevomat/coding-standard" /> - <option value="spatie/phpunit-watcher" /> - <option value="squizlabs/php_codesniffer" /> - <option value="sstalle/php7cc" /> - <option value="symfony/debug" /> - <option value="symfony/maker-bundle" /> - <option value="symfony/phpunit-bridge" /> - <option value="symfony/var-dumper" /> - <option value="vimeo/psalm" /> - <option value="wimg/php-compatibility" /> - <option value="yiisoft/yii2-debug" /> - <option value="yiisoft/yii2-gii" /> - <option value="zendframework/zend-debug" /> - <option value="zendframework/zend-test" /> - </list> - </option> - </inspection_tool> - <inspection_tool class="ShiftOutOfRangeJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SillyAssignmentJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false"> - <option name="processCode" value="true" /> - <option name="processLiterals" value="true" /> - <option name="processComments" value="true" /> - </inspection_tool> - <inspection_tool class="SqlAddNotNullColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlAmbiguousColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlAutoIncrementDuplicateInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlCheckUsingColumnsInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlConstantConditionInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlDeprecateTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlDerivedTableAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlDropIndexedColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlErrorHandlingInspection" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="SqlIdentifierInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlIllegalCursorStateInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlInsertValuesInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlJoinWithoutOnInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlNullComparisonInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlResolveInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlShouldBeInGroupByInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlSideEffectsInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlSignatureInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlStorageInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlUnreachableCodeInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlUnusedSubqueryItemInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlUnusedVariableInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SqlWithoutWhereInspection" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="SuspiciousTypeOfGuard" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ThisExpressionReferencesGlobalObjectJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="ThrowFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TrivialConditionalJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TrivialIfJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptAbstractClassConstructorCanBeMadeProtected" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptAccessibilityCheck" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptCheckImport" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="TypeScriptConfig" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptFieldCanBeMadeReadonly" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptLibrary" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="TypeScriptMissingAugmentationImport" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="TypeScriptPreferShortImport" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptSuspiciousConstructorParameterAssignment" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptUMDGlobal" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptUnresolvedFunction" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptUnresolvedVariable" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptValidateJSTypes" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="TypeScriptValidateTypes" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="TypescriptExplicitMemberType" enabled="false" level="INFORMATION" enabled_by_default="false" /> - <inspection_tool class="UnnecessaryBooleanCheckInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="UnnecessaryContinueJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnnecessaryLabelJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnnecessaryLabelOnBreakStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnnecessaryLabelOnContinueStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnnecessaryLocalVariableJS" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="m_ignoreImmediatelyReturnedVariables" value="false" /> - <option name="m_ignoreAnnotatedVariables" value="false" /> - </inspection_tool> - <inspection_tool class="UnnecessaryReturnJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnqualifiedReferenceInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> - <inspection_tool class="UnreachableCodeJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="UnresolvedReference" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="UnterminatedStatementJS" enabled="false" level="WARNING" enabled_by_default="false"> - <option name="ignoreSemicolonAtEndOfBlock" value="true" /> - </inspection_tool> - <inspection_tool class="VueDataFunction" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="VueDuplicateTag" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="WebpackConfigHighlighting" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="WithStatementJS" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XmlDefaultAttributeValue" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XmlDeprecatedElement" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XmlDuplicatedId" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XmlHighlighting" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XmlInvalidId" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XmlPathReference" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XmlUnboundNsPrefix" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XmlUnusedNamespaceDeclaration" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XmlWrongRootElement" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XsltDeclarations" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XsltTemplateInvocation" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="XsltUnusedDeclaration" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="XsltVariableShadowing" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="YAMLDuplicatedKeys" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="YAMLRecursiveAlias" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="YAMLSchemaDeprecation" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> - <inspection_tool class="YAMLSchemaValidation" enabled="false" level="WARNING" enabled_by_default="false" /> - <inspection_tool class="YAMLUnresolvedAlias" enabled="false" level="ERROR" enabled_by_default="false" /> - <inspection_tool class="YAMLUnusedAnchor" enabled="false" level="WARNING" enabled_by_default="false" /> - </profile> -</component> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/misc.xml b/vendor/sebastian/type/.idea/misc.xml deleted file mode 100644 index 28a804d89..000000000 --- a/vendor/sebastian/type/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="JavaScriptSettings"> - <option name="languageLevel" value="ES6" /> - </component> -</project> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/modules.xml b/vendor/sebastian/type/.idea/modules.xml deleted file mode 100644 index cfc6039c3..000000000 --- a/vendor/sebastian/type/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ProjectModuleManager"> - <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/type.iml" filepath="$PROJECT_DIR$/.idea/type.iml" /> - </modules> - </component> -</project> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/php-inspections-ea-ultimate.xml b/vendor/sebastian/type/.idea/php-inspections-ea-ultimate.xml deleted file mode 100644 index 26c2a682b..000000000 --- a/vendor/sebastian/type/.idea/php-inspections-ea-ultimate.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="EAUltimateProjectSettings"> - <categories> - <STRICTNESS_CATEGORY_SECURITY enabled="yes" /> - <STRICTNESS_CATEGORY_PROBABLE_BUGS enabled="yes" /> - <STRICTNESS_CATEGORY_PERFORMANCE enabled="yes" /> - <STRICTNESS_CATEGORY_ARCHITECTURE enabled="yes" /> - <STRICTNESS_CATEGORY_CONTROL_FLOW enabled="yes" /> - <STRICTNESS_CATEGORY_LANGUAGE_LEVEL_MIGRATION enabled="yes" /> - <STRICTNESS_CATEGORY_CODE_STYLE enabled="yes" /> - <STRICTNESS_CATEGORY_UNUSED enabled="yes" /> - <STRICTNESS_CATEGORY_PHPUNIT enabled="yes" /> - </categories> - <settings> - <ANALYZE_ONLY_MODIFIED_FILES value="no" /> - <PREFER_YODA_COMPARISON_STYLE value="no" /> - </settings> - </component> -</project> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/php.xml b/vendor/sebastian/type/.idea/php.xml deleted file mode 100644 index b4dab6653..000000000 --- a/vendor/sebastian/type/.idea/php.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="PhpIncludePathManager"> - <include_path> - <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" /> - <path value="$PROJECT_DIR$/vendor/phpspec/prophecy" /> - <path value="$PROJECT_DIR$/vendor/sebastian/version" /> - <path value="$PROJECT_DIR$/vendor/sebastian/diff" /> - <path value="$PROJECT_DIR$/vendor/phar-io/version" /> - <path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" /> - <path value="$PROJECT_DIR$/vendor/phar-io/manifest" /> - <path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" /> - <path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" /> - <path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" /> - <path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" /> - <path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" /> - <path value="$PROJECT_DIR$/vendor/sebastian/environment" /> - <path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" /> - <path value="$PROJECT_DIR$/vendor/sebastian/exporter" /> - <path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" /> - <path value="$PROJECT_DIR$/vendor/sebastian/comparator" /> - <path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" /> - <path value="$PROJECT_DIR$/vendor/sebastian/global-state" /> - <path value="$PROJECT_DIR$/vendor/phpunit/php-timer" /> - <path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" /> - <path value="$PROJECT_DIR$/vendor/phpunit/phpunit" /> - <path value="$PROJECT_DIR$/vendor/doctrine/instantiator" /> - <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" /> - <path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" /> - <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" /> - <path value="$PROJECT_DIR$/vendor/composer" /> - <path value="$PROJECT_DIR$/vendor/webmozart/assert" /> - <path value="$PROJECT_DIR$/vendor/theseer/tokenizer" /> - </include_path> - </component> - <component name="PhpProjectSharedConfiguration" php_language_level="7.2" /> - <component name="PhpUnit"> - <phpunit_settings> - <PhpUnitSettings load_method="CUSTOM_LOADER" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" /> - </phpunit_settings> - </component> -</project> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/type.iml b/vendor/sebastian/type/.idea/type.iml deleted file mode 100644 index 24c4e4042..000000000 --- a/vendor/sebastian/type/.idea/type.iml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module type="WEB_MODULE" version="4"> - <component name="NewModuleRootManager"> - <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-token-stream" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" /> - <excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" /> - </content> - <orderEntry type="inheritedJdk" /> - <orderEntry type="sourceFolder" forTests="false" /> - </component> -</module> \ No newline at end of file diff --git a/vendor/sebastian/type/.idea/vcs.xml b/vendor/sebastian/type/.idea/vcs.xml deleted file mode 100644 index 94a25f7f4..000000000 --- a/vendor/sebastian/type/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$" vcs="Git" /> - </component> -</project> \ No newline at end of file diff --git a/vendor/sebastian/type/.php_cs.dist b/vendor/sebastian/type/.php_cs.dist deleted file mode 100644 index 00eae398f..000000000 --- a/vendor/sebastian/type/.php_cs.dist +++ /dev/null @@ -1,200 +0,0 @@ -<?php declare(strict_types=1); -$header = <<<'EOF' -This file is part of sebastian/type. - -(c) Sebastian Bergmann <sebastian@phpunit.de> - -For the full copyright and license information, please view the LICENSE -file that was distributed with this source code. -EOF; - -return PhpCsFixer\Config::create() - ->setRiskyAllowed(true) - ->setRules( - [ - 'align_multiline_comment' => true, - 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'operators' => [ - '=' => 'align', - '=>' => 'align', - ], - ], - 'blank_line_after_namespace' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'declare', - 'do', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => ['spacing' => 'one'], - 'declare_equal_normalize' => ['space' => 'none'], - 'declare_strict_types' => true, - 'dir_constant' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'function_declaration' => true, - 'header_comment' => ['header' => $header, 'separate' => 'none'], - 'indentation_type' => true, - 'is_null' => true, - 'line_ending' => true, - 'list_syntax' => ['syntax' => 'short'], - 'logical_operators' => true, - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'method_argument_space' => ['ensure_fully_multiline' => true], - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => true, - 'new_with_braces' => false, - 'no_alias_functions' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_blank_lines_before_namespace' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'print'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', - 'constant_public', - 'constant_protected', - 'constant_private', - 'property_public_static', - 'property_protected_static', - 'property_private_static', - 'property_public', - 'property_protected', - 'property_private', - 'method_public_static', - 'construct', - 'destruct', - 'magic', - 'phpunit', - 'method_public', - 'method_protected', - 'method_private', - 'method_protected_static', - 'method_private_static', - ], - ], - 'ordered_imports' => true, - 'ordered_interfaces' => [ - 'direction' => 'ascend', - 'order' => 'alpha', - ], - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_annotation_without_dot' => true, - 'phpdoc_indent' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => ['groups' => ['simple', 'meta']], - 'phpdoc_types_order' => true, - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'return_assignment' => true, - 'return_type_declaration' => ['space_before' => 'none'], - 'semicolon_after_instruction' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_quote' => true, - 'standardize_not_equals' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => [ - 'elements' => [ - 'const', - 'method', - 'property', - ], - ], - 'void_return' => true, - 'whitespace_after_comma_in_array' => true, - ] - ) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__ . '/src') - ->in(__DIR__ . '/tests') - ); diff --git a/vendor/sebastian/type/.travis.yml b/vendor/sebastian/type/.travis.yml deleted file mode 100644 index 961341b36..000000000 --- a/vendor/sebastian/type/.travis.yml +++ /dev/null @@ -1,53 +0,0 @@ -language: php - -php: - - 7.2 - - 7.3 - - 7.4snapshot - - nightly - -matrix: - allow_failures: - - php: master - fast_finish: true - -env: - matrix: - - DEPENDENCIES="high" - - DEPENDENCIES="low" - global: - - DEFAULT_COMPOSER_FLAGS="--no-interaction --no-ansi --no-progress --no-suggest" - -before_install: - - ./tools/composer clear-cache - -install: - - if [[ "$DEPENDENCIES" = 'high' ]]; then travis_retry ./tools/composer update $DEFAULT_COMPOSER_FLAGS; fi - - if [[ "$DEPENDENCIES" = 'low' ]]; then travis_retry ./tools/composer update $DEFAULT_COMPOSER_FLAGS --prefer-lowest; fi - -script: - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false - -jobs: - include: - - stage: "Static Code Analysis" - php: 7.3 - env: php-cs-fixer - install: - - phpenv config-rm xdebug.ini - script: - - ./tools/php-cs-fixer fix --dry-run -v --show-progress=dots --diff-format=udiff - - stage: "Static Code Analysis" - php: 7.3 - env: psalm - install: - - phpenv config-rm xdebug.ini - script: - - travis_retry ./tools/composer update $DEFAULT_COMPOSER_FLAGS - - ./tools/psalm --shepherd --stats diff --git a/vendor/sebastian/type/ChangeLog.md b/vendor/sebastian/type/ChangeLog.md index 3618db10f..834681f99 100644 --- a/vendor/sebastian/type/ChangeLog.md +++ b/vendor/sebastian/type/ChangeLog.md @@ -2,17 +2,119 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [1.1.4] - 2020-11-30 +## [3.2.0] - 2022-09-12 + +### Added + +* [#25](https://github.com/sebastianbergmann/type/issues/25): Support Disjunctive Normal Form types +* Added `ReflectionMapper::fromParameterTypes()` +* Added `IntersectionType::types()` and `UnionType::types()` +* Added `UnionType::containsIntersectionTypes()` + +## [3.1.0] - 2022-08-29 + +### Added + +* [#21](https://github.com/sebastianbergmann/type/issues/21): Support `true` as stand-alone type + +## [3.0.0] - 2022-03-15 + +### Added + +* Support for intersection types introduced in PHP 8.1 +* Support for the `never` return type introduced in PHP 8.1 +* Added `Type::isCallable()`, `Type::isGenericObject()`, `Type::isIterable()`, `Type::isMixed()`, `Type::isNever()`, `Type::isNull()`, `Type::isObject()`, `Type::isSimple()`, `Type::isStatic()`, `Type::isUnion()`, `Type::isUnknown()`, and `Type::isVoid()` ### Changed -* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2` +* Renamed `ReflectionMapper::fromMethodReturnType(ReflectionMethod $method)` to `ReflectionMapper::fromReturnType(ReflectionFunctionAbstract $functionOrMethod)` + +### Removed + +* Removed `Type::getReturnTypeDeclaration()` (use `Type::asString()` instead and prefix its result with `': '`) +* Removed `TypeName::getNamespaceName()` (use `TypeName::namespaceName()` instead) +* Removed `TypeName::getSimpleName()` (use `TypeName::simpleName()` instead) +* Removed `TypeName::getQualifiedName()` (use `TypeName::qualifiedName()` instead) + +## [2.3.4] - 2021-06-15 + +* Fixed regression introduced in 2.3.3 + +## [2.3.3] - 2021-06-15 [YANKED] + +### Fixed + +* [#15](https://github.com/sebastianbergmann/type/issues/15): "false" pseudo type is not handled properly + +## [2.3.2] - 2021-06-04 + +### Fixed + +* Fixed handling of tentatively declared return types + +## [2.3.1] - 2020-10-26 + +### Fixed + +* `SebastianBergmann\Type\Exception` now correctly extends `\Throwable` + +## [2.3.0] - 2020-10-06 + +### Added + +* [#14](https://github.com/sebastianbergmann/type/issues/14): Support for `static` return type that is introduced in PHP 8 + +## [2.2.2] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [2.2.1] - 2020-07-05 + +### Fixed + +* Fixed handling of `mixed` type in `ReflectionMapper::fromMethodReturnType()` + +## [2.2.0] - 2020-07-05 + +### Added + +* Added `MixedType` object for representing PHP 8's `mixed` type + +## [2.1.1] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [2.1.0] - 2020-06-01 + +### Added + +* Added `UnionType` object for representing PHP 8's Union Types +* Added `ReflectionMapper::fromMethodReturnType()` for mapping `\ReflectionMethod::getReturnType()` to a `Type` object +* Added `Type::name()` for retrieving the name of a type +* Added `Type::asString()` for retrieving a textual representation of a type + +### Changed + +* Deprecated `Type::getReturnTypeDeclaration()` (use `Type::asString()` instead and prefix its result with `': '`) +* Deprecated `TypeName::getNamespaceName()` (use `TypeName::namespaceName()` instead) +* Deprecated `TypeName::getSimpleName()` (use `TypeName::simpleName()` instead) +* Deprecated `TypeName::getQualifiedName()` (use `TypeName::qualifiedName()` instead) + +## [2.0.0] - 2020-02-07 + +### Removed + +* This component is no longer supported on PHP 7.2 ## [1.1.3] - 2019-07-02 ### Fixed -* Fixed class name comparison in `ObjectType` to be case insensitive +* Fixed class name comparison in `ObjectType` to be case-insensitive ## [1.1.2] - 2019-06-19 @@ -37,7 +139,20 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt * Initial release based on [code contributed by Michel Hartmann to PHPUnit](https://github.com/sebastianbergmann/phpunit/pull/3673) -[1.1.4]: https://github.com/sebastianbergmann/type/compare/1.1.3...1.1.4 +[3.2.0]: https://github.com/sebastianbergmann/type/compare/3.1.0...3.2.0 +[3.1.0]: https://github.com/sebastianbergmann/type/compare/3.0.0...3.1.0 +[3.0.0]: https://github.com/sebastianbergmann/type/compare/2.3.4...3.0.0 +[2.3.4]: https://github.com/sebastianbergmann/type/compare/ca39369c41313ed12c071ed38ecda8fcdb248859...2.3.4 +[2.3.3]: https://github.com/sebastianbergmann/type/compare/2.3.2...ca39369c41313ed12c071ed38ecda8fcdb248859 +[2.3.2]: https://github.com/sebastianbergmann/type/compare/2.3.1...2.3.2 +[2.3.1]: https://github.com/sebastianbergmann/type/compare/2.3.0...2.3.1 +[2.3.0]: https://github.com/sebastianbergmann/type/compare/2.2.2...2.3.0 +[2.2.2]: https://github.com/sebastianbergmann/type/compare/2.2.1...2.2.2 +[2.2.1]: https://github.com/sebastianbergmann/type/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/sebastianbergmann/type/compare/2.1.1...2.2.0 +[2.1.1]: https://github.com/sebastianbergmann/type/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/sebastianbergmann/type/compare/2.0.0...2.1.0 +[2.0.0]: https://github.com/sebastianbergmann/type/compare/1.1.3...2.0.0 [1.1.3]: https://github.com/sebastianbergmann/type/compare/1.1.2...1.1.3 [1.1.2]: https://github.com/sebastianbergmann/type/compare/1.1.1...1.1.2 [1.1.1]: https://github.com/sebastianbergmann/type/compare/1.1.0...1.1.1 diff --git a/vendor/sebastian/type/LICENSE b/vendor/sebastian/type/LICENSE index c58cd4ef1..f4e4a3289 100644 --- a/vendor/sebastian/type/LICENSE +++ b/vendor/sebastian/type/LICENSE @@ -1,6 +1,6 @@ sebastian/type -Copyright (c) 2019, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2019-2022, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/type/README.md b/vendor/sebastian/type/README.md index c7c8da64e..1036ce7a7 100644 --- a/vendor/sebastian/type/README.md +++ b/vendor/sebastian/type/README.md @@ -1,5 +1,8 @@ # sebastian/type +[![CI Status](https://github.com/sebastianbergmann/type/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/type/actions) +[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/type/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/type) + Collection of value objects that represent the types of the PHP type system. ## Installation diff --git a/vendor/sebastian/type/build.xml b/vendor/sebastian/type/build.xml deleted file mode 100644 index d08143050..000000000 --- a/vendor/sebastian/type/build.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="type" default="setup"> - <target name="setup" depends="clean,composer"/> - - <target name="clean" description="Cleanup build artifacts"> - <delete dir="${basedir}/vendor"/> - <delete file="${basedir}/composer.lock"/> - </target> - - <target name="composer" depends="clean" description="Install dependencies with Composer"> - <exec executable="${basedir}/tools/composer" taskname="composer"> - <arg value="update"/> - <arg value="--no-interaction"/> - <arg value="--no-progress"/> - <arg value="--no-ansi"/> - <arg value="--no-suggest"/> - </exec> - </target> - - <target name="update-tools"> - <exec executable="phive" taskname="phive"> - <arg value="--no-progress"/> - <arg value="update"/> - </exec> - - <exec executable="${basedir}/tools/composer" taskname="composer"> - <arg value="self-update"/> - </exec> - </target> -</project> - diff --git a/vendor/sebastian/type/composer.json b/vendor/sebastian/type/composer.json index 5a2d6222b..a0865c93d 100644 --- a/vendor/sebastian/type/composer.json +++ b/vendor/sebastian/type/composer.json @@ -16,14 +16,14 @@ }, "prefer-stable": true, "require": { - "php": ">=7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.5" }, "config": { "platform": { - "php": "7.2.0" + "php": "7.3.0" }, "optimize-autoloader": true, "sort-packages": true @@ -38,12 +38,13 @@ "tests/_fixture" ], "files": [ - "tests/_fixture/callback_function.php" + "tests/_fixture/callback_function.php", + "tests/_fixture/functions_that_declare_return_types.php" ] }, "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.2-dev" } } } diff --git a/vendor/sebastian/type/phive.xml b/vendor/sebastian/type/phive.xml deleted file mode 100644 index 8c97a1546..000000000 --- a/vendor/sebastian/type/phive.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phive xmlns="https://phar.io/phive"> - <phar name="php-cs-fixer" version="^2.15" installed="2.15.1" location="./tools/php-cs-fixer" copy="true"/> - <phar name="psalm" version="^3.2" installed="3.4.5" location="./tools/psalm" copy="true"/> -</phive> diff --git a/vendor/sebastian/type/phpunit.xml b/vendor/sebastian/type/phpunit.xml deleted file mode 100644 index 0007cf7ea..000000000 --- a/vendor/sebastian/type/phpunit.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.2/phpunit.xsd" - bootstrap="vendor/autoload.php" - executionOrder="depends,defects" - forceCoversAnnotation="true" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - colors="true" - verbose="true"> - <testsuites> - <testsuite name="unit"> - <directory suffix="Test.php">tests/unit</directory> - </testsuite> - </testsuites> - - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">src</directory> - </whitelist> - </filter> -</phpunit> diff --git a/vendor/sebastian/type/psalm.xml b/vendor/sebastian/type/psalm.xml deleted file mode 100644 index c94bb67e7..000000000 --- a/vendor/sebastian/type/psalm.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0"?> -<psalm - totallyTyped="false" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="https://getpsalm.org/schema/config" - xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" -> - <projectFiles> - <directory name="src" /> - <ignoreFiles> - <directory name="vendor" /> - </ignoreFiles> - </projectFiles> - - <issueHandlers> - <LessSpecificReturnType errorLevel="info" /> - - <!-- level 3 issues - slightly lazy code writing, but provably low false-negatives --> - - <DeprecatedMethod errorLevel="info" /> - <DeprecatedProperty errorLevel="info" /> - <DeprecatedClass errorLevel="info" /> - <DeprecatedConstant errorLevel="info" /> - <DeprecatedInterface errorLevel="info" /> - <DeprecatedTrait errorLevel="info" /> - - <InternalMethod errorLevel="info" /> - <InternalProperty errorLevel="info" /> - <InternalClass errorLevel="info" /> - - <MissingClosureReturnType errorLevel="info" /> - <MissingReturnType errorLevel="info" /> - <MissingPropertyType errorLevel="info" /> - <InvalidDocblock errorLevel="info" /> - <MisplacedRequiredParam errorLevel="info" /> - - <PropertyNotSetInConstructor errorLevel="info" /> - <MissingConstructor errorLevel="info" /> - <MissingClosureParamType errorLevel="info" /> - <MissingParamType errorLevel="info" /> - - <RedundantCondition errorLevel="info" /> - - <DocblockTypeContradiction errorLevel="info" /> - <RedundantConditionGivenDocblockType errorLevel="info" /> - - <UnresolvableInclude errorLevel="info" /> - - <RawObjectIteration errorLevel="info" /> - - <InvalidStringClass errorLevel="info" /> - </issueHandlers> -</psalm> diff --git a/vendor/sebastian/type/src/CallableType.php b/vendor/sebastian/type/src/CallableType.php deleted file mode 100644 index 28b5df8c9..000000000 --- a/vendor/sebastian/type/src/CallableType.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class CallableType extends Type -{ - /** - * @var bool - */ - private $allowsNull; - - public function __construct(bool $nullable) - { - $this->allowsNull = $nullable; - } - - /** - * @throws RuntimeException - */ - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - return true; - } - - if ($other instanceof ObjectType) { - if ($this->isClosure($other)) { - return true; - } - - if ($this->hasInvokeMethod($other)) { - return true; - } - } - - if ($other instanceof SimpleType) { - if ($this->isFunction($other)) { - return true; - } - - if ($this->isClassCallback($other)) { - return true; - } - - if ($this->isObjectCallback($other)) { - return true; - } - } - - return false; - } - - public function getReturnTypeDeclaration(): string - { - return ': ' . ($this->allowsNull ? '?' : '') . 'callable'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - private function isClosure(ObjectType $type): bool - { - return !$type->className()->isNamespaced() && $type->className()->getSimpleName() === \Closure::class; - } - - /** - * @throws RuntimeException - */ - private function hasInvokeMethod(ObjectType $type): bool - { - try { - $class = new \ReflectionClass($type->className()->getQualifiedName()); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - // @codeCoverageIgnoreEnd - } - - if ($class->hasMethod('__invoke')) { - return true; - } - - return false; - } - - private function isFunction(SimpleType $type): bool - { - if (!\is_string($type->value())) { - return false; - } - - return \function_exists($type->value()); - } - - private function isObjectCallback(SimpleType $type): bool - { - if (!\is_array($type->value())) { - return false; - } - - if (\count($type->value()) !== 2) { - return false; - } - - if (!\is_object($type->value()[0]) || !\is_string($type->value()[1])) { - return false; - } - - [$object, $methodName] = $type->value(); - - $reflector = new \ReflectionObject($object); - - return $reflector->hasMethod($methodName); - } - - private function isClassCallback(SimpleType $type): bool - { - if (!\is_string($type->value()) && !\is_array($type->value())) { - return false; - } - - if (\is_string($type->value())) { - if (\strpos($type->value(), '::') === false) { - return false; - } - - [$className, $methodName] = \explode('::', $type->value()); - } - - if (\is_array($type->value())) { - if (\count($type->value()) !== 2) { - return false; - } - - if (!\is_string($type->value()[0]) || !\is_string($type->value()[1])) { - return false; - } - - [$className, $methodName] = $type->value(); - } - - \assert(isset($className) && \is_string($className)); - \assert(isset($methodName) && \is_string($methodName)); - - try { - $class = new \ReflectionClass($className); - - if ($class->hasMethod($methodName)) { - $method = $class->getMethod($methodName); - - return $method->isPublic() && $method->isStatic(); - } - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - // @codeCoverageIgnoreEnd - } - - return false; - } -} diff --git a/vendor/sebastian/type/src/IterableType.php b/vendor/sebastian/type/src/IterableType.php deleted file mode 100644 index 49830d3e1..000000000 --- a/vendor/sebastian/type/src/IterableType.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class IterableType extends Type -{ - /** - * @var bool - */ - private $allowsNull; - - public function __construct(bool $nullable) - { - $this->allowsNull = $nullable; - } - - /** - * @throws RuntimeException - */ - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - return true; - } - - if ($other instanceof SimpleType) { - return \is_iterable($other->value()); - } - - if ($other instanceof ObjectType) { - try { - return (new \ReflectionClass($other->className()->getQualifiedName()))->isIterable(); - // @codeCoverageIgnoreStart - } catch (\ReflectionException $e) { - throw new RuntimeException( - $e->getMessage(), - (int) $e->getCode(), - $e - ); - // @codeCoverageIgnoreEnd - } - } - - return false; - } - - public function getReturnTypeDeclaration(): string - { - return ': ' . ($this->allowsNull ? '?' : '') . 'iterable'; - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } -} diff --git a/vendor/sebastian/type/src/NullType.php b/vendor/sebastian/type/src/NullType.php deleted file mode 100644 index 0efe10764..000000000 --- a/vendor/sebastian/type/src/NullType.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class NullType extends Type -{ - public function isAssignable(Type $other): bool - { - return !($other instanceof VoidType); - } - - public function getReturnTypeDeclaration(): string - { - return ''; - } - - public function allowsNull(): bool - { - return true; - } -} diff --git a/vendor/sebastian/type/src/ObjectType.php b/vendor/sebastian/type/src/ObjectType.php deleted file mode 100644 index 9a8d99e0d..000000000 --- a/vendor/sebastian/type/src/ObjectType.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class ObjectType extends Type -{ - /** - * @var TypeName - */ - private $className; - - /** - * @var bool - */ - private $allowsNull; - - public function __construct(TypeName $className, bool $allowsNull) - { - $this->className = $className; - $this->allowsNull = $allowsNull; - } - - public function isAssignable(Type $other): bool - { - if ($this->allowsNull && $other instanceof NullType) { - return true; - } - - if ($other instanceof self) { - if (0 === \strcasecmp($this->className->getQualifiedName(), $other->className->getQualifiedName())) { - return true; - } - - if (\is_subclass_of($other->className->getQualifiedName(), $this->className->getQualifiedName(), true)) { - return true; - } - } - - return false; - } - - public function getReturnTypeDeclaration(): string - { - return ': ' . ($this->allowsNull ? '?' : '') . $this->className->getQualifiedName(); - } - - public function allowsNull(): bool - { - return $this->allowsNull; - } - - public function className(): TypeName - { - return $this->className; - } -} diff --git a/vendor/sebastian/type/src/Parameter.php b/vendor/sebastian/type/src/Parameter.php new file mode 100644 index 000000000..1adb061e6 --- /dev/null +++ b/vendor/sebastian/type/src/Parameter.php @@ -0,0 +1,42 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class Parameter +{ + /** + * @psalm-var non-empty-string + */ + private $name; + + /** + * @var Type + */ + private $type; + + /** + * @psalm-param non-empty-string $name + */ + public function __construct(string $name, Type $type) + { + $this->name = $name; + $this->type = $type; + } + + public function name(): string + { + return $this->name; + } + + public function type(): Type + { + return $this->type; + } +} diff --git a/vendor/sebastian/type/src/ReflectionMapper.php b/vendor/sebastian/type/src/ReflectionMapper.php new file mode 100644 index 000000000..32099b4bc --- /dev/null +++ b/vendor/sebastian/type/src/ReflectionMapper.php @@ -0,0 +1,184 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function assert; +use ReflectionFunctionAbstract; +use ReflectionIntersectionType; +use ReflectionMethod; +use ReflectionNamedType; +use ReflectionType; +use ReflectionUnionType; + +final class ReflectionMapper +{ + /** + * @psalm-return list<Parameter> + */ + public function fromParameterTypes(ReflectionFunctionAbstract $functionOrMethod): array + { + $parameters = []; + + foreach ($functionOrMethod->getParameters() as $parameter) { + $name = $parameter->getName(); + + assert($name !== ''); + + if (!$parameter->hasType()) { + $parameters[] = new Parameter($name, new UnknownType); + + continue; + } + + $type = $parameter->getType(); + + if ($type instanceof ReflectionNamedType) { + $parameters[] = new Parameter( + $name, + $this->mapNamedType($type, $functionOrMethod) + ); + + continue; + } + + if ($type instanceof ReflectionUnionType) { + $parameters[] = new Parameter( + $name, + $this->mapUnionType($type, $functionOrMethod) + ); + + continue; + } + + if ($type instanceof ReflectionIntersectionType) { + $parameters[] = new Parameter( + $name, + $this->mapIntersectionType($type, $functionOrMethod) + ); + } + } + + return $parameters; + } + + public function fromReturnType(ReflectionFunctionAbstract $functionOrMethod): Type + { + if (!$this->hasReturnType($functionOrMethod)) { + return new UnknownType; + } + + $returnType = $this->returnType($functionOrMethod); + + assert($returnType instanceof ReflectionNamedType || $returnType instanceof ReflectionUnionType || $returnType instanceof ReflectionIntersectionType); + + if ($returnType instanceof ReflectionNamedType) { + return $this->mapNamedType($returnType, $functionOrMethod); + } + + if ($returnType instanceof ReflectionUnionType) { + return $this->mapUnionType($returnType, $functionOrMethod); + } + + if ($returnType instanceof ReflectionIntersectionType) { + return $this->mapIntersectionType($returnType, $functionOrMethod); + } + } + + private function mapNamedType(ReflectionNamedType $type, ReflectionFunctionAbstract $functionOrMethod): Type + { + if ($functionOrMethod instanceof ReflectionMethod && $type->getName() === 'self') { + return ObjectType::fromName( + $functionOrMethod->getDeclaringClass()->getName(), + $type->allowsNull() + ); + } + + if ($functionOrMethod instanceof ReflectionMethod && $type->getName() === 'static') { + return new StaticType( + TypeName::fromReflection($functionOrMethod->getDeclaringClass()), + $type->allowsNull() + ); + } + + if ($type->getName() === 'mixed') { + return new MixedType; + } + + if ($functionOrMethod instanceof ReflectionMethod && $type->getName() === 'parent') { + return ObjectType::fromName( + $functionOrMethod->getDeclaringClass()->getParentClass()->getName(), + $type->allowsNull() + ); + } + + return Type::fromName( + $type->getName(), + $type->allowsNull() + ); + } + + private function mapUnionType(ReflectionUnionType $type, ReflectionFunctionAbstract $functionOrMethod): Type + { + $types = []; + + foreach ($type->getTypes() as $_type) { + assert($_type instanceof ReflectionNamedType || $_type instanceof ReflectionIntersectionType); + + if ($_type instanceof ReflectionNamedType) { + $types[] = $this->mapNamedType($_type, $functionOrMethod); + + continue; + } + + $types[] = $this->mapIntersectionType($_type, $functionOrMethod); + } + + return new UnionType(...$types); + } + + private function mapIntersectionType(ReflectionIntersectionType $type, ReflectionFunctionAbstract $functionOrMethod): Type + { + $types = []; + + foreach ($type->getTypes() as $_type) { + assert($_type instanceof ReflectionNamedType); + + $types[] = $this->mapNamedType($_type, $functionOrMethod); + } + + return new IntersectionType(...$types); + } + + private function hasReturnType(ReflectionFunctionAbstract $functionOrMethod): bool + { + if ($functionOrMethod->hasReturnType()) { + return true; + } + + if (!method_exists($functionOrMethod, 'hasTentativeReturnType')) { + return false; + } + + return $functionOrMethod->hasTentativeReturnType(); + } + + private function returnType(ReflectionFunctionAbstract $functionOrMethod): ?ReflectionType + { + if ($functionOrMethod->hasReturnType()) { + return $functionOrMethod->getReturnType(); + } + + if (!method_exists($functionOrMethod, 'getTentativeReturnType')) { + return null; + } + + return $functionOrMethod->getTentativeReturnType(); + } +} diff --git a/vendor/sebastian/type/src/Type.php b/vendor/sebastian/type/src/Type.php deleted file mode 100644 index df7dce680..000000000 --- a/vendor/sebastian/type/src/Type.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -abstract class Type -{ - public static function fromValue($value, bool $allowsNull): self - { - $typeName = \gettype($value); - - if ($typeName === 'object') { - return new ObjectType(TypeName::fromQualifiedName(\get_class($value)), $allowsNull); - } - - $type = self::fromName($typeName, $allowsNull); - - if ($type instanceof SimpleType) { - $type = new SimpleType($typeName, $allowsNull, $value); - } - - return $type; - } - - public static function fromName(string $typeName, bool $allowsNull): self - { - switch (\strtolower($typeName)) { - case 'callable': - return new CallableType($allowsNull); - - case 'iterable': - return new IterableType($allowsNull); - - case 'null': - return new NullType; - - case 'object': - return new GenericObjectType($allowsNull); - - case 'unknown type': - return new UnknownType; - - case 'void': - return new VoidType; - - case 'array': - case 'bool': - case 'boolean': - case 'double': - case 'float': - case 'int': - case 'integer': - case 'real': - case 'resource': - case 'resource (closed)': - case 'string': - return new SimpleType($typeName, $allowsNull); - - default: - return new ObjectType(TypeName::fromQualifiedName($typeName), $allowsNull); - } - } - - abstract public function isAssignable(Type $other): bool; - - abstract public function getReturnTypeDeclaration(): string; - - abstract public function allowsNull(): bool; -} diff --git a/vendor/sebastian/type/src/TypeName.php b/vendor/sebastian/type/src/TypeName.php index fbbe36e34..17d477cfe 100644 --- a/vendor/sebastian/type/src/TypeName.php +++ b/vendor/sebastian/type/src/TypeName.php @@ -9,6 +9,12 @@ */ namespace SebastianBergmann\Type; +use function array_pop; +use function explode; +use function implode; +use function substr; +use ReflectionClass; + final class TypeName { /** @@ -24,18 +30,18 @@ final class TypeName public static function fromQualifiedName(string $fullClassName): self { if ($fullClassName[0] === '\\') { - $fullClassName = \substr($fullClassName, 1); + $fullClassName = substr($fullClassName, 1); } - $classNameParts = \explode('\\', $fullClassName); + $classNameParts = explode('\\', $fullClassName); - $simpleName = \array_pop($classNameParts); - $namespaceName = \implode('\\', $classNameParts); + $simpleName = array_pop($classNameParts); + $namespaceName = implode('\\', $classNameParts); return new self($namespaceName, $simpleName); } - public static function fromReflection(\ReflectionClass $type): self + public static function fromReflection(ReflectionClass $type): self { return new self( $type->getNamespaceName(), @@ -53,17 +59,17 @@ final class TypeName $this->simpleName = $simpleName; } - public function getNamespaceName(): ?string + public function namespaceName(): ?string { return $this->namespaceName; } - public function getSimpleName(): string + public function simpleName(): string { return $this->simpleName; } - public function getQualifiedName(): string + public function qualifiedName(): string { return $this->namespaceName === null ? $this->simpleName diff --git a/vendor/sebastian/type/src/UnknownType.php b/vendor/sebastian/type/src/UnknownType.php deleted file mode 100644 index 859f01de4..000000000 --- a/vendor/sebastian/type/src/UnknownType.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class UnknownType extends Type -{ - public function isAssignable(Type $other): bool - { - return true; - } - - public function getReturnTypeDeclaration(): string - { - return ''; - } - - public function allowsNull(): bool - { - return true; - } -} diff --git a/vendor/sebastian/type/src/VoidType.php b/vendor/sebastian/type/src/VoidType.php deleted file mode 100644 index f6fabaadc..000000000 --- a/vendor/sebastian/type/src/VoidType.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -final class VoidType extends Type -{ - public function isAssignable(Type $other): bool - { - return $other instanceof self; - } - - public function getReturnTypeDeclaration(): string - { - return ': void'; - } - - public function allowsNull(): bool - { - return false; - } -} diff --git a/vendor/sebastian/type/src/exception/Exception.php b/vendor/sebastian/type/src/exception/Exception.php index 9f0de24de..e0e7ee579 100644 --- a/vendor/sebastian/type/src/exception/Exception.php +++ b/vendor/sebastian/type/src/exception/Exception.php @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Type; -interface Exception +use Throwable; + +interface Exception extends Throwable { } diff --git a/vendor/sebastian/type/src/type/CallableType.php b/vendor/sebastian/type/src/type/CallableType.php new file mode 100644 index 000000000..553f15590 --- /dev/null +++ b/vendor/sebastian/type/src/type/CallableType.php @@ -0,0 +1,204 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function assert; +use function class_exists; +use function count; +use function explode; +use function function_exists; +use function is_array; +use function is_object; +use function is_string; +use Closure; +use ReflectionClass; +use ReflectionException; +use ReflectionObject; + +final class CallableType extends Type +{ + /** + * @var bool + */ + private $allowsNull; + + public function __construct(bool $nullable) + { + $this->allowsNull = $nullable; + } + + /** + * @throws RuntimeException + */ + public function isAssignable(Type $other): bool + { + if ($this->allowsNull && $other instanceof NullType) { + return true; + } + + if ($other instanceof self) { + return true; + } + + if ($other instanceof ObjectType) { + if ($this->isClosure($other)) { + return true; + } + + if ($this->hasInvokeMethod($other)) { + return true; + } + } + + if ($other instanceof SimpleType) { + if ($this->isFunction($other)) { + return true; + } + + if ($this->isClassCallback($other)) { + return true; + } + + if ($this->isObjectCallback($other)) { + return true; + } + } + + return false; + } + + public function name(): string + { + return 'callable'; + } + + public function allowsNull(): bool + { + return $this->allowsNull; + } + + /** + * @psalm-assert-if-true CallableType $this + */ + public function isCallable(): bool + { + return true; + } + + private function isClosure(ObjectType $type): bool + { + return !$type->className()->isNamespaced() && $type->className()->simpleName() === Closure::class; + } + + /** + * @throws RuntimeException + */ + private function hasInvokeMethod(ObjectType $type): bool + { + $className = $type->className()->qualifiedName(); + assert(class_exists($className)); + + try { + $class = new ReflectionClass($className); + // @codeCoverageIgnoreStart + } catch (ReflectionException $e) { + throw new RuntimeException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + // @codeCoverageIgnoreEnd + } + + if ($class->hasMethod('__invoke')) { + return true; + } + + return false; + } + + private function isFunction(SimpleType $type): bool + { + if (!is_string($type->value())) { + return false; + } + + return function_exists($type->value()); + } + + private function isObjectCallback(SimpleType $type): bool + { + if (!is_array($type->value())) { + return false; + } + + if (count($type->value()) !== 2) { + return false; + } + + if (!is_object($type->value()[0]) || !is_string($type->value()[1])) { + return false; + } + + [$object, $methodName] = $type->value(); + + return (new ReflectionObject($object))->hasMethod($methodName); + } + + private function isClassCallback(SimpleType $type): bool + { + if (!is_string($type->value()) && !is_array($type->value())) { + return false; + } + + if (is_string($type->value())) { + if (strpos($type->value(), '::') === false) { + return false; + } + + [$className, $methodName] = explode('::', $type->value()); + } + + if (is_array($type->value())) { + if (count($type->value()) !== 2) { + return false; + } + + if (!is_string($type->value()[0]) || !is_string($type->value()[1])) { + return false; + } + + [$className, $methodName] = $type->value(); + } + + assert(isset($className) && is_string($className) && class_exists($className)); + assert(isset($methodName) && is_string($methodName)); + + try { + $class = new ReflectionClass($className); + + if ($class->hasMethod($methodName)) { + $method = $class->getMethod($methodName); + + return $method->isPublic() && $method->isStatic(); + } + // @codeCoverageIgnoreStart + } catch (ReflectionException $e) { + throw new RuntimeException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + // @codeCoverageIgnoreEnd + } + + return false; + } +} diff --git a/vendor/sebastian/type/src/type/FalseType.php b/vendor/sebastian/type/src/type/FalseType.php new file mode 100644 index 000000000..f417fb699 --- /dev/null +++ b/vendor/sebastian/type/src/type/FalseType.php @@ -0,0 +1,42 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class FalseType extends Type +{ + public function isAssignable(Type $other): bool + { + if ($other instanceof self) { + return true; + } + + return $other instanceof SimpleType && + $other->name() === 'bool' && + $other->value() === false; + } + + public function name(): string + { + return 'false'; + } + + public function allowsNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true FalseType $this + */ + public function isFalse(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/GenericObjectType.php b/vendor/sebastian/type/src/type/GenericObjectType.php similarity index 80% rename from vendor/sebastian/type/src/GenericObjectType.php rename to vendor/sebastian/type/src/type/GenericObjectType.php index 7e0a6d2b9..d06963f09 100644 --- a/vendor/sebastian/type/src/GenericObjectType.php +++ b/vendor/sebastian/type/src/type/GenericObjectType.php @@ -34,13 +34,21 @@ final class GenericObjectType extends Type return true; } - public function getReturnTypeDeclaration(): string + public function name(): string { - return ': ' . ($this->allowsNull ? '?' : '') . 'object'; + return 'object'; } public function allowsNull(): bool { return $this->allowsNull; } + + /** + * @psalm-assert-if-true GenericObjectType $this + */ + public function isGenericObject(): bool + { + return true; + } } diff --git a/vendor/sebastian/type/src/type/IntersectionType.php b/vendor/sebastian/type/src/type/IntersectionType.php new file mode 100644 index 000000000..4ac72ac9f --- /dev/null +++ b/vendor/sebastian/type/src/type/IntersectionType.php @@ -0,0 +1,126 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function array_unique; +use function assert; +use function count; +use function implode; +use function sort; + +final class IntersectionType extends Type +{ + /** + * @psalm-var non-empty-list<Type> + */ + private $types; + + /** + * @throws RuntimeException + */ + public function __construct(Type ...$types) + { + $this->ensureMinimumOfTwoTypes(...$types); + $this->ensureOnlyValidTypes(...$types); + $this->ensureNoDuplicateTypes(...$types); + + $this->types = $types; + } + + public function isAssignable(Type $other): bool + { + return $other->isObject(); + } + + public function asString(): string + { + return $this->name(); + } + + public function name(): string + { + $types = []; + + foreach ($this->types as $type) { + $types[] = $type->name(); + } + + sort($types); + + return implode('&', $types); + } + + public function allowsNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true IntersectionType $this + */ + public function isIntersection(): bool + { + return true; + } + + /** + * @psalm-return non-empty-list<Type> + */ + public function types(): array + { + return $this->types; + } + + /** + * @throws RuntimeException + */ + private function ensureMinimumOfTwoTypes(Type ...$types): void + { + if (count($types) < 2) { + throw new RuntimeException( + 'An intersection type must be composed of at least two types' + ); + } + } + + /** + * @throws RuntimeException + */ + private function ensureOnlyValidTypes(Type ...$types): void + { + foreach ($types as $type) { + if (!$type->isObject()) { + throw new RuntimeException( + 'An intersection type can only be composed of interfaces and classes' + ); + } + } + } + + /** + * @throws RuntimeException + */ + private function ensureNoDuplicateTypes(Type ...$types): void + { + $names = []; + + foreach ($types as $type) { + assert($type instanceof ObjectType); + + $names[] = $type->className()->qualifiedName(); + } + + if (count(array_unique($names)) < count($names)) { + throw new RuntimeException( + 'An intersection type must not contain duplicate types' + ); + } + } +} diff --git a/vendor/sebastian/type/src/type/IterableType.php b/vendor/sebastian/type/src/type/IterableType.php new file mode 100644 index 000000000..7b2a58fa4 --- /dev/null +++ b/vendor/sebastian/type/src/type/IterableType.php @@ -0,0 +1,84 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function assert; +use function class_exists; +use function is_iterable; +use ReflectionClass; +use ReflectionException; + +final class IterableType extends Type +{ + /** + * @var bool + */ + private $allowsNull; + + public function __construct(bool $nullable) + { + $this->allowsNull = $nullable; + } + + /** + * @throws RuntimeException + */ + public function isAssignable(Type $other): bool + { + if ($this->allowsNull && $other instanceof NullType) { + return true; + } + + if ($other instanceof self) { + return true; + } + + if ($other instanceof SimpleType) { + return is_iterable($other->value()); + } + + if ($other instanceof ObjectType) { + $className = $other->className()->qualifiedName(); + assert(class_exists($className)); + + try { + return (new ReflectionClass($className))->isIterable(); + // @codeCoverageIgnoreStart + } catch (ReflectionException $e) { + throw new RuntimeException( + $e->getMessage(), + (int) $e->getCode(), + $e + ); + // @codeCoverageIgnoreEnd + } + } + + return false; + } + + public function name(): string + { + return 'iterable'; + } + + public function allowsNull(): bool + { + return $this->allowsNull; + } + + /** + * @psalm-assert-if-true IterableType $this + */ + public function isIterable(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/MixedType.php b/vendor/sebastian/type/src/type/MixedType.php new file mode 100644 index 000000000..a1412e453 --- /dev/null +++ b/vendor/sebastian/type/src/type/MixedType.php @@ -0,0 +1,41 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class MixedType extends Type +{ + public function isAssignable(Type $other): bool + { + return !$other instanceof VoidType; + } + + public function asString(): string + { + return 'mixed'; + } + + public function name(): string + { + return 'mixed'; + } + + public function allowsNull(): bool + { + return true; + } + + /** + * @psalm-assert-if-true MixedType $this + */ + public function isMixed(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/NeverType.php b/vendor/sebastian/type/src/type/NeverType.php new file mode 100644 index 000000000..6c144743e --- /dev/null +++ b/vendor/sebastian/type/src/type/NeverType.php @@ -0,0 +1,36 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class NeverType extends Type +{ + public function isAssignable(Type $other): bool + { + return $other instanceof self; + } + + public function name(): string + { + return 'never'; + } + + public function allowsNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true NeverType $this + */ + public function isNever(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/NullType.php b/vendor/sebastian/type/src/type/NullType.php new file mode 100644 index 000000000..93834eabf --- /dev/null +++ b/vendor/sebastian/type/src/type/NullType.php @@ -0,0 +1,41 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class NullType extends Type +{ + public function isAssignable(Type $other): bool + { + return !($other instanceof VoidType); + } + + public function name(): string + { + return 'null'; + } + + public function asString(): string + { + return 'null'; + } + + public function allowsNull(): bool + { + return true; + } + + /** + * @psalm-assert-if-true NullType $this + */ + public function isNull(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/ObjectType.php b/vendor/sebastian/type/src/type/ObjectType.php new file mode 100644 index 000000000..44febb278 --- /dev/null +++ b/vendor/sebastian/type/src/type/ObjectType.php @@ -0,0 +1,74 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function is_subclass_of; +use function strcasecmp; + +final class ObjectType extends Type +{ + /** + * @var TypeName + */ + private $className; + + /** + * @var bool + */ + private $allowsNull; + + public function __construct(TypeName $className, bool $allowsNull) + { + $this->className = $className; + $this->allowsNull = $allowsNull; + } + + public function isAssignable(Type $other): bool + { + if ($this->allowsNull && $other instanceof NullType) { + return true; + } + + if ($other instanceof self) { + if (0 === strcasecmp($this->className->qualifiedName(), $other->className->qualifiedName())) { + return true; + } + + if (is_subclass_of($other->className->qualifiedName(), $this->className->qualifiedName(), true)) { + return true; + } + } + + return false; + } + + public function name(): string + { + return $this->className->qualifiedName(); + } + + public function allowsNull(): bool + { + return $this->allowsNull; + } + + public function className(): TypeName + { + return $this->className; + } + + /** + * @psalm-assert-if-true ObjectType $this + */ + public function isObject(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/SimpleType.php b/vendor/sebastian/type/src/type/SimpleType.php similarity index 77% rename from vendor/sebastian/type/src/SimpleType.php rename to vendor/sebastian/type/src/type/SimpleType.php index 07662b8f4..4dce75dab 100644 --- a/vendor/sebastian/type/src/SimpleType.php +++ b/vendor/sebastian/type/src/type/SimpleType.php @@ -9,6 +9,8 @@ */ namespace SebastianBergmann\Type; +use function strtolower; + final class SimpleType extends Type { /** @@ -39,6 +41,14 @@ final class SimpleType extends Type return true; } + if ($this->name === 'bool' && $other->name() === 'true') { + return true; + } + + if ($this->name === 'bool' && $other->name() === 'false') { + return true; + } + if ($other instanceof self) { return $this->name === $other->name; } @@ -46,9 +56,9 @@ final class SimpleType extends Type return false; } - public function getReturnTypeDeclaration(): string + public function name(): string { - return ': ' . ($this->allowsNull ? '?' : '') . $this->name; + return $this->name; } public function allowsNull(): bool @@ -61,9 +71,17 @@ final class SimpleType extends Type return $this->value; } + /** + * @psalm-assert-if-true SimpleType $this + */ + public function isSimple(): bool + { + return true; + } + private function normalize(string $name): string { - $name = \strtolower($name); + $name = strtolower($name); switch ($name) { case 'boolean': diff --git a/vendor/sebastian/type/src/type/StaticType.php b/vendor/sebastian/type/src/type/StaticType.php new file mode 100644 index 000000000..cbc13f5fe --- /dev/null +++ b/vendor/sebastian/type/src/type/StaticType.php @@ -0,0 +1,68 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class StaticType extends Type +{ + /** + * @var TypeName + */ + private $className; + + /** + * @var bool + */ + private $allowsNull; + + public function __construct(TypeName $className, bool $allowsNull) + { + $this->className = $className; + $this->allowsNull = $allowsNull; + } + + public function isAssignable(Type $other): bool + { + if ($this->allowsNull && $other instanceof NullType) { + return true; + } + + if (!$other instanceof ObjectType) { + return false; + } + + if (0 === strcasecmp($this->className->qualifiedName(), $other->className()->qualifiedName())) { + return true; + } + + if (is_subclass_of($other->className()->qualifiedName(), $this->className->qualifiedName(), true)) { + return true; + } + + return false; + } + + public function name(): string + { + return 'static'; + } + + public function allowsNull(): bool + { + return $this->allowsNull; + } + + /** + * @psalm-assert-if-true StaticType $this + */ + public function isStatic(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/TrueType.php b/vendor/sebastian/type/src/type/TrueType.php new file mode 100644 index 000000000..94e5be99d --- /dev/null +++ b/vendor/sebastian/type/src/type/TrueType.php @@ -0,0 +1,42 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class TrueType extends Type +{ + public function isAssignable(Type $other): bool + { + if ($other instanceof self) { + return true; + } + + return $other instanceof SimpleType && + $other->name() === 'bool' && + $other->value() === true; + } + + public function name(): string + { + return 'true'; + } + + public function allowsNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true TrueType $this + */ + public function isTrue(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/Type.php b/vendor/sebastian/type/src/type/Type.php new file mode 100644 index 000000000..e75366839 --- /dev/null +++ b/vendor/sebastian/type/src/type/Type.php @@ -0,0 +1,226 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use const PHP_VERSION; +use function get_class; +use function gettype; +use function strtolower; +use function version_compare; + +abstract class Type +{ + public static function fromValue($value, bool $allowsNull): self + { + if ($allowsNull === false) { + if ($value === true) { + return new TrueType; + } + + if ($value === false) { + return new FalseType; + } + } + + $typeName = gettype($value); + + if ($typeName === 'object') { + return new ObjectType(TypeName::fromQualifiedName(get_class($value)), $allowsNull); + } + + $type = self::fromName($typeName, $allowsNull); + + if ($type instanceof SimpleType) { + $type = new SimpleType($typeName, $allowsNull, $value); + } + + return $type; + } + + public static function fromName(string $typeName, bool $allowsNull): self + { + if (version_compare(PHP_VERSION, '8.1.0-dev', '>=') && strtolower($typeName) === 'never') { + return new NeverType; + } + + switch (strtolower($typeName)) { + case 'callable': + return new CallableType($allowsNull); + + case 'true': + return new TrueType; + + case 'false': + return new FalseType; + + case 'iterable': + return new IterableType($allowsNull); + + case 'null': + return new NullType; + + case 'object': + return new GenericObjectType($allowsNull); + + case 'unknown type': + return new UnknownType; + + case 'void': + return new VoidType; + + case 'array': + case 'bool': + case 'boolean': + case 'double': + case 'float': + case 'int': + case 'integer': + case 'real': + case 'resource': + case 'resource (closed)': + case 'string': + return new SimpleType($typeName, $allowsNull); + + default: + return new ObjectType(TypeName::fromQualifiedName($typeName), $allowsNull); + } + } + + public function asString(): string + { + return ($this->allowsNull() ? '?' : '') . $this->name(); + } + + /** + * @psalm-assert-if-true CallableType $this + */ + public function isCallable(): bool + { + return false; + } + + /** + * @psalm-assert-if-true TrueType $this + */ + public function isTrue(): bool + { + return false; + } + + /** + * @psalm-assert-if-true FalseType $this + */ + public function isFalse(): bool + { + return false; + } + + /** + * @psalm-assert-if-true GenericObjectType $this + */ + public function isGenericObject(): bool + { + return false; + } + + /** + * @psalm-assert-if-true IntersectionType $this + */ + public function isIntersection(): bool + { + return false; + } + + /** + * @psalm-assert-if-true IterableType $this + */ + public function isIterable(): bool + { + return false; + } + + /** + * @psalm-assert-if-true MixedType $this + */ + public function isMixed(): bool + { + return false; + } + + /** + * @psalm-assert-if-true NeverType $this + */ + public function isNever(): bool + { + return false; + } + + /** + * @psalm-assert-if-true NullType $this + */ + public function isNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true ObjectType $this + */ + public function isObject(): bool + { + return false; + } + + /** + * @psalm-assert-if-true SimpleType $this + */ + public function isSimple(): bool + { + return false; + } + + /** + * @psalm-assert-if-true StaticType $this + */ + public function isStatic(): bool + { + return false; + } + + /** + * @psalm-assert-if-true UnionType $this + */ + public function isUnion(): bool + { + return false; + } + + /** + * @psalm-assert-if-true UnknownType $this + */ + public function isUnknown(): bool + { + return false; + } + + /** + * @psalm-assert-if-true VoidType $this + */ + public function isVoid(): bool + { + return false; + } + + abstract public function isAssignable(self $other): bool; + + abstract public function name(): string; + + abstract public function allowsNull(): bool; +} diff --git a/vendor/sebastian/type/src/type/UnionType.php b/vendor/sebastian/type/src/type/UnionType.php new file mode 100644 index 000000000..427729c5d --- /dev/null +++ b/vendor/sebastian/type/src/type/UnionType.php @@ -0,0 +1,138 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +use function count; +use function implode; +use function sort; + +final class UnionType extends Type +{ + /** + * @psalm-var non-empty-list<Type> + */ + private $types; + + /** + * @throws RuntimeException + */ + public function __construct(Type ...$types) + { + $this->ensureMinimumOfTwoTypes(...$types); + $this->ensureOnlyValidTypes(...$types); + + $this->types = $types; + } + + public function isAssignable(Type $other): bool + { + foreach ($this->types as $type) { + if ($type->isAssignable($other)) { + return true; + } + } + + return false; + } + + public function asString(): string + { + return $this->name(); + } + + public function name(): string + { + $types = []; + + foreach ($this->types as $type) { + if ($type->isIntersection()) { + $types[] = '(' . $type->name() . ')'; + + continue; + } + + $types[] = $type->name(); + } + + sort($types); + + return implode('|', $types); + } + + public function allowsNull(): bool + { + foreach ($this->types as $type) { + if ($type instanceof NullType) { + return true; + } + } + + return false; + } + + /** + * @psalm-assert-if-true UnionType $this + */ + public function isUnion(): bool + { + return true; + } + + public function containsIntersectionTypes(): bool + { + foreach ($this->types as $type) { + if ($type->isIntersection()) { + return true; + } + } + + return false; + } + + /** + * @psalm-return non-empty-list<Type> + */ + public function types(): array + { + return $this->types; + } + + /** + * @throws RuntimeException + */ + private function ensureMinimumOfTwoTypes(Type ...$types): void + { + if (count($types) < 2) { + throw new RuntimeException( + 'A union type must be composed of at least two types' + ); + } + } + + /** + * @throws RuntimeException + */ + private function ensureOnlyValidTypes(Type ...$types): void + { + foreach ($types as $type) { + if ($type instanceof UnknownType) { + throw new RuntimeException( + 'A union type must not be composed of an unknown type' + ); + } + + if ($type instanceof VoidType) { + throw new RuntimeException( + 'A union type must not be composed of a void type' + ); + } + } + } +} diff --git a/vendor/sebastian/type/src/type/UnknownType.php b/vendor/sebastian/type/src/type/UnknownType.php new file mode 100644 index 000000000..dc2744077 --- /dev/null +++ b/vendor/sebastian/type/src/type/UnknownType.php @@ -0,0 +1,41 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class UnknownType extends Type +{ + public function isAssignable(Type $other): bool + { + return true; + } + + public function name(): string + { + return 'unknown type'; + } + + public function asString(): string + { + return ''; + } + + public function allowsNull(): bool + { + return true; + } + + /** + * @psalm-assert-if-true UnknownType $this + */ + public function isUnknown(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/src/type/VoidType.php b/vendor/sebastian/type/src/type/VoidType.php new file mode 100644 index 000000000..f740fe29f --- /dev/null +++ b/vendor/sebastian/type/src/type/VoidType.php @@ -0,0 +1,36 @@ +<?php declare(strict_types=1); +/* + * This file is part of sebastian/type. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace SebastianBergmann\Type; + +final class VoidType extends Type +{ + public function isAssignable(Type $other): bool + { + return $other instanceof self; + } + + public function name(): string + { + return 'void'; + } + + public function allowsNull(): bool + { + return false; + } + + /** + * @psalm-assert-if-true VoidType $this + */ + public function isVoid(): bool + { + return true; + } +} diff --git a/vendor/sebastian/type/tests/_fixture/ChildClass.php b/vendor/sebastian/type/tests/_fixture/ChildClass.php deleted file mode 100644 index 41e424549..000000000 --- a/vendor/sebastian/type/tests/_fixture/ChildClass.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -class ChildClass extends ParentClass -{ -} diff --git a/vendor/sebastian/type/tests/_fixture/ClassWithCallbackMethods.php b/vendor/sebastian/type/tests/_fixture/ClassWithCallbackMethods.php deleted file mode 100644 index 46137b464..000000000 --- a/vendor/sebastian/type/tests/_fixture/ClassWithCallbackMethods.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -final class ClassWithCallbackMethods -{ - public static function staticCallback(): void - { - } - - public function nonStaticCallback(): void - { - } -} diff --git a/vendor/sebastian/type/tests/_fixture/ClassWithInvokeMethod.php b/vendor/sebastian/type/tests/_fixture/ClassWithInvokeMethod.php deleted file mode 100644 index 1765570b1..000000000 --- a/vendor/sebastian/type/tests/_fixture/ClassWithInvokeMethod.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -final class ClassWithInvokeMethod -{ - public function __invoke(): void - { - } -} diff --git a/vendor/sebastian/type/tests/_fixture/Iterator.php b/vendor/sebastian/type/tests/_fixture/Iterator.php deleted file mode 100644 index e234dbe85..000000000 --- a/vendor/sebastian/type/tests/_fixture/Iterator.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -final class Iterator implements \Iterator -{ - public function current(): void - { - } - - public function next(): void - { - } - - public function key(): void - { - } - - public function valid(): void - { - } - - public function rewind(): void - { - } -} diff --git a/vendor/sebastian/type/tests/_fixture/ParentClass.php b/vendor/sebastian/type/tests/_fixture/ParentClass.php deleted file mode 100644 index 4c28a5ea4..000000000 --- a/vendor/sebastian/type/tests/_fixture/ParentClass.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -class ParentClass -{ - public function foo(): void - { - } -} diff --git a/vendor/sebastian/type/tests/_fixture/callback_function.php b/vendor/sebastian/type/tests/_fixture/callback_function.php deleted file mode 100644 index 8dc1807d2..000000000 --- a/vendor/sebastian/type/tests/_fixture/callback_function.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type\TestFixture; - -function callback_function(): void -{ -} diff --git a/vendor/sebastian/type/tests/unit/CallableTypeTest.php b/vendor/sebastian/type/tests/unit/CallableTypeTest.php deleted file mode 100644 index 126ceddd0..000000000 --- a/vendor/sebastian/type/tests/unit/CallableTypeTest.php +++ /dev/null @@ -1,150 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Type\TestFixture\ClassWithCallbackMethods; -use SebastianBergmann\Type\TestFixture\ClassWithInvokeMethod; - -/** - * @covers \SebastianBergmann\Type\CallableType - * - * @uses \SebastianBergmann\Type\Type - * @uses \SebastianBergmann\Type\ObjectType - * @uses \SebastianBergmann\Type\SimpleType - * @uses \SebastianBergmann\Type\TypeName - */ -final class CallableTypeTest extends TestCase -{ - /** - * @var CallableType - */ - private $type; - - protected function setUp(): void - { - $this->type = new CallableType(false); - } - - public function testMayDisallowNull(): void - { - $this->assertFalse($this->type->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $this->assertEquals(': callable', $this->type->getReturnTypeDeclaration()); - } - - public function testMayAllowNull(): void - { - $type = new CallableType(true); - - $this->assertTrue($type->allowsNull()); - } - - public function testCanGenerateNullableReturnTypeDeclaration(): void - { - $type = new CallableType(true); - - $this->assertEquals(': ?callable', $type->getReturnTypeDeclaration()); - } - - public function testNullCanBeAssignedToNullableCallable(): void - { - $type = new CallableType(true); - - $this->assertTrue($type->isAssignable(new NullType)); - } - - public function testCallableCanBeAssignedToCallable(): void - { - $this->assertTrue($this->type->isAssignable(new CallableType(false))); - } - - public function testClosureCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - new ObjectType( - TypeName::fromQualifiedName(\Closure::class), - false - ) - ) - ); - } - - public function testInvokableCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - new ObjectType( - TypeName::fromQualifiedName(ClassWithInvokeMethod::class), - false - ) - ) - ); - } - - public function testStringWithFunctionNameCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue('SebastianBergmann\Type\TestFixture\callback_function', false) - ) - ); - } - - public function testStringWithClassNameAndStaticMethodNameCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue(ClassWithCallbackMethods::class . '::staticCallback', false) - ) - ); - } - - public function testArrayWithClassNameAndStaticMethodNameCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue([ClassWithCallbackMethods::class, 'staticCallback'], false) - ) - ); - } - - public function testArrayWithClassNameAndInstanceMethodNameCanBeAssignedToCallable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue([new ClassWithCallbackMethods, 'nonStaticCallback'], false) - ) - ); - } - - public function testSomethingThatIsNotCallableCannotBeAssignedToCallable(): void - { - $this->assertFalse( - $this->type->isAssignable( - Type::fromValue(null, false) - ) - ); - } - - public function testObjectWithoutInvokeMethodCannotBeAssignedToCallable(): void - { - $this->assertFalse( - $this->type->isAssignable( - Type::fromValue(new class { - }, false) - ) - ); - } -} diff --git a/vendor/sebastian/type/tests/unit/GenericObjectTypeTest.php b/vendor/sebastian/type/tests/unit/GenericObjectTypeTest.php deleted file mode 100644 index 2017371d1..000000000 --- a/vendor/sebastian/type/tests/unit/GenericObjectTypeTest.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\GenericObjectType - * - * @uses \SebastianBergmann\Type\Type - * @uses \SebastianBergmann\Type\ObjectType - * @uses \SebastianBergmann\Type\SimpleType - * @uses \SebastianBergmann\Type\TypeName - */ -final class GenericObjectTypeTest extends TestCase -{ - /** - * @var GenericObjectType - */ - private $type; - - protected function setUp(): void - { - $this->type = new GenericObjectType(false); - } - - public function testMayDisallowNull(): void - { - $this->assertFalse($this->type->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $this->assertEquals(': object', $this->type->getReturnTypeDeclaration()); - } - - public function testMayAllowNull(): void - { - $type = new GenericObjectType(true); - - $this->assertTrue($type->allowsNull()); - } - - public function testCanGenerateNullableReturnTypeDeclaration(): void - { - $type = new GenericObjectType(true); - - $this->assertEquals(': ?object', $type->getReturnTypeDeclaration()); - } - - public function testObjectCanBeAssignedToGenericObject(): void - { - $this->assertTrue( - $this->type->isAssignable( - new ObjectType(TypeName::fromQualifiedName(\stdClass::class), false) - ) - ); - } - - public function testNullCanBeAssignedToNullableGenericObject(): void - { - $type = new GenericObjectType(true); - - $this->assertTrue( - $type->isAssignable( - new NullType - ) - ); - } - - public function testNonObjectCannotBeAssignedToGenericObject(): void - { - $this->assertFalse( - $this->type->isAssignable( - new SimpleType('bool', false) - ) - ); - } -} diff --git a/vendor/sebastian/type/tests/unit/IterableTypeTest.php b/vendor/sebastian/type/tests/unit/IterableTypeTest.php deleted file mode 100644 index 5493222f2..000000000 --- a/vendor/sebastian/type/tests/unit/IterableTypeTest.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Type\TestFixture\Iterator; - -/** - * @covers \SebastianBergmann\Type\IterableType - * - * @uses \SebastianBergmann\Type\Type - * @uses \SebastianBergmann\Type\TypeName - * @uses \SebastianBergmann\Type\ObjectType - * @uses \SebastianBergmann\Type\SimpleType - */ -final class IterableTypeTest extends TestCase -{ - /** - * @var IterableType - */ - private $type; - - protected function setUp(): void - { - $this->type = new IterableType(false); - } - - public function testMayDisallowNull(): void - { - $this->assertFalse($this->type->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $this->assertEquals(': iterable', $this->type->getReturnTypeDeclaration()); - } - - public function testMayAllowNull(): void - { - $type = new IterableType(true); - - $this->assertTrue($type->allowsNull()); - } - - public function testCanGenerateNullableReturnTypeDeclaration(): void - { - $type = new IterableType(true); - - $this->assertEquals(': ?iterable', $type->getReturnTypeDeclaration()); - } - - public function testNullCanBeAssignedToNullableIterable(): void - { - $type = new IterableType(true); - - $this->assertTrue($type->isAssignable(new NullType)); - } - - public function testIterableCanBeAssignedToIterable(): void - { - $this->assertTrue($this->type->isAssignable(new IterableType(false))); - } - - public function testArrayCanBeAssignedToIterable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue([], false) - ) - ); - } - - public function testIteratorCanBeAssignedToIterable(): void - { - $this->assertTrue( - $this->type->isAssignable( - Type::fromValue(new Iterator, false) - ) - ); - } - - public function testSomethingThatIsNotIterableCannotBeAssignedToIterable(): void - { - $this->assertFalse( - $this->type->isAssignable( - Type::fromValue(null, false) - ) - ); - } -} diff --git a/vendor/sebastian/type/tests/unit/NullTypeTest.php b/vendor/sebastian/type/tests/unit/NullTypeTest.php deleted file mode 100644 index 7f4862eb3..000000000 --- a/vendor/sebastian/type/tests/unit/NullTypeTest.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\NullType - */ -final class NullTypeTest extends TestCase -{ - /** - * @var NullType - */ - private $type; - - protected function setUp(): void - { - $this->type = new NullType; - } - - /** - * @dataProvider assignableTypes - */ - public function testIsAssignable(Type $assignableType): void - { - $this->assertTrue($this->type->isAssignable($assignableType)); - } - - public function assignableTypes(): array - { - return [ - [new SimpleType('int', false)], - [new SimpleType('int', true)], - [new ObjectType(TypeName::fromQualifiedName(self::class), false)], - [new ObjectType(TypeName::fromQualifiedName(self::class), true)], - [new UnknownType], - ]; - } - - /** - * @dataProvider notAssignable - */ - public function testIsNotAssignable(Type $assignedType): void - { - $this->assertFalse($this->type->isAssignable($assignedType)); - } - - public function notAssignable(): array - { - return [ - 'void' => [new VoidType], - ]; - } - - public function testAllowsNull(): void - { - $this->assertTrue($this->type->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $this->assertEquals('', $this->type->getReturnTypeDeclaration()); - } -} diff --git a/vendor/sebastian/type/tests/unit/ObjectTypeTest.php b/vendor/sebastian/type/tests/unit/ObjectTypeTest.php deleted file mode 100644 index bbf64bb31..000000000 --- a/vendor/sebastian/type/tests/unit/ObjectTypeTest.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; -use SebastianBergmann\Type\TestFixture\ChildClass; -use SebastianBergmann\Type\TestFixture\ParentClass; - -/** - * @covers \SebastianBergmann\Type\ObjectType - * - * @uses \SebastianBergmann\Type\TypeName - * @uses \SebastianBergmann\Type\Type - * @uses \SebastianBergmann\Type\SimpleType - */ -final class ObjectTypeTest extends TestCase -{ - /** - * @var ObjectType - */ - private $childClass; - - /** - * @var ObjectType - */ - private $parentClass; - - protected function setUp(): void - { - $this->childClass = new ObjectType( - TypeName::fromQualifiedName(ChildClass::class), - false - ); - - $this->parentClass = new ObjectType( - TypeName::fromQualifiedName(ParentClass::class), - false - ); - } - - public function testParentIsNotAssignableToChild(): void - { - $this->assertFalse($this->childClass->isAssignable($this->parentClass)); - } - - public function testChildIsAssignableToParent(): void - { - $this->assertTrue($this->parentClass->isAssignable($this->childClass)); - } - - public function testClassIsAssignableToSelf(): void - { - $this->assertTrue($this->parentClass->isAssignable($this->parentClass)); - } - - public function testSimpleTypeIsNotAssignableToClass(): void - { - $this->assertFalse($this->parentClass->isAssignable(new SimpleType('int', false))); - } - - public function testClassFromOneNamespaceIsNotAssignableToClassInOtherNamespace(): void - { - $classFromNamespaceA = new ObjectType( - TypeName::fromQualifiedName(\someNamespaceA\NamespacedClass::class), - false - ); - - $classFromNamespaceB = new ObjectType( - TypeName::fromQualifiedName(\someNamespaceB\NamespacedClass::class), - false - ); - $this->assertFalse($classFromNamespaceA->isAssignable($classFromNamespaceB)); - } - - public function testClassIsAssignableToSelfCaseInsensitively(): void - { - $classLowercased = new ObjectType( - TypeName::fromQualifiedName(\strtolower(ParentClass::class)), - false - ); - - $this->assertTrue($this->parentClass->isAssignable($classLowercased)); - } - - public function testNullIsAssignableToNullableType(): void - { - $someClass = new ObjectType( - TypeName::fromQualifiedName(ParentClass::class), - true - ); - $this->assertTrue($someClass->isAssignable(Type::fromValue(null, true))); - } - - public function testNullIsNotAssignableToNotNullableType(): void - { - $someClass = new ObjectType( - TypeName::fromQualifiedName(ParentClass::class), - false - ); - - $this->assertFalse($someClass->isAssignable(Type::fromValue(null, true))); - } - - public function testPreservesNullNotAllowed(): void - { - $someClass = new ObjectType( - TypeName::fromQualifiedName(ParentClass::class), - false - ); - - $this->assertFalse($someClass->allowsNull()); - } - - public function testPreservesNullAllowed(): void - { - $someClass = new ObjectType( - TypeName::fromQualifiedName(ParentClass::class), - true - ); - - $this->assertTrue($someClass->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $this->assertEquals(': SebastianBergmann\Type\TestFixture\ParentClass', $this->parentClass->getReturnTypeDeclaration()); - } - - public function testHasClassName(): void - { - $this->assertEquals('SebastianBergmann\Type\TestFixture\ParentClass', $this->parentClass->className()->getQualifiedName()); - } -} diff --git a/vendor/sebastian/type/tests/unit/SimpleTypeTest.php b/vendor/sebastian/type/tests/unit/SimpleTypeTest.php deleted file mode 100644 index d795e8c28..000000000 --- a/vendor/sebastian/type/tests/unit/SimpleTypeTest.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\SimpleType - * - * @uses \SebastianBergmann\Type\Type - */ -final class SimpleTypeTest extends TestCase -{ - public function testCanBeBool(): void - { - $type = new SimpleType('bool', false); - - $this->assertSame(': bool', $type->getReturnTypeDeclaration()); - } - - public function testCanBeBoolean(): void - { - $type = new SimpleType('boolean', false); - - $this->assertSame(': bool', $type->getReturnTypeDeclaration()); - } - - public function testCanBeDouble(): void - { - $type = new SimpleType('double', false); - - $this->assertSame(': float', $type->getReturnTypeDeclaration()); - } - - public function testCanBeFloat(): void - { - $type = new SimpleType('float', false); - - $this->assertSame(': float', $type->getReturnTypeDeclaration()); - } - - public function testCanBeReal(): void - { - $type = new SimpleType('real', false); - - $this->assertSame(': float', $type->getReturnTypeDeclaration()); - } - - public function testCanBeInt(): void - { - $type = new SimpleType('int', false); - - $this->assertSame(': int', $type->getReturnTypeDeclaration()); - } - - public function testCanBeInteger(): void - { - $type = new SimpleType('integer', false); - - $this->assertSame(': int', $type->getReturnTypeDeclaration()); - } - - public function testCanBeArray(): void - { - $type = new SimpleType('array', false); - - $this->assertSame(': array', $type->getReturnTypeDeclaration()); - } - - public function testCanBeArray2(): void - { - $type = new SimpleType('[]', false); - - $this->assertSame(': array', $type->getReturnTypeDeclaration()); - } - - public function testMayAllowNull(): void - { - $type = new SimpleType('bool', true); - - $this->assertTrue($type->allowsNull()); - $this->assertSame(': ?bool', $type->getReturnTypeDeclaration()); - } - - public function testMayNotAllowNull(): void - { - $type = new SimpleType('bool', false); - - $this->assertFalse($type->allowsNull()); - } - - /** - * @dataProvider assignablePairs - */ - public function testIsAssignable(Type $assignTo, Type $assignedType): void - { - $this->assertTrue($assignTo->isAssignable($assignedType)); - } - - public function assignablePairs(): array - { - return [ - 'nullable to not nullable' => [new SimpleType('int', false), new SimpleType('int', true)], - 'not nullable to nullable' => [new SimpleType('int', true), new SimpleType('int', false)], - 'nullable to nullable' => [new SimpleType('int', true), new SimpleType('int', true)], - 'not nullable to not nullable' => [new SimpleType('int', false), new SimpleType('int', false)], - 'null to not nullable' => [new SimpleType('int', true), new NullType], - ]; - } - - /** - * @dataProvider notAssignablePairs - */ - public function testIsNotAssignable(Type $assignTo, Type $assignedType): void - { - $this->assertFalse($assignTo->isAssignable($assignedType)); - } - - public function notAssignablePairs(): array - { - return [ - 'null to not nullable' => [new SimpleType('int', false), new NullType], - 'int to boolean' => [new SimpleType('boolean', false), new SimpleType('int', false)], - 'object' => [new SimpleType('boolean', false), new ObjectType(TypeName::fromQualifiedName(\stdClass::class), true)], - 'unknown type' => [new SimpleType('boolean', false), new UnknownType], - 'void' => [new SimpleType('boolean', false), new VoidType], - ]; - } - - /** - * @dataProvider returnTypes - */ - public function testReturnTypeDeclaration(Type $type, string $returnType): void - { - $this->assertEquals($type->getReturnTypeDeclaration(), $returnType); - } - - public function returnTypes(): array - { - return [ - '[]' => [new SimpleType('[]', false), ': array'], - 'array' => [new SimpleType('array', false), ': array'], - '?array' => [new SimpleType('array', true), ': ?array'], - 'boolean' => [new SimpleType('boolean', false), ': bool'], - 'real' => [new SimpleType('real', false), ': float'], - 'double' => [new SimpleType('double', false), ': float'], - 'integer' => [new SimpleType('integer', false), ': int'], - ]; - } - - public function testCanHaveValue(): void - { - $this->assertSame('string', Type::fromValue('string', false)->value()); - } -} diff --git a/vendor/sebastian/type/tests/unit/TypeNameTest.php b/vendor/sebastian/type/tests/unit/TypeNameTest.php deleted file mode 100644 index 4e24a9ab9..000000000 --- a/vendor/sebastian/type/tests/unit/TypeNameTest.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\TypeName - */ -final class TypeNameTest extends TestCase -{ - public function testFromReflection(): void - { - $class = new \ReflectionClass(TypeName::class); - $typeName = TypeName::fromReflection($class); - - $this->assertTrue($typeName->isNamespaced()); - $this->assertEquals('SebastianBergmann\\Type', $typeName->getNamespaceName()); - $this->assertEquals(TypeName::class, $typeName->getQualifiedName()); - $this->assertEquals('TypeName', $typeName->getSimpleName()); - } - - public function testFromQualifiedName(): void - { - $typeName = TypeName::fromQualifiedName('PHPUnit\\Framework\\MockObject\\TypeName'); - - $this->assertTrue($typeName->isNamespaced()); - $this->assertEquals('PHPUnit\\Framework\\MockObject', $typeName->getNamespaceName()); - $this->assertEquals('PHPUnit\\Framework\\MockObject\\TypeName', $typeName->getQualifiedName()); - $this->assertEquals('TypeName', $typeName->getSimpleName()); - } - - public function testFromQualifiedNameWithLeadingSeparator(): void - { - $typeName = TypeName::fromQualifiedName('\\Foo\\Bar'); - - $this->assertTrue($typeName->isNamespaced()); - $this->assertEquals('Foo', $typeName->getNamespaceName()); - $this->assertEquals('Foo\\Bar', $typeName->getQualifiedName()); - $this->assertEquals('Bar', $typeName->getSimpleName()); - } - - public function testFromQualifiedNameWithoutNamespace(): void - { - $typeName = TypeName::fromQualifiedName('Bar'); - - $this->assertFalse($typeName->isNamespaced()); - $this->assertNull($typeName->getNamespaceName()); - $this->assertEquals('Bar', $typeName->getQualifiedName()); - $this->assertEquals('Bar', $typeName->getSimpleName()); - } -} diff --git a/vendor/sebastian/type/tests/unit/TypeTest.php b/vendor/sebastian/type/tests/unit/TypeTest.php deleted file mode 100644 index 5bc4b7d51..000000000 --- a/vendor/sebastian/type/tests/unit/TypeTest.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\Type - * - * @uses \SebastianBergmann\Type\SimpleType - * @uses \SebastianBergmann\Type\GenericObjectType - * @uses \SebastianBergmann\Type\ObjectType - * @uses \SebastianBergmann\Type\TypeName - * @uses \SebastianBergmann\Type\CallableType - * @uses \SebastianBergmann\Type\IterableType - */ -final class TypeTest extends TestCase -{ - /** - * @dataProvider valuesToNullableType - */ - public function testTypeMappingFromValue($value, bool $allowsNull, Type $expectedType): void - { - $this->assertEquals($expectedType, Type::fromValue($value, $allowsNull)); - } - - public function valuesToNullableType(): array - { - return [ - '?null' => [null, true, new NullType], - 'null' => [null, false, new NullType], - '?integer' => [1, true, new SimpleType('int', true, 1)], - 'integer' => [1, false, new SimpleType('int', false, 1)], - '?boolean' => [true, true, new SimpleType('bool', true, true)], - 'boolean' => [true, false, new SimpleType('bool', false, true)], - '?object' => [new \stdClass, true, new ObjectType(TypeName::fromQualifiedName(\stdClass::class), true)], - 'object' => [new \stdClass, false, new ObjectType(TypeName::fromQualifiedName(\stdClass::class), false)], - ]; - } - - /** - * @dataProvider namesToTypes - */ - public function testTypeMappingFromName(string $typeName, bool $allowsNull, $expectedType): void - { - $this->assertEquals($expectedType, Type::fromName($typeName, $allowsNull)); - } - - public function namesToTypes(): array - { - return [ - '?void' => ['void', true, new VoidType], - 'void' => ['void', false, new VoidType], - '?null' => ['null', true, new NullType], - 'null' => ['null', true, new NullType], - '?int' => ['int', true, new SimpleType('int', true)], - '?integer' => ['integer', true, new SimpleType('int', true)], - 'int' => ['int', false, new SimpleType('int', false)], - 'bool' => ['bool', false, new SimpleType('bool', false)], - 'boolean' => ['boolean', false, new SimpleType('bool', false)], - 'object' => ['object', false, new GenericObjectType(false)], - 'real' => ['real', false, new SimpleType('float', false)], - 'double' => ['double', false, new SimpleType('float', false)], - 'float' => ['float', false, new SimpleType('float', false)], - 'string' => ['string', false, new SimpleType('string', false)], - 'array' => ['array', false, new SimpleType('array', false)], - 'resource' => ['resource', false, new SimpleType('resource', false)], - 'resource (closed)' => ['resource (closed)', false, new SimpleType('resource (closed)', false)], - 'unknown type' => ['unknown type', false, new UnknownType], - '?classname' => [\stdClass::class, true, new ObjectType(TypeName::fromQualifiedName(\stdClass::class), true)], - 'classname' => [\stdClass::class, false, new ObjectType(TypeName::fromQualifiedName(\stdClass::class), false)], - 'callable' => ['callable', false, new CallableType(false)], - '?callable' => ['callable', true, new CallableType(true)], - 'iterable' => ['iterable', false, new IterableType(false)], - '?iterable' => ['iterable', true, new IterableType(true)], - ]; - } -} diff --git a/vendor/sebastian/type/tests/unit/UnknownTypeTest.php b/vendor/sebastian/type/tests/unit/UnknownTypeTest.php deleted file mode 100644 index bfa90f60b..000000000 --- a/vendor/sebastian/type/tests/unit/UnknownTypeTest.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\UnknownType - */ -final class UnknownTypeTest extends TestCase -{ - /** - * @var UnknownType - */ - private $type; - - protected function setUp(): void - { - $this->type = new UnknownType; - } - - /** - * @dataProvider assignableTypes - */ - public function testIsAssignable(Type $assignableType): void - { - $this->assertTrue($this->type->isAssignable($assignableType)); - } - - public function assignableTypes(): array - { - return [ - [new SimpleType('int', false)], - [new SimpleType('int', true)], - [new VoidType], - [new ObjectType(TypeName::fromQualifiedName(self::class), false)], - [new ObjectType(TypeName::fromQualifiedName(self::class), true)], - [new UnknownType], - ]; - } - - public function testAllowsNull(): void - { - $this->assertTrue($this->type->allowsNull()); - } - - public function testReturnTypeDeclaration(): void - { - $this->assertEquals('', $this->type->getReturnTypeDeclaration()); - } -} diff --git a/vendor/sebastian/type/tests/unit/VoidTypeTest.php b/vendor/sebastian/type/tests/unit/VoidTypeTest.php deleted file mode 100644 index 794052fdd..000000000 --- a/vendor/sebastian/type/tests/unit/VoidTypeTest.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php declare(strict_types=1); -/* - * This file is part of sebastian/type. - * - * (c) Sebastian Bergmann <sebastian@phpunit.de> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace SebastianBergmann\Type; - -use PHPUnit\Framework\TestCase; - -/** - * @covers \SebastianBergmann\Type\VoidType - */ -final class VoidTypeTest extends TestCase -{ - /** - * @dataProvider assignableTypes - */ - public function testIsAssignable(Type $assignableType): void - { - $type = new VoidType; - - $this->assertTrue($type->isAssignable($assignableType)); - } - - public function assignableTypes(): array - { - return [ - [new VoidType], - ]; - } - - /** - * @dataProvider notAssignableTypes - */ - public function testIsNotAssignable(Type $assignableType): void - { - $type = new VoidType; - - $this->assertFalse($type->isAssignable($assignableType)); - } - - public function notAssignableTypes(): array - { - return [ - [new SimpleType('int', false)], - [new SimpleType('int', true)], - [new ObjectType(TypeName::fromQualifiedName(self::class), false)], - [new ObjectType(TypeName::fromQualifiedName(self::class), true)], - [new UnknownType], - ]; - } - - public function testNotAllowNull(): void - { - $type = new VoidType; - - $this->assertFalse($type->allowsNull()); - } - - public function testCanGenerateReturnTypeDeclaration(): void - { - $type = new VoidType; - - $this->assertEquals(': void', $type->getReturnTypeDeclaration()); - } -} diff --git a/vendor/sebastian/version/.gitattributes b/vendor/sebastian/version/.gitattributes index 461090b7e..54b895305 100644 --- a/vendor/sebastian/version/.gitattributes +++ b/vendor/sebastian/version/.gitattributes @@ -1 +1,4 @@ +/.github export-ignore +/.php_cs.dist export-ignore + *.php diff=php diff --git a/vendor/sebastian/version/.gitignore b/vendor/sebastian/version/.gitignore index a09c56df5..ff5ec9a0e 100644 --- a/vendor/sebastian/version/.gitignore +++ b/vendor/sebastian/version/.gitignore @@ -1 +1,2 @@ +/.php_cs.cache /.idea diff --git a/vendor/sebastian/version/.php_cs b/vendor/sebastian/version/.php_cs deleted file mode 100644 index 8cbc57c79..000000000 --- a/vendor/sebastian/version/.php_cs +++ /dev/null @@ -1,66 +0,0 @@ -<?php -$finder = Symfony\CS\Finder\DefaultFinder::create() - ->files() - ->in('src') - ->name('*.php'); - -return Symfony\CS\Config\Config::create() - ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) - ->fixers( - array( - 'align_double_arrow', - 'align_equals', - 'braces', - 'concat_with_spaces', - 'duplicate_semicolon', - 'elseif', - 'empty_return', - 'encoding', - 'eof_ending', - 'extra_empty_lines', - 'function_call_space', - 'function_declaration', - 'indentation', - 'join_function', - 'line_after_namespace', - 'linefeed', - 'list_commas', - 'lowercase_constants', - 'lowercase_keywords', - 'method_argument_space', - 'multiple_use', - 'namespace_no_leading_whitespace', - 'no_blank_lines_after_class_opening', - 'no_empty_lines_after_phpdocs', - 'parenthesis', - 'php_closing_tag', - 'phpdoc_indent', - 'phpdoc_no_access', - 'phpdoc_no_empty_return', - 'phpdoc_no_package', - 'phpdoc_params', - 'phpdoc_scalar', - 'phpdoc_separation', - 'phpdoc_to_comment', - 'phpdoc_trim', - 'phpdoc_types', - 'phpdoc_var_without_name', - 'remove_lines_between_uses', - 'return', - 'self_accessor', - 'short_array_syntax', - 'short_tag', - 'single_line_after_imports', - 'single_quote', - 'spaces_before_semicolon', - 'spaces_cast', - 'ternary_spaces', - 'trailing_spaces', - 'trim_array_spaces', - 'unused_use', - 'visibility', - 'whitespacy_lines' - ) - ) - ->finder($finder); - diff --git a/vendor/sebastian/version/ChangeLog.md b/vendor/sebastian/version/ChangeLog.md new file mode 100644 index 000000000..10fd9a1a5 --- /dev/null +++ b/vendor/sebastian/version/ChangeLog.md @@ -0,0 +1,25 @@ +# ChangeLog + +All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [3.0.2] - 2020-09-28 + +### Changed + +* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3` + +## [3.0.1] - 2020-06-26 + +### Added + +* This component is now supported on PHP 8 + +## [3.0.0] - 2020-01-21 + +### Removed + +* This component is no longer supported on PHP 7.1 and PHP 7.2 + +[3.0.2]: https://github.com/sebastianbergmann/version/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/version/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/version/compare/2.0.1...3.0.0 diff --git a/vendor/sebastian/version/LICENSE b/vendor/sebastian/version/LICENSE index 5b79c41f6..aa6bca299 100644 --- a/vendor/sebastian/version/LICENSE +++ b/vendor/sebastian/version/LICENSE @@ -1,6 +1,6 @@ Version -Copyright (c) 2013-2015, Sebastian Bergmann <sebastian@phpunit.de>. +Copyright (c) 2013-2020, Sebastian Bergmann <sebastian@phpunit.de>. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/vendor/sebastian/version/composer.json b/vendor/sebastian/version/composer.json index 3b87814c1..e76dbf412 100644 --- a/vendor/sebastian/version/composer.json +++ b/vendor/sebastian/version/composer.json @@ -13,8 +13,16 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues" }, + "config": { + "platform": { + "php": "7.3.0" + }, + "optimize-autoloader": true, + "sort-packages": true + }, + "prefer-stable": true, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "autoload": { "classmap": [ @@ -23,7 +31,7 @@ }, "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } } } diff --git a/vendor/sebastian/version/src/Version.php b/vendor/sebastian/version/src/Version.php index fc4cfecbf..53ae7894e 100644 --- a/vendor/sebastian/version/src/Version.php +++ b/vendor/sebastian/version/src/Version.php @@ -1,6 +1,6 @@ <?php /* - * This file is part of the Version package. + * This file is part of sebastian/version. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * @@ -10,10 +10,7 @@ namespace SebastianBergmann; -/** - * @since Class available since Release 1.0.0 - */ -class Version +final class Version { /** * @var string @@ -30,23 +27,16 @@ class Version */ private $version; - /** - * @param string $release - * @param string $path - */ - public function __construct($release, $path) + public function __construct(string $release, string $path) { $this->release = $release; $this->path = $path; } - /** - * @return string - */ - public function getVersion() + public function getVersion(): string { if ($this->version === null) { - if (count(explode('.', $this->release)) == 3) { + if (\substr_count($this->release, '.') + 1 === 3) { $this->version = $this->release; } else { $this->version = $this->release . '-dev'; @@ -55,12 +45,12 @@ class Version $git = $this->getGitInformation($this->path); if ($git) { - if (count(explode('.', $this->release)) == 3) { + if (\substr_count($this->release, '.') + 1 === 3) { $this->version = $git; } else { - $git = explode('-', $git); + $git = \explode('-', $git); - $this->version = $this->release . '-' . end($git); + $this->version = $this->release . '-' . \end($git); } } } @@ -69,17 +59,15 @@ class Version } /** - * @param string $path - * * @return bool|string */ - private function getGitInformation($path) + private function getGitInformation(string $path) { - if (!is_dir($path . DIRECTORY_SEPARATOR . '.git')) { + if (!\is_dir($path . DIRECTORY_SEPARATOR . '.git')) { return false; } - $process = proc_open( + $process = \proc_open( 'git describe --tags', [ 1 => ['pipe', 'w'], @@ -89,16 +77,16 @@ class Version $path ); - if (!is_resource($process)) { + if (!\is_resource($process)) { return false; } - $result = trim(stream_get_contents($pipes[1])); + $result = \trim(\stream_get_contents($pipes[1])); - fclose($pipes[1]); - fclose($pipes[2]); + \fclose($pipes[1]); + \fclose($pipes[2]); - $returnCode = proc_close($process); + $returnCode = \proc_close($process); if ($returnCode !== 0) { return false; diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php index 42c4911a0..29951e9c1 100644 --- a/vendor/symfony/console/Application.php +++ b/vendor/symfony/console/Application.php @@ -12,16 +12,24 @@ namespace Symfony\Component\Console; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Command\CompleteCommand; +use Symfony\Component\Console\Command\DumpCompletionCommand; use Symfony\Component\Console\Command\HelpCommand; +use Symfony\Component\Console\Command\LazyCommand; use Symfony\Component\Console\Command\ListCommand; +use Symfony\Component\Console\Command\SignalableCommandInterface; use Symfony\Component\Console\CommandLoader\CommandLoaderInterface; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Event\ConsoleCommandEvent; use Symfony\Component\Console\Event\ConsoleErrorEvent; +use Symfony\Component\Console\Event\ConsoleSignalEvent; use Symfony\Component\Console\Event\ConsoleTerminateEvent; use Symfony\Component\Console\Exception\CommandNotFoundException; use Symfony\Component\Console\Exception\ExceptionInterface; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Exception\NamespaceNotFoundException; +use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Helper\DebugFormatterHelper; use Symfony\Component\Console\Helper\FormatterHelper; @@ -39,12 +47,10 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\SignalRegistry\SignalRegistry; use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\Debug\ErrorHandler as LegacyErrorHandler; -use Symfony\Component\Debug\Exception\FatalThrowableError; use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Contracts\Service\ResetInterface; /** @@ -79,25 +85,27 @@ class Application implements ResetInterface private $defaultCommand; private $singleCommand = false; private $initialized; + private $signalRegistry; + private $signalsToDispatchEvent = []; - /** - * @param string $name The name of the application - * @param string $version The version of the application - */ public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN') { $this->name = $name; $this->version = $version; $this->terminal = new Terminal(); $this->defaultCommand = 'list'; + if (\defined('SIGINT') && SignalRegistry::isSupported()) { + $this->signalRegistry = new SignalRegistry(); + $this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; + } } /** - * @final since Symfony 4.3, the type-hint will be updated to the interface from symfony/contracts in 5.0 + * @final */ public function setDispatcher(EventDispatcherInterface $dispatcher) { - $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher); + $this->dispatcher = $dispatcher; } public function setCommandLoader(CommandLoaderInterface $commandLoader) @@ -105,6 +113,20 @@ class Application implements ResetInterface $this->commandLoader = $commandLoader; } + public function getSignalRegistry(): SignalRegistry + { + if (!$this->signalRegistry) { + throw new RuntimeException('Signals are not supported. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); + } + + return $this->signalRegistry; + } + + public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) + { + $this->signalsToDispatchEvent = $signalsToDispatchEvent; + } + /** * Runs the current application. * @@ -136,7 +158,7 @@ class Application implements ResetInterface }; if ($phpHandler = set_exception_handler($renderException)) { restore_exception_handler(); - if (!\is_array($phpHandler) || (!$phpHandler[0] instanceof ErrorHandler && !$phpHandler[0] instanceof LegacyErrorHandler)) { + if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { $errorHandler = true; } elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { $phpHandler[0]->setExceptionHandler($errorHandler); @@ -271,6 +293,10 @@ class Application implements ResetInterface $command = $this->find($alternative); } + if ($command instanceof LazyCommand) { + $command = $command->getCommand(); + } + $this->runningCommand = $command; $exitCode = $this->doRunCommand($command, $input, $output); $this->runningCommand = null; @@ -293,7 +319,7 @@ class Application implements ResetInterface /** * Get the helper set associated with the command. * - * @return HelperSet The HelperSet instance associated with this command + * @return HelperSet */ public function getHelperSet() { @@ -312,7 +338,7 @@ class Application implements ResetInterface /** * Gets the InputDefinition related to this Application. * - * @return InputDefinition The InputDefinition instance + * @return InputDefinition */ public function getDefinition() { @@ -330,10 +356,42 @@ class Application implements ResetInterface return $this->definition; } + /** + * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). + */ + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ( + CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() + && 'command' === $input->getCompletionName() + ) { + $commandNames = []; + foreach ($this->all() as $name => $command) { + // skip hidden commands and aliased commands as they already get added below + if ($command->isHidden() || $command->getName() !== $name) { + continue; + } + $commandNames[] = $command->getName(); + foreach ($command->getAliases() as $name) { + $commandNames[] = $name; + } + } + $suggestions->suggestValues(array_filter($commandNames)); + + return; + } + + if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { + $suggestions->suggestOptions($this->getDefinition()->getOptions()); + + return; + } + } + /** * Gets the help message. * - * @return string A help message + * @return string */ public function getHelp() { @@ -343,7 +401,7 @@ class Application implements ResetInterface /** * Gets whether to catch exceptions or not during commands execution. * - * @return bool Whether to catch exceptions or not during commands execution + * @return bool */ public function areExceptionsCaught() { @@ -352,18 +410,16 @@ class Application implements ResetInterface /** * Sets whether to catch exceptions or not during commands execution. - * - * @param bool $boolean Whether to catch exceptions or not during commands execution */ - public function setCatchExceptions($boolean) + public function setCatchExceptions(bool $boolean) { - $this->catchExceptions = (bool) $boolean; + $this->catchExceptions = $boolean; } /** * Gets whether to automatically exit after a command execution or not. * - * @return bool Whether to automatically exit after a command execution or not + * @return bool */ public function isAutoExitEnabled() { @@ -372,18 +428,16 @@ class Application implements ResetInterface /** * Sets whether to automatically exit after a command execution or not. - * - * @param bool $boolean Whether to automatically exit after a command execution or not */ - public function setAutoExit($boolean) + public function setAutoExit(bool $boolean) { - $this->autoExit = (bool) $boolean; + $this->autoExit = $boolean; } /** * Gets the name of the application. * - * @return string The application name + * @return string */ public function getName() { @@ -392,10 +446,8 @@ class Application implements ResetInterface /** * Sets the application name. - * - * @param string $name The application name - */ - public function setName($name) + **/ + public function setName(string $name) { $this->name = $name; } @@ -403,7 +455,7 @@ class Application implements ResetInterface /** * Gets the application version. * - * @return string The application version + * @return string */ public function getVersion() { @@ -412,10 +464,8 @@ class Application implements ResetInterface /** * Sets the application version. - * - * @param string $version The application version */ - public function setVersion($version) + public function setVersion(string $version) { $this->version = $version; } @@ -423,7 +473,7 @@ class Application implements ResetInterface /** * Returns the long version of the application. * - * @return string The long application version + * @return string */ public function getLongVersion() { @@ -441,11 +491,9 @@ class Application implements ResetInterface /** * Registers a new command. * - * @param string $name The command name - * - * @return Command The newly created command + * @return Command */ - public function register($name) + public function register(string $name) { return $this->add(new Command($name)); } @@ -470,7 +518,7 @@ class Application implements ResetInterface * If a command with the same name already exists, it will be overridden. * If the command is not enabled it will not be added. * - * @return Command|null The registered command if enabled or null + * @return Command|null */ public function add(Command $command) { @@ -484,11 +532,13 @@ class Application implements ResetInterface return null; } - // Will throw if the command is not correctly initialized. - $command->getDefinition(); + if (!$command instanceof LazyCommand) { + // Will throw if the command is not correctly initialized. + $command->getDefinition(); + } if (!$command->getName()) { - throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', \get_class($command))); + throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); } $this->commands[$command->getName()] = $command; @@ -503,13 +553,11 @@ class Application implements ResetInterface /** * Returns a registered command by name or alias. * - * @param string $name The command name or alias - * - * @return Command A Command object + * @return Command * * @throws CommandNotFoundException When given command name does not exist */ - public function get($name) + public function get(string $name) { $this->init(); @@ -539,11 +587,9 @@ class Application implements ResetInterface /** * Returns true if the command exists, false otherwise. * - * @param string $name The command name or alias - * - * @return bool true if the command exists, false otherwise + * @return bool */ - public function has($name) + public function has(string $name) { $this->init(); @@ -555,7 +601,7 @@ class Application implements ResetInterface * * It does not return the global namespace which always exists. * - * @return string[] An array of namespaces + * @return string[] */ public function getNamespaces() { @@ -565,29 +611,27 @@ class Application implements ResetInterface continue; } - $namespaces = array_merge($namespaces, $this->extractAllNamespaces($command->getName())); + $namespaces[] = $this->extractAllNamespaces($command->getName()); foreach ($command->getAliases() as $alias) { - $namespaces = array_merge($namespaces, $this->extractAllNamespaces($alias)); + $namespaces[] = $this->extractAllNamespaces($alias); } } - return array_values(array_unique(array_filter($namespaces))); + return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); } /** * Finds a registered namespace by a name or an abbreviation. * - * @param string $namespace A namespace or abbreviation to search for - * - * @return string A registered namespace + * @return string * * @throws NamespaceNotFoundException When namespace is incorrect or ambiguous */ - public function findNamespace($namespace) + public function findNamespace(string $namespace) { $allNamespaces = $this->getNamespaces(); - $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $namespace); + $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); if (empty($namespaces)) { @@ -620,13 +664,11 @@ class Application implements ResetInterface * Contrary to get, this command tries to find the best * match if you give it an abbreviation of a name or alias. * - * @param string $name A command name or a command alias - * - * @return Command A Command instance + * @return Command * * @throws CommandNotFoundException When command name is incorrect or ambiguous */ - public function find($name) + public function find(string $name) { $this->init(); @@ -645,7 +687,7 @@ class Application implements ResetInterface } $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); - $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $name); + $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; $commands = preg_grep('{^'.$expr.'}', $allCommands); if (empty($commands)) { @@ -699,7 +741,7 @@ class Application implements ResetInterface $abbrevs = array_values($commands); $maxLen = 0; foreach ($abbrevs as $abbrev) { - $maxLen = max(Helper::strlen($abbrev), $maxLen); + $maxLen = max(Helper::width($abbrev), $maxLen); } $abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { if ($commandList[$cmd]->isHidden()) { @@ -710,7 +752,7 @@ class Application implements ResetInterface $abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); - return Helper::strlen($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; + return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; }, array_values($commands)); if (\count($commands) > 1) { @@ -723,7 +765,7 @@ class Application implements ResetInterface $command = $this->get(reset($commands)); if ($command->isHidden()) { - @trigger_error(sprintf('Command "%s" is hidden, finding it using an abbreviation is deprecated since Symfony 4.4, use its full name instead.', $command->getName()), \E_USER_DEPRECATED); + throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); } return $command; @@ -734,11 +776,9 @@ class Application implements ResetInterface * * The array keys are the full names and the values the command instances. * - * @param string $namespace A namespace name - * - * @return Command[] An array of Command instances + * @return Command[] */ - public function all($namespace = null) + public function all(string $namespace = null) { $this->init(); @@ -778,11 +818,9 @@ class Application implements ResetInterface /** * Returns an array of possible abbreviations given a set of names. * - * @param array $names An array of names - * - * @return array An array of abbreviations + * @return string[][] */ - public static function getAbbreviations($names) + public static function getAbbreviations(array $names) { $abbrevs = []; foreach ($names as $name) { @@ -795,86 +833,26 @@ class Application implements ResetInterface return $abbrevs; } - /** - * Renders a caught exception. - * - * @deprecated since Symfony 4.4, use "renderThrowable()" instead - */ - public function renderException(\Exception $e, OutputInterface $output) - { - @trigger_error(sprintf('The "%s::renderException()" method is deprecated since Symfony 4.4, use "renderThrowable()" instead.', __CLASS__), \E_USER_DEPRECATED); - - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - - $this->doRenderException($e, $output); - - $this->finishRenderThrowableOrException($output); - } - public function renderThrowable(\Throwable $e, OutputInterface $output): void { - if (__CLASS__ !== static::class && __CLASS__ === (new \ReflectionMethod($this, 'renderThrowable'))->getDeclaringClass()->getName() && __CLASS__ !== (new \ReflectionMethod($this, 'renderException'))->getDeclaringClass()->getName()) { - @trigger_error(sprintf('The "%s::renderException()" method is deprecated since Symfony 4.4, use "renderThrowable()" instead.', __CLASS__), \E_USER_DEPRECATED); - - if (!$e instanceof \Exception) { - $e = class_exists(FatalThrowableError::class) ? new FatalThrowableError($e) : new \ErrorException($e->getMessage(), $e->getCode(), \E_ERROR, $e->getFile(), $e->getLine()); - } - - $this->renderException($e, $output); - - return; - } - $output->writeln('', OutputInterface::VERBOSITY_QUIET); $this->doRenderThrowable($e, $output); - $this->finishRenderThrowableOrException($output); - } - - private function finishRenderThrowableOrException(OutputInterface $output): void - { if (null !== $this->runningCommand) { $output->writeln(sprintf('<info>%s</info>', OutputFormatter::escape(sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); $output->writeln('', OutputInterface::VERBOSITY_QUIET); } } - /** - * @deprecated since Symfony 4.4, use "doRenderThrowable()" instead - */ - protected function doRenderException(\Exception $e, OutputInterface $output) - { - @trigger_error(sprintf('The "%s::doRenderException()" method is deprecated since Symfony 4.4, use "doRenderThrowable()" instead.', __CLASS__), \E_USER_DEPRECATED); - - $this->doActuallyRenderThrowable($e, $output); - } - protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void - { - if (__CLASS__ !== static::class && __CLASS__ === (new \ReflectionMethod($this, 'doRenderThrowable'))->getDeclaringClass()->getName() && __CLASS__ !== (new \ReflectionMethod($this, 'doRenderException'))->getDeclaringClass()->getName()) { - @trigger_error(sprintf('The "%s::doRenderException()" method is deprecated since Symfony 4.4, use "doRenderThrowable()" instead.', __CLASS__), \E_USER_DEPRECATED); - - if (!$e instanceof \Exception) { - $e = class_exists(FatalThrowableError::class) ? new FatalThrowableError($e) : new \ErrorException($e->getMessage(), $e->getCode(), \E_ERROR, $e->getFile(), $e->getLine()); - } - - $this->doRenderException($e, $output); - - return; - } - - $this->doActuallyRenderThrowable($e, $output); - } - - private function doActuallyRenderThrowable(\Throwable $e, OutputInterface $output): void { do { $message = trim($e->getMessage()); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $class = get_debug_type($e); $title = sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); - $len = Helper::strlen($title); + $len = Helper::width($title); } else { $len = 0; } @@ -890,7 +868,7 @@ class Application implements ResetInterface foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { foreach ($this->splitStringByWidth($line, $width - 4) as $line) { // pre-format lines to get the right string length - $lineLength = Helper::strlen($line) + 4; + $lineLength = Helper::width($line) + 4; $lines[] = [$line, $lineLength]; $len = max($lineLength, $len); @@ -903,7 +881,7 @@ class Application implements ResetInterface } $messages[] = $emptyLine = sprintf('<error>%s</error>', str_repeat(' ', $len)); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = sprintf('<error>%s%s</error>', $title, str_repeat(' ', max(0, $len - Helper::strlen($title)))); + $messages[] = sprintf('<error>%s%s</error>', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); } foreach ($lines as $line) { $messages[] = sprintf('<error> %s %s</error>', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); @@ -1017,6 +995,47 @@ class Application implements ResetInterface } } + if ($this->signalsToDispatchEvent) { + $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; + + if ($commandSignals || null !== $this->dispatcher) { + if (!$this->signalRegistry) { + throw new RuntimeException('Unable to subscribe to signal events. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); + } + + if (Terminal::hasSttyAvailable()) { + $sttyMode = shell_exec('stty -g'); + + foreach ([\SIGINT, \SIGTERM] as $signal) { + $this->signalRegistry->register($signal, static function () use ($sttyMode) { + shell_exec('stty '.$sttyMode); + }); + } + } + } + + if (null !== $this->dispatcher) { + foreach ($this->signalsToDispatchEvent as $signal) { + $event = new ConsoleSignalEvent($command, $input, $output, $signal); + + $this->signalRegistry->register($signal, function ($signal, $hasNext) use ($event) { + $this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); + + // No more handlers, we try to simulate PHP default behavior + if (!$hasNext) { + if (!\in_array($signal, [\SIGUSR1, \SIGUSR2], true)) { + exit(0); + } + } + }); + } + } + + foreach ($commandSignals as $signal) { + $this->signalRegistry->register($signal, [$command, 'handleSignal']); + } + } + if (null === $this->dispatcher) { return $command->run($input, $output); } @@ -1073,19 +1092,17 @@ class Application implements ResetInterface /** * Gets the default input definition. * - * @return InputDefinition An InputDefinition instance + * @return InputDefinition */ protected function getDefaultInputDefinition() { return new InputDefinition([ new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message'), + new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the <info>'.$this->defaultCommand.'</info> command'), new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), - new InputOption('--ansi', '', InputOption::VALUE_NONE, 'Force ANSI output'), - new InputOption('--no-ansi', '', InputOption::VALUE_NONE, 'Disable ANSI output'), + new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), ]); } @@ -1093,17 +1110,17 @@ class Application implements ResetInterface /** * Gets the default commands that should always be available. * - * @return Command[] An array of default Command instances + * @return Command[] */ protected function getDefaultCommands() { - return [new HelpCommand(), new ListCommand()]; + return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; } /** * Gets the default helper set with the helpers that should always be available. * - * @return HelperSet A HelperSet instance + * @return HelperSet */ protected function getDefaultHelperSet() { @@ -1128,12 +1145,9 @@ class Application implements ResetInterface * * This method is not part of public API and should not be used directly. * - * @param string $name The full name of the command - * @param string $limit The maximum number of parts of the namespace - * - * @return string The namespace of the command + * @return string */ - public function extractNamespace($name, $limit = null) + public function extractNamespace(string $name, int $limit = null) { $parts = explode(':', $name, -1); @@ -1144,7 +1158,7 @@ class Application implements ResetInterface * Finds alternative of $name among $collection, * if nothing is found in $collection, try in $abbrevs. * - * @return string[] A sorted array of similar string + * @return string[] */ private function findAlternatives(string $name, iterable $collection): array { @@ -1191,14 +1205,11 @@ class Application implements ResetInterface /** * Sets the default Command name. * - * @param string $commandName The Command name - * @param bool $isSingleCommand Set to true if there is only one command in this application - * - * @return self + * @return $this */ - public function setDefaultCommand($commandName, $isSingleCommand = false) + public function setDefaultCommand(string $commandName, bool $isSingleCommand = false) { - $this->defaultCommand = $commandName; + $this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; if ($isSingleCommand) { // Ensure the command exist @@ -1257,7 +1268,7 @@ class Application implements ResetInterface /** * Returns all namespaces of the command name. * - * @return string[] The namespaces of the command + * @return string[] */ private function extractAllNamespaces(string $name): array { diff --git a/vendor/symfony/console/Attribute/AsCommand.php b/vendor/symfony/console/Attribute/AsCommand.php new file mode 100644 index 000000000..b337f548f --- /dev/null +++ b/vendor/symfony/console/Attribute/AsCommand.php @@ -0,0 +1,39 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Attribute; + +/** + * Service tag to autoconfigure commands. + */ +#[\Attribute(\Attribute::TARGET_CLASS)] +class AsCommand +{ + public function __construct( + public string $name, + public ?string $description = null, + array $aliases = [], + bool $hidden = false, + ) { + if (!$hidden && !$aliases) { + return; + } + + $name = explode('|', $name); + $name = array_merge($name, $aliases); + + if ($hidden && '' !== $name[0]) { + array_unshift($name, ''); + } + + $this->name = implode('|', $name); + } +} diff --git a/vendor/symfony/console/CHANGELOG.md b/vendor/symfony/console/CHANGELOG.md index 515924455..6662dd1eb 100644 --- a/vendor/symfony/console/CHANGELOG.md +++ b/vendor/symfony/console/CHANGELOG.md @@ -1,6 +1,61 @@ CHANGELOG ========= +5.4 +--- + + * Add `TesterTrait::assertCommandIsSuccessful()` to test command + * Deprecate `HelperSet::setCommand()` and `getCommand()` without replacement + +5.3 +--- + + * Add `GithubActionReporter` to render annotations in a Github Action + * Add `InputOption::VALUE_NEGATABLE` flag to handle `--foo`/`--no-foo` options + * Add the `Command::$defaultDescription` static property and the `description` attribute + on the `console.command` tag to allow the `list` command to instantiate commands lazily + * Add option `--short` to the `list` command + * Add support for bright colors + * Add `#[AsCommand]` attribute for declaring commands on PHP 8 + * Add `Helper::width()` and `Helper::length()` + * The `--ansi` and `--no-ansi` options now default to `null`. + +5.2.0 +----- + + * Added `SingleCommandApplication::setAutoExit()` to allow testing via `CommandTester` + * added support for multiline responses to questions through `Question::setMultiline()` + and `Question::isMultiline()` + * Added `SignalRegistry` class to stack signals handlers + * Added support for signals: + * Added `Application::getSignalRegistry()` and `Application::setSignalsToDispatchEvent()` methods + * Added `SignalableCommandInterface` interface + * Added `TableCellStyle` class to customize table cell + * Removed `php ` prefix invocation from help messages. + +5.1.0 +----- + + * `Command::setHidden()` is final since Symfony 5.1 + * Add `SingleCommandApplication` + * Add `Cursor` class + +5.0.0 +----- + + * removed support for finding hidden commands using an abbreviation, use the full name instead + * removed `TableStyle::setCrossingChar()` method in favor of `TableStyle::setDefaultCrossingChar()` + * removed `TableStyle::setHorizontalBorderChar()` method in favor of `TableStyle::setDefaultCrossingChars()` + * removed `TableStyle::getHorizontalBorderChar()` method in favor of `TableStyle::getBorderChars()` + * removed `TableStyle::setVerticalBorderChar()` method in favor of `TableStyle::setVerticalBorderChars()` + * removed `TableStyle::getVerticalBorderChar()` method in favor of `TableStyle::getBorderChars()` + * removed support for returning `null` from `Command::execute()`, return `0` instead + * `ProcessHelper::run()` accepts only `array|Symfony\Component\Process\Process` for its `command` argument + * `Application::setDispatcher` accepts only `Symfony\Contracts\EventDispatcher\EventDispatcherInterface` + for its `dispatcher` argument + * renamed `Application::renderException()` and `Application::doRenderException()` + to `renderThrowable()` and `doRenderThrowable()` respectively. + 4.4.0 ----- diff --git a/vendor/symfony/console/CI/GithubActionReporter.php b/vendor/symfony/console/CI/GithubActionReporter.php new file mode 100644 index 000000000..a15c1ff18 --- /dev/null +++ b/vendor/symfony/console/CI/GithubActionReporter.php @@ -0,0 +1,99 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\CI; + +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Utility class for Github actions. + * + * @author Maxime Steinhausser <maxime.steinhausser@gmail.com> + */ +class GithubActionReporter +{ + private $output; + + /** + * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L80-L85 + */ + private const ESCAPED_DATA = [ + '%' => '%25', + "\r" => '%0D', + "\n" => '%0A', + ]; + + /** + * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L87-L94 + */ + private const ESCAPED_PROPERTIES = [ + '%' => '%25', + "\r" => '%0D', + "\n" => '%0A', + ':' => '%3A', + ',' => '%2C', + ]; + + public function __construct(OutputInterface $output) + { + $this->output = $output; + } + + public static function isGithubActionEnvironment(): bool + { + return false !== getenv('GITHUB_ACTIONS'); + } + + /** + * Output an error using the Github annotations format. + * + * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-error-message + */ + public function error(string $message, string $file = null, int $line = null, int $col = null): void + { + $this->log('error', $message, $file, $line, $col); + } + + /** + * Output a warning using the Github annotations format. + * + * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message + */ + public function warning(string $message, string $file = null, int $line = null, int $col = null): void + { + $this->log('warning', $message, $file, $line, $col); + } + + /** + * Output a debug log using the Github annotations format. + * + * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-debug-message + */ + public function debug(string $message, string $file = null, int $line = null, int $col = null): void + { + $this->log('debug', $message, $file, $line, $col); + } + + private function log(string $type, string $message, string $file = null, int $line = null, int $col = null): void + { + // Some values must be encoded. + $message = strtr($message, self::ESCAPED_DATA); + + if (!$file) { + // No file provided, output the message solely: + $this->output->writeln(sprintf('::%s::%s', $type, $message)); + + return; + } + + $this->output->writeln(sprintf('::%s file=%s,line=%s,col=%s::%s', $type, strtr($file, self::ESCAPED_PROPERTIES), strtr($line ?? 1, self::ESCAPED_PROPERTIES), strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); + } +} diff --git a/vendor/symfony/console/Color.php b/vendor/symfony/console/Color.php new file mode 100644 index 000000000..22a4ce9ff --- /dev/null +++ b/vendor/symfony/console/Color.php @@ -0,0 +1,180 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console; + +use Symfony\Component\Console\Exception\InvalidArgumentException; + +/** + * @author Fabien Potencier <fabien@symfony.com> + */ +final class Color +{ + private const COLORS = [ + 'black' => 0, + 'red' => 1, + 'green' => 2, + 'yellow' => 3, + 'blue' => 4, + 'magenta' => 5, + 'cyan' => 6, + 'white' => 7, + 'default' => 9, + ]; + + private const BRIGHT_COLORS = [ + 'gray' => 0, + 'bright-red' => 1, + 'bright-green' => 2, + 'bright-yellow' => 3, + 'bright-blue' => 4, + 'bright-magenta' => 5, + 'bright-cyan' => 6, + 'bright-white' => 7, + ]; + + private const AVAILABLE_OPTIONS = [ + 'bold' => ['set' => 1, 'unset' => 22], + 'underscore' => ['set' => 4, 'unset' => 24], + 'blink' => ['set' => 5, 'unset' => 25], + 'reverse' => ['set' => 7, 'unset' => 27], + 'conceal' => ['set' => 8, 'unset' => 28], + ]; + + private $foreground; + private $background; + private $options = []; + + public function __construct(string $foreground = '', string $background = '', array $options = []) + { + $this->foreground = $this->parseColor($foreground); + $this->background = $this->parseColor($background, true); + + foreach ($options as $option) { + if (!isset(self::AVAILABLE_OPTIONS[$option])) { + throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(self::AVAILABLE_OPTIONS)))); + } + + $this->options[$option] = self::AVAILABLE_OPTIONS[$option]; + } + } + + public function apply(string $text): string + { + return $this->set().$text.$this->unset(); + } + + public function set(): string + { + $setCodes = []; + if ('' !== $this->foreground) { + $setCodes[] = $this->foreground; + } + if ('' !== $this->background) { + $setCodes[] = $this->background; + } + foreach ($this->options as $option) { + $setCodes[] = $option['set']; + } + if (0 === \count($setCodes)) { + return ''; + } + + return sprintf("\033[%sm", implode(';', $setCodes)); + } + + public function unset(): string + { + $unsetCodes = []; + if ('' !== $this->foreground) { + $unsetCodes[] = 39; + } + if ('' !== $this->background) { + $unsetCodes[] = 49; + } + foreach ($this->options as $option) { + $unsetCodes[] = $option['unset']; + } + if (0 === \count($unsetCodes)) { + return ''; + } + + return sprintf("\033[%sm", implode(';', $unsetCodes)); + } + + private function parseColor(string $color, bool $background = false): string + { + if ('' === $color) { + return ''; + } + + if ('#' === $color[0]) { + $color = substr($color, 1); + + if (3 === \strlen($color)) { + $color = $color[0].$color[0].$color[1].$color[1].$color[2].$color[2]; + } + + if (6 !== \strlen($color)) { + throw new InvalidArgumentException(sprintf('Invalid "%s" color.', $color)); + } + + return ($background ? '4' : '3').$this->convertHexColorToAnsi(hexdec($color)); + } + + if (isset(self::COLORS[$color])) { + return ($background ? '4' : '3').self::COLORS[$color]; + } + + if (isset(self::BRIGHT_COLORS[$color])) { + return ($background ? '10' : '9').self::BRIGHT_COLORS[$color]; + } + + throw new InvalidArgumentException(sprintf('Invalid "%s" color; expected one of (%s).', $color, implode(', ', array_merge(array_keys(self::COLORS), array_keys(self::BRIGHT_COLORS))))); + } + + private function convertHexColorToAnsi(int $color): string + { + $r = ($color >> 16) & 255; + $g = ($color >> 8) & 255; + $b = $color & 255; + + // see https://github.com/termstandard/colors/ for more information about true color support + if ('truecolor' !== getenv('COLORTERM')) { + return (string) $this->degradeHexColorToAnsi($r, $g, $b); + } + + return sprintf('8;2;%d;%d;%d', $r, $g, $b); + } + + private function degradeHexColorToAnsi(int $r, int $g, int $b): int + { + if (0 === round($this->getSaturation($r, $g, $b) / 50)) { + return 0; + } + + return (round($b / 255) << 2) | (round($g / 255) << 1) | round($r / 255); + } + + private function getSaturation(int $r, int $g, int $b): int + { + $r = $r / 255; + $g = $g / 255; + $b = $b / 255; + $v = max($r, $g, $b); + + if (0 === $diff = $v - min($r, $g, $b)) { + return 0; + } + + return (int) $diff * 100 / $v; + } +} diff --git a/vendor/symfony/console/Command/Command.php b/vendor/symfony/console/Command/Command.php index b0c1bf864..e0593e17a 100644 --- a/vendor/symfony/console/Command/Command.php +++ b/vendor/symfony/console/Command/Command.php @@ -12,6 +12,9 @@ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Application; +use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Exception\ExceptionInterface; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; @@ -29,11 +32,21 @@ use Symfony\Component\Console\Output\OutputInterface; */ class Command { + // see https://tldp.org/LDP/abs/html/exitcodes.html + public const SUCCESS = 0; + public const FAILURE = 1; + public const INVALID = 2; + /** * @var string|null The default command name */ protected static $defaultName; + /** + * @var string|null The default command description + */ + protected static $defaultDescription; + private $application; private $name; private $processTitle; @@ -42,25 +55,42 @@ class Command private $hidden = false; private $help = ''; private $description = ''; + private $fullDefinition; private $ignoreValidationErrors = false; - private $applicationDefinitionMerged = false; - private $applicationDefinitionMergedWithArgs = false; private $code; private $synopsis = []; private $usages = []; private $helperSet; /** - * @return string|null The default command name or null when no default name is set + * @return string|null */ public static function getDefaultName() { $class = static::class; + + if (\PHP_VERSION_ID >= 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { + return $attribute[0]->newInstance()->name; + } + $r = new \ReflectionProperty($class, 'defaultName'); return $class === $r->class ? static::$defaultName : null; } + public static function getDefaultDescription(): ?string + { + $class = static::class; + + if (\PHP_VERSION_ID >= 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { + return $attribute[0]->newInstance()->description; + } + + $r = new \ReflectionProperty($class, 'defaultDescription'); + + return $class === $r->class ? static::$defaultDescription : null; + } + /** * @param string|null $name The name of the command; passing null means it must be set in configure() * @@ -70,10 +100,25 @@ class Command { $this->definition = new InputDefinition(); - if (null !== $name || null !== $name = static::getDefaultName()) { + if (null === $name && null !== $name = static::getDefaultName()) { + $aliases = explode('|', $name); + + if ('' === $name = array_shift($aliases)) { + $this->setHidden(true); + $name = array_shift($aliases); + } + + $this->setAliases($aliases); + } + + if (null !== $name) { $this->setName($name); } + if ('' === $this->description) { + $this->setDescription(static::getDefaultDescription() ?? ''); + } + $this->configure(); } @@ -95,6 +140,8 @@ class Command } else { $this->helperSet = null; } + + $this->fullDefinition = null; } public function setHelperSet(HelperSet $helperSet) @@ -105,7 +152,7 @@ class Command /** * Gets the helper set. * - * @return HelperSet|null A HelperSet instance + * @return HelperSet|null */ public function getHelperSet() { @@ -115,7 +162,7 @@ class Command /** * Gets the application instance for this command. * - * @return Application|null An Application instance + * @return Application|null */ public function getApplication() { @@ -125,7 +172,7 @@ class Command /** * Checks whether the command is enabled or not in the current environment. * - * Override this to check for x or y and return false if the command can not + * Override this to check for x or y and return false if the command cannot * run properly under the current conditions. * * @return bool @@ -202,16 +249,12 @@ class Command */ public function run(InputInterface $input, OutputInterface $output) { - // force the creation of the synopsis before the merge with the app definition - $this->getSynopsis(true); - $this->getSynopsis(false); - // add the application arguments and options $this->mergeApplicationDefinition(); // bind the input against the command specific arguments/options try { - $input->bind($this->definition); + $input->bind($this->getDefinition()); } catch (ExceptionInterface $e) { if (!$this->ignoreValidationErrors) { throw $e; @@ -255,13 +298,20 @@ class Command $statusCode = $this->execute($input, $output); if (!\is_int($statusCode)) { - @trigger_error(sprintf('Return value of "%s::execute()" should always be of the type int since Symfony 4.4, %s returned.', static::class, \gettype($statusCode)), \E_USER_DEPRECATED); + throw new \TypeError(sprintf('Return value of "%s::execute()" must be of the type int, "%s" returned.', static::class, get_debug_type($statusCode))); } } return is_numeric($statusCode) ? (int) $statusCode : 0; } + /** + * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). + */ + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + } + /** * Sets the code to execute when running this command. * @@ -303,23 +353,24 @@ class Command * This method is not part of public API and should not be used directly. * * @param bool $mergeArgs Whether to merge or not the Application definition arguments to Command definition arguments + * + * @internal */ - public function mergeApplicationDefinition($mergeArgs = true) + public function mergeApplicationDefinition(bool $mergeArgs = true) { - if (null === $this->application || (true === $this->applicationDefinitionMerged && ($this->applicationDefinitionMergedWithArgs || !$mergeArgs))) { + if (null === $this->application) { return; } - $this->definition->addOptions($this->application->getDefinition()->getOptions()); - - $this->applicationDefinitionMerged = true; + $this->fullDefinition = new InputDefinition(); + $this->fullDefinition->setOptions($this->definition->getOptions()); + $this->fullDefinition->addOptions($this->application->getDefinition()->getOptions()); if ($mergeArgs) { - $currentArguments = $this->definition->getArguments(); - $this->definition->setArguments($this->application->getDefinition()->getArguments()); - $this->definition->addArguments($currentArguments); - - $this->applicationDefinitionMergedWithArgs = true; + $this->fullDefinition->setArguments($this->application->getDefinition()->getArguments()); + $this->fullDefinition->addArguments($this->definition->getArguments()); + } else { + $this->fullDefinition->setArguments($this->definition->getArguments()); } } @@ -338,7 +389,7 @@ class Command $this->definition->setDefinition($definition); } - $this->applicationDefinitionMerged = false; + $this->fullDefinition = null; return $this; } @@ -346,15 +397,11 @@ class Command /** * Gets the InputDefinition attached to this Command. * - * @return InputDefinition An InputDefinition instance + * @return InputDefinition */ public function getDefinition() { - if (null === $this->definition) { - throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); - } - - return $this->definition; + return $this->fullDefinition ?? $this->getNativeDefinition(); } /** @@ -365,28 +412,33 @@ class Command * * This method is not part of public API and should not be used directly. * - * @return InputDefinition An InputDefinition instance + * @return InputDefinition */ public function getNativeDefinition() { - return $this->getDefinition(); + if (null === $this->definition) { + throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); + } + + return $this->definition; } /** * Adds an argument. * - * @param string $name The argument name - * @param int|null $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL - * @param string $description A description text - * @param mixed $default The default value (for InputArgument::OPTIONAL mode only) + * @param int|null $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL + * @param mixed $default The default value (for InputArgument::OPTIONAL mode only) * * @throws InvalidArgumentException When argument mode is not valid * * @return $this */ - public function addArgument($name, $mode = null, $description = '', $default = null) + public function addArgument(string $name, int $mode = null, string $description = '', $default = null) { $this->definition->addArgument(new InputArgument($name, $mode, $description, $default)); + if (null !== $this->fullDefinition) { + $this->fullDefinition->addArgument(new InputArgument($name, $mode, $description, $default)); + } return $this; } @@ -394,19 +446,20 @@ class Command /** * Adds an option. * - * @param string $name The option name - * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts - * @param int|null $mode The option mode: One of the InputOption::VALUE_* constants - * @param string $description A description text - * @param mixed $default The default value (must be null for InputOption::VALUE_NONE) + * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts + * @param int|null $mode The option mode: One of the InputOption::VALUE_* constants + * @param mixed $default The default value (must be null for InputOption::VALUE_NONE) * * @throws InvalidArgumentException If option mode is invalid or incompatible * * @return $this */ - public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null) + public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null) { $this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); + if (null !== $this->fullDefinition) { + $this->fullDefinition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); + } return $this; } @@ -419,13 +472,11 @@ class Command * * $command->setName('foo:bar'); * - * @param string $name The command name - * * @return $this * * @throws InvalidArgumentException When the name is invalid */ - public function setName($name) + public function setName(string $name) { $this->validateName($name); @@ -440,11 +491,9 @@ class Command * This feature should be used only when creating a long process command, * like a daemon. * - * @param string $title The process title - * * @return $this */ - public function setProcessTitle($title) + public function setProcessTitle(string $title) { $this->processTitle = $title; @@ -463,12 +512,15 @@ class Command /** * @param bool $hidden Whether or not the command should be hidden from the list of commands + * The default value will be true in Symfony 6.0 * * @return $this + * + * @final since Symfony 5.1 */ - public function setHidden($hidden) + public function setHidden(bool $hidden /* = true */) { - $this->hidden = (bool) $hidden; + $this->hidden = $hidden; return $this; } @@ -484,11 +536,9 @@ class Command /** * Sets the description for the command. * - * @param string $description The description for the command - * * @return $this */ - public function setDescription($description) + public function setDescription(string $description) { $this->description = $description; @@ -498,7 +548,7 @@ class Command /** * Returns the description for the command. * - * @return string The description for the command + * @return string */ public function getDescription() { @@ -508,11 +558,9 @@ class Command /** * Sets the help for the command. * - * @param string $help The help for the command - * * @return $this */ - public function setHelp($help) + public function setHelp(string $help) { $this->help = $help; @@ -522,7 +570,7 @@ class Command /** * Returns the help for the command. * - * @return string The help for the command + * @return string */ public function getHelp() { @@ -533,7 +581,7 @@ class Command * Returns the processed help for the command replacing the %command.name% and * %command.full_name% patterns with the real values dynamically. * - * @return string The processed help for the command + * @return string */ public function getProcessedHelp() { @@ -561,17 +609,16 @@ class Command * * @throws InvalidArgumentException When an alias is invalid */ - public function setAliases($aliases) + public function setAliases(iterable $aliases) { - if (!\is_array($aliases) && !$aliases instanceof \Traversable) { - throw new InvalidArgumentException('$aliases must be an array or an instance of \Traversable.'); - } + $list = []; foreach ($aliases as $alias) { $this->validateName($alias); + $list[] = $alias; } - $this->aliases = $aliases; + $this->aliases = \is_array($aliases) ? $aliases : $list; return $this; } @@ -579,7 +626,7 @@ class Command /** * Returns the aliases for the command. * - * @return array An array of aliases for the command + * @return array */ public function getAliases() { @@ -591,9 +638,9 @@ class Command * * @param bool $short Whether to show the short version of the synopsis (with options folded) or not * - * @return string The synopsis + * @return string */ - public function getSynopsis($short = false) + public function getSynopsis(bool $short = false) { $key = $short ? 'short' : 'long'; @@ -605,13 +652,11 @@ class Command } /** - * Add a command usage example. - * - * @param string $usage The usage, it'll be prefixed with the command name + * Add a command usage example, it'll be prefixed with the command name. * * @return $this */ - public function addUsage($usage) + public function addUsage(string $usage) { if (!str_starts_with($usage, $this->name)) { $usage = sprintf('%s %s', $this->name, $usage); @@ -635,14 +680,12 @@ class Command /** * Gets a helper instance by name. * - * @param string $name The helper name - * - * @return mixed The helper value + * @return mixed * * @throws LogicException if no HelperSet is defined * @throws InvalidArgumentException if the helper is not defined */ - public function getHelper($name) + public function getHelper(string $name) { if (null === $this->helperSet) { throw new LogicException(sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); diff --git a/vendor/symfony/console/Command/CompleteCommand.php b/vendor/symfony/console/Command/CompleteCommand.php new file mode 100644 index 000000000..11ada4e44 --- /dev/null +++ b/vendor/symfony/console/Command/CompleteCommand.php @@ -0,0 +1,205 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Command; + +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Completion\Output\BashCompletionOutput; +use Symfony\Component\Console\Completion\Output\CompletionOutputInterface; +use Symfony\Component\Console\Exception\CommandNotFoundException; +use Symfony\Component\Console\Exception\ExceptionInterface; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Responsible for providing the values to the shell completion. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +final class CompleteCommand extends Command +{ + protected static $defaultName = '|_complete'; + protected static $defaultDescription = 'Internal command to provide shell completion suggestions'; + + private $completionOutputs; + + private $isDebug = false; + + /** + * @param array<string, class-string<CompletionOutputInterface>> $completionOutputs A list of additional completion outputs, with shell name as key and FQCN as value + */ + public function __construct(array $completionOutputs = []) + { + // must be set before the parent constructor, as the property value is used in configure() + $this->completionOutputs = $completionOutputs + ['bash' => BashCompletionOutput::class]; + + parent::__construct(); + } + + protected function configure(): void + { + $this + ->addOption('shell', 's', InputOption::VALUE_REQUIRED, 'The shell type ("'.implode('", "', array_keys($this->completionOutputs)).'")') + ->addOption('input', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'An array of input tokens (e.g. COMP_WORDS or argv)') + ->addOption('current', 'c', InputOption::VALUE_REQUIRED, 'The index of the "input" array that the cursor is in (e.g. COMP_CWORD)') + ->addOption('symfony', 'S', InputOption::VALUE_REQUIRED, 'The version of the completion script') + ; + } + + protected function initialize(InputInterface $input, OutputInterface $output) + { + $this->isDebug = filter_var(getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOLEAN); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + try { + // uncomment when a bugfix or BC break has been introduced in the shell completion scripts + // $version = $input->getOption('symfony'); + // if ($version && version_compare($version, 'x.y', '>=')) { + // $message = sprintf('Completion script version is not supported ("%s" given, ">=x.y" required).', $version); + // $this->log($message); + + // $output->writeln($message.' Install the Symfony completion script again by using the "completion" command.'); + + // return 126; + // } + + $shell = $input->getOption('shell'); + if (!$shell) { + throw new \RuntimeException('The "--shell" option must be set.'); + } + + if (!$completionOutput = $this->completionOutputs[$shell] ?? false) { + throw new \RuntimeException(sprintf('Shell completion is not supported for your shell: "%s" (supported: "%s").', $shell, implode('", "', array_keys($this->completionOutputs)))); + } + + $completionInput = $this->createCompletionInput($input); + $suggestions = new CompletionSuggestions(); + + $this->log([ + '', + '<comment>'.date('Y-m-d H:i:s').'</>', + '<info>Input:</> <comment>("|" indicates the cursor position)</>', + ' '.(string) $completionInput, + '<info>Command:</>', + ' '.(string) implode(' ', $_SERVER['argv']), + '<info>Messages:</>', + ]); + + $command = $this->findCommand($completionInput, $output); + if (null === $command) { + $this->log(' No command found, completing using the Application class.'); + + $this->getApplication()->complete($completionInput, $suggestions); + } elseif ( + $completionInput->mustSuggestArgumentValuesFor('command') + && $command->getName() !== $completionInput->getCompletionValue() + && !\in_array($completionInput->getCompletionValue(), $command->getAliases(), true) + ) { + $this->log(' No command found, completing using the Application class.'); + + // expand shortcut names ("cache:cl<TAB>") into their full name ("cache:clear") + $suggestions->suggestValues(array_filter(array_merge([$command->getName()], $command->getAliases()))); + } else { + $command->mergeApplicationDefinition(); + $completionInput->bind($command->getDefinition()); + + if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { + $this->log(' Completing option names for the <comment>'.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).'</> command.'); + + $suggestions->suggestOptions($command->getDefinition()->getOptions()); + } else { + $this->log([ + ' Completing using the <comment>'.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).'</> class.', + ' Completing <comment>'.$completionInput->getCompletionType().'</> for <comment>'.$completionInput->getCompletionName().'</>', + ]); + if (null !== $compval = $completionInput->getCompletionValue()) { + $this->log(' Current value: <comment>'.$compval.'</>'); + } + + $command->complete($completionInput, $suggestions); + } + } + + /** @var CompletionOutputInterface $completionOutput */ + $completionOutput = new $completionOutput(); + + $this->log('<info>Suggestions:</>'); + if ($options = $suggestions->getOptionSuggestions()) { + $this->log(' --'.implode(' --', array_map(function ($o) { return $o->getName(); }, $options))); + } elseif ($values = $suggestions->getValueSuggestions()) { + $this->log(' '.implode(' ', $values)); + } else { + $this->log(' <comment>No suggestions were provided</>'); + } + + $completionOutput->write($suggestions, $output); + } catch (\Throwable $e) { + $this->log([ + '<error>Error!</error>', + (string) $e, + ]); + + if ($output->isDebug()) { + throw $e; + } + + return self::FAILURE; + } + + return self::SUCCESS; + } + + private function createCompletionInput(InputInterface $input): CompletionInput + { + $currentIndex = $input->getOption('current'); + if (!$currentIndex || !ctype_digit($currentIndex)) { + throw new \RuntimeException('The "--current" option must be set and it must be an integer.'); + } + + $completionInput = CompletionInput::fromTokens($input->getOption('input'), (int) $currentIndex); + + try { + $completionInput->bind($this->getApplication()->getDefinition()); + } catch (ExceptionInterface $e) { + } + + return $completionInput; + } + + private function findCommand(CompletionInput $completionInput, OutputInterface $output): ?Command + { + try { + $inputName = $completionInput->getFirstArgument(); + if (null === $inputName) { + return null; + } + + return $this->getApplication()->find($inputName); + } catch (CommandNotFoundException $e) { + } + + return null; + } + + private function log($messages): void + { + if (!$this->isDebug) { + return; + } + + $commandName = basename($_SERVER['argv'][0]); + file_put_contents(sys_get_temp_dir().'/sf_'.$commandName.'.log', implode(\PHP_EOL, (array) $messages).\PHP_EOL, \FILE_APPEND); + } +} diff --git a/vendor/symfony/console/Command/DumpCompletionCommand.php b/vendor/symfony/console/Command/DumpCompletionCommand.php new file mode 100644 index 000000000..518d606a0 --- /dev/null +++ b/vendor/symfony/console/Command/DumpCompletionCommand.php @@ -0,0 +1,139 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Command; + +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\ConsoleOutputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Process\Process; + +/** + * Dumps the completion script for the current shell. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +final class DumpCompletionCommand extends Command +{ + protected static $defaultName = 'completion'; + protected static $defaultDescription = 'Dump the shell completion script'; + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestArgumentValuesFor('shell')) { + $suggestions->suggestValues($this->getSupportedShells()); + } + } + + protected function configure() + { + $fullCommand = $_SERVER['PHP_SELF']; + $commandName = basename($fullCommand); + $fullCommand = @realpath($fullCommand) ?: $fullCommand; + + $this + ->setHelp(<<<EOH +The <info>%command.name%</> command dumps the shell completion script required +to use shell autocompletion (currently only bash completion is supported). + +<comment>Static installation +-------------------</> + +Dump the script to a global completion file and restart your shell: + + <info>%command.full_name% bash | sudo tee /etc/bash_completion.d/{$commandName}</> + +Or dump the script to a local file and source it: + + <info>%command.full_name% bash > completion.sh</> + + <comment># source the file whenever you use the project</> + <info>source completion.sh</> + + <comment># or add this line at the end of your "~/.bashrc" file:</> + <info>source /path/to/completion.sh</> + +<comment>Dynamic installation +--------------------</> + +Add this to the end of your shell configuration file (e.g. <info>"~/.bashrc"</>): + + <info>eval "$({$fullCommand} completion bash)"</> +EOH + ) + ->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given') + ->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $commandName = basename($_SERVER['argv'][0]); + + if ($input->getOption('debug')) { + $this->tailDebugLog($commandName, $output); + + return self::SUCCESS; + } + + $shell = $input->getArgument('shell') ?? self::guessShell(); + $completionFile = __DIR__.'/../Resources/completion.'.$shell; + if (!file_exists($completionFile)) { + $supportedShells = $this->getSupportedShells(); + + if ($output instanceof ConsoleOutputInterface) { + $output = $output->getErrorOutput(); + } + if ($shell) { + $output->writeln(sprintf('<error>Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").</>', $shell, implode('", "', $supportedShells))); + } else { + $output->writeln(sprintf('<error>Shell not detected, Symfony shell completion only supports "%s").</>', implode('", "', $supportedShells))); + } + + return self::INVALID; + } + + $output->write(str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, $this->getApplication()->getVersion()], file_get_contents($completionFile))); + + return self::SUCCESS; + } + + private static function guessShell(): string + { + return basename($_SERVER['SHELL'] ?? ''); + } + + private function tailDebugLog(string $commandName, OutputInterface $output): void + { + $debugFile = sys_get_temp_dir().'/sf_'.$commandName.'.log'; + if (!file_exists($debugFile)) { + touch($debugFile); + } + $process = new Process(['tail', '-f', $debugFile], null, null, null, 0); + $process->run(function (string $type, string $line) use ($output): void { + $output->write($line); + }); + } + + /** + * @return string[] + */ + private function getSupportedShells(): array + { + return array_map(function ($f) { + return pathinfo($f, \PATHINFO_EXTENSION); + }, glob(__DIR__.'/../Resources/completion.*')); + } +} diff --git a/vendor/symfony/console/Command/HelpCommand.php b/vendor/symfony/console/Command/HelpCommand.php index cece78299..c66ef463e 100644 --- a/vendor/symfony/console/Command/HelpCommand.php +++ b/vendor/symfony/console/Command/HelpCommand.php @@ -11,6 +11,9 @@ namespace Symfony\Component\Console\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Descriptor\ApplicationDescription; use Symfony\Component\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -44,11 +47,11 @@ class HelpCommand extends Command ->setHelp(<<<'EOF' The <info>%command.name%</info> command displays help for a given command: - <info>php %command.full_name% list</info> + <info>%command.full_name% list</info> You can also output the help in other formats by using the <comment>--format</comment> option: - <info>php %command.full_name% --format=xml list</info> + <info>%command.full_name% --format=xml list</info> To display the list of available commands, please use the <info>list</info> command. EOF @@ -80,4 +83,19 @@ EOF return 0; } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestArgumentValuesFor('command_name')) { + $descriptor = new ApplicationDescription($this->getApplication()); + $suggestions->suggestValues(array_keys($descriptor->getCommands())); + + return; + } + + if ($input->mustSuggestOptionValuesFor('format')) { + $helper = new DescriptorHelper(); + $suggestions->suggestValues($helper->getFormats()); + } + } } diff --git a/vendor/symfony/console/Command/LazyCommand.php b/vendor/symfony/console/Command/LazyCommand.php new file mode 100644 index 000000000..e576ad03f --- /dev/null +++ b/vendor/symfony/console/Command/LazyCommand.php @@ -0,0 +1,218 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Command; + +use Symfony\Component\Console\Application; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputDefinition; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Nicolas Grekas <p@tchwork.com> + */ +final class LazyCommand extends Command +{ + private $command; + private $isEnabled; + + public function __construct(string $name, array $aliases, string $description, bool $isHidden, \Closure $commandFactory, ?bool $isEnabled = true) + { + $this->setName($name) + ->setAliases($aliases) + ->setHidden($isHidden) + ->setDescription($description); + + $this->command = $commandFactory; + $this->isEnabled = $isEnabled; + } + + public function ignoreValidationErrors(): void + { + $this->getCommand()->ignoreValidationErrors(); + } + + public function setApplication(Application $application = null): void + { + if ($this->command instanceof parent) { + $this->command->setApplication($application); + } + + parent::setApplication($application); + } + + public function setHelperSet(HelperSet $helperSet): void + { + if ($this->command instanceof parent) { + $this->command->setHelperSet($helperSet); + } + + parent::setHelperSet($helperSet); + } + + public function isEnabled(): bool + { + return $this->isEnabled ?? $this->getCommand()->isEnabled(); + } + + public function run(InputInterface $input, OutputInterface $output): int + { + return $this->getCommand()->run($input, $output); + } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + $this->getCommand()->complete($input, $suggestions); + } + + /** + * @return $this + */ + public function setCode(callable $code): self + { + $this->getCommand()->setCode($code); + + return $this; + } + + /** + * @internal + */ + public function mergeApplicationDefinition(bool $mergeArgs = true): void + { + $this->getCommand()->mergeApplicationDefinition($mergeArgs); + } + + /** + * @return $this + */ + public function setDefinition($definition): self + { + $this->getCommand()->setDefinition($definition); + + return $this; + } + + public function getDefinition(): InputDefinition + { + return $this->getCommand()->getDefinition(); + } + + public function getNativeDefinition(): InputDefinition + { + return $this->getCommand()->getNativeDefinition(); + } + + /** + * @return $this + */ + public function addArgument(string $name, int $mode = null, string $description = '', $default = null): self + { + $this->getCommand()->addArgument($name, $mode, $description, $default); + + return $this; + } + + /** + * @return $this + */ + public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null): self + { + $this->getCommand()->addOption($name, $shortcut, $mode, $description, $default); + + return $this; + } + + /** + * @return $this + */ + public function setProcessTitle(string $title): self + { + $this->getCommand()->setProcessTitle($title); + + return $this; + } + + /** + * @return $this + */ + public function setHelp(string $help): self + { + $this->getCommand()->setHelp($help); + + return $this; + } + + public function getHelp(): string + { + return $this->getCommand()->getHelp(); + } + + public function getProcessedHelp(): string + { + return $this->getCommand()->getProcessedHelp(); + } + + public function getSynopsis(bool $short = false): string + { + return $this->getCommand()->getSynopsis($short); + } + + /** + * @return $this + */ + public function addUsage(string $usage): self + { + $this->getCommand()->addUsage($usage); + + return $this; + } + + public function getUsages(): array + { + return $this->getCommand()->getUsages(); + } + + /** + * @return mixed + */ + public function getHelper(string $name) + { + return $this->getCommand()->getHelper($name); + } + + public function getCommand(): parent + { + if (!$this->command instanceof \Closure) { + return $this->command; + } + + $command = $this->command = ($this->command)(); + $command->setApplication($this->getApplication()); + + if (null !== $this->getHelperSet()) { + $command->setHelperSet($this->getHelperSet()); + } + + $command->setName($this->getName()) + ->setAliases($this->getAliases()) + ->setHidden($this->isHidden()) + ->setDescription($this->getDescription()); + + // Will throw if the command is not correctly initialized. + $command->getDefinition(); + + return $command; + } +} diff --git a/vendor/symfony/console/Command/ListCommand.php b/vendor/symfony/console/Command/ListCommand.php index 44324a5e7..f04a4ef67 100644 --- a/vendor/symfony/console/Command/ListCommand.php +++ b/vendor/symfony/console/Command/ListCommand.php @@ -11,9 +11,11 @@ namespace Symfony\Component\Console\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Descriptor\ApplicationDescription; use Symfony\Component\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; @@ -32,37 +34,34 @@ class ListCommand extends Command { $this ->setName('list') - ->setDefinition($this->createDefinition()) + ->setDefinition([ + new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), + new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), + new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), + new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments'), + ]) ->setDescription('List commands') ->setHelp(<<<'EOF' The <info>%command.name%</info> command lists all commands: - <info>php %command.full_name%</info> + <info>%command.full_name%</info> You can also display the commands for a specific namespace: - <info>php %command.full_name% test</info> + <info>%command.full_name% test</info> You can also output the information in other formats by using the <comment>--format</comment> option: - <info>php %command.full_name% --format=xml</info> + <info>%command.full_name% --format=xml</info> It's also possible to get raw list of commands (useful for embedding command runner): - <info>php %command.full_name% --raw</info> + <info>%command.full_name% --raw</info> EOF ) ; } - /** - * {@inheritdoc} - */ - public function getNativeDefinition() - { - return $this->createDefinition(); - } - /** * {@inheritdoc} */ @@ -73,17 +72,24 @@ EOF 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'namespace' => $input->getArgument('namespace'), + 'short' => $input->getOption('short'), ]); return 0; } - private function createDefinition(): InputDefinition + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void { - return new InputDefinition([ - new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), - new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), - new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), - ]); + if ($input->mustSuggestArgumentValuesFor('namespace')) { + $descriptor = new ApplicationDescription($this->getApplication()); + $suggestions->suggestValues(array_keys($descriptor->getNamespaces())); + + return; + } + + if ($input->mustSuggestOptionValuesFor('format')) { + $helper = new DescriptorHelper(); + $suggestions->suggestValues($helper->getFormats()); + } } } diff --git a/vendor/symfony/console/Command/LockableTrait.php b/vendor/symfony/console/Command/LockableTrait.php index 60cfe360f..b1856dca7 100644 --- a/vendor/symfony/console/Command/LockableTrait.php +++ b/vendor/symfony/console/Command/LockableTrait.php @@ -12,8 +12,8 @@ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Lock\Lock; use Symfony\Component\Lock\LockFactory; +use Symfony\Component\Lock\LockInterface; use Symfony\Component\Lock\Store\FlockStore; use Symfony\Component\Lock\Store\SemaphoreStore; @@ -24,7 +24,7 @@ use Symfony\Component\Lock\Store\SemaphoreStore; */ trait LockableTrait { - /** @var Lock */ + /** @var LockInterface|null */ private $lock; /** diff --git a/vendor/symfony/console/Command/SignalableCommandInterface.php b/vendor/symfony/console/Command/SignalableCommandInterface.php new file mode 100644 index 000000000..d439728b6 --- /dev/null +++ b/vendor/symfony/console/Command/SignalableCommandInterface.php @@ -0,0 +1,30 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Command; + +/** + * Interface for command reacting to signal. + * + * @author Grégoire Pineau <lyrixx@lyrix.info> + */ +interface SignalableCommandInterface +{ + /** + * Returns the list of signals to subscribe. + */ + public function getSubscribedSignals(): array; + + /** + * The method will be called when the application is signaled. + */ + public function handleSignal(int $signal): void; +} diff --git a/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php b/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php index ca1029cb6..0adaf886f 100644 --- a/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php +++ b/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php @@ -22,25 +22,21 @@ interface CommandLoaderInterface /** * Loads a command. * - * @param string $name - * * @return Command * * @throws CommandNotFoundException */ - public function get($name); + public function get(string $name); /** * Checks if a command exists. * - * @param string $name - * * @return bool */ - public function has($name); + public function has(string $name); /** - * @return string[] All registered command names + * @return string[] */ public function getNames(); } diff --git a/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php b/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php index 50e5950a4..ddccb3d45 100644 --- a/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php +++ b/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php @@ -36,7 +36,7 @@ class ContainerCommandLoader implements CommandLoaderInterface /** * {@inheritdoc} */ - public function get($name) + public function get(string $name) { if (!$this->has($name)) { throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); @@ -48,7 +48,7 @@ class ContainerCommandLoader implements CommandLoaderInterface /** * {@inheritdoc} */ - public function has($name) + public function has(string $name) { return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); } diff --git a/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php b/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php index d9c205571..7e2db3464 100644 --- a/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +++ b/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php @@ -33,7 +33,7 @@ class FactoryCommandLoader implements CommandLoaderInterface /** * {@inheritdoc} */ - public function has($name) + public function has(string $name) { return isset($this->factories[$name]); } @@ -41,7 +41,7 @@ class FactoryCommandLoader implements CommandLoaderInterface /** * {@inheritdoc} */ - public function get($name) + public function get(string $name) { if (!isset($this->factories[$name])) { throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); diff --git a/vendor/symfony/console/Completion/CompletionInput.php b/vendor/symfony/console/Completion/CompletionInput.php new file mode 100644 index 000000000..368b94507 --- /dev/null +++ b/vendor/symfony/console/Completion/CompletionInput.php @@ -0,0 +1,249 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Completion; + +use Symfony\Component\Console\Exception\RuntimeException; +use Symfony\Component\Console\Input\ArgvInput; +use Symfony\Component\Console\Input\InputDefinition; +use Symfony\Component\Console\Input\InputOption; + +/** + * An input specialized for shell completion. + * + * This input allows unfinished option names or values and exposes what kind of + * completion is expected. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +final class CompletionInput extends ArgvInput +{ + public const TYPE_ARGUMENT_VALUE = 'argument_value'; + public const TYPE_OPTION_VALUE = 'option_value'; + public const TYPE_OPTION_NAME = 'option_name'; + public const TYPE_NONE = 'none'; + + private $tokens; + private $currentIndex; + private $completionType; + private $completionName = null; + private $completionValue = ''; + + /** + * Converts a terminal string into tokens. + * + * This is required for shell completions without COMP_WORDS support. + */ + public static function fromString(string $inputStr, int $currentIndex): self + { + preg_match_all('/(?<=^|\s)([\'"]?)(.+?)(?<!\\\\)\1(?=$|\s)/', $inputStr, $tokens); + + return self::fromTokens($tokens[0], $currentIndex); + } + + /** + * Create an input based on an COMP_WORDS token list. + * + * @param string[] $tokens the set of split tokens (e.g. COMP_WORDS or argv) + * @param $currentIndex the index of the cursor (e.g. COMP_CWORD) + */ + public static function fromTokens(array $tokens, int $currentIndex): self + { + $input = new self($tokens); + $input->tokens = $tokens; + $input->currentIndex = $currentIndex; + + return $input; + } + + /** + * {@inheritdoc} + */ + public function bind(InputDefinition $definition): void + { + parent::bind($definition); + + $relevantToken = $this->getRelevantToken(); + if ('-' === $relevantToken[0]) { + // the current token is an input option: complete either option name or option value + [$optionToken, $optionValue] = explode('=', $relevantToken, 2) + ['', '']; + + $option = $this->getOptionFromToken($optionToken); + if (null === $option && !$this->isCursorFree()) { + $this->completionType = self::TYPE_OPTION_NAME; + $this->completionValue = $relevantToken; + + return; + } + + if (null !== $option && $option->acceptValue()) { + $this->completionType = self::TYPE_OPTION_VALUE; + $this->completionName = $option->getName(); + $this->completionValue = $optionValue ?: (!str_starts_with($optionToken, '--') ? substr($optionToken, 2) : ''); + + return; + } + } + + $previousToken = $this->tokens[$this->currentIndex - 1]; + if ('-' === $previousToken[0] && '' !== trim($previousToken, '-')) { + // check if previous option accepted a value + $previousOption = $this->getOptionFromToken($previousToken); + if (null !== $previousOption && $previousOption->acceptValue()) { + $this->completionType = self::TYPE_OPTION_VALUE; + $this->completionName = $previousOption->getName(); + $this->completionValue = $relevantToken; + + return; + } + } + + // complete argument value + $this->completionType = self::TYPE_ARGUMENT_VALUE; + + foreach ($this->definition->getArguments() as $argumentName => $argument) { + if (!isset($this->arguments[$argumentName])) { + break; + } + + $argumentValue = $this->arguments[$argumentName]; + $this->completionName = $argumentName; + if (\is_array($argumentValue)) { + $this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; + } else { + $this->completionValue = $argumentValue; + } + } + + if ($this->currentIndex >= \count($this->tokens)) { + if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { + $this->completionName = $argumentName; + $this->completionValue = ''; + } else { + // we've reached the end + $this->completionType = self::TYPE_NONE; + $this->completionName = null; + $this->completionValue = ''; + } + } + } + + /** + * Returns the type of completion required. + * + * TYPE_ARGUMENT_VALUE when completing the value of an input argument + * TYPE_OPTION_VALUE when completing the value of an input option + * TYPE_OPTION_NAME when completing the name of an input option + * TYPE_NONE when nothing should be completed + * + * @return string One of self::TYPE_* constants. TYPE_OPTION_NAME and TYPE_NONE are already implemented by the Console component + */ + public function getCompletionType(): string + { + return $this->completionType; + } + + /** + * The name of the input option or argument when completing a value. + * + * @return string|null returns null when completing an option name + */ + public function getCompletionName(): ?string + { + return $this->completionName; + } + + /** + * The value already typed by the user (or empty string). + */ + public function getCompletionValue(): string + { + return $this->completionValue; + } + + public function mustSuggestOptionValuesFor(string $optionName): bool + { + return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); + } + + public function mustSuggestArgumentValuesFor(string $argumentName): bool + { + return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); + } + + protected function parseToken(string $token, bool $parseOptions): bool + { + try { + return parent::parseToken($token, $parseOptions); + } catch (RuntimeException $e) { + // suppress errors, completed input is almost never valid + } + + return $parseOptions; + } + + private function getOptionFromToken(string $optionToken): ?InputOption + { + $optionName = ltrim($optionToken, '-'); + if (!$optionName) { + return null; + } + + if ('-' === ($optionToken[1] ?? ' ')) { + // long option name + return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; + } + + // short option name + return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; + } + + /** + * The token of the cursor, or the last token if the cursor is at the end of the input. + */ + private function getRelevantToken(): string + { + return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; + } + + /** + * Whether the cursor is "free" (i.e. at the end of the input preceded by a space). + */ + private function isCursorFree(): bool + { + $nrOfTokens = \count($this->tokens); + if ($this->currentIndex > $nrOfTokens) { + throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); + } + + return $this->currentIndex >= $nrOfTokens; + } + + public function __toString() + { + $str = ''; + foreach ($this->tokens as $i => $token) { + $str .= $token; + + if ($this->currentIndex === $i) { + $str .= '|'; + } + + $str .= ' '; + } + + if ($this->currentIndex > $i) { + $str .= '|'; + } + + return rtrim($str); + } +} diff --git a/vendor/symfony/console/Completion/CompletionSuggestions.php b/vendor/symfony/console/Completion/CompletionSuggestions.php new file mode 100644 index 000000000..d8905e5ee --- /dev/null +++ b/vendor/symfony/console/Completion/CompletionSuggestions.php @@ -0,0 +1,99 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Completion; + +use Symfony\Component\Console\Input\InputOption; + +/** + * Stores all completion suggestions for the current input. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +final class CompletionSuggestions +{ + private $valueSuggestions = []; + private $optionSuggestions = []; + + /** + * Add a suggested value for an input option or argument. + * + * @param string|Suggestion $value + * + * @return $this + */ + public function suggestValue($value): self + { + $this->valueSuggestions[] = !$value instanceof Suggestion ? new Suggestion($value) : $value; + + return $this; + } + + /** + * Add multiple suggested values at once for an input option or argument. + * + * @param list<string|Suggestion> $values + * + * @return $this + */ + public function suggestValues(array $values): self + { + foreach ($values as $value) { + $this->suggestValue($value); + } + + return $this; + } + + /** + * Add a suggestion for an input option name. + * + * @return $this + */ + public function suggestOption(InputOption $option): self + { + $this->optionSuggestions[] = $option; + + return $this; + } + + /** + * Add multiple suggestions for input option names at once. + * + * @param InputOption[] $options + * + * @return $this + */ + public function suggestOptions(array $options): self + { + foreach ($options as $option) { + $this->suggestOption($option); + } + + return $this; + } + + /** + * @return InputOption[] + */ + public function getOptionSuggestions(): array + { + return $this->optionSuggestions; + } + + /** + * @return Suggestion[] + */ + public function getValueSuggestions(): array + { + return $this->valueSuggestions; + } +} diff --git a/vendor/symfony/console/Completion/Output/BashCompletionOutput.php b/vendor/symfony/console/Completion/Output/BashCompletionOutput.php new file mode 100644 index 000000000..c6f76eb8f --- /dev/null +++ b/vendor/symfony/console/Completion/Output/BashCompletionOutput.php @@ -0,0 +1,33 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Completion\Output; + +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Wouter de Jong <wouter@wouterj.nl> + */ +class BashCompletionOutput implements CompletionOutputInterface +{ + public function write(CompletionSuggestions $suggestions, OutputInterface $output): void + { + $values = $suggestions->getValueSuggestions(); + foreach ($suggestions->getOptionSuggestions() as $option) { + $values[] = '--'.$option->getName(); + if ($option->isNegatable()) { + $values[] = '--no-'.$option->getName(); + } + } + $output->writeln(implode("\n", $values)); + } +} diff --git a/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php b/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php new file mode 100644 index 000000000..659e59655 --- /dev/null +++ b/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php @@ -0,0 +1,25 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Completion\Output; + +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Transforms the {@see CompletionSuggestions} object into output readable by the shell completion. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +interface CompletionOutputInterface +{ + public function write(CompletionSuggestions $suggestions, OutputInterface $output): void; +} diff --git a/vendor/symfony/console/Completion/Suggestion.php b/vendor/symfony/console/Completion/Suggestion.php new file mode 100644 index 000000000..6c7bc4dc4 --- /dev/null +++ b/vendor/symfony/console/Completion/Suggestion.php @@ -0,0 +1,37 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Completion; + +/** + * Represents a single suggested value. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +class Suggestion +{ + private $value; + + public function __construct(string $value) + { + $this->value = $value; + } + + public function getValue(): string + { + return $this->value; + } + + public function __toString(): string + { + return $this->getValue(); + } +} diff --git a/vendor/symfony/console/ConsoleEvents.php b/vendor/symfony/console/ConsoleEvents.php index 99b423c83..6ae8f32b8 100644 --- a/vendor/symfony/console/ConsoleEvents.php +++ b/vendor/symfony/console/ConsoleEvents.php @@ -11,6 +11,11 @@ namespace Symfony\Component\Console; +use Symfony\Component\Console\Event\ConsoleCommandEvent; +use Symfony\Component\Console\Event\ConsoleErrorEvent; +use Symfony\Component\Console\Event\ConsoleSignalEvent; +use Symfony\Component\Console\Event\ConsoleTerminateEvent; + /** * Contains all events dispatched by an Application. * @@ -27,6 +32,14 @@ final class ConsoleEvents */ public const COMMAND = 'console.command'; + /** + * The SIGNAL event allows you to perform some actions + * after the command execution was interrupted. + * + * @Event("Symfony\Component\Console\Event\ConsoleSignalEvent") + */ + public const SIGNAL = 'console.signal'; + /** * The TERMINATE event allows you to attach listeners after a command is * executed by the console. @@ -44,4 +57,16 @@ final class ConsoleEvents * @Event("Symfony\Component\Console\Event\ConsoleErrorEvent") */ public const ERROR = 'console.error'; + + /** + * Event aliases. + * + * These aliases can be consumed by RegisterListenersPass. + */ + public const ALIASES = [ + ConsoleCommandEvent::class => self::COMMAND, + ConsoleErrorEvent::class => self::ERROR, + ConsoleSignalEvent::class => self::SIGNAL, + ConsoleTerminateEvent::class => self::TERMINATE, + ]; } diff --git a/vendor/symfony/console/Cursor.php b/vendor/symfony/console/Cursor.php new file mode 100644 index 000000000..0c4dafb6c --- /dev/null +++ b/vendor/symfony/console/Cursor.php @@ -0,0 +1,207 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console; + +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Pierre du Plessis <pdples@gmail.com> + */ +final class Cursor +{ + private $output; + private $input; + + /** + * @param resource|null $input + */ + public function __construct(OutputInterface $output, $input = null) + { + $this->output = $output; + $this->input = $input ?? (\defined('STDIN') ? \STDIN : fopen('php://input', 'r+')); + } + + /** + * @return $this + */ + public function moveUp(int $lines = 1): self + { + $this->output->write(sprintf("\x1b[%dA", $lines)); + + return $this; + } + + /** + * @return $this + */ + public function moveDown(int $lines = 1): self + { + $this->output->write(sprintf("\x1b[%dB", $lines)); + + return $this; + } + + /** + * @return $this + */ + public function moveRight(int $columns = 1): self + { + $this->output->write(sprintf("\x1b[%dC", $columns)); + + return $this; + } + + /** + * @return $this + */ + public function moveLeft(int $columns = 1): self + { + $this->output->write(sprintf("\x1b[%dD", $columns)); + + return $this; + } + + /** + * @return $this + */ + public function moveToColumn(int $column): self + { + $this->output->write(sprintf("\x1b[%dG", $column)); + + return $this; + } + + /** + * @return $this + */ + public function moveToPosition(int $column, int $row): self + { + $this->output->write(sprintf("\x1b[%d;%dH", $row + 1, $column)); + + return $this; + } + + /** + * @return $this + */ + public function savePosition(): self + { + $this->output->write("\x1b7"); + + return $this; + } + + /** + * @return $this + */ + public function restorePosition(): self + { + $this->output->write("\x1b8"); + + return $this; + } + + /** + * @return $this + */ + public function hide(): self + { + $this->output->write("\x1b[?25l"); + + return $this; + } + + /** + * @return $this + */ + public function show(): self + { + $this->output->write("\x1b[?25h\x1b[?0c"); + + return $this; + } + + /** + * Clears all the output from the current line. + * + * @return $this + */ + public function clearLine(): self + { + $this->output->write("\x1b[2K"); + + return $this; + } + + /** + * Clears all the output from the current line after the current position. + */ + public function clearLineAfter(): self + { + $this->output->write("\x1b[K"); + + return $this; + } + + /** + * Clears all the output from the cursors' current position to the end of the screen. + * + * @return $this + */ + public function clearOutput(): self + { + $this->output->write("\x1b[0J"); + + return $this; + } + + /** + * Clears the entire screen. + * + * @return $this + */ + public function clearScreen(): self + { + $this->output->write("\x1b[2J"); + + return $this; + } + + /** + * Returns the current cursor position as x,y coordinates. + */ + public function getCurrentPosition(): array + { + static $isTtySupported; + + if (null === $isTtySupported && \function_exists('proc_open')) { + $isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); + } + + if (!$isTtySupported) { + return [1, 1]; + } + + $sttyMode = shell_exec('stty -g'); + shell_exec('stty -icanon -echo'); + + @fwrite($this->input, "\033[6n"); + + $code = trim(fread($this->input, 1024)); + + shell_exec(sprintf('stty %s', $sttyMode)); + + sscanf($code, "\033[%d;%dR", $row, $col); + + return [$col, $row]; + } +} diff --git a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php b/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php index d9449dc56..1fbb212e7 100644 --- a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +++ b/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php @@ -12,11 +12,14 @@ namespace Symfony\Component\Console\DependencyInjection; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Command\LazyCommand; use Symfony\Component\Console\CommandLoader\ContainerCommandLoader; +use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\TypedReference; /** @@ -28,11 +31,19 @@ class AddConsoleCommandPass implements CompilerPassInterface { private $commandLoaderServiceId; private $commandTag; + private $noPreloadTag; + private $privateTagName; - public function __construct(string $commandLoaderServiceId = 'console.command_loader', string $commandTag = 'console.command') + public function __construct(string $commandLoaderServiceId = 'console.command_loader', string $commandTag = 'console.command', string $noPreloadTag = 'container.no_preload', string $privateTagName = 'container.private') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/console', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->commandLoaderServiceId = $commandLoaderServiceId; $this->commandTag = $commandTag; + $this->noPreloadTag = $noPreloadTag; + $this->privateTagName = $privateTagName; } public function process(ContainerBuilder $container) @@ -44,10 +55,11 @@ class AddConsoleCommandPass implements CompilerPassInterface foreach ($commandServices as $id => $tags) { $definition = $container->getDefinition($id); + $definition->addTag($this->noPreloadTag); $class = $container->getParameterBag()->resolveValue($definition->getClass()); if (isset($tags[0]['command'])) { - $commandName = $tags[0]['command']; + $aliases = $tags[0]['command']; } else { if (!$r = $container->getReflectionClass($class)) { throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); @@ -55,11 +67,18 @@ class AddConsoleCommandPass implements CompilerPassInterface if (!$r->isSubclassOf(Command::class)) { throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); } - $commandName = null !== $class::getDefaultName() ? str_replace('%', '%%', $class::getDefaultName()) : null; + $aliases = str_replace('%', '%%', $class::getDefaultName() ?? ''); + } + + $aliases = explode('|', $aliases ?? ''); + $commandName = array_shift($aliases); + + if ($isHidden = '' === $commandName) { + $commandName = array_shift($aliases); } if (null === $commandName) { - if (!$definition->isPublic() || $definition->isPrivate()) { + if (!$definition->isPublic() || $definition->isPrivate() || $definition->hasTag($this->privateTagName)) { $commandId = 'console.command.public_alias.'.$id; $container->setAlias($commandId, $id)->setPublic(true); $id = $commandId; @@ -69,16 +88,23 @@ class AddConsoleCommandPass implements CompilerPassInterface continue; } + $description = $tags[0]['description'] ?? null; + unset($tags[0]); $lazyCommandMap[$commandName] = $id; $lazyCommandRefs[$id] = new TypedReference($id, $class); - $aliases = []; + + foreach ($aliases as $alias) { + $lazyCommandMap[$alias] = $id; + } foreach ($tags as $tag) { if (isset($tag['command'])) { $aliases[] = $tag['command']; $lazyCommandMap[$tag['command']] = $id; } + + $description = $description ?? $tag['description'] ?? null; } $definition->addMethodCall('setName', [$commandName]); @@ -86,11 +112,35 @@ class AddConsoleCommandPass implements CompilerPassInterface if ($aliases) { $definition->addMethodCall('setAliases', [$aliases]); } + + if ($isHidden) { + $definition->addMethodCall('setHidden', [true]); + } + + if (!$description) { + if (!$r = $container->getReflectionClass($class)) { + throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); + } + if (!$r->isSubclassOf(Command::class)) { + throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); + } + $description = str_replace('%', '%%', $class::getDefaultDescription() ?? ''); + } + + if ($description) { + $definition->addMethodCall('setDescription', [$description]); + + $container->register('.'.$id.'.lazy', LazyCommand::class) + ->setArguments([$commandName, $aliases, $description, $isHidden, new ServiceClosureArgument($lazyCommandRefs[$id])]); + + $lazyCommandRefs[$id] = new Reference('.'.$id.'.lazy'); + } } $container ->register($this->commandLoaderServiceId, ContainerCommandLoader::class) ->setPublic(true) + ->addTag($this->noPreloadTag) ->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); $container->setParameter('console.command.ids', $serviceIds); diff --git a/vendor/symfony/console/Descriptor/ApplicationDescription.php b/vendor/symfony/console/Descriptor/ApplicationDescription.php index 91b184605..2a3acc99b 100644 --- a/vendor/symfony/console/Descriptor/ApplicationDescription.php +++ b/vendor/symfony/console/Descriptor/ApplicationDescription.php @@ -34,12 +34,12 @@ class ApplicationDescription private $namespaces; /** - * @var Command[] + * @var array<string, Command> */ private $commands; /** - * @var Command[] + * @var array<string, Command> */ private $aliases; diff --git a/vendor/symfony/console/Descriptor/Descriptor.php b/vendor/symfony/console/Descriptor/Descriptor.php index 9c3878d1e..a3648301f 100644 --- a/vendor/symfony/console/Descriptor/Descriptor.php +++ b/vendor/symfony/console/Descriptor/Descriptor.php @@ -34,7 +34,7 @@ abstract class Descriptor implements DescriptorInterface /** * {@inheritdoc} */ - public function describe(OutputInterface $output, $object, array $options = []) + public function describe(OutputInterface $output, object $object, array $options = []) { $this->output = $output; @@ -55,17 +55,14 @@ abstract class Descriptor implements DescriptorInterface $this->describeApplication($object, $options); break; default: - throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', \get_class($object))); + throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_debug_type($object))); } } /** * Writes content to output. - * - * @param string $content - * @param bool $decorated */ - protected function write($content, $decorated = false) + protected function write(string $content, bool $decorated = false) { $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); } diff --git a/vendor/symfony/console/Descriptor/DescriptorInterface.php b/vendor/symfony/console/Descriptor/DescriptorInterface.php index e3184a6a5..ebea30367 100644 --- a/vendor/symfony/console/Descriptor/DescriptorInterface.php +++ b/vendor/symfony/console/Descriptor/DescriptorInterface.php @@ -20,10 +20,5 @@ use Symfony\Component\Console\Output\OutputInterface; */ interface DescriptorInterface { - /** - * Describes an object if supported. - * - * @param object $object - */ - public function describe(OutputInterface $output, $object, array $options = []); + public function describe(OutputInterface $output, object $object, array $options = []); } diff --git a/vendor/symfony/console/Descriptor/JsonDescriptor.php b/vendor/symfony/console/Descriptor/JsonDescriptor.php index 4c09e1267..1d2865941 100644 --- a/vendor/symfony/console/Descriptor/JsonDescriptor.php +++ b/vendor/symfony/console/Descriptor/JsonDescriptor.php @@ -40,6 +40,9 @@ class JsonDescriptor extends Descriptor protected function describeInputOption(InputOption $option, array $options = []) { $this->writeData($this->getInputOptionData($option), $options); + if ($option->isNegatable()) { + $this->writeData($this->getInputOptionData($option, true), $options); + } } /** @@ -55,7 +58,7 @@ class JsonDescriptor extends Descriptor */ protected function describeCommand(Command $command, array $options = []) { - $this->writeData($this->getCommandData($command), $options); + $this->writeData($this->getCommandData($command, $options['short'] ?? false), $options); } /** @@ -68,7 +71,7 @@ class JsonDescriptor extends Descriptor $commands = []; foreach ($description->getCommands() as $command) { - $commands[] = $this->getCommandData($command); + $commands[] = $this->getCommandData($command, $options['short'] ?? false); } $data = []; @@ -111,9 +114,17 @@ class JsonDescriptor extends Descriptor ]; } - private function getInputOptionData(InputOption $option): array + private function getInputOptionData(InputOption $option, bool $negated = false): array { - return [ + return $negated ? [ + 'name' => '--no-'.$option->getName(), + 'shortcut' => '', + 'accept_value' => false, + 'is_value_required' => false, + 'is_multiple' => false, + 'description' => 'Negate the "--'.$option->getName().'" option', + 'default' => false, + ] : [ 'name' => '--'.$option->getName(), 'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', 'accept_value' => $option->acceptValue(), @@ -134,23 +145,37 @@ class JsonDescriptor extends Descriptor $inputOptions = []; foreach ($definition->getOptions() as $name => $option) { $inputOptions[$name] = $this->getInputOptionData($option); + if ($option->isNegatable()) { + $inputOptions['no-'.$name] = $this->getInputOptionData($option, true); + } } return ['arguments' => $inputArguments, 'options' => $inputOptions]; } - private function getCommandData(Command $command): array + private function getCommandData(Command $command, bool $short = false): array { - $command->getSynopsis(); - $command->mergeApplicationDefinition(false); - - return [ + $data = [ 'name' => $command->getName(), - 'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), 'description' => $command->getDescription(), - 'help' => $command->getProcessedHelp(), - 'definition' => $this->getInputDefinitionData($command->getNativeDefinition()), - 'hidden' => $command->isHidden(), ]; + + if ($short) { + $data += [ + 'usage' => $command->getAliases(), + ]; + } else { + $command->mergeApplicationDefinition(false); + + $data += [ + 'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), + 'help' => $command->getProcessedHelp(), + 'definition' => $this->getInputDefinitionData($command->getDefinition()), + ]; + } + + $data['hidden'] = $command->isHidden(); + + return $data; } } diff --git a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php index 9a9d28075..21ceca6c2 100644 --- a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +++ b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php @@ -31,7 +31,7 @@ class MarkdownDescriptor extends Descriptor /** * {@inheritdoc} */ - public function describe(OutputInterface $output, $object, array $options = []) + public function describe(OutputInterface $output, object $object, array $options = []) { $decorated = $output->isDecorated(); $output->setDecorated(false); @@ -44,7 +44,7 @@ class MarkdownDescriptor extends Descriptor /** * {@inheritdoc} */ - protected function write($content, $decorated = true) + protected function write(string $content, bool $decorated = true) { parent::write($content, $decorated); } @@ -69,6 +69,9 @@ class MarkdownDescriptor extends Descriptor protected function describeInputOption(InputOption $option, array $options = []) { $name = '--'.$option->getName(); + if ($option->isNegatable()) { + $name .= '|--no-'.$option->getName(); + } if ($option->getShortcut()) { $name .= '|-'.str_replace('|', '|-', $option->getShortcut()).''; } @@ -79,6 +82,7 @@ class MarkdownDescriptor extends Descriptor .'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n" .'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n" .'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n" + .'* Is negatable: '.($option->isNegatable() ? 'yes' : 'no')."\n" .'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`' ); } @@ -92,7 +96,9 @@ class MarkdownDescriptor extends Descriptor $this->write('### Arguments'); foreach ($definition->getArguments() as $argument) { $this->write("\n\n"); - $this->write($this->describeInputArgument($argument)); + if (null !== $describeInputArgument = $this->describeInputArgument($argument)) { + $this->write($describeInputArgument); + } } } @@ -104,7 +110,9 @@ class MarkdownDescriptor extends Descriptor $this->write('### Options'); foreach ($definition->getOptions() as $option) { $this->write("\n\n"); - $this->write($this->describeInputOption($option)); + if (null !== $describeInputOption = $this->describeInputOption($option)) { + $this->write($describeInputOption); + } } } } @@ -114,12 +122,25 @@ class MarkdownDescriptor extends Descriptor */ protected function describeCommand(Command $command, array $options = []) { - $command->getSynopsis(); + if ($options['short'] ?? false) { + $this->write( + '`'.$command->getName()."`\n" + .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" + .($command->getDescription() ? $command->getDescription()."\n\n" : '') + .'### Usage'."\n\n" + .array_reduce($command->getAliases(), function ($carry, $usage) { + return $carry.'* `'.$usage.'`'."\n"; + }) + ); + + return; + } + $command->mergeApplicationDefinition(false); $this->write( '`'.$command->getName()."`\n" - .str_repeat('-', Helper::strlen($command->getName()) + 2)."\n\n" + .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" .($command->getDescription() ? $command->getDescription()."\n\n" : '') .'### Usage'."\n\n" .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { @@ -132,9 +153,10 @@ class MarkdownDescriptor extends Descriptor $this->write($help); } - if ($command->getNativeDefinition()) { + $definition = $command->getDefinition(); + if ($definition->getOptions() || $definition->getArguments()) { $this->write("\n\n"); - $this->describeInputDefinition($command->getNativeDefinition()); + $this->describeInputDefinition($definition); } } @@ -147,7 +169,7 @@ class MarkdownDescriptor extends Descriptor $description = new ApplicationDescription($application, $describedNamespace); $title = $this->getApplicationTitle($application); - $this->write($title."\n".str_repeat('=', Helper::strlen($title))); + $this->write($title."\n".str_repeat('=', Helper::width($title))); foreach ($description->getNamespaces() as $namespace) { if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { @@ -163,7 +185,9 @@ class MarkdownDescriptor extends Descriptor foreach ($description->getCommands() as $command) { $this->write("\n\n"); - $this->write($this->describeCommand($command)); + if (null !== $describeCommand = $this->describeCommand($command, $options)) { + $this->write($describeCommand); + } } } diff --git a/vendor/symfony/console/Descriptor/TextDescriptor.php b/vendor/symfony/console/Descriptor/TextDescriptor.php index 7d4d5f0bb..fbb140ae7 100644 --- a/vendor/symfony/console/Descriptor/TextDescriptor.php +++ b/vendor/symfony/console/Descriptor/TextDescriptor.php @@ -39,7 +39,7 @@ class TextDescriptor extends Descriptor $default = ''; } - $totalWidth = $options['total_width'] ?? Helper::strlen($argument->getName()); + $totalWidth = $options['total_width'] ?? Helper::width($argument->getName()); $spacingWidth = $totalWidth - \strlen($argument->getName()); $this->writeText(sprintf(' <info>%s</info> %s%s%s', @@ -74,10 +74,10 @@ class TextDescriptor extends Descriptor $totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); $synopsis = sprintf('%s%s', $option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', - sprintf('--%s%s', $option->getName(), $value) + sprintf($option->isNegatable() ? '--%1$s|--no-%1$s' : '--%1$s%2$s', $option->getName(), $value) ); - $spacingWidth = $totalWidth - Helper::strlen($synopsis); + $spacingWidth = $totalWidth - Helper::width($synopsis); $this->writeText(sprintf(' <info>%s</info> %s%s%s%s', $synopsis, @@ -96,7 +96,7 @@ class TextDescriptor extends Descriptor { $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); foreach ($definition->getArguments() as $argument) { - $totalWidth = max($totalWidth, Helper::strlen($argument->getName())); + $totalWidth = max($totalWidth, Helper::width($argument->getName())); } if ($definition->getArguments()) { @@ -136,8 +136,6 @@ class TextDescriptor extends Descriptor */ protected function describeCommand(Command $command, array $options = []) { - $command->getSynopsis(true); - $command->getSynopsis(false); $command->mergeApplicationDefinition(false); if ($description = $command->getDescription()) { @@ -154,7 +152,7 @@ class TextDescriptor extends Descriptor } $this->writeText("\n"); - $definition = $command->getNativeDefinition(); + $definition = $command->getDefinition(); if ($definition->getOptions() || $definition->getArguments()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); @@ -236,7 +234,7 @@ class TextDescriptor extends Descriptor foreach ($namespace['commands'] as $name) { $this->writeText("\n"); - $spacingWidth = $width - Helper::strlen($name); + $spacingWidth = $width - Helper::width($name); $command = $commands[$name]; $commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; $this->writeText(sprintf(' <info>%s</info>%s%s', $name, str_repeat(' ', $spacingWidth), $commandAliases.$command->getDescription()), $options); @@ -306,12 +304,12 @@ class TextDescriptor extends Descriptor foreach ($commands as $command) { if ($command instanceof Command) { - $widths[] = Helper::strlen($command->getName()); + $widths[] = Helper::width($command->getName()); foreach ($command->getAliases() as $alias) { - $widths[] = Helper::strlen($alias); + $widths[] = Helper::width($alias); } } else { - $widths[] = Helper::strlen($command); + $widths[] = Helper::width($command); } } @@ -326,10 +324,11 @@ class TextDescriptor extends Descriptor $totalWidth = 0; foreach ($options as $option) { // "-" + shortcut + ", --" + name - $nameLength = 1 + max(Helper::strlen($option->getShortcut()), 1) + 4 + Helper::strlen($option->getName()); - - if ($option->acceptValue()) { - $valueLength = 1 + Helper::strlen($option->getName()); // = + value + $nameLength = 1 + max(Helper::width($option->getShortcut()), 1) + 4 + Helper::width($option->getName()); + if ($option->isNegatable()) { + $nameLength += 6 + Helper::width($option->getName()); // |--no- + name + } elseif ($option->acceptValue()) { + $valueLength = 1 + Helper::width($option->getName()); // = + value $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ] $nameLength += $valueLength; diff --git a/vendor/symfony/console/Descriptor/XmlDescriptor.php b/vendor/symfony/console/Descriptor/XmlDescriptor.php index e0ed53a38..4f7cd8b3e 100644 --- a/vendor/symfony/console/Descriptor/XmlDescriptor.php +++ b/vendor/symfony/console/Descriptor/XmlDescriptor.php @@ -44,37 +44,42 @@ class XmlDescriptor extends Descriptor return $dom; } - public function getCommandDocument(Command $command): \DOMDocument + public function getCommandDocument(Command $command, bool $short = false): \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($commandXML = $dom->createElement('command')); - $command->getSynopsis(); - $command->mergeApplicationDefinition(false); - $commandXML->setAttribute('id', $command->getName()); $commandXML->setAttribute('name', $command->getName()); $commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); $commandXML->appendChild($usagesXML = $dom->createElement('usages')); - foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { - $usagesXML->appendChild($dom->createElement('usage', $usage)); - } - $commandXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); - $commandXML->appendChild($helpXML = $dom->createElement('help')); - $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); + if ($short) { + foreach ($command->getAliases() as $usage) { + $usagesXML->appendChild($dom->createElement('usage', $usage)); + } + } else { + $command->mergeApplicationDefinition(false); - $definitionXML = $this->getInputDefinitionDocument($command->getNativeDefinition()); - $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); + foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { + $usagesXML->appendChild($dom->createElement('usage', $usage)); + } + + $commandXML->appendChild($helpXML = $dom->createElement('help')); + $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); + + $definitionXML = $this->getInputDefinitionDocument($command->getDefinition()); + $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); + } return $dom; } - public function getApplicationDocument(Application $application, string $namespace = null): \DOMDocument + public function getApplicationDocument(Application $application, string $namespace = null, bool $short = false): \DOMDocument { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($rootXml = $dom->createElement('symfony')); @@ -95,7 +100,7 @@ class XmlDescriptor extends Descriptor } foreach ($description->getCommands() as $command) { - $this->appendDocument($commandsXML, $this->getCommandDocument($command)); + $this->appendDocument($commandsXML, $this->getCommandDocument($command, $short)); } if (!$namespace) { @@ -144,7 +149,7 @@ class XmlDescriptor extends Descriptor */ protected function describeCommand(Command $command, array $options = []) { - $this->writeDocument($this->getCommandDocument($command)); + $this->writeDocument($this->getCommandDocument($command, $options['short'] ?? false)); } /** @@ -152,7 +157,7 @@ class XmlDescriptor extends Descriptor */ protected function describeApplication(Application $application, array $options = []) { - $this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null)); + $this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? false)); } /** @@ -226,6 +231,17 @@ class XmlDescriptor extends Descriptor } } + if ($option->isNegatable()) { + $dom->appendChild($objectXML = $dom->createElement('option')); + $objectXML->setAttribute('name', '--no-'.$option->getName()); + $objectXML->setAttribute('shortcut', ''); + $objectXML->setAttribute('accept_value', 0); + $objectXML->setAttribute('is_value_required', 0); + $objectXML->setAttribute('is_multiple', 0); + $objectXML->appendChild($descriptionXML = $dom->createElement('description')); + $descriptionXML->appendChild($dom->createTextNode('Negate the "--'.$option->getName().'" option')); + } + return $dom; } } diff --git a/vendor/symfony/console/Event/ConsoleCommandEvent.php b/vendor/symfony/console/Event/ConsoleCommandEvent.php index 9691db636..08bd18fd1 100644 --- a/vendor/symfony/console/Event/ConsoleCommandEvent.php +++ b/vendor/symfony/console/Event/ConsoleCommandEvent.php @@ -15,10 +15,8 @@ namespace Symfony\Component\Console\Event; * Allows to do things before the command is executed, like skipping the command or changing the input. * * @author Fabien Potencier <fabien@symfony.com> - * - * @final since Symfony 4.4 */ -class ConsoleCommandEvent extends ConsoleEvent +final class ConsoleCommandEvent extends ConsoleEvent { /** * The return code for skipped commands, this will also be passed into the terminate event. @@ -32,30 +30,21 @@ class ConsoleCommandEvent extends ConsoleEvent /** * Disables the command, so it won't be run. - * - * @return bool */ - public function disableCommand() + public function disableCommand(): bool { return $this->commandShouldRun = false; } - /** - * Enables the command. - * - * @return bool - */ - public function enableCommand() + public function enableCommand(): bool { return $this->commandShouldRun = true; } /** * Returns true if the command is runnable, false otherwise. - * - * @return bool */ - public function commandShouldRun() + public function commandShouldRun(): bool { return $this->commandShouldRun; } diff --git a/vendor/symfony/console/Event/ConsoleEvent.php b/vendor/symfony/console/Event/ConsoleEvent.php index 400eb5731..be7937d51 100644 --- a/vendor/symfony/console/Event/ConsoleEvent.php +++ b/vendor/symfony/console/Event/ConsoleEvent.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Console\Event; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\EventDispatcher\Event; +use Symfony\Contracts\EventDispatcher\Event; /** * Allows to inspect input and output of a command. @@ -38,7 +38,7 @@ class ConsoleEvent extends Event /** * Gets the command that is executed. * - * @return Command|null A Command instance + * @return Command|null */ public function getCommand() { @@ -48,7 +48,7 @@ class ConsoleEvent extends Event /** * Gets the input instance. * - * @return InputInterface An InputInterface instance + * @return InputInterface */ public function getInput() { @@ -58,7 +58,7 @@ class ConsoleEvent extends Event /** * Gets the output instance. * - * @return OutputInterface An OutputInterface instance + * @return OutputInterface */ public function getOutput() { diff --git a/vendor/symfony/console/Event/ConsoleSignalEvent.php b/vendor/symfony/console/Event/ConsoleSignalEvent.php new file mode 100644 index 000000000..ef13ed2f5 --- /dev/null +++ b/vendor/symfony/console/Event/ConsoleSignalEvent.php @@ -0,0 +1,35 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Event; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author marie <marie@users.noreply.github.com> + */ +final class ConsoleSignalEvent extends ConsoleEvent +{ + private $handlingSignal; + + public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal) + { + parent::__construct($command, $input, $output); + $this->handlingSignal = $handlingSignal; + } + + public function getHandlingSignal(): int + { + return $this->handlingSignal; + } +} diff --git a/vendor/symfony/console/Event/ConsoleTerminateEvent.php b/vendor/symfony/console/Event/ConsoleTerminateEvent.php index 43d0f8ab1..190038d1a 100644 --- a/vendor/symfony/console/Event/ConsoleTerminateEvent.php +++ b/vendor/symfony/console/Event/ConsoleTerminateEvent.php @@ -19,10 +19,8 @@ use Symfony\Component\Console\Output\OutputInterface; * Allows to manipulate the exit code of a command after its execution. * * @author Francesco Levorato <git@flevour.net> - * - * @final since Symfony 4.4 */ -class ConsoleTerminateEvent extends ConsoleEvent +final class ConsoleTerminateEvent extends ConsoleEvent { private $exitCode; @@ -33,22 +31,12 @@ class ConsoleTerminateEvent extends ConsoleEvent $this->setExitCode($exitCode); } - /** - * Sets the exit code. - * - * @param int $exitCode The command exit code - */ - public function setExitCode($exitCode) + public function setExitCode(int $exitCode): void { - $this->exitCode = (int) $exitCode; + $this->exitCode = $exitCode; } - /** - * Gets the exit code. - * - * @return int The command exit code - */ - public function getExitCode() + public function getExitCode(): int { return $this->exitCode; } diff --git a/vendor/symfony/console/Exception/CommandNotFoundException.php b/vendor/symfony/console/Exception/CommandNotFoundException.php index 590a71c77..910ae1928 100644 --- a/vendor/symfony/console/Exception/CommandNotFoundException.php +++ b/vendor/symfony/console/Exception/CommandNotFoundException.php @@ -34,7 +34,7 @@ class CommandNotFoundException extends \InvalidArgumentException implements Exce } /** - * @return string[] A list of similar defined names + * @return string[] */ public function getAlternatives() { diff --git a/vendor/symfony/console/Formatter/NullOutputFormatter.php b/vendor/symfony/console/Formatter/NullOutputFormatter.php new file mode 100644 index 000000000..d770e1465 --- /dev/null +++ b/vendor/symfony/console/Formatter/NullOutputFormatter.php @@ -0,0 +1,69 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Formatter; + +/** + * @author Tien Xuan Vo <tien.xuan.vo@gmail.com> + */ +final class NullOutputFormatter implements OutputFormatterInterface +{ + private $style; + + /** + * {@inheritdoc} + */ + public function format(?string $message): ?string + { + return null; + } + + /** + * {@inheritdoc} + */ + public function getStyle(string $name): OutputFormatterStyleInterface + { + // to comply with the interface we must return a OutputFormatterStyleInterface + return $this->style ?? $this->style = new NullOutputFormatterStyle(); + } + + /** + * {@inheritdoc} + */ + public function hasStyle(string $name): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function isDecorated(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function setDecorated(bool $decorated): void + { + // do nothing + } + + /** + * {@inheritdoc} + */ + public function setStyle(string $name, OutputFormatterStyleInterface $style): void + { + // do nothing + } +} diff --git a/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php b/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php new file mode 100644 index 000000000..9232510f4 --- /dev/null +++ b/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php @@ -0,0 +1,66 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Formatter; + +/** + * @author Tien Xuan Vo <tien.xuan.vo@gmail.com> + */ +final class NullOutputFormatterStyle implements OutputFormatterStyleInterface +{ + /** + * {@inheritdoc} + */ + public function apply(string $text): string + { + return $text; + } + + /** + * {@inheritdoc} + */ + public function setBackground(string $color = null): void + { + // do nothing + } + + /** + * {@inheritdoc} + */ + public function setForeground(string $color = null): void + { + // do nothing + } + + /** + * {@inheritdoc} + */ + public function setOption(string $option): void + { + // do nothing + } + + /** + * {@inheritdoc} + */ + public function setOptions(array $options): void + { + // do nothing + } + + /** + * {@inheritdoc} + */ + public function unsetOption(string $option): void + { + // do nothing + } +} diff --git a/vendor/symfony/console/Formatter/OutputFormatter.php b/vendor/symfony/console/Formatter/OutputFormatter.php index e8c10e700..603e5dca0 100644 --- a/vendor/symfony/console/Formatter/OutputFormatter.php +++ b/vendor/symfony/console/Formatter/OutputFormatter.php @@ -36,11 +36,9 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * Escapes "<" and ">" special chars in given text. * - * @param string $text Text to escape - * - * @return string Escaped text + * @return string */ - public static function escape($text) + public static function escape(string $text) { $text = preg_replace('/([^\\\\]|^)([<>])/', '$1\\\\$2', $text); @@ -88,9 +86,9 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * {@inheritdoc} */ - public function setDecorated($decorated) + public function setDecorated(bool $decorated) { - $this->decorated = (bool) $decorated; + $this->decorated = $decorated; } /** @@ -104,7 +102,7 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * {@inheritdoc} */ - public function setStyle($name, OutputFormatterStyleInterface $style) + public function setStyle(string $name, OutputFormatterStyleInterface $style) { $this->styles[strtolower($name)] = $style; } @@ -112,7 +110,7 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * {@inheritdoc} */ - public function hasStyle($name) + public function hasStyle(string $name) { return isset($this->styles[strtolower($name)]); } @@ -120,7 +118,7 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * {@inheritdoc} */ - public function getStyle($name) + public function getStyle(string $name) { if (!$this->hasStyle($name)) { throw new InvalidArgumentException(sprintf('Undefined style: "%s".', $name)); @@ -132,16 +130,20 @@ class OutputFormatter implements WrappableOutputFormatterInterface /** * {@inheritdoc} */ - public function format($message) + public function format(?string $message) { - return $this->formatAndWrap((string) $message, 0); + return $this->formatAndWrap($message, 0); } /** * {@inheritdoc} */ - public function formatAndWrap(string $message, int $width) + public function formatAndWrap(?string $message, int $width) { + if (null === $message) { + return ''; + } + $offset = 0; $output = ''; $openTagRegex = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; diff --git a/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/vendor/symfony/console/Formatter/OutputFormatterInterface.php index 22f40a34e..0b5f839a2 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterInterface.php +++ b/vendor/symfony/console/Formatter/OutputFormatterInterface.php @@ -20,51 +20,41 @@ interface OutputFormatterInterface { /** * Sets the decorated flag. - * - * @param bool $decorated Whether to decorate the messages or not */ - public function setDecorated($decorated); + public function setDecorated(bool $decorated); /** - * Gets the decorated flag. + * Whether the output will decorate messages. * - * @return bool true if the output will decorate messages, false otherwise + * @return bool */ public function isDecorated(); /** * Sets a new style. - * - * @param string $name The style name */ - public function setStyle($name, OutputFormatterStyleInterface $style); + public function setStyle(string $name, OutputFormatterStyleInterface $style); /** * Checks if output formatter has style with specified name. * - * @param string $name - * * @return bool */ - public function hasStyle($name); + public function hasStyle(string $name); /** * Gets style options from style with specified name. * - * @param string $name - * * @return OutputFormatterStyleInterface * * @throws \InvalidArgumentException When style isn't defined */ - public function getStyle($name); + public function getStyle(string $name); /** * Formats a message according to the given styles. * - * @param string $message The message to style - * - * @return string The styled message + * @return string|null */ - public function format($message); + public function format(?string $message); } diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyle.php b/vendor/symfony/console/Formatter/OutputFormatterStyle.php index 7cb6116b4..0fb36ac63 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterStyle.php +++ b/vendor/symfony/console/Formatter/OutputFormatterStyle.php @@ -11,7 +11,7 @@ namespace Symfony\Component\Console\Formatter; -use Symfony\Component\Console\Exception\InvalidArgumentException; +use Symfony\Component\Console\Color; /** * Formatter style class for defining styles. @@ -20,40 +20,11 @@ use Symfony\Component\Console\Exception\InvalidArgumentException; */ class OutputFormatterStyle implements OutputFormatterStyleInterface { - private static $availableForegroundColors = [ - 'black' => ['set' => 30, 'unset' => 39], - 'red' => ['set' => 31, 'unset' => 39], - 'green' => ['set' => 32, 'unset' => 39], - 'yellow' => ['set' => 33, 'unset' => 39], - 'blue' => ['set' => 34, 'unset' => 39], - 'magenta' => ['set' => 35, 'unset' => 39], - 'cyan' => ['set' => 36, 'unset' => 39], - 'white' => ['set' => 37, 'unset' => 39], - 'default' => ['set' => 39, 'unset' => 39], - ]; - private static $availableBackgroundColors = [ - 'black' => ['set' => 40, 'unset' => 49], - 'red' => ['set' => 41, 'unset' => 49], - 'green' => ['set' => 42, 'unset' => 49], - 'yellow' => ['set' => 43, 'unset' => 49], - 'blue' => ['set' => 44, 'unset' => 49], - 'magenta' => ['set' => 45, 'unset' => 49], - 'cyan' => ['set' => 46, 'unset' => 49], - 'white' => ['set' => 47, 'unset' => 49], - 'default' => ['set' => 49, 'unset' => 49], - ]; - private static $availableOptions = [ - 'bold' => ['set' => 1, 'unset' => 22], - 'underscore' => ['set' => 4, 'unset' => 24], - 'blink' => ['set' => 5, 'unset' => 25], - 'reverse' => ['set' => 7, 'unset' => 27], - 'conceal' => ['set' => 8, 'unset' => 28], - ]; - + private $color; private $foreground; private $background; + private $options; private $href; - private $options = []; private $handlesHrefGracefully; /** @@ -64,51 +35,23 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface */ public function __construct(string $foreground = null, string $background = null, array $options = []) { - if (null !== $foreground) { - $this->setForeground($foreground); - } - if (null !== $background) { - $this->setBackground($background); - } - if (\count($options)) { - $this->setOptions($options); - } + $this->color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); } /** * {@inheritdoc} */ - public function setForeground($color = null) + public function setForeground(string $color = null) { - if (null === $color) { - $this->foreground = null; - - return; - } - - if (!isset(static::$availableForegroundColors[$color])) { - throw new InvalidArgumentException(sprintf('Invalid foreground color specified: "%s". Expected one of (%s).', $color, implode(', ', array_keys(static::$availableForegroundColors)))); - } - - $this->foreground = static::$availableForegroundColors[$color]; + $this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); } /** * {@inheritdoc} */ - public function setBackground($color = null) + public function setBackground(string $color = null) { - if (null === $color) { - $this->background = null; - - return; - } - - if (!isset(static::$availableBackgroundColors[$color])) { - throw new InvalidArgumentException(sprintf('Invalid background color specified: "%s". Expected one of (%s).', $color, implode(', ', array_keys(static::$availableBackgroundColors)))); - } - - $this->background = static::$availableBackgroundColors[$color]; + $this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options); } public function setHref(string $url): void @@ -119,30 +62,23 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface /** * {@inheritdoc} */ - public function setOption($option) + public function setOption(string $option) { - if (!isset(static::$availableOptions[$option])) { - throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(static::$availableOptions)))); - } - - if (!\in_array(static::$availableOptions[$option], $this->options)) { - $this->options[] = static::$availableOptions[$option]; - } + $this->options[] = $option; + $this->color = new Color($this->foreground, $this->background, $this->options); } /** * {@inheritdoc} */ - public function unsetOption($option) + public function unsetOption(string $option) { - if (!isset(static::$availableOptions[$option])) { - throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(static::$availableOptions)))); - } - - $pos = array_search(static::$availableOptions[$option], $this->options); + $pos = array_search($option, $this->options); if (false !== $pos) { unset($this->options[$pos]); } + + $this->color = new Color($this->foreground, $this->background, $this->options); } /** @@ -150,48 +86,23 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface */ public function setOptions(array $options) { - $this->options = []; - - foreach ($options as $option) { - $this->setOption($option); - } + $this->color = new Color($this->foreground, $this->background, $this->options = $options); } /** * {@inheritdoc} */ - public function apply($text) + public function apply(string $text) { - $setCodes = []; - $unsetCodes = []; - if (null === $this->handlesHrefGracefully) { $this->handlesHrefGracefully = 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') && (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100); } - if (null !== $this->foreground) { - $setCodes[] = $this->foreground['set']; - $unsetCodes[] = $this->foreground['unset']; - } - if (null !== $this->background) { - $setCodes[] = $this->background['set']; - $unsetCodes[] = $this->background['unset']; - } - - foreach ($this->options as $option) { - $setCodes[] = $option['set']; - $unsetCodes[] = $option['unset']; - } - if (null !== $this->href && $this->handlesHrefGracefully) { $text = "\033]8;;$this->href\033\\$text\033]8;;\033\\"; } - if (0 === \count($setCodes)) { - return $text; - } - - return sprintf("\033[%sm%s\033[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes)); + return $this->color->apply($text); } } diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php index af171c270..b30560d22 100644 --- a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +++ b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php @@ -20,31 +20,23 @@ interface OutputFormatterStyleInterface { /** * Sets style foreground color. - * - * @param string|null $color The color name */ - public function setForeground($color = null); + public function setForeground(string $color = null); /** * Sets style background color. - * - * @param string $color The color name */ - public function setBackground($color = null); + public function setBackground(string $color = null); /** * Sets some specific style option. - * - * @param string $option The option name */ - public function setOption($option); + public function setOption(string $option); /** * Unsets some specific style option. - * - * @param string $option The option name */ - public function unsetOption($option); + public function unsetOption(string $option); /** * Sets multiple style options at once. @@ -54,9 +46,7 @@ interface OutputFormatterStyleInterface /** * Applies the style to a given text. * - * @param string $text The text to style - * * @return string */ - public function apply($text); + public function apply(string $text); } diff --git a/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php b/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php index 6694053f0..42319ee55 100644 --- a/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +++ b/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php @@ -21,5 +21,5 @@ interface WrappableOutputFormatterInterface extends OutputFormatterInterface /** * Formats a message according to the given styles, wrapping at `$width` (0 means no wrapping). */ - public function formatAndWrap(string $message, int $width); + public function formatAndWrap(?string $message, int $width); } diff --git a/vendor/symfony/console/Helper/DebugFormatterHelper.php b/vendor/symfony/console/Helper/DebugFormatterHelper.php index 1653edeb1..e258ba050 100644 --- a/vendor/symfony/console/Helper/DebugFormatterHelper.php +++ b/vendor/symfony/console/Helper/DebugFormatterHelper.php @@ -20,22 +20,18 @@ namespace Symfony\Component\Console\Helper; */ class DebugFormatterHelper extends Helper { - private $colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default']; + private const COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default']; private $started = []; private $count = -1; /** * Starts a debug formatting session. * - * @param string $id The id of the formatting session - * @param string $message The message to display - * @param string $prefix The prefix to use - * * @return string */ - public function start($id, $message, $prefix = 'RUN') + public function start(string $id, string $message, string $prefix = 'RUN') { - $this->started[$id] = ['border' => ++$this->count % \count($this->colors)]; + $this->started[$id] = ['border' => ++$this->count % \count(self::COLORS)]; return sprintf("%s<bg=blue;fg=white> %s </> <fg=blue>%s</>\n", $this->getBorder($id), $prefix, $message); } @@ -43,15 +39,9 @@ class DebugFormatterHelper extends Helper /** * Adds progress to a formatting session. * - * @param string $id The id of the formatting session - * @param string $buffer The message to display - * @param bool $error Whether to consider the buffer as error - * @param string $prefix The prefix for output - * @param string $errorPrefix The prefix for error output - * * @return string */ - public function progress($id, $buffer, $error = false, $prefix = 'OUT', $errorPrefix = 'ERR') + public function progress(string $id, string $buffer, bool $error = false, string $prefix = 'OUT', string $errorPrefix = 'ERR') { $message = ''; @@ -85,14 +75,9 @@ class DebugFormatterHelper extends Helper /** * Stops a formatting session. * - * @param string $id The id of the formatting session - * @param string $message The message to display - * @param bool $successful Whether to consider the result as success - * @param string $prefix The prefix for the end output - * * @return string */ - public function stop($id, $message, $successful, $prefix = 'RES') + public function stop(string $id, string $message, bool $successful, string $prefix = 'RES') { $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; @@ -109,7 +94,7 @@ class DebugFormatterHelper extends Helper private function getBorder(string $id): string { - return sprintf('<bg=%s> </>', $this->colors[$this->started[$id]['border']]); + return sprintf('<bg=%s> </>', self::COLORS[$this->started[$id]['border']]); } /** diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php index 3055baefd..af85e9c0a 100644 --- a/vendor/symfony/console/Helper/DescriptorHelper.php +++ b/vendor/symfony/console/Helper/DescriptorHelper.php @@ -48,11 +48,9 @@ class DescriptorHelper extends Helper * * format: string, the output format name * * raw_text: boolean, sets output type as raw * - * @param object $object - * * @throws InvalidArgumentException when the given format is not supported */ - public function describe(OutputInterface $output, $object, array $options = []) + public function describe(OutputInterface $output, ?object $object, array $options = []) { $options = array_merge([ 'raw_text' => false, @@ -70,11 +68,9 @@ class DescriptorHelper extends Helper /** * Registers a descriptor. * - * @param string $format - * * @return $this */ - public function register($format, DescriptorInterface $descriptor) + public function register(string $format, DescriptorInterface $descriptor) { $this->descriptors[$format] = $descriptor; @@ -88,4 +84,9 @@ class DescriptorHelper extends Helper { return 'descriptor'; } + + public function getFormats(): array + { + return array_keys($this->descriptors); + } } diff --git a/vendor/symfony/console/Helper/FormatterHelper.php b/vendor/symfony/console/Helper/FormatterHelper.php index d6eccee8e..92d8dc724 100644 --- a/vendor/symfony/console/Helper/FormatterHelper.php +++ b/vendor/symfony/console/Helper/FormatterHelper.php @@ -23,13 +23,9 @@ class FormatterHelper extends Helper /** * Formats a message within a section. * - * @param string $section The section name - * @param string $message The message - * @param string $style The style to apply to the section - * - * @return string The format section + * @return string */ - public function formatSection($section, $message, $style = 'info') + public function formatSection(string $section, string $message, string $style = 'info') { return sprintf('<%s>[%s]</%s> %s', $style, $section, $style, $message); } @@ -38,12 +34,10 @@ class FormatterHelper extends Helper * Formats a message as a block of text. * * @param string|array $messages The message to write in the block - * @param string $style The style to apply to the whole block - * @param bool $large Whether to return a large block * - * @return string The formatter message + * @return string */ - public function formatBlock($messages, $style, $large = false) + public function formatBlock($messages, string $style, bool $large = false) { if (!\is_array($messages)) { $messages = [$messages]; @@ -54,12 +48,12 @@ class FormatterHelper extends Helper foreach ($messages as $message) { $message = OutputFormatter::escape($message); $lines[] = sprintf($large ? ' %s ' : ' %s ', $message); - $len = max(self::strlen($message) + ($large ? 4 : 2), $len); + $len = max(self::width($message) + ($large ? 4 : 2), $len); } $messages = $large ? [str_repeat(' ', $len)] : []; for ($i = 0; isset($lines[$i]); ++$i) { - $messages[] = $lines[$i].str_repeat(' ', $len - self::strlen($lines[$i])); + $messages[] = $lines[$i].str_repeat(' ', $len - self::width($lines[$i])); } if ($large) { $messages[] = str_repeat(' ', $len); @@ -75,17 +69,13 @@ class FormatterHelper extends Helper /** * Truncates a message to the given length. * - * @param string $message - * @param int $length - * @param string $suffix - * * @return string */ - public function truncate($message, $length, $suffix = '...') + public function truncate(string $message, int $length, string $suffix = '...') { - $computedLength = $length - self::strlen($suffix); + $computedLength = $length - self::width($suffix); - if ($computedLength > self::strlen($message)) { + if ($computedLength > self::width($message)) { return $message; } diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php index 18d85b940..c7d3e25d0 100644 --- a/vendor/symfony/console/Helper/Helper.php +++ b/vendor/symfony/console/Helper/Helper.php @@ -12,6 +12,7 @@ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Formatter\OutputFormatterInterface; +use Symfony\Component\String\UnicodeString; /** * Helper is the base class for all helper classes. @@ -41,13 +42,28 @@ abstract class Helper implements HelperInterface /** * Returns the length of a string, using mb_strwidth if it is available. * - * @param string $string The string to check its length + * @deprecated since Symfony 5.3 * - * @return int The length of the string + * @return int */ - public static function strlen($string) + public static function strlen(?string $string) { - $string = (string) $string; + trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::width() or Helper::length() instead.', __METHOD__); + + return self::width($string); + } + + /** + * Returns the width of a string, using mb_strwidth if it is available. + * The width is how many characters positions the string will use. + */ + public static function width(?string $string): int + { + $string ?? $string = ''; + + if (preg_match('//u', $string)) { + return (new UnicodeString($string))->width(false); + } if (false === $encoding = mb_detect_encoding($string, null, true)) { return \strlen($string); @@ -56,18 +72,33 @@ abstract class Helper implements HelperInterface return mb_strwidth($string, $encoding); } + /** + * Returns the length of a string, using mb_strlen if it is available. + * The length is related to how many bytes the string will use. + */ + public static function length(?string $string): int + { + $string ?? $string = ''; + + if (preg_match('//u', $string)) { + return (new UnicodeString($string))->length(); + } + + if (false === $encoding = mb_detect_encoding($string, null, true)) { + return \strlen($string); + } + + return mb_strlen($string, $encoding); + } + /** * Returns the subset of a string, using mb_substr if it is available. * - * @param string $string String to subset - * @param int $from Start offset - * @param int|null $length Length to read - * - * @return string The string subset + * @return string */ - public static function substr($string, $from, $length = null) + public static function substr(?string $string, int $from, int $length = null) { - $string = (string) $string; + $string ?? $string = ''; if (false === $encoding = mb_detect_encoding($string, null, true)) { return substr($string, $from, $length); @@ -105,7 +136,7 @@ abstract class Helper implements HelperInterface } } - public static function formatMemory($memory) + public static function formatMemory(int $memory) { if ($memory >= 1024 * 1024 * 1024) { return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); @@ -122,21 +153,26 @@ abstract class Helper implements HelperInterface return sprintf('%d B', $memory); } - public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, $string) + /** + * @deprecated since Symfony 5.3 + */ + public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string) { - return self::strlen(self::removeDecoration($formatter, $string)); + trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::removeDecoration() instead.', __METHOD__); + + return self::width(self::removeDecoration($formatter, $string)); } - public static function removeDecoration(OutputFormatterInterface $formatter, $string) + public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) { $isDecorated = $formatter->isDecorated(); $formatter->setDecorated(false); // remove <...> formatting - $string = $formatter->format($string); + $string = $formatter->format($string ?? ''); // remove already formatted characters - $string = preg_replace("/\033\[[^m]*m/", '', $string); + $string = preg_replace("/\033\[[^m]*m/", '', $string ?? ''); // remove terminal hyperlinks - $string = preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string); + $string = preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string ?? ''); $formatter->setDecorated($isDecorated); return $string; diff --git a/vendor/symfony/console/Helper/HelperInterface.php b/vendor/symfony/console/Helper/HelperInterface.php index 1ce823587..fc952b486 100644 --- a/vendor/symfony/console/Helper/HelperInterface.php +++ b/vendor/symfony/console/Helper/HelperInterface.php @@ -26,14 +26,14 @@ interface HelperInterface /** * Gets the helper set associated with this helper. * - * @return HelperSet A HelperSet instance + * @return HelperSet|null */ public function getHelperSet(); /** * Returns the canonical name of this helper. * - * @return string The canonical name + * @return string */ public function getName(); } diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php index 9aa1e67ba..719762d24 100644 --- a/vendor/symfony/console/Helper/HelperSet.php +++ b/vendor/symfony/console/Helper/HelperSet.php @@ -18,12 +18,12 @@ use Symfony\Component\Console\Exception\InvalidArgumentException; * HelperSet represents a set of helpers to be used with a command. * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<string, Helper> */ class HelperSet implements \IteratorAggregate { - /** - * @var Helper[] - */ + /** @var array<string, Helper> */ private $helpers = []; private $command; @@ -37,12 +37,7 @@ class HelperSet implements \IteratorAggregate } } - /** - * Sets a helper. - * - * @param string $alias An alias - */ - public function set(HelperInterface $helper, $alias = null) + public function set(HelperInterface $helper, string $alias = null) { $this->helpers[$helper->getName()] = $helper; if (null !== $alias) { @@ -55,11 +50,9 @@ class HelperSet implements \IteratorAggregate /** * Returns true if the helper if defined. * - * @param string $name The helper name - * - * @return bool true if the helper is defined, false otherwise + * @return bool */ - public function has($name) + public function has(string $name) { return isset($this->helpers[$name]); } @@ -67,13 +60,11 @@ class HelperSet implements \IteratorAggregate /** * Gets a helper value. * - * @param string $name The helper name - * - * @return HelperInterface The helper instance + * @return HelperInterface * * @throws InvalidArgumentException if the helper is not defined */ - public function get($name) + public function get(string $name) { if (!$this->has($name)) { throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); @@ -82,23 +73,32 @@ class HelperSet implements \IteratorAggregate return $this->helpers[$name]; } + /** + * @deprecated since Symfony 5.4 + */ public function setCommand(Command $command = null) { + trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); + $this->command = $command; } /** * Gets the command associated with this helper set. * - * @return Command A Command instance + * @return Command + * + * @deprecated since Symfony 5.4 */ public function getCommand() { + trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); + return $this->command; } /** - * @return \Traversable<Helper> + * @return \Traversable<string, Helper> */ #[\ReturnTypeWillChange] public function getIterator() diff --git a/vendor/symfony/console/Helper/ProcessHelper.php b/vendor/symfony/console/Helper/ProcessHelper.php index 862d09f21..4ea3d724d 100644 --- a/vendor/symfony/console/Helper/ProcessHelper.php +++ b/vendor/symfony/console/Helper/ProcessHelper.php @@ -21,22 +21,18 @@ use Symfony\Component\Process\Process; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.2 + * @final */ class ProcessHelper extends Helper { /** * Runs an external process. * - * @param array|Process $cmd An instance of Process or an array of the command and arguments - * @param string|null $error An error message that must be displayed if something went wrong - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - * @param int $verbosity The threshold for verbosity - * - * @return Process The process that ran + * @param array|Process $cmd An instance of Process or an array of the command and arguments + * @param callable|null $callback A PHP callback to run whenever there is some + * output available on STDOUT or STDERR */ - public function run(OutputInterface $output, $cmd, $error = null, callable $callback = null, $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE) + public function run(OutputInterface $output, $cmd, string $error = null, callable $callback = null, int $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE): Process { if (!class_exists(Process::class)) { throw new \LogicException('The ProcessHelper cannot be run as the Process component is not installed. Try running "compose require symfony/process".'); @@ -53,8 +49,7 @@ class ProcessHelper extends Helper } if (!\is_array($cmd)) { - @trigger_error(sprintf('Passing a command as a string to "%s()" is deprecated since Symfony 4.2, pass it the command as an array of arguments instead.', __METHOD__), \E_USER_DEPRECATED); - $cmd = [method_exists(Process::class, 'fromShellCommandline') ? Process::fromShellCommandline($cmd) : new Process($cmd)]; + throw new \TypeError(sprintf('The "command" argument of "%s()" must be an array or a "%s" instance, "%s" given.', __METHOD__, Process::class, get_debug_type($cmd))); } if (\is_string($cmd[0] ?? null)) { @@ -96,17 +91,14 @@ class ProcessHelper extends Helper * exits with a non-zero exit code. * * @param array|Process $cmd An instance of Process or a command to run - * @param string|null $error An error message that must be displayed if something went wrong * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * - * @return Process The process that ran - * * @throws ProcessFailedException * * @see run() */ - public function mustRun(OutputInterface $output, $cmd, $error = null, callable $callback = null) + public function mustRun(OutputInterface $output, $cmd, string $error = null, callable $callback = null): Process { $process = $this->run($output, $cmd, $error, $callback); @@ -119,10 +111,8 @@ class ProcessHelper extends Helper /** * Wraps a Process callback to add debugging output. - * - * @return callable */ - public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null) + public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null): callable { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); @@ -147,7 +137,7 @@ class ProcessHelper extends Helper /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'process'; } diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php index 1de9b7b3c..eb6aacb1a 100644 --- a/vendor/symfony/console/Helper/ProgressBar.php +++ b/vendor/symfony/console/Helper/ProgressBar.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Console\Helper; +use Symfony\Component\Console\Cursor; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\ConsoleSectionOutput; @@ -25,6 +26,16 @@ use Symfony\Component\Console\Terminal; */ final class ProgressBar { + public const FORMAT_VERBOSE = 'verbose'; + public const FORMAT_VERY_VERBOSE = 'very_verbose'; + public const FORMAT_DEBUG = 'debug'; + public const FORMAT_NORMAL = 'normal'; + + private const FORMAT_VERBOSE_NOMAX = 'verbose_nomax'; + private const FORMAT_VERY_VERBOSE_NOMAX = 'very_verbose_nomax'; + private const FORMAT_DEBUG_NOMAX = 'debug_nomax'; + private const FORMAT_NORMAL_NOMAX = 'normal_nomax'; + private $barWidth = 28; private $barChar; private $emptyBarChar = '-'; @@ -42,11 +53,11 @@ final class ProgressBar private $startTime; private $stepWidth; private $percent = 0.0; - private $formatLineCount; private $messages = []; private $overwrite = true; private $terminal; private $previousMessage; + private $cursor; private static $formatters; private static $formats; @@ -54,7 +65,7 @@ final class ProgressBar /** * @param int $max Maximum steps (0 if unknown) */ - public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 0.1) + public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); @@ -78,6 +89,7 @@ final class ProgressBar } $this->startTime = time(); + $this->cursor = new Cursor($output); } /** @@ -101,8 +113,6 @@ final class ProgressBar * Gets the placeholder formatter for a given name. * * @param string $name The placeholder name (including the delimiter char like %) - * - * @return callable|null A PHP callable */ public static function getPlaceholderFormatterDefinition(string $name): ?callable { @@ -134,8 +144,6 @@ final class ProgressBar * Gets the format for a given name. * * @param string $name The format name - * - * @return string|null A format string */ public static function getFormatDefinition(string $name): ?string { @@ -191,11 +199,29 @@ final class ProgressBar return $this->percent; } - public function getBarOffset(): int + public function getBarOffset(): float { return floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); } + public function getEstimated(): float + { + if (!$this->step) { + return 0; + } + + return round((time() - $this->startTime) / $this->step * $this->max); + } + + public function getRemaining(): float + { + if (!$this->step) { + return 0; + } + + return round((time() - $this->startTime) / $this->step * ($this->max - $this->step)); + } + public function setBarWidth(int $size) { $this->barWidth = max(1, $size); @@ -213,11 +239,7 @@ final class ProgressBar public function getBarCharacter(): string { - if (null === $this->barChar) { - return $this->max ? '=' : $this->emptyBarChar; - } - - return $this->barChar; + return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); } public function setEmptyBarCharacter(string $char) @@ -357,7 +379,7 @@ final class ProgressBar { $this->format = null; $this->max = max(0, $max); - $this->stepWidth = $this->max ? Helper::strlen((string) $this->max) : 4; + $this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; } /** @@ -423,8 +445,6 @@ final class ProgressBar } else { $this->format = $format; } - - $this->formatLineCount = substr_count($this->format, "\n"); } /** @@ -441,23 +461,25 @@ final class ProgressBar if ($this->overwrite) { if (null !== $this->previousMessage) { if ($this->output instanceof ConsoleSectionOutput) { - $messageLines = explode("\n", $message); + $messageLines = explode("\n", $this->previousMessage); $lineCount = \count($messageLines); foreach ($messageLines as $messageLine) { - $messageLineLength = Helper::strlenWithoutDecoration($this->output->getFormatter(), $messageLine); + $messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); if ($messageLineLength > $this->terminal->getWidth()) { $lineCount += floor($messageLineLength / $this->terminal->getWidth()); } } $this->output->clear($lineCount); } else { - // Erase previous lines - if ($this->formatLineCount > 0) { - $message = str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount).$message; + $lineCount = substr_count($this->previousMessage, "\n"); + for ($i = 0; $i < $lineCount; ++$i) { + $this->cursor->moveToColumn(1); + $this->cursor->clearLine(); + $this->cursor->moveUp(); } - // Move the cursor to the beginning of the line and erase the line - $message = "\x0D\x1B[2K$message"; + $this->cursor->moveToColumn(1); + $this->cursor->clearLine(); } } } elseif ($this->step > 0) { @@ -476,13 +498,13 @@ final class ProgressBar switch ($this->output->getVerbosity()) { // OutputInterface::VERBOSITY_QUIET: display is disabled anyway case OutputInterface::VERBOSITY_VERBOSE: - return $this->max ? 'verbose' : 'verbose_nomax'; + return $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX; case OutputInterface::VERBOSITY_VERY_VERBOSE: - return $this->max ? 'very_verbose' : 'very_verbose_nomax'; + return $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX; case OutputInterface::VERBOSITY_DEBUG: - return $this->max ? 'debug' : 'debug_nomax'; + return $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX; default: - return $this->max ? 'normal' : 'normal_nomax'; + return $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX; } } @@ -493,7 +515,7 @@ final class ProgressBar $completeBars = $bar->getBarOffset(); $display = str_repeat($bar->getBarCharacter(), $completeBars); if ($completeBars < $bar->getBarWidth()) { - $emptyBars = $bar->getBarWidth() - $completeBars - Helper::strlenWithoutDecoration($output->getFormatter(), $bar->getProgressCharacter()); + $emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); } @@ -507,26 +529,14 @@ final class ProgressBar throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); } - if (!$bar->getProgress()) { - $remaining = 0; - } else { - $remaining = round((time() - $bar->getStartTime()) / $bar->getProgress() * ($bar->getMaxSteps() - $bar->getProgress())); - } - - return Helper::formatTime($remaining); + return Helper::formatTime($bar->getRemaining()); }, 'estimated' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); } - if (!$bar->getProgress()) { - $estimated = 0; - } else { - $estimated = round((time() - $bar->getStartTime()) / $bar->getProgress() * $bar->getMaxSteps()); - } - - return Helper::formatTime($estimated); + return Helper::formatTime($bar->getEstimated()); }, 'memory' => function (self $bar) { return Helper::formatMemory(memory_get_usage(true)); @@ -546,17 +556,17 @@ final class ProgressBar private static function initFormats(): array { return [ - 'normal' => ' %current%/%max% [%bar%] %percent:3s%%', - 'normal_nomax' => ' %current% [%bar%]', + self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', + self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', - 'verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', - 'verbose_nomax' => ' %current% [%bar%] %elapsed:6s%', + self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', + self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - 'very_verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', - 'very_verbose_nomax' => ' %current% [%bar%] %elapsed:6s%', + self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', + self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - 'debug' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', - 'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%', + self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', + self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%', ]; } @@ -582,7 +592,7 @@ final class ProgressBar // gets string length for each sub line with multiline format $linesLength = array_map(function ($subLine) { - return Helper::strlenWithoutDecoration($this->output->getFormatter(), rtrim($subLine, "\r")); + return Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))); }, explode("\n", $line)); $linesWidth = max($linesLength); diff --git a/vendor/symfony/console/Helper/ProgressIndicator.php b/vendor/symfony/console/Helper/ProgressIndicator.php index dc37148ed..3482343fc 100644 --- a/vendor/symfony/console/Helper/ProgressIndicator.php +++ b/vendor/symfony/console/Helper/ProgressIndicator.php @@ -20,6 +20,17 @@ use Symfony\Component\Console\Output\OutputInterface; */ class ProgressIndicator { + private const FORMATS = [ + 'normal' => ' %indicator% %message%', + 'normal_no_ansi' => ' %message%', + + 'verbose' => ' %indicator% %message% (%elapsed:6s%)', + 'verbose_no_ansi' => ' %message% (%elapsed:6s%)', + + 'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', + 'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', + ]; + private $output; private $startTime; private $format; @@ -30,13 +41,14 @@ class ProgressIndicator private $indicatorUpdateTime; private $started = false; + /** + * @var array<string, callable> + */ private static $formatters; - private static $formats; /** - * @param string|null $format Indicator format - * @param int $indicatorChangeInterval Change interval in milliseconds - * @param array|null $indicatorValues Animated indicator characters + * @param int $indicatorChangeInterval Change interval in milliseconds + * @param array|null $indicatorValues Animated indicator characters */ public function __construct(OutputInterface $output, string $format = null, int $indicatorChangeInterval = 100, array $indicatorValues = null) { @@ -64,10 +76,8 @@ class ProgressIndicator /** * Sets the current indicator message. - * - * @param string|null $message */ - public function setMessage($message) + public function setMessage(?string $message) { $this->message = $message; @@ -76,10 +86,8 @@ class ProgressIndicator /** * Starts the indicator output. - * - * @param $message */ - public function start($message) + public function start(string $message) { if ($this->started) { throw new LogicException('Progress indicator already started.'); @@ -124,7 +132,7 @@ class ProgressIndicator * * @param $message */ - public function finish($message) + public function finish(string $message) { if (!$this->started) { throw new LogicException('Progress indicator has not yet been started.'); @@ -139,28 +147,19 @@ class ProgressIndicator /** * Gets the format for a given name. * - * @param string $name The format name - * - * @return string|null A format string + * @return string|null */ - public static function getFormatDefinition($name) + public static function getFormatDefinition(string $name) { - if (!self::$formats) { - self::$formats = self::initFormats(); - } - - return self::$formats[$name] ?? null; + return self::FORMATS[$name] ?? null; } /** * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. - * - * @param string $name The placeholder name (including the delimiter char like %) - * @param callable $callable A PHP callable */ - public static function setPlaceholderFormatterDefinition($name, $callable) + public static function setPlaceholderFormatterDefinition(string $name, callable $callable) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); @@ -170,13 +169,11 @@ class ProgressIndicator } /** - * Gets the placeholder formatter for a given name. + * Gets the placeholder formatter for a given name (including the delimiter char like %). * - * @param string $name The placeholder name (including the delimiter char like %) - * - * @return callable|null A PHP callable + * @return callable|null */ - public static function getPlaceholderFormatterDefinition($name) + public static function getPlaceholderFormatterDefinition(string $name) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); @@ -249,18 +246,4 @@ class ProgressIndicator }, ]; } - - private static function initFormats(): array - { - return [ - 'normal' => ' %indicator% %message%', - 'normal_no_ansi' => ' %message%', - - 'verbose' => ' %indicator% %message% (%elapsed:6s%)', - 'verbose_no_ansi' => ' %message% (%elapsed:6s%)', - - 'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', - 'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', - ]; - } } diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php index a4754b824..10602038c 100644 --- a/vendor/symfony/console/Helper/QuestionHelper.php +++ b/vendor/symfony/console/Helper/QuestionHelper.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Console\Helper; +use Symfony\Component\Console\Cursor; use Symfony\Component\Console\Exception\MissingInputException; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Formatter\OutputFormatter; @@ -24,6 +25,8 @@ use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\Question; use Symfony\Component\Console\Terminal; +use function Symfony\Component\String\s; + /** * The QuestionHelper class provides helpers to interact with the user. * @@ -31,8 +34,11 @@ use Symfony\Component\Console\Terminal; */ class QuestionHelper extends Helper { + /** + * @var resource|null + */ private $inputStream; - private static $shell; + private static $stty = true; private static $stdinIsInteractive; @@ -122,9 +128,7 @@ class QuestionHelper extends Helper } if (false === $ret) { - $cp = $this->setIOCodepage(); - $ret = fgets($inputStream, 4096); - $ret = $this->resetIOCodepage($cp, $ret); + $ret = $this->readInput($inputStream, $question); if (false === $ret) { throw new MissingInputException('Aborted.'); } @@ -199,18 +203,16 @@ class QuestionHelper extends Helper } /** - * @param string $tag - * * @return string[] */ - protected function formatChoiceQuestionChoices(ChoiceQuestion $question, $tag) + protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag) { $messages = []; - $maxWidth = max(array_map([__CLASS__, 'strlen'], array_keys($choices = $question->getChoices()))); + $maxWidth = max(array_map([__CLASS__, 'width'], array_keys($choices = $question->getChoices()))); foreach ($choices as $key => $value) { - $padding = str_repeat(' ', $maxWidth - self::strlen($key)); + $padding = str_repeat(' ', $maxWidth - self::width($key)); $messages[] = sprintf(" [<$tag>%s$padding</$tag>] %s", $key, $value); } @@ -239,6 +241,8 @@ class QuestionHelper extends Helper */ private function autocomplete(OutputInterface $output, Question $question, $inputStream, callable $autocomplete): string { + $cursor = new Cursor($output, $inputStream); + $fullChoice = ''; $ret = ''; @@ -248,6 +252,9 @@ class QuestionHelper extends Helper $numMatches = \count($matches); $sttyMode = shell_exec('stty -g'); + $isStdin = 'php://stdin' === (stream_get_meta_data($inputStream)['uri'] ?? null); + $r = [$inputStream]; + $w = []; // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead) shell_exec('stty -icanon -echo'); @@ -257,18 +264,22 @@ class QuestionHelper extends Helper // Read a keypress while (!feof($inputStream)) { + while ($isStdin && 0 === @stream_select($r, $w, $w, 0, 100)) { + // Give signal handlers a chance to run + $r = [$inputStream]; + } $c = fread($inputStream, 1); // as opposed to fgets(), fread() returns an empty string when the stream content is empty, not false. if (false === $c || ('' === $ret && '' === $c && null === $question->getDefault())) { - shell_exec(sprintf('stty %s', $sttyMode)); + shell_exec('stty '.$sttyMode); throw new MissingInputException('Aborted.'); } elseif ("\177" === $c) { // Backspace Character if (0 === $numMatches && 0 !== $i) { --$i; + $cursor->moveLeft(s($fullChoice)->slice(-1)->width(false)); + $fullChoice = self::substr($fullChoice, 0, $i); - // Move cursor backwards - $output->write("\033[1D"); } if (0 === $i) { @@ -354,22 +365,19 @@ class QuestionHelper extends Helper } } - // Erase characters from cursor to end of line - $output->write("\033[K"); + $cursor->clearLineAfter(); if ($numMatches > 0 && -1 !== $ofs) { - // Save cursor position - $output->write("\0337"); + $cursor->savePosition(); // Write highlighted text, complete the partially entered response $charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); $output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).'</hl>'); - // Restore cursor position - $output->write("\0338"); + $cursor->restorePosition(); } } // Reset stty so it behaves normally again - shell_exec(sprintf('stty %s', $sttyMode)); + shell_exec('stty '.$sttyMode); return $fullChoice; } @@ -430,7 +438,7 @@ class QuestionHelper extends Helper $value = fgets($inputStream, 4096); if (self::$stty && Terminal::hasSttyAvailable()) { - shell_exec(sprintf('stty %s', $sttyMode)); + shell_exec('stty '.$sttyMode); } if (false === $value) { @@ -501,6 +509,40 @@ class QuestionHelper extends Helper return self::$stdinIsInteractive = 1 !== $status; } + /** + * Reads one or more lines of input and returns what is read. + * + * @param resource $inputStream The handler resource + * @param Question $question The question being asked + * + * @return string|false The input received, false in case input could not be read + */ + private function readInput($inputStream, Question $question) + { + if (!$question->isMultiline()) { + $cp = $this->setIOCodepage(); + $ret = fgets($inputStream, 4096); + + return $this->resetIOCodepage($cp, $ret); + } + + $multiLineStreamReader = $this->cloneInputStream($inputStream); + if (null === $multiLineStreamReader) { + return false; + } + + $ret = ''; + $cp = $this->setIOCodepage(); + while (false !== ($char = fgetc($multiLineStreamReader))) { + if (\PHP_EOL === "{$ret}{$char}") { + break; + } + $ret .= $char; + } + + return $this->resetIOCodepage($cp, $ret); + } + /** * Sets console I/O to the host code page. * @@ -537,4 +579,38 @@ class QuestionHelper extends Helper return $input; } + + /** + * Clones an input stream in order to act on one instance of the same + * stream without affecting the other instance. + * + * @param resource $inputStream The handler resource + * + * @return resource|null The cloned resource, null in case it could not be cloned + */ + private function cloneInputStream($inputStream) + { + $streamMetaData = stream_get_meta_data($inputStream); + $seekable = $streamMetaData['seekable'] ?? false; + $mode = $streamMetaData['mode'] ?? 'rb'; + $uri = $streamMetaData['uri'] ?? null; + + if (null === $uri) { + return null; + } + + $cloneStream = fopen($uri, $mode); + + // For seekable and writable streams, add all the same data to the + // cloned stream and then seek to the same offset. + if (true === $seekable && !\in_array($mode, ['r', 'rb', 'rt'])) { + $offset = ftell($inputStream); + rewind($inputStream); + stream_copy_to_stream($inputStream, $cloneStream); + fseek($inputStream, $offset); + fseek($cloneStream, $offset); + } + + return $cloneStream; + } } diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php index ace5e1868..01f94aba4 100644 --- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +++ b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php @@ -33,6 +33,10 @@ class SymfonyQuestionHelper extends QuestionHelper $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion()); $default = $question->getDefault(); + if ($question->isMultiline()) { + $text .= sprintf(' (press %s to continue)', $this->getEofShortcut()); + } + switch (true) { case null === $default: $text = sprintf(' <info>%s</info>:', $text); @@ -93,4 +97,13 @@ class SymfonyQuestionHelper extends QuestionHelper parent::writeError($output, $error); } + + private function getEofShortcut(): string + { + if ('Windows' === \PHP_OS_FAMILY) { + return '<comment>Ctrl+Z</comment> then <comment>Enter</comment>'; + } + + return '<comment>Ctrl+D</comment>'; + } } diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php index f068f02fa..3f2d99145 100644 --- a/vendor/symfony/console/Helper/Table.php +++ b/vendor/symfony/console/Helper/Table.php @@ -85,6 +85,9 @@ class Table private $columnWidths = []; private $columnMaxWidths = []; + /** + * @var array<string, TableStyle>|null + */ private static $styles; private $rendered = false; @@ -102,10 +105,8 @@ class Table /** * Sets a style definition. - * - * @param string $name The style name */ - public static function setStyleDefinition($name, TableStyle $style) + public static function setStyleDefinition(string $name, TableStyle $style) { if (!self::$styles) { self::$styles = self::initStyles(); @@ -117,11 +118,9 @@ class Table /** * Gets a style definition by name. * - * @param string $name The style name - * * @return TableStyle */ - public static function getStyleDefinition($name) + public static function getStyleDefinition(string $name) { if (!self::$styles) { self::$styles = self::initStyles(); @@ -161,15 +160,12 @@ class Table /** * Sets table column style. * - * @param int $columnIndex Column index - * @param TableStyle|string $name The style name or a TableStyle instance + * @param TableStyle|string $name The style name or a TableStyle instance * * @return $this */ - public function setColumnStyle($columnIndex, $name) + public function setColumnStyle(int $columnIndex, $name) { - $columnIndex = (int) $columnIndex; - $this->columnStyles[$columnIndex] = $this->resolveStyle($name); return $this; @@ -180,11 +176,9 @@ class Table * * If style was not set, it returns the global table style. * - * @param int $columnIndex Column index - * * @return TableStyle */ - public function getColumnStyle($columnIndex) + public function getColumnStyle(int $columnIndex) { return $this->columnStyles[$columnIndex] ?? $this->getStyle(); } @@ -192,14 +186,11 @@ class Table /** * Sets the minimum width of a column. * - * @param int $columnIndex Column index - * @param int $width Minimum column width in characters - * * @return $this */ - public function setColumnWidth($columnIndex, $width) + public function setColumnWidth(int $columnIndex, int $width) { - $this->columnWidths[(int) $columnIndex] = (int) $width; + $this->columnWidths[$columnIndex] = $width; return $this; } @@ -230,7 +221,7 @@ class Table public function setColumnMaxWidth(int $columnIndex, int $width): self { if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { - throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, \get_class($this->output->getFormatter()))); + throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, get_debug_type($this->output->getFormatter()))); } $this->columnMaxWidths[$columnIndex] = $width; @@ -238,6 +229,9 @@ class Table return $this; } + /** + * @return $this + */ public function setHeaders(array $headers) { $headers = array_values($headers); @@ -257,6 +251,9 @@ class Table return $this->addRows($rows); } + /** + * @return $this + */ public function addRows(array $rows) { foreach ($rows as $row) { @@ -266,6 +263,9 @@ class Table return $this; } + /** + * @return $this + */ public function addRow($row) { if ($row instanceof TableSeparator) { @@ -285,6 +285,8 @@ class Table /** * Adds a row to the table, and re-renders the table. + * + * @return $this */ public function appendRow($row): self { @@ -302,6 +304,9 @@ class Table return $this; } + /** + * @return $this + */ public function setRow($column, array $row) { $this->rows[$column] = $row; @@ -309,6 +314,9 @@ class Table return $this; } + /** + * @return $this + */ public function setHeaderTitle(?string $title): self { $this->headerTitle = $title; @@ -316,6 +324,9 @@ class Table return $this; } + /** + * @return $this + */ public function setFooterTitle(?string $title): self { $this->footerTitle = $title; @@ -323,6 +334,9 @@ class Table return $this; } + /** + * @return $this + */ public function setHorizontal(bool $horizontal = true): self { $this->horizontal = $horizontal; @@ -466,11 +480,11 @@ class Table } if (null !== $title) { - $titleLength = Helper::strlenWithoutDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title)); - $markupLength = Helper::strlen($markup); + $titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title))); + $markupLength = Helper::width($markup); if ($titleLength > $limit = $markupLength - 4) { $titleLength = $limit; - $formatLength = Helper::strlenWithoutDecoration($formatter, sprintf($titleFormat, '')); + $formatLength = Helper::width(Helper::removeDecoration($formatter, sprintf($titleFormat, ''))); $formattedTitle = sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3).'...'); } @@ -543,10 +557,33 @@ class Table return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width)); } - $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); + $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); $content = sprintf($style->getCellRowContentFormat(), $cell); - return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $style->getPadType())); + $padType = $style->getPadType(); + if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { + $isNotStyledByTag = !preg_match('/^<(\w+|(\w+=[\w,]+;?)*)>.+<\/(\w+|(\w+=\w+;?)*)?>$/', $cell); + if ($isNotStyledByTag) { + $cellFormat = $cell->getStyle()->getCellFormat(); + if (!\is_string($cellFormat)) { + $tag = http_build_query($cell->getStyle()->getTagOptions(), '', ';'); + $cellFormat = '<'.$tag.'>%s</>'; + } + + if (strstr($content, '</>')) { + $content = str_replace('</>', '', $content); + $width -= 3; + } + if (strstr($content, '<fg=default;bg=default>')) { + $content = str_replace('<fg=default;bg=default>', '', $content); + $width -= \strlen('<fg=default;bg=default>'); + } + } + + $padType = $cell->getStyle()->getPadByAlign(); + } + + return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $padType)); } /** @@ -578,7 +615,7 @@ class Table foreach ($rows[$rowKey] as $column => $cell) { $colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; - if (isset($this->columnMaxWidths[$column]) && Helper::strlenWithoutDecoration($formatter, $cell) > $this->columnMaxWidths[$column]) { + if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { $cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); } if (!strstr($cell ?? '', "\n")) { @@ -642,7 +679,7 @@ class Table $unmergedRows = []; foreach ($rows[$line] as $column => $cell) { if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !(\is_object($cell) && method_exists($cell, '__toString'))) { - throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', \gettype($cell))); + throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', get_debug_type($cell))); } if ($cell instanceof TableCell && $cell->getRowspan() > 1) { $nbLines = $cell->getRowspan() - 1; @@ -651,7 +688,7 @@ class Table $lines = explode("\n", str_replace("\n", "<fg=default;bg=default>\n</>", $cell)); $nbLines = \count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines; - $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan()]); + $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); unset($lines[0]); } @@ -659,7 +696,7 @@ class Table $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { $value = $lines[$unmergedRowKey - $line] ?? ''; - $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan()]); + $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); if ($nbLines === $unmergedRowKey - $line) { break; } @@ -766,7 +803,7 @@ class Table foreach ($row as $i => $cell) { if ($cell instanceof TableCell) { $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); - $textLength = Helper::strlen($textContent); + $textLength = Helper::width($textContent); if ($textLength > 0) { $contentColumns = str_split($textContent, ceil($textLength / $cell->getColspan())); foreach ($contentColumns as $position => $content) { @@ -780,13 +817,13 @@ class Table } } - $this->effectiveColumnWidths[$column] = max($lengths) + Helper::strlen($this->style->getCellRowContentFormat()) - 2; + $this->effectiveColumnWidths[$column] = max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; } } private function getColumnSeparatorWidth(): int { - return Helper::strlen(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); + return Helper::width(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); } private function getCellWidth(array $row, int $column): int @@ -795,7 +832,7 @@ class Table if (isset($row[$column])) { $cell = $row[$column]; - $cellWidth = Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); + $cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); } $columnWidth = $this->columnWidths[$column] ?? 0; @@ -813,6 +850,9 @@ class Table $this->numberOfColumns = null; } + /** + * @return array<string, TableStyle> + */ private static function initStyles(): array { $borderless = new TableStyle(); diff --git a/vendor/symfony/console/Helper/TableCell.php b/vendor/symfony/console/Helper/TableCell.php index 5b6af4a93..1a7bc6ede 100644 --- a/vendor/symfony/console/Helper/TableCell.php +++ b/vendor/symfony/console/Helper/TableCell.php @@ -22,6 +22,7 @@ class TableCell private $options = [ 'rowspan' => 1, 'colspan' => 1, + 'style' => null, ]; public function __construct(string $value = '', array $options = []) @@ -33,6 +34,10 @@ class TableCell throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff))); } + if (isset($options['style']) && !$options['style'] instanceof TableCellStyle) { + throw new InvalidArgumentException('The style option must be an instance of "TableCellStyle".'); + } + $this->options = array_merge($this->options, $options); } @@ -65,4 +70,9 @@ class TableCell { return (int) $this->options['rowspan']; } + + public function getStyle(): ?TableCellStyle + { + return $this->options['style']; + } } diff --git a/vendor/symfony/console/Helper/TableCellStyle.php b/vendor/symfony/console/Helper/TableCellStyle.php new file mode 100644 index 000000000..19cd0ffc6 --- /dev/null +++ b/vendor/symfony/console/Helper/TableCellStyle.php @@ -0,0 +1,89 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Helper; + +use Symfony\Component\Console\Exception\InvalidArgumentException; + +/** + * @author Yewhen Khoptynskyi <khoptynskyi@gmail.com> + */ +class TableCellStyle +{ + public const DEFAULT_ALIGN = 'left'; + + private const TAG_OPTIONS = [ + 'fg', + 'bg', + 'options', + ]; + + private const ALIGN_MAP = [ + 'left' => \STR_PAD_RIGHT, + 'center' => \STR_PAD_BOTH, + 'right' => \STR_PAD_LEFT, + ]; + + private $options = [ + 'fg' => 'default', + 'bg' => 'default', + 'options' => null, + 'align' => self::DEFAULT_ALIGN, + 'cellFormat' => null, + ]; + + public function __construct(array $options = []) + { + if ($diff = array_diff(array_keys($options), array_keys($this->options))) { + throw new InvalidArgumentException(sprintf('The TableCellStyle does not support the following options: \'%s\'.', implode('\', \'', $diff))); + } + + if (isset($options['align']) && !\array_key_exists($options['align'], self::ALIGN_MAP)) { + throw new InvalidArgumentException(sprintf('Wrong align value. Value must be following: \'%s\'.', implode('\', \'', array_keys(self::ALIGN_MAP)))); + } + + $this->options = array_merge($this->options, $options); + } + + public function getOptions(): array + { + return $this->options; + } + + /** + * Gets options we need for tag for example fg, bg. + * + * @return string[] + */ + public function getTagOptions() + { + return array_filter( + $this->getOptions(), + function ($key) { + return \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]); + }, + \ARRAY_FILTER_USE_KEY + ); + } + + /** + * @return int + */ + public function getPadByAlign() + { + return self::ALIGN_MAP[$this->getOptions()['align']]; + } + + public function getCellFormat(): ?string + { + return $this->getOptions()['cellFormat']; + } +} diff --git a/vendor/symfony/console/Helper/TableRows.php b/vendor/symfony/console/Helper/TableRows.php index 16aabb3fc..cbc07d294 100644 --- a/vendor/symfony/console/Helper/TableRows.php +++ b/vendor/symfony/console/Helper/TableRows.php @@ -18,15 +18,13 @@ class TableRows implements \IteratorAggregate { private $generator; - public function __construct(callable $generator) + public function __construct(\Closure $generator) { $this->generator = $generator; } public function getIterator(): \Traversable { - $g = $this->generator; - - return $g(); + return ($this->generator)(); } } diff --git a/vendor/symfony/console/Helper/TableStyle.php b/vendor/symfony/console/Helper/TableStyle.php index a8df59b3a..dfc41e6a4 100644 --- a/vendor/symfony/console/Helper/TableStyle.php +++ b/vendor/symfony/console/Helper/TableStyle.php @@ -51,11 +51,9 @@ class TableStyle /** * Sets padding character, used for cell padding. * - * @param string $paddingChar - * * @return $this */ - public function setPaddingChar($paddingChar) + public function setPaddingChar(string $paddingChar) { if (!$paddingChar) { throw new LogicException('The padding char must not be empty.'); @@ -90,8 +88,7 @@ class TableStyle * ╚═══════════════╧══════════════════════════╧══════════════════╝ * </code> * - * @param string $outside Outside border char (see #1 of example) - * @param string|null $inside Inside border char (see #2 of example), equals $outside if null + * @return $this */ public function setHorizontalBorderChars(string $outside, string $inside = null): self { @@ -101,36 +98,6 @@ class TableStyle return $this; } - /** - * Sets horizontal border character. - * - * @param string $horizontalBorderChar - * - * @return $this - * - * @deprecated since Symfony 4.1, use {@link setHorizontalBorderChars()} instead. - */ - public function setHorizontalBorderChar($horizontalBorderChar) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use setHorizontalBorderChars() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->setHorizontalBorderChars($horizontalBorderChar, $horizontalBorderChar); - } - - /** - * Gets horizontal border character. - * - * @return string - * - * @deprecated since Symfony 4.1, use {@link getBorderChars()} instead. - */ - public function getHorizontalBorderChar() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use getBorderChars() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->horizontalOutsideBorderChar; - } - /** * Sets vertical border characters. * @@ -146,8 +113,7 @@ class TableStyle * ╚═══════════════╧══════════════════════════╧══════════════════╝ * </code> * - * @param string $outside Outside border char (see #1 of example) - * @param string|null $inside Inside border char (see #2 of example), equals $outside if null + * @return $this */ public function setVerticalBorderChars(string $outside, string $inside = null): self { @@ -157,36 +123,6 @@ class TableStyle return $this; } - /** - * Sets vertical border character. - * - * @param string $verticalBorderChar - * - * @return $this - * - * @deprecated since Symfony 4.1, use {@link setVerticalBorderChars()} instead. - */ - public function setVerticalBorderChar($verticalBorderChar) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use setVerticalBorderChars() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->setVerticalBorderChars($verticalBorderChar, $verticalBorderChar); - } - - /** - * Gets vertical border character. - * - * @return string - * - * @deprecated since Symfony 4.1, use {@link getBorderChars()} instead. - */ - public function getVerticalBorderChar() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use getBorderChars() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->verticalOutsideBorderChar; - } - /** * Gets border characters. * @@ -230,6 +166,8 @@ class TableStyle * @param string|null $topLeftBottom Top left bottom char (see #8' of example), equals to $midLeft if null * @param string|null $topMidBottom Top mid bottom char (see #0' of example), equals to $cross if null * @param string|null $topRightBottom Top right bottom char (see #4' of example), equals to $midRight if null + * + * @return $this */ public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = null, string $topMidBottom = null, string $topRightBottom = null): self { @@ -259,22 +197,6 @@ class TableStyle return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char); } - /** - * Sets crossing character. - * - * @param string $crossingChar - * - * @return $this - * - * @deprecated since Symfony 4.1. Use {@link setDefaultCrossingChar()} instead. - */ - public function setCrossingChar($crossingChar) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use setDefaultCrossingChar() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->setDefaultCrossingChar($crossingChar); - } - /** * Gets crossing character. * @@ -311,11 +233,9 @@ class TableStyle /** * Sets header cell format. * - * @param string $cellHeaderFormat - * * @return $this */ - public function setCellHeaderFormat($cellHeaderFormat) + public function setCellHeaderFormat(string $cellHeaderFormat) { $this->cellHeaderFormat = $cellHeaderFormat; @@ -335,11 +255,9 @@ class TableStyle /** * Sets row cell format. * - * @param string $cellRowFormat - * * @return $this */ - public function setCellRowFormat($cellRowFormat) + public function setCellRowFormat(string $cellRowFormat) { $this->cellRowFormat = $cellRowFormat; @@ -359,11 +277,9 @@ class TableStyle /** * Sets row cell content format. * - * @param string $cellRowContentFormat - * * @return $this */ - public function setCellRowContentFormat($cellRowContentFormat) + public function setCellRowContentFormat(string $cellRowContentFormat) { $this->cellRowContentFormat = $cellRowContentFormat; @@ -383,11 +299,9 @@ class TableStyle /** * Sets table border format. * - * @param string $borderFormat - * * @return $this */ - public function setBorderFormat($borderFormat) + public function setBorderFormat(string $borderFormat) { $this->borderFormat = $borderFormat; @@ -407,11 +321,9 @@ class TableStyle /** * Sets cell padding type. * - * @param int $padType STR_PAD_* - * * @return $this */ - public function setPadType($padType) + public function setPadType(int $padType) { if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) { throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); @@ -437,6 +349,9 @@ class TableStyle return $this->headerTitleFormat; } + /** + * @return $this + */ public function setHeaderTitleFormat(string $format): self { $this->headerTitleFormat = $format; @@ -449,6 +364,9 @@ class TableStyle return $this->footerTitleFormat; } + /** + * @return $this + */ public function setFooterTitleFormat(string $format): self { $this->footerTitleFormat = $format; diff --git a/vendor/symfony/console/Input/ArgvInput.php b/vendor/symfony/console/Input/ArgvInput.php index 63f40f271..675b9ef58 100644 --- a/vendor/symfony/console/Input/ArgvInput.php +++ b/vendor/symfony/console/Input/ArgvInput.php @@ -43,9 +43,6 @@ class ArgvInput extends Input private $tokens; private $parsed; - /** - * @param array|null $argv An array of parameters from the CLI (in the argv format) - */ public function __construct(array $argv = null, InputDefinition $definition = null) { $argv = $argv ?? $_SERVER['argv'] ?? []; @@ -71,20 +68,27 @@ class ArgvInput extends Input $parseOptions = true; $this->parsed = $this->tokens; while (null !== $token = array_shift($this->parsed)) { - if ($parseOptions && '' == $token) { - $this->parseArgument($token); - } elseif ($parseOptions && '--' == $token) { - $parseOptions = false; - } elseif ($parseOptions && str_starts_with($token, '--')) { - $this->parseLongOption($token); - } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { - $this->parseShortOption($token); - } else { - $this->parseArgument($token); - } + $parseOptions = $this->parseToken($token, $parseOptions); } } + protected function parseToken(string $token, bool $parseOptions): bool + { + if ($parseOptions && '' == $token) { + $this->parseArgument($token); + } elseif ($parseOptions && '--' == $token) { + return false; + } elseif ($parseOptions && str_starts_with($token, '--')) { + $this->parseLongOption($token); + } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { + $this->parseShortOption($token); + } else { + $this->parseArgument($token); + } + + return $parseOptions; + } + /** * Parses a short option. */ @@ -168,11 +172,25 @@ class ArgvInput extends Input // unexpected argument } else { $all = $this->definition->getArguments(); - if (\count($all)) { - throw new RuntimeException(sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all)))); + $symfonyCommandName = null; + if (($inputArgument = $all[$key = array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) { + $symfonyCommandName = $this->arguments['command'] ?? null; + unset($all[$key]); } - throw new RuntimeException(sprintf('No arguments expected, got "%s".', $token)); + if (\count($all)) { + if ($symfonyCommandName) { + $message = sprintf('Too many arguments to "%s" command, expected arguments "%s".', $symfonyCommandName, implode('" "', array_keys($all))); + } else { + $message = sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all))); + } + } elseif ($symfonyCommandName) { + $message = sprintf('No arguments expected for "%s" command, got "%s".', $symfonyCommandName, $token); + } else { + $message = sprintf('No arguments expected, got "%s".', $token); + } + + throw new RuntimeException($message); } } @@ -198,7 +216,17 @@ class ArgvInput extends Input private function addLongOption(string $name, $value) { if (!$this->definition->hasOption($name)) { - throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); + if (!$this->definition->hasNegation($name)) { + throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); + } + + $optionName = $this->definition->negationToName($name); + if (null !== $value) { + throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); + } + $this->options[$optionName] = false; + + return; } $option = $this->definition->getOption($name); @@ -273,7 +301,7 @@ class ArgvInput extends Input /** * {@inheritdoc} */ - public function hasParameterOption($values, $onlyParams = false) + public function hasParameterOption($values, bool $onlyParams = false) { $values = (array) $values; @@ -298,7 +326,7 @@ class ArgvInput extends Input /** * {@inheritdoc} */ - public function getParameterOption($values, $default = false, $onlyParams = false) + public function getParameterOption($values, $default = false, bool $onlyParams = false) { $values = (array) $values; $tokens = $this->tokens; diff --git a/vendor/symfony/console/Input/ArrayInput.php b/vendor/symfony/console/Input/ArrayInput.php index 30bd2054a..c65161484 100644 --- a/vendor/symfony/console/Input/ArrayInput.php +++ b/vendor/symfony/console/Input/ArrayInput.php @@ -53,7 +53,7 @@ class ArrayInput extends Input /** * {@inheritdoc} */ - public function hasParameterOption($values, $onlyParams = false) + public function hasParameterOption($values, bool $onlyParams = false) { $values = (array) $values; @@ -77,7 +77,7 @@ class ArrayInput extends Input /** * {@inheritdoc} */ - public function getParameterOption($values, $default = false, $onlyParams = false) + public function getParameterOption($values, $default = false, bool $onlyParams = false) { $values = (array) $values; @@ -166,7 +166,14 @@ class ArrayInput extends Input private function addLongOption(string $name, $value) { if (!$this->definition->hasOption($name)) { - throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); + if (!$this->definition->hasNegation($name)) { + throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); + } + + $optionName = $this->definition->negationToName($name); + $this->options[$optionName] = false; + + return; } $option = $this->definition->getOption($name); diff --git a/vendor/symfony/console/Input/Input.php b/vendor/symfony/console/Input/Input.php index d7f29073e..d37460ed3 100644 --- a/vendor/symfony/console/Input/Input.php +++ b/vendor/symfony/console/Input/Input.php @@ -88,9 +88,9 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function setInteractive($interactive) + public function setInteractive(bool $interactive) { - $this->interactive = (bool) $interactive; + $this->interactive = $interactive; } /** @@ -104,9 +104,9 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function getArgument($name) + public function getArgument(string $name) { - if (!$this->definition->hasArgument((string) $name)) { + if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } @@ -116,9 +116,9 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function setArgument($name, $value) + public function setArgument(string $name, $value) { - if (!$this->definition->hasArgument((string) $name)) { + if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } @@ -128,9 +128,9 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function hasArgument($name) + public function hasArgument(string $name) { - return $this->definition->hasArgument((string) $name); + return $this->definition->hasArgument($name); } /** @@ -144,8 +144,16 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function getOption($name) + public function getOption(string $name) { + if ($this->definition->hasNegation($name)) { + if (null === $value = $this->getOption($this->definition->negationToName($name))) { + return $value; + } + + return !$value; + } + if (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); } @@ -156,9 +164,13 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function setOption($name, $value) + public function setOption(string $name, $value) { - if (!$this->definition->hasOption($name)) { + if ($this->definition->hasNegation($name)) { + $this->options[$this->definition->negationToName($name)] = !$value; + + return; + } elseif (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); } @@ -168,19 +180,17 @@ abstract class Input implements InputInterface, StreamableInputInterface /** * {@inheritdoc} */ - public function hasOption($name) + public function hasOption(string $name) { - return $this->definition->hasOption($name); + return $this->definition->hasOption($name) || $this->definition->hasNegation($name); } /** * Escapes a token through escapeshellarg if it contains unsafe chars. * - * @param string $token - * * @return string */ - public function escapeToken($token) + public function escapeToken(string $token) { return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); } diff --git a/vendor/symfony/console/Input/InputArgument.php b/vendor/symfony/console/Input/InputArgument.php index accd4d0c5..ecfcdad58 100644 --- a/vendor/symfony/console/Input/InputArgument.php +++ b/vendor/symfony/console/Input/InputArgument.php @@ -56,7 +56,7 @@ class InputArgument /** * Returns the argument name. * - * @return string The argument name + * @return string */ public function getName() { @@ -120,7 +120,7 @@ class InputArgument /** * Returns the description text. * - * @return string The description text + * @return string */ public function getDescription() { diff --git a/vendor/symfony/console/Input/InputDefinition.php b/vendor/symfony/console/Input/InputDefinition.php index e2cd6d714..11f704f0e 100644 --- a/vendor/symfony/console/Input/InputDefinition.php +++ b/vendor/symfony/console/Input/InputDefinition.php @@ -30,9 +30,10 @@ class InputDefinition { private $arguments; private $requiredCount; - private $hasAnArrayArgument = false; - private $hasOptional; + private $lastArrayArgument; + private $lastOptionalArgument; private $options; + private $negations; private $shortcuts; /** @@ -67,12 +68,12 @@ class InputDefinition * * @param InputArgument[] $arguments An array of InputArgument objects */ - public function setArguments($arguments = []) + public function setArguments(array $arguments = []) { $this->arguments = []; $this->requiredCount = 0; - $this->hasOptional = false; - $this->hasAnArrayArgument = false; + $this->lastOptionalArgument = null; + $this->lastArrayArgument = null; $this->addArguments($arguments); } @@ -81,7 +82,7 @@ class InputDefinition * * @param InputArgument[] $arguments An array of InputArgument objects */ - public function addArguments($arguments = []) + public function addArguments(?array $arguments = []) { if (null !== $arguments) { foreach ($arguments as $argument) { @@ -99,22 +100,22 @@ class InputDefinition throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); } - if ($this->hasAnArrayArgument) { - throw new LogicException('Cannot add an argument after an array argument.'); + if (null !== $this->lastArrayArgument) { + throw new LogicException(sprintf('Cannot add a required argument "%s" after an array argument "%s".', $argument->getName(), $this->lastArrayArgument->getName())); } - if ($argument->isRequired() && $this->hasOptional) { - throw new LogicException('Cannot add a required argument after an optional one.'); + if ($argument->isRequired() && null !== $this->lastOptionalArgument) { + throw new LogicException(sprintf('Cannot add a required argument "%s" after an optional one "%s".', $argument->getName(), $this->lastOptionalArgument->getName())); } if ($argument->isArray()) { - $this->hasAnArrayArgument = true; + $this->lastArrayArgument = $argument; } if ($argument->isRequired()) { ++$this->requiredCount; } else { - $this->hasOptional = true; + $this->lastOptionalArgument = $argument; } $this->arguments[$argument->getName()] = $argument; @@ -125,7 +126,7 @@ class InputDefinition * * @param string|int $name The InputArgument name or position * - * @return InputArgument An InputArgument object + * @return InputArgument * * @throws InvalidArgumentException When argument given doesn't exist */ @@ -145,7 +146,7 @@ class InputDefinition * * @param string|int $name The InputArgument name or position * - * @return bool true if the InputArgument object exists, false otherwise + * @return bool */ public function hasArgument($name) { @@ -157,7 +158,7 @@ class InputDefinition /** * Gets the array of InputArgument objects. * - * @return InputArgument[] An array of InputArgument objects + * @return InputArgument[] */ public function getArguments() { @@ -167,17 +168,17 @@ class InputDefinition /** * Returns the number of InputArguments. * - * @return int The number of InputArguments + * @return int */ public function getArgumentCount() { - return $this->hasAnArrayArgument ? \PHP_INT_MAX : \count($this->arguments); + return null !== $this->lastArrayArgument ? \PHP_INT_MAX : \count($this->arguments); } /** * Returns the number of required InputArguments. * - * @return int The number of required InputArguments + * @return int */ public function getArgumentRequiredCount() { @@ -202,10 +203,11 @@ class InputDefinition * * @param InputOption[] $options An array of InputOption objects */ - public function setOptions($options = []) + public function setOptions(array $options = []) { $this->options = []; $this->shortcuts = []; + $this->negations = []; $this->addOptions($options); } @@ -214,7 +216,7 @@ class InputDefinition * * @param InputOption[] $options An array of InputOption objects */ - public function addOptions($options = []) + public function addOptions(array $options = []) { foreach ($options as $option) { $this->addOption($option); @@ -229,6 +231,9 @@ class InputDefinition if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); } + if (isset($this->negations[$option->getName()])) { + throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); + } if ($option->getShortcut()) { foreach (explode('|', $option->getShortcut()) as $shortcut) { @@ -244,18 +249,24 @@ class InputDefinition $this->shortcuts[$shortcut] = $option->getName(); } } + + if ($option->isNegatable()) { + $negatedName = 'no-'.$option->getName(); + if (isset($this->options[$negatedName])) { + throw new LogicException(sprintf('An option named "%s" already exists.', $negatedName)); + } + $this->negations[$negatedName] = $option->getName(); + } } /** * Returns an InputOption by name. * - * @param string $name The InputOption name - * - * @return InputOption A InputOption object + * @return InputOption * * @throws InvalidArgumentException When option given doesn't exist */ - public function getOption($name) + public function getOption(string $name) { if (!$this->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); @@ -270,11 +281,9 @@ class InputDefinition * This method can't be used to check if the user included the option when * executing the command (use getOption() instead). * - * @param string $name The InputOption name - * - * @return bool true if the InputOption object exists, false otherwise + * @return bool */ - public function hasOption($name) + public function hasOption(string $name) { return isset($this->options[$name]); } @@ -282,7 +291,7 @@ class InputDefinition /** * Gets the array of InputOption objects. * - * @return InputOption[] An array of InputOption objects + * @return InputOption[] */ public function getOptions() { @@ -292,23 +301,27 @@ class InputDefinition /** * Returns true if an InputOption object exists by shortcut. * - * @param string $name The InputOption shortcut - * - * @return bool true if the InputOption object exists, false otherwise + * @return bool */ - public function hasShortcut($name) + public function hasShortcut(string $name) { return isset($this->shortcuts[$name]); } + /** + * Returns true if an InputOption object exists by negated name. + */ + public function hasNegation(string $name): bool + { + return isset($this->negations[$name]); + } + /** * Gets an InputOption by shortcut. * - * @param string $shortcut The Shortcut name - * - * @return InputOption An InputOption object + * @return InputOption */ - public function getOptionForShortcut($shortcut) + public function getOptionForShortcut(string $shortcut) { return $this->getOption($this->shortcutToName($shortcut)); } @@ -342,14 +355,28 @@ class InputDefinition return $this->shortcuts[$shortcut]; } + /** + * Returns the InputOption name given a negation. + * + * @throws InvalidArgumentException When option given does not exist + * + * @internal + */ + public function negationToName(string $negation): string + { + if (!isset($this->negations[$negation])) { + throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $negation)); + } + + return $this->negations[$negation]; + } + /** * Gets the synopsis. * - * @param bool $short Whether to return the short version (with options folded) or not - * - * @return string The synopsis + * @return string */ - public function getSynopsis($short = false) + public function getSynopsis(bool $short = false) { $elements = []; @@ -368,7 +395,8 @@ class InputDefinition } $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; - $elements[] = sprintf('[%s--%s%s]', $shortcut, $option->getName(), $value); + $negation = $option->isNegatable() ? sprintf('|--no-%s', $option->getName()) : ''; + $elements[] = sprintf('[%s--%s%s%s]', $shortcut, $option->getName(), $value, $negation); } } diff --git a/vendor/symfony/console/Input/InputInterface.php b/vendor/symfony/console/Input/InputInterface.php index 8efc62326..628b6037a 100644 --- a/vendor/symfony/console/Input/InputInterface.php +++ b/vendor/symfony/console/Input/InputInterface.php @@ -24,7 +24,7 @@ interface InputInterface /** * Returns the first argument from the raw parameters (not parsed). * - * @return string|null The value of the first argument or null otherwise + * @return string|null */ public function getFirstArgument(); @@ -39,9 +39,9 @@ interface InputInterface * @param string|array $values The values to look for in the raw parameters (can be an array) * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * - * @return bool true if the value is contained in the raw parameters + * @return bool */ - public function hasParameterOption($values, $onlyParams = false); + public function hasParameterOption($values, bool $onlyParams = false); /** * Returns the value of a raw option (not parsed). @@ -55,9 +55,9 @@ interface InputInterface * @param string|bool|int|float|array|null $default The default value to return if no result is found * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * - * @return mixed The option value + * @return mixed */ - public function getParameterOption($values, $default = false, $onlyParams = false); + public function getParameterOption($values, $default = false, bool $onlyParams = false); /** * Binds the current Input instance with the given arguments and options. @@ -83,32 +83,27 @@ interface InputInterface /** * Returns the argument value for a given argument name. * - * @param string $name The argument name - * * @return mixed * * @throws InvalidArgumentException When argument given doesn't exist */ - public function getArgument($name); + public function getArgument(string $name); /** * Sets an argument value by name. * - * @param string $name The argument name - * @param mixed $value The argument value + * @param mixed $value The argument value * * @throws InvalidArgumentException When argument given doesn't exist */ - public function setArgument($name, $value); + public function setArgument(string $name, $value); /** * Returns true if an InputArgument object exists by name or position. * - * @param string $name The argument name - * - * @return bool true if the InputArgument object exists, false otherwise + * @return bool */ - public function hasArgument($name); + public function hasArgument(string $name); /** * Returns all the given options merged with the default values. @@ -120,32 +115,27 @@ interface InputInterface /** * Returns the option value for a given option name. * - * @param string $name The option name - * * @return mixed * * @throws InvalidArgumentException When option given doesn't exist */ - public function getOption($name); + public function getOption(string $name); /** * Sets an option value by name. * - * @param string $name The option name - * @param mixed $value The option value + * @param mixed $value The option value * * @throws InvalidArgumentException When option given doesn't exist */ - public function setOption($name, $value); + public function setOption(string $name, $value); /** * Returns true if an InputOption object exists by name. * - * @param string $name The InputOption name - * - * @return bool true if the InputOption object exists, false otherwise + * @return bool */ - public function hasOption($name); + public function hasOption(string $name); /** * Is this input means interactive? @@ -156,8 +146,6 @@ interface InputInterface /** * Sets the input interactivity. - * - * @param bool $interactive If the input should be interactive */ - public function setInteractive($interactive); + public function setInteractive(bool $interactive); } diff --git a/vendor/symfony/console/Input/InputOption.php b/vendor/symfony/console/Input/InputOption.php index c7729db20..2bec34fe1 100644 --- a/vendor/symfony/console/Input/InputOption.php +++ b/vendor/symfony/console/Input/InputOption.php @@ -41,6 +41,11 @@ class InputOption */ public const VALUE_IS_ARRAY = 8; + /** + * The option may have either positive or negative value (e.g. --ansi or --no-ansi). + */ + public const VALUE_NEGATABLE = 16; + private $name; private $shortcut; private $mode; @@ -48,11 +53,9 @@ class InputOption private $description; /** - * @param string $name The option name - * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts - * @param int|null $mode The option mode: One of the VALUE_* constants - * @param string $description A description text - * @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE) + * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts + * @param int|null $mode The option mode: One of the VALUE_* constants + * @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE) * * @throws InvalidArgumentException If option mode is invalid or incompatible */ @@ -85,7 +88,7 @@ class InputOption if (null === $mode) { $mode = self::VALUE_NONE; - } elseif ($mode > 15 || $mode < 1) { + } elseif ($mode >= (self::VALUE_NEGATABLE << 1) || $mode < 1) { throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); } @@ -97,6 +100,9 @@ class InputOption if ($this->isArray() && !$this->acceptValue()) { throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); } + if ($this->isNegatable() && $this->acceptValue()) { + throw new InvalidArgumentException('Impossible to have an option mode VALUE_NEGATABLE if the option also accepts a value.'); + } $this->setDefault($default); } @@ -104,7 +110,7 @@ class InputOption /** * Returns the option shortcut. * - * @return string|null The shortcut + * @return string|null */ public function getShortcut() { @@ -114,7 +120,7 @@ class InputOption /** * Returns the option name. * - * @return string The name + * @return string */ public function getName() { @@ -161,6 +167,11 @@ class InputOption return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); } + public function isNegatable(): bool + { + return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); + } + /** * @param string|bool|int|float|array|null $default */ @@ -178,7 +189,7 @@ class InputOption } } - $this->default = $this->acceptValue() ? $default : false; + $this->default = $this->acceptValue() || $this->isNegatable() ? $default : false; } /** @@ -194,7 +205,7 @@ class InputOption /** * Returns the description text. * - * @return string The description text + * @return string */ public function getDescription() { @@ -211,6 +222,7 @@ class InputOption return $option->getName() === $this->getName() && $option->getShortcut() === $this->getShortcut() && $option->getDefault() === $this->getDefault() + && $option->isNegatable() === $this->isNegatable() && $option->isArray() === $this->isArray() && $option->isValueRequired() === $this->isValueRequired() && $option->isValueOptional() === $this->isValueOptional() diff --git a/vendor/symfony/console/Output/BufferedOutput.php b/vendor/symfony/console/Output/BufferedOutput.php index fefaac271..d37c6e323 100644 --- a/vendor/symfony/console/Output/BufferedOutput.php +++ b/vendor/symfony/console/Output/BufferedOutput.php @@ -34,7 +34,7 @@ class BufferedOutput extends Output /** * {@inheritdoc} */ - protected function doWrite($message, $newline) + protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; diff --git a/vendor/symfony/console/Output/ConsoleOutput.php b/vendor/symfony/console/Output/ConsoleOutput.php index 484fcbdea..f19f9ebf4 100644 --- a/vendor/symfony/console/Output/ConsoleOutput.php +++ b/vendor/symfony/console/Output/ConsoleOutput.php @@ -67,7 +67,7 @@ class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface /** * {@inheritdoc} */ - public function setDecorated($decorated) + public function setDecorated(bool $decorated) { parent::setDecorated($decorated); $this->stderr->setDecorated($decorated); @@ -85,7 +85,7 @@ class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface /** * {@inheritdoc} */ - public function setVerbosity($level) + public function setVerbosity(int $level) { parent::setVerbosity($level); $this->stderr->setVerbosity($level); diff --git a/vendor/symfony/console/Output/ConsoleOutputInterface.php b/vendor/symfony/console/Output/ConsoleOutputInterface.php index f4c2fa623..6b6635f58 100644 --- a/vendor/symfony/console/Output/ConsoleOutputInterface.php +++ b/vendor/symfony/console/Output/ConsoleOutputInterface.php @@ -16,8 +16,6 @@ namespace Symfony\Component\Console\Output; * This adds information about stderr and section output stream. * * @author Dariusz Górecki <darek.krk@gmail.com> - * - * @method ConsoleSectionOutput section() Creates a new output section */ interface ConsoleOutputInterface extends OutputInterface { @@ -29,4 +27,6 @@ interface ConsoleOutputInterface extends OutputInterface public function getErrorOutput(); public function setErrorOutput(OutputInterface $error); + + public function section(): ConsoleSectionOutput; } diff --git a/vendor/symfony/console/Output/ConsoleSectionOutput.php b/vendor/symfony/console/Output/ConsoleSectionOutput.php index c19edbf95..8f1649758 100644 --- a/vendor/symfony/console/Output/ConsoleSectionOutput.php +++ b/vendor/symfony/console/Output/ConsoleSectionOutput.php @@ -92,7 +92,7 @@ class ConsoleSectionOutput extends StreamOutput /** * {@inheritdoc} */ - protected function doWrite($message, $newline) + protected function doWrite(string $message, bool $newline) { if (!$this->isDecorated()) { parent::doWrite($message, $newline); @@ -136,8 +136,8 @@ class ConsoleSectionOutput extends StreamOutput return implode('', array_reverse($erasedContent)); } - private function getDisplayLength(string $text): string + private function getDisplayLength(string $text): int { - return Helper::strlenWithoutDecoration($this->getFormatter(), str_replace("\t", ' ', $text)); + return Helper::width(Helper::removeDecoration($this->getFormatter(), str_replace("\t", ' ', $text))); } } diff --git a/vendor/symfony/console/Output/NullOutput.php b/vendor/symfony/console/Output/NullOutput.php index 218f285bf..3bbe63ea0 100644 --- a/vendor/symfony/console/Output/NullOutput.php +++ b/vendor/symfony/console/Output/NullOutput.php @@ -11,7 +11,7 @@ namespace Symfony\Component\Console\Output; -use Symfony\Component\Console\Formatter\OutputFormatter; +use Symfony\Component\Console\Formatter\NullOutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** @@ -24,6 +24,8 @@ use Symfony\Component\Console\Formatter\OutputFormatterInterface; */ class NullOutput implements OutputInterface { + private $formatter; + /** * {@inheritdoc} */ @@ -37,14 +39,17 @@ class NullOutput implements OutputInterface */ public function getFormatter() { + if ($this->formatter) { + return $this->formatter; + } // to comply with the interface we must return a OutputFormatterInterface - return new OutputFormatter(); + return $this->formatter = new NullOutputFormatter(); } /** * {@inheritdoc} */ - public function setDecorated($decorated) + public function setDecorated(bool $decorated) { // do nothing } @@ -60,7 +65,7 @@ class NullOutput implements OutputInterface /** * {@inheritdoc} */ - public function setVerbosity($level) + public function setVerbosity(int $level) { // do nothing } @@ -108,7 +113,7 @@ class NullOutput implements OutputInterface /** * {@inheritdoc} */ - public function writeln($messages, $options = self::OUTPUT_NORMAL) + public function writeln($messages, int $options = self::OUTPUT_NORMAL) { // do nothing } @@ -116,7 +121,7 @@ class NullOutput implements OutputInterface /** * {@inheritdoc} */ - public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) + public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) { // do nothing } diff --git a/vendor/symfony/console/Output/Output.php b/vendor/symfony/console/Output/Output.php index fb838f053..d7c5fb2d1 100644 --- a/vendor/symfony/console/Output/Output.php +++ b/vendor/symfony/console/Output/Output.php @@ -33,13 +33,13 @@ abstract class Output implements OutputInterface private $formatter; /** - * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) + * @param int|null $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool $decorated Whether to decorate messages * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) */ public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null) { - $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity; + $this->verbosity = $verbosity ?? self::VERBOSITY_NORMAL; $this->formatter = $formatter ?? new OutputFormatter(); $this->formatter->setDecorated($decorated); } @@ -63,7 +63,7 @@ abstract class Output implements OutputInterface /** * {@inheritdoc} */ - public function setDecorated($decorated) + public function setDecorated(bool $decorated) { $this->formatter->setDecorated($decorated); } @@ -79,9 +79,9 @@ abstract class Output implements OutputInterface /** * {@inheritdoc} */ - public function setVerbosity($level) + public function setVerbosity(int $level) { - $this->verbosity = (int) $level; + $this->verbosity = $level; } /** @@ -127,7 +127,7 @@ abstract class Output implements OutputInterface /** * {@inheritdoc} */ - public function writeln($messages, $options = self::OUTPUT_NORMAL) + public function writeln($messages, int $options = self::OUTPUT_NORMAL) { $this->write($messages, true, $options); } @@ -135,7 +135,7 @@ abstract class Output implements OutputInterface /** * {@inheritdoc} */ - public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) + public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { $messages = [$messages]; @@ -169,9 +169,6 @@ abstract class Output implements OutputInterface /** * Writes a message to the output. - * - * @param string $message A message to write to the output - * @param bool $newline Whether to add a newline or not */ - abstract protected function doWrite($message, $newline); + abstract protected function doWrite(string $message, bool $newline); } diff --git a/vendor/symfony/console/Output/OutputInterface.php b/vendor/symfony/console/Output/OutputInterface.php index 671d5bd78..55caab80b 100644 --- a/vendor/symfony/console/Output/OutputInterface.php +++ b/vendor/symfony/console/Output/OutputInterface.php @@ -37,7 +37,7 @@ interface OutputInterface * @param bool $newline Whether to add a newline * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ - public function write($messages, $newline = false, $options = 0); + public function write($messages, bool $newline = false, int $options = 0); /** * Writes a message to the output and adds a newline at the end. @@ -45,61 +45,57 @@ interface OutputInterface * @param string|iterable $messages The message as an iterable of strings or a single string * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ - public function writeln($messages, $options = 0); + public function writeln($messages, int $options = 0); /** * Sets the verbosity of the output. - * - * @param int $level The level of verbosity (one of the VERBOSITY constants) */ - public function setVerbosity($level); + public function setVerbosity(int $level); /** * Gets the current verbosity of the output. * - * @return int The current level of verbosity (one of the VERBOSITY constants) + * @return int */ public function getVerbosity(); /** * Returns whether verbosity is quiet (-q). * - * @return bool true if verbosity is set to VERBOSITY_QUIET, false otherwise + * @return bool */ public function isQuiet(); /** * Returns whether verbosity is verbose (-v). * - * @return bool true if verbosity is set to VERBOSITY_VERBOSE, false otherwise + * @return bool */ public function isVerbose(); /** * Returns whether verbosity is very verbose (-vv). * - * @return bool true if verbosity is set to VERBOSITY_VERY_VERBOSE, false otherwise + * @return bool */ public function isVeryVerbose(); /** * Returns whether verbosity is debug (-vvv). * - * @return bool true if verbosity is set to VERBOSITY_DEBUG, false otherwise + * @return bool */ public function isDebug(); /** * Sets the decorated flag. - * - * @param bool $decorated Whether to decorate the messages */ - public function setDecorated($decorated); + public function setDecorated(bool $decorated); /** * Gets the decorated flag. * - * @return bool true if the output will decorate messages, false otherwise + * @return bool */ public function isDecorated(); diff --git a/vendor/symfony/console/Output/StreamOutput.php b/vendor/symfony/console/Output/StreamOutput.php index 9c2243644..7f5551827 100644 --- a/vendor/symfony/console/Output/StreamOutput.php +++ b/vendor/symfony/console/Output/StreamOutput.php @@ -57,7 +57,7 @@ class StreamOutput extends Output /** * Gets the stream attached to this StreamOutput instance. * - * @return resource A stream resource + * @return resource */ public function getStream() { @@ -67,7 +67,7 @@ class StreamOutput extends Output /** * {@inheritdoc} */ - protected function doWrite($message, $newline) + protected function doWrite(string $message, bool $newline) { if ($newline) { $message .= \PHP_EOL; @@ -110,16 +110,6 @@ class StreamOutput extends Output || 'xterm' === getenv('TERM'); } - if (\function_exists('stream_isatty')) { - return @stream_isatty($this->stream); - } - - if (\function_exists('posix_isatty')) { - return @posix_isatty($this->stream); - } - - $stat = @fstat($this->stream); - // Check if formatted mode is S_IFCHR - return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; + return stream_isatty($this->stream); } } diff --git a/vendor/symfony/console/Output/TrimmedBufferOutput.php b/vendor/symfony/console/Output/TrimmedBufferOutput.php index 87c04a892..3f4d375f4 100644 --- a/vendor/symfony/console/Output/TrimmedBufferOutput.php +++ b/vendor/symfony/console/Output/TrimmedBufferOutput.php @@ -50,7 +50,7 @@ class TrimmedBufferOutput extends Output /** * {@inheritdoc} */ - protected function doWrite($message, $newline) + protected function doWrite(string $message, bool $newline) { $this->buffer .= $message; diff --git a/vendor/symfony/console/Question/ChoiceQuestion.php b/vendor/symfony/console/Question/ChoiceQuestion.php index 6247ca716..bf1f90487 100644 --- a/vendor/symfony/console/Question/ChoiceQuestion.php +++ b/vendor/symfony/console/Question/ChoiceQuestion.php @@ -58,11 +58,9 @@ class ChoiceQuestion extends Question * * When multiselect is set to true, multiple choices can be answered. * - * @param bool $multiselect - * * @return $this */ - public function setMultiselect($multiselect) + public function setMultiselect(bool $multiselect) { $this->multiselect = $multiselect; $this->setValidator($this->getDefaultValidator()); @@ -93,11 +91,9 @@ class ChoiceQuestion extends Question /** * Sets the prompt for choices. * - * @param string $prompt - * * @return $this */ - public function setPrompt($prompt) + public function setPrompt(string $prompt) { $this->prompt = $prompt; @@ -109,11 +105,9 @@ class ChoiceQuestion extends Question * * The error message has a string placeholder (%s) for the invalid value. * - * @param string $errorMessage - * * @return $this */ - public function setErrorMessage($errorMessage) + public function setErrorMessage(string $errorMessage) { $this->errorMessage = $errorMessage; $this->setValidator($this->getDefaultValidator()); @@ -175,7 +169,8 @@ class ChoiceQuestion extends Question throw new InvalidArgumentException(sprintf($errorMessage, $value)); } - $multiselectChoices[] = (string) $result; + // For associative choices, consistently return the key as string: + $multiselectChoices[] = $isAssoc ? (string) $result : $result; } if ($multiselect) { diff --git a/vendor/symfony/console/Question/Question.php b/vendor/symfony/console/Question/Question.php index cc108018f..3a73f04b2 100644 --- a/vendor/symfony/console/Question/Question.php +++ b/vendor/symfony/console/Question/Question.php @@ -30,6 +30,7 @@ class Question private $default; private $normalizer; private $trimmable = true; + private $multiline = false; /** * @param string $question The question to ask to the user @@ -61,6 +62,26 @@ class Question return $this->default; } + /** + * Returns whether the user response accepts newline characters. + */ + public function isMultiline(): bool + { + return $this->multiline; + } + + /** + * Sets whether the user response should accept newline characters. + * + * @return $this + */ + public function setMultiline(bool $multiline): self + { + $this->multiline = $multiline; + + return $this; + } + /** * Returns whether the user response must be hidden. * @@ -74,25 +95,23 @@ class Question /** * Sets whether the user response must be hidden or not. * - * @param bool $hidden - * * @return $this * * @throws LogicException In case the autocompleter is also used */ - public function setHidden($hidden) + public function setHidden(bool $hidden) { if ($this->autocompleterCallback) { throw new LogicException('A hidden question cannot use the autocompleter.'); } - $this->hidden = (bool) $hidden; + $this->hidden = $hidden; return $this; } /** - * In case the response can not be hidden, whether to fallback on non-hidden question or not. + * In case the response cannot be hidden, whether to fallback on non-hidden question or not. * * @return bool */ @@ -102,15 +121,13 @@ class Question } /** - * Sets whether to fallback on non-hidden question if the response can not be hidden. - * - * @param bool $fallback + * Sets whether to fallback on non-hidden question if the response cannot be hidden. * * @return $this */ - public function setHiddenFallback($fallback) + public function setHiddenFallback(bool $fallback) { - $this->hiddenFallback = (bool) $fallback; + $this->hiddenFallback = $fallback; return $this; } @@ -130,14 +147,11 @@ class Question /** * Sets values for the autocompleter. * - * @param iterable|null $values - * * @return $this * - * @throws InvalidArgumentException * @throws LogicException */ - public function setAutocompleterValues($values) + public function setAutocompleterValues(?iterable $values) { if (\is_array($values)) { $values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); @@ -150,10 +164,8 @@ class Question $callback = static function () use ($values, &$valueCache) { return $valueCache ?? $valueCache = iterator_to_array($values, false); }; - } elseif (null === $values) { - $callback = null; } else { - throw new InvalidArgumentException('Autocompleter values can be either an array, "null" or a "Traversable" object.'); + $callback = null; } return $this->setAutocompleterCallback($callback); @@ -212,19 +224,14 @@ class Question * * Null means an unlimited number of attempts. * - * @param int|null $attempts - * * @return $this * * @throws InvalidArgumentException in case the number of attempts is invalid */ - public function setMaxAttempts($attempts) + public function setMaxAttempts(?int $attempts) { - if (null !== $attempts) { - $attempts = (int) $attempts; - if ($attempts < 1) { - throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); - } + if (null !== $attempts && $attempts < 1) { + throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); } $this->attempts = $attempts; @@ -270,7 +277,7 @@ class Question return $this->normalizer; } - protected function isAssoc($array) + protected function isAssoc(array $array) { return (bool) \count(array_filter(array_keys($array), 'is_string')); } diff --git a/vendor/symfony/console/README.md b/vendor/symfony/console/README.md index c89b4a1a2..c4c129989 100644 --- a/vendor/symfony/console/README.md +++ b/vendor/symfony/console/README.md @@ -4,6 +4,18 @@ Console Component The Console component eases the creation of beautiful and testable command line interfaces. +Sponsor +------- + +The Console component for Symfony 5.4/6.0 is [backed][1] by [Les-Tilleuls.coop][2]. + +Les-Tilleuls.coop is a team of 50+ Symfony experts who can help you design, develop and +fix your projects. We provide a wide range of professional services including development, +consulting, coaching, training and audits. We also are highly skilled in JS, Go and DevOps. +We are a worker cooperative! + +Help Symfony by [sponsoring][3] its development! + Resources --------- @@ -18,3 +30,7 @@ Credits `Resources/bin/hiddeninput.exe` is a third party binary provided within this component. Find sources and license at https://github.com/Seldaek/hidden-input. + +[1]: https://symfony.com/backers +[2]: https://les-tilleuls.coop +[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/console/Resources/completion.bash b/vendor/symfony/console/Resources/completion.bash new file mode 100644 index 000000000..64b87ccf7 --- /dev/null +++ b/vendor/symfony/console/Resources/completion.bash @@ -0,0 +1,84 @@ +# This file is part of the Symfony package. +# +# (c) Fabien Potencier <fabien@symfony.com> +# +# For the full copyright and license information, please view +# https://symfony.com/doc/current/contributing/code/license.html + +_sf_{{ COMMAND_NAME }}() { + # Use newline as only separator to allow space in completion values + IFS=$'\n' + local sf_cmd="${COMP_WORDS[0]}" + + # for an alias, get the real script behind it + sf_cmd_type=$(type -t $sf_cmd) + if [[ $sf_cmd_type == "alias" ]]; then + sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") + elif [[ $sf_cmd_type == "file" ]]; then + sf_cmd=$(type -p $sf_cmd) + fi + + if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then + return 1 + fi + + local cur prev words cword + _get_comp_words_by_ref -n := cur prev words cword + + local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S{{ VERSION }}") + for w in ${words[@]}; do + w=$(printf -- '%b' "$w") + # remove quotes from typed values + quote="${w:0:1}" + if [ "$quote" == \' ]; then + w="${w%\'}" + w="${w#\'}" + elif [ "$quote" == \" ]; then + w="${w%\"}" + w="${w#\"}" + fi + # empty values are ignored + if [ ! -z "$w" ]; then + completecmd+=("-i$w") + fi + done + + local sfcomplete + if sfcomplete=$(${completecmd[@]} 2>&1); then + local quote suggestions + quote=${cur:0:1} + + # Use single quotes by default if suggestions contains backslash (FQCN) + if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then + quote=\' + fi + + if [ "$quote" == \' ]; then + # single quotes: no additional escaping (does not accept ' in values) + suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) + elif [ "$quote" == \" ]; then + # double quotes: double escaping for \ $ ` " + suggestions=$(for s in $sfcomplete; do + s=${s//\\/\\\\} + s=${s//\$/\\\$} + s=${s//\`/\\\`} + s=${s//\"/\\\"} + printf $'%q%q%q\n' "$quote" "$s" "$quote"; + done) + else + # no quotes: double escaping + suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) + fi + COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) + __ltrim_colon_completions "$cur" + else + if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then + >&2 echo + >&2 echo $sfcomplete + fi + + return 1 + fi +} + +complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/vendor/symfony/console/SignalRegistry/SignalRegistry.php b/vendor/symfony/console/SignalRegistry/SignalRegistry.php new file mode 100644 index 000000000..6bee24a42 --- /dev/null +++ b/vendor/symfony/console/SignalRegistry/SignalRegistry.php @@ -0,0 +1,65 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\SignalRegistry; + +final class SignalRegistry +{ + private $signalHandlers = []; + + public function __construct() + { + if (\function_exists('pcntl_async_signals')) { + pcntl_async_signals(true); + } + } + + public function register(int $signal, callable $signalHandler): void + { + if (!isset($this->signalHandlers[$signal])) { + $previousCallback = pcntl_signal_get_handler($signal); + + if (\is_callable($previousCallback)) { + $this->signalHandlers[$signal][] = $previousCallback; + } + } + + $this->signalHandlers[$signal][] = $signalHandler; + + pcntl_signal($signal, [$this, 'handle']); + } + + public static function isSupported(): bool + { + if (!\function_exists('pcntl_signal')) { + return false; + } + + if (\in_array('pcntl_signal', explode(',', \ini_get('disable_functions')))) { + return false; + } + + return true; + } + + /** + * @internal + */ + public function handle(int $signal): void + { + $count = \count($this->signalHandlers[$signal]); + + foreach ($this->signalHandlers[$signal] as $i => $signalHandler) { + $hasNext = $i !== $count - 1; + $signalHandler($signal, $hasNext); + } + } +} diff --git a/vendor/symfony/console/SingleCommandApplication.php b/vendor/symfony/console/SingleCommandApplication.php new file mode 100644 index 000000000..e93c1821b --- /dev/null +++ b/vendor/symfony/console/SingleCommandApplication.php @@ -0,0 +1,72 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * @author Grégoire Pineau <lyrixx@lyrixx.info> + */ +class SingleCommandApplication extends Command +{ + private $version = 'UNKNOWN'; + private $autoExit = true; + private $running = false; + + /** + * @return $this + */ + public function setVersion(string $version): self + { + $this->version = $version; + + return $this; + } + + /** + * @final + * + * @return $this + */ + public function setAutoExit(bool $autoExit): self + { + $this->autoExit = $autoExit; + + return $this; + } + + public function run(InputInterface $input = null, OutputInterface $output = null): int + { + if ($this->running) { + return parent::run($input, $output); + } + + // We use the command name as the application name + $application = new Application($this->getName() ?: 'UNKNOWN', $this->version); + $application->setAutoExit($this->autoExit); + // Fix the usage of the command displayed with "--help" + $this->setName($_SERVER['argv'][0]); + $application->add($this); + $application->setDefaultCommand($this->getName(), true); + + $this->running = true; + try { + $ret = $application->run($input, $output); + } finally { + $this->running = false; + } + + return $ret ?? 1; + } +} diff --git a/vendor/symfony/console/Style/OutputStyle.php b/vendor/symfony/console/Style/OutputStyle.php index 14d2d60b2..67a98ff07 100644 --- a/vendor/symfony/console/Style/OutputStyle.php +++ b/vendor/symfony/console/Style/OutputStyle.php @@ -33,17 +33,15 @@ abstract class OutputStyle implements OutputInterface, StyleInterface /** * {@inheritdoc} */ - public function newLine($count = 1) + public function newLine(int $count = 1) { $this->output->write(str_repeat(\PHP_EOL, $count)); } /** - * @param int $max - * * @return ProgressBar */ - public function createProgressBar($max = 0) + public function createProgressBar(int $max = 0) { return new ProgressBar($this->output, $max); } @@ -51,7 +49,7 @@ abstract class OutputStyle implements OutputInterface, StyleInterface /** * {@inheritdoc} */ - public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL) + public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) { $this->output->write($messages, $newline, $type); } @@ -59,7 +57,7 @@ abstract class OutputStyle implements OutputInterface, StyleInterface /** * {@inheritdoc} */ - public function writeln($messages, $type = self::OUTPUT_NORMAL) + public function writeln($messages, int $type = self::OUTPUT_NORMAL) { $this->output->writeln($messages, $type); } @@ -67,7 +65,7 @@ abstract class OutputStyle implements OutputInterface, StyleInterface /** * {@inheritdoc} */ - public function setVerbosity($level) + public function setVerbosity(int $level) { $this->output->setVerbosity($level); } @@ -83,7 +81,7 @@ abstract class OutputStyle implements OutputInterface, StyleInterface /** * {@inheritdoc} */ - public function setDecorated($decorated) + public function setDecorated(bool $decorated) { $this->output->setDecorated($decorated); } diff --git a/vendor/symfony/console/Style/StyleInterface.php b/vendor/symfony/console/Style/StyleInterface.php index 3b5b8af51..38d23b77e 100644 --- a/vendor/symfony/console/Style/StyleInterface.php +++ b/vendor/symfony/console/Style/StyleInterface.php @@ -20,17 +20,13 @@ interface StyleInterface { /** * Formats a command title. - * - * @param string $message */ - public function title($message); + public function title(string $message); /** * Formats a section title. - * - * @param string $message */ - public function section($message); + public function section(string $message); /** * Formats a list. @@ -87,64 +83,47 @@ interface StyleInterface /** * Asks a question. * - * @param string $question - * @param string|null $default - * @param callable|null $validator - * * @return mixed */ - public function ask($question, $default = null, $validator = null); + public function ask(string $question, string $default = null, callable $validator = null); /** * Asks a question with the user input hidden. * - * @param string $question - * @param callable|null $validator - * * @return mixed */ - public function askHidden($question, $validator = null); + public function askHidden(string $question, callable $validator = null); /** * Asks for confirmation. * - * @param string $question - * @param bool $default - * * @return bool */ - public function confirm($question, $default = true); + public function confirm(string $question, bool $default = true); /** * Asks a choice question. * - * @param string $question * @param string|int|null $default * * @return mixed */ - public function choice($question, array $choices, $default = null); + public function choice(string $question, array $choices, $default = null); /** * Add newline(s). - * - * @param int $count The number of newlines */ - public function newLine($count = 1); + public function newLine(int $count = 1); /** * Starts the progress output. - * - * @param int $max Maximum steps (0 if unknown) */ - public function progressStart($max = 0); + public function progressStart(int $max = 0); /** * Advances the progress output X steps. - * - * @param int $step Number of steps to advance */ - public function progressAdvance($step = 1); + public function progressAdvance(int $step = 1); /** * Finishes the progress output. diff --git a/vendor/symfony/console/Style/SymfonyStyle.php b/vendor/symfony/console/Style/SymfonyStyle.php index 1c99a1865..e3c5ac8e7 100644 --- a/vendor/symfony/console/Style/SymfonyStyle.php +++ b/vendor/symfony/console/Style/SymfonyStyle.php @@ -21,6 +21,7 @@ use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Helper\TableCell; use Symfony\Component\Console\Helper\TableSeparator; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\TrimmedBufferOutput; use Symfony\Component\Console\Question\ChoiceQuestion; @@ -38,6 +39,7 @@ class SymfonyStyle extends OutputStyle public const MAX_LINE_LENGTH = 120; private $input; + private $output; private $questionHelper; private $progressBar; private $lineLength; @@ -51,20 +53,15 @@ class SymfonyStyle extends OutputStyle $width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; $this->lineLength = min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); - parent::__construct($output); + parent::__construct($this->output = $output); } /** * Formats a message as a block of text. * * @param string|array $messages The message to write in the block - * @param string|null $type The block type (added in [] on first line) - * @param string|null $style The style to apply to the whole block - * @param string $prefix The prefix for the block - * @param bool $padding Whether to add vertical padding - * @param bool $escape Whether to escape the message */ - public function block($messages, $type = null, $style = null, $prefix = ' ', $padding = false, $escape = true) + public function block($messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = true) { $messages = \is_array($messages) ? array_values($messages) : [$messages]; @@ -76,12 +73,12 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function title($message) + public function title(string $message) { $this->autoPrependBlock(); $this->writeln([ sprintf('<comment>%s</>', OutputFormatter::escapeTrailingBackslash($message)), - sprintf('<comment>%s</>', str_repeat('=', Helper::strlenWithoutDecoration($this->getFormatter(), $message))), + sprintf('<comment>%s</>', str_repeat('=', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), ]); $this->newLine(); } @@ -89,12 +86,12 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function section($message) + public function section(string $message) { $this->autoPrependBlock(); $this->writeln([ sprintf('<comment>%s</>', OutputFormatter::escapeTrailingBackslash($message)), - sprintf('<comment>%s</>', str_repeat('-', Helper::strlenWithoutDecoration($this->getFormatter(), $message))), + sprintf('<comment>%s</>', str_repeat('-', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), ]); $this->newLine(); } @@ -168,6 +165,16 @@ class SymfonyStyle extends OutputStyle $this->block($message, 'NOTE', 'fg=yellow', ' ! '); } + /** + * Formats an info message. + * + * @param string|array $message + */ + public function info($message) + { + $this->block($message, 'INFO', 'fg=green', ' ', true); + } + /** * {@inheritdoc} */ @@ -181,15 +188,12 @@ class SymfonyStyle extends OutputStyle */ public function table(array $headers, array $rows) { - $style = clone Table::getStyleDefinition('symfony-style-guide'); - $style->setCellHeaderFormat('<info>%s</info>'); + $this->createTable() + ->setHeaders($headers) + ->setRows($rows) + ->render() + ; - $table = new Table($this); - $table->setHeaders($headers); - $table->setRows($rows); - $table->setStyle($style); - - $table->render(); $this->newLine(); } @@ -198,16 +202,13 @@ class SymfonyStyle extends OutputStyle */ public function horizontalTable(array $headers, array $rows) { - $style = clone Table::getStyleDefinition('symfony-style-guide'); - $style->setCellHeaderFormat('<info>%s</info>'); + $this->createTable() + ->setHorizontal(true) + ->setHeaders($headers) + ->setRows($rows) + ->render() + ; - $table = new Table($this); - $table->setHeaders($headers); - $table->setRows($rows); - $table->setStyle($style); - $table->setHorizontal(true); - - $table->render(); $this->newLine(); } @@ -223,10 +224,6 @@ class SymfonyStyle extends OutputStyle */ public function definitionList(...$list) { - $style = clone Table::getStyleDefinition('symfony-style-guide'); - $style->setCellHeaderFormat('<info>%s</info>'); - - $table = new Table($this); $headers = []; $row = []; foreach ($list as $value) { @@ -247,19 +244,13 @@ class SymfonyStyle extends OutputStyle $row[] = current($value); } - $table->setHeaders($headers); - $table->setRows([$row]); - $table->setHorizontal(); - $table->setStyle($style); - - $table->render(); - $this->newLine(); + $this->horizontalTable($headers, [$row]); } /** * {@inheritdoc} */ - public function ask($question, $default = null, $validator = null) + public function ask(string $question, string $default = null, callable $validator = null) { $question = new Question($question, $default); $question->setValidator($validator); @@ -270,7 +261,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function askHidden($question, $validator = null) + public function askHidden(string $question, callable $validator = null) { $question = new Question($question); @@ -283,7 +274,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function confirm($question, $default = true) + public function confirm(string $question, bool $default = true) { return $this->askQuestion(new ConfirmationQuestion($question, $default)); } @@ -291,7 +282,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function choice($question, array $choices, $default = null) + public function choice(string $question, array $choices, $default = null) { if (null !== $default) { $values = array_flip($choices); @@ -304,7 +295,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function progressStart($max = 0) + public function progressStart(int $max = 0) { $this->progressBar = $this->createProgressBar($max); $this->progressBar->start(); @@ -313,7 +304,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function progressAdvance($step = 1) + public function progressAdvance(int $step = 1) { $this->getProgressBar()->advance($step); } @@ -331,7 +322,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function createProgressBar($max = 0) + public function createProgressBar(int $max = 0) { $progressBar = parent::createProgressBar($max); @@ -344,6 +335,16 @@ class SymfonyStyle extends OutputStyle return $progressBar; } + /** + * @see ProgressBar::iterate() + */ + public function progressIterate(iterable $iterable, int $max = null): iterable + { + yield from $this->createProgressBar()->iterate($iterable, $max); + + $this->newLine(2); + } + /** * @return mixed */ @@ -370,7 +371,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function writeln($messages, $type = self::OUTPUT_NORMAL) + public function writeln($messages, int $type = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { $messages = [$messages]; @@ -385,7 +386,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL) + public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) { if (!is_iterable($messages)) { $messages = [$messages]; @@ -400,7 +401,7 @@ class SymfonyStyle extends OutputStyle /** * {@inheritdoc} */ - public function newLine($count = 1) + public function newLine(int $count = 1) { parent::newLine($count); $this->bufferedOutput->write(str_repeat("\n", $count)); @@ -416,6 +417,15 @@ class SymfonyStyle extends OutputStyle return new self($this->input, $this->getErrorOutput()); } + public function createTable(): Table + { + $output = $this->output instanceof ConsoleOutputInterface ? $this->output->section() : $this->output; + $style = clone Table::getStyleDefinition('symfony-style-guide'); + $style->setCellHeaderFormat('<info>%s</info>'); + + return (new Table($output))->setStyle($style); + } + private function getProgressBar(): ProgressBar { if (!$this->progressBar) { @@ -456,7 +466,7 @@ class SymfonyStyle extends OutputStyle private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false): array { $indentLength = 0; - $prefixLength = Helper::strlenWithoutDecoration($this->getFormatter(), $prefix); + $prefixLength = Helper::width(Helper::removeDecoration($this->getFormatter(), $prefix)); $lines = []; if (null !== $type) { @@ -471,7 +481,7 @@ class SymfonyStyle extends OutputStyle $message = OutputFormatter::escape($message); } - $decorationLength = Helper::strlen($message) - Helper::strlenWithoutDecoration($this->getFormatter(), $message); + $decorationLength = Helper::width($message) - Helper::width(Helper::removeDecoration($this->getFormatter(), $message)); $messageLineLength = min($this->lineLength - $prefixLength - $indentLength + $decorationLength, $this->lineLength); $messageLines = explode(\PHP_EOL, wordwrap($message, $messageLineLength, \PHP_EOL, true)); foreach ($messageLines as $messageLine) { @@ -496,7 +506,7 @@ class SymfonyStyle extends OutputStyle } $line = $prefix.$line; - $line .= str_repeat(' ', max($this->lineLength - Helper::strlenWithoutDecoration($this->getFormatter(), $line), 0)); + $line .= str_repeat(' ', max($this->lineLength - Helper::width(Helper::removeDecoration($this->getFormatter(), $line)), 0)); if ($style) { $line = sprintf('<%s>%s</>', $style, $line); diff --git a/vendor/symfony/console/Terminal.php b/vendor/symfony/console/Terminal.php index 5e5a3c2f7..08c53535b 100644 --- a/vendor/symfony/console/Terminal.php +++ b/vendor/symfony/console/Terminal.php @@ -57,10 +57,8 @@ class Terminal /** * @internal - * - * @return bool */ - public static function hasSttyAvailable() + public static function hasSttyAvailable(): bool { if (null !== self::$stty) { return self::$stty; diff --git a/vendor/symfony/console/Tester/ApplicationTester.php b/vendor/symfony/console/Tester/ApplicationTester.php index ce4e5c18d..3a262e81c 100644 --- a/vendor/symfony/console/Tester/ApplicationTester.php +++ b/vendor/symfony/console/Tester/ApplicationTester.php @@ -29,8 +29,6 @@ class ApplicationTester use TesterTrait; private $application; - private $input; - private $statusCode; public function __construct(Application $application) { @@ -47,12 +45,9 @@ class ApplicationTester * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available * - * @param array $input An array of arguments and options - * @param array $options An array of options - * * @return int The command exit code */ - public function run(array $input, $options = []) + public function run(array $input, array $options = []) { $prevShellVerbosity = getenv('SHELL_VERBOSITY'); diff --git a/vendor/symfony/console/Tester/CommandCompletionTester.php b/vendor/symfony/console/Tester/CommandCompletionTester.php new file mode 100644 index 000000000..ade732752 --- /dev/null +++ b/vendor/symfony/console/Tester/CommandCompletionTester.php @@ -0,0 +1,56 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Tester; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; + +/** + * Eases the testing of command completion. + * + * @author Jérôme Tamarelle <jerome@tamarelle.net> + */ +class CommandCompletionTester +{ + private $command; + + public function __construct(Command $command) + { + $this->command = $command; + } + + /** + * Create completion suggestions from input tokens. + */ + public function complete(array $input): array + { + $currentIndex = \count($input); + if ('' === end($input)) { + array_pop($input); + } + array_unshift($input, $this->command->getName()); + + $completionInput = CompletionInput::fromTokens($input, $currentIndex); + $completionInput->bind($this->command->getDefinition()); + $suggestions = new CompletionSuggestions(); + + $this->command->complete($completionInput, $suggestions); + + $options = []; + foreach ($suggestions->getOptionSuggestions() as $option) { + $options[] = '--'.$option->getName(); + } + + return array_map('strval', array_merge($options, $suggestions->getValueSuggestions())); + } +} diff --git a/vendor/symfony/console/Tester/CommandTester.php b/vendor/symfony/console/Tester/CommandTester.php index 57efc9a67..6c15c25fb 100644 --- a/vendor/symfony/console/Tester/CommandTester.php +++ b/vendor/symfony/console/Tester/CommandTester.php @@ -25,8 +25,6 @@ class CommandTester use TesterTrait; private $command; - private $input; - private $statusCode; public function __construct(Command $command) { diff --git a/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php b/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php new file mode 100644 index 000000000..a47324237 --- /dev/null +++ b/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php @@ -0,0 +1,55 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Tester\Constraint; + +use PHPUnit\Framework\Constraint\Constraint; +use Symfony\Component\Console\Command\Command; + +final class CommandIsSuccessful extends Constraint +{ + /** + * {@inheritdoc} + */ + public function toString(): string + { + return 'is successful'; + } + + /** + * {@inheritdoc} + */ + protected function matches($other): bool + { + return Command::SUCCESS === $other; + } + + /** + * {@inheritdoc} + */ + protected function failureDescription($other): string + { + return 'the command '.$this->toString(); + } + + /** + * {@inheritdoc} + */ + protected function additionalFailureDescription($other): string + { + $mapping = [ + Command::FAILURE => 'Command failed.', + Command::INVALID => 'Command was invalid.', + ]; + + return $mapping[$other] ?? sprintf('Command returned exit status %d.', $other); + } +} diff --git a/vendor/symfony/console/Tester/TesterTrait.php b/vendor/symfony/console/Tester/TesterTrait.php index 27d598559..40bc58177 100644 --- a/vendor/symfony/console/Tester/TesterTrait.php +++ b/vendor/symfony/console/Tester/TesterTrait.php @@ -11,10 +11,12 @@ namespace Symfony\Component\Console\Tester; +use PHPUnit\Framework\Assert; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\StreamOutput; +use Symfony\Component\Console\Tester\Constraint\CommandIsSuccessful; /** * @author Amrouche Hamza <hamza.simperfit@gmail.com> @@ -25,15 +27,19 @@ trait TesterTrait private $output; private $inputs = []; private $captureStreamsIndependently = false; + /** @var InputInterface */ + private $input; + /** @var int */ + private $statusCode; /** * Gets the display returned by the last execution of the command or application. * - * @param bool $normalize Whether to normalize end of lines to \n or not + * @throws \RuntimeException If it's called before the execute method * - * @return string The display + * @return string */ - public function getDisplay($normalize = false) + public function getDisplay(bool $normalize = false) { if (null === $this->output) { throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); @@ -57,7 +63,7 @@ trait TesterTrait * * @return string */ - public function getErrorOutput($normalize = false) + public function getErrorOutput(bool $normalize = false) { if (!$this->captureStreamsIndependently) { throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); @@ -77,7 +83,7 @@ trait TesterTrait /** * Gets the input instance used by the last execution of the command or application. * - * @return InputInterface The current input instance + * @return InputInterface */ public function getInput() { @@ -87,7 +93,7 @@ trait TesterTrait /** * Gets the output instance used by the last execution of the command or application. * - * @return OutputInterface The current output instance + * @return OutputInterface */ public function getOutput() { @@ -97,13 +103,24 @@ trait TesterTrait /** * Gets the status code returned by the last execution of the command or application. * - * @return int The status code + * @throws \RuntimeException If it's called before the execute method + * + * @return int */ public function getStatusCode() { + if (null === $this->statusCode) { + throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the status code?'); + } + return $this->statusCode; } + public function assertCommandIsSuccessful(string $message = ''): void + { + Assert::assertThat($this->statusCode, new CommandIsSuccessful(), $message); + } + /** * Sets the user inputs. * diff --git a/vendor/symfony/console/composer.json b/vendor/symfony/console/composer.json index 90cbd24f5..9a565068c 100644 --- a/vendor/symfony/console/composer.json +++ b/vendor/symfony/console/composer.json @@ -2,7 +2,7 @@ "name": "symfony/console", "type": "library", "description": "Eases the creation of beautiful and testable command line interfaces", - "keywords": [], + "keywords": ["console", "cli", "command line", "terminal"], "homepage": "https://symfony.com", "license": "MIT", "authors": [ @@ -16,19 +16,21 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "require-dev": { - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", "psr/log": "^1|^2" }, "provide": { @@ -42,10 +44,11 @@ }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" }, diff --git a/vendor/symfony/css-selector/CssSelectorConverter.php b/vendor/symfony/css-selector/CssSelectorConverter.php index d1aeb7eb1..bbb6afe21 100644 --- a/vendor/symfony/css-selector/CssSelectorConverter.php +++ b/vendor/symfony/css-selector/CssSelectorConverter.php @@ -27,6 +27,10 @@ use Symfony\Component\CssSelector\XPath\Translator; class CssSelectorConverter { private $translator; + private $cache; + + private static $xmlCache = []; + private static $htmlCache = []; /** * @param bool $html Whether HTML support should be enabled. Disable it for XML documents @@ -37,6 +41,9 @@ class CssSelectorConverter if ($html) { $this->translator->registerExtension(new HtmlExtension($this->translator)); + $this->cache = &self::$htmlCache; + } else { + $this->cache = &self::$xmlCache; } $this->translator @@ -53,13 +60,10 @@ class CssSelectorConverter * Optionally, a prefix can be added to the resulting XPath * expression with the $prefix parameter. * - * @param string $cssExpr The CSS expression - * @param string $prefix An optional prefix for the XPath expression - * * @return string */ - public function toXPath($cssExpr, $prefix = 'descendant-or-self::') + public function toXPath(string $cssExpr, string $prefix = 'descendant-or-self::') { - return $this->translator->cssToXPath($cssExpr, $prefix); + return $this->cache[$prefix][$cssExpr] ?? $this->cache[$prefix][$cssExpr] = $this->translator->cssToXPath($cssExpr, $prefix); } } diff --git a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php b/vendor/symfony/css-selector/Exception/SyntaxErrorException.php index 1200c979e..7deacf9c5 100644 --- a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php +++ b/vendor/symfony/css-selector/Exception/SyntaxErrorException.php @@ -24,32 +24,25 @@ use Symfony\Component\CssSelector\Parser\Token; class SyntaxErrorException extends ParseException { /** - * @param string $expectedValue - * * @return self */ - public static function unexpectedToken($expectedValue, Token $foundToken) + public static function unexpectedToken(string $expectedValue, Token $foundToken) { return new self(sprintf('Expected %s, but %s found.', $expectedValue, $foundToken)); } /** - * @param string $pseudoElement - * @param string $unexpectedLocation - * * @return self */ - public static function pseudoElementFound($pseudoElement, $unexpectedLocation) + public static function pseudoElementFound(string $pseudoElement, string $unexpectedLocation) { return new self(sprintf('Unexpected pseudo-element "::%s" found %s.', $pseudoElement, $unexpectedLocation)); } /** - * @param int $position - * * @return self */ - public static function unclosedString($position) + public static function unclosedString(int $position) { return new self(sprintf('Unclosed/invalid string at %s.', $position)); } diff --git a/vendor/symfony/css-selector/Parser/TokenStream.php b/vendor/symfony/css-selector/Parser/TokenStream.php index f4c2585aa..2085f2dd7 100644 --- a/vendor/symfony/css-selector/Parser/TokenStream.php +++ b/vendor/symfony/css-selector/Parser/TokenStream.php @@ -118,9 +118,7 @@ class TokenStream } /** - * Returns nex identifier token. - * - * @return string The identifier token value + * Returns next identifier token. * * @throws SyntaxErrorException If next token is not an identifier */ @@ -136,9 +134,7 @@ class TokenStream } /** - * Returns nex identifier or star delimiter token. - * - * @return string|null The identifier token value or null if star found + * Returns next identifier or null if star delimiter token is found. * * @throws SyntaxErrorException If next token is not an identifier or a star delimiter */ diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php index 5f16ac48f..2e78a1c4d 100644 --- a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php +++ b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php @@ -49,22 +49,22 @@ class TokenizerPatterns $this->identifierPattern = '-?(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*'; $this->hashPattern = '#((?:'.$this->nmCharPattern.')+)'; $this->numberPattern = '[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)'; - $this->quotedStringPattern = '([^\n\r\f%s]|'.$this->stringEscapePattern.')*'; + $this->quotedStringPattern = '([^\n\r\f\\\\%s]|'.$this->stringEscapePattern.')*'; } public function getNewLineEscapePattern(): string { - return '~^'.$this->newLineEscapePattern.'~'; + return '~'.$this->newLineEscapePattern.'~'; } public function getSimpleEscapePattern(): string { - return '~^'.$this->simpleEscapePattern.'~'; + return '~'.$this->simpleEscapePattern.'~'; } public function getUnicodeEscapePattern(): string { - return '~^'.$this->unicodeEscapePattern.'~i'; + return '~'.$this->unicodeEscapePattern.'~i'; } public function getIdentifierPattern(): string diff --git a/vendor/symfony/css-selector/XPath/Translator.php b/vendor/symfony/css-selector/XPath/Translator.php index 782aef458..8ce473036 100644 --- a/vendor/symfony/css-selector/XPath/Translator.php +++ b/vendor/symfony/css-selector/XPath/Translator.php @@ -203,7 +203,7 @@ class Translator implements TranslatorInterface /** * @throws ExpressionErrorException */ - public function addAttributeMatching(XPathExpr $xpath, string $operator, string $attribute, $value): XPathExpr + public function addAttributeMatching(XPathExpr $xpath, string $operator, string $attribute, ?string $value): XPathExpr { if (!isset($this->attributeMatchingTranslators[$operator])) { throw new ExpressionErrorException(sprintf('Attribute matcher operator "%s" not supported.', $operator)); diff --git a/vendor/symfony/css-selector/XPath/XPathExpr.php b/vendor/symfony/css-selector/XPath/XPathExpr.php index 638cbd0fe..e45ce7d8c 100644 --- a/vendor/symfony/css-selector/XPath/XPathExpr.php +++ b/vendor/symfony/css-selector/XPath/XPathExpr.php @@ -43,6 +43,9 @@ class XPathExpr return $this->element; } + /** + * @return $this + */ public function addCondition(string $condition): self { $this->condition = $this->condition ? sprintf('(%s) and (%s)', $this->condition, $condition) : $condition; @@ -55,6 +58,9 @@ class XPathExpr return $this->condition; } + /** + * @return $this + */ public function addNameTest(): self { if ('*' !== $this->element) { @@ -65,6 +71,9 @@ class XPathExpr return $this; } + /** + * @return $this + */ public function addStarPrefix(): self { $this->path .= '*/'; diff --git a/vendor/symfony/css-selector/composer.json b/vendor/symfony/css-selector/composer.json index e8ecfee7a..f0b712495 100644 --- a/vendor/symfony/css-selector/composer.json +++ b/vendor/symfony/css-selector/composer.json @@ -20,7 +20,7 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "autoload": { diff --git a/vendor/symfony/debug/BufferingLogger.php b/vendor/symfony/debug/BufferingLogger.php deleted file mode 100644 index 5280c33bb..000000000 --- a/vendor/symfony/debug/BufferingLogger.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug; - -use Psr\Log\AbstractLogger; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', BufferingLogger::class, \Symfony\Component\ErrorHandler\BufferingLogger::class), \E_USER_DEPRECATED); - -/** - * A buffering logger that stacks logs for later. - * - * @author Nicolas Grekas <p@tchwork.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\BufferingLogger instead. - */ -class BufferingLogger extends AbstractLogger -{ - private $logs = []; - - /** - * @return void - */ - public function log($level, $message, array $context = []) - { - $this->logs[] = [$level, $message, $context]; - } - - public function cleanLogs() - { - $logs = $this->logs; - $this->logs = []; - - return $logs; - } -} diff --git a/vendor/symfony/debug/CHANGELOG.md b/vendor/symfony/debug/CHANGELOG.md deleted file mode 100644 index d49a82df6..000000000 --- a/vendor/symfony/debug/CHANGELOG.md +++ /dev/null @@ -1,83 +0,0 @@ -CHANGELOG -========= - -4.4.0 ------ - - * deprecated `FlattenException`, use the `FlattenException` of the `ErrorHandler` component - * deprecated the whole component in favor of the `ErrorHandler` component - -4.3.0 ------ - - * made the `ErrorHandler` and `ExceptionHandler` classes final - * added `Exception\FlattenException::getAsString` and - `Exception\FlattenException::getTraceAsString` to increase compatibility to php - exception objects - -4.0.0 ------ - - * removed the symfony_debug extension - * removed `ContextErrorException` - -3.4.0 ------ - - * deprecated `ErrorHandler::stackErrors()` and `ErrorHandler::unstackErrors()` - -3.3.0 ------ - - * deprecated the `ContextErrorException` class: use \ErrorException directly now - -3.2.0 ------ - - * `FlattenException::getTrace()` now returns additional type descriptions - `integer` and `float`. - -3.0.0 ------ - - * removed classes, methods and interfaces deprecated in 2.x - -2.8.0 ------ - - * added BufferingLogger for errors that happen before a proper logger is configured - * allow throwing from `__toString()` with `return trigger_error($e, E_USER_ERROR);` - * deprecate ExceptionHandler::createResponse - -2.7.0 ------ - - * added deprecations checking for parent interfaces/classes to DebugClassLoader - * added ZTS support to symfony_debug extension - * added symfony_debug_backtrace() to symfony_debug extension - to track the backtrace of fatal errors - -2.6.0 ------ - - * generalized ErrorHandler and ExceptionHandler, - with some new methods and others deprecated - * enhanced error messages for uncaught exceptions - -2.5.0 ------ - - * added ExceptionHandler::setHandler() - * added UndefinedMethodFatalErrorHandler - * deprecated DummyException - -2.4.0 ------ - - * added a DebugClassLoader able to wrap any autoloader providing a findFile method - * improved error messages for not found classes and functions - -2.3.0 ------ - - * added the component diff --git a/vendor/symfony/debug/Debug.php b/vendor/symfony/debug/Debug.php deleted file mode 100644 index 99215cf3f..000000000 --- a/vendor/symfony/debug/Debug.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', Debug::class, \Symfony\Component\ErrorHandler\Debug::class), \E_USER_DEPRECATED); - -/** - * Registers all the debug tools. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Debug instead. - */ -class Debug -{ - private static $enabled = false; - - /** - * Enables the debug tools. - * - * This method registers an error handler and an exception handler. - * - * @param int $errorReportingLevel The level of error reporting you want - * @param bool $displayErrors Whether to display errors (for development) or just log them (for production) - */ - public static function enable($errorReportingLevel = \E_ALL, $displayErrors = true) - { - if (static::$enabled) { - return; - } - - static::$enabled = true; - - if (null !== $errorReportingLevel) { - error_reporting($errorReportingLevel); - } else { - error_reporting(\E_ALL); - } - - if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) { - ini_set('display_errors', 0); - ExceptionHandler::register(); - } elseif ($displayErrors && (!filter_var(\ini_get('log_errors'), \FILTER_VALIDATE_BOOLEAN) || \ini_get('error_log'))) { - // CLI - display errors only if they're not already logged to STDERR - ini_set('display_errors', 1); - } - if ($displayErrors) { - ErrorHandler::register(new ErrorHandler(new BufferingLogger())); - } else { - ErrorHandler::register()->throwAt(0, true); - } - - DebugClassLoader::enable(); - } -} diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php deleted file mode 100644 index 6081c525a..000000000 --- a/vendor/symfony/debug/DebugClassLoader.php +++ /dev/null @@ -1,538 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug; - -use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', DebugClassLoader::class, \Symfony\Component\ErrorHandler\DebugClassLoader::class), \E_USER_DEPRECATED); - -/** - * Autoloader checking if the class is really defined in the file found. - * - * The ClassLoader will wrap all registered autoloaders - * and will throw an exception if a file is found but does - * not declare the class. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Christophe Coevoet <stof@notk.org> - * @author Nicolas Grekas <p@tchwork.com> - * @author Guilhem Niot <guilhem.niot@gmail.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\DebugClassLoader instead. - */ -class DebugClassLoader -{ - private $classLoader; - private $isFinder; - private $loaded = []; - private static $caseCheck; - private static $checkedClasses = []; - private static $final = []; - private static $finalMethods = []; - private static $deprecated = []; - private static $internal = []; - private static $internalMethods = []; - private static $annotatedParameters = []; - private static $darwinCache = ['/' => ['/', []]]; - private static $method = []; - - public function __construct(callable $classLoader) - { - $this->classLoader = $classLoader; - $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile'); - - if (!isset(self::$caseCheck)) { - $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR); - $i = strrpos($file, \DIRECTORY_SEPARATOR); - $dir = substr($file, 0, 1 + $i); - $file = substr($file, 1 + $i); - $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file); - $test = realpath($dir.$test); - - if (false === $test || false === $i) { - // filesystem is case sensitive - self::$caseCheck = 0; - } elseif (substr($test, -\strlen($file)) === $file) { - // filesystem is case insensitive and realpath() normalizes the case of characters - self::$caseCheck = 1; - } elseif (false !== stripos(\PHP_OS, 'darwin')) { - // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters - self::$caseCheck = 2; - } else { - // filesystem case checks failed, fallback to disabling them - self::$caseCheck = 0; - } - } - } - - /** - * Gets the wrapped class loader. - * - * @return callable The wrapped class loader - */ - public function getClassLoader() - { - return $this->classLoader; - } - - /** - * Wraps all autoloaders. - */ - public static function enable() - { - // Ensures we don't hit https://bugs.php.net/42098 - class_exists(\Symfony\Component\Debug\ErrorHandler::class); - class_exists(\Psr\Log\LogLevel::class); - - if (!\is_array($functions = spl_autoload_functions())) { - return; - } - - foreach ($functions as $function) { - spl_autoload_unregister($function); - } - - foreach ($functions as $function) { - if (!\is_array($function) || !$function[0] instanceof self) { - $function = [new static($function), 'loadClass']; - } - - spl_autoload_register($function); - } - } - - /** - * Disables the wrapping. - */ - public static function disable() - { - if (!\is_array($functions = spl_autoload_functions())) { - return; - } - - foreach ($functions as $function) { - spl_autoload_unregister($function); - } - - foreach ($functions as $function) { - if (\is_array($function) && $function[0] instanceof self) { - $function = $function[0]->getClassLoader(); - } - - spl_autoload_register($function); - } - } - - /** - * @return string|null - */ - public function findFile($class) - { - return $this->isFinder ? $this->classLoader[0]->findFile($class) ?: null : null; - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * - * @throws \RuntimeException - */ - public function loadClass($class) - { - $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR); - - try { - if ($this->isFinder && !isset($this->loaded[$class])) { - $this->loaded[$class] = true; - if (!$file = $this->classLoader[0]->findFile($class) ?: false) { - // no-op - } elseif (\function_exists('opcache_is_script_cached') && @opcache_is_script_cached($file)) { - include $file; - - return; - } elseif (false === include $file) { - return; - } - } else { - ($this->classLoader)($class); - $file = false; - } - } finally { - error_reporting($e); - } - - $this->checkClass($class, $file); - } - - private function checkClass(string $class, string $file = null) - { - $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false); - - if (null !== $file && $class && '\\' === $class[0]) { - $class = substr($class, 1); - } - - if ($exists) { - if (isset(self::$checkedClasses[$class])) { - return; - } - self::$checkedClasses[$class] = true; - - $refl = new \ReflectionClass($class); - if (null === $file && $refl->isInternal()) { - return; - } - $name = $refl->getName(); - - if ($name !== $class && 0 === strcasecmp($name, $class)) { - throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: "%s" vs "%s".', $class, $name)); - } - - $deprecations = $this->checkAnnotations($refl, $name); - - foreach ($deprecations as $message) { - @trigger_error($message, \E_USER_DEPRECATED); - } - } - - if (!$file) { - return; - } - - if (!$exists) { - if (false !== strpos($class, '/')) { - throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class)); - } - - throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file)); - } - - if (self::$caseCheck && $message = $this->checkCase($refl, $file, $class)) { - throw new \RuntimeException(sprintf('Case mismatch between class and real file names: "%s" vs "%s" in "%s".', $message[0], $message[1], $message[2])); - } - } - - public function checkAnnotations(\ReflectionClass $refl, $class) - { - $deprecations = []; - - // Don't trigger deprecations for classes in the same vendor - if (2 > $len = 1 + (strpos($class, '\\') ?: strpos($class, '_'))) { - $len = 0; - $ns = ''; - } else { - $ns = str_replace('_', '\\', substr($class, 0, $len)); - } - - // Detect annotations on the class - if (false !== $doc = $refl->getDocComment()) { - foreach (['final', 'deprecated', 'internal'] as $annotation) { - if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) { - self::${$annotation}[$class] = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : ''; - } - } - - if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) { - foreach ($notice as $method) { - $static = '' !== $method[1]; - $name = $method[2]; - $description = $method[3] ?? null; - if (false === strpos($name, '(')) { - $name .= '()'; - } - if (null !== $description) { - $description = trim($description); - if (!isset($method[4])) { - $description .= '.'; - } - } - self::$method[$class][] = [$class, $name, $static, $description]; - } - } - } - - $parent = get_parent_class($class); - $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent ?: null); - if ($parent) { - $parentAndOwnInterfaces[$parent] = $parent; - - if (!isset(self::$checkedClasses[$parent])) { - $this->checkClass($parent); - } - - if (isset(self::$final[$parent])) { - $deprecations[] = sprintf('The "%s" class is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $class); - } - } - - // Detect if the parent is annotated - foreach ($parentAndOwnInterfaces + class_uses($class, false) as $use) { - if (!isset(self::$checkedClasses[$use])) { - $this->checkClass($use); - } - if (isset(self::$deprecated[$use]) && strncmp($ns, str_replace('_', '\\', $use), $len) && !isset(self::$deprecated[$class])) { - $type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait'); - $verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses'); - - $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s.', $class, $type, $verb, $use, self::$deprecated[$use]); - } - if (isset(self::$internal[$use]) && strncmp($ns, str_replace('_', '\\', $use), $len)) { - $deprecations[] = sprintf('The "%s" %s is considered internal%s. It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $class); - } - if (isset(self::$method[$use])) { - if ($refl->isAbstract()) { - if (isset(self::$method[$class])) { - self::$method[$class] = array_merge(self::$method[$class], self::$method[$use]); - } else { - self::$method[$class] = self::$method[$use]; - } - } elseif (!$refl->isInterface()) { - $hasCall = $refl->hasMethod('__call'); - $hasStaticCall = $refl->hasMethod('__callStatic'); - foreach (self::$method[$use] as $method) { - [$interface, $name, $static, $description] = $method; - if ($static ? $hasStaticCall : $hasCall) { - continue; - } - $realName = substr($name, 0, strpos($name, '(')); - if (!$refl->hasMethod($realName) || !($methodRefl = $refl->getMethod($realName))->isPublic() || ($static && !$methodRefl->isStatic()) || (!$static && $methodRefl->isStatic())) { - $deprecations[] = sprintf('Class "%s" should implement method "%s::%s"%s', $class, ($static ? 'static ' : '').$interface, $name, null == $description ? '.' : ': '.$description); - } - } - } - } - } - - if (trait_exists($class)) { - return $deprecations; - } - - // Inherit @final, @internal and @param annotations for methods - self::$finalMethods[$class] = []; - self::$internalMethods[$class] = []; - self::$annotatedParameters[$class] = []; - foreach ($parentAndOwnInterfaces as $use) { - foreach (['finalMethods', 'internalMethods', 'annotatedParameters'] as $property) { - if (isset(self::${$property}[$use])) { - self::${$property}[$class] = self::${$property}[$class] ? self::${$property}[$use] + self::${$property}[$class] : self::${$property}[$use]; - } - } - } - - foreach ($refl->getMethods(\ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED) as $method) { - if ($method->class !== $class) { - continue; - } - - if ($parent && isset(self::$finalMethods[$parent][$method->name])) { - [$declaringClass, $message] = self::$finalMethods[$parent][$method->name]; - $deprecations[] = sprintf('The "%s::%s()" method is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $class); - } - - if (isset(self::$internalMethods[$class][$method->name])) { - [$declaringClass, $message] = self::$internalMethods[$class][$method->name]; - if (strncmp($ns, $declaringClass, $len)) { - $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s. It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $class); - } - } - - // To read method annotations - $doc = $method->getDocComment(); - - if (isset(self::$annotatedParameters[$class][$method->name])) { - $definedParameters = []; - foreach ($method->getParameters() as $parameter) { - $definedParameters[$parameter->name] = true; - } - - foreach (self::$annotatedParameters[$class][$method->name] as $parameterName => $deprecation) { - if (!isset($definedParameters[$parameterName]) && !($doc && preg_match("/\\n\\s+\\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\\\${$parameterName}\\b/", $doc))) { - $deprecations[] = sprintf($deprecation, $class); - } - } - } - - if (!$doc) { - continue; - } - - $finalOrInternal = false; - - foreach (['final', 'internal'] as $annotation) { - if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) { - $message = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : ''; - self::${$annotation.'Methods'}[$class][$method->name] = [$class, $message]; - $finalOrInternal = true; - } - } - - if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) { - continue; - } - if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) { - continue; - } - if (!isset(self::$annotatedParameters[$class][$method->name])) { - $definedParameters = []; - foreach ($method->getParameters() as $parameter) { - $definedParameters[$parameter->name] = true; - } - } - foreach ($matches as [, $parameterType, $parameterName]) { - if (!isset($definedParameters[$parameterName])) { - $parameterType = trim($parameterType); - self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($class) ? 'interface' : 'parent class', $method->class); - } - } - } - - return $deprecations; - } - - /** - * @param string $file - * @param string $class - * - * @return array|null - */ - public function checkCase(\ReflectionClass $refl, $file, $class) - { - $real = explode('\\', $class.strrchr($file, '.')); - $tail = explode(\DIRECTORY_SEPARATOR, str_replace('/', \DIRECTORY_SEPARATOR, $file)); - - $i = \count($tail) - 1; - $j = \count($real) - 1; - - while (isset($tail[$i], $real[$j]) && $tail[$i] === $real[$j]) { - --$i; - --$j; - } - - array_splice($tail, 0, $i + 1); - - if (!$tail) { - return null; - } - - $tail = \DIRECTORY_SEPARATOR.implode(\DIRECTORY_SEPARATOR, $tail); - $tailLen = \strlen($tail); - $real = $refl->getFileName(); - - if (2 === self::$caseCheck) { - $real = $this->darwinRealpath($real); - } - - if (0 === substr_compare($real, $tail, -$tailLen, $tailLen, true) - && 0 !== substr_compare($real, $tail, -$tailLen, $tailLen, false) - ) { - return [substr($tail, -$tailLen + 1), substr($real, -$tailLen + 1), substr($real, 0, -$tailLen + 1)]; - } - - return null; - } - - /** - * `realpath` on MacOSX doesn't normalize the case of characters. - */ - private function darwinRealpath(string $real): string - { - $i = 1 + strrpos($real, '/'); - $file = substr($real, $i); - $real = substr($real, 0, $i); - - if (isset(self::$darwinCache[$real])) { - $kDir = $real; - } else { - $kDir = strtolower($real); - - if (isset(self::$darwinCache[$kDir])) { - $real = self::$darwinCache[$kDir][0]; - } else { - $dir = getcwd(); - - if (!@chdir($real)) { - return $real.$file; - } - - $real = getcwd().'/'; - chdir($dir); - - $dir = $real; - $k = $kDir; - $i = \strlen($dir) - 1; - while (!isset(self::$darwinCache[$k])) { - self::$darwinCache[$k] = [$dir, []]; - self::$darwinCache[$dir] = &self::$darwinCache[$k]; - - while ('/' !== $dir[--$i]) { - } - $k = substr($k, 0, ++$i); - $dir = substr($dir, 0, $i--); - } - } - } - - $dirFiles = self::$darwinCache[$kDir][1]; - - if (!isset($dirFiles[$file]) && ') : eval()\'d code' === substr($file, -17)) { - // Get the file name from "file_name.php(123) : eval()'d code" - $file = substr($file, 0, strrpos($file, '(', -17)); - } - - if (isset($dirFiles[$file])) { - return $real.$dirFiles[$file]; - } - - $kFile = strtolower($file); - - if (!isset($dirFiles[$kFile])) { - foreach (scandir($real, 2) as $f) { - if ('.' !== $f[0]) { - $dirFiles[$f] = $f; - if ($f === $file) { - $kFile = $k = $file; - } elseif ($f !== $k = strtolower($f)) { - $dirFiles[$k] = $f; - } - } - } - self::$darwinCache[$kDir][1] = $dirFiles; - } - - return $real.$dirFiles[$kFile]; - } - - /** - * `class_implements` includes interfaces from the parents so we have to manually exclude them. - * - * @return string[] - */ - private function getOwnInterfaces(string $class, ?string $parent): array - { - $ownInterfaces = class_implements($class, false); - - if ($parent) { - foreach (class_implements($parent, false) as $interface) { - unset($ownInterfaces[$interface]); - } - } - - foreach ($ownInterfaces as $interface) { - foreach (class_implements($interface) as $interface) { - unset($ownInterfaces[$interface]); - } - } - - return $ownInterfaces; - } -} diff --git a/vendor/symfony/debug/ErrorHandler.php b/vendor/symfony/debug/ErrorHandler.php deleted file mode 100644 index fe425e05c..000000000 --- a/vendor/symfony/debug/ErrorHandler.php +++ /dev/null @@ -1,709 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\Exception\FatalThrowableError; -use Symfony\Component\Debug\Exception\FlattenException; -use Symfony\Component\Debug\Exception\OutOfMemoryException; -use Symfony\Component\Debug\Exception\SilencedErrorContext; -use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler; -use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface; -use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler; -use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED); - -/** - * A generic ErrorHandler for the PHP engine. - * - * Provides five bit fields that control how errors are handled: - * - thrownErrors: errors thrown as \ErrorException - * - loggedErrors: logged errors, when not @-silenced - * - scopedErrors: errors thrown or logged with their local context - * - tracedErrors: errors logged with their stack trace - * - screamedErrors: never @-silenced errors - * - * Each error level can be logged by a dedicated PSR-3 logger object. - * Screaming only applies to logging. - * Throwing takes precedence over logging. - * Uncaught exceptions are logged as E_ERROR. - * E_DEPRECATED and E_USER_DEPRECATED levels never throw. - * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw. - * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so. - * As errors have a performance cost, repeated errors are all logged, so that the developer - * can see them and weight them as more important to fix than others of the same level. - * - * @author Nicolas Grekas <p@tchwork.com> - * @author Grégoire Pineau <lyrixx@lyrixx.info> - * - * @final since Symfony 4.3 - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead. - */ -class ErrorHandler -{ - private $levels = [ - \E_DEPRECATED => 'Deprecated', - \E_USER_DEPRECATED => 'User Deprecated', - \E_NOTICE => 'Notice', - \E_USER_NOTICE => 'User Notice', - \E_STRICT => 'Runtime Notice', - \E_WARNING => 'Warning', - \E_USER_WARNING => 'User Warning', - \E_COMPILE_WARNING => 'Compile Warning', - \E_CORE_WARNING => 'Core Warning', - \E_USER_ERROR => 'User Error', - \E_RECOVERABLE_ERROR => 'Catchable Fatal Error', - \E_COMPILE_ERROR => 'Compile Error', - \E_PARSE => 'Parse Error', - \E_ERROR => 'Error', - \E_CORE_ERROR => 'Core Error', - ]; - - private $loggers = [ - \E_DEPRECATED => [null, LogLevel::INFO], - \E_USER_DEPRECATED => [null, LogLevel::INFO], - \E_NOTICE => [null, LogLevel::WARNING], - \E_USER_NOTICE => [null, LogLevel::WARNING], - \E_STRICT => [null, LogLevel::WARNING], - \E_WARNING => [null, LogLevel::WARNING], - \E_USER_WARNING => [null, LogLevel::WARNING], - \E_COMPILE_WARNING => [null, LogLevel::WARNING], - \E_CORE_WARNING => [null, LogLevel::WARNING], - \E_USER_ERROR => [null, LogLevel::CRITICAL], - \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL], - \E_COMPILE_ERROR => [null, LogLevel::CRITICAL], - \E_PARSE => [null, LogLevel::CRITICAL], - \E_ERROR => [null, LogLevel::CRITICAL], - \E_CORE_ERROR => [null, LogLevel::CRITICAL], - ]; - - private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE - private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE - private $loggedErrors = 0; - private $traceReflector; - - private $isRecursive = 0; - private $isRoot = false; - private $exceptionHandler; - private $bootstrappingLogger; - - private static $reservedMemory; - private static $toStringException = null; - private static $silencedErrorCache = []; - private static $silencedErrorCount = 0; - private static $exitCode = 0; - - /** - * Registers the error handler. - * - * @param self|null $handler The handler to register - * @param bool $replace Whether to replace or not any existing handler - * - * @return self The registered error handler - */ - public static function register(self $handler = null, $replace = true) - { - if (null === self::$reservedMemory) { - self::$reservedMemory = str_repeat('x', 32768); - register_shutdown_function(__CLASS__.'::handleFatalError'); - } - - if ($handlerIsNew = null === $handler) { - $handler = new static(); - } - - if (null === $prev = set_error_handler([$handler, 'handleError'])) { - restore_error_handler(); - // Specifying the error types earlier would expose us to https://bugs.php.net/63206 - set_error_handler([$handler, 'handleError'], $handler->thrownErrors | $handler->loggedErrors); - $handler->isRoot = true; - } - - if ($handlerIsNew && \is_array($prev) && $prev[0] instanceof self) { - $handler = $prev[0]; - $replace = false; - } - if (!$replace && $prev) { - restore_error_handler(); - $handlerIsRegistered = \is_array($prev) && $handler === $prev[0]; - } else { - $handlerIsRegistered = true; - } - if (\is_array($prev = set_exception_handler([$handler, 'handleException'])) && $prev[0] instanceof self) { - restore_exception_handler(); - if (!$handlerIsRegistered) { - $handler = $prev[0]; - } elseif ($handler !== $prev[0] && $replace) { - set_exception_handler([$handler, 'handleException']); - $p = $prev[0]->setExceptionHandler(null); - $handler->setExceptionHandler($p); - $prev[0]->setExceptionHandler($p); - } - } else { - $handler->setExceptionHandler($prev); - } - - $handler->throwAt(\E_ALL & $handler->thrownErrors, true); - - return $handler; - } - - public function __construct(BufferingLogger $bootstrappingLogger = null) - { - if ($bootstrappingLogger) { - $this->bootstrappingLogger = $bootstrappingLogger; - $this->setDefaultLogger($bootstrappingLogger); - } - $this->traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); - $this->traceReflector->setAccessible(true); - } - - /** - * Sets a logger to non assigned errors levels. - * - * @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants - * @param bool $replace Whether to replace or not any existing logger - */ - public function setDefaultLogger(LoggerInterface $logger, $levels = \E_ALL, $replace = false) - { - $loggers = []; - - if (\is_array($levels)) { - foreach ($levels as $type => $logLevel) { - if (empty($this->loggers[$type][0]) || $replace || $this->loggers[$type][0] === $this->bootstrappingLogger) { - $loggers[$type] = [$logger, $logLevel]; - } - } - } else { - if (null === $levels) { - $levels = \E_ALL; - } - foreach ($this->loggers as $type => $log) { - if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) { - $log[0] = $logger; - $loggers[$type] = $log; - } - } - } - - $this->setLoggers($loggers); - } - - /** - * Sets a logger for each error level. - * - * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map - * - * @return array The previous map - * - * @throws \InvalidArgumentException - */ - public function setLoggers(array $loggers) - { - $prevLogged = $this->loggedErrors; - $prev = $this->loggers; - $flush = []; - - foreach ($loggers as $type => $log) { - if (!isset($prev[$type])) { - throw new \InvalidArgumentException('Unknown error type: '.$type); - } - if (!\is_array($log)) { - $log = [$log]; - } elseif (!\array_key_exists(0, $log)) { - throw new \InvalidArgumentException('No logger provided.'); - } - if (null === $log[0]) { - $this->loggedErrors &= ~$type; - } elseif ($log[0] instanceof LoggerInterface) { - $this->loggedErrors |= $type; - } else { - throw new \InvalidArgumentException('Invalid logger provided.'); - } - $this->loggers[$type] = $log + $prev[$type]; - - if ($this->bootstrappingLogger && $prev[$type][0] === $this->bootstrappingLogger) { - $flush[$type] = $type; - } - } - $this->reRegister($prevLogged | $this->thrownErrors); - - if ($flush) { - foreach ($this->bootstrappingLogger->cleanLogs() as $log) { - $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : \E_ERROR; - if (!isset($flush[$type])) { - $this->bootstrappingLogger->log($log[0], $log[1], $log[2]); - } elseif ($this->loggers[$type][0]) { - $this->loggers[$type][0]->log($this->loggers[$type][1], $log[1], $log[2]); - } - } - } - - return $prev; - } - - /** - * Sets a user exception handler. - * - * @param callable $handler A handler that will be called on Exception - * - * @return callable|null The previous exception handler - */ - public function setExceptionHandler(callable $handler = null) - { - $prev = $this->exceptionHandler; - $this->exceptionHandler = $handler; - - return $prev; - } - - /** - * Sets the PHP error levels that throw an exception when a PHP error occurs. - * - * @param int $levels A bit field of E_* constants for thrown errors - * @param bool $replace Replace or amend the previous value - * - * @return int The previous value - */ - public function throwAt($levels, $replace = false) - { - $prev = $this->thrownErrors; - $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED; - if (!$replace) { - $this->thrownErrors |= $prev; - } - $this->reRegister($prev | $this->loggedErrors); - - return $prev; - } - - /** - * Sets the PHP error levels for which local variables are preserved. - * - * @param int $levels A bit field of E_* constants for scoped errors - * @param bool $replace Replace or amend the previous value - * - * @return int The previous value - */ - public function scopeAt($levels, $replace = false) - { - $prev = $this->scopedErrors; - $this->scopedErrors = (int) $levels; - if (!$replace) { - $this->scopedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the PHP error levels for which the stack trace is preserved. - * - * @param int $levels A bit field of E_* constants for traced errors - * @param bool $replace Replace or amend the previous value - * - * @return int The previous value - */ - public function traceAt($levels, $replace = false) - { - $prev = $this->tracedErrors; - $this->tracedErrors = (int) $levels; - if (!$replace) { - $this->tracedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the error levels where the @-operator is ignored. - * - * @param int $levels A bit field of E_* constants for screamed errors - * @param bool $replace Replace or amend the previous value - * - * @return int The previous value - */ - public function screamAt($levels, $replace = false) - { - $prev = $this->screamedErrors; - $this->screamedErrors = (int) $levels; - if (!$replace) { - $this->screamedErrors |= $prev; - } - - return $prev; - } - - /** - * Re-registers as a PHP error handler if levels changed. - */ - private function reRegister(int $prev) - { - if ($prev !== ($this->thrownErrors | $this->loggedErrors)) { - $handler = set_error_handler('is_int'); - $handler = \is_array($handler) ? $handler[0] : null; - restore_error_handler(); - if ($handler === $this) { - restore_error_handler(); - if ($this->isRoot) { - set_error_handler([$this, 'handleError'], $this->thrownErrors | $this->loggedErrors); - } else { - set_error_handler([$this, 'handleError']); - } - } - } - } - - /** - * Handles errors by filtering then logging them according to the configured bit fields. - * - * @param int $type One of the E_* constants - * @param string $message - * @param string $file - * @param int $line - * - * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself - * - * @throws \ErrorException When $this->thrownErrors requests so - * - * @internal - */ - public function handleError($type, $message, $file, $line) - { - if (\PHP_VERSION_ID >= 70300 && \E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) { - $type = \E_DEPRECATED; - } - - // Level is the current error reporting level to manage silent error. - $level = error_reporting(); - $silenced = 0 === ($level & $type); - // Strong errors are not authorized to be silenced. - $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED; - $log = $this->loggedErrors & $type; - $throw = $this->thrownErrors & $type & $level; - $type &= $level | $this->screamedErrors; - - if (!$type || (!$log && !$throw)) { - return !$silenced && $type && $log; - } - $scope = $this->scopedErrors & $type; - - if (false !== strpos($message, "@anonymous\0")) { - $logMessage = $this->levels[$type].': '.(new FlattenException())->setMessage($message)->getMessage(); - } else { - $logMessage = $this->levels[$type].': '.$message; - } - - if (null !== self::$toStringException) { - $errorAsException = self::$toStringException; - self::$toStringException = null; - } elseif (!$throw && !($type & $level)) { - if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) { - $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : []; - $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace); - } elseif (isset(self::$silencedErrorCache[$id][$message])) { - $lightTrace = null; - $errorAsException = self::$silencedErrorCache[$id][$message]; - ++$errorAsException->count; - } else { - $lightTrace = []; - $errorAsException = null; - } - - if (100 < ++self::$silencedErrorCount) { - self::$silencedErrorCache = $lightTrace = []; - self::$silencedErrorCount = 1; - } - if ($errorAsException) { - self::$silencedErrorCache[$id][$message] = $errorAsException; - } - if (null === $lightTrace) { - return true; - } - } else { - $errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line); - - if ($throw || $this->tracedErrors & $type) { - $backtrace = $errorAsException->getTrace(); - $lightTrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw); - $this->traceReflector->setValue($errorAsException, $lightTrace); - } else { - $this->traceReflector->setValue($errorAsException, []); - $backtrace = []; - } - } - - if ($throw) { - if (\PHP_VERSION_ID < 70400 && \E_USER_ERROR & $type) { - for ($i = 1; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function']) - && '__toString' === $backtrace[$i]['function'] - && '->' === $backtrace[$i]['type'] - && !isset($backtrace[$i - 1]['class']) - && ('trigger_error' === $backtrace[$i - 1]['function'] || 'user_error' === $backtrace[$i - 1]['function']) - ) { - // Here, we know trigger_error() has been called from __toString(). - // PHP triggers a fatal error when throwing from __toString(). - // A small convention allows working around the limitation: - // given a caught $e exception in __toString(), quitting the method with - // `return trigger_error($e, E_USER_ERROR);` allows this error handler - // to make $e get through the __toString() barrier. - - $context = 4 < \func_num_args() ? (func_get_arg(4) ?: []) : []; - - foreach ($context as $e) { - if ($e instanceof \Throwable && $e->__toString() === $message) { - self::$toStringException = $e; - - return true; - } - } - - // Display the original error message instead of the default one. - $this->handleException($errorAsException); - - // Stop the process by giving back the error to the native handler. - return false; - } - } - } - - throw $errorAsException; - } - - if ($this->isRecursive) { - $log = 0; - } else { - if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) { - $currentErrorHandler = set_error_handler('is_int'); - restore_error_handler(); - } - - try { - $this->isRecursive = true; - $level = ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG; - $this->loggers[$type][0]->log($level, $logMessage, $errorAsException ? ['exception' => $errorAsException] : []); - } finally { - $this->isRecursive = false; - - if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) { - set_error_handler($currentErrorHandler); - } - } - } - - return !$silenced && $type && $log; - } - - /** - * Handles an exception by logging then forwarding it to another handler. - * - * @param \Exception|\Throwable $exception An exception to handle - * @param array $error An array as returned by error_get_last() - * - * @internal - */ - public function handleException($exception, array $error = null) - { - if (null === $error) { - self::$exitCode = 255; - } - if (!$exception instanceof \Exception) { - $exception = new FatalThrowableError($exception); - } - $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : \E_ERROR; - $handlerException = null; - - if (($this->loggedErrors & $type) || $exception instanceof FatalThrowableError) { - if (false !== strpos($message = $exception->getMessage(), "@anonymous\0")) { - $message = (new FlattenException())->setMessage($message)->getMessage(); - } - if ($exception instanceof FatalErrorException) { - if ($exception instanceof FatalThrowableError) { - $error = [ - 'type' => $type, - 'message' => $message, - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - ]; - } else { - $message = 'Fatal '.$message; - } - } elseif ($exception instanceof \ErrorException) { - $message = 'Uncaught '.$message; - } else { - $message = 'Uncaught Exception: '.$message; - } - } - if ($this->loggedErrors & $type) { - try { - $this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]); - } catch (\Throwable $handlerException) { - } - } - if ($exception instanceof FatalErrorException && !$exception instanceof OutOfMemoryException && $error) { - foreach ($this->getFatalErrorHandlers() as $handler) { - if ($e = $handler->handleError($error, $exception)) { - $exception = $e; - break; - } - } - } - $exceptionHandler = $this->exceptionHandler; - $this->exceptionHandler = null; - try { - if (null !== $exceptionHandler) { - $exceptionHandler($exception); - - return; - } - $handlerException = $handlerException ?: $exception; - } catch (\Throwable $handlerException) { - } - if ($exception === $handlerException) { - self::$reservedMemory = null; // Disable the fatal error handler - throw $exception; // Give back $exception to the native handler - } - $this->handleException($handlerException); - } - - /** - * Shutdown registered function for handling PHP fatal errors. - * - * @param array $error An array as returned by error_get_last() - * - * @internal - */ - public static function handleFatalError(array $error = null) - { - if (null === self::$reservedMemory) { - return; - } - - $handler = self::$reservedMemory = null; - $handlers = []; - $previousHandler = null; - $sameHandlerLimit = 10; - - while (!\is_array($handler) || !$handler[0] instanceof self) { - $handler = set_exception_handler('is_int'); - restore_exception_handler(); - - if (!$handler) { - break; - } - restore_exception_handler(); - - if ($handler !== $previousHandler) { - array_unshift($handlers, $handler); - $previousHandler = $handler; - } elseif (0 === --$sameHandlerLimit) { - $handler = null; - break; - } - } - foreach ($handlers as $h) { - set_exception_handler($h); - } - if (!$handler) { - return; - } - if ($handler !== $h) { - $handler[0]->setExceptionHandler($h); - } - $handler = $handler[0]; - $handlers = []; - - if ($exit = null === $error) { - $error = error_get_last(); - } - - if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) { - // Let's not throw anymore but keep logging - $handler->throwAt(0, true); - $trace = $error['backtrace'] ?? null; - - if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) { - $exception = new OutOfMemoryException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, false, $trace); - } else { - $exception = new FatalErrorException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, true, $trace); - } - } else { - $exception = null; - } - - try { - if (null !== $exception) { - self::$exitCode = 255; - $handler->handleException($exception, $error); - } - } catch (FatalErrorException $e) { - // Ignore this re-throw - } - - if ($exit && self::$exitCode) { - $exitCode = self::$exitCode; - register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); }); - } - } - - /** - * Gets the fatal error handlers. - * - * Override this method if you want to define more fatal error handlers. - * - * @return FatalErrorHandlerInterface[] An array of FatalErrorHandlerInterface - */ - protected function getFatalErrorHandlers() - { - return [ - new UndefinedFunctionFatalErrorHandler(), - new UndefinedMethodFatalErrorHandler(), - new ClassNotFoundFatalErrorHandler(), - ]; - } - - /** - * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader. - */ - private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array - { - $lightTrace = $backtrace; - - for ($i = 0; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) { - $lightTrace = \array_slice($lightTrace, 1 + $i); - break; - } - } - if (class_exists(DebugClassLoader::class, false)) { - for ($i = \count($lightTrace) - 2; 0 < $i; --$i) { - if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) { - array_splice($lightTrace, --$i, 2); - } - } - } - if (!($throw || $this->scopedErrors & $type)) { - for ($i = 0; isset($lightTrace[$i]); ++$i) { - unset($lightTrace[$i]['args'], $lightTrace[$i]['object']); - } - } - - return $lightTrace; - } -} diff --git a/vendor/symfony/debug/Exception/ClassNotFoundException.php b/vendor/symfony/debug/Exception/ClassNotFoundException.php deleted file mode 100644 index 998e4a98b..000000000 --- a/vendor/symfony/debug/Exception/ClassNotFoundException.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundException::class, \Symfony\Component\ErrorHandler\Error\ClassNotFoundError::class), \E_USER_DEPRECATED); - -/** - * Class (or Trait or Interface) Not Found Exception. - * - * @author Konstanton Myakshin <koc-dp@yandex.ru> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\ClassNotFoundError instead. - */ -class ClassNotFoundException extends FatalErrorException -{ - public function __construct(string $message, \ErrorException $previous) - { - parent::__construct( - $message, - $previous->getCode(), - $previous->getSeverity(), - $previous->getFile(), - $previous->getLine(), - null, - true, - null, - $previous->getPrevious() - ); - $this->setTrace($previous->getTrace()); - } -} diff --git a/vendor/symfony/debug/Exception/FatalErrorException.php b/vendor/symfony/debug/Exception/FatalErrorException.php deleted file mode 100644 index fbdad4c56..000000000 --- a/vendor/symfony/debug/Exception/FatalErrorException.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorException::class, \Symfony\Component\ErrorHandler\Error\FatalError::class), \E_USER_DEPRECATED); - -/** - * Fatal Error Exception. - * - * @author Konstanton Myakshin <koc-dp@yandex.ru> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\FatalError instead. - */ -class FatalErrorException extends \ErrorException -{ - public function __construct(string $message, int $code, int $severity, string $filename, int $lineno, int $traceOffset = null, bool $traceArgs = true, array $trace = null, \Throwable $previous = null) - { - parent::__construct($message, $code, $severity, $filename, $lineno, $previous); - - if (null !== $trace) { - if (!$traceArgs) { - foreach ($trace as &$frame) { - unset($frame['args'], $frame['this'], $frame); - } - } - - $this->setTrace($trace); - } elseif (null !== $traceOffset) { - if (\function_exists('xdebug_get_function_stack') && $trace = @xdebug_get_function_stack()) { - if (0 < $traceOffset) { - array_splice($trace, -$traceOffset); - } - - foreach ($trace as &$frame) { - if (!isset($frame['type'])) { - // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695 - if (isset($frame['class'])) { - $frame['type'] = '::'; - } - } elseif ('dynamic' === $frame['type']) { - $frame['type'] = '->'; - } elseif ('static' === $frame['type']) { - $frame['type'] = '::'; - } - - // XDebug also has a different name for the parameters array - if (!$traceArgs) { - unset($frame['params'], $frame['args']); - } elseif (isset($frame['params']) && !isset($frame['args'])) { - $frame['args'] = $frame['params']; - unset($frame['params']); - } - } - - unset($frame); - $trace = array_reverse($trace); - } else { - $trace = []; - } - - $this->setTrace($trace); - } - } - - protected function setTrace($trace) - { - $traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); - $traceReflector->setAccessible(true); - $traceReflector->setValue($this, $trace); - } -} diff --git a/vendor/symfony/debug/Exception/FatalThrowableError.php b/vendor/symfony/debug/Exception/FatalThrowableError.php deleted file mode 100644 index 6c9ecb853..000000000 --- a/vendor/symfony/debug/Exception/FatalThrowableError.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4.', FatalThrowableError::class), \E_USER_DEPRECATED); - -/** - * Fatal Throwable Error. - * - * @author Nicolas Grekas <p@tchwork.com> - * - * @deprecated since Symfony 4.4 - */ -class FatalThrowableError extends FatalErrorException -{ - private $originalClassName; - - public function __construct(\Throwable $e) - { - $this->originalClassName = \get_class($e); - - if ($e instanceof \ParseError) { - $severity = \E_PARSE; - } elseif ($e instanceof \TypeError) { - $severity = \E_RECOVERABLE_ERROR; - } else { - $severity = \E_ERROR; - } - - \ErrorException::__construct( - $e->getMessage(), - $e->getCode(), - $severity, - $e->getFile(), - $e->getLine(), - $e->getPrevious() - ); - - $this->setTrace($e->getTrace()); - } - - public function getOriginalClassName(): string - { - return $this->originalClassName; - } -} diff --git a/vendor/symfony/debug/Exception/FlattenException.php b/vendor/symfony/debug/Exception/FlattenException.php deleted file mode 100644 index dbf0ed8ff..000000000 --- a/vendor/symfony/debug/Exception/FlattenException.php +++ /dev/null @@ -1,367 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; - -/** - * FlattenException wraps a PHP Error or Exception to be able to serialize it. - * - * Basically, this class removes all objects from the trace. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\FlattenException instead. - */ -class FlattenException -{ - private $message; - private $code; - private $previous; - private $trace; - private $traceAsString; - private $class; - private $statusCode; - private $headers; - private $file; - private $line; - - /** - * @return static - */ - public static function create(\Exception $exception, $statusCode = null, array $headers = []) - { - return static::createFromThrowable($exception, $statusCode, $headers); - } - - /** - * @return static - */ - public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = []) - { - $e = new static(); - $e->setMessage($exception->getMessage()); - $e->setCode($exception->getCode()); - - if ($exception instanceof HttpExceptionInterface) { - $statusCode = $exception->getStatusCode(); - $headers = array_merge($headers, $exception->getHeaders()); - } elseif ($exception instanceof RequestExceptionInterface) { - $statusCode = 400; - } - - if (null === $statusCode) { - $statusCode = 500; - } - - $e->setStatusCode($statusCode); - $e->setHeaders($headers); - $e->setTraceFromThrowable($exception); - $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : \get_class($exception)); - $e->setFile($exception->getFile()); - $e->setLine($exception->getLine()); - - $previous = $exception->getPrevious(); - - if ($previous instanceof \Throwable) { - $e->setPrevious(static::createFromThrowable($previous)); - } - - return $e; - } - - public function toArray() - { - $exceptions = []; - foreach (array_merge([$this], $this->getAllPrevious()) as $exception) { - $exceptions[] = [ - 'message' => $exception->getMessage(), - 'class' => $exception->getClass(), - 'trace' => $exception->getTrace(), - ]; - } - - return $exceptions; - } - - public function getStatusCode() - { - return $this->statusCode; - } - - /** - * @return $this - */ - public function setStatusCode($code) - { - $this->statusCode = $code; - - return $this; - } - - public function getHeaders() - { - return $this->headers; - } - - /** - * @return $this - */ - public function setHeaders(array $headers) - { - $this->headers = $headers; - - return $this; - } - - public function getClass() - { - return $this->class; - } - - /** - * @return $this - */ - public function setClass($class) - { - $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class; - - return $this; - } - - public function getFile() - { - return $this->file; - } - - /** - * @return $this - */ - public function setFile($file) - { - $this->file = $file; - - return $this; - } - - public function getLine() - { - return $this->line; - } - - /** - * @return $this - */ - public function setLine($line) - { - $this->line = $line; - - return $this; - } - - public function getMessage() - { - return $this->message; - } - - /** - * @return $this - */ - public function setMessage($message) - { - if (false !== strpos($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { - return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; - }, $message); - } - - $this->message = $message; - - return $this; - } - - public function getCode() - { - return $this->code; - } - - /** - * @return $this - */ - public function setCode($code) - { - $this->code = $code; - - return $this; - } - - public function getPrevious() - { - return $this->previous; - } - - /** - * @return $this - */ - public function setPrevious(self $previous) - { - $this->previous = $previous; - - return $this; - } - - public function getAllPrevious() - { - $exceptions = []; - $e = $this; - while ($e = $e->getPrevious()) { - $exceptions[] = $e; - } - - return $exceptions; - } - - public function getTrace() - { - return $this->trace; - } - - /** - * @deprecated since 4.1, use {@see setTraceFromThrowable()} instead. - */ - public function setTraceFromException(\Exception $exception) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED); - - $this->setTraceFromThrowable($exception); - } - - public function setTraceFromThrowable(\Throwable $throwable) - { - $this->traceAsString = $throwable->getTraceAsString(); - - return $this->setTrace($throwable->getTrace(), $throwable->getFile(), $throwable->getLine()); - } - - /** - * @return $this - */ - public function setTrace($trace, $file, $line) - { - $this->trace = []; - $this->trace[] = [ - 'namespace' => '', - 'short_class' => '', - 'class' => '', - 'type' => '', - 'function' => '', - 'file' => $file, - 'line' => $line, - 'args' => [], - ]; - foreach ($trace as $entry) { - $class = ''; - $namespace = ''; - if (isset($entry['class'])) { - $parts = explode('\\', $entry['class']); - $class = array_pop($parts); - $namespace = implode('\\', $parts); - } - - $this->trace[] = [ - 'namespace' => $namespace, - 'short_class' => $class, - 'class' => $entry['class'] ?? '', - 'type' => $entry['type'] ?? '', - 'function' => $entry['function'] ?? null, - 'file' => $entry['file'] ?? null, - 'line' => $entry['line'] ?? null, - 'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : [], - ]; - } - - return $this; - } - - private function flattenArgs(array $args, int $level = 0, int &$count = 0): array - { - $result = []; - foreach ($args as $key => $value) { - if (++$count > 1e4) { - return ['array', '*SKIPPED over 10000 entries*']; - } - if ($value instanceof \__PHP_Incomplete_Class) { - // is_object() returns false on PHP<=7.1 - $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)]; - } elseif (\is_object($value)) { - $result[$key] = ['object', \get_class($value)]; - } elseif (\is_array($value)) { - if ($level > 10) { - $result[$key] = ['array', '*DEEP NESTED ARRAY*']; - } else { - $result[$key] = ['array', $this->flattenArgs($value, $level + 1, $count)]; - } - } elseif (null === $value) { - $result[$key] = ['null', null]; - } elseif (\is_bool($value)) { - $result[$key] = ['boolean', $value]; - } elseif (\is_int($value)) { - $result[$key] = ['integer', $value]; - } elseif (\is_float($value)) { - $result[$key] = ['float', $value]; - } elseif (\is_resource($value)) { - $result[$key] = ['resource', get_resource_type($value)]; - } else { - $result[$key] = ['string', (string) $value]; - } - } - - return $result; - } - - private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string - { - $array = new \ArrayObject($value); - - return $array['__PHP_Incomplete_Class_Name']; - } - - public function getTraceAsString() - { - return $this->traceAsString; - } - - public function getAsString() - { - $message = ''; - $next = false; - - foreach (array_reverse(array_merge([$this], $this->getAllPrevious())) as $exception) { - if ($next) { - $message .= 'Next '; - } else { - $next = true; - } - $message .= $exception->getClass(); - - if ('' != $exception->getMessage()) { - $message .= ': '.$exception->getMessage(); - } - - $message .= ' in '.$exception->getFile().':'.$exception->getLine(). - "\nStack trace:\n".$exception->getTraceAsString()."\n\n"; - } - - return rtrim($message); - } -} diff --git a/vendor/symfony/debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Exception/OutOfMemoryException.php deleted file mode 100644 index b1dc0ef4b..000000000 --- a/vendor/symfony/debug/Exception/OutOfMemoryException.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', OutOfMemoryException::class, \Symfony\Component\ErrorHandler\Error\OutOfMemoryError::class), \E_USER_DEPRECATED); - -/** - * Out of memory exception. - * - * @author Nicolas Grekas <p@tchwork.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\OutOfMemoryError instead. - */ -class OutOfMemoryException extends FatalErrorException -{ -} diff --git a/vendor/symfony/debug/Exception/SilencedErrorContext.php b/vendor/symfony/debug/Exception/SilencedErrorContext.php deleted file mode 100644 index 03e2fb30b..000000000 --- a/vendor/symfony/debug/Exception/SilencedErrorContext.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', SilencedErrorContext::class, \Symfony\Component\ErrorHandler\Exception\SilencedErrorContext::class), \E_USER_DEPRECATED); - -/** - * Data Object that represents a Silenced Error. - * - * @author Grégoire Pineau <lyrixx@lyrixx.info> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext instead. - */ -class SilencedErrorContext implements \JsonSerializable -{ - public $count = 1; - - private $severity; - private $file; - private $line; - private $trace; - - public function __construct(int $severity, string $file, int $line, array $trace = [], int $count = 1) - { - $this->severity = $severity; - $this->file = $file; - $this->line = $line; - $this->trace = $trace; - $this->count = $count; - } - - public function getSeverity() - { - return $this->severity; - } - - public function getFile() - { - return $this->file; - } - - public function getLine() - { - return $this->line; - } - - public function getTrace() - { - return $this->trace; - } - - public function jsonSerialize() - { - return [ - 'severity' => $this->severity, - 'file' => $this->file, - 'line' => $this->line, - 'trace' => $this->trace, - 'count' => $this->count, - ]; - } -} diff --git a/vendor/symfony/debug/Exception/UndefinedFunctionException.php b/vendor/symfony/debug/Exception/UndefinedFunctionException.php deleted file mode 100644 index 42ab2ec90..000000000 --- a/vendor/symfony/debug/Exception/UndefinedFunctionException.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionException::class, \Symfony\Component\ErrorHandler\Error\UndefinedFunctionError::class), \E_USER_DEPRECATED); - -/** - * Undefined Function Exception. - * - * @author Konstanton Myakshin <koc-dp@yandex.ru> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError instead. - */ -class UndefinedFunctionException extends FatalErrorException -{ - public function __construct(string $message, \ErrorException $previous) - { - parent::__construct( - $message, - $previous->getCode(), - $previous->getSeverity(), - $previous->getFile(), - $previous->getLine(), - null, - true, - null, - $previous->getPrevious() - ); - $this->setTrace($previous->getTrace()); - } -} diff --git a/vendor/symfony/debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Exception/UndefinedMethodException.php deleted file mode 100644 index d72046f3c..000000000 --- a/vendor/symfony/debug/Exception/UndefinedMethodException.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodException::class, \Symfony\Component\ErrorHandler\Error\UndefinedMethodError::class), \E_USER_DEPRECATED); - -/** - * Undefined Method Exception. - * - * @author Grégoire Pineau <lyrixx@lyrixx.info> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedMethodError instead. - */ -class UndefinedMethodException extends FatalErrorException -{ - public function __construct(string $message, \ErrorException $previous) - { - parent::__construct( - $message, - $previous->getCode(), - $previous->getSeverity(), - $previous->getFile(), - $previous->getLine(), - null, - true, - null, - $previous->getPrevious() - ); - $this->setTrace($previous->getTrace()); - } -} diff --git a/vendor/symfony/debug/ExceptionHandler.php b/vendor/symfony/debug/ExceptionHandler.php deleted file mode 100644 index fd8a7fd5d..000000000 --- a/vendor/symfony/debug/ExceptionHandler.php +++ /dev/null @@ -1,470 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug; - -use Symfony\Component\Debug\Exception\FlattenException; -use Symfony\Component\Debug\Exception\OutOfMemoryException; -use Symfony\Component\HttpKernel\Debug\FileLinkFormatter; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ExceptionHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED); - -/** - * ExceptionHandler converts an exception to a Response object. - * - * It is mostly useful in debug mode to replace the default PHP/XDebug - * output with something prettier and more useful. - * - * As this class is mainly used during Kernel boot, where nothing is yet - * available, the Response content is always HTML. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Nicolas Grekas <p@tchwork.com> - * - * @final since Symfony 4.3 - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead. - */ -class ExceptionHandler -{ - private const GHOST_ADDONS = [ - '02-14' => self::GHOST_HEART, - '02-29' => self::GHOST_PLUS, - '10-18' => self::GHOST_GIFT, - ]; - - private const GHOST_GIFT = 'M124.005 5.36c.396-.715 1.119-1.648-.124-1.873-.346-.177-.692-.492-1.038-.141-.769.303-1.435.728-.627 1.523.36.514.685 1.634 1.092 1.758.242-.417.47-.842.697-1.266zm-1.699 1.977c-.706-1.26-1.274-2.612-2.138-3.774-1.051-1.123-3.122-.622-3.593.825-.625 1.431.724 3.14 2.251 2.96 1.159.02 2.324.072 3.48-.011zm5.867.043c1.502-.202 2.365-2.092 1.51-3.347-.757-1.34-2.937-1.387-3.698-.025-.659 1.1-1.23 2.25-1.835 3.38 1.336.077 2.686.06 4.023-.008zm2.487 1.611c.512-.45 2.494-.981.993-1.409-.372-.105-.805-.59-1.14-.457-.726.902-1.842 1.432-3.007 1.376-.228.075-1.391-.114-1.077.1.822.47 1.623.979 2.474 1.395.595-.317 1.173-.667 1.757-1.005zm-11.696.255l1.314-.765c-1.338-.066-2.87.127-3.881-.95-.285-.319-.559-.684-.954-.282-.473.326-1.929.66-.808 1.058.976.576 1.945 1.167 2.946 1.701.476-.223.926-.503 1.383-.762zm6.416 2.846c.567-.456 1.942-.89 1.987-1.38-1.282-.737-2.527-1.56-3.87-2.183-.461-.175-.835.094-1.207.328-1.1.654-2.225 1.267-3.288 1.978 1.39.86 2.798 1.695 4.219 2.504.725-.407 1.44-.83 2.16-1.247zm5.692 1.423l1.765-1.114c-.005-1.244.015-2.488-.019-3.732a77.306 77.306 0 0 0-3.51 2.084c-.126 1.282-.062 2.586-.034 3.876.607-.358 1.2-.741 1.798-1.114zm-13.804-.784c.06-1.06.19-2.269-1.09-2.583-.807-.376-1.926-1.341-2.548-1.332-.02 1.195-.01 2.39-.011 3.585 1.192.744 2.364 1.524 3.582 2.226.119-.616.041-1.269.067-1.896zm8.541 4.105l2.117-1.336c-.003-1.284.05-2.57-.008-3.853-.776.223-1.662.91-2.48 1.337l-1.834 1.075c.012 1.37-.033 2.744.044 4.113.732-.427 1.443-.887 2.161-1.336zm-2.957-.72v-2.057c-1.416-.828-2.828-1.664-4.25-2.482-.078 1.311-.033 2.627-.045 3.94 1.416.887 2.817 1.798 4.25 2.655.057-.683.036-1.372.045-2.057zm8.255 2.755l1.731-1.153c-.024-1.218.06-2.453-.062-3.658-1.2.685-2.358 1.464-3.537 2.195.028 1.261-.058 2.536.072 3.786.609-.373 1.2-.777 1.796-1.17zm-13.851-.683l-.014-1.916c-1.193-.746-2.37-1.517-3.58-2.234-.076 1.224-.033 2.453-.044 3.679 1.203.796 2.392 1.614 3.61 2.385.048-.636.024-1.276.028-1.914zm8.584 4.199l2.102-1.396c-.002-1.298.024-2.596-.01-3.893-1.427.88-2.843 1.775-4.25 2.686-.158 1.253-.055 2.545-.056 3.811.437.266 1.553-.912 2.214-1.208zm-2.988-.556c-.085-.894.365-2.154-.773-2.5-1.146-.727-2.288-1.46-3.45-2.163-.17 1.228.008 2.508-.122 3.751a79.399 79.399 0 0 0 4.278 2.885c.117-.641.044-1.32.067-1.973zm-4.872-.236l-5.087-3.396c.002-3.493-.047-6.988.015-10.48.85-.524 1.753-.954 2.627-1.434-.564-1.616.25-3.58 1.887-4.184 1.372-.563 3.025-.055 3.9 1.13l1.906-.978 1.916.987c.915-1.086 2.483-1.706 3.842-1.097 1.631.573 2.52 2.532 1.936 4.145.88.497 1.837.886 2.644 1.492.036 3.473 0 6.946-.003 10.419-3.374 2.233-6.693 4.55-10.122 6.699-.997 0-1.858-1.083-2.783-1.522a735.316 735.316 0 0 1-2.678-1.781z'; - private const GHOST_HEART = 'M125.914 8.305c3.036-8.71 14.933 0 0 11.2-14.932-11.2-3.036-19.91 0-11.2z'; - private const GHOST_PLUS = 'M111.368 8.97h7.324V1.645h7.512v7.323h7.324v7.513h-7.324v7.323h-7.512v-7.323h-7.324z'; - - private $debug; - private $charset; - private $handler; - private $caughtBuffer; - private $caughtLength; - private $fileLinkFormat; - - public function __construct(bool $debug = true, string $charset = null, $fileLinkFormat = null) - { - $this->debug = $debug; - $this->charset = $charset ?: \ini_get('default_charset') ?: 'UTF-8'; - $this->fileLinkFormat = $fileLinkFormat; - } - - /** - * Registers the exception handler. - * - * @param bool $debug Enable/disable debug mode, where the stack trace is displayed - * @param string|null $charset The charset used by exception messages - * @param string|null $fileLinkFormat The IDE link template - * - * @return static - */ - public static function register($debug = true, $charset = null, $fileLinkFormat = null) - { - $handler = new static($debug, $charset, $fileLinkFormat); - - $prev = set_exception_handler([$handler, 'handle']); - if (\is_array($prev) && $prev[0] instanceof ErrorHandler) { - restore_exception_handler(); - $prev[0]->setExceptionHandler([$handler, 'handle']); - } - - return $handler; - } - - /** - * Sets a user exception handler. - * - * @param callable $handler An handler that will be called on Exception - * - * @return callable|null The previous exception handler if any - */ - public function setHandler(callable $handler = null) - { - $old = $this->handler; - $this->handler = $handler; - - return $old; - } - - /** - * Sets the format for links to source files. - * - * @param string|FileLinkFormatter $fileLinkFormat The format for links to source files - * - * @return string The previous file link format - */ - public function setFileLinkFormat($fileLinkFormat) - { - $old = $this->fileLinkFormat; - $this->fileLinkFormat = $fileLinkFormat; - - return $old; - } - - /** - * Sends a response for the given Exception. - * - * To be as fail-safe as possible, the exception is first handled - * by our simple exception handler, then by the user exception handler. - * The latter takes precedence and any output from the former is cancelled, - * if and only if nothing bad happens in this handling path. - */ - public function handle(\Exception $exception) - { - if (null === $this->handler || $exception instanceof OutOfMemoryException) { - $this->sendPhpResponse($exception); - - return; - } - - $caughtLength = $this->caughtLength = 0; - - ob_start(function ($buffer) { - $this->caughtBuffer = $buffer; - - return ''; - }); - - $this->sendPhpResponse($exception); - while (null === $this->caughtBuffer && ob_end_flush()) { - // Empty loop, everything is in the condition - } - if (isset($this->caughtBuffer[0])) { - ob_start(function ($buffer) { - if ($this->caughtLength) { - // use substr_replace() instead of substr() for mbstring overloading resistance - $cleanBuffer = substr_replace($buffer, '', 0, $this->caughtLength); - if (isset($cleanBuffer[0])) { - $buffer = $cleanBuffer; - } - } - - return $buffer; - }); - - echo $this->caughtBuffer; - $caughtLength = ob_get_length(); - } - $this->caughtBuffer = null; - - try { - ($this->handler)($exception); - $this->caughtLength = $caughtLength; - } catch (\Exception $e) { - if (!$caughtLength) { - // All handlers failed. Let PHP handle that now. - throw $exception; - } - } - } - - /** - * Sends the error associated with the given Exception as a plain PHP response. - * - * This method uses plain PHP functions like header() and echo to output - * the response. - * - * @param \Throwable|FlattenException $exception A \Throwable or FlattenException instance - */ - public function sendPhpResponse($exception) - { - if ($exception instanceof \Throwable) { - $exception = FlattenException::createFromThrowable($exception); - } - - if (!headers_sent()) { - header(sprintf('HTTP/1.0 %s', $exception->getStatusCode())); - foreach ($exception->getHeaders() as $name => $value) { - header($name.': '.$value, false); - } - header('Content-Type: text/html; charset='.$this->charset); - } - - echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception)); - } - - /** - * Gets the full HTML content associated with the given exception. - * - * @param \Exception|FlattenException $exception An \Exception or FlattenException instance - * - * @return string The HTML content as a string - */ - public function getHtml($exception) - { - if (!$exception instanceof FlattenException) { - $exception = FlattenException::create($exception); - } - - return $this->decorate($this->getContent($exception), $this->getStylesheet($exception)); - } - - /** - * Gets the HTML content associated with the given exception. - * - * @return string The content as a string - */ - public function getContent(FlattenException $exception) - { - switch ($exception->getStatusCode()) { - case 404: - $title = 'Sorry, the page you are looking for could not be found.'; - break; - default: - $title = $this->debug ? $this->escapeHtml($exception->getMessage()) : 'Whoops, looks like something went wrong.'; - } - - if (!$this->debug) { - return <<<EOF - <div class="container"> - <h1>$title</h1> - </div> -EOF; - } - - $content = ''; - try { - $count = \count($exception->getAllPrevious()); - $total = $count + 1; - foreach ($exception->toArray() as $position => $e) { - $ind = $count - $position + 1; - $class = $this->formatClass($e['class']); - $message = nl2br($this->escapeHtml($e['message'])); - $content .= sprintf(<<<'EOF' - <div class="trace trace-as-html"> - <table class="trace-details"> - <thead class="trace-head"><tr><th> - <h3 class="trace-class"> - <span class="text-muted">(%d/%d)</span> - <span class="exception_title">%s</span> - </h3> - <p class="break-long-words trace-message">%s</p> - </th></tr></thead> - <tbody> -EOF - , $ind, $total, $class, $message); - foreach ($e['trace'] as $trace) { - $content .= '<tr><td>'; - if ($trace['function']) { - $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>', $this->formatClass($trace['class']), $trace['type'], $trace['function']); - - if (isset($trace['args'])) { - $content .= sprintf('(<span class="trace-arguments">%s</span>)', $this->formatArgs($trace['args'])); - } - } - if (isset($trace['file']) && isset($trace['line'])) { - $content .= $this->formatPath($trace['file'], $trace['line']); - } - $content .= "</td></tr>\n"; - } - - $content .= "</tbody>\n</table>\n</div>\n"; - } - } catch (\Exception $e) { - // something nasty happened and we cannot throw an exception anymore - if ($this->debug) { - $e = FlattenException::create($e); - $title = sprintf('Exception thrown when handling an exception (%s: %s)', $e->getClass(), $this->escapeHtml($e->getMessage())); - } else { - $title = 'Whoops, looks like something went wrong.'; - } - } - - $symfonyGhostImageContents = $this->getSymfonyGhostAsSvg(); - - return <<<EOF - <div class="exception-summary"> - <div class="container"> - <div class="exception-message-wrapper"> - <h1 class="break-long-words exception-message">$title</h1> - <div class="exception-illustration hidden-xs-down">$symfonyGhostImageContents</div> - </div> - </div> - </div> - - <div class="container"> - $content - </div> -EOF; - } - - /** - * Gets the stylesheet associated with the given exception. - * - * @return string The stylesheet as a string - */ - public function getStylesheet(FlattenException $exception) - { - if (!$this->debug) { - return <<<'EOF' - body { background-color: #fff; color: #222; font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0; } - .container { margin: 30px; max-width: 600px; } - h1 { color: #dc3545; font-size: 24px; } -EOF; - } - - return <<<'EOF' - body { background-color: #F9F9F9; color: #222; font: 14px/1.4 Helvetica, Arial, sans-serif; margin: 0; padding-bottom: 45px; } - - a { cursor: pointer; text-decoration: none; } - a:hover { text-decoration: underline; } - abbr[title] { border-bottom: none; cursor: help; text-decoration: none; } - - code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; } - - table, tr, th, td { background: #FFF; border-collapse: collapse; vertical-align: top; } - table { background: #FFF; border: 1px solid #E0E0E0; box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; } - table th, table td { border: solid #E0E0E0; border-width: 1px 0; padding: 8px 10px; } - table th { background-color: #E0E0E0; font-weight: bold; text-align: left; } - - .hidden-xs-down { display: none; } - .block { display: block; } - .break-long-words { -ms-word-break: break-all; word-break: break-all; word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; } - .text-muted { color: #999; } - - .container { max-width: 1024px; margin: 0 auto; padding: 0 15px; } - .container::after { content: ""; display: table; clear: both; } - - .exception-summary { background: #B0413E; border-bottom: 2px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, .3); flex: 0 0 auto; margin-bottom: 30px; } - - .exception-message-wrapper { display: flex; align-items: center; min-height: 70px; } - .exception-message { flex-grow: 1; padding: 30px 0; } - .exception-message, .exception-message a { color: #FFF; font-size: 21px; font-weight: 400; margin: 0; } - .exception-message.long { font-size: 18px; } - .exception-message a { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-size: inherit; text-decoration: none; } - .exception-message a:hover { border-bottom-color: #ffffff; } - - .exception-illustration { flex-basis: 111px; flex-shrink: 0; height: 66px; margin-left: 15px; opacity: .7; } - - .trace + .trace { margin-top: 30px; } - .trace-head .trace-class { color: #222; font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; } - - .trace-message { font-size: 14px; font-weight: normal; margin: .5em 0 0; } - - .trace-file-path, .trace-file-path a { color: #222; margin-top: 3px; font-size: 13px; } - .trace-class { color: #B0413E; } - .trace-type { padding: 0 2px; } - .trace-method { color: #B0413E; font-weight: bold; } - .trace-arguments { color: #777; font-weight: normal; padding-left: 2px; } - - @media (min-width: 575px) { - .hidden-xs-down { display: initial; } - } -EOF; - } - - private function decorate(string $content, string $css): string - { - return <<<EOF -<!DOCTYPE html> -<html> - <head> - <meta charset="{$this->charset}" /> - <meta name="robots" content="noindex,nofollow" /> - <style>$css</style> - </head> - <body> - $content - </body> -</html> -EOF; - } - - private function formatClass(string $class): string - { - $parts = explode('\\', $class); - - return sprintf('<abbr title="%s">%s</abbr>', $class, array_pop($parts)); - } - - private function formatPath(string $path, int $line): string - { - $file = $this->escapeHtml(preg_match('#[^/\\\\]*+$#', $path, $file) ? $file[0] : $path); - $fmt = $this->fileLinkFormat ?: \ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); - - if (!$fmt) { - return sprintf('<span class="block trace-file-path">in <span title="%s%3$s"><strong>%s</strong>%s</span></span>', $this->escapeHtml($path), $file, 0 < $line ? ' line '.$line : ''); - } - - if (\is_string($fmt)) { - $i = strpos($f = $fmt, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f); - $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE); - - for ($i = 1; isset($fmt[$i]); ++$i) { - if (0 === strpos($path, $k = $fmt[$i++])) { - $path = substr_replace($path, $fmt[$i], 0, \strlen($k)); - break; - } - } - - $link = strtr($fmt[0], ['%f' => $path, '%l' => $line]); - } else { - try { - $link = $fmt->format($path, $line); - } catch (\Exception $e) { - return sprintf('<span class="block trace-file-path">in <span title="%s%3$s"><strong>%s</strong>%s</span></span>', $this->escapeHtml($path), $file, 0 < $line ? ' line '.$line : ''); - } - } - - return sprintf('<span class="block trace-file-path">in <a href="%s" title="Go to source"><strong>%s</string>%s</a></span>', $this->escapeHtml($link), $file, 0 < $line ? ' line '.$line : ''); - } - - /** - * Formats an array as a string. - */ - private function formatArgs(array $args): string - { - $result = []; - foreach ($args as $key => $item) { - if ('object' === $item[0]) { - $formattedValue = sprintf('<em>object</em>(%s)', $this->formatClass($item[1])); - } elseif ('array' === $item[0]) { - $formattedValue = sprintf('<em>array</em>(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]); - } elseif ('null' === $item[0]) { - $formattedValue = '<em>null</em>'; - } elseif ('boolean' === $item[0]) { - $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>'; - } elseif ('resource' === $item[0]) { - $formattedValue = '<em>resource</em>'; - } else { - $formattedValue = str_replace("\n", '', $this->escapeHtml(var_export($item[1], true))); - } - - $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $this->escapeHtml($key), $formattedValue); - } - - return implode(', ', $result); - } - - /** - * HTML-encodes a string. - */ - private function escapeHtml(string $str): string - { - return htmlspecialchars($str, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset); - } - - private function getSymfonyGhostAsSvg(): string - { - return '<svg viewBox="0 0 136 81" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4"><path d="M92.4 20.4a23.2 23.2 0 0 1 9 1.9 23.7 23.7 0 0 1 5.2 3 24.3 24.3 0 0 1 3.4 3.4 24.8 24.8 0 0 1 5 9.4c.5 1.7.8 3.4 1 5.2v14.5h.4l.5.2a7.4 7.4 0 0 0 2.5.2l.2-.2.6-.8.8-1.3-.2-.1a5.5 5.5 0 0 1-.8-.3 5.6 5.6 0 0 1-2.3-1.8 5.7 5.7 0 0 1-.9-1.6 6.5 6.5 0 0 1-.2-2.8 7.3 7.3 0 0 1 .5-2l.3-.3.8-.9.3-.3c.2-.2.5-.3.8-.3H120.7c.2 0 .3-.1.4 0h.4l.2.1.3.2.2-.4.3-.4.1-.1 1.2-1 .3-.2.4-.1.4-.1h.3l1.5.1.4.1.8.5.1.2 1 1.1v.2H129.4l.4-.2 1.4-.5h1.1c.3 0 .7.2 1 .4.2 0 .3.2.5.3l.2.2.5.3.4.6.1.3.4 1.4.1.4v.6a7.8 7.8 0 0 1-.1.6 9.9 9.9 0 0 1-.8 2.4 7.8 7.8 0 0 1-3 3.3 6.4 6.4 0 0 1-1 .5 6.1 6.1 0 0 1-.6.2l-.7.1h-.1a23.4 23.4 0 0 1-.2 1.7 14.3 14.3 0 0 1-.6 2.1l-.8 2a9.2 9.2 0 0 1-.4.6l-.7 1a9.1 9.1 0 0 1-2.3 2.2c-.9.5-2 .6-3 .7l-1.4.1h-.5l-.4.1a15.8 15.8 0 0 1-2.8-.1v4.2a9.7 9.7 0 0 1-.7 3.5 9.6 9.6 0 0 1-1.7 2.8 9.3 9.3 0 0 1-3 2.3 9 9 0 0 1-5.4.7 9 9 0 0 1-3-1 9.4 9.4 0 0 1-2.7-2.5 10 10 0 0 1-1 1.2 9.3 9.3 0 0 1-2 1.3 9 9 0 0 1-2.4 1 9 9 0 0 1-6.5-1.1A9.4 9.4 0 0 1 85 77V77a10.9 10.9 0 0 1-.6.6 9.3 9.3 0 0 1-2.7 2 9 9 0 0 1-6 .8 9 9 0 0 1-2.4-1 9.3 9.3 0 0 1-2.3-1.7 9.6 9.6 0 0 1-1.8-2.8 9.7 9.7 0 0 1-.8-3.7v-4a18.5 18.5 0 0 1-2.9.2l-1.2-.1c-1.9-.3-3.7-1-5.1-2.1A8.2 8.2 0 0 1 58 64a10.2 10.2 0 0 1-.9-1.2 15.3 15.3 0 0 1-.7-1.3 20.8 20.8 0 0 1-1.9-6.2v-.2a6.5 6.5 0 0 1-1-.3 6.1 6.1 0 0 1-.6-.3 6.6 6.6 0 0 1-.9-.5 8.2 8.2 0 0 1-2.7-3.8 10 10 0 0 1-.3-1 10.3 10.3 0 0 1-.3-1.9V47v-.4l.1-.4.6-1.4.1-.2a2 2 0 0 1 .8-.8l.3-.2.3-.2a3.2 3.2 0 0 1 1.8-.5h.4l.3.2 1.4.6.2.2.4.3.3.4.7-.7.2-.2.4-.2.6-.2h2.1l.4.2.4.2.3.2.8 1 .2-.1h.1v-.1H63l1.1.1h.3l.8.5.3.4.7 1 .2.3.1.5a11 11 0 0 1 .2 1.5c0 .8 0 1.6-.3 2.3a6 6 0 0 1-.5 1.2 5.5 5.5 0 0 1-3.3 2.5 12.3 12.3 0 0 0 1.4 3h.1l.2.1 1 .2h1.5l.5-.2H67.8l.5-.2h.1V44v-.4a26.7 26.7 0 0 1 .3-2.3 24.7 24.7 0 0 1 5.7-12.5 24.2 24.2 0 0 1 3.5-3.3 23.7 23.7 0 0 1 4.9-3 23.2 23.2 0 0 1 5.6-1.7 23.7 23.7 0 0 1 4-.3zm-.3 2a21.2 21.2 0 0 0-8 1.7 21.6 21.6 0 0 0-4.8 2.7 22.2 22.2 0 0 0-3.2 3 22.7 22.7 0 0 0-5 9.2 23.4 23.4 0 0 0-.7 4.9v15.7l-.5.1a34.3 34.3 0 0 1-1.5.3h-.2l-.4.1h-.4l-.9.2a10 10 0 0 1-1.9 0c-.5 0-1-.2-1.5-.4a1.8 1.8 0 0 1-.3-.2 2 2 0 0 1-.3-.3 5.2 5.2 0 0 1-.1-.2 9 9 0 0 1-.6-.9 13.8 13.8 0 0 1-1-2 14.3 14.3 0 0 1-.6-2 14 14 0 0 1-.1-.8v-.2h.3a12.8 12.8 0 0 0 1.4-.2 4.4 4.4 0 0 0 .3 0 3.6 3.6 0 0 0 1.1-.7 3.4 3.4 0 0 0 1.2-1.7l.2-1.2a5.1 5.1 0 0 0 0-.8 7.2 7.2 0 0 0-.1-.8l-.7-1-1.2-.2-1 .7-.1 1.3a5 5 0 0 1 .1.4v.6a1 1 0 0 1 0 .3c-.1.3-.4.4-.7.5l-1.2.4v-.7A9.9 9.9 0 0 1 60 49l.3-.6v-.2l.1-.1v-1.6l-1-1.2h-1.5l-1 1.1v.4a5.3 5.3 0 0 0-.2.6 5.5 5.5 0 0 0 0 .5c0 .7 0 1.4.3 2 0 .4.2.8.4 1.2L57 51a9.5 9.5 0 0 1-1.1-.5h-.2a2 2 0 0 1-.4-.3c-.4-.4-.5-1-.6-1.6a5.6 5.6 0 0 1 0-.5v-.5-.5l-.6-1.5-1.4-.6-.9.3s-.2 0-.3.2a2 2 0 0 1-.1 0l-.6 1.4v.7a8.5 8.5 0 0 0 .5 2c.4 1.1 1 2.1 2 2.8a4.7 4.7 0 0 0 2.1.9h1a22.8 22.8 0 0 0 .1 1 18.1 18.1 0 0 0 .8 3.8 18.2 18.2 0 0 0 1.6 3.7l1 1.3c1 1 2.3 1.6 3.7 2a11.7 11.7 0 0 0 4.8 0h.4l.5-.2.5-.1.6-.2v6.6a8 8 0 0 0 .1 1.3 7.5 7.5 0 0 0 2.4 4.3 7.2 7.2 0 0 0 2.3 1.3 7 7 0 0 0 7-1.1 7.5 7.5 0 0 0 2-2.6A7.7 7.7 0 0 0 85 72V71a8.2 8.2 0 0 0 .2 1.3c0 .7.3 1.4.6 2a7.5 7.5 0 0 0 1.7 2.3 7.3 7.3 0 0 0 2.2 1.4 7.1 7.1 0 0 0 4.6.2 7.2 7.2 0 0 0 2.4-1.2 7.5 7.5 0 0 0 2.1-2.7 7.8 7.8 0 0 0 .7-2.4V71a9.3 9.3 0 0 0 .1.6 7.6 7.6 0 0 0 .6 2.5 7.5 7.5 0 0 0 2.4 3 7.1 7.1 0 0 0 7 .8 7.3 7.3 0 0 0 2.3-1.5 7.5 7.5 0 0 0 1.6-2.3 7.6 7.6 0 0 0 .5-2l.1-1.1v-6.7l.4.1a12.2 12.2 0 0 0 2 .5 11.1 11.1 0 0 0 2.5 0h.8l1.2-.1a9.5 9.5 0 0 0 1.4-.2l.9-.3a3.5 3.5 0 0 0 .6-.4l1.2-1.4a12.2 12.2 0 0 0 .8-1.2c0-.3.2-.5.3-.7a15.9 15.9 0 0 0 .7-2l.3-1.6v-1.3l.2-.9V54.6a15.5 15.5 0 0 0 1.8 0 4.5 4.5 0 0 0 1.4-.5 5.7 5.7 0 0 0 2.5-3.2 7.6 7.6 0 0 0 .4-1.5v-.3l-.4-1.4a5.2 5.2 0 0 1-.2-.1l-.4-.4a3.8 3.8 0 0 0-.2 0 1.4 1.4 0 0 0-.5-.2l-1.4.4-.7 1.3v.7a5.7 5.7 0 0 1-.1.8l-.7 1.4a1.9 1.9 0 0 1-.5.3h-.3a9.6 9.6 0 0 1-.8.3 8.8 8.8 0 0 1-.6 0l.2-.4.2-.5.2-.3v-.4l.1-.2V50l.1-1 .1-.6v-.6a4.8 4.8 0 0 0 0-.8v-.2l-1-1.1-1.5-.2-1.1 1-.2 1.4v.1l.2.4.2.3v.4l.1 1.1v.3l.1.5v.8a9.6 9.6 0 0 1-.8-.3l-.2-.1h-.3l-.8-.1h-.2a1.6 1.6 0 0 1-.2-.2.9.9 0 0 1-.2-.2 1 1 0 0 1-.1-.5l.2-.9v-1.2l-.9-.8h-1.2l-.8.9v.3a4.8 4.8 0 0 0-.3 2l.3.9a3.5 3.5 0 0 0 1.2 1.6l1 .5.8.2 1.4.1h.4l.2.1a12.1 12.1 0 0 1-1 2.6 13.2 13.2 0 0 1-.8 1.5 9.5 9.5 0 0 1-1 1.2l-.2.3a1.7 1.7 0 0 1-.4.3 2.4 2.4 0 0 1-.7.2h-2.5a7.8 7.8 0 0 1-.6-.2l-.7-.2h-.2a14.8 14.8 0 0 1-.6-.2 23.4 23.4 0 0 1-.4-.1l-.4-.1-.3-.1V43.9a34.6 34.6 0 0 0 0-.6 23.6 23.6 0 0 0-.4-3 22.7 22.7 0 0 0-1.5-4.7 22.6 22.6 0 0 0-4.6-6.7 21.9 21.9 0 0 0-6.9-4.7 21.2 21.2 0 0 0-8.1-1.8H92zm9.1 33.7l.3.1a1 1 0 0 1 .6.8v.4a8.4 8.4 0 0 1 0 .5 8.8 8.8 0 0 1-1.6 4.2l-1 1.3A10 10 0 0 1 95 66c-1.3.3-2.7.4-4 .3a10.4 10.4 0 0 1-2.7-.8 10 10 0 0 1-3.6-2.5 9.3 9.3 0 0 1-.8-1 9 9 0 0 1-.7-1.2 8.6 8.6 0 0 1-.8-3.4V57a1 1 0 0 1 .3-.6 1 1 0 0 1 1.3-.2 1 1 0 0 1 .4.8v.4a6.5 6.5 0 0 0 .5 2.2 7 7 0 0 0 2.1 2.8l1 .6c2.6 1.6 6 1.6 8.5 0a8 8 0 0 0 1.1-.6 7.6 7.6 0 0 0 1.2-1.2 7 7 0 0 0 1-1.7 6.5 6.5 0 0 0 .4-2.5 1 1 0 0 1 .7-1h.4zM30.7 43.7c-15.5 1-28.5-6-30.1-16.4C-1.2 15.7 11.6 4 29 1.3 46.6-1.7 62.3 5.5 64 17.1c1.6 10.4-8.7 21-23.7 25a31.2 31.2 0 0 0 0 .9v.3a19 19 0 0 0 .1 1l.1.4.1.9a4.7 4.7 0 0 0 .5 1l.7 1a9.2 9.2 0 0 0 1.2 1l1.5.8.6.8-.7.6-1.1.3a11.2 11.2 0 0 1-2.6.4 8.6 8.6 0 0 1-3-.5 8.5 8.5 0 0 1-1-.4 11.2 11.2 0 0 1-1.8-1.2 13.3 13.3 0 0 1-1-1 18 18 0 0 1-.7-.6l-.4-.4a23.4 23.4 0 0 1-1.3-1.8l-.1-.1-.3-.5V45l-.3-.6v-.7zM83.1 36c3.6 0 6.5 3.2 6.5 7.1 0 4-3 7.2-6.5 7.2S76.7 47 76.7 43 79.6 36 83 36zm18 0c3.6 0 6.5 3.2 6.5 7.1 0 4-2.9 7.2-6.4 7.2S94.7 47 94.7 43s3-7.1 6.5-7.1zm-18 6.1c2 0 3.5 1.6 3.5 3.6S85 49.2 83 49.2s-3.4-1.6-3.4-3.6S81.2 42 83 42zm17.9 0c1.9 0 3.4 1.6 3.4 3.6s-1.5 3.6-3.4 3.6c-2 0-3.5-1.6-3.5-3.6S99.1 42 101 42zM17 28c-.3 1.6-1.8 5-5.2 5.8-2.5.6-4.1-.8-4.5-2.6-.4-1.9.7-3.5 2.1-4.5A3.5 3.5 0 0 1 8 24.6c-.4-2 .8-3.7 3.2-4.2 1.9-.5 3.1.2 3.4 1.5.3 1.1-.5 2.2-1.8 2.5-.9.3-1.6 0-1.7-.6a1.4 1.4 0 0 1 0-.7s.3.2 1 0c.7-.1 1-.7.9-1.2-.2-.6-1-.8-1.8-.6-1 .2-2 1-1.7 2.6.3 1 .9 1.6 1.5 1.8l.7-.2c1-.2 1.5 0 1.6.5 0 .4-.2 1-1.2 1.2a3.3 3.3 0 0 1-1.5 0c-.9.7-1.6 1.9-1.3 3.2.3 1.3 1.3 2.2 3 1.8 2.5-.7 3.8-3.7 4.2-5-.3-.5-.6-1-.7-1.6-.1-.5.1-1 .9-1.2.4 0 .7.2.8.8a2.8 2.8 0 0 1 0 1l.7 1c.6-2 1.4-4 1.7-4 .6-.2 1.5.6 1.5.6-.8.7-1.7 2.4-2.3 4.2.8.6 1.6 1 2.1 1 .5-.1.8-.6 1-1.2-.3-2.2 1-4.3 2.3-4.6.7-.2 1.3.2 1.4.8.1.5 0 1.3-.9 1.7-.2-1-.6-1.3-1-1.3-.4.1-.7 1.4-.4 2.8.2 1 .7 1.5 1.3 1.4.8-.2 1.3-1.2 1.7-2.1-.3-2.1.9-4.2 2.2-4.5.7-.2 1.2.1 1.4 1 .4 1.4-1 2.8-2.2 3.4.3.7.7 1 1.3.9 1-.3 1.6-1.5 2-2.5l-.5-3v-.3s1.6-.3 1.8.6v.1c.2-.6.7-1.2 1.3-1.4.8-.1 1.5.6 1.7 1.6.5 2.2-.5 4.4-1.8 4.7H33a31.9 31.9 0 0 0 1 5.2c-.4.1-1.8.4-2-.4l-.5-5.6c-.5 1-1.3 2.2-2.5 2.4-1 .3-1.6-.3-2-1.1-.5 1-1.3 2.1-2.4 2.4-.8.2-1.5-.1-2-1-.3.8-.9 1.5-1.5 1.7-.7.1-1.5-.3-2.4-1-.3.8-.4 1.6-.4 2.2 0 0-.7 0-.8-.4-.1-.5 0-1.5.3-2.7a10.3 10.3 0 0 1-.7-.8zm38.2-17.8l.2.9c.5 1.9.4 4.4.8 6.4 0 .6-.4 3-1.4 3.3-.2 0-.3 0-.4-.4-.1-.7 0-1.6-.3-2.6-.2-1.1-.8-1.6-1.5-1.5-.8.2-1.3 1-1.6 2l-.1-.5c-.2-1-1.8-.6-1.8-.6a6.2 6.2 0 0 1 .4 1.3l.2 1c-.2.5-.6 1-1.2 1l-.2.1a7 7 0 0 0-.1-.8c-.3-1.1-1-2-1.6-1.8a.7.7 0 0 0-.4.3c-1.3.3-2.4 2-2.1 3.9-.2.9-.6 1.7-1 1.9-.5 0-.8-.5-1.1-1.8l-.1-1.2a4 4 0 0 0 0-1.7c0-.4-.4-.7-.8-.6-.7.2-.9 1.7-.5 3.8-.2 1-.6 2-1.3 2-.4.2-.8-.2-1-1l-.2-3c1.2-.5 2-1 1.8-1.7-.1-.5-.8-.7-.8-.7s0 .7-1 1.2l-.2-1.4c-.1-.6-.4-1-1.7-.6l.4 1 .2 1.5h-1v.8c0 .3.4.3 1 .2 0 1.3 0 2.7.2 3.6.3 1.4 1.2 2 2 1.7 1-.2 1.6-1.3 2-2.3.3 1.2 1 2 1.9 1.7.7-.2 1.2-1.1 1.6-2.2.4.8 1.1 1.1 2 1 1.2-.4 1.7-1.6 1.8-2.8h.2c.6-.2 1-.6 1.3-1 0 .8 0 1.5.2 2.1.1.5.3.7.6.6.5-.1 1-.9 1-.9a4 4 0 0 1-.3-1c-.3-1.3.3-3.6 1-3.7.2 0 .3.2.5.7v.8l.2 1.5v.7c.2.7.7 1.3 1.5 1 1.3-.2 2-2.6 2.1-3.9.3.2.6.2 1 .1-.6-2.2 0-6.1-.3-7.9-.1-.4-1-.5-1.7-.5h-.4zm-21.5 12c.4 0 .7.3 1 1.1.2 1.3-.3 2.6-.9 2.8-.2 0-.7 0-1-1.2v-.4c0-1.3.4-2 1-2.2zm-5.2 1c.3 0 .6.2.6.5.2.6-.3 1.3-1.2 2-.3-1.4.1-2.3.6-2.5zm18-.4c-.5.2-1-.4-1.2-1.2-.2-1 0-2.1.7-2.5v.5c.2.7.6 1.5 1.3 1.9 0 .7-.2 1.2-.7 1.3zm10-1.6c0 .5.4.7 1 .6.8-.2 1-1 .8-1.6 0-.5-.4-1-1-.8-.5.1-1 .9-.8 1.8zm-14.3-5.5c0-.4-.5-.7-1-.5-.8.2-1 1-.9 1.5.2.6.5 1 1 .8.5 0 1.1-1 1-1.8z" fill="#fff" fill-opacity=".6"/>'.$this->addElementToGhost().'</svg>'; - } - - private function addElementToGhost(): string - { - if (!isset(self::GHOST_ADDONS[date('m-d')])) { - return ''; - } - - return '<path d="'.self::GHOST_ADDONS[date('m-d')].'" fill="#fff" fill-opacity="0.6"></path>'; - } -} diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php deleted file mode 100644 index 64d755134..000000000 --- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php +++ /dev/null @@ -1,183 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\FatalErrorHandler; - -use Composer\Autoload\ClassLoader as ComposerClassLoader; -use Symfony\Component\ClassLoader\ClassLoader as SymfonyClassLoader; -use Symfony\Component\Debug\DebugClassLoader; -use Symfony\Component\Debug\Exception\ClassNotFoundException; -use Symfony\Component\Debug\Exception\FatalErrorException; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundFatalErrorHandler::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler::class), \E_USER_DEPRECATED); - -/** - * ErrorHandler for classes that do not exist. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler instead. - */ -class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface -{ - /** - * {@inheritdoc} - */ - public function handleError(array $error, FatalErrorException $exception) - { - if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $error['message'], $matches)) { - return null; - } - $typeName = strtolower($matches[1]); - $fullyQualifiedClassName = $matches[2]; - - if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) { - $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1); - $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex); - $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix); - $tail = ' for another namespace?'; - } else { - $className = $fullyQualifiedClassName; - $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className); - $tail = '?'; - } - - if ($candidates = $this->getClassCandidates($className)) { - $tail = array_pop($candidates).'"?'; - if ($candidates) { - $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail; - } else { - $tail = ' for "'.$tail; - } - } - $message .= "\nDid you forget a \"use\" statement".$tail; - - return new ClassNotFoundException($message, $exception); - } - - /** - * Tries to guess the full namespace for a given class name. - * - * By default, it looks for PSR-0 and PSR-4 classes registered via a Symfony or a Composer - * autoloader (that should cover all common cases). - * - * @param string $class A class name (without its namespace) - * - * @return array An array of possible fully qualified class names - */ - private function getClassCandidates(string $class): array - { - if (!\is_array($functions = spl_autoload_functions())) { - return []; - } - - // find Symfony and Composer autoloaders - $classes = []; - - foreach ($functions as $function) { - if (!\is_array($function)) { - continue; - } - // get class loaders wrapped by DebugClassLoader - if ($function[0] instanceof DebugClassLoader) { - $function = $function[0]->getClassLoader(); - - if (!\is_array($function)) { - continue; - } - } - - if ($function[0] instanceof ComposerClassLoader || $function[0] instanceof SymfonyClassLoader) { - foreach ($function[0]->getPrefixes() as $prefix => $paths) { - foreach ($paths as $path) { - $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix)); - } - } - } - if ($function[0] instanceof ComposerClassLoader) { - foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) { - foreach ($paths as $path) { - $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix)); - } - } - } - } - - return array_unique($classes); - } - - private function findClassInPath(string $path, string $class, string $prefix): array - { - if (!$path = realpath($path.'/'.strtr($prefix, '\\_', '//')) ?: realpath($path.'/'.\dirname(strtr($prefix, '\\_', '//'))) ?: realpath($path)) { - return []; - } - - $classes = []; - $filename = $class.'.php'; - foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { - if ($filename == $file->getFileName() && $class = $this->convertFileToClass($path, $file->getPathName(), $prefix)) { - $classes[] = $class; - } - } - - return $classes; - } - - private function convertFileToClass(string $path, string $file, string $prefix): ?string - { - $candidates = [ - // namespaced class - $namespacedClass = str_replace([$path.\DIRECTORY_SEPARATOR, '.php', '/'], ['', '', '\\'], $file), - // namespaced class (with target dir) - $prefix.$namespacedClass, - // namespaced class (with target dir and separator) - $prefix.'\\'.$namespacedClass, - // PEAR class - str_replace('\\', '_', $namespacedClass), - // PEAR class (with target dir) - str_replace('\\', '_', $prefix.$namespacedClass), - // PEAR class (with target dir and separator) - str_replace('\\', '_', $prefix.'\\'.$namespacedClass), - ]; - - if ($prefix) { - $candidates = array_filter($candidates, function ($candidate) use ($prefix) { return 0 === strpos($candidate, $prefix); }); - } - - // We cannot use the autoloader here as most of them use require; but if the class - // is not found, the new autoloader call will require the file again leading to a - // "cannot redeclare class" error. - foreach ($candidates as $candidate) { - if ($this->classExists($candidate)) { - return $candidate; - } - } - - try { - require_once $file; - } catch (\Throwable $e) { - return null; - } - - foreach ($candidates as $candidate) { - if ($this->classExists($candidate)) { - return $candidate; - } - } - - return null; - } - - private function classExists(string $class): bool - { - return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false); - } -} diff --git a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php deleted file mode 100644 index cc7a0ffab..000000000 --- a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\FatalErrorHandler; - -use Symfony\Component\Debug\Exception\FatalErrorException; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorHandlerInterface::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface::class), \E_USER_DEPRECATED); - -/** - * Attempts to convert fatal errors to exceptions. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface instead. - */ -interface FatalErrorHandlerInterface -{ - /** - * Attempts to convert an error into an exception. - * - * @param array $error An array as returned by error_get_last() - * - * @return FatalErrorException|null A FatalErrorException instance if the class is able to convert the error, null otherwise - */ - public function handleError(array $error, FatalErrorException $exception); -} diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php deleted file mode 100644 index 95096a9cd..000000000 --- a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\FatalErrorHandler; - -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\Exception\UndefinedFunctionException; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer::class), \E_USER_DEPRECATED); - -/** - * ErrorHandler for undefined functions. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer instead. - */ -class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface -{ - /** - * {@inheritdoc} - */ - public function handleError(array $error, FatalErrorException $exception) - { - $messageLen = \strlen($error['message']); - $notFoundSuffix = '()'; - $notFoundSuffixLen = \strlen($notFoundSuffix); - if ($notFoundSuffixLen > $messageLen) { - return null; - } - - if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) { - return null; - } - - $prefix = 'Call to undefined function '; - $prefixLen = \strlen($prefix); - if (0 !== strpos($error['message'], $prefix)) { - return null; - } - - $fullyQualifiedFunctionName = substr($error['message'], $prefixLen, -$notFoundSuffixLen); - if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\')) { - $functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1); - $namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex); - $message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix); - } else { - $functionName = $fullyQualifiedFunctionName; - $message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName); - } - - $candidates = []; - foreach (get_defined_functions() as $type => $definedFunctionNames) { - foreach ($definedFunctionNames as $definedFunctionName) { - if (false !== $namespaceSeparatorIndex = strrpos($definedFunctionName, '\\')) { - $definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1); - } else { - $definedFunctionNameBasename = $definedFunctionName; - } - - if ($definedFunctionNameBasename === $functionName) { - $candidates[] = '\\'.$definedFunctionName; - } - } - } - - if ($candidates) { - sort($candidates); - $last = array_pop($candidates).'"?'; - if ($candidates) { - $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last; - } else { - $candidates = '"'.$last; - } - $message .= "\nDid you mean to call ".$candidates; - } - - return new UndefinedFunctionException($message, $exception); - } -} diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php deleted file mode 100644 index 4f622deec..000000000 --- a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\FatalErrorHandler; - -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\Exception\UndefinedMethodException; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer::class), \E_USER_DEPRECATED); - -/** - * ErrorHandler for undefined methods. - * - * @author Grégoire Pineau <lyrixx@lyrixx.info> - * - * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer instead. - */ -class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface -{ - /** - * {@inheritdoc} - */ - public function handleError(array $error, FatalErrorException $exception) - { - preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $error['message'], $matches); - if (!$matches) { - return null; - } - - $className = $matches[1]; - $methodName = $matches[2]; - - $message = sprintf('Attempted to call an undefined method named "%s" of class "%s".', $methodName, $className); - - if ('' === $methodName || !class_exists($className) || null === $methods = get_class_methods($className)) { - // failed to get the class or its methods on which an unknown method was called (for example on an anonymous class) - return new UndefinedMethodException($message, $exception); - } - - $candidates = []; - foreach ($methods as $definedMethodName) { - $lev = levenshtein($methodName, $definedMethodName); - if ($lev <= \strlen($methodName) / 3 || false !== strpos($definedMethodName, $methodName)) { - $candidates[] = $definedMethodName; - } - } - - if ($candidates) { - sort($candidates); - $last = array_pop($candidates).'"?'; - if ($candidates) { - $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last; - } else { - $candidates = '"'.$last; - } - - $message .= "\nDid you mean to call ".$candidates; - } - - return new UndefinedMethodException($message, $exception); - } -} diff --git a/vendor/symfony/debug/LICENSE b/vendor/symfony/debug/LICENSE deleted file mode 100644 index 88bf75bb4..000000000 --- a/vendor/symfony/debug/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-2022 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/debug/README.md b/vendor/symfony/debug/README.md deleted file mode 100644 index 31a824069..000000000 --- a/vendor/symfony/debug/README.md +++ /dev/null @@ -1,30 +0,0 @@ -Debug Component -=============== - -**CAUTION**: this component is deprecated since Symfony 4.4. Instead, use the -[ErrorHandler component](https://github.com/symfony/symfony/tree/master/src/Symfony/Component/ErrorHandler). - ------ - -The Debug component provides tools to ease debugging PHP code. - -Getting Started ---------------- - -``` -$ composer require symfony/debug -``` - -```php -use Symfony\Component\Debug\Debug; - -Debug::enable(); -``` - -Resources ---------- - - * [Contributing](https://symfony.com/doc/current/contributing/index.html) - * [Report issues](https://github.com/symfony/symfony/issues) and - [send Pull Requests](https://github.com/symfony/symfony/pulls) - in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json deleted file mode 100644 index 01e8f7832..000000000 --- a/vendor/symfony/debug/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/debug", - "type": "library", - "description": "Provides tools to ease debugging PHP code", - "keywords": [], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\Debug\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/vendor/symfony/dom-crawler/AbstractUriElement.php b/vendor/symfony/dom-crawler/AbstractUriElement.php index 7c7aecc6f..8ff0b992a 100644 --- a/vendor/symfony/dom-crawler/AbstractUriElement.php +++ b/vendor/symfony/dom-crawler/AbstractUriElement.php @@ -56,7 +56,7 @@ abstract class AbstractUriElement /** * Gets the node associated with this link. * - * @return \DOMElement A \DOMElement instance + * @return \DOMElement */ public function getNode() { @@ -66,7 +66,7 @@ abstract class AbstractUriElement /** * Gets the method associated with this link. * - * @return string The method + * @return string */ public function getMethod() { @@ -76,50 +76,11 @@ abstract class AbstractUriElement /** * Gets the URI associated with this link. * - * @return string The URI + * @return string */ public function getUri() { - $uri = trim($this->getRawUri()); - - // absolute URL? - if (null !== parse_url($uri, \PHP_URL_SCHEME)) { - return $uri; - } - - // empty URI - if (!$uri) { - return $this->currentUri; - } - - // an anchor - if ('#' === $uri[0]) { - return $this->cleanupAnchor($this->currentUri).$uri; - } - - $baseUri = $this->cleanupUri($this->currentUri); - - if ('?' === $uri[0]) { - return $baseUri.$uri; - } - - // absolute URL with relative schema - if (str_starts_with($uri, '//')) { - return preg_replace('#^([^/]*)//.*$#', '$1', $baseUri).$uri; - } - - $baseUri = preg_replace('#^(.*?//[^/]*)(?:\/.*)?$#', '$1', $baseUri); - - // absolute path - if ('/' === $uri[0]) { - return $baseUri.$uri; - } - - // relative path - $path = parse_url(substr($this->currentUri, \strlen($baseUri)), \PHP_URL_PATH); - $path = $this->canonicalizePath(substr($path, 0, strrpos($path, '/')).'/'.$uri); - - return $baseUri.('' === $path || '/' !== $path[0] ? '/' : '').$path; + return UriResolver::resolve($this->getRawUri(), $this->currentUri); } /** @@ -136,7 +97,7 @@ abstract class AbstractUriElement * * @return string */ - protected function canonicalizePath($path) + protected function canonicalizePath(string $path) { if ('' === $path || '/' === $path) { return $path; @@ -167,36 +128,4 @@ abstract class AbstractUriElement * @throws \LogicException If given node is not an anchor */ abstract protected function setNode(\DOMElement $node); - - /** - * Removes the query string and the anchor from the given uri. - */ - private function cleanupUri(string $uri): string - { - return $this->cleanupQuery($this->cleanupAnchor($uri)); - } - - /** - * Remove the query string from the uri. - */ - private function cleanupQuery(string $uri): string - { - if (false !== $pos = strpos($uri, '?')) { - return substr($uri, 0, $pos); - } - - return $uri; - } - - /** - * Remove the anchor from the uri. - */ - private function cleanupAnchor(string $uri): string - { - if (false !== $pos = strpos($uri, '#')) { - return substr($uri, 0, $pos); - } - - return $uri; - } } diff --git a/vendor/symfony/dom-crawler/CHANGELOG.md b/vendor/symfony/dom-crawler/CHANGELOG.md index da108588d..6904b37aa 100644 --- a/vendor/symfony/dom-crawler/CHANGELOG.md +++ b/vendor/symfony/dom-crawler/CHANGELOG.md @@ -1,6 +1,30 @@ CHANGELOG ========= +5.4 +--- + + * Add `Crawler::innerText` method. + +5.3 +--- + + * The `parents()` method is deprecated. Use `ancestors()` instead. + * Marked the `containsOption()`, `availableOptionValues()`, and `disableValidation()` methods of the + `ChoiceFormField` class as internal + +5.1.0 +----- + + * Added an internal cache layer on top of the CssSelectorConverter + * Added `UriResolver` to resolve an URI according to a base URI + +5.0.0 +----- + + * Added argument `$selector` to `Crawler::children()` + * Added argument `$default` to `Crawler::text()` and `html()` + 4.4.0 ----- diff --git a/vendor/symfony/dom-crawler/Crawler.php b/vendor/symfony/dom-crawler/Crawler.php index ec8e023ec..094244341 100644 --- a/vendor/symfony/dom-crawler/Crawler.php +++ b/vendor/symfony/dom-crawler/Crawler.php @@ -18,6 +18,8 @@ use Symfony\Component\CssSelector\CssSelectorConverter; * Crawler eases navigation of a list of \DOMNode objects. * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<int, \DOMNode> */ class Crawler implements \Countable, \IteratorAggregate { @@ -40,6 +42,13 @@ class Crawler implements \Countable, \IteratorAggregate */ private $namespaces = []; + /** + * A map of cached namespaces. + * + * @var \ArrayObject + */ + private $cachedNamespaces; + /** * The base href value. * @@ -53,7 +62,7 @@ class Crawler implements \Countable, \IteratorAggregate private $document; /** - * @var \DOMNode[] + * @var list<\DOMNode> */ private $nodes = []; @@ -77,6 +86,7 @@ class Crawler implements \Countable, \IteratorAggregate $this->uri = $uri; $this->baseHref = $baseHref ?: $uri; $this->html5Parser = class_exists(HTML5::class) ? new HTML5(['disable_html_ns' => true]) : null; + $this->cachedNamespaces = new \ArrayObject(); $this->add($node); } @@ -108,6 +118,7 @@ class Crawler implements \Countable, \IteratorAggregate { $this->nodes = []; $this->document = null; + $this->cachedNamespaces = new \ArrayObject(); } /** @@ -131,7 +142,7 @@ class Crawler implements \Countable, \IteratorAggregate } elseif (\is_string($node)) { $this->addContent($node); } elseif (null !== $node) { - throw new \InvalidArgumentException(sprintf('Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "%s".', \is_object($node) ? \get_class($node) : \gettype($node))); + throw new \InvalidArgumentException(sprintf('Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "%s".', get_debug_type($node))); } } @@ -141,11 +152,8 @@ class Crawler implements \Countable, \IteratorAggregate * If the charset is not set via the content type, it is assumed to be UTF-8, * or ISO-8859-1 as a fallback, which is the default charset defined by the * HTTP 1.1 specification. - * - * @param string $content A string to parse as HTML/XML - * @param string|null $type The content type of the string */ - public function addContent($content, $type = null) + public function addContent(string $content, string $type = null) { if (empty($type)) { $type = str_starts_with($content, '<?xml') ? 'application/xml' : 'text/html'; @@ -184,11 +192,8 @@ class Crawler implements \Countable, \IteratorAggregate * internal errors via libxml_use_internal_errors(true) * and then, get the errors via libxml_get_errors(). Be * sure to clear errors with libxml_clear_errors() afterward. - * - * @param string $content The HTML content - * @param string $charset The charset */ - public function addHtmlContent($content, $charset = 'UTF-8') + public function addHtmlContent(string $content, string $charset = 'UTF-8') { $dom = $this->parseHtmlString($content, $charset); $this->addDocument($dom); @@ -218,13 +223,11 @@ class Crawler implements \Countable, \IteratorAggregate * and then, get the errors via libxml_get_errors(). Be * sure to clear errors with libxml_clear_errors() afterward. * - * @param string $content The XML content - * @param string $charset The charset - * @param int $options Bitwise OR of the libxml option constants - * LIBXML_PARSEHUGE is dangerous, see - * http://symfony.com/blog/security-release-symfony-2-0-17-released + * @param int $options Bitwise OR of the libxml option constants + * LIBXML_PARSEHUGE is dangerous, see + * http://symfony.com/blog/security-release-symfony-2-0-17-released */ - public function addXmlContent($content, $charset = 'UTF-8', $options = \LIBXML_NONET) + public function addXmlContent(string $content, string $charset = 'UTF-8', int $options = \LIBXML_NONET) { // remove the default namespace if it's the only namespace to make XPath expressions simpler if (!preg_match('/xmlns:/', $content)) { @@ -321,11 +324,9 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns a node given its position in the node list. * - * @param int $position The position - * * @return static */ - public function eq($position) + public function eq(int $position) { if (isset($this->nodes[$position])) { return $this->createSubCrawler($this->nodes[$position]); @@ -363,12 +364,9 @@ class Crawler implements \Countable, \IteratorAggregate /** * Slices the list of nodes by $offset and $length. * - * @param int $offset - * @param int $length - * * @return static */ - public function slice($offset = 0, $length = null) + public function slice(int $offset = 0, int $length = null) { return $this->createSubCrawler(\array_slice($this->nodes, $offset, $length)); } @@ -502,13 +500,27 @@ class Crawler implements \Countable, \IteratorAggregate } /** - * Returns the parents nodes of the current selection. + * Returns the parent nodes of the current selection. * * @return static * * @throws \InvalidArgumentException When current node is empty */ public function parents() + { + trigger_deprecation('symfony/dom-crawler', '5.3', 'The %s() method is deprecated, use ancestors() instead.', __METHOD__); + + return $this->ancestors(); + } + + /** + * Returns the ancestors of the current selection. + * + * @return static + * + * @throws \InvalidArgumentException When the current node is empty + */ + public function ancestors() { if (!$this->nodes) { throw new \InvalidArgumentException('The current node list is empty.'); @@ -529,20 +541,13 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns the children nodes of the current selection. * - * @param string|null $selector An optional CSS selector to filter children - * * @return static * * @throws \InvalidArgumentException When current node is empty * @throws \RuntimeException If the CssSelector Component is not available and $selector is provided */ - public function children(/* string $selector = null */) + public function children(string $selector = null) { - if (\func_num_args() < 1 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { - @trigger_error(sprintf('The "%s()" method will have a new "string $selector = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - $selector = 0 < \func_num_args() ? func_get_arg(0) : null; - if (!$this->nodes) { throw new \InvalidArgumentException('The current node list is empty.'); } @@ -562,13 +567,11 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns the attribute value of the first node of the list. * - * @param string $attribute The attribute name - * - * @return string|null The attribute value or null if the attribute does not exist + * @return string|null * * @throws \InvalidArgumentException When current node is empty */ - public function attr($attribute) + public function attr(string $attribute) { if (!$this->nodes) { throw new \InvalidArgumentException('The current node list is empty.'); @@ -582,7 +585,7 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns the node name of the first node of the list. * - * @return string The node name + * @return string * * @throws \InvalidArgumentException When current node is empty */ @@ -603,15 +606,15 @@ class Crawler implements \Countable, \IteratorAggregate * @param string|null $default When not null: the value to return when the current node is empty * @param bool $normalizeWhitespace Whether whitespaces should be trimmed and normalized to single spaces * - * @return string The node value + * @return string * * @throws \InvalidArgumentException When current node is empty */ - public function text(/* string $default = null, bool $normalizeWhitespace = true */) + public function text(string $default = null, bool $normalizeWhitespace = true) { if (!$this->nodes) { - if (0 < \func_num_args() && null !== func_get_arg(0)) { - return (string) func_get_arg(0); + if (null !== $default) { + return $default; } throw new \InvalidArgumentException('The current node list is empty.'); @@ -619,35 +622,35 @@ class Crawler implements \Countable, \IteratorAggregate $text = $this->getNode(0)->nodeValue; - if (\func_num_args() <= 1) { - if (trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $text), " \n\r\t\x0C") !== $text) { - @trigger_error(sprintf('"%s()" will normalize whitespaces by default in Symfony 5.0, set the second "$normalizeWhitespace" argument to false to retrieve the non-normalized version of the text.', __METHOD__), \E_USER_DEPRECATED); - } - - return $text; - } - - if (\func_num_args() > 1 && func_get_arg(1)) { + if ($normalizeWhitespace) { return trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $text), " \n\r\t\x0C"); } return $text; } + /** + * Returns only the inner text that is the direct descendent of the current node, excluding any child nodes. + */ + public function innerText(): string + { + return $this->filterXPath('.//text()')->text(); + } + /** * Returns the first node of the list as HTML. * * @param string|null $default When not null: the value to return when the current node is empty * - * @return string The node html + * @return string * * @throws \InvalidArgumentException When current node is empty */ - public function html(/* string $default = null */) + public function html(string $default = null) { if (!$this->nodes) { - if (0 < \func_num_args() && null !== func_get_arg(0)) { - return (string) func_get_arg(0); + if (null !== $default) { + return $default; } throw new \InvalidArgumentException('The current node list is empty.'); @@ -690,11 +693,9 @@ class Crawler implements \Countable, \IteratorAggregate * Since an XPath expression might evaluate to either a simple type or a \DOMNodeList, * this method will return either an array of simple types or a new Crawler instance. * - * @param string $xpath An XPath expression - * - * @return array|Crawler An array of evaluation results or a new Crawler instance + * @return array|Crawler */ - public function evaluate($xpath) + public function evaluate(string $xpath) { if (null === $this->document) { throw new \LogicException('Cannot evaluate the expression on an uninitialized crawler.'); @@ -723,13 +724,10 @@ class Crawler implements \Countable, \IteratorAggregate * * $crawler->filter('h1 a')->extract(['_text', 'href']); * - * @param array $attributes An array of attributes - * - * @return array An array of extracted values + * @return array */ - public function extract($attributes) + public function extract(array $attributes) { - $attributes = (array) $attributes; $count = \count($attributes); $data = []; @@ -759,11 +757,9 @@ class Crawler implements \Countable, \IteratorAggregate * This means that a child selector "div" or "./div" will match only * the div elements of the current crawler, not their children. * - * @param string $xpath An XPath expression - * * @return static */ - public function filterXPath($xpath) + public function filterXPath(string $xpath) { $xpath = $this->relativize($xpath); @@ -780,13 +776,11 @@ class Crawler implements \Countable, \IteratorAggregate * * This method only works if you have installed the CssSelector Symfony Component. * - * @param string $selector A CSS selector - * * @return static * * @throws \RuntimeException if the CssSelector Component is not available */ - public function filter($selector) + public function filter(string $selector) { $converter = $this->createCssSelectorConverter(); @@ -797,11 +791,9 @@ class Crawler implements \Countable, \IteratorAggregate /** * Selects links by name or alt value for clickable images. * - * @param string $value The link text - * * @return static */ - public function selectLink($value) + public function selectLink(string $value) { return $this->filterRelativeXPath( sprintf('descendant-or-self::a[contains(concat(\' \', normalize-space(string(.)), \' \'), %1$s) or ./img[contains(concat(\' \', normalize-space(string(@alt)), \' \'), %1$s)]]', static::xpathLiteral(' '.$value.' ')) @@ -811,11 +803,9 @@ class Crawler implements \Countable, \IteratorAggregate /** * Selects images by alt value. * - * @param string $value The image alt - * - * @return static A new instance of Crawler with the filtered list of nodes + * @return static */ - public function selectImage($value) + public function selectImage(string $value) { $xpath = sprintf('descendant-or-self::img[contains(normalize-space(string(@alt)), %s)]', static::xpathLiteral($value)); @@ -825,11 +815,9 @@ class Crawler implements \Countable, \IteratorAggregate /** * Selects a button by name or alt value for images. * - * @param string $value The button text - * * @return static */ - public function selectButton($value) + public function selectButton(string $value) { return $this->filterRelativeXPath( sprintf('descendant-or-self::input[((contains(%1$s, "submit") or contains(%1$s, "button")) and contains(concat(\' \', normalize-space(string(@value)), \' \'), %2$s)) or (contains(%1$s, "image") and contains(concat(\' \', normalize-space(string(@alt)), \' \'), %2$s)) or @id=%3$s or @name=%3$s] | descendant-or-self::button[contains(concat(\' \', normalize-space(string(.)), \' \'), %2$s) or @id=%3$s or @name=%3$s]', 'translate(@type, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")', static::xpathLiteral(' '.$value.' '), static::xpathLiteral($value)) @@ -839,13 +827,11 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns a Link object for the first node in the list. * - * @param string $method The method for the link (get by default) - * - * @return Link A Link instance + * @return Link * * @throws \InvalidArgumentException If the current node list is empty or the selected node is not instance of DOMElement */ - public function link($method = 'get') + public function link(string $method = 'get') { if (!$this->nodes) { throw new \InvalidArgumentException('The current node list is empty.'); @@ -854,7 +840,7 @@ class Crawler implements \Countable, \IteratorAggregate $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_debug_type($node))); } return new Link($node, $this->baseHref, $method); @@ -863,7 +849,7 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns an array of Link objects for the nodes in the list. * - * @return Link[] An array of Link instances + * @return Link[] * * @throws \InvalidArgumentException If the current node list contains non-DOMElement instances */ @@ -872,7 +858,7 @@ class Crawler implements \Countable, \IteratorAggregate $links = []; foreach ($this->nodes as $node) { if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', \get_class($node))); + throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', get_debug_type($node))); } $links[] = new Link($node, $this->baseHref, 'get'); @@ -884,7 +870,7 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns an Image object for the first node in the list. * - * @return Image An Image instance + * @return Image * * @throws \InvalidArgumentException If the current node list is empty */ @@ -897,7 +883,7 @@ class Crawler implements \Countable, \IteratorAggregate $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_debug_type($node))); } return new Image($node, $this->baseHref); @@ -906,14 +892,14 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns an array of Image objects for the nodes in the list. * - * @return Image[] An array of Image instances + * @return Image[] */ public function images() { $images = []; foreach ($this as $node) { if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', \get_class($node))); + throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', get_debug_type($node))); } $images[] = new Image($node, $this->baseHref); @@ -925,14 +911,11 @@ class Crawler implements \Countable, \IteratorAggregate /** * Returns a Form object for the first node in the list. * - * @param array $values An array of values for the form fields - * @param string $method The method for the form - * - * @return Form A Form instance + * @return Form * * @throws \InvalidArgumentException If the current node list is empty or the selected node is not instance of DOMElement */ - public function form(array $values = null, $method = null) + public function form(array $values = null, string $method = null) { if (!$this->nodes) { throw new \InvalidArgumentException('The current node list is empty.'); @@ -941,7 +924,7 @@ class Crawler implements \Countable, \IteratorAggregate $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_debug_type($node))); } $form = new Form($node, $this->uri, $method, $this->baseHref); @@ -955,19 +938,13 @@ class Crawler implements \Countable, \IteratorAggregate /** * Overloads a default namespace prefix to be used with XPath and CSS expressions. - * - * @param string $prefix */ - public function setDefaultNamespacePrefix($prefix) + public function setDefaultNamespacePrefix(string $prefix) { $this->defaultNamespacePrefix = $prefix; } - /** - * @param string $prefix - * @param string $namespace - */ - public function registerNamespace($prefix, $namespace) + public function registerNamespace(string $prefix, string $namespace) { $this->namespaces[$prefix] = $namespace; } @@ -988,11 +965,9 @@ class Crawler implements \Countable, \IteratorAggregate * echo Crawler::xpathLiteral('a\'b"c'); * //prints concat('a', "'", 'b"c') * - * @param string $s String to be escaped - * - * @return string Converted string + * @return string */ - public static function xpathLiteral($s) + public static function xpathLiteral(string $s) { if (!str_contains($s, "'")) { return sprintf("'%s'", $s); @@ -1025,14 +1000,16 @@ class Crawler implements \Countable, \IteratorAggregate * * @return static */ - private function filterRelativeXPath(string $xpath) + private function filterRelativeXPath(string $xpath): object { - $prefixes = $this->findNamespacePrefixes($xpath); - $crawler = $this->createSubCrawler(null); + if (null === $this->document) { + return $crawler; + } + + $domxpath = $this->createDOMXPath($this->document, $this->findNamespacePrefixes($xpath)); foreach ($this->nodes as $node) { - $domxpath = $this->createDOMXPath($node->ownerDocument, $prefixes); $crawler->add($domxpath->query($xpath, $node)); } @@ -1130,11 +1107,9 @@ class Crawler implements \Countable, \IteratorAggregate } /** - * @param int $position - * * @return \DOMNode|null */ - public function getNode($position) + public function getNode(int $position) { return $this->nodes[$position] ?? null; } @@ -1149,7 +1124,7 @@ class Crawler implements \Countable, \IteratorAggregate } /** - * @return \ArrayIterator|\DOMNode[] + * @return \ArrayIterator<int, \DOMNode> */ #[\ReturnTypeWillChange] public function getIterator() @@ -1158,12 +1133,9 @@ class Crawler implements \Countable, \IteratorAggregate } /** - * @param \DOMElement $node - * @param string $siblingDir - * * @return array */ - protected function sibling($node, $siblingDir = 'nextSibling') + protected function sibling(\DOMNode $node, string $siblingDir = 'nextSibling') { $nodes = []; @@ -1250,14 +1222,18 @@ class Crawler implements \Countable, \IteratorAggregate */ private function discoverNamespace(\DOMXPath $domxpath, string $prefix): ?string { - if (isset($this->namespaces[$prefix])) { + if (\array_key_exists($prefix, $this->namespaces)) { return $this->namespaces[$prefix]; } + if ($this->cachedNamespaces->offsetExists($prefix)) { + return $this->cachedNamespaces[$prefix]; + } + // ask for one namespace, otherwise we'd get a collection with an item for each node $namespaces = $domxpath->query(sprintf('(//namespace::*[name()="%s"])[last()]', $this->defaultNamespacePrefix === $prefix ? '' : $prefix)); - return ($node = $namespaces->item(0)) ? $node->nodeValue : null; + return $this->cachedNamespaces[$prefix] = ($node = $namespaces->item(0)) ? $node->nodeValue : null; } private function findNamespacePrefixes(string $xpath): array @@ -1276,12 +1252,13 @@ class Crawler implements \Countable, \IteratorAggregate * * @return static */ - private function createSubCrawler($nodes) + private function createSubCrawler($nodes): object { $crawler = new static($nodes, $this->uri, $this->baseHref); $crawler->isHtml = $this->isHtml; $crawler->document = $this->document; $crawler->namespaces = $this->namespaces; + $crawler->cachedNamespaces = $this->cachedNamespaces; $crawler->html5Parser = $this->html5Parser; return $crawler; diff --git a/vendor/symfony/dom-crawler/Field/ChoiceFormField.php b/vendor/symfony/dom-crawler/Field/ChoiceFormField.php index 083391a0b..9eed27ba4 100644 --- a/vendor/symfony/dom-crawler/Field/ChoiceFormField.php +++ b/vendor/symfony/dom-crawler/Field/ChoiceFormField.php @@ -113,7 +113,7 @@ class ChoiceFormField extends FormField /** * Sets the value of the field. * - * @param string|array|bool $value The value of the field + * @param string|array|bool|null $value The value of the field * * @throws \InvalidArgumentException When value type provided is not correct */ @@ -176,7 +176,7 @@ class ChoiceFormField extends FormField /** * Returns the type of the choice field (radio, select, or checkbox). * - * @return string The type + * @return string */ public function getType() { @@ -186,7 +186,7 @@ class ChoiceFormField extends FormField /** * Returns true if the field accepts multiple values. * - * @return bool true if the field accepts multiple values, false otherwise + * @return bool */ public function isMultiple() { @@ -268,12 +268,11 @@ class ChoiceFormField extends FormField /** * Checks whether given value is in the existing options. * - * @param string $optionValue - * @param array $options + * @internal since Symfony 5.3 * * @return bool */ - public function containsOption($optionValue, $options) + public function containsOption(string $optionValue, array $options) { if ($this->validationDisabled) { return true; @@ -291,6 +290,8 @@ class ChoiceFormField extends FormField /** * Returns list of available field options. * + * @internal since Symfony 5.3 + * * @return array */ public function availableOptionValues() @@ -307,7 +308,9 @@ class ChoiceFormField extends FormField /** * Disables the internal validation of the field. * - * @return self + * @internal since Symfony 5.3 + * + * @return $this */ public function disableValidation() { diff --git a/vendor/symfony/dom-crawler/Field/FileFormField.php b/vendor/symfony/dom-crawler/Field/FileFormField.php index 3d0b22f07..bd97e7688 100644 --- a/vendor/symfony/dom-crawler/Field/FileFormField.php +++ b/vendor/symfony/dom-crawler/Field/FileFormField.php @@ -25,7 +25,7 @@ class FileFormField extends FormField * * @throws \InvalidArgumentException When error code doesn't exist */ - public function setErrorCode($error) + public function setErrorCode(int $error) { $codes = [\UPLOAD_ERR_INI_SIZE, \UPLOAD_ERR_FORM_SIZE, \UPLOAD_ERR_PARTIAL, \UPLOAD_ERR_NO_FILE, \UPLOAD_ERR_NO_TMP_DIR, \UPLOAD_ERR_CANT_WRITE, \UPLOAD_ERR_EXTENSION]; if (!\in_array($error, $codes)) { @@ -37,20 +37,16 @@ class FileFormField extends FormField /** * Sets the value of the field. - * - * @param string $value The value of the field */ - public function upload($value) + public function upload(?string $value) { $this->setValue($value); } /** * Sets the value of the field. - * - * @param string|null $value The value of the field */ - public function setValue($value) + public function setValue(?string $value) { if (null !== $value && is_readable($value)) { $error = \UPLOAD_ERR_OK; @@ -80,10 +76,8 @@ class FileFormField extends FormField /** * Sets path to the file as string for simulating HTTP request. - * - * @param string $path The path to the file */ - public function setFilePath($path) + public function setFilePath(string $path) { parent::setValue($path); } diff --git a/vendor/symfony/dom-crawler/Field/FormField.php b/vendor/symfony/dom-crawler/Field/FormField.php index 0bc4f5447..066af4a16 100644 --- a/vendor/symfony/dom-crawler/Field/FormField.php +++ b/vendor/symfony/dom-crawler/Field/FormField.php @@ -79,7 +79,7 @@ abstract class FormField /** * Returns the name of the field. * - * @return string The name of the field + * @return string */ public function getName() { @@ -89,7 +89,7 @@ abstract class FormField /** * Gets the value of the field. * - * @return string|array The value of the field + * @return string|array|null */ public function getValue() { @@ -98,18 +98,16 @@ abstract class FormField /** * Sets the value of the field. - * - * @param string|array|bool|null $value The value of the field */ - public function setValue($value) + public function setValue(?string $value) { - $this->value = (string) $value; + $this->value = $value ?? ''; } /** * Returns true if the field should be included in the submitted values. * - * @return bool true if the field should be included in the submitted values, false otherwise + * @return bool */ public function hasValue() { diff --git a/vendor/symfony/dom-crawler/Form.php b/vendor/symfony/dom-crawler/Form.php index 0c86116a6..ebad35b38 100644 --- a/vendor/symfony/dom-crawler/Form.php +++ b/vendor/symfony/dom-crawler/Form.php @@ -55,7 +55,7 @@ class Form extends Link implements \ArrayAccess /** * Gets the form node associated with this form. * - * @return \DOMElement A \DOMElement instance + * @return \DOMElement */ public function getFormNode() { @@ -83,7 +83,7 @@ class Form extends Link implements \ArrayAccess * * The returned array does not include file fields (@see getFiles). * - * @return array An array of field values + * @return array */ public function getValues() { @@ -104,7 +104,7 @@ class Form extends Link implements \ArrayAccess /** * Gets the file field values. * - * @return array An array of file field values + * @return array */ public function getFiles() { @@ -133,7 +133,7 @@ class Form extends Link implements \ArrayAccess * This method converts fields with the array notation * (like foo[bar] to arrays) like PHP does. * - * @return array An array of field values + * @return array */ public function getPhpValues() { @@ -143,11 +143,11 @@ class Form extends Link implements \ArrayAccess if (!empty($qs)) { parse_str($qs, $expandedValue); $varName = substr($name, 0, \strlen(key($expandedValue))); - $values = array_replace_recursive($values, [$varName => current($expandedValue)]); + $values[] = [$varName => current($expandedValue)]; } } - return $values; + return array_replace_recursive([], ...$values); } /** @@ -160,7 +160,7 @@ class Form extends Link implements \ArrayAccess * For a compound file field foo[bar] it will create foo[bar][name], * instead of foo[name][bar] which would be found in $_FILES. * - * @return array An array of file field values + * @return array */ public function getPhpFiles() { @@ -182,11 +182,11 @@ class Form extends Link implements \ArrayAccess reset($expandedValue); - $values = array_replace_recursive($values, [$varName => current($expandedValue)]); + $values[] = [$varName => current($expandedValue)]; } } - return $values; + return array_replace_recursive([], ...$values); } /** @@ -196,7 +196,7 @@ class Form extends Link implements \ArrayAccess * This method merges the value if the method is GET to mimics * browser behavior. * - * @return string The URI + * @return string */ public function getUri() { @@ -234,7 +234,7 @@ class Form extends Link implements \ArrayAccess * * If no method is defined in the form, GET is returned. * - * @return string The method + * @return string */ public function getMethod() { @@ -263,21 +263,17 @@ class Form extends Link implements \ArrayAccess /** * Returns true if the named field exists. * - * @param string $name The field name - * - * @return bool true if the field exists, false otherwise + * @return bool */ - public function has($name) + public function has(string $name) { return $this->fields->has($name); } /** * Removes a field from the form. - * - * @param string $name The field name */ - public function remove($name) + public function remove(string $name) { $this->fields->remove($name); } @@ -285,13 +281,11 @@ class Form extends Link implements \ArrayAccess /** * Gets a named field. * - * @param string $name The field name - * - * @return FormField|FormField[]|FormField[][] The value of the field + * @return FormField|FormField[]|FormField[][] * * @throws \InvalidArgumentException When field is not present in this form */ - public function get($name) + public function get(string $name) { return $this->fields->get($name); } @@ -319,7 +313,7 @@ class Form extends Link implements \ArrayAccess * * @param string $name The field name * - * @return bool true if the field exists, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function offsetExists($name) @@ -332,7 +326,7 @@ class Form extends Link implements \ArrayAccess * * @param string $name The field name * - * @return FormField|FormField[]|FormField[][] The value of the field + * @return FormField|FormField[]|FormField[][] * * @throws \InvalidArgumentException if the field does not exist */ @@ -374,7 +368,7 @@ class Form extends Link implements \ArrayAccess /** * Disables validation. * - * @return self + * @return $this */ public function disableValidation() { diff --git a/vendor/symfony/dom-crawler/FormFieldRegistry.php b/vendor/symfony/dom-crawler/FormFieldRegistry.php index f5807e600..7f131e724 100644 --- a/vendor/symfony/dom-crawler/FormFieldRegistry.php +++ b/vendor/symfony/dom-crawler/FormFieldRegistry.php @@ -47,7 +47,7 @@ class FormFieldRegistry } /** - * Removes a field based on the fully qualifed name and its children from the registry. + * Removes a field based on the fully qualified name and its children from the registry. */ public function remove(string $name) { @@ -64,9 +64,9 @@ class FormFieldRegistry } /** - * Returns the value of the field based on the fully qualifed name and its children. + * Returns the value of the field based on the fully qualified name and its children. * - * @return FormField|FormField[]|FormField[][] The value of the field + * @return FormField|FormField[]|FormField[][] * * @throws \InvalidArgumentException if the field does not exist */ @@ -87,8 +87,6 @@ class FormFieldRegistry /** * Tests whether the form has the given field based on the fully qualified name. - * - * @return bool Whether the form has the given field */ public function has(string $name): bool { @@ -157,7 +155,7 @@ class FormFieldRegistry * * getSegments('base[foo][3][]') = ['base', 'foo, '3', '']; * - * @return string[] The list of segments + * @return string[] */ private function getSegments(string $name): array { diff --git a/vendor/symfony/dom-crawler/UriResolver.php b/vendor/symfony/dom-crawler/UriResolver.php new file mode 100644 index 000000000..be64f5257 --- /dev/null +++ b/vendor/symfony/dom-crawler/UriResolver.php @@ -0,0 +1,136 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DomCrawler; + +/** + * The UriResolver class takes an URI (relative, absolute, fragment, etc.) + * and turns it into an absolute URI against another given base URI. + * + * @author Fabien Potencier <fabien@symfony.com> + * @author Grégoire Pineau <lyrixx@lyrixx.info> + */ +class UriResolver +{ + /** + * Resolves a URI according to a base URI. + * + * For example if $uri=/foo/bar and $baseUri=https://symfony.com it will + * return https://symfony.com/foo/bar + * + * If the $uri is not absolute you must pass an absolute $baseUri + */ + public static function resolve(string $uri, ?string $baseUri): string + { + $uri = trim($uri); + + // absolute URL? + if (null !== parse_url($uri, \PHP_URL_SCHEME)) { + return $uri; + } + + if (null === $baseUri) { + throw new \InvalidArgumentException('The URI is relative, so you must define its base URI passing an absolute URL.'); + } + + // empty URI + if (!$uri) { + return $baseUri; + } + + // an anchor + if ('#' === $uri[0]) { + return self::cleanupAnchor($baseUri).$uri; + } + + $baseUriCleaned = self::cleanupUri($baseUri); + + if ('?' === $uri[0]) { + return $baseUriCleaned.$uri; + } + + // absolute URL with relative schema + if (0 === strpos($uri, '//')) { + return preg_replace('#^([^/]*)//.*$#', '$1', $baseUriCleaned).$uri; + } + + $baseUriCleaned = preg_replace('#^(.*?//[^/]*)(?:\/.*)?$#', '$1', $baseUriCleaned); + + // absolute path + if ('/' === $uri[0]) { + return $baseUriCleaned.$uri; + } + + // relative path + $path = parse_url(substr($baseUri, \strlen($baseUriCleaned)), \PHP_URL_PATH); + $path = self::canonicalizePath(substr($path, 0, strrpos($path, '/')).'/'.$uri); + + return $baseUriCleaned.('' === $path || '/' !== $path[0] ? '/' : '').$path; + } + + /** + * Returns the canonicalized URI path (see RFC 3986, section 5.2.4). + */ + private static function canonicalizePath(string $path): string + { + if ('' === $path || '/' === $path) { + return $path; + } + + if ('.' === substr($path, -1)) { + $path .= '/'; + } + + $output = []; + + foreach (explode('/', $path) as $segment) { + if ('..' === $segment) { + array_pop($output); + } elseif ('.' !== $segment) { + $output[] = $segment; + } + } + + return implode('/', $output); + } + + /** + * Removes the query string and the anchor from the given uri. + */ + private static function cleanupUri(string $uri): string + { + return self::cleanupQuery(self::cleanupAnchor($uri)); + } + + /** + * Removes the query string from the uri. + */ + private static function cleanupQuery(string $uri): string + { + if (false !== $pos = strpos($uri, '?')) { + return substr($uri, 0, $pos); + } + + return $uri; + } + + /** + * Removes the anchor from the uri. + */ + private static function cleanupAnchor(string $uri): string + { + if (false !== $pos = strpos($uri, '#')) { + return substr($uri, 0, $pos); + } + + return $uri; + } +} diff --git a/vendor/symfony/dom-crawler/composer.json b/vendor/symfony/dom-crawler/composer.json index ecf2c15a9..f89432dac 100644 --- a/vendor/symfony/dom-crawler/composer.json +++ b/vendor/symfony/dom-crawler/composer.json @@ -16,13 +16,14 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", "masterminds/html5": "^2.6" }, "conflict": { diff --git a/vendor/symfony/error-handler/CHANGELOG.md b/vendor/symfony/error-handler/CHANGELOG.md index c7c245a43..2976566a1 100644 --- a/vendor/symfony/error-handler/CHANGELOG.md +++ b/vendor/symfony/error-handler/CHANGELOG.md @@ -1,6 +1,22 @@ CHANGELOG ========= +5.4 +--- + + * Make `DebugClassLoader` trigger deprecation notices on missing return types + * Add `SYMFONY_PATCH_TYPE_DECLARATIONS='force=2'` mode to `DebugClassLoader` to turn annotations into native return types + +5.2.0 +----- + + * added the ability to set `HtmlErrorRenderer::$template` to a custom template to render when not in debug mode. + +5.1.0 +----- + + * The `HtmlErrorRenderer` and `SerializerErrorRenderer` add `X-Debug-Exception` and `X-Debug-Exception-File` headers in debug mode. + 4.4.0 ----- diff --git a/vendor/symfony/error-handler/DebugClassLoader.php b/vendor/symfony/error-handler/DebugClassLoader.php index ce05790b1..746e8d44a 100644 --- a/vendor/symfony/error-handler/DebugClassLoader.php +++ b/vendor/symfony/error-handler/DebugClassLoader.php @@ -20,6 +20,7 @@ use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation; use PHPUnit\Framework\MockObject\MockObject; use Prophecy\Prophecy\ProphecySubjectInterface; use ProxyManager\Proxy\ProxyInterface; +use Symfony\Component\ErrorHandler\Internal\TentativeTypes; /** * Autoloader checking if the class is really defined in the file found. @@ -32,10 +33,9 @@ use ProxyManager\Proxy\ProxyInterface; * This behavior is controlled by the SYMFONY_PATCH_TYPE_DECLARATIONS env var, * which is a url-encoded array with the follow parameters: * - "force": any value enables deprecation notices - can be any of: - * - "docblock" to patch only docblock annotations - * - "object" to turn union types to the "object" type when possible (not recommended) - * - "1" to add all possible return types including magic methods - * - "0" to add possible return types excluding magic methods + * - "phpdoc" to patch only docblock annotations + * - "2" to add all possible return types + * - "1" to add return types but only to tests/final/internal/private methods * - "php": the target version of PHP - e.g. "7.1" doesn't generate "object" types * - "deprecations": "1" to trigger a deprecation notice when a child class misses a * return type while the parent declares an "@return" annotation @@ -56,8 +56,8 @@ class DebugClassLoader 'null' => 'null', 'resource' => 'resource', 'boolean' => 'bool', - 'true' => 'bool', - 'false' => 'bool', + 'true' => 'true', + 'false' => 'false', 'integer' => 'int', 'array' => 'array', 'bool' => 'bool', @@ -70,19 +70,17 @@ class DebugClassLoader 'self' => 'self', 'parent' => 'parent', 'mixed' => 'mixed', - 'list' => 'array', - 'class-string' => 'string', - ] + (\PHP_VERSION_ID >= 80000 ? [ 'static' => 'static', '$this' => 'static', - ] : [ - 'static' => 'object', - '$this' => 'object', - ]); + 'list' => 'array', + 'class-string' => 'string', + 'never' => 'never', + ]; private const BUILTIN_RETURN_TYPES = [ 'void' => true, 'array' => true, + 'false' => true, 'bool' => true, 'callable' => true, 'float' => true, @@ -92,78 +90,19 @@ class DebugClassLoader 'string' => true, 'self' => true, 'parent' => true, - ] + (\PHP_VERSION_ID >= 80000 ? [ 'mixed' => true, 'static' => true, - ] : []); - - private const MAGIC_METHODS = [ - '__set' => 'void', - '__isset' => 'bool', - '__unset' => 'void', - '__sleep' => 'array', - '__wakeup' => 'void', - '__toString' => 'string', - '__clone' => 'void', - '__debugInfo' => 'array', - '__serialize' => 'array', - '__unserialize' => 'void', + 'null' => true, + 'true' => true, + 'never' => true, ]; - private const INTERNAL_TYPES = [ - 'ArrayAccess' => [ - 'offsetExists' => 'bool', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - ], - 'Countable' => [ - 'count' => 'int', - ], - 'Iterator' => [ - 'next' => 'void', - 'valid' => 'bool', - 'rewind' => 'void', - ], - 'IteratorAggregate' => [ - 'getIterator' => '\Traversable', - ], - 'OuterIterator' => [ - 'getInnerIterator' => '\Iterator', - ], - 'RecursiveIterator' => [ - 'hasChildren' => 'bool', - ], - 'SeekableIterator' => [ - 'seek' => 'void', - ], - 'Serializable' => [ - 'serialize' => 'string', - 'unserialize' => 'void', - ], - 'SessionHandlerInterface' => [ - 'open' => 'bool', - 'close' => 'bool', - 'read' => 'string', - 'write' => 'bool', - 'destroy' => 'bool', - 'gc' => 'bool', - ], - 'SessionIdInterface' => [ - 'create_sid' => 'string', - ], - 'SessionUpdateTimestampHandlerInterface' => [ - 'validateId' => 'bool', - 'updateTimestamp' => 'bool', - ], - 'Throwable' => [ - 'getMessage' => 'string', - 'getCode' => 'int', - 'getFile' => 'string', - 'getLine' => 'int', - 'getTrace' => 'array', - 'getPrevious' => '?\Throwable', - 'getTraceAsString' => 'string', - ], + private const MAGIC_METHODS = [ + '__isset' => 'bool', + '__sleep' => 'array', + '__toString' => 'string', + '__debugInfo' => 'array', + '__serialize' => 'array', ]; private $classLoader; @@ -192,12 +131,16 @@ class DebugClassLoader parse_str(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?: '', $this->patchTypes); $this->patchTypes += [ 'force' => null, - 'php' => null, - 'deprecations' => false, + 'php' => \PHP_MAJOR_VERSION.'.'.\PHP_MINOR_VERSION, + 'deprecations' => \PHP_VERSION_ID >= 70400, ]; + if ('phpdoc' === $this->patchTypes['force']) { + $this->patchTypes['force'] = 'docblock'; + } + if (!isset(self::$caseCheck)) { - $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR); + $file = is_file(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR); $i = strrpos($file, \DIRECTORY_SEPARATOR); $dir = substr($file, 0, 1 + $i); $file = substr($file, 1 + $i); @@ -210,7 +153,7 @@ class DebugClassLoader } elseif (substr($test, -\strlen($file)) === $file) { // filesystem is case insensitive and realpath() normalizes the case of characters self::$caseCheck = 1; - } elseif (false !== stripos(\PHP_OS, 'darwin')) { + } elseif ('Darwin' === \PHP_OS_FAMILY) { // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters self::$caseCheck = 2; } else { @@ -220,11 +163,6 @@ class DebugClassLoader } } - /** - * Gets the wrapped class loader. - * - * @return callable The wrapped class loader - */ public function getClassLoader(): callable { return $this->classLoader; @@ -415,7 +353,6 @@ class DebugClassLoader if ( 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV7' === $class || 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV6' === $class - || 'Test\Symfony\Component\Debug\Tests' === $refl->getNamespaceName() ) { return []; } @@ -434,34 +371,31 @@ class DebugClassLoader $vendor = str_replace('_', '\\', substr($class, 0, $vendorLen)); } + $parent = get_parent_class($class) ?: null; + self::$returnTypes[$class] = []; + $classIsTemplate = false; + // Detect annotations on the class - if (false !== $doc = $refl->getDocComment()) { + if ($doc = $this->parsePhpDoc($refl)) { + $classIsTemplate = isset($doc['template']); + foreach (['final', 'deprecated', 'internal'] as $annotation) { - if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) { - self::${$annotation}[$class] = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : ''; + if (null !== $description = $doc[$annotation][0] ?? null) { + self::${$annotation}[$class] = '' !== $description ? ' '.$description.(preg_match('/[.!]$/', $description) ? '' : '.') : '.'; } } - if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+([\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) { - foreach ($notice as $method) { - $static = '' !== $method[1] && !empty($method[2]); - $name = $method[3]; - $description = $method[4] ?? null; - if (false === strpos($name, '(')) { - $name .= '()'; + if ($refl->isInterface() && isset($doc['method'])) { + foreach ($doc['method'] as $name => [$static, $returnType, $signature, $description]) { + self::$method[$class][] = [$class, $static, $returnType, $name.$signature, $description]; + + if ('' !== $returnType) { + $this->setReturnType($returnType, $refl->name, $name, $refl->getFileName(), $parent); } - if (null !== $description) { - $description = trim($description); - if (!isset($method[5])) { - $description .= '.'; - } - } - self::$method[$class][] = [$class, $name, $static, $description]; } } } - $parent = get_parent_class($class) ?: null; $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent); if ($parent) { $parentAndOwnInterfaces[$parent] = $parent; @@ -471,7 +405,7 @@ class DebugClassLoader } if (isset(self::$final[$parent])) { - $deprecations[] = sprintf('The "%s" class is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $className); + $deprecations[] = sprintf('The "%s" class is considered final%s It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $className); } } @@ -484,10 +418,10 @@ class DebugClassLoader $type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait'); $verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses'); - $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s.', $className, $type, $verb, $use, self::$deprecated[$use]); + $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s', $className, $type, $verb, $use, self::$deprecated[$use]); } if (isset(self::$internal[$use]) && strncmp($vendor, str_replace('_', '\\', $use), $vendorLen)) { - $deprecations[] = sprintf('The "%s" %s is considered internal%s. It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $className); + $deprecations[] = sprintf('The "%s" %s is considered internal%s It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $className); } if (isset(self::$method[$use])) { if ($refl->isAbstract()) { @@ -507,14 +441,13 @@ class DebugClassLoader } $hasCall = $refl->hasMethod('__call'); $hasStaticCall = $refl->hasMethod('__callStatic'); - foreach (self::$method[$use] as $method) { - [$interface, $name, $static, $description] = $method; + foreach (self::$method[$use] as [$interface, $static, $returnType, $name, $description]) { if ($static ? $hasStaticCall : $hasCall) { continue; } $realName = substr($name, 0, strpos($name, '(')); if (!$refl->hasMethod($realName) || !($methodRefl = $refl->getMethod($realName))->isPublic() || ($static && !$methodRefl->isStatic()) || (!$static && $methodRefl->isStatic())) { - $deprecations[] = sprintf('Class "%s" should implement method "%s::%s"%s', $className, ($static ? 'static ' : '').$interface, $name, null == $description ? '.' : ': '.$description); + $deprecations[] = sprintf('Class "%s" should implement method "%s::%s%s"%s', $className, ($static ? 'static ' : '').$interface, $name, $returnType ? ': '.$returnType : '', null === $description ? '.' : ': '.$description); } } } @@ -537,7 +470,6 @@ class DebugClassLoader self::$finalMethods[$class] = []; self::$internalMethods[$class] = []; self::$annotatedParameters[$class] = []; - self::$returnTypes[$class] = []; foreach ($parentAndOwnInterfaces as $use) { foreach (['finalMethods', 'internalMethods', 'annotatedParameters', 'returnTypes'] as $property) { if (isset(self::${$property}[$use])) { @@ -545,11 +477,17 @@ class DebugClassLoader } } - if (null !== (self::INTERNAL_TYPES[$use] ?? null)) { - foreach (self::INTERNAL_TYPES[$use] as $method => $returnType) { - if ('void' !== $returnType) { - self::$returnTypes[$class] += [$method => [$returnType, $returnType, $use, '']]; + if (null !== (TentativeTypes::RETURN_TYPES[$use] ?? null)) { + foreach (TentativeTypes::RETURN_TYPES[$use] as $method => $returnType) { + $returnType = explode('|', $returnType); + foreach ($returnType as $i => $t) { + if ('?' !== $t && !isset(self::BUILTIN_RETURN_TYPES[$t])) { + $returnType[$i] = '\\'.$t; + } } + $returnType = implode('|', $returnType); + + self::$returnTypes[$class] += [$method => [$returnType, 0 === strpos($returnType, '?') ? substr($returnType, 1).'|null' : $returnType, $use, '']]; } } } @@ -571,18 +509,22 @@ class DebugClassLoader if ($parent && isset(self::$finalMethods[$parent][$method->name])) { [$declaringClass, $message] = self::$finalMethods[$parent][$method->name]; - $deprecations[] = sprintf('The "%s::%s()" method is considered final%s. It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); + $deprecations[] = sprintf('The "%s::%s()" method is considered final%s It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); } if (isset(self::$internalMethods[$class][$method->name])) { [$declaringClass, $message] = self::$internalMethods[$class][$method->name]; if (strncmp($ns, $declaringClass, $len)) { - $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s. It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); + $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); } } // To read method annotations - $doc = $method->getDocComment(); + $doc = $this->parsePhpDoc($method); + + if (($classIsTemplate || isset($doc['template'])) && $method->hasReturnType()) { + unset($doc['return']); + } if (isset(self::$annotatedParameters[$class][$method->name])) { $definedParameters = []; @@ -591,7 +533,7 @@ class DebugClassLoader } foreach (self::$annotatedParameters[$class][$method->name] as $parameterName => $deprecation) { - if (!isset($definedParameters[$parameterName]) && !($doc && preg_match("/\\n\\s+\\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\\\${$parameterName}\\b/", $doc))) { + if (!isset($definedParameters[$parameterName]) && !isset($doc['param'][$parameterName])) { $deprecations[] = sprintf($deprecation, $className); } } @@ -604,32 +546,33 @@ class DebugClassLoader $this->patchTypes['force'] = $forcePatchTypes ?: 'docblock'; } - $canAddReturnType = false !== strpos($refl->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR) + $canAddReturnType = 2 === (int) $forcePatchTypes + || false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR) || $refl->isFinal() || $method->isFinal() || $method->isPrivate() - || ('' === (self::$internal[$class] ?? null) && !$refl->isAbstract()) - || '' === (self::$final[$class] ?? null) - || preg_match('/@(final|internal)$/m', $doc) + || ('.' === (self::$internal[$class] ?? null) && !$refl->isAbstract()) + || '.' === (self::$final[$class] ?? null) + || '' === ($doc['final'][0] ?? null) + || '' === ($doc['internal'][0] ?? null) ; } - if (null !== ($returnType = self::$returnTypes[$class][$method->name] ?? self::MAGIC_METHODS[$method->name] ?? null) && !$method->hasReturnType() && !($doc && preg_match('/\n\s+\* @return +([^\s<(]+)/', $doc))) { - [$normalizedType, $returnType, $declaringClass, $declaringFile] = \is_string($returnType) ? [$returnType, $returnType, '', ''] : $returnType; + if (null !== ($returnType = self::$returnTypes[$class][$method->name] ?? null) && 'docblock' === $this->patchTypes['force'] && !$method->hasReturnType() && isset(TentativeTypes::RETURN_TYPES[$returnType[2]][$method->name])) { + $this->patchReturnTypeWillChange($method); + } - if ('void' === $normalizedType) { - $canAddReturnType = false; - } + if (null !== ($returnType ?? $returnType = self::MAGIC_METHODS[$method->name] ?? null) && !$method->hasReturnType() && !isset($doc['return'])) { + [$normalizedType, $returnType, $declaringClass, $declaringFile] = \is_string($returnType) ? [$returnType, $returnType, '', ''] : $returnType; if ($canAddReturnType && 'docblock' !== $this->patchTypes['force']) { $this->patchMethod($method, $returnType, $declaringFile, $normalizedType); } - - if (false === strpos($doc, '* @deprecated') && strncmp($ns, $declaringClass, $len)) { - if ($canAddReturnType && 'docblock' === $this->patchTypes['force'] && false === strpos($method->getFileName(), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) { + if (!isset($doc['deprecated']) && strncmp($ns, $declaringClass, $len)) { + if ('docblock' === $this->patchTypes['force']) { $this->patchMethod($method, $returnType, $declaringFile, $normalizedType); } elseif ('' !== $declaringClass && $this->patchTypes['deprecations']) { - $deprecations[] = sprintf('Method "%s::%s()" will return "%s" as of its next major version. Doing the same in %s "%s" will be required when upgrading.', $declaringClass, $method->name, $normalizedType, interface_exists($declaringClass) ? 'implementation' : 'child class', $className); + $deprecations[] = sprintf('Method "%s::%s()" might add "%s" as a native return type declaration in the future. Do the same in %s "%s" now to avoid errors or add an explicit @return annotation to suppress this message.', $declaringClass, $method->name, $normalizedType, interface_exists($declaringClass) ? 'implementation' : 'child class', $className); } } } @@ -640,11 +583,8 @@ class DebugClassLoader continue; } - $matches = []; - - if (!$method->hasReturnType() && ((false !== strpos($doc, '@return') && preg_match('/\n\s+\* @return +([^\s<(]+)/', $doc, $matches)) || 'void' !== (self::MAGIC_METHODS[$method->name] ?? 'void'))) { - $matches = $matches ?: [1 => self::MAGIC_METHODS[$method->name]]; - $this->setReturnType($matches[1], $method, $parent); + if (isset($doc['return']) || 'void' !== (self::MAGIC_METHODS[$method->name] ?? 'void')) { + $this->setReturnType($doc['return'] ?? self::MAGIC_METHODS[$method->name], $method->class, $method->name, $method->getFileName(), $parent, $method->getReturnType()); if (isset(self::$returnTypes[$class][$method->name][0]) && $canAddReturnType) { $this->fixReturnStatements($method, self::$returnTypes[$class][$method->name][0]); @@ -664,17 +604,13 @@ class DebugClassLoader $finalOrInternal = false; foreach (['final', 'internal'] as $annotation) { - if (false !== strpos($doc, $annotation) && preg_match('#\n\s+\* @'.$annotation.'(?:( .+?)\.?)?\r?\n\s+\*(?: @|/$|\r?\n)#s', $doc, $notice)) { - $message = isset($notice[1]) ? preg_replace('#\.?\r?\n( \*)? *(?= |\r?\n|$)#', '', $notice[1]) : ''; - self::${$annotation.'Methods'}[$class][$method->name] = [$class, $message]; + if (null !== $description = $doc[$annotation][0] ?? null) { + self::${$annotation.'Methods'}[$class][$method->name] = [$class, '' !== $description ? ' '.$description.(preg_match('/[[:punct:]]$/', $description) ? '' : '.') : '.']; $finalOrInternal = true; } } - if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) { - continue; - } - if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) { + if ($finalOrInternal || $method->isConstructor() || !isset($doc['param']) || StatelessInvocation::class === $class) { continue; } if (!isset(self::$annotatedParameters[$class][$method->name])) { @@ -683,9 +619,8 @@ class DebugClassLoader $definedParameters[$parameter->name] = true; } } - foreach ($matches as [, $parameterType, $parameterName]) { + foreach ($doc['param'] as $parameterName => $parameterType) { if (!isset($definedParameters[$parameterName])) { - $parameterType = trim($parameterType); self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($className) ? 'interface' : 'parent class', $className); } } @@ -779,7 +714,7 @@ class DebugClassLoader } if (isset($dirFiles[$file])) { - return $real .= $dirFiles[$file]; + return $real.$dirFiles[$file]; } $kFile = strtolower($file); @@ -798,7 +733,7 @@ class DebugClassLoader self::$darwinCache[$kDir][1] = $dirFiles; } - return $real .= $dirFiles[$kFile]; + return $real.$dirFiles[$kFile]; } /** @@ -825,25 +760,42 @@ class DebugClassLoader return $ownInterfaces; } - private function setReturnType(string $types, \ReflectionMethod $method, ?string $parent): void + private function setReturnType(string $types, string $class, string $method, string $filename, ?string $parent, \ReflectionType $returnType = null): void { - $nullable = false; + if ('__construct' === $method) { + return; + } + + if ('null' === $types) { + self::$returnTypes[$class][$method] = ['null', 'null', $class, $filename]; + + return; + } + + if ($nullable = 0 === strpos($types, 'null|')) { + $types = substr($types, 5); + } elseif ($nullable = '|null' === substr($types, -5)) { + $types = substr($types, 0, -5); + } + $arrayType = ['array' => 'array']; $typesMap = []; - foreach (explode('|', $types) as $t) { - $typesMap[$this->normalizeType($t, $method->class, $parent)] = $t; + $glue = false !== strpos($types, '&') ? '&' : '|'; + foreach (explode($glue, $types) as $t) { + $t = self::SPECIAL_RETURN_TYPES[strtolower($t)] ?? $t; + $typesMap[$this->normalizeType($t, $class, $parent, $returnType)][$t] = $t; } if (isset($typesMap['array'])) { if (isset($typesMap['Traversable']) || isset($typesMap['\Traversable'])) { - $typesMap['iterable'] = 'array' !== $typesMap['array'] ? $typesMap['array'] : 'iterable'; + $typesMap['iterable'] = $arrayType !== $typesMap['array'] ? $typesMap['array'] : ['iterable']; unset($typesMap['array'], $typesMap['Traversable'], $typesMap['\Traversable']); - } elseif ('array' !== $typesMap['array'] && isset(self::$returnTypes[$method->class][$method->name])) { + } elseif ($arrayType !== $typesMap['array'] && isset(self::$returnTypes[$class][$method]) && !$returnType) { return; } } if (isset($typesMap['array']) && isset($typesMap['iterable'])) { - if ('[]' === substr($typesMap['array'], -2)) { + if ($arrayType !== $typesMap['array']) { $typesMap['iterable'] = $typesMap['array']; } unset($typesMap['array']); @@ -857,43 +809,56 @@ class DebugClassLoader } } - $normalizedType = key($typesMap); - $returnType = current($typesMap); + $phpTypes = []; + $docTypes = []; foreach ($typesMap as $n => $t) { if ('null' === $n) { $nullable = true; - } elseif ('null' === $normalizedType) { - $normalizedType = $t; - $returnType = $t; - } elseif ($n !== $normalizedType || !preg_match('/^\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+$/', $n)) { - if ($iterable) { - $normalizedType = $returnType = 'iterable'; - } elseif ($object && 'object' === $this->patchTypes['force']) { - $normalizedType = $returnType = 'object'; - } else { - // ignore multi-types return declarations - return; - } + continue; + } + + $docTypes[] = $t; + + if ('mixed' === $n || 'void' === $n) { + $nullable = false; + $phpTypes = ['' => $n]; + continue; + } + + if ('resource' === $n) { + // there is no native type for "resource" + return; + } + + if (!isset($phpTypes[''])) { + $phpTypes[] = $n; } } + $docTypes = array_merge([], ...$docTypes); - if ('void' === $normalizedType || (\PHP_VERSION_ID >= 80000 && 'mixed' === $normalizedType)) { - $nullable = false; - } elseif (!isset(self::BUILTIN_RETURN_TYPES[$normalizedType]) && isset(self::SPECIAL_RETURN_TYPES[$normalizedType])) { - // ignore other special return types + if (!$phpTypes) { return; } - if ($nullable) { - $normalizedType = '?'.$normalizedType; - $returnType .= '|null'; + if (1 < \count($phpTypes)) { + if ($iterable && '8.0' > $this->patchTypes['php']) { + $phpTypes = $docTypes = ['iterable']; + } elseif ($object && 'object' === $this->patchTypes['force']) { + $phpTypes = $docTypes = ['object']; + } elseif ('8.0' > $this->patchTypes['php']) { + // ignore multi-types return declarations + return; + } } - self::$returnTypes[$method->class][$method->name] = [$normalizedType, $returnType, $method->class, $method->getFileName()]; + $phpType = sprintf($nullable ? (1 < \count($phpTypes) ? '%s|null' : '?%s') : '%s', implode($glue, $phpTypes)); + $docType = sprintf($nullable ? '%s|null' : '%s', implode($glue, $docTypes)); + + self::$returnTypes[$class][$method] = [$phpType, $docType, $class, $filename]; } - private function normalizeType(string $type, string $class, ?string $parent): string + private function normalizeType(string $type, string $class, ?string $parent, ?\ReflectionType $returnType): string { if (isset(self::SPECIAL_RETURN_TYPES[$lcType = strtolower($type)])) { if ('parent' === $lcType = self::SPECIAL_RETURN_TYPES[$lcType]) { @@ -905,47 +870,78 @@ class DebugClassLoader return $lcType; } - if ('[]' === substr($type, -2)) { - return 'array'; - } - - if (preg_match('/^(array|iterable|callable) *[<(]/', $lcType, $m)) { - return $m[1]; - } - // We could resolve "use" statements to return the FQDN // but this would be too expensive for a runtime checker - return $type; + if ('[]' !== substr($type, -2)) { + return $type; + } + + if ($returnType instanceof \ReflectionNamedType) { + $type = $returnType->getName(); + + if ('mixed' !== $type) { + return isset(self::SPECIAL_RETURN_TYPES[$type]) ? $type : '\\'.$type; + } + } + + return 'array'; } /** - * Utility method to add @return annotations to the Symfony code-base where it triggers a self-deprecations. + * Utility method to add #[ReturnTypeWillChange] where php triggers deprecations. + */ + private function patchReturnTypeWillChange(\ReflectionMethod $method) + { + if (\PHP_VERSION_ID >= 80000 && \count($method->getAttributes(\ReturnTypeWillChange::class))) { + return; + } + + if (!is_file($file = $method->getFileName())) { + return; + } + + $fileOffset = self::$fileOffsets[$file] ?? 0; + + $code = file($file); + + $startLine = $method->getStartLine() + $fileOffset - 2; + + if (false !== stripos($code[$startLine], 'ReturnTypeWillChange')) { + return; + } + + $code[$startLine] .= " #[\\ReturnTypeWillChange]\n"; + self::$fileOffsets[$file] = 1 + $fileOffset; + file_put_contents($file, $code); + } + + /** + * Utility method to add @return annotations to the Symfony code-base where it triggers self-deprecations. */ private function patchMethod(\ReflectionMethod $method, string $returnType, string $declaringFile, string $normalizedType) { static $patchedMethods = []; static $useStatements = []; - if (!file_exists($file = $method->getFileName()) || isset($patchedMethods[$file][$startLine = $method->getStartLine()])) { + if (!is_file($file = $method->getFileName()) || isset($patchedMethods[$file][$startLine = $method->getStartLine()])) { return; } $patchedMethods[$file][$startLine] = true; $fileOffset = self::$fileOffsets[$file] ?? 0; $startLine += $fileOffset - 2; - $nullable = '?' === $normalizedType[0] ? '?' : ''; - $normalizedType = ltrim($normalizedType, '?'); - $returnType = explode('|', $returnType); + if ($nullable = '|null' === substr($returnType, -5)) { + $returnType = substr($returnType, 0, -5); + } + $glue = false !== strpos($returnType, '&') ? '&' : '|'; + $returnType = explode($glue, $returnType); $code = file($file); foreach ($returnType as $i => $type) { if (preg_match('/((?:\[\])+)$/', $type, $m)) { $type = substr($type, 0, -\strlen($m[1])); $format = '%s'.$m[1]; - } elseif (preg_match('/^(array|iterable)<([^,>]++)>$/', $type, $m)) { - $type = $m[2]; - $format = $m[1].'<%s>'; } else { $format = null; } @@ -990,14 +986,14 @@ class DebugClassLoader } $returnType[$i] = null !== $format ? sprintf($format, $alias) : $alias; - - if (!isset(self::SPECIAL_RETURN_TYPES[$normalizedType]) && !isset(self::SPECIAL_RETURN_TYPES[$returnType[$i]])) { - $normalizedType = $returnType[$i]; - } } if ('docblock' === $this->patchTypes['force'] || ('object' === $normalizedType && '7.1' === $this->patchTypes['php'])) { - $returnType = implode('|', $returnType); + $returnType = implode($glue, $returnType).($nullable ? '|null' : ''); + + if (false !== strpos($code[$startLine], '#[')) { + --$startLine; + } if ($method->getDocComment()) { $code[$startLine] = " * @return $returnType\n".$code[$startLine]; @@ -1016,7 +1012,7 @@ EOTXT; self::$fileOffsets[$file] = $fileOffset; file_put_contents($file, $code); - $this->fixReturnStatements($method, $nullable.$normalizedType); + $this->fixReturnStatements($method, $normalizedType); } private static function getUseStatements(string $file): array @@ -1025,7 +1021,7 @@ EOTXT; $useMap = []; $useOffset = 0; - if (!file_exists($file)) { + if (!is_file($file)) { return [$namespace, $useOffset, $useMap]; } @@ -1064,11 +1060,25 @@ EOTXT; private function fixReturnStatements(\ReflectionMethod $method, string $returnType) { - if ('7.1' === $this->patchTypes['php'] && 'object' === ltrim($returnType, '?') && 'docblock' !== $this->patchTypes['force']) { - return; + if ('docblock' !== $this->patchTypes['force']) { + if ('7.1' === $this->patchTypes['php'] && 'object' === ltrim($returnType, '?')) { + return; + } + + if ('7.4' > $this->patchTypes['php'] && $method->hasReturnType()) { + return; + } + + if ('8.0' > $this->patchTypes['php'] && (false !== strpos($returnType, '|') || \in_array($returnType, ['mixed', 'static'], true))) { + return; + } + + if ('8.1' > $this->patchTypes['php'] && false !== strpos($returnType, '&')) { + return; + } } - if (!file_exists($file = $method->getFileName())) { + if (!is_file($file = $method->getFileName())) { return; } @@ -1076,7 +1086,7 @@ EOTXT; $i = (self::$fileOffsets[$file] ?? 0) + $method->getStartLine(); if ('?' !== $returnType && 'docblock' !== $this->patchTypes['force']) { - $fixedCode[$i - 1] = preg_replace('/\)(;?\n)/', "): $returnType\\1", $code[$i - 1]); + $fixedCode[$i - 1] = preg_replace('/\)(?::[^;\n]++)?(;?\n)/', "): $returnType\\1", $code[$i - 1]); } $end = $method->isGenerator() ? $i : $method->getEndLine(); @@ -1094,4 +1104,118 @@ EOTXT; file_put_contents($file, $fixedCode); } } + + /** + * @param \ReflectionClass|\ReflectionMethod|\ReflectionProperty $reflector + */ + private function parsePhpDoc(\Reflector $reflector): array + { + if (!$doc = $reflector->getDocComment()) { + return []; + } + + $tagName = ''; + $tagContent = ''; + + $tags = []; + + foreach (explode("\n", substr($doc, 3, -2)) as $line) { + $line = ltrim($line); + $line = ltrim($line, '*'); + + if ('' === $line = trim($line)) { + if ('' !== $tagName) { + $tags[$tagName][] = $tagContent; + } + $tagName = $tagContent = ''; + continue; + } + + if ('@' === $line[0]) { + if ('' !== $tagName) { + $tags[$tagName][] = $tagContent; + $tagContent = ''; + } + + if (preg_match('{^@([-a-zA-Z0-9_:]++)(\s|$)}', $line, $m)) { + $tagName = $m[1]; + $tagContent = str_replace("\t", ' ', ltrim(substr($line, 2 + \strlen($tagName)))); + } else { + $tagName = ''; + } + } elseif ('' !== $tagName) { + $tagContent .= ' '.str_replace("\t", ' ', $line); + } + } + + if ('' !== $tagName) { + $tags[$tagName][] = $tagContent; + } + + foreach ($tags['method'] ?? [] as $i => $method) { + unset($tags['method'][$i]); + + $parts = preg_split('{(\s++|\((?:[^()]*+|(?R))*\)(?: *: *[^ ]++)?|<(?:[^<>]*+|(?R))*>|\{(?:[^{}]*+|(?R))*\})}', $method, -1, \PREG_SPLIT_DELIM_CAPTURE); + $returnType = ''; + $static = 'static' === $parts[0]; + + for ($i = $static ? 2 : 0; null !== $p = $parts[$i] ?? null; $i += 2) { + if (\in_array($p, ['', '|', '&', 'callable'], true) || \in_array(substr($returnType, -1), ['|', '&'], true)) { + $returnType .= trim($parts[$i - 1] ?? '').$p; + continue; + } + + $signature = '(' === ($parts[$i + 1][0] ?? '(') ? $parts[$i + 1] ?? '()' : null; + + if (null === $signature && '' === $returnType) { + $returnType = $p; + continue; + } + + if ($static && 2 === $i) { + $static = false; + $returnType = 'static'; + } + + if (\in_array($description = trim(implode('', \array_slice($parts, 2 + $i))), ['', '.'], true)) { + $description = null; + } elseif (!preg_match('/[.!]$/', $description)) { + $description .= '.'; + } + + $tags['method'][$p] = [$static, $returnType, $signature ?? '()', $description]; + break; + } + } + + foreach ($tags['param'] ?? [] as $i => $param) { + unset($tags['param'][$i]); + + if (\strlen($param) !== strcspn($param, '<{(')) { + $param = preg_replace('{\(([^()]*+|(?R))*\)(?: *: *[^ ]++)?|<([^<>]*+|(?R))*>|\{([^{}]*+|(?R))*\}}', '', $param); + } + + if (false === $i = strpos($param, '$')) { + continue; + } + + $type = 0 === $i ? '' : rtrim(substr($param, 0, $i), ' &'); + $param = substr($param, 1 + $i, (strpos($param, ' ', $i) ?: (1 + $i + \strlen($param))) - $i - 1); + + $tags['param'][$param] = $type; + } + + foreach (['var', 'return'] as $k) { + if (null === $v = $tags[$k][0] ?? null) { + continue; + } + if (\strlen($v) !== strcspn($v, '<{(')) { + $v = preg_replace('{\(([^()]*+|(?R))*\)(?: *: *[^ ]++)?|<([^<>]*+|(?R))*>|\{([^{}]*+|(?R))*\}}', '', $v); + } + + $tags[$k] = substr($v, 0, strpos($v, ' ') ?: \strlen($v)) ?: null; + } + + return $tags; + } } diff --git a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php index 96a58be80..f85d27515 100644 --- a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php +++ b/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php @@ -11,8 +11,7 @@ namespace Symfony\Component\ErrorHandler\ErrorEnhancer; -use Composer\Autoload\ClassLoader as ComposerClassLoader; -use Symfony\Component\ClassLoader\ClassLoader as SymfonyClassLoader; +use Composer\Autoload\ClassLoader; use Symfony\Component\ErrorHandler\DebugClassLoader; use Symfony\Component\ErrorHandler\Error\ClassNotFoundError; use Symfony\Component\ErrorHandler\Error\FatalError; @@ -91,23 +90,22 @@ class ClassNotFoundErrorEnhancer implements ErrorEnhancerInterface } } - if ($function[0] instanceof ComposerClassLoader || $function[0] instanceof SymfonyClassLoader) { + if ($function[0] instanceof ClassLoader) { foreach ($function[0]->getPrefixes() as $prefix => $paths) { foreach ($paths as $path) { - $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix)); + $classes[] = $this->findClassInPath($path, $class, $prefix); } } - } - if ($function[0] instanceof ComposerClassLoader) { + foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) { foreach ($paths as $path) { - $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix)); + $classes[] = $this->findClassInPath($path, $class, $prefix); } } } } - return array_unique($classes); + return array_unique(array_merge([], ...$classes)); } private function findClassInPath(string $path, string $class, string $prefix): array diff --git a/vendor/symfony/error-handler/ErrorHandler.php b/vendor/symfony/error-handler/ErrorHandler.php index fba6f8cf7..003040242 100644 --- a/vendor/symfony/error-handler/ErrorHandler.php +++ b/vendor/symfony/error-handler/ErrorHandler.php @@ -91,7 +91,7 @@ class ErrorHandler private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE private $loggedErrors = 0; - private $traceReflector; + private $configureException; private $debug; private $isRecursive = 0; @@ -187,8 +187,14 @@ class ErrorHandler $this->bootstrappingLogger = $bootstrappingLogger; $this->setDefaultLogger($bootstrappingLogger); } - $this->traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); - $this->traceReflector->setAccessible(true); + $traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); + $traceReflector->setAccessible(true); + $this->configureException = \Closure::bind(static function ($e, $trace, $file = null, $line = null) use ($traceReflector) { + $traceReflector->setValue($e, $trace); + $e->file = $file ?? $e->file; + $e->line = $line ?? $e->line; + }, null, new class() extends \Exception { + }); $this->debug = $debug; } @@ -473,9 +479,9 @@ class ErrorHandler if ($throw || $this->tracedErrors & $type) { $backtrace = $errorAsException->getTrace(); $lightTrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw); - $this->traceReflector->setValue($errorAsException, $lightTrace); + ($this->configureException)($errorAsException, $lightTrace, $file, $line); } else { - $this->traceReflector->setValue($errorAsException, []); + ($this->configureException)($errorAsException, []); $backtrace = []; } } @@ -740,7 +746,7 @@ class ErrorHandler /** * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader. */ - private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array + private function cleanTrace(array $backtrace, int $type, string &$file, int &$line, bool $throw): array { $lightTrace = $backtrace; @@ -750,6 +756,19 @@ class ErrorHandler break; } } + if (\E_USER_DEPRECATED === $type) { + for ($i = 0; isset($lightTrace[$i]); ++$i) { + if (!isset($lightTrace[$i]['file'], $lightTrace[$i]['line'], $lightTrace[$i]['function'])) { + continue; + } + if (!isset($lightTrace[$i]['class']) && 'trigger_deprecation' === $lightTrace[$i]['function']) { + $file = $lightTrace[$i]['file']; + $line = $lightTrace[$i]['line']; + $lightTrace = \array_slice($lightTrace, 1 + $i); + break; + } + } + } if (class_exists(DebugClassLoader::class, false)) { for ($i = \count($lightTrace) - 2; 0 < $i; --$i) { if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) { diff --git a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php index 4c0fb9cc2..b8a9aeda6 100644 --- a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php +++ b/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php @@ -40,6 +40,8 @@ class HtmlErrorRenderer implements ErrorRendererInterface private $outputBuffer; private $logger; + private static $template = 'views/error.html.php'; + /** * @param bool|callable $debug The debugging mode as a boolean or a callable that should return it * @param string|FileLinkFormatter|null $fileLinkFormat @@ -48,11 +50,11 @@ class HtmlErrorRenderer implements ErrorRendererInterface public function __construct($debug = false, string $charset = null, $fileLinkFormat = null, string $projectDir = null, $outputBuffer = '', LoggerInterface $logger = null) { if (!\is_bool($debug) && !\is_callable($debug)) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \is_object($debug) ? \get_class($debug) : \gettype($debug))); + throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \gettype($debug))); } if (!\is_string($outputBuffer) && !\is_callable($outputBuffer)) { - throw new \TypeError(sprintf('Argument 5 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \is_object($outputBuffer) ? \get_class($outputBuffer) : \gettype($outputBuffer))); + throw new \TypeError(sprintf('Argument 5 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \gettype($outputBuffer))); } $this->debug = $debug; @@ -68,9 +70,13 @@ class HtmlErrorRenderer implements ErrorRendererInterface */ public function render(\Throwable $exception): FlattenException { - $exception = FlattenException::createFromThrowable($exception, null, [ - 'Content-Type' => 'text/html; charset='.$this->charset, - ]); + $headers = ['Content-Type' => 'text/html; charset='.$this->charset]; + if (\is_bool($this->debug) ? $this->debug : ($this->debug)($exception)) { + $headers['X-Debug-Exception'] = rawurlencode($exception->getMessage()); + $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); + } + + $exception = FlattenException::createFromThrowable($exception, null, $headers); return $exception->setAsString($this->renderException($exception)); } @@ -132,7 +138,7 @@ class HtmlErrorRenderer implements ErrorRendererInterface $statusCode = $this->escape($exception->getStatusCode()); if (!$debug) { - return $this->include('views/error.html.php', [ + return $this->include(self::$template, [ 'statusText' => $statusText, 'statusCode' => $statusCode, ]); @@ -209,7 +215,7 @@ class HtmlErrorRenderer implements ErrorRendererInterface /** * Returns the link for a given file/line pair. * - * @return string|false A link or false + * @return string|false */ private function getFileLink(string $file, int $line) { @@ -256,8 +262,6 @@ class HtmlErrorRenderer implements ErrorRendererInterface * @param string $file A file path * @param int $line The selected line number * @param int $srcContext The number of displayed lines around or -1 for the whole file - * - * @return string An HTML string */ private function fileExcerpt(string $file, int $line, int $srcContext = 3): string { @@ -279,7 +283,7 @@ class HtmlErrorRenderer implements ErrorRendererInterface } for ($i = max($line - $srcContext, 1), $max = min($line + $srcContext, \count($content)); $i <= $max; ++$i) { - $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'><a class="anchor" name="line'.$i.'"></a><code>'.$this->fixCodeMarkup($content[$i - 1]).'</code></li>'; + $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'><code>'.$this->fixCodeMarkup($content[$i - 1]).'</code></li>'; } return '<ol start="'.max($line - $srcContext, 1).'">'.implode("\n", $lines).'</ol>'; @@ -298,9 +302,9 @@ class HtmlErrorRenderer implements ErrorRendererInterface } // missing </span> tag at the end of line - $opening = strpos($line, '<span'); - $closing = strpos($line, '</span>'); - if (false !== $opening && (false === $closing || $closing > $opening)) { + $opening = strrpos($line, '<span'); + $closing = strrpos($line, '</span>'); + if (false !== $opening && (false === $closing || $closing < $opening)) { $line .= '</span>'; } @@ -345,8 +349,19 @@ class HtmlErrorRenderer implements ErrorRendererInterface { extract($context, \EXTR_SKIP); ob_start(); - include __DIR__.'/../Resources/'.$name; + + include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } + + /** + * Allows overriding the default non-debug template. + * + * @param string $template path to the custom template file to render + */ + public static function setTemplate(string $template): void + { + self::$template = $template; + } } diff --git a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php index e0640850a..cec8e4d41 100644 --- a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php +++ b/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php @@ -37,11 +37,11 @@ class SerializerErrorRenderer implements ErrorRendererInterface public function __construct(SerializerInterface $serializer, $format, ErrorRendererInterface $fallbackErrorRenderer = null, $debug = false) { if (!\is_string($format) && !\is_callable($format)) { - throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \is_object($format) ? \get_class($format) : \gettype($format))); + throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be a string or a callable, "%s" given.', __METHOD__, \gettype($format))); } if (!\is_bool($debug) && !\is_callable($debug)) { - throw new \TypeError(sprintf('Argument 4 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \is_object($debug) ? \get_class($debug) : \gettype($debug))); + throw new \TypeError(sprintf('Argument 4 passed to "%s()" must be a boolean or a callable, "%s" given.', __METHOD__, \gettype($debug))); } $this->serializer = $serializer; @@ -55,7 +55,14 @@ class SerializerErrorRenderer implements ErrorRendererInterface */ public function render(\Throwable $exception): FlattenException { - $flattenException = FlattenException::createFromThrowable($exception); + $headers = []; + $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception); + if ($debug) { + $headers['X-Debug-Exception'] = rawurlencode($exception->getMessage()); + $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); + } + + $flattenException = FlattenException::createFromThrowable($exception, null, $headers); try { $format = \is_string($this->format) ? $this->format : ($this->format)($flattenException); @@ -66,7 +73,7 @@ class SerializerErrorRenderer implements ErrorRendererInterface return $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ 'exception' => $exception, - 'debug' => \is_bool($this->debug) ? $this->debug : ($this->debug)($exception), + 'debug' => $debug, ])) ->setHeaders($flattenException->getHeaders() + $headers); } catch (NotEncodableValueException $e) { diff --git a/vendor/symfony/error-handler/Exception/FlattenException.php b/vendor/symfony/error-handler/Exception/FlattenException.php index 44bf9c938..262dae62b 100644 --- a/vendor/symfony/error-handler/Exception/FlattenException.php +++ b/vendor/symfony/error-handler/Exception/FlattenException.php @@ -11,8 +11,6 @@ namespace Symfony\Component\ErrorHandler\Exception; -use Symfony\Component\Debug\Exception\FatalThrowableError; -use Symfony\Component\Debug\Exception\FlattenException as LegacyFlattenException; use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; @@ -24,7 +22,7 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; * * @author Fabien Potencier <fabien@symfony.com> */ -class FlattenException extends LegacyFlattenException +class FlattenException { /** @var string */ private $message; @@ -65,7 +63,7 @@ class FlattenException extends LegacyFlattenException /** * @return static */ - public static function create(\Exception $exception, $statusCode = null, array $headers = []): self + public static function create(\Exception $exception, int $statusCode = null, array $headers = []): self { return static::createFromThrowable($exception, $statusCode, $headers); } @@ -100,7 +98,7 @@ class FlattenException extends LegacyFlattenException $e->setStatusCode($statusCode); $e->setHeaders($headers); $e->setTraceFromThrowable($exception); - $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : \get_class($exception)); + $e->setClass(\get_class($exception)); $e->setFile($exception->getFile()); $e->setLine($exception->getLine()); @@ -133,11 +131,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param int $code - * * @return $this */ - public function setStatusCode($code): self + public function setStatusCode(int $code): self { $this->statusCode = $code; @@ -165,11 +161,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param string $class - * * @return $this */ - public function setClass($class): self + public function setClass(string $class): self { $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class; @@ -182,11 +176,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param string $file - * * @return $this */ - public function setFile($file): self + public function setFile(string $file): self { $this->file = $file; @@ -199,11 +191,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param int $line - * * @return $this */ - public function setLine($line): self + public function setLine(int $line): self { $this->line = $line; @@ -215,6 +205,9 @@ class FlattenException extends LegacyFlattenException return $this->statusText; } + /** + * @return $this + */ public function setStatusText(string $statusText): self { $this->statusText = $statusText; @@ -228,11 +221,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param string $message - * * @return $this */ - public function setMessage($message): self + public function setMessage(string $message): self { if (false !== strpos($message, "@anonymous\0")) { $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { @@ -265,10 +256,7 @@ class FlattenException extends LegacyFlattenException return $this; } - /** - * @return self|null - */ - public function getPrevious() + public function getPrevious(): ?self { return $this->previous; } @@ -276,7 +264,7 @@ class FlattenException extends LegacyFlattenException /** * @return $this */ - final public function setPrevious(?LegacyFlattenException $previous): self + public function setPrevious(?self $previous): self { $this->previous = $previous; @@ -302,16 +290,6 @@ class FlattenException extends LegacyFlattenException return $this->trace; } - /** - * @deprecated since 4.1, use {@see setTraceFromThrowable()} instead. - */ - public function setTraceFromException(\Exception $exception) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED); - - $this->setTraceFromThrowable($exception); - } - /** * @return $this */ @@ -323,13 +301,9 @@ class FlattenException extends LegacyFlattenException } /** - * @param array $trace - * @param string|null $file - * @param int|null $line - * * @return $this */ - public function setTrace($trace, $file, $line): self + public function setTrace(array $trace, ?string $file, ?int $line): self { $this->trace = []; $this->trace[] = [ @@ -374,7 +348,6 @@ class FlattenException extends LegacyFlattenException return ['array', '*SKIPPED over 10000 entries*']; } if ($value instanceof \__PHP_Incomplete_Class) { - // is_object() returns false on PHP<=7.1 $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)]; } elseif (\is_object($value)) { $result[$key] = ['object', \get_class($value)]; diff --git a/vendor/symfony/error-handler/Internal/TentativeTypes.php b/vendor/symfony/error-handler/Internal/TentativeTypes.php new file mode 100644 index 000000000..1e8afe39b --- /dev/null +++ b/vendor/symfony/error-handler/Internal/TentativeTypes.php @@ -0,0 +1,1643 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\ErrorHandler\Internal; + +/** + * This class has been generated by extract-tentative-return-types.php. + * + * @internal + */ +class TentativeTypes +{ + public const RETURN_TYPES = [ + 'CURLFile' => [ + 'getFilename' => 'string', + 'getMimeType' => 'string', + 'getPostFilename' => 'string', + 'setMimeType' => 'void', + 'setPostFilename' => 'void', + ], + 'DateTimeInterface' => [ + 'format' => 'string', + 'getTimezone' => 'DateTimeZone|false', + 'getOffset' => 'int', + 'getTimestamp' => 'int', + 'diff' => 'DateInterval', + '__wakeup' => 'void', + ], + 'DateTime' => [ + '__wakeup' => 'void', + '__set_state' => 'DateTime', + 'createFromImmutable' => 'static', + 'createFromFormat' => 'DateTime|false', + 'getLastErrors' => 'array|false', + 'format' => 'string', + 'modify' => 'DateTime|false', + 'add' => 'DateTime', + 'sub' => 'DateTime', + 'getTimezone' => 'DateTimeZone|false', + 'setTimezone' => 'DateTime', + 'getOffset' => 'int', + 'setTime' => 'DateTime', + 'setDate' => 'DateTime', + 'setISODate' => 'DateTime', + 'setTimestamp' => 'DateTime', + 'getTimestamp' => 'int', + 'diff' => 'DateInterval', + ], + 'DateTimeImmutable' => [ + '__wakeup' => 'void', + '__set_state' => 'DateTimeImmutable', + 'createFromFormat' => 'DateTimeImmutable|false', + 'getLastErrors' => 'array|false', + 'format' => 'string', + 'getTimezone' => 'DateTimeZone|false', + 'getOffset' => 'int', + 'getTimestamp' => 'int', + 'diff' => 'DateInterval', + 'modify' => 'DateTimeImmutable|false', + 'add' => 'DateTimeImmutable', + 'sub' => 'DateTimeImmutable', + 'setTimezone' => 'DateTimeImmutable', + 'setTime' => 'DateTimeImmutable', + 'setDate' => 'DateTimeImmutable', + 'setISODate' => 'DateTimeImmutable', + 'setTimestamp' => 'DateTimeImmutable', + 'createFromMutable' => 'static', + ], + 'DateTimeZone' => [ + 'getName' => 'string', + 'getOffset' => 'int', + 'getTransitions' => 'array|false', + 'getLocation' => 'array|false', + 'listAbbreviations' => 'array', + 'listIdentifiers' => 'array', + '__wakeup' => 'void', + '__set_state' => 'DateTimeZone', + ], + 'DateInterval' => [ + 'createFromDateString' => 'DateInterval|false', + 'format' => 'string', + '__wakeup' => 'void', + '__set_state' => 'DateInterval', + ], + 'DatePeriod' => [ + 'getStartDate' => 'DateTimeInterface', + 'getEndDate' => '?DateTimeInterface', + 'getDateInterval' => 'DateInterval', + 'getRecurrences' => '?int', + '__wakeup' => 'void', + '__set_state' => 'DatePeriod', + ], + 'DOMNode' => [ + 'C14N' => 'string|false', + 'C14NFile' => 'int|false', + 'getLineNo' => 'int', + 'getNodePath' => '?string', + 'hasAttributes' => 'bool', + 'hasChildNodes' => 'bool', + 'isDefaultNamespace' => 'bool', + 'isSameNode' => 'bool', + 'isSupported' => 'bool', + 'lookupNamespaceURI' => '?string', + 'lookupPrefix' => '?string', + 'normalize' => 'void', + ], + 'DOMImplementation' => [ + 'getFeature' => 'never', + 'hasFeature' => 'bool', + ], + 'DOMDocumentFragment' => [ + 'appendXML' => 'bool', + ], + 'DOMNodeList' => [ + 'count' => 'int', + ], + 'DOMCharacterData' => [ + 'appendData' => 'bool', + 'insertData' => 'bool', + 'deleteData' => 'bool', + 'replaceData' => 'bool', + ], + 'DOMAttr' => [ + 'isId' => 'bool', + ], + 'DOMElement' => [ + 'getAttribute' => 'string', + 'getAttributeNS' => 'string', + 'getElementsByTagName' => 'DOMNodeList', + 'getElementsByTagNameNS' => 'DOMNodeList', + 'hasAttribute' => 'bool', + 'hasAttributeNS' => 'bool', + 'removeAttribute' => 'bool', + 'removeAttributeNS' => 'void', + 'setAttributeNS' => 'void', + 'setIdAttribute' => 'void', + 'setIdAttributeNS' => 'void', + 'setIdAttributeNode' => 'void', + ], + 'DOMDocument' => [ + 'createComment' => 'DOMComment', + 'createDocumentFragment' => 'DOMDocumentFragment', + 'createTextNode' => 'DOMText', + 'getElementById' => '?DOMElement', + 'getElementsByTagName' => 'DOMNodeList', + 'getElementsByTagNameNS' => 'DOMNodeList', + 'normalizeDocument' => 'void', + 'registerNodeClass' => 'bool', + 'save' => 'int|false', + 'saveHTML' => 'string|false', + 'saveHTMLFile' => 'int|false', + 'saveXML' => 'string|false', + 'schemaValidate' => 'bool', + 'schemaValidateSource' => 'bool', + 'relaxNGValidate' => 'bool', + 'relaxNGValidateSource' => 'bool', + 'validate' => 'bool', + 'xinclude' => 'int|false', + ], + 'DOMText' => [ + 'isWhitespaceInElementContent' => 'bool', + 'isElementContentWhitespace' => 'bool', + ], + 'DOMNamedNodeMap' => [ + 'getNamedItem' => '?DOMNode', + 'getNamedItemNS' => '?DOMNode', + 'item' => '?DOMNode', + 'count' => 'int', + ], + 'DOMXPath' => [ + 'evaluate' => 'mixed', + 'query' => 'mixed', + 'registerNamespace' => 'bool', + 'registerPhpFunctions' => 'void', + ], + 'finfo' => [ + 'file' => 'string|false', + 'buffer' => 'string|false', + ], + 'IntlPartsIterator' => [ + 'getBreakIterator' => 'IntlBreakIterator', + 'getRuleStatus' => 'int', + ], + 'IntlBreakIterator' => [ + 'createCharacterInstance' => '?IntlBreakIterator', + 'createCodePointInstance' => 'IntlCodePointBreakIterator', + 'createLineInstance' => '?IntlBreakIterator', + 'createSentenceInstance' => '?IntlBreakIterator', + 'createTitleInstance' => '?IntlBreakIterator', + 'createWordInstance' => '?IntlBreakIterator', + 'current' => 'int', + 'first' => 'int', + 'following' => 'int', + 'getErrorCode' => 'int', + 'getErrorMessage' => 'string', + 'getLocale' => 'string|false', + 'getPartsIterator' => 'IntlPartsIterator', + 'getText' => '?string', + 'isBoundary' => 'bool', + 'last' => 'int', + 'next' => 'int', + 'preceding' => 'int', + 'previous' => 'int', + 'setText' => '?bool', + ], + 'IntlRuleBasedBreakIterator' => [ + 'getBinaryRules' => 'string|false', + 'getRules' => 'string|false', + 'getRuleStatus' => 'int', + 'getRuleStatusVec' => 'array|false', + ], + 'IntlCodePointBreakIterator' => [ + 'getLastCodePoint' => 'int', + ], + 'IntlCalendar' => [ + 'createInstance' => '?IntlCalendar', + 'equals' => 'bool', + 'fieldDifference' => 'int|false', + 'add' => 'bool', + 'after' => 'bool', + 'before' => 'bool', + 'fromDateTime' => '?IntlCalendar', + 'get' => 'int|false', + 'getActualMaximum' => 'int|false', + 'getActualMinimum' => 'int|false', + 'getAvailableLocales' => 'array', + 'getDayOfWeekType' => 'int|false', + 'getErrorCode' => 'int|false', + 'getErrorMessage' => 'string|false', + 'getFirstDayOfWeek' => 'int|false', + 'getGreatestMinimum' => 'int|false', + 'getKeywordValuesForLocale' => 'IntlIterator|false', + 'getLeastMaximum' => 'int|false', + 'getLocale' => 'string|false', + 'getMaximum' => 'int|false', + 'getMinimalDaysInFirstWeek' => 'int|false', + 'getMinimum' => 'int|false', + 'getNow' => 'float', + 'getRepeatedWallTimeOption' => 'int', + 'getSkippedWallTimeOption' => 'int', + 'getTime' => 'float|false', + 'getTimeZone' => 'IntlTimeZone|false', + 'getType' => 'string', + 'getWeekendTransition' => 'int|false', + 'inDaylightTime' => 'bool', + 'isEquivalentTo' => 'bool', + 'isLenient' => 'bool', + 'isWeekend' => 'bool', + 'roll' => 'bool', + 'isSet' => 'bool', + 'setTime' => 'bool', + 'setTimeZone' => 'bool', + 'toDateTime' => 'DateTime|false', + ], + 'IntlGregorianCalendar' => [ + 'setGregorianChange' => 'bool', + 'getGregorianChange' => 'float', + 'isLeapYear' => 'bool', + ], + 'Collator' => [ + 'create' => '?Collator', + 'compare' => 'int|false', + 'sort' => 'bool', + 'sortWithSortKeys' => 'bool', + 'asort' => 'bool', + 'getAttribute' => 'int|false', + 'setAttribute' => 'bool', + 'getStrength' => 'int', + 'getLocale' => 'string|false', + 'getErrorCode' => 'int|false', + 'getErrorMessage' => 'string|false', + 'getSortKey' => 'string|false', + ], + 'IntlIterator' => [ + 'current' => 'mixed', + 'key' => 'mixed', + 'next' => 'void', + 'rewind' => 'void', + 'valid' => 'bool', + ], + 'UConverter' => [ + 'convert' => 'string|false', + 'fromUCallback' => 'string|int|array|null', + 'getAliases' => 'array|false|null', + 'getAvailable' => 'array', + 'getDestinationEncoding' => 'string|false|null', + 'getDestinationType' => 'int|false|null', + 'getErrorCode' => 'int', + 'getErrorMessage' => '?string', + 'getSourceEncoding' => 'string|false|null', + 'getSourceType' => 'int|false|null', + 'getStandards' => '?array', + 'getSubstChars' => 'string|false|null', + 'reasonText' => 'string', + 'setDestinationEncoding' => 'bool', + 'setSourceEncoding' => 'bool', + 'setSubstChars' => 'bool', + 'toUCallback' => 'string|int|array|null', + 'transcode' => 'string|false', + ], + 'IntlDateFormatter' => [ + 'create' => '?IntlDateFormatter', + 'getDateType' => 'int|false', + 'getTimeType' => 'int|false', + 'getCalendar' => 'int|false', + 'setCalendar' => 'bool', + 'getTimeZoneId' => 'string|false', + 'getCalendarObject' => 'IntlCalendar|false|null', + 'getTimeZone' => 'IntlTimeZone|false', + 'setTimeZone' => '?bool', + 'setPattern' => 'bool', + 'getPattern' => 'string|false', + 'getLocale' => 'string|false', + 'setLenient' => 'void', + 'isLenient' => 'bool', + 'format' => 'string|false', + 'formatObject' => 'string|false', + 'parse' => 'int|float|false', + 'localtime' => 'array|false', + 'getErrorCode' => 'int', + 'getErrorMessage' => 'string', + ], + 'NumberFormatter' => [ + 'create' => '?NumberFormatter', + 'format' => 'string|false', + 'parse' => 'int|float|false', + 'formatCurrency' => 'string|false', + 'parseCurrency' => 'float|false', + 'setAttribute' => 'bool', + 'getAttribute' => 'int|float|false', + 'setTextAttribute' => 'bool', + 'getTextAttribute' => 'string|false', + 'setSymbol' => 'bool', + 'getSymbol' => 'string|false', + 'setPattern' => 'bool', + 'getPattern' => 'string|false', + 'getLocale' => 'string|false', + 'getErrorCode' => 'int', + 'getErrorMessage' => 'string', + ], + 'Locale' => [ + 'getDefault' => 'string', + 'getPrimaryLanguage' => '?string', + 'getScript' => '?string', + 'getRegion' => '?string', + 'getKeywords' => 'array|false|null', + 'getDisplayScript' => 'string|false', + 'getDisplayRegion' => 'string|false', + 'getDisplayName' => 'string|false', + 'getDisplayLanguage' => 'string|false', + 'getDisplayVariant' => 'string|false', + 'composeLocale' => 'string|false', + 'parseLocale' => '?array', + 'getAllVariants' => '?array', + 'filterMatches' => '?bool', + 'lookup' => '?string', + 'canonicalize' => '?string', + 'acceptFromHttp' => 'string|false', + ], + 'MessageFormatter' => [ + 'create' => '?MessageFormatter', + 'format' => 'string|false', + 'formatMessage' => 'string|false', + 'parse' => 'array|false', + 'parseMessage' => 'array|false', + 'setPattern' => 'bool', + 'getPattern' => 'string|false', + 'getLocale' => 'string', + 'getErrorCode' => 'int', + 'getErrorMessage' => 'string', + ], + 'Normalizer' => [ + 'normalize' => 'string|false', + 'isNormalized' => 'bool', + 'getRawDecomposition' => '?string', + ], + 'ResourceBundle' => [ + 'create' => '?ResourceBundle', + 'get' => 'mixed', + 'count' => 'int', + 'getLocales' => 'array|false', + 'getErrorCode' => 'int', + 'getErrorMessage' => 'string', + ], + 'Spoofchecker' => [ + 'isSuspicious' => 'bool', + 'areConfusable' => 'bool', + 'setAllowedLocales' => 'void', + 'setChecks' => 'void', + 'setRestrictionLevel' => 'void', + ], + 'IntlTimeZone' => [ + 'countEquivalentIDs' => 'int|false', + 'createDefault' => 'IntlTimeZone', + 'createEnumeration' => 'IntlIterator|false', + 'createTimeZone' => '?IntlTimeZone', + 'createTimeZoneIDEnumeration' => 'IntlIterator|false', + 'fromDateTimeZone' => '?IntlTimeZone', + 'getCanonicalID' => 'string|false', + 'getDisplayName' => 'string|false', + 'getDSTSavings' => 'int', + 'getEquivalentID' => 'string|false', + 'getErrorCode' => 'int|false', + 'getErrorMessage' => 'string|false', + 'getGMT' => 'IntlTimeZone', + 'getID' => 'string|false', + 'getOffset' => 'bool', + 'getRawOffset' => 'int', + 'getRegion' => 'string|false', + 'getTZDataVersion' => 'string|false', + 'getUnknown' => 'IntlTimeZone', + 'getWindowsID' => 'string|false', + 'getIDForWindowsID' => 'string|false', + 'hasSameRules' => 'bool', + 'toDateTimeZone' => 'DateTimeZone|false', + 'useDaylightTime' => 'bool', + ], + 'Transliterator' => [ + 'create' => '?Transliterator', + 'createFromRules' => '?Transliterator', + 'createInverse' => '?Transliterator', + 'listIDs' => 'array|false', + 'transliterate' => 'string|false', + 'getErrorCode' => 'int|false', + 'getErrorMessage' => 'string|false', + ], + 'IntlChar' => [ + 'hasBinaryProperty' => '?bool', + 'charAge' => '?array', + 'charDigitValue' => '?int', + 'charDirection' => '?int', + 'charFromName' => '?int', + 'charMirror' => 'int|string|null', + 'charName' => '?string', + 'charType' => '?int', + 'chr' => '?string', + 'digit' => 'int|false|null', + 'enumCharNames' => '?bool', + 'enumCharTypes' => 'void', + 'foldCase' => 'int|string|null', + 'forDigit' => 'int', + 'getBidiPairedBracket' => 'int|string|null', + 'getBlockCode' => '?int', + 'getCombiningClass' => '?int', + 'getFC_NFKC_Closure' => 'string|false|null', + 'getIntPropertyMaxValue' => 'int', + 'getIntPropertyMinValue' => 'int', + 'getIntPropertyValue' => '?int', + 'getNumericValue' => '?float', + 'getPropertyEnum' => 'int', + 'getPropertyName' => 'string|false', + 'getPropertyValueEnum' => 'int', + 'getPropertyValueName' => 'string|false', + 'getUnicodeVersion' => 'array', + 'isalnum' => '?bool', + 'isalpha' => '?bool', + 'isbase' => '?bool', + 'isblank' => '?bool', + 'iscntrl' => '?bool', + 'isdefined' => '?bool', + 'isdigit' => '?bool', + 'isgraph' => '?bool', + 'isIDIgnorable' => '?bool', + 'isIDPart' => '?bool', + 'isIDStart' => '?bool', + 'isISOControl' => '?bool', + 'isJavaIDPart' => '?bool', + 'isJavaIDStart' => '?bool', + 'isJavaSpaceChar' => '?bool', + 'islower' => '?bool', + 'isMirrored' => '?bool', + 'isprint' => '?bool', + 'ispunct' => '?bool', + 'isspace' => '?bool', + 'istitle' => '?bool', + 'isUAlphabetic' => '?bool', + 'isULowercase' => '?bool', + 'isupper' => '?bool', + 'isUUppercase' => '?bool', + 'isUWhiteSpace' => '?bool', + 'isWhitespace' => '?bool', + 'isxdigit' => '?bool', + 'ord' => '?int', + 'tolower' => 'int|string|null', + 'totitle' => 'int|string|null', + 'toupper' => 'int|string|null', + ], + 'JsonSerializable' => [ + 'jsonSerialize' => 'mixed', + ], + 'mysqli' => [ + 'autocommit' => 'bool', + 'begin_transaction' => 'bool', + 'change_user' => 'bool', + 'character_set_name' => 'string', + 'commit' => 'bool', + 'connect' => 'bool', + 'dump_debug_info' => 'bool', + 'get_charset' => '?object', + 'get_client_info' => 'string', + 'get_connection_stats' => 'array', + 'get_server_info' => 'string', + 'get_warnings' => 'mysqli_warning|false', + 'kill' => 'bool', + 'multi_query' => 'bool', + 'more_results' => 'bool', + 'next_result' => 'bool', + 'ping' => 'bool', + 'poll' => 'int|false', + 'prepare' => 'mysqli_stmt|false', + 'query' => 'mysqli_result|bool', + 'real_connect' => 'bool', + 'real_escape_string' => 'string', + 'reap_async_query' => 'mysqli_result|bool', + 'escape_string' => 'string', + 'real_query' => 'bool', + 'release_savepoint' => 'bool', + 'rollback' => 'bool', + 'savepoint' => 'bool', + 'select_db' => 'bool', + 'set_charset' => 'bool', + 'options' => 'bool', + 'set_opt' => 'bool', + 'stat' => 'string|false', + 'stmt_init' => 'mysqli_stmt|false', + 'store_result' => 'mysqli_result|false', + 'thread_safe' => 'bool', + 'use_result' => 'mysqli_result|false', + 'refresh' => 'bool', + ], + 'mysqli_result' => [ + 'close' => 'void', + 'free' => 'void', + 'data_seek' => 'bool', + 'fetch_field' => 'object|false', + 'fetch_fields' => 'array', + 'fetch_field_direct' => 'object|false', + 'fetch_all' => 'array', + 'fetch_array' => 'array|null|false', + 'fetch_assoc' => 'array|null|false', + 'fetch_object' => 'object|null|false', + 'fetch_row' => 'array|null|false', + 'field_seek' => 'bool', + 'free_result' => 'void', + ], + 'mysqli_stmt' => [ + 'attr_get' => 'int', + 'attr_set' => 'bool', + 'bind_param' => 'bool', + 'bind_result' => 'bool', + 'data_seek' => 'void', + 'execute' => 'bool', + 'fetch' => '?bool', + 'get_warnings' => 'mysqli_warning|false', + 'result_metadata' => 'mysqli_result|false', + 'more_results' => 'bool', + 'next_result' => 'bool', + 'num_rows' => 'int|string', + 'send_long_data' => 'bool', + 'free_result' => 'void', + 'reset' => 'bool', + 'prepare' => 'bool', + 'store_result' => 'bool', + 'get_result' => 'mysqli_result|false', + ], + 'OCILob' => [ + 'save' => 'bool', + 'import' => 'bool', + 'saveFile' => 'bool', + 'load' => 'string|false', + 'read' => 'string|false', + 'eof' => 'bool', + 'tell' => 'int|false', + 'rewind' => 'bool', + 'seek' => 'bool', + 'size' => 'int|false', + 'write' => 'int|false', + 'append' => 'bool', + 'truncate' => 'bool', + 'erase' => 'int|false', + 'flush' => 'bool', + 'setBuffering' => 'bool', + 'getBuffering' => 'bool', + 'writeToFile' => 'bool', + 'export' => 'bool', + 'writeTemporary' => 'bool', + 'close' => 'bool', + 'free' => 'bool', + ], + 'OCICollection' => [ + 'free' => 'bool', + 'append' => 'bool', + 'getElem' => 'string|float|null|false', + 'assign' => 'bool', + 'assignElem' => 'bool', + 'size' => 'int|false', + 'max' => 'int|false', + 'trim' => 'bool', + ], + 'PDO' => [ + 'beginTransaction' => 'bool', + 'commit' => 'bool', + 'errorCode' => '?string', + 'errorInfo' => 'array', + 'exec' => 'int|false', + 'getAttribute' => 'mixed', + 'getAvailableDrivers' => 'array', + 'inTransaction' => 'bool', + 'lastInsertId' => 'string|false', + 'prepare' => 'PDOStatement|false', + 'query' => 'PDOStatement|false', + 'quote' => 'string|false', + 'rollBack' => 'bool', + 'setAttribute' => 'bool', + ], + 'PDOStatement' => [ + 'bindColumn' => 'bool', + 'bindParam' => 'bool', + 'bindValue' => 'bool', + 'closeCursor' => 'bool', + 'columnCount' => 'int', + 'debugDumpParams' => '?bool', + 'errorCode' => '?string', + 'errorInfo' => 'array', + 'execute' => 'bool', + 'fetch' => 'mixed', + 'fetchAll' => 'array', + 'fetchColumn' => 'mixed', + 'fetchObject' => 'object|false', + 'getAttribute' => 'mixed', + 'getColumnMeta' => 'array|false', + 'nextRowset' => 'bool', + 'rowCount' => 'int', + 'setAttribute' => 'bool', + ], + 'PDO_PGSql_Ext' => [ + 'pgsqlCopyFromArray' => 'bool', + 'pgsqlCopyFromFile' => 'bool', + 'pgsqlCopyToArray' => 'array|false', + 'pgsqlCopyToFile' => 'bool', + 'pgsqlLOBCreate' => 'string|false', + 'pgsqlLOBUnlink' => 'bool', + 'pgsqlGetNotify' => 'array|false', + 'pgsqlGetPid' => 'int', + ], + 'PDO_SQLite_Ext' => [ + 'sqliteCreateFunction' => 'bool', + 'sqliteCreateAggregate' => 'bool', + 'sqliteCreateCollation' => 'bool', + ], + 'Phar' => [ + 'addEmptyDir' => 'void', + 'addFile' => 'void', + 'addFromString' => 'void', + 'buildFromDirectory' => 'array', + 'buildFromIterator' => 'array', + 'compressFiles' => 'void', + 'compress' => '?Phar', + 'decompress' => '?Phar', + 'convertToExecutable' => '?Phar', + 'convertToData' => '?PharData', + 'count' => 'int', + 'extractTo' => 'bool', + 'getAlias' => '?string', + 'getPath' => 'string', + 'getMetadata' => 'mixed', + 'getModified' => 'bool', + 'getSignature' => 'array|false', + 'getStub' => 'string', + 'getVersion' => 'string', + 'hasMetadata' => 'bool', + 'isBuffering' => 'bool', + 'isCompressed' => 'int|false', + 'isFileFormat' => 'bool', + 'isWritable' => 'bool', + 'offsetExists' => 'bool', + 'offsetGet' => 'SplFileInfo', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'setAlias' => 'bool', + 'setDefaultStub' => 'bool', + 'setMetadata' => 'void', + 'setSignatureAlgorithm' => 'void', + 'startBuffering' => 'void', + 'stopBuffering' => 'void', + ], + 'PharData' => [ + 'addEmptyDir' => 'void', + 'addFile' => 'void', + 'addFromString' => 'void', + 'buildFromDirectory' => 'array', + 'buildFromIterator' => 'array', + 'compressFiles' => 'void', + 'compress' => '?PharData', + 'decompress' => '?PharData', + 'convertToExecutable' => '?Phar', + 'convertToData' => '?PharData', + 'count' => 'int', + 'extractTo' => 'bool', + 'getAlias' => '?string', + 'getPath' => 'string', + 'getMetadata' => 'mixed', + 'getModified' => 'bool', + 'getSignature' => 'array|false', + 'getStub' => 'string', + 'getVersion' => 'string', + 'hasMetadata' => 'bool', + 'isBuffering' => 'bool', + 'isCompressed' => 'int|false', + 'isFileFormat' => 'bool', + 'isWritable' => 'bool', + 'offsetExists' => 'bool', + 'offsetGet' => 'SplFileInfo', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'setAlias' => 'bool', + 'setDefaultStub' => 'bool', + 'setMetadata' => 'void', + 'setSignatureAlgorithm' => 'void', + 'startBuffering' => 'void', + 'stopBuffering' => 'void', + ], + 'PharFileInfo' => [ + 'chmod' => 'void', + 'getCompressedSize' => 'int', + 'getCRC32' => 'int', + 'getContent' => 'string', + 'getMetadata' => 'mixed', + 'getPharFlags' => 'int', + 'hasMetadata' => 'bool', + 'isCompressed' => 'bool', + 'isCRCChecked' => 'bool', + 'setMetadata' => 'void', + ], + 'Reflection' => [ + 'getModifierNames' => 'array', + ], + 'ReflectionFunctionAbstract' => [ + 'inNamespace' => 'bool', + 'isClosure' => 'bool', + 'isDeprecated' => 'bool', + 'isInternal' => 'bool', + 'isUserDefined' => 'bool', + 'isGenerator' => 'bool', + 'isVariadic' => 'bool', + 'isStatic' => 'bool', + 'getClosureThis' => '?object', + 'getClosureCalledClass' => '?ReflectionClass', + 'getClosureScopeClass' => '?ReflectionClass', + 'getDocComment' => 'string|false', + 'getEndLine' => 'int|false', + 'getExtension' => '?ReflectionExtension', + 'getExtensionName' => 'string|false', + 'getFileName' => 'string|false', + 'getName' => 'string', + 'getNamespaceName' => 'string', + 'getNumberOfParameters' => 'int', + 'getNumberOfRequiredParameters' => 'int', + 'getParameters' => 'array', + 'getShortName' => 'string', + 'getStartLine' => 'int|false', + 'getStaticVariables' => 'array', + 'returnsReference' => 'bool', + 'hasReturnType' => 'bool', + 'getReturnType' => '?ReflectionType', + ], + 'ReflectionFunction' => [ + 'isDisabled' => 'bool', + 'invoke' => 'mixed', + 'invokeArgs' => 'mixed', + 'getClosure' => 'Closure', + 'getExecutingLine' => 'int', + 'getExecutingFile' => 'string', + 'getTrace' => 'array', + 'getFunction' => 'ReflectionFunctionAbstract', + 'getThis' => '?object', + 'getExecutingGenerator' => 'Generator', + ], + 'ReflectionMethod' => [ + 'isPublic' => 'bool', + 'isPrivate' => 'bool', + 'isProtected' => 'bool', + 'isAbstract' => 'bool', + 'isFinal' => 'bool', + 'isConstructor' => 'bool', + 'isDestructor' => 'bool', + 'getClosure' => 'Closure', + 'getModifiers' => 'int', + 'invoke' => 'mixed', + 'invokeArgs' => 'mixed', + 'getDeclaringClass' => 'ReflectionClass', + 'getPrototype' => 'ReflectionMethod', + 'setAccessible' => 'void', + ], + 'ReflectionClass' => [ + 'getName' => 'string', + 'isInternal' => 'bool', + 'isUserDefined' => 'bool', + 'isAnonymous' => 'bool', + 'isInstantiable' => 'bool', + 'isCloneable' => 'bool', + 'getFileName' => 'string|false', + 'getStartLine' => 'int|false', + 'getEndLine' => 'int|false', + 'getDocComment' => 'string|false', + 'getConstructor' => '?ReflectionMethod', + 'hasMethod' => 'bool', + 'getMethod' => 'ReflectionMethod', + 'getMethods' => 'array', + 'hasProperty' => 'bool', + 'getProperty' => 'ReflectionProperty', + 'getProperties' => 'array', + 'hasConstant' => 'bool', + 'getConstants' => 'array', + 'getReflectionConstants' => 'array', + 'getConstant' => 'mixed', + 'getReflectionConstant' => 'ReflectionClassConstant|false', + 'getInterfaces' => 'array', + 'getInterfaceNames' => 'array', + 'isInterface' => 'bool', + 'getTraits' => 'array', + 'getTraitNames' => 'array', + 'getTraitAliases' => 'array', + 'isTrait' => 'bool', + 'isAbstract' => 'bool', + 'isFinal' => 'bool', + 'getModifiers' => 'int', + 'isInstance' => 'bool', + 'newInstance' => 'object', + 'newInstanceWithoutConstructor' => 'object', + 'newInstanceArgs' => '?object', + 'getParentClass' => 'ReflectionClass|false', + 'isSubclassOf' => 'bool', + 'getStaticProperties' => '?array', + 'getStaticPropertyValue' => 'mixed', + 'setStaticPropertyValue' => 'void', + 'getDefaultProperties' => 'array', + 'isIterable' => 'bool', + 'isIterateable' => 'bool', + 'implementsInterface' => 'bool', + 'getExtension' => '?ReflectionExtension', + 'getExtensionName' => 'string|false', + 'inNamespace' => 'bool', + 'getNamespaceName' => 'string', + 'getShortName' => 'string', + ], + 'ReflectionProperty' => [ + 'getName' => 'string', + 'getValue' => 'mixed', + 'setValue' => 'void', + 'isInitialized' => 'bool', + 'isPublic' => 'bool', + 'isPrivate' => 'bool', + 'isProtected' => 'bool', + 'isStatic' => 'bool', + 'isDefault' => 'bool', + 'getModifiers' => 'int', + 'getDeclaringClass' => 'ReflectionClass', + 'getDocComment' => 'string|false', + 'setAccessible' => 'void', + 'getType' => '?ReflectionType', + 'hasType' => 'bool', + 'getDefaultValue' => 'mixed', + ], + 'ReflectionClassConstant' => [ + 'getName' => 'string', + 'getValue' => 'mixed', + 'isPublic' => 'bool', + 'isPrivate' => 'bool', + 'isProtected' => 'bool', + 'getModifiers' => 'int', + 'getDeclaringClass' => 'ReflectionClass', + 'getDocComment' => 'string|false', + ], + 'ReflectionParameter' => [ + 'getName' => 'string', + 'isPassedByReference' => 'bool', + 'canBePassedByValue' => 'bool', + 'getDeclaringFunction' => 'ReflectionFunctionAbstract', + 'getDeclaringClass' => '?ReflectionClass', + 'getClass' => '?ReflectionClass', + 'hasType' => 'bool', + 'getType' => '?ReflectionType', + 'isArray' => 'bool', + 'isCallable' => 'bool', + 'allowsNull' => 'bool', + 'getPosition' => 'int', + 'isOptional' => 'bool', + 'isDefaultValueAvailable' => 'bool', + 'getDefaultValue' => 'mixed', + 'isDefaultValueConstant' => 'bool', + 'getDefaultValueConstantName' => '?string', + 'isVariadic' => 'bool', + ], + 'ReflectionType' => [ + 'allowsNull' => 'bool', + ], + 'ReflectionNamedType' => [ + 'getName' => 'string', + 'isBuiltin' => 'bool', + ], + 'ReflectionExtension' => [ + 'getName' => 'string', + 'getVersion' => '?string', + 'getFunctions' => 'array', + 'getConstants' => 'array', + 'getINIEntries' => 'array', + 'getClasses' => 'array', + 'getClassNames' => 'array', + 'getDependencies' => 'array', + 'info' => 'void', + 'isPersistent' => 'bool', + 'isTemporary' => 'bool', + ], + 'ReflectionZendExtension' => [ + 'getName' => 'string', + 'getVersion' => 'string', + 'getAuthor' => 'string', + 'getURL' => 'string', + 'getCopyright' => 'string', + ], + 'SessionHandlerInterface' => [ + 'open' => 'bool', + 'close' => 'bool', + 'read' => 'string|false', + 'write' => 'bool', + 'destroy' => 'bool', + 'gc' => 'int|false', + ], + 'SessionIdInterface' => [ + 'create_sid' => 'string', + ], + 'SessionUpdateTimestampHandlerInterface' => [ + 'validateId' => 'bool', + 'updateTimestamp' => 'bool', + ], + 'SessionHandler' => [ + 'open' => 'bool', + 'close' => 'bool', + 'read' => 'string|false', + 'write' => 'bool', + 'destroy' => 'bool', + 'gc' => 'int|false', + 'create_sid' => 'string', + ], + 'SimpleXMLElement' => [ + 'xpath' => 'array|null|false', + 'registerXPathNamespace' => 'bool', + 'asXML' => 'string|bool', + 'saveXML' => 'string|bool', + 'getNamespaces' => 'array', + 'getDocNamespaces' => 'array|false', + 'children' => '?SimpleXMLElement', + 'attributes' => '?SimpleXMLElement', + 'addChild' => '?SimpleXMLElement', + 'addAttribute' => 'void', + 'getName' => 'string', + 'count' => 'int', + 'rewind' => 'void', + 'valid' => 'bool', + 'current' => 'SimpleXMLElement', + 'key' => 'string', + 'next' => 'void', + 'hasChildren' => 'bool', + 'getChildren' => '?SimpleXMLElement', + ], + 'SNMP' => [ + 'close' => 'bool', + 'setSecurity' => 'bool', + 'get' => 'mixed', + 'getnext' => 'mixed', + 'walk' => 'array|false', + 'set' => 'bool', + 'getErrno' => 'int', + 'getError' => 'string', + ], + 'SoapServer' => [ + 'fault' => 'void', + 'addSoapHeader' => 'void', + 'setPersistence' => 'void', + 'setClass' => 'void', + 'setObject' => 'void', + 'getFunctions' => 'array', + 'addFunction' => 'void', + 'handle' => 'void', + ], + 'SoapClient' => [ + '__call' => 'mixed', + '__soapCall' => 'mixed', + '__getFunctions' => '?array', + '__getTypes' => '?array', + '__getLastRequest' => '?string', + '__getLastResponse' => '?string', + '__getLastRequestHeaders' => '?string', + '__getLastResponseHeaders' => '?string', + '__doRequest' => '?string', + '__setCookie' => 'void', + '__getCookies' => 'array', + '__setSoapHeaders' => 'bool', + '__setLocation' => '?string', + ], + 'ArrayObject' => [ + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'append' => 'void', + 'getArrayCopy' => 'array', + 'count' => 'int', + 'getFlags' => 'int', + 'setFlags' => 'void', + 'asort' => 'bool', + 'ksort' => 'bool', + 'uasort' => 'bool', + 'uksort' => 'bool', + 'natsort' => 'bool', + 'natcasesort' => 'bool', + 'unserialize' => 'void', + 'serialize' => 'string', + '__serialize' => 'array', + '__unserialize' => 'void', + 'getIterator' => 'Iterator', + 'exchangeArray' => 'array', + 'setIteratorClass' => 'void', + 'getIteratorClass' => 'string', + '__debugInfo' => 'array', + ], + 'ArrayIterator' => [ + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'append' => 'void', + 'getArrayCopy' => 'array', + 'count' => 'int', + 'getFlags' => 'int', + 'setFlags' => 'void', + 'asort' => 'bool', + 'ksort' => 'bool', + 'uasort' => 'bool', + 'uksort' => 'bool', + 'natsort' => 'bool', + 'natcasesort' => 'bool', + 'unserialize' => 'void', + 'serialize' => 'string', + '__serialize' => 'array', + '__unserialize' => 'void', + 'rewind' => 'void', + 'current' => 'mixed', + 'key' => 'string|int|null', + 'next' => 'void', + 'valid' => 'bool', + 'seek' => 'void', + '__debugInfo' => 'array', + ], + 'RecursiveArrayIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => '?RecursiveArrayIterator', + ], + 'SplFileInfo' => [ + 'getPath' => 'string', + 'getFilename' => 'string', + 'getExtension' => 'string', + 'getBasename' => 'string', + 'getPathname' => 'string', + 'getPerms' => 'int|false', + 'getInode' => 'int|false', + 'getSize' => 'int|false', + 'getOwner' => 'int|false', + 'getGroup' => 'int|false', + 'getATime' => 'int|false', + 'getMTime' => 'int|false', + 'getCTime' => 'int|false', + 'getType' => 'string|false', + 'isWritable' => 'bool', + 'isReadable' => 'bool', + 'isExecutable' => 'bool', + 'isFile' => 'bool', + 'isDir' => 'bool', + 'isLink' => 'bool', + 'getLinkTarget' => 'string|false', + 'getRealPath' => 'string|false', + 'getFileInfo' => 'SplFileInfo', + 'getPathInfo' => '?SplFileInfo', + 'openFile' => 'SplFileObject', + 'setFileClass' => 'void', + 'setInfoClass' => 'void', + '__debugInfo' => 'array', + '_bad_state_ex' => 'void', + ], + 'DirectoryIterator' => [ + 'getFilename' => 'string', + 'getExtension' => 'string', + 'getBasename' => 'string', + 'isDot' => 'bool', + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'mixed', + 'current' => 'mixed', + 'next' => 'void', + 'seek' => 'void', + ], + 'FilesystemIterator' => [ + 'rewind' => 'void', + 'key' => 'string', + 'current' => 'string|SplFileInfo|FilesystemIterator', + 'getFlags' => 'int', + 'setFlags' => 'void', + ], + 'RecursiveDirectoryIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => 'RecursiveDirectoryIterator', + 'getSubPath' => 'string', + 'getSubPathname' => 'string', + ], + 'GlobIterator' => [ + 'count' => 'int', + ], + 'SplFileObject' => [ + 'rewind' => 'void', + 'eof' => 'bool', + 'valid' => 'bool', + 'fgets' => 'string', + 'fread' => 'string|false', + 'fgetcsv' => 'array|false', + 'fputcsv' => 'int|false', + 'setCsvControl' => 'void', + 'getCsvControl' => 'array', + 'flock' => 'bool', + 'fflush' => 'bool', + 'ftell' => 'int|false', + 'fseek' => 'int', + 'fgetc' => 'string|false', + 'fpassthru' => 'int', + 'fscanf' => 'array|int|null', + 'fwrite' => 'int|false', + 'fstat' => 'array', + 'ftruncate' => 'bool', + 'current' => 'string|array|false', + 'key' => 'int', + 'next' => 'void', + 'setFlags' => 'void', + 'getFlags' => 'int', + 'setMaxLineLen' => 'void', + 'getMaxLineLen' => 'int', + 'hasChildren' => 'false', + 'getChildren' => 'null', + 'seek' => 'void', + 'getCurrentLine' => 'string', + ], + 'SplDoublyLinkedList' => [ + 'add' => 'void', + 'pop' => 'mixed', + 'shift' => 'mixed', + 'push' => 'void', + 'unshift' => 'void', + 'top' => 'mixed', + 'bottom' => 'mixed', + '__debugInfo' => 'array', + 'count' => 'int', + 'isEmpty' => 'bool', + 'setIteratorMode' => 'int', + 'getIteratorMode' => 'int', + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'rewind' => 'void', + 'current' => 'mixed', + 'key' => 'int', + 'prev' => 'void', + 'next' => 'void', + 'valid' => 'bool', + 'unserialize' => 'void', + 'serialize' => 'string', + '__serialize' => 'array', + '__unserialize' => 'void', + ], + 'SplQueue' => [ + 'enqueue' => 'void', + 'dequeue' => 'mixed', + ], + 'SplFixedArray' => [ + '__wakeup' => 'void', + 'count' => 'int', + 'toArray' => 'array', + 'fromArray' => 'SplFixedArray', + 'getSize' => 'int', + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + ], + 'SplPriorityQueue' => [ + 'compare' => 'int', + 'setExtractFlags' => 'int', + 'top' => 'mixed', + 'extract' => 'mixed', + 'count' => 'int', + 'isEmpty' => 'bool', + 'rewind' => 'void', + 'current' => 'mixed', + 'key' => 'int', + 'next' => 'void', + 'valid' => 'bool', + 'isCorrupted' => 'bool', + 'getExtractFlags' => 'int', + '__debugInfo' => 'array', + ], + 'SplHeap' => [ + 'extract' => 'mixed', + 'insert' => 'bool', + 'top' => 'mixed', + 'count' => 'int', + 'isEmpty' => 'bool', + 'rewind' => 'void', + 'current' => 'mixed', + 'key' => 'int', + 'next' => 'void', + 'valid' => 'bool', + 'recoverFromCorruption' => 'bool', + 'compare' => 'int', + 'isCorrupted' => 'bool', + '__debugInfo' => 'array', + ], + 'SplMinHeap' => [ + 'compare' => 'int', + ], + 'SplMaxHeap' => [ + 'compare' => 'int', + ], + 'EmptyIterator' => [ + 'current' => 'never', + 'next' => 'void', + 'key' => 'never', + 'valid' => 'false', + 'rewind' => 'void', + ], + 'CallbackFilterIterator' => [ + 'accept' => 'bool', + ], + 'RecursiveCallbackFilterIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => 'RecursiveCallbackFilterIterator', + ], + 'RecursiveIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => '?RecursiveIterator', + ], + 'RecursiveIteratorIterator' => [ + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'mixed', + 'current' => 'mixed', + 'next' => 'void', + 'getDepth' => 'int', + 'getSubIterator' => '?RecursiveIterator', + 'getInnerIterator' => 'RecursiveIterator', + 'beginIteration' => 'void', + 'endIteration' => 'void', + 'callHasChildren' => 'bool', + 'callGetChildren' => '?RecursiveIterator', + 'beginChildren' => 'void', + 'endChildren' => 'void', + 'nextElement' => 'void', + 'setMaxDepth' => 'void', + 'getMaxDepth' => 'int|false', + ], + 'OuterIterator' => [ + 'getInnerIterator' => '?Iterator', + ], + 'IteratorIterator' => [ + 'getInnerIterator' => '?Iterator', + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'mixed', + 'current' => 'mixed', + 'next' => 'void', + ], + 'FilterIterator' => [ + 'accept' => 'bool', + 'rewind' => 'void', + 'next' => 'void', + ], + 'RecursiveFilterIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => '?RecursiveFilterIterator', + ], + 'ParentIterator' => [ + 'accept' => 'bool', + ], + 'SeekableIterator' => [ + 'seek' => 'void', + ], + 'LimitIterator' => [ + 'rewind' => 'void', + 'valid' => 'bool', + 'next' => 'void', + 'seek' => 'int', + 'getPosition' => 'int', + ], + 'CachingIterator' => [ + 'rewind' => 'void', + 'valid' => 'bool', + 'next' => 'void', + 'hasNext' => 'bool', + 'getFlags' => 'int', + 'setFlags' => 'void', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'offsetExists' => 'bool', + 'getCache' => 'array', + 'count' => 'int', + ], + 'RecursiveCachingIterator' => [ + 'hasChildren' => 'bool', + 'getChildren' => '?RecursiveCachingIterator', + ], + 'NoRewindIterator' => [ + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'mixed', + 'current' => 'mixed', + 'next' => 'void', + ], + 'AppendIterator' => [ + 'append' => 'void', + 'rewind' => 'void', + 'valid' => 'bool', + 'current' => 'mixed', + 'next' => 'void', + 'getIteratorIndex' => '?int', + 'getArrayIterator' => 'ArrayIterator', + ], + 'InfiniteIterator' => [ + 'next' => 'void', + ], + 'RegexIterator' => [ + 'accept' => 'bool', + 'getMode' => 'int', + 'setMode' => 'void', + 'getFlags' => 'int', + 'setFlags' => 'void', + 'getRegex' => 'string', + 'getPregFlags' => 'int', + 'setPregFlags' => 'void', + ], + 'RecursiveRegexIterator' => [ + 'accept' => 'bool', + 'hasChildren' => 'bool', + 'getChildren' => 'RecursiveRegexIterator', + ], + 'RecursiveTreeIterator' => [ + 'key' => 'mixed', + 'current' => 'mixed', + 'getPrefix' => 'string', + 'setPostfix' => 'void', + 'setPrefixPart' => 'void', + 'getEntry' => 'string', + 'getPostfix' => 'string', + ], + 'SplObserver' => [ + 'update' => 'void', + ], + 'SplSubject' => [ + 'attach' => 'void', + 'detach' => 'void', + 'notify' => 'void', + ], + 'SplObjectStorage' => [ + 'attach' => 'void', + 'detach' => 'void', + 'contains' => 'bool', + 'addAll' => 'int', + 'removeAll' => 'int', + 'removeAllExcept' => 'int', + 'getInfo' => 'mixed', + 'setInfo' => 'void', + 'count' => 'int', + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'int', + 'current' => 'object', + 'next' => 'void', + 'unserialize' => 'void', + 'serialize' => 'string', + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + 'getHash' => 'string', + '__serialize' => 'array', + '__unserialize' => 'void', + '__debugInfo' => 'array', + ], + 'MultipleIterator' => [ + 'getFlags' => 'int', + 'setFlags' => 'void', + 'attachIterator' => 'void', + 'detachIterator' => 'void', + 'containsIterator' => 'bool', + 'countIterators' => 'int', + 'rewind' => 'void', + 'valid' => 'bool', + 'key' => 'array', + 'current' => 'array', + 'next' => 'void', + '__debugInfo' => 'array', + ], + 'SQLite3' => [ + 'open' => 'void', + 'version' => 'array', + 'lastInsertRowID' => 'int', + 'lastErrorCode' => 'int', + 'lastExtendedErrorCode' => 'int', + 'lastErrorMsg' => 'string', + 'changes' => 'int', + 'busyTimeout' => 'bool', + 'loadExtension' => 'bool', + 'backup' => 'bool', + 'escapeString' => 'string', + 'prepare' => 'SQLite3Stmt|false', + 'exec' => 'bool', + 'query' => 'SQLite3Result|false', + 'querySingle' => 'mixed', + 'createFunction' => 'bool', + 'createAggregate' => 'bool', + 'createCollation' => 'bool', + 'enableExceptions' => 'bool', + 'enableExtendedResultCodes' => 'bool', + 'setAuthorizer' => 'bool', + ], + 'SQLite3Stmt' => [ + 'bindParam' => 'bool', + 'bindValue' => 'bool', + 'clear' => 'bool', + 'close' => 'bool', + 'execute' => 'SQLite3Result|false', + 'getSQL' => 'string|false', + 'paramCount' => 'int', + 'readOnly' => 'bool', + 'reset' => 'bool', + ], + 'SQLite3Result' => [ + 'numColumns' => 'int', + 'columnName' => 'string|false', + 'columnType' => 'int|false', + 'fetchArray' => 'array|false', + 'reset' => 'bool', + ], + 'Directory' => [ + 'close' => 'void', + 'rewind' => 'void', + 'read' => 'string|false', + ], + 'php_user_filter' => [ + 'filter' => 'int', + 'onCreate' => 'bool', + 'onClose' => 'void', + ], + 'tidy' => [ + 'getOpt' => 'string|int|bool', + 'cleanRepair' => 'bool', + 'parseFile' => 'bool', + 'parseString' => 'bool', + 'repairString' => 'string|false', + 'repairFile' => 'string|false', + 'diagnose' => 'bool', + 'getRelease' => 'string', + 'getConfig' => 'array', + 'getStatus' => 'int', + 'getHtmlVer' => 'int', + 'getOptDoc' => 'string|false', + 'isXhtml' => 'bool', + 'isXml' => 'bool', + 'root' => '?tidyNode', + 'head' => '?tidyNode', + 'html' => '?tidyNode', + 'body' => '?tidyNode', + ], + 'XMLReader' => [ + 'getAttribute' => '?string', + 'getAttributeNo' => '?string', + 'getAttributeNs' => '?string', + 'getParserProperty' => 'bool', + 'isValid' => 'bool', + 'lookupNamespace' => '?string', + 'moveToAttribute' => 'bool', + 'moveToAttributeNo' => 'bool', + 'moveToAttributeNs' => 'bool', + 'moveToElement' => 'bool', + 'moveToFirstAttribute' => 'bool', + 'moveToNextAttribute' => 'bool', + 'read' => 'bool', + 'next' => 'bool', + 'readInnerXml' => 'string', + 'readOuterXml' => 'string', + 'readString' => 'string', + 'setSchema' => 'bool', + 'setParserProperty' => 'bool', + 'setRelaxNGSchema' => 'bool', + 'setRelaxNGSchemaSource' => 'bool', + 'expand' => 'DOMNode|false', + ], + 'XMLWriter' => [ + 'openUri' => 'bool', + 'openMemory' => 'bool', + 'setIndent' => 'bool', + 'setIndentString' => 'bool', + 'startComment' => 'bool', + 'endComment' => 'bool', + 'startAttribute' => 'bool', + 'endAttribute' => 'bool', + 'writeAttribute' => 'bool', + 'startAttributeNs' => 'bool', + 'writeAttributeNs' => 'bool', + 'startElement' => 'bool', + 'endElement' => 'bool', + 'fullEndElement' => 'bool', + 'startElementNs' => 'bool', + 'writeElement' => 'bool', + 'writeElementNs' => 'bool', + 'startPi' => 'bool', + 'endPi' => 'bool', + 'writePi' => 'bool', + 'startCdata' => 'bool', + 'endCdata' => 'bool', + 'writeCdata' => 'bool', + 'text' => 'bool', + 'writeRaw' => 'bool', + 'startDocument' => 'bool', + 'endDocument' => 'bool', + 'writeComment' => 'bool', + 'startDtd' => 'bool', + 'endDtd' => 'bool', + 'writeDtd' => 'bool', + 'startDtdElement' => 'bool', + 'endDtdElement' => 'bool', + 'writeDtdElement' => 'bool', + 'startDtdAttlist' => 'bool', + 'endDtdAttlist' => 'bool', + 'writeDtdAttlist' => 'bool', + 'startDtdEntity' => 'bool', + 'endDtdEntity' => 'bool', + 'writeDtdEntity' => 'bool', + 'outputMemory' => 'string', + 'flush' => 'string|int', + ], + 'XSLTProcessor' => [ + 'importStylesheet' => 'bool', + 'transformToDoc' => 'DOMDocument|false', + 'transformToUri' => 'int', + 'transformToXml' => 'string|null|false', + 'setParameter' => 'bool', + 'getParameter' => 'string|false', + 'removeParameter' => 'bool', + 'hasExsltSupport' => 'bool', + 'registerPHPFunctions' => 'void', + 'setSecurityPrefs' => 'int', + 'getSecurityPrefs' => 'int', + ], + 'ZipArchive' => [ + 'open' => 'bool|int', + 'setPassword' => 'bool', + 'close' => 'bool', + 'count' => 'int', + 'getStatusString' => 'string', + 'addEmptyDir' => 'bool', + 'addFromString' => 'bool', + 'addFile' => 'bool', + 'replaceFile' => 'bool', + 'addGlob' => 'array|false', + 'addPattern' => 'array|false', + 'renameIndex' => 'bool', + 'renameName' => 'bool', + 'setArchiveComment' => 'bool', + 'getArchiveComment' => 'string|false', + 'setCommentIndex' => 'bool', + 'setCommentName' => 'bool', + 'setMtimeIndex' => 'bool', + 'setMtimeName' => 'bool', + 'getCommentIndex' => 'string|false', + 'getCommentName' => 'string|false', + 'deleteIndex' => 'bool', + 'deleteName' => 'bool', + 'statName' => 'array|false', + 'statIndex' => 'array|false', + 'locateName' => 'int|false', + 'getNameIndex' => 'string|false', + 'unchangeArchive' => 'bool', + 'unchangeAll' => 'bool', + 'unchangeIndex' => 'bool', + 'unchangeName' => 'bool', + 'extractTo' => 'bool', + 'getFromName' => 'string|false', + 'getFromIndex' => 'string|false', + 'setExternalAttributesName' => 'bool', + 'setExternalAttributesIndex' => 'bool', + 'getExternalAttributesName' => 'bool', + 'getExternalAttributesIndex' => 'bool', + 'setCompressionName' => 'bool', + 'setCompressionIndex' => 'bool', + 'setEncryptionName' => 'bool', + 'setEncryptionIndex' => 'bool', + 'registerProgressCallback' => 'bool', + 'registerCancelCallback' => 'bool', + ], + 'Exception' => [ + '__wakeup' => 'void', + ], + 'Error' => [ + '__wakeup' => 'void', + ], + 'IteratorAggregate' => [ + 'getIterator' => 'Traversable', + ], + 'Iterator' => [ + 'current' => 'mixed', + 'next' => 'void', + 'key' => 'mixed', + 'valid' => 'bool', + 'rewind' => 'void', + ], + 'ArrayAccess' => [ + 'offsetExists' => 'bool', + 'offsetGet' => 'mixed', + 'offsetSet' => 'void', + 'offsetUnset' => 'void', + ], + 'Countable' => [ + 'count' => 'int', + ], + ]; +} diff --git a/vendor/symfony/error-handler/README.md b/vendor/symfony/error-handler/README.md index dd0be15e8..12c0bfa6d 100644 --- a/vendor/symfony/error-handler/README.md +++ b/vendor/symfony/error-handler/README.md @@ -21,6 +21,9 @@ Debug::enable(); //ErrorHandler::register(); //DebugClassLoader::enable(); +// If you want a custom generic template when debug is not enabled +// HtmlErrorRenderer::setTemplate('/path/to/custom/error.html.php'); + $data = ErrorHandler::call(static function () use ($filename, $datetimeFormat) { // if any code executed inside this anonymous function fails, a PHP exception // will be thrown, even if the code uses the '@' PHP silence operator diff --git a/vendor/symfony/error-handler/Resources/assets/css/exception.css b/vendor/symfony/error-handler/Resources/assets/css/exception.css index 3f629a410..7cb3206da 100644 --- a/vendor/symfony/error-handler/Resources/assets/css/exception.css +++ b/vendor/symfony/error-handler/Resources/assets/css/exception.css @@ -42,13 +42,54 @@ --base-6: #222; } +.theme-dark { + --page-background: #36393e; + --color-text: #e0e0e0; + --color-muted: #777; + --color-error: #d43934; + --tab-background: #555; + --tab-color: #ccc; + --tab-active-background: #888; + --tab-active-color: #fafafa; + --tab-disabled-background: var(--page-background); + --tab-disabled-color: #777; + --metric-value-background: #555; + --metric-value-color: inherit; + --metric-unit-color: #999; + --metric-label-background: #777; + --metric-label-color: #e0e0e0; + --trace-selected-background: #71663acc; + --table-border: #444; + --table-background: #333; + --table-header: #555; + --info-background: rgba(79, 148, 195, 0.5); + --tree-active-background: var(--metric-label-background); + --exception-title-color: var(--base-2); + --shadow: 0px 0px 1px rgba(32, 32, 32, .2); + --border: 1px solid #666; + --background-error: #b0413e; + --highlight-comment: #dedede; + --highlight-default: var(--base-6); + --highlight-keyword: #ff413c; + --highlight-string: #70a6fd; + --base-0: #2e3136; + --base-1: #444; + --base-2: #666; + --base-3: #666; + --base-4: #666; + --base-5: #e0e0e0; + --base-6: #f5f5f5; + --card-label-background: var(--tab-active-background); + --card-label-color: var(--tab-active-color); +} + 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} html { /* always display the vertical scrollbar to avoid jumps when toggling contents */ overflow-y: scroll; } -body { background-color: #F9F9F9; color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; } +body { background-color: var(--page-background); color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; } a { cursor: pointer; text-decoration: none; } a:hover { text-decoration: underline; } @@ -56,8 +97,8 @@ abbr[title] { border-bottom: none; cursor: help; text-decoration: none; } code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; } -table, tr, th, td { background: #FFF; border-collapse: collapse; vertical-align: top; } -table { background: #FFF; border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; } +table, tr, th, td { background: var(--base-0); border-collapse: collapse; vertical-align: top; } +table { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; } table th, table td { border: solid var(--base-2); border-width: 1px 0; padding: 8px 10px; } table th { background-color: var(--base-2); font-weight: bold; text-align: left; } @@ -79,11 +120,11 @@ table th { background-color: var(--base-2); font-weight: bold; text-align: left; .status-warning { background: rgba(240, 181, 24, 0.3); } .status-error { background: rgba(176, 65, 62, 0.2); } .status-success td, .status-warning td, .status-error td { background: transparent; } -tr.status-error td, tr.status-warning td { border-bottom: 1px solid #FAFAFA; border-top: 1px solid #FAFAFA; } +tr.status-error td, tr.status-warning td { border-bottom: 1px solid var(--base-2); border-top: 1px solid var(--base-2); } .status-warning .colored { color: #A46A1F; } .status-error .colored { color: var(--color-error); } -.sf-toggle { cursor: pointer; } +.sf-toggle { cursor: pointer; position: relative; } .sf-toggle-content { -moz-transition: display .25s ease; -webkit-transition: display .25s ease; transition: display .25s ease; } .sf-toggle-content.sf-toggle-hidden { display: none; } .sf-toggle-content.sf-toggle-visible { display: block; } @@ -139,7 +180,7 @@ thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-vis .container { max-width: 1024px; margin: 0 auto; padding: 0 15px; } .container::after { content: ""; display: table; clear: both; } -header { background-color: var(--base-6); color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; } +header { background-color: #222; color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; } header .container { display: flex; justify-content: space-between; } .logo { flex: 1; font-size: 13px; font-weight: normal; margin: 0; padding: 0; } .logo svg { height: 18px; width: 18px; opacity: .8; vertical-align: -5px; } @@ -174,7 +215,7 @@ header .container { display: flex; justify-content: space-between; } .trace-head .trace-class { color: var(--base-6); font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; } .trace-head .trace-namespace { color: #999; display: block; font-size: 13px; } .trace-head .icon { position: absolute; right: 0; top: 0; } -.trace-head .icon svg { height: 24px; width: 24px; } +.trace-head .icon svg { fill: var(--base-5); height: 24px; width: 24px; } .trace-details { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; table-layout: fixed; } @@ -185,7 +226,9 @@ header .container { display: flex; justify-content: space-between; } .trace-line:hover { background: var(--base-1); } .trace-line a { color: var(--base-6); } .trace-line .icon { opacity: .4; position: absolute; left: 10px; } -.trace-line .icon svg { height: 16px; width: 16px; } +.trace-line .icon svg { fill: var(--base-5); height: 16px; width: 16px; } +.trace-line .icon.icon-copy { left: auto; top: auto; padding-left: 5px; display: none } +.trace-line:hover .icon.icon-copy:not(.hidden) { display: inline-block } .trace-line-header { padding-left: 36px; padding-right: 10px; } .trace-file-path, .trace-file-path a { color: var(--base-6); font-size: 13px; } diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg new file mode 100644 index 000000000..844a4f99e --- /dev/null +++ b/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg> \ No newline at end of file diff --git a/vendor/symfony/error-handler/Resources/assets/js/exception.js b/vendor/symfony/error-handler/Resources/assets/js/exception.js index 0720a3a35..a85409da3 100644 --- a/vendor/symfony/error-handler/Resources/assets/js/exception.js +++ b/vendor/symfony/error-handler/Resources/assets/js/exception.js @@ -30,6 +30,15 @@ if (typeof Sfjs === 'undefined') { }; } + if (navigator.clipboard) { + document.querySelectorAll('[data-clipboard-text]').forEach(function(element) { + removeClass(element, 'hidden'); + element.addEventListener('click', function() { + navigator.clipboard.writeText(element.getAttribute('data-clipboard-text')); + }) + }); + } + return { addEventListener: addEventListener, @@ -166,6 +175,14 @@ if (typeof Sfjs === 'undefined') { }); } + /* Prevents from disallowing clicks on "copy to clipboard" elements inside toggles */ + var copyToClipboardElements = toggles[i].querySelectorAll('span[data-clipboard-text]'); + for (var k = 0; k < copyToClipboardElements.length; k++) { + addEventListener(copyToClipboardElements[k], 'click', function(e) { + e.stopPropagation(); + }); + } + toggles[i].setAttribute('data-processed', 'true'); } }, diff --git a/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php b/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php new file mode 100755 index 000000000..ae2c703e1 --- /dev/null +++ b/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php @@ -0,0 +1,84 @@ +#!/usr/bin/env php +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if ('cli' !== \PHP_SAPI) { + throw new Exception('This script must be run from the command line.'); +} + +// Run from the root of the php-src repository, this script generates +// a table with all the methods that have a tentative return type. +// +// Usage: find -name *.stub.php | sort | /path/to/extract-tentative-return-types.php > /path/to/TentativeTypes.php + +echo <<<EOPHP +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\ErrorHandler\Internal; + +/** + * This class has been generated by extract-tentative-return-types.php. + * + * @internal + */ +class TentativeTypes +{ + public const RETURN_TYPES = [ + +EOPHP; + +while (false !== $file = fgets(\STDIN)) { + $code = file_get_contents(substr($file, 0, -1)); + + if (!str_contains($code, '@tentative-return-type')) { + continue; + } + + $code = preg_split('{^\s*(?:(?:abstract )?class|interface|trait) ([^\s]++)}m', $code, -1, \PREG_SPLIT_DELIM_CAPTURE); + + if (1 === count($code)) { + continue; + } + + for ($i = 1; null !== $class = $code[$i] ?? null; $i += 2) { + $methods = $code[1 + $i]; + + if (!str_contains($methods, '@tentative-return-type')) { + continue; + } + + echo " '$class' => [\n"; + + preg_replace_callback('{@tentative-return-type.*?[\s]function ([^(]++)[^)]++\)\s*+:\s*+([^\n;\{]++)}s', function ($m) { + $m[2] = str_replace(' ', '', $m[2]); + echo " '$m[1]' => '$m[2]',\n"; + + return ''; + }, $methods); + + echo " ],\n"; + } +} + +echo <<<EOPHP + ]; +} + +EOPHP; diff --git a/vendor/symfony/error-handler/Resources/bin/patch-type-declarations b/vendor/symfony/error-handler/Resources/bin/patch-type-declarations new file mode 100755 index 000000000..824ef6799 --- /dev/null +++ b/vendor/symfony/error-handler/Resources/bin/patch-type-declarations @@ -0,0 +1,98 @@ +#!/usr/bin/env php +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if ('cli' !== \PHP_SAPI) { + throw new Exception('This script must be run from the command line.'); +} + +if (\in_array('-h', $argv) || \in_array('--help', $argv)) { + echo implode(PHP_EOL, [ + ' Patches type declarations based on "@return" PHPDoc and triggers deprecations for', + ' incompatible method declarations.', + '', + ' This assists you to make your package compatible with Symfony 6, but it can be used', + ' for any class/package.', + '', + ' Available configuration via environment variables:', + ' SYMFONY_PATCH_TYPE_DECLARATIONS', + ' An url-encoded string to change the behavior of the script. Available parameters:', + ' - "force": any value enables deprecation notices - can be any of:', + ' - "phpdoc" to patch only docblock annotations', + ' - "2" to add all possible return types', + ' - "1" to add return types but only to tests/final/internal/private methods', + ' - "php": the target version of PHP - e.g. "7.1" doesn\'t generate "object" types', + ' - "deprecations": "1" to trigger a deprecation notice when a child class misses a', + ' return type while the parent declares an "@return" annotation', + '', + ' SYMFONY_PATCH_TYPE_EXCLUDE', + ' A regex matched against the full path to the class - any match will be excluded', + '', + ' Example: "SYMFONY_PATCH_TYPE_DECLARATIONS=php=7.4 ./patch-type-declarations"', + ]); + exit; +} + +if (false === getenv('SYMFONY_PATCH_TYPE_DECLARATIONS')) { + putenv('SYMFONY_PATCH_TYPE_DECLARATIONS=force=2'); + echo 'No SYMFONY_PATCH_TYPE_DECLARATIONS env var set, patching type declarations in all methods (run the command with "-h" for more information).'.PHP_EOL; +} + +if (is_file($autoload = __DIR__.'/../../../../autoload.php')) { + // noop +} elseif (is_file($autoload = __DIR__.'/../../../../../../../autoload.php')) { + // noop +} else { + echo PHP_EOL.' /!\ Cannot find the Composer autoloader, did you forget to run "composer install"?'.PHP_EOL; + exit(1); +} + +if (is_file($phpunitAutoload = dirname($autoload).'/bin/.phpunit/phpunit/vendor/autoload.php')) { + require $phpunitAutoload; +} + +$loader = require $autoload; + +Symfony\Component\ErrorHandler\DebugClassLoader::enable(); + +$deprecations = []; +set_error_handler(function ($type, $msg, $file, $line, $context = []) use (&$deprecations) { + if (\E_USER_DEPRECATED !== $type) { + return; + } + + [,,,,, $class,] = explode('"', $msg); + $deprecations[$class][] = $msg; +}); + +$exclude = getenv('SYMFONY_PATCH_TYPE_EXCLUDE') ?: null; +foreach ($loader->getClassMap() as $class => $file) { + if (false !== strpos($file = realpath($file), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) { + continue; + } + + if ($exclude && preg_match($exclude, $file)) { + continue; + } + + class_exists($class); +} + +Symfony\Component\ErrorHandler\DebugClassLoader::checkClasses(); + +foreach ($deprecations as $class => $classDeprecations) { + echo $class.' ('.\count($classDeprecations).')'.PHP_EOL; + echo implode(PHP_EOL, $classDeprecations).PHP_EOL.PHP_EOL; +} + +if ($deprecations && false !== strpos(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?? '', 'force')) { + echo 'These deprecations might be fixed by the patch script, run this again to check for type deprecations.'.PHP_EOL; +} diff --git a/vendor/symfony/error-handler/Resources/views/exception_full.html.php b/vendor/symfony/error-handler/Resources/views/exception_full.html.php index cb5a56754..04f0fd579 100644 --- a/vendor/symfony/error-handler/Resources/views/exception_full.html.php +++ b/vendor/symfony/error-handler/Resources/views/exception_full.html.php @@ -11,6 +11,12 @@ <style><?= $this->include('assets/css/exception_full.css'); ?></style> </head> <body> + <script> + document.body.classList.add( + localStorage.getItem('symfony/profiler/theme') || (matchMedia('(prefers-color-scheme: dark)').matches ? 'theme-dark' : 'theme-light') + ); + </script> + <?php if (class_exists(\Symfony\Component\HttpKernel\Kernel::class)) { ?> <header> <div class="container"> diff --git a/vendor/symfony/error-handler/Resources/views/logs.html.php b/vendor/symfony/error-handler/Resources/views/logs.html.php index bd2dbe2fe..ea6e727b8 100644 --- a/vendor/symfony/error-handler/Resources/views/logs.html.php +++ b/vendor/symfony/error-handler/Resources/views/logs.html.php @@ -23,7 +23,7 @@ $status = \E_DEPRECATED === $severity || \E_USER_DEPRECATED === $severity ? 'warning' : 'normal'; } ?> <tr class="status-<?= $status; ?>" data-filter-level="<?= strtolower($this->escape($log['priorityName'])); ?>"<?php if ($channelIsDefined) { ?> data-filter-channel="<?= $this->escape($log['channel']); ?>"<?php } ?>> - <td class="text-small" nowrap> + <td class="text-small nowrap"> <span class="colored text-bold"><?= $this->escape($log['priorityName']); ?></span> <span class="text-muted newline"><?= date('H:i:s', $log['timestamp']); ?></span> </td> diff --git a/vendor/symfony/error-handler/Resources/views/trace.html.php b/vendor/symfony/error-handler/Resources/views/trace.html.php index 6b4261f3f..8dfdb4ec8 100644 --- a/vendor/symfony/error-handler/Resources/views/trace.html.php +++ b/vendor/symfony/error-handler/Resources/views/trace.html.php @@ -25,6 +25,9 @@ <span class="trace-method"><?= $trace['function']; ?></span> <?php } ?> (line <?= $lineNumber; ?>) + <span class="icon icon-copy hidden" data-clipboard-text="<?php echo implode(\DIRECTORY_SEPARATOR, $filePathParts).':'.$lineNumber; ?>"> + <?php echo $this->include('assets/images/icon-copy.svg'); ?> + </span> </span> <?php } ?> </div> diff --git a/vendor/symfony/error-handler/Resources/views/traces.html.php b/vendor/symfony/error-handler/Resources/views/traces.html.php index d587b058e..4eef59a6c 100644 --- a/vendor/symfony/error-handler/Resources/views/traces.html.php +++ b/vendor/symfony/error-handler/Resources/views/traces.html.php @@ -1,21 +1,30 @@ <div class="trace trace-as-html" id="trace-box-<?= $index; ?>"> <div class="trace-details"> <div class="trace-head"> - <span class="sf-toggle" data-toggle-selector="#trace-html-<?= $index; ?>" data-toggle-initial="<?= $expand ? 'display' : ''; ?>"> - <h3 class="trace-class"> - <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span> - <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span> - - <span class="trace-namespace"> - <?= implode('\\', array_slice(explode('\\', $exception['class']), 0, -1)); ?><?= count(explode('\\', $exception['class'])) > 1 ? '\\' : ''; ?> - </span> - <?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?> - </h3> + <div class="sf-toggle" data-toggle-selector="#trace-html-<?= $index; ?>" data-toggle-initial="<?= $expand ? 'display' : ''; ?>"> + <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span> + <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span> + <?php + $separator = strrpos($exception['class'], '\\'); + $separator = false === $separator ? 0 : $separator + 1; + $namespace = substr($exception['class'], 0, $separator); + $class = substr($exception['class'], $separator); + ?> + <?php if ('' === $class) { ?> + <br> + <?php } else { ?> + <h3 class="trace-class"> + <?php if ('' !== $namespace) { ?> + <span class="trace-namespace"><?= $namespace; ?></span> + <?php } ?> + <?= $class; ?> + </h3> + <?php } ?> <?php if ($exception['message'] && $index > 1) { ?> <p class="break-long-words trace-message"><?= $this->escape($exception['message']); ?></p> <?php } ?> - </span> + </div> </div> <div id="trace-html-<?= $index; ?>" class="sf-toggle-content"> diff --git a/vendor/symfony/error-handler/Resources/views/traces_text.html.php b/vendor/symfony/error-handler/Resources/views/traces_text.html.php index a7090fbe8..6b478402c 100644 --- a/vendor/symfony/error-handler/Resources/views/traces_text.html.php +++ b/vendor/symfony/error-handler/Resources/views/traces_text.html.php @@ -2,14 +2,14 @@ <thead class="trace-head"> <tr> <th class="sf-toggle" data-toggle-selector="#trace-text-<?= $index; ?>" data-toggle-initial="<?= 1 === $index ? 'display' : ''; ?>"> - <h3 class="trace-class"> + <div class="trace-class"> <?php if ($numExceptions > 1) { ?> <span class="text-muted">[<?= $numExceptions - $index + 1; ?>/<?= $numExceptions; ?>]</span> <?php } ?> <?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?> <span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span> <span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span> - </h3> + </div> </th> </tr> </thead> diff --git a/vendor/symfony/error-handler/composer.json b/vendor/symfony/error-handler/composer.json index ef829f6d0..bc0d88e9d 100644 --- a/vendor/symfony/error-handler/composer.json +++ b/vendor/symfony/error-handler/composer.json @@ -16,14 +16,14 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3" }, "autoload": { "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" }, @@ -31,5 +31,8 @@ "/Tests/" ] }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "minimum-stability": "dev" } diff --git a/vendor/symfony/http-client-contracts/CHANGELOG.md b/vendor/symfony/event-dispatcher-contracts/CHANGELOG.md similarity index 100% rename from vendor/symfony/http-client-contracts/CHANGELOG.md rename to vendor/symfony/event-dispatcher-contracts/CHANGELOG.md diff --git a/vendor/symfony/event-dispatcher-contracts/Event.php b/vendor/symfony/event-dispatcher-contracts/Event.php index 84f60f3ed..46dcb2ba0 100644 --- a/vendor/symfony/event-dispatcher-contracts/Event.php +++ b/vendor/symfony/event-dispatcher-contracts/Event.php @@ -13,84 +13,42 @@ namespace Symfony\Contracts\EventDispatcher; use Psr\EventDispatcher\StoppableEventInterface; -if (interface_exists(StoppableEventInterface::class)) { +/** + * Event is the base class for classes containing event data. + * + * This class contains no event data. It is used by events that do not pass + * state information to an event handler when an event is raised. + * + * You can call the method stopPropagation() to abort the execution of + * further listeners in your event listener. + * + * @author Guilherme Blanco <guilhermeblanco@hotmail.com> + * @author Jonathan Wage <jonwage@gmail.com> + * @author Roman Borschel <roman@code-factory.org> + * @author Bernhard Schussek <bschussek@gmail.com> + * @author Nicolas Grekas <p@tchwork.com> + */ +class Event implements StoppableEventInterface +{ + private $propagationStopped = false; + /** - * Event is the base class for classes containing event data. - * - * This class contains no event data. It is used by events that do not pass - * state information to an event handler when an event is raised. - * - * You can call the method stopPropagation() to abort the execution of - * further listeners in your event listener. - * - * @author Guilherme Blanco <guilhermeblanco@hotmail.com> - * @author Jonathan Wage <jonwage@gmail.com> - * @author Roman Borschel <roman@code-factory.org> - * @author Bernhard Schussek <bschussek@gmail.com> - * @author Nicolas Grekas <p@tchwork.com> + * {@inheritdoc} */ - class Event implements StoppableEventInterface + public function isPropagationStopped(): bool { - private $propagationStopped = false; - - /** - * Returns whether further event listeners should be triggered. - */ - public function isPropagationStopped(): bool - { - return $this->propagationStopped; - } - - /** - * Stops the propagation of the event to further event listeners. - * - * If multiple event listeners are connected to the same event, no - * further event listener will be triggered once any trigger calls - * stopPropagation(). - */ - public function stopPropagation(): void - { - $this->propagationStopped = true; - } + return $this->propagationStopped; } -} else { + /** - * Event is the base class for classes containing event data. + * Stops the propagation of the event to further event listeners. * - * This class contains no event data. It is used by events that do not pass - * state information to an event handler when an event is raised. - * - * You can call the method stopPropagation() to abort the execution of - * further listeners in your event listener. - * - * @author Guilherme Blanco <guilhermeblanco@hotmail.com> - * @author Jonathan Wage <jonwage@gmail.com> - * @author Roman Borschel <roman@code-factory.org> - * @author Bernhard Schussek <bschussek@gmail.com> - * @author Nicolas Grekas <p@tchwork.com> + * If multiple event listeners are connected to the same event, no + * further event listener will be triggered once any trigger calls + * stopPropagation(). */ - class Event + public function stopPropagation(): void { - private $propagationStopped = false; - - /** - * Returns whether further event listeners should be triggered. - */ - public function isPropagationStopped(): bool - { - return $this->propagationStopped; - } - - /** - * Stops the propagation of the event to further event listeners. - * - * If multiple event listeners are connected to the same event, no - * further event listener will be triggered once any trigger calls - * stopPropagation(). - */ - public function stopPropagation(): void - { - $this->propagationStopped = true; - } + $this->propagationStopped = true; } } diff --git a/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php index 2d470af92..351dc5131 100644 --- a/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php +++ b/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php @@ -13,46 +13,19 @@ namespace Symfony\Contracts\EventDispatcher; use Psr\EventDispatcher\EventDispatcherInterface as PsrEventDispatcherInterface; -if (interface_exists(PsrEventDispatcherInterface::class)) { +/** + * Allows providing hooks on domain-specific lifecycles by dispatching events. + */ +interface EventDispatcherInterface extends PsrEventDispatcherInterface +{ /** - * Allows providing hooks on domain-specific lifecycles by dispatching events. + * Dispatches an event to all registered listeners. + * + * @param object $event The event to pass to the event handlers/listeners + * @param string|null $eventName The name of the event to dispatch. If not supplied, + * the class of $event should be used instead. + * + * @return object The passed $event MUST be returned */ - interface EventDispatcherInterface extends PsrEventDispatcherInterface - { - /** - * Dispatches an event to all registered listeners. - * - * For BC with Symfony 4, the $eventName argument is not declared explicitly on the - * signature of the method. Implementations that are not bound by this BC constraint - * MUST declare it explicitly, as allowed by PHP. - * - * @param object $event The event to pass to the event handlers/listeners - * @param string|null $eventName The name of the event to dispatch. If not supplied, - * the class of $event should be used instead. - * - * @return object The passed $event MUST be returned - */ - public function dispatch($event/*, string $eventName = null*/); - } -} else { - /** - * Allows providing hooks on domain-specific lifecycles by dispatching events. - */ - interface EventDispatcherInterface - { - /** - * Dispatches an event to all registered listeners. - * - * For BC with Symfony 4, the $eventName argument is not declared explicitly on the - * signature of the method. Implementations that are not bound by this BC constraint - * MUST declare it explicitly, as allowed by PHP. - * - * @param object $event The event to pass to the event handlers/listeners - * @param string|null $eventName The name of the event to dispatch. If not supplied, - * the class of $event should be used instead. - * - * @return object The passed $event MUST be returned - */ - public function dispatch($event/*, string $eventName = null*/); - } + public function dispatch(object $event, string $eventName = null): object; } diff --git a/vendor/symfony/event-dispatcher-contracts/composer.json b/vendor/symfony/event-dispatcher-contracts/composer.json index 9d4bd7bea..660df81a0 100644 --- a/vendor/symfony/event-dispatcher-contracts/composer.json +++ b/vendor/symfony/event-dispatcher-contracts/composer.json @@ -16,10 +16,10 @@ } ], "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "autoload": { @@ -28,7 +28,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", diff --git a/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php b/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php new file mode 100644 index 000000000..bb931b82d --- /dev/null +++ b/vendor/symfony/event-dispatcher/Attribute/AsEventListener.php @@ -0,0 +1,29 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Attribute; + +/** + * Service tag to autoconfigure event listeners. + * + * @author Alexander M. Turek <me@derrabus.de> + */ +#[\Attribute(\Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)] +class AsEventListener +{ + public function __construct( + public ?string $event = null, + public ?string $method = null, + public int $priority = 0, + public ?string $dispatcher = null, + ) { + } +} diff --git a/vendor/symfony/event-dispatcher/CHANGELOG.md b/vendor/symfony/event-dispatcher/CHANGELOG.md index 4a3ea066e..0f9859895 100644 --- a/vendor/symfony/event-dispatcher/CHANGELOG.md +++ b/vendor/symfony/event-dispatcher/CHANGELOG.md @@ -1,6 +1,30 @@ CHANGELOG ========= +5.4 +--- + + * Allow `#[AsEventListener]` attribute on methods + +5.3 +--- + + * Add `#[AsEventListener]` attribute for declaring listeners on PHP 8 + +5.1.0 +----- + + * The `LegacyEventDispatcherProxy` class has been deprecated. + * Added an optional `dispatcher` attribute to the listener and subscriber tags in `RegisterListenerPass`. + +5.0.0 +----- + + * The signature of the `EventDispatcherInterface::dispatch()` method has been changed to `dispatch($event, string $eventName = null): object`. + * The `Event` class has been removed in favor of `Symfony\Contracts\EventDispatcher\Event`. + * The `TraceableEventDispatcherInterface` has been removed. + * The `WrappedListener` class is now final. + 4.4.0 ----- diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php index 98e7df634..acfbf619c 100644 --- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php +++ b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php @@ -13,15 +13,12 @@ namespace Symfony\Component\EventDispatcher\Debug; use Psr\EventDispatcher\StoppableEventInterface; use Psr\Log\LoggerInterface; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; -use Symfony\Component\EventDispatcher\LegacyEventProxy; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Stopwatch\Stopwatch; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; +use Symfony\Contracts\Service\ResetInterface; /** * Collects some data about event listeners. @@ -30,11 +27,14 @@ use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; * * @author Fabien Potencier <fabien@symfony.com> */ -class TraceableEventDispatcher implements TraceableEventDispatcherInterface +class TraceableEventDispatcher implements EventDispatcherInterface, ResetInterface { protected $logger; protected $stopwatch; + /** + * @var \SplObjectStorage<WrappedListener, array{string, string}> + */ private $callStack; private $dispatcher; private $wrappedListeners; @@ -44,7 +44,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $stopwatch, LoggerInterface $logger = null, RequestStack $requestStack = null) { - $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher); + $this->dispatcher = $dispatcher; $this->stopwatch = $stopwatch; $this->logger = $logger; $this->wrappedListeners = []; @@ -55,7 +55,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface /** * {@inheritdoc} */ - public function addListener($eventName, $listener, $priority = 0) + public function addListener(string $eventName, $listener, int $priority = 0) { $this->dispatcher->addListener($eventName, $listener, $priority); } @@ -71,7 +71,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface /** * {@inheritdoc} */ - public function removeListener($eventName, $listener) + public function removeListener(string $eventName, $listener) { if (isset($this->wrappedListeners[$eventName])) { foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) { @@ -97,7 +97,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface /** * {@inheritdoc} */ - public function getListeners($eventName = null) + public function getListeners(string $eventName = null) { return $this->dispatcher->getListeners($eventName); } @@ -105,7 +105,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface /** * {@inheritdoc} */ - public function getListenerPriority($eventName, $listener) + public function getListenerPriority(string $eventName, $listener) { // we might have wrapped listeners for the event (if called while dispatching) // in that case get the priority by wrapper @@ -123,39 +123,25 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface /** * {@inheritdoc} */ - public function hasListeners($eventName = null) + public function hasListeners(string $eventName = null) { return $this->dispatcher->hasListeners($eventName); } /** * {@inheritdoc} - * - * @param string|null $eventName */ - public function dispatch($event/* , string $eventName = null */) + public function dispatch(object $event, string $eventName = null): object { + $eventName = $eventName ?? \get_class($event); + if (null === $this->callStack) { $this->callStack = new \SplObjectStorage(); } $currentRequestHash = $this->currentRequestHash = $this->requestStack && ($request = $this->requestStack->getCurrentRequest()) ? spl_object_hash($request) : ''; - $eventName = 1 < \func_num_args() ? func_get_arg(1) : null; - if (\is_object($event)) { - $eventName = $eventName ?? \get_class($event); - } else { - @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED); - $swap = $event; - $event = $eventName ?? new Event(); - $eventName = $swap; - - if (!$event instanceof Event) { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of "%s", "%s" given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event))); - } - } - - if (null !== $this->logger && ($event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface) && $event->isPropagationStopped()) { + if (null !== $this->logger && $event instanceof StoppableEventInterface && $event->isPropagationStopped()) { $this->logger->debug(sprintf('The "%s" event is already stopped. No listeners have been called.', $eventName)); } @@ -183,17 +169,15 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface } /** - * {@inheritdoc} - * - * @param Request|null $request The request to get listeners for + * @return array */ - public function getCalledListeners(/* Request $request = null */) + public function getCalledListeners(Request $request = null) { if (null === $this->callStack) { return []; } - $hash = 1 <= \func_num_args() && null !== ($request = func_get_arg(0)) ? spl_object_hash($request) : null; + $hash = $request ? spl_object_hash($request) : null; $called = []; foreach ($this->callStack as $listener) { [$eventName, $requestHash] = $this->callStack->getInfo(); @@ -206,11 +190,9 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface } /** - * {@inheritdoc} - * - * @param Request|null $request The request to get listeners for + * @return array */ - public function getNotCalledListeners(/* Request $request = null */) + public function getNotCalledListeners(Request $request = null) { try { $allListeners = $this->getListeners(); @@ -223,7 +205,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface return []; } - $hash = 1 <= \func_num_args() && null !== ($request = func_get_arg(0)) ? spl_object_hash($request) : null; + $hash = $request ? spl_object_hash($request) : null; $calledListeners = []; if (null !== $this->callStack) { @@ -253,12 +235,9 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface return $notCalled; } - /** - * @param Request|null $request The request to get orphaned events for - */ - public function getOrphanedEvents(/* Request $request = null */): array + public function getOrphanedEvents(Request $request = null): array { - if (1 <= \func_num_args() && null !== $request = func_get_arg(0)) { + if ($request) { return $this->orphanedEvents[spl_object_hash($request)] ?? []; } @@ -284,46 +263,26 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface * * @return mixed */ - public function __call($method, $arguments) + public function __call(string $method, array $arguments) { return $this->dispatcher->{$method}(...$arguments); } /** * Called before dispatching the event. - * - * @param object $event */ - protected function beforeDispatch(string $eventName, $event) + protected function beforeDispatch(string $eventName, object $event) { - $this->preDispatch($eventName, $event instanceof Event ? $event : new LegacyEventProxy($event)); } /** * Called after dispatching the event. - * - * @param object $event */ - protected function afterDispatch(string $eventName, $event) - { - $this->postDispatch($eventName, $event instanceof Event ? $event : new LegacyEventProxy($event)); - } - - /** - * @deprecated since Symfony 4.3, will be removed in 5.0, use beforeDispatch instead - */ - protected function preDispatch($eventName, Event $event) + protected function afterDispatch(string $eventName, object $event) { } - /** - * @deprecated since Symfony 4.3, will be removed in 5.0, use afterDispatch instead - */ - protected function postDispatch($eventName, Event $event) - { - } - - private function preProcess(string $eventName) + private function preProcess(string $eventName): void { if (!$this->dispatcher->hasListeners($eventName)) { $this->orphanedEvents[$this->currentRequestHash][] = $eventName; @@ -341,7 +300,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface } } - private function postProcess(string $eventName) + private function postProcess(string $eventName): void { unset($this->wrappedListeners[$eventName]); $skipped = false; diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php deleted file mode 100644 index 4fedb9a41..000000000 --- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher\Debug; - -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Contracts\Service\ResetInterface; - -/** - * @deprecated since Symfony 4.1 - * - * @author Fabien Potencier <fabien@symfony.com> - */ -interface TraceableEventDispatcherInterface extends EventDispatcherInterface, ResetInterface -{ - /** - * Gets the called listeners. - * - * @param Request|null $request The request to get listeners for - * - * @return array An array of called listeners - */ - public function getCalledListeners(/* Request $request = null */); - - /** - * Gets the not called listeners. - * - * @param Request|null $request The request to get listeners for - * - * @return array An array of not called listeners - */ - public function getNotCalledListeners(/* Request $request = null */); -} diff --git a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php index 9b910e667..86d3854b2 100644 --- a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php +++ b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php @@ -12,19 +12,14 @@ namespace Symfony\Component\EventDispatcher\Debug; use Psr\EventDispatcher\StoppableEventInterface; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\LegacyEventProxy; use Symfony\Component\Stopwatch\Stopwatch; use Symfony\Component\VarDumper\Caster\ClassStub; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; /** * @author Fabien Potencier <fabien@symfony.com> - * - * @final since Symfony 4.3: the "Event" type-hint on __invoke() will be replaced by "object" in 5.0 */ -class WrappedListener +final class WrappedListener { private $listener; private $optimizedListener; @@ -48,13 +43,13 @@ class WrappedListener $this->stoppedPropagation = false; if (\is_array($listener)) { - $this->name = \is_object($listener[0]) ? \get_class($listener[0]) : $listener[0]; + $this->name = \is_object($listener[0]) ? get_debug_type($listener[0]) : $listener[0]; $this->pretty = $this->name.'::'.$listener[1]; } elseif ($listener instanceof \Closure) { $r = new \ReflectionFunction($listener); if (str_contains($r->name, '{closure}')) { $this->pretty = $this->name = 'closure'; - } elseif ($class = $r->getClosureScopeClass()) { + } elseif ($class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { $this->name = $class->name; $this->pretty = $this->name.'::'.$r->name; } else { @@ -63,7 +58,7 @@ class WrappedListener } elseif (\is_string($listener)) { $this->pretty = $this->name = $listener; } else { - $this->name = \get_class($listener); + $this->name = get_debug_type($listener); $this->pretty = $this->name.'::__invoke'; } @@ -81,22 +76,22 @@ class WrappedListener return $this->listener; } - public function wasCalled() + public function wasCalled(): bool { return $this->called; } - public function stoppedPropagation() + public function stoppedPropagation(): bool { return $this->stoppedPropagation; } - public function getPretty() + public function getPretty(): string { return $this->pretty; } - public function getInfo($eventName) + public function getInfo(string $eventName): array { if (null === $this->stub) { $this->stub = self::$hasClassStub ? new ClassStub($this->pretty.'()', $this->listener) : $this->pretty.'()'; @@ -110,12 +105,8 @@ class WrappedListener ]; } - public function __invoke(Event $event, $eventName, EventDispatcherInterface $dispatcher) + public function __invoke(object $event, string $eventName, EventDispatcherInterface $dispatcher): void { - if ($event instanceof LegacyEventProxy) { - $event = $event->getEvent(); - } - $dispatcher = $this->dispatcher ?: $dispatcher; $this->called = true; @@ -129,7 +120,7 @@ class WrappedListener $e->stop(); } - if (($event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface) && $event->isPropagationStopped()) { + if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) { $this->stoppedPropagation = true; } } diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php index c4ea50f78..6e7292b4a 100644 --- a/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php +++ b/vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php @@ -26,6 +26,10 @@ class AddEventAliasesPass implements CompilerPassInterface public function __construct(array $eventAliases, string $eventAliasesParameter = 'event_dispatcher.event_aliases') { + if (1 < \func_num_args()) { + trigger_deprecation('symfony/event-dispatcher', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->eventAliases = $eventAliases; $this->eventAliasesParameter = $eventAliasesParameter; } diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php index 1c4e12ec8..8eabe7d74 100644 --- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php +++ b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php @@ -16,7 +16,6 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\EventDispatcher\Event as LegacyEvent; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Contracts\EventDispatcher\Event; @@ -32,20 +31,48 @@ class RegisterListenersPass implements CompilerPassInterface protected $eventAliasesParameter; private $hotPathEvents = []; - private $hotPathTagName; + private $hotPathTagName = 'container.hot_path'; + private $noPreloadEvents = []; + private $noPreloadTagName = 'container.no_preload'; public function __construct(string $dispatcherService = 'event_dispatcher', string $listenerTag = 'kernel.event_listener', string $subscriberTag = 'kernel.event_subscriber', string $eventAliasesParameter = 'event_dispatcher.event_aliases') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/event-dispatcher', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->dispatcherService = $dispatcherService; $this->listenerTag = $listenerTag; $this->subscriberTag = $subscriberTag; $this->eventAliasesParameter = $eventAliasesParameter; } - public function setHotPathEvents(array $hotPathEvents, $tagName = 'container.hot_path') + /** + * @return $this + */ + public function setHotPathEvents(array $hotPathEvents) { $this->hotPathEvents = array_flip($hotPathEvents); - $this->hotPathTagName = $tagName; + + if (1 < \func_num_args()) { + trigger_deprecation('symfony/event-dispatcher', '5.4', 'Configuring "$tagName" in "%s" is deprecated.', __METHOD__); + $this->hotPathTagName = func_get_arg(1); + } + + return $this; + } + + /** + * @return $this + */ + public function setNoPreloadEvents(array $noPreloadEvents): self + { + $this->noPreloadEvents = array_flip($noPreloadEvents); + + if (1 < \func_num_args()) { + trigger_deprecation('symfony/event-dispatcher', '5.4', 'Configuring "$tagName" in "%s" is deprecated.', __METHOD__); + $this->noPreloadTagName = func_get_arg(1); + } return $this; } @@ -62,9 +89,11 @@ class RegisterListenersPass implements CompilerPassInterface $aliases = $container->getParameter($this->eventAliasesParameter); } - $definition = $container->findDefinition($this->dispatcherService); + $globalDispatcherDefinition = $container->findDefinition($this->dispatcherService); foreach ($container->findTaggedServiceIds($this->listenerTag, true) as $id => $events) { + $noPreload = 0; + foreach ($events as $event) { $priority = $event['priority'] ?? 0; @@ -91,17 +120,28 @@ class RegisterListenersPass implements CompilerPassInterface } } - $definition->addMethodCall('addListener', [$event['event'], [new ServiceClosureArgument(new Reference($id)), $event['method']], $priority]); + $dispatcherDefinition = $globalDispatcherDefinition; + if (isset($event['dispatcher'])) { + $dispatcherDefinition = $container->getDefinition($event['dispatcher']); + } + + $dispatcherDefinition->addMethodCall('addListener', [$event['event'], [new ServiceClosureArgument(new Reference($id)), $event['method']], $priority]); if (isset($this->hotPathEvents[$event['event']])) { $container->getDefinition($id)->addTag($this->hotPathTagName); + } elseif (isset($this->noPreloadEvents[$event['event']])) { + ++$noPreload; } } + + if ($noPreload && \count($events) === $noPreload) { + $container->getDefinition($id)->addTag($this->noPreloadTagName); + } } $extractingDispatcher = new ExtractingEventDispatcher(); - foreach ($container->findTaggedServiceIds($this->subscriberTag, true) as $id => $attributes) { + foreach ($container->findTaggedServiceIds($this->subscriberTag, true) as $id => $tags) { $def = $container->getDefinition($id); // We must assume that the class value has been correctly filled, even if the service is created by a factory @@ -115,17 +155,38 @@ class RegisterListenersPass implements CompilerPassInterface } $class = $r->name; + $dispatcherDefinitions = []; + foreach ($tags as $attributes) { + if (!isset($attributes['dispatcher']) || isset($dispatcherDefinitions[$attributes['dispatcher']])) { + continue; + } + + $dispatcherDefinitions[$attributes['dispatcher']] = $container->getDefinition($attributes['dispatcher']); + } + + if (!$dispatcherDefinitions) { + $dispatcherDefinitions = [$globalDispatcherDefinition]; + } + + $noPreload = 0; ExtractingEventDispatcher::$aliases = $aliases; ExtractingEventDispatcher::$subscriber = $class; $extractingDispatcher->addSubscriber($extractingDispatcher); foreach ($extractingDispatcher->listeners as $args) { $args[1] = [new ServiceClosureArgument(new Reference($id)), $args[1]]; - $definition->addMethodCall('addListener', $args); + foreach ($dispatcherDefinitions as $dispatcherDefinition) { + $dispatcherDefinition->addMethodCall('addListener', $args); + } if (isset($this->hotPathEvents[$args[0]])) { $container->getDefinition($id)->addTag($this->hotPathTagName); + } elseif (isset($this->noPreloadEvents[$args[0]])) { + ++$noPreload; } } + if ($noPreload && \count($extractingDispatcher->listeners) === $noPreload) { + $container->getDefinition($id)->addTag($this->noPreloadTagName); + } $extractingDispatcher->listeners = []; ExtractingEventDispatcher::$aliases = []; } @@ -141,7 +202,6 @@ class RegisterListenersPass implements CompilerPassInterface || !($type = $m->getParameters()[0]->getType()) instanceof \ReflectionNamedType || $type->isBuiltin() || Event::class === ($name = $type->getName()) - || LegacyEvent::class === $name ) { throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag)); } @@ -160,7 +220,7 @@ class ExtractingEventDispatcher extends EventDispatcher implements EventSubscrib public static $aliases = []; public static $subscriber; - public function addListener($eventName, $listener, $priority = 0) + public function addListener(string $eventName, $listener, int $priority = 0) { $this->listeners[] = [$eventName, $listener[1], $priority]; } diff --git a/vendor/symfony/event-dispatcher/Event.php b/vendor/symfony/event-dispatcher/Event.php deleted file mode 100644 index 307c4be5d..000000000 --- a/vendor/symfony/event-dispatcher/Event.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher; - -/** - * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead - */ -class Event -{ - private $propagationStopped = false; - - /** - * @return bool Whether propagation was already stopped for this event - * - * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead - */ - public function isPropagationStopped() - { - return $this->propagationStopped; - } - - /** - * @deprecated since Symfony 4.3, use "Symfony\Contracts\EventDispatcher\Event" instead - */ - public function stopPropagation() - { - $this->propagationStopped = true; - } -} diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php index 3d8ac4281..8fe8fb5c2 100644 --- a/vendor/symfony/event-dispatcher/EventDispatcher.php +++ b/vendor/symfony/event-dispatcher/EventDispatcher.php @@ -13,7 +13,6 @@ namespace Symfony\Component\EventDispatcher; use Psr\EventDispatcher\StoppableEventInterface; use Symfony\Component\EventDispatcher\Debug\WrappedListener; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; /** * The EventDispatcherInterface is the central point of Symfony's event listener system. @@ -45,25 +44,12 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} - * - * @param string|null $eventName */ - public function dispatch($event/* , string $eventName = null */) + public function dispatch(object $event, string $eventName = null): object { - $eventName = 1 < \func_num_args() ? func_get_arg(1) : null; + $eventName = $eventName ?? \get_class($event); - if (\is_object($event)) { - $eventName = $eventName ?? \get_class($event); - } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) { - @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED); - $swap = $event; - $event = $eventName ?? new Event(); - $eventName = $swap; - } else { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event))); - } - - if (null !== $this->optimized && null !== $eventName) { + if (null !== $this->optimized) { $listeners = $this->optimized[$eventName] ?? (empty($this->listeners[$eventName]) ? [] : $this->optimizeListeners($eventName)); } else { $listeners = $this->getListeners($eventName); @@ -79,7 +65,7 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function getListeners($eventName = null) + public function getListeners(string $eventName = null) { if (null !== $eventName) { if (empty($this->listeners[$eventName])) { @@ -105,7 +91,7 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function getListenerPriority($eventName, $listener) + public function getListenerPriority(string $eventName, $listener) { if (empty($this->listeners[$eventName])) { return null; @@ -134,7 +120,7 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function hasListeners($eventName = null) + public function hasListeners(string $eventName = null) { if (null !== $eventName) { return !empty($this->listeners[$eventName]); @@ -152,7 +138,7 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function addListener($eventName, $listener, $priority = 0) + public function addListener(string $eventName, $listener, int $priority = 0) { $this->listeners[$eventName][$priority][] = $listener; unset($this->sorted[$eventName], $this->optimized[$eventName]); @@ -161,7 +147,7 @@ class EventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function removeListener($eventName, $listener) + public function removeListener(string $eventName, $listener) { if (empty($this->listeners[$eventName])) { return; @@ -233,34 +219,14 @@ class EventDispatcher implements EventDispatcherInterface * @param string $eventName The name of the event to dispatch * @param object $event The event object to pass to the event handlers/listeners */ - protected function callListeners(iterable $listeners, string $eventName, $event) + protected function callListeners(iterable $listeners, string $eventName, object $event) { - if ($event instanceof Event) { - $this->doDispatch($listeners, $eventName, $event); - - return; - } - - $stoppable = $event instanceof ContractsEvent || $event instanceof StoppableEventInterface; + $stoppable = $event instanceof StoppableEventInterface; foreach ($listeners as $listener) { if ($stoppable && $event->isPropagationStopped()) { break; } - // @deprecated: the ternary operator is part of a BC layer and should be removed in 5.0 - $listener($listener instanceof WrappedListener ? new LegacyEventProxy($event) : $event, $eventName, $this); - } - } - - /** - * @deprecated since Symfony 4.3, use callListeners() instead - */ - protected function doDispatch($listeners, $eventName, Event $event) - { - foreach ($listeners as $listener) { - if ($event->isPropagationStopped()) { - break; - } $listener($event, $eventName, $this); } } diff --git a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php index ceaa62aeb..cc324e1c6 100644 --- a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php +++ b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php @@ -25,12 +25,10 @@ interface EventDispatcherInterface extends ContractsEventDispatcherInterface /** * Adds an event listener that listens on the specified events. * - * @param string $eventName The event to listen on - * @param callable $listener The listener - * @param int $priority The higher this value, the earlier an event - * listener will be triggered in the chain (defaults to 0) + * @param int $priority The higher this value, the earlier an event + * listener will be triggered in the chain (defaults to 0) */ - public function addListener($eventName, $listener, $priority = 0); + public function addListener(string $eventName, callable $listener, int $priority = 0); /** * Adds an event subscriber. @@ -42,41 +40,31 @@ interface EventDispatcherInterface extends ContractsEventDispatcherInterface /** * Removes an event listener from the specified events. - * - * @param string $eventName The event to remove a listener from - * @param callable $listener The listener to remove */ - public function removeListener($eventName, $listener); + public function removeListener(string $eventName, callable $listener); public function removeSubscriber(EventSubscriberInterface $subscriber); /** * Gets the listeners of a specific event or all listeners sorted by descending priority. * - * @param string|null $eventName The name of the event - * - * @return array The event listeners for the specified event, or all event listeners by event name + * @return array<callable[]|callable> */ - public function getListeners($eventName = null); + public function getListeners(string $eventName = null); /** * Gets the listener priority for a specific event. * * Returns null if the event or the listener does not exist. * - * @param string $eventName The name of the event - * @param callable $listener The listener - * - * @return int|null The event listener priority + * @return int|null */ - public function getListenerPriority($eventName, $listener); + public function getListenerPriority(string $eventName, callable $listener); /** * Checks whether an event has any registered listeners. * - * @param string|null $eventName The name of the event - * - * @return bool true if the specified event has any listeners, false otherwise + * @return bool */ - public function hasListeners($eventName = null); + public function hasListeners(string $eventName = null); } diff --git a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php index a0fc96dfe..2085e428e 100644 --- a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php +++ b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php @@ -43,7 +43,7 @@ interface EventSubscriberInterface * The code must not depend on runtime state as it will only be called at compile time. * All logic depending on runtime state must be put into the individual methods handling the events. * - * @return array<string, mixed> The event names to listen to + * @return array<string, string|array{0: string, 1: int}|list<array{0: string, 1?: int}>> */ public static function getSubscribedEvents(); } diff --git a/vendor/symfony/event-dispatcher/GenericEvent.php b/vendor/symfony/event-dispatcher/GenericEvent.php index 23333bc21..b32a301ae 100644 --- a/vendor/symfony/event-dispatcher/GenericEvent.php +++ b/vendor/symfony/event-dispatcher/GenericEvent.php @@ -11,12 +11,17 @@ namespace Symfony\Component\EventDispatcher; +use Symfony\Contracts\EventDispatcher\Event; + /** * Event encapsulation class. * * Encapsulates events thus decoupling the observer from the subject they encapsulate. * * @author Drak <drak@zikula.org> + * + * @implements \ArrayAccess<string, mixed> + * @implements \IteratorAggregate<string, mixed> */ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate { @@ -38,7 +43,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Getter for subject property. * - * @return mixed The observer subject + * @return mixed */ public function getSubject() { @@ -48,13 +53,11 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Get argument by key. * - * @param string $key Key - * - * @return mixed Contents of array key + * @return mixed * * @throws \InvalidArgumentException if key is not found */ - public function getArgument($key) + public function getArgument(string $key) { if ($this->hasArgument($key)) { return $this->arguments[$key]; @@ -66,12 +69,11 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Add argument to event. * - * @param string $key Argument name - * @param mixed $value Value + * @param mixed $value Value * * @return $this */ - public function setArgument($key, $value) + public function setArgument(string $key, $value) { $this->arguments[$key] = $value; @@ -91,8 +93,6 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Set args property. * - * @param array $args Arguments - * * @return $this */ public function setArguments(array $args = []) @@ -105,11 +105,9 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Has argument. * - * @param string $key Key of arguments array - * * @return bool */ - public function hasArgument($key) + public function hasArgument(string $key) { return \array_key_exists($key, $this->arguments); } @@ -174,7 +172,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * IteratorAggregate for iterating over the object like an array. * - * @return \ArrayIterator + * @return \ArrayIterator<string, mixed> */ #[\ReturnTypeWillChange] public function getIterator() diff --git a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php index f3d04d25a..568d79c3a 100644 --- a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php +++ b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php @@ -22,32 +22,21 @@ class ImmutableEventDispatcher implements EventDispatcherInterface public function __construct(EventDispatcherInterface $dispatcher) { - $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher); + $this->dispatcher = $dispatcher; } /** * {@inheritdoc} - * - * @param string|null $eventName */ - public function dispatch($event/* , string $eventName = null */) + public function dispatch(object $event, string $eventName = null): object { - $eventName = 1 < \func_num_args() ? func_get_arg(1) : null; - - if (\is_scalar($event)) { - // deprecated - $swap = $event; - $event = $eventName ?? new Event(); - $eventName = $swap; - } - return $this->dispatcher->dispatch($event, $eventName); } /** * {@inheritdoc} */ - public function addListener($eventName, $listener, $priority = 0) + public function addListener(string $eventName, $listener, int $priority = 0) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); } @@ -63,7 +52,7 @@ class ImmutableEventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function removeListener($eventName, $listener) + public function removeListener(string $eventName, $listener) { throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); } @@ -79,7 +68,7 @@ class ImmutableEventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function getListeners($eventName = null) + public function getListeners(string $eventName = null) { return $this->dispatcher->getListeners($eventName); } @@ -87,7 +76,7 @@ class ImmutableEventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function getListenerPriority($eventName, $listener) + public function getListenerPriority(string $eventName, $listener) { return $this->dispatcher->getListenerPriority($eventName, $listener); } @@ -95,7 +84,7 @@ class ImmutableEventDispatcher implements EventDispatcherInterface /** * {@inheritdoc} */ - public function hasListeners($eventName = null) + public function hasListeners(string $eventName = null) { return $this->dispatcher->hasListeners($eventName); } diff --git a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php index a802c9932..6e17c8fcc 100644 --- a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php +++ b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php @@ -11,137 +11,21 @@ namespace Symfony\Component\EventDispatcher; -use Psr\EventDispatcher\StoppableEventInterface; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; + +trigger_deprecation('symfony/event-dispatcher', '5.1', '%s is deprecated, use the event dispatcher without the proxy.', LegacyEventDispatcherProxy::class); /** * A helper class to provide BC/FC with the legacy signature of EventDispatcherInterface::dispatch(). * - * This class should be deprecated in Symfony 5.1 - * * @author Nicolas Grekas <p@tchwork.com> + * + * @deprecated since Symfony 5.1 */ -final class LegacyEventDispatcherProxy implements EventDispatcherInterface +final class LegacyEventDispatcherProxy { - private $dispatcher; - - public static function decorate(?ContractsEventDispatcherInterface $dispatcher): ?ContractsEventDispatcherInterface + public static function decorate(?EventDispatcherInterface $dispatcher): ?EventDispatcherInterface { - if (null === $dispatcher) { - return null; - } - $r = new \ReflectionMethod($dispatcher, 'dispatch'); - $param2 = $r->getParameters()[1] ?? null; - - if (!$param2 || !$param2->hasType() || $param2->getType()->isBuiltin()) { - return $dispatcher; - } - - @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), \E_USER_DEPRECATED); - - $self = new self(); - $self->dispatcher = $dispatcher; - - return $self; - } - - /** - * {@inheritdoc} - * - * @param string|null $eventName - * - * @return object - */ - public function dispatch($event/* , string $eventName = null */) - { - $eventName = 1 < \func_num_args() ? func_get_arg(1) : null; - - if (\is_object($event)) { - $eventName = $eventName ?? \get_class($event); - } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) { - @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), \E_USER_DEPRECATED); - $swap = $event; - $event = $eventName ?? new Event(); - $eventName = $swap; - } else { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event))); - } - - $listeners = $this->getListeners($eventName); - $stoppable = $event instanceof Event || $event instanceof ContractsEvent || $event instanceof StoppableEventInterface; - - foreach ($listeners as $listener) { - if ($stoppable && $event->isPropagationStopped()) { - break; - } - $listener($event, $eventName, $this); - } - - return $event; - } - - /** - * {@inheritdoc} - */ - public function addListener($eventName, $listener, $priority = 0) - { - return $this->dispatcher->addListener($eventName, $listener, $priority); - } - - /** - * {@inheritdoc} - */ - public function addSubscriber(EventSubscriberInterface $subscriber) - { - return $this->dispatcher->addSubscriber($subscriber); - } - - /** - * {@inheritdoc} - */ - public function removeListener($eventName, $listener) - { - return $this->dispatcher->removeListener($eventName, $listener); - } - - /** - * {@inheritdoc} - */ - public function removeSubscriber(EventSubscriberInterface $subscriber) - { - return $this->dispatcher->removeSubscriber($subscriber); - } - - /** - * {@inheritdoc} - */ - public function getListeners($eventName = null): array - { - return $this->dispatcher->getListeners($eventName); - } - - /** - * {@inheritdoc} - */ - public function getListenerPriority($eventName, $listener): ?int - { - return $this->dispatcher->getListenerPriority($eventName, $listener); - } - - /** - * {@inheritdoc} - */ - public function hasListeners($eventName = null): bool - { - return $this->dispatcher->hasListeners($eventName); - } - - /** - * Proxies all method calls to the original event dispatcher. - */ - public function __call($method, $arguments) - { - return $this->dispatcher->{$method}(...$arguments); + return $dispatcher; } } diff --git a/vendor/symfony/event-dispatcher/LegacyEventProxy.php b/vendor/symfony/event-dispatcher/LegacyEventProxy.php deleted file mode 100644 index 45ee251d6..000000000 --- a/vendor/symfony/event-dispatcher/LegacyEventProxy.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\EventDispatcher; - -use Psr\EventDispatcher\StoppableEventInterface; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; - -/** - * @internal to be removed in 5.0. - */ -final class LegacyEventProxy extends Event -{ - private $event; - - /** - * @param object $event - */ - public function __construct($event) - { - $this->event = $event; - } - - /** - * @return object $event - */ - public function getEvent() - { - return $this->event; - } - - public function isPropagationStopped(): bool - { - if (!$this->event instanceof ContractsEvent && !$this->event instanceof StoppableEventInterface) { - return false; - } - - return $this->event->isPropagationStopped(); - } - - public function stopPropagation() - { - if (!$this->event instanceof ContractsEvent) { - return; - } - - $this->event->stopPropagation(); - } - - public function __call($name, $args) - { - return $this->event->{$name}(...$args); - } -} diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json index 55c2716a6..32b42e408 100644 --- a/vendor/symfony/event-dispatcher/composer.json +++ b/vendor/symfony/event-dispatcher/composer.json @@ -16,26 +16,27 @@ } ], "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "suggest": { "symfony/dependency-injection": "", diff --git a/vendor/symfony/finder/CHANGELOG.md b/vendor/symfony/finder/CHANGELOG.md index 2045184e8..6a44e87c2 100644 --- a/vendor/symfony/finder/CHANGELOG.md +++ b/vendor/symfony/finder/CHANGELOG.md @@ -1,6 +1,19 @@ CHANGELOG ========= +5.4.0 +----- + + * Deprecate `Comparator::setTarget()` and `Comparator::setOperator()` + * Add a constructor to `Comparator` that allows setting target and operator + * Finder's iterator has now `Symfony\Component\Finder\SplFileInfo` inner type specified + * Add recursive .gitignore files support + +5.0.0 +----- + + * added `$useNaturalSort` argument to `Finder::sortByName()` + 4.3.0 ----- diff --git a/vendor/symfony/finder/Comparator/Comparator.php b/vendor/symfony/finder/Comparator/Comparator.php index 6aee21cf0..3af551f4c 100644 --- a/vendor/symfony/finder/Comparator/Comparator.php +++ b/vendor/symfony/finder/Comparator/Comparator.php @@ -12,8 +12,6 @@ namespace Symfony\Component\Finder\Comparator; /** - * Comparator. - * * @author Fabien Potencier <fabien@symfony.com> */ class Comparator @@ -21,30 +19,44 @@ class Comparator private $target; private $operator = '=='; + public function __construct(string $target = null, string $operator = '==') + { + if (null === $target) { + trigger_deprecation('symfony/finder', '5.4', 'Constructing a "%s" without setting "$target" is deprecated.', __CLASS__); + } + + $this->target = $target; + $this->doSetOperator($operator); + } + /** * Gets the target value. * - * @return string The target value + * @return string */ public function getTarget() { + if (null === $this->target) { + trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); + } + return $this->target; } /** - * Sets the target value. - * - * @param string $target The target value + * @deprecated set the target via the constructor instead */ - public function setTarget($target) + public function setTarget(string $target) { + trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the target via the constructor instead.', __METHOD__); + $this->target = $target; } /** * Gets the comparison operator. * - * @return string The operator + * @return string */ public function getOperator() { @@ -54,21 +66,15 @@ class Comparator /** * Sets the comparison operator. * - * @param string $operator A valid operator - * * @throws \InvalidArgumentException + * + * @deprecated set the operator via the constructor instead */ - public function setOperator($operator) + public function setOperator(string $operator) { - if (!$operator) { - $operator = '=='; - } + trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the operator via the constructor instead.', __METHOD__); - if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { - throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); - } - - $this->operator = $operator; + $this->doSetOperator('' === $operator ? '==' : $operator); } /** @@ -80,6 +86,10 @@ class Comparator */ public function test($test) { + if (null === $this->target) { + trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); + } + switch ($this->operator) { case '>': return $test > $this->target; @@ -95,4 +105,13 @@ class Comparator return $test == $this->target; } + + private function doSetOperator(string $operator): void + { + if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { + throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); + } + + $this->operator = $operator; + } } diff --git a/vendor/symfony/finder/Comparator/DateComparator.php b/vendor/symfony/finder/Comparator/DateComparator.php index ae22c6cbe..8f651e148 100644 --- a/vendor/symfony/finder/Comparator/DateComparator.php +++ b/vendor/symfony/finder/Comparator/DateComparator.php @@ -45,7 +45,6 @@ class DateComparator extends Comparator $operator = '<'; } - $this->setOperator($operator); - $this->setTarget($target); + parent::__construct($target, $operator); } } diff --git a/vendor/symfony/finder/Comparator/NumberComparator.php b/vendor/symfony/finder/Comparator/NumberComparator.php index 657118fb6..ff85d9677 100644 --- a/vendor/symfony/finder/Comparator/NumberComparator.php +++ b/vendor/symfony/finder/Comparator/NumberComparator.php @@ -73,7 +73,6 @@ class NumberComparator extends Comparator } } - $this->setTarget($target); - $this->setOperator($matches[1] ?? '=='); + parent::__construct($target, $matches[1] ?: '=='); } } diff --git a/vendor/symfony/finder/Finder.php b/vendor/symfony/finder/Finder.php index e1194ed69..8cc564cd6 100644 --- a/vendor/symfony/finder/Finder.php +++ b/vendor/symfony/finder/Finder.php @@ -36,6 +36,8 @@ use Symfony\Component\Finder\Iterator\SortableIterator; * $finder = Finder::create()->files()->name('*.php')->in(__DIR__); * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<string, SplFileInfo> */ class Finder implements \IteratorAggregate, \Countable { @@ -337,13 +339,11 @@ class Finder implements \IteratorAggregate, \Countable * * This option is enabled by default. * - * @param bool $ignoreDotFiles Whether to exclude "hidden" files or not - * * @return $this * * @see ExcludeDirectoryFilterIterator */ - public function ignoreDotFiles($ignoreDotFiles) + public function ignoreDotFiles(bool $ignoreDotFiles) { if ($ignoreDotFiles) { $this->ignore |= static::IGNORE_DOT_FILES; @@ -359,13 +359,11 @@ class Finder implements \IteratorAggregate, \Countable * * This option is enabled by default. * - * @param bool $ignoreVCS Whether to exclude VCS files or not - * * @return $this * * @see ExcludeDirectoryFilterIterator */ - public function ignoreVCS($ignoreVCS) + public function ignoreVCS(bool $ignoreVCS) { if ($ignoreVCS) { $this->ignore |= static::IGNORE_VCS_FILES; @@ -433,19 +431,12 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @param bool $useNaturalSort Whether to use natural sort or not, disabled by default - * * @return $this * * @see SortableIterator */ - public function sortByName(/* bool $useNaturalSort = false */) + public function sortByName(bool $useNaturalSort = false) { - if (\func_num_args() < 1 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { - @trigger_error(sprintf('The "%s()" method will have a new "bool $useNaturalSort = false" argument in version 5.0, not defining it is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - $useNaturalSort = 0 < \func_num_args() && func_get_arg(0); - $this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME; return $this; @@ -569,13 +560,11 @@ class Finder implements \IteratorAggregate, \Countable * * By default, scanning unreadable directories content throws an AccessDeniedException. * - * @param bool $ignore - * * @return $this */ - public function ignoreUnreadableDirs($ignore = true) + public function ignoreUnreadableDirs(bool $ignore = true) { - $this->ignoreUnreadableDirs = (bool) $ignore; + $this->ignoreUnreadableDirs = $ignore; return $this; } @@ -595,16 +584,16 @@ class Finder implements \IteratorAggregate, \Countable foreach ((array) $dirs as $dir) { if (is_dir($dir)) { - $resolvedDirs[] = $this->normalizeDir($dir); + $resolvedDirs[] = [$this->normalizeDir($dir)]; } elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) { sort($glob); - $resolvedDirs = array_merge($resolvedDirs, array_map([$this, 'normalizeDir'], $glob)); + $resolvedDirs[] = array_map([$this, 'normalizeDir'], $glob); } else { throw new DirectoryNotFoundException(sprintf('The "%s" directory does not exist.', $dir)); } } - $this->dirs = array_merge($this->dirs, $resolvedDirs); + $this->dirs = array_merge($this->dirs, ...$resolvedDirs); return $this; } @@ -614,7 +603,7 @@ class Finder implements \IteratorAggregate, \Countable * * This method implements the IteratorAggregate interface. * - * @return \Iterator|SplFileInfo[] An iterator + * @return \Iterator<string, SplFileInfo> * * @throws \LogicException if the in() method has not been called */ @@ -658,13 +647,11 @@ class Finder implements \IteratorAggregate, \Countable * * The set can be another Finder, an Iterator, an IteratorAggregate, or even a plain array. * - * @param iterable $iterator - * * @return $this * * @throws \InvalidArgumentException when the given argument is not iterable */ - public function append($iterator) + public function append(iterable $iterator) { if ($iterator instanceof \IteratorAggregate) { $this->iterators[] = $iterator->getIterator(); @@ -722,14 +709,6 @@ class Finder implements \IteratorAggregate, \Countable $notPaths[] = '#(^|/)\..+(/|$)#'; } - if (static::IGNORE_VCS_IGNORED_FILES === (static::IGNORE_VCS_IGNORED_FILES & $this->ignore)) { - $gitignoreFilePath = sprintf('%s/.gitignore', $dir); - if (!is_readable($gitignoreFilePath)) { - throw new \RuntimeException(sprintf('The "ignoreVCSIgnored" option cannot be used by the Finder as the "%s" file is not readable.', $gitignoreFilePath)); - } - $notPaths = array_merge($notPaths, [Gitignore::toRegex(file_get_contents($gitignoreFilePath))]); - } - $minDepth = 0; $maxDepth = \PHP_INT_MAX; @@ -798,6 +777,10 @@ class Finder implements \IteratorAggregate, \Countable $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths); } + if (static::IGNORE_VCS_IGNORED_FILES === (static::IGNORE_VCS_IGNORED_FILES & $this->ignore)) { + $iterator = new Iterator\VcsIgnoredFilterIterator($iterator, $dir); + } + return $iterator; } diff --git a/vendor/symfony/finder/Gitignore.php b/vendor/symfony/finder/Gitignore.php index 491f588ee..d42cca1dc 100644 --- a/vendor/symfony/finder/Gitignore.php +++ b/vendor/symfony/finder/Gitignore.php @@ -25,12 +25,22 @@ class Gitignore * Format specification: https://git-scm.com/docs/gitignore#_pattern_format */ public static function toRegex(string $gitignoreFileContent): string + { + return self::buildRegex($gitignoreFileContent, false); + } + + public static function toRegexMatchingNegatedPatterns(string $gitignoreFileContent): string + { + return self::buildRegex($gitignoreFileContent, true); + } + + private static function buildRegex(string $gitignoreFileContent, bool $inverted): string { $gitignoreFileContent = preg_replace('~(?<!\\\\)#[^\n\r]*~', '', $gitignoreFileContent); $gitignoreLines = preg_split('~\r\n?|\n~', $gitignoreFileContent); $res = self::lineToRegex(''); - foreach ($gitignoreLines as $i => $line) { + foreach ($gitignoreLines as $line) { $line = preg_replace('~(?<!\\\\)[ \t]+$~', '', $line); if ('!' === substr($line, 0, 1)) { @@ -41,7 +51,7 @@ class Gitignore } if ('' !== $line) { - if ($isNegative) { + if ($isNegative xor $inverted) { $res = '(?!'.self::lineToRegex($line).'$)'.$res; } else { $res = '(?:'.$res.'|'.self::lineToRegex($line).')'; diff --git a/vendor/symfony/finder/Glob.php b/vendor/symfony/finder/Glob.php index ea76d51ae..8447932e5 100644 --- a/vendor/symfony/finder/Glob.php +++ b/vendor/symfony/finder/Glob.php @@ -38,14 +38,9 @@ class Glob /** * Returns a regexp which is the equivalent of the glob pattern. * - * @param string $glob The glob pattern - * @param bool $strictLeadingDot - * @param bool $strictWildcardSlash - * @param string $delimiter Optional delimiter - * - * @return string regex The regexp + * @return string */ - public static function toRegex($glob, $strictLeadingDot = true, $strictWildcardSlash = true, $delimiter = '#') + public static function toRegex(string $glob, bool $strictLeadingDot = true, bool $strictWildcardSlash = true, string $delimiter = '#') { $firstByte = true; $escaping = false; diff --git a/vendor/symfony/finder/Iterator/CustomFilterIterator.php b/vendor/symfony/finder/Iterator/CustomFilterIterator.php index f85cb7bff..f7bf19b87 100644 --- a/vendor/symfony/finder/Iterator/CustomFilterIterator.php +++ b/vendor/symfony/finder/Iterator/CustomFilterIterator.php @@ -18,14 +18,16 @@ namespace Symfony\Component\Finder\Iterator; * to remove files. * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends \FilterIterator<string, \SplFileInfo> */ class CustomFilterIterator extends \FilterIterator { private $filters = []; /** - * @param \Iterator $iterator The Iterator to filter - * @param callable[] $filters An array of PHP callbacks + * @param \Iterator<string, \SplFileInfo> $iterator The Iterator to filter + * @param callable[] $filters An array of PHP callbacks * * @throws \InvalidArgumentException */ @@ -44,7 +46,7 @@ class CustomFilterIterator extends \FilterIterator /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php b/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php index 90616f471..f592e1913 100644 --- a/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php +++ b/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php @@ -17,14 +17,16 @@ use Symfony\Component\Finder\Comparator\DateComparator; * DateRangeFilterIterator filters out files that are not in the given date range (last modified dates). * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends \FilterIterator<string, \SplFileInfo> */ class DateRangeFilterIterator extends \FilterIterator { private $comparators = []; /** - * @param \Iterator $iterator The Iterator to filter - * @param DateComparator[] $comparators An array of DateComparator instances + * @param \Iterator<string, \SplFileInfo> $iterator + * @param DateComparator[] $comparators */ public function __construct(\Iterator $iterator, array $comparators) { @@ -36,7 +38,7 @@ class DateRangeFilterIterator extends \FilterIterator /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php b/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php index e96fefd96..f593a3f08 100644 --- a/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php +++ b/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php @@ -15,15 +15,20 @@ namespace Symfony\Component\Finder\Iterator; * DepthRangeFilterIterator limits the directory depth. * * @author Fabien Potencier <fabien@symfony.com> + * + * @template-covariant TKey + * @template-covariant TValue + * + * @extends \FilterIterator<TKey, TValue> */ class DepthRangeFilterIterator extends \FilterIterator { private $minDepth = 0; /** - * @param \RecursiveIteratorIterator $iterator The Iterator to filter - * @param int $minDepth The min depth - * @param int $maxDepth The max depth + * @param \RecursiveIteratorIterator<\RecursiveIterator<TKey, TValue>> $iterator The Iterator to filter + * @param int $minDepth The min depth + * @param int $maxDepth The max depth */ public function __construct(\RecursiveIteratorIterator $iterator, int $minDepth = 0, int $maxDepth = \PHP_INT_MAX) { @@ -36,7 +41,7 @@ class DepthRangeFilterIterator extends \FilterIterator /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php index cf9e67877..d9e182c17 100644 --- a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php +++ b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php @@ -15,6 +15,9 @@ namespace Symfony\Component\Finder\Iterator; * ExcludeDirectoryFilterIterator filters out directories. * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends \FilterIterator<string, \SplFileInfo> + * @implements \RecursiveIterator<string, \SplFileInfo> */ class ExcludeDirectoryFilterIterator extends \FilterIterator implements \RecursiveIterator { @@ -50,7 +53,7 @@ class ExcludeDirectoryFilterIterator extends \FilterIterator implements \Recursi /** * Filters the iterator values. * - * @return bool True if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php b/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php index d054cefb9..793ae3509 100644 --- a/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php +++ b/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php @@ -15,6 +15,8 @@ namespace Symfony\Component\Finder\Iterator; * FileTypeFilterIterator only keeps files, directories, or both. * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends \FilterIterator<string, \SplFileInfo> */ class FileTypeFilterIterator extends \FilterIterator { @@ -37,7 +39,7 @@ class FileTypeFilterIterator extends \FilterIterator /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php b/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php index 41eb767f7..79f8c29d3 100644 --- a/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php +++ b/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php @@ -16,13 +16,15 @@ namespace Symfony\Component\Finder\Iterator; * * @author Fabien Potencier <fabien@symfony.com> * @author Włodzimierz Gajda <gajdaw@gajdaw.pl> + * + * @extends MultiplePcreFilterIterator<string, \SplFileInfo> */ class FilecontentFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() @@ -50,9 +52,9 @@ class FilecontentFilterIterator extends MultiplePcreFilterIterator * * @param string $str Pattern: string or regexp * - * @return string regexp corresponding to a given string or regexp + * @return string */ - protected function toRegex($str) + protected function toRegex(string $str) { return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; } diff --git a/vendor/symfony/finder/Iterator/FilenameFilterIterator.php b/vendor/symfony/finder/Iterator/FilenameFilterIterator.php index 8365756c1..77b3b2419 100644 --- a/vendor/symfony/finder/Iterator/FilenameFilterIterator.php +++ b/vendor/symfony/finder/Iterator/FilenameFilterIterator.php @@ -17,13 +17,15 @@ use Symfony\Component\Finder\Glob; * FilenameFilterIterator filters files by patterns (a regexp, a glob, or a string). * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends MultiplePcreFilterIterator<string, \SplFileInfo> */ class FilenameFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() @@ -39,9 +41,9 @@ class FilenameFilterIterator extends MultiplePcreFilterIterator * * @param string $str Pattern: glob or regexp * - * @return string regexp corresponding to a given glob or regexp + * @return string */ - protected function toRegex($str) + protected function toRegex(string $str) { return $this->isRegex($str) ? $str : Glob::toRegex($str); } diff --git a/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php b/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php index e185d1300..564765d8f 100644 --- a/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php +++ b/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php @@ -15,6 +15,11 @@ namespace Symfony\Component\Finder\Iterator; * MultiplePcreFilterIterator filters files using patterns (regexps, globs or strings). * * @author Fabien Potencier <fabien@symfony.com> + * + * @template-covariant TKey + * @template-covariant TValue + * + * @extends \FilterIterator<TKey, TValue> */ abstract class MultiplePcreFilterIterator extends \FilterIterator { @@ -23,8 +28,8 @@ abstract class MultiplePcreFilterIterator extends \FilterIterator /** * @param \Iterator $iterator The Iterator to filter - * @param array $matchPatterns An array of patterns that need to match - * @param array $noMatchPatterns An array of patterns that need to not match + * @param string[] $matchPatterns An array of patterns that need to match + * @param string[] $noMatchPatterns An array of patterns that need to not match */ public function __construct(\Iterator $iterator, array $matchPatterns, array $noMatchPatterns) { @@ -46,11 +51,9 @@ abstract class MultiplePcreFilterIterator extends \FilterIterator * Such case can be handled by child classes before calling the method if they want to * apply a different behavior. * - * @param string $string The string to be matched against filters - * * @return bool */ - protected function isAccepted($string) + protected function isAccepted(string $string) { // should at least not match one rule to exclude foreach ($this->noMatchRegexps as $regex) { @@ -77,11 +80,9 @@ abstract class MultiplePcreFilterIterator extends \FilterIterator /** * Checks whether the string is a regex. * - * @param string $str - * - * @return bool Whether the given string is a regex + * @return bool */ - protected function isRegex($str) + protected function isRegex(string $str) { $availableModifiers = 'imsxuADU'; @@ -110,9 +111,7 @@ abstract class MultiplePcreFilterIterator extends \FilterIterator /** * Converts string into regexp. * - * @param string $str Pattern - * - * @return string regexp corresponding to a given string + * @return string */ - abstract protected function toRegex($str); + abstract protected function toRegex(string $str); } diff --git a/vendor/symfony/finder/Iterator/PathFilterIterator.php b/vendor/symfony/finder/Iterator/PathFilterIterator.php index f4aaa1fb0..7974c4ee3 100644 --- a/vendor/symfony/finder/Iterator/PathFilterIterator.php +++ b/vendor/symfony/finder/Iterator/PathFilterIterator.php @@ -16,13 +16,15 @@ namespace Symfony\Component\Finder\Iterator; * * @author Fabien Potencier <fabien@symfony.com> * @author Włodzimierz Gajda <gajdaw@gajdaw.pl> + * + * @extends MultiplePcreFilterIterator<string, \SplFileInfo> */ class PathFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() @@ -48,9 +50,9 @@ class PathFilterIterator extends MultiplePcreFilterIterator * * @param string $str Pattern: regexp or dirname * - * @return string regexp corresponding to a given string or regexp + * @return string */ - protected function toRegex($str) + protected function toRegex(string $str) { return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; } diff --git a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php index 8508ab707..27589cdd5 100644 --- a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +++ b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php @@ -56,7 +56,7 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator /** * Return an instance of SplFileInfo with support for relative paths. * - * @return SplFileInfo File information + * @return SplFileInfo */ #[\ReturnTypeWillChange] public function current() @@ -79,7 +79,31 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator } /** - * @return \RecursiveIterator + * @param bool $allowLinks + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function hasChildren($allowLinks = false) + { + $hasChildren = parent::hasChildren($allowLinks); + + if (!$hasChildren || !$this->ignoreUnreadableDirs) { + return $hasChildren; + } + + try { + parent::getChildren(); + + return true; + } catch (\UnexpectedValueException $e) { + // If directory is unreadable and finder is set to ignore it, skip children + return false; + } + } + + /** + * @return \RecursiveDirectoryIterator * * @throws AccessDeniedException */ @@ -100,12 +124,7 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator return $children; } catch (\UnexpectedValueException $e) { - if ($this->ignoreUnreadableDirs) { - // If directory is unreadable and finder is set to ignore it, a fake empty content is returned. - return new \RecursiveArrayIterator([]); - } else { - throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); - } + throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); } } @@ -127,7 +146,7 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator /** * Checks if the stream is rewindable. * - * @return bool true when the stream is rewindable, false otherwise + * @return bool */ public function isRewindable() { diff --git a/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php b/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php index 4078f3692..575bf29b7 100644 --- a/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php +++ b/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php @@ -17,14 +17,16 @@ use Symfony\Component\Finder\Comparator\NumberComparator; * SizeRangeFilterIterator filters out files that are not in the given size range. * * @author Fabien Potencier <fabien@symfony.com> + * + * @extends \FilterIterator<string, \SplFileInfo> */ class SizeRangeFilterIterator extends \FilterIterator { private $comparators = []; /** - * @param \Iterator $iterator The Iterator to filter - * @param NumberComparator[] $comparators An array of NumberComparator instances + * @param \Iterator<string, \SplFileInfo> $iterator + * @param NumberComparator[] $comparators */ public function __construct(\Iterator $iterator, array $comparators) { @@ -36,7 +38,7 @@ class SizeRangeFilterIterator extends \FilterIterator /** * Filters the iterator values. * - * @return bool true if the value should be kept, false otherwise + * @return bool */ #[\ReturnTypeWillChange] public function accept() diff --git a/vendor/symfony/finder/Iterator/SortableIterator.php b/vendor/symfony/finder/Iterator/SortableIterator.php index adc7e999d..9afde5c25 100644 --- a/vendor/symfony/finder/Iterator/SortableIterator.php +++ b/vendor/symfony/finder/Iterator/SortableIterator.php @@ -15,6 +15,8 @@ namespace Symfony\Component\Finder\Iterator; * SortableIterator applies a sort on a given Iterator. * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<string, \SplFileInfo> */ class SortableIterator implements \IteratorAggregate { @@ -30,7 +32,8 @@ class SortableIterator implements \IteratorAggregate private $sort; /** - * @param int|callable $sort The sort type (SORT_BY_NAME, SORT_BY_TYPE, or a PHP callback) + * @param \Traversable<string, \SplFileInfo> $iterator + * @param int|callable $sort The sort type (SORT_BY_NAME, SORT_BY_TYPE, or a PHP callback) * * @throws \InvalidArgumentException */ @@ -40,15 +43,15 @@ class SortableIterator implements \IteratorAggregate $order = $reverseOrder ? -1 : 1; if (self::SORT_BY_NAME === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_NAME_NATURAL === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { return $order * strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_TYPE === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { if ($a->isDir() && $b->isFile()) { return -$order; } elseif ($a->isFile() && $b->isDir()) { @@ -58,28 +61,28 @@ class SortableIterator implements \IteratorAggregate return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_ACCESSED_TIME === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { return $order * ($a->getATime() - $b->getATime()); }; } elseif (self::SORT_BY_CHANGED_TIME === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { return $order * ($a->getCTime() - $b->getCTime()); }; } elseif (self::SORT_BY_MODIFIED_TIME === $sort) { - $this->sort = static function ($a, $b) use ($order) { + $this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { return $order * ($a->getMTime() - $b->getMTime()); }; } elseif (self::SORT_BY_NONE === $sort) { $this->sort = $order; } elseif (\is_callable($sort)) { - $this->sort = $reverseOrder ? static function ($a, $b) use ($sort) { return -$sort($a, $b); } : $sort; + $this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : $sort; } else { throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); } } /** - * @return \Traversable + * @return \Traversable<string, \SplFileInfo> */ #[\ReturnTypeWillChange] public function getIterator() diff --git a/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php b/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php new file mode 100644 index 000000000..e27158cbd --- /dev/null +++ b/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php @@ -0,0 +1,151 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Finder\Iterator; + +use Symfony\Component\Finder\Gitignore; + +final class VcsIgnoredFilterIterator extends \FilterIterator +{ + /** + * @var string + */ + private $baseDir; + + /** + * @var array<string, array{0: string, 1: string}|null> + */ + private $gitignoreFilesCache = []; + + /** + * @var array<string, bool> + */ + private $ignoredPathsCache = []; + + public function __construct(\Iterator $iterator, string $baseDir) + { + $this->baseDir = $this->normalizePath($baseDir); + + parent::__construct($iterator); + } + + public function accept(): bool + { + $file = $this->current(); + + $fileRealPath = $this->normalizePath($file->getRealPath()); + + return !$this->isIgnored($fileRealPath); + } + + private function isIgnored(string $fileRealPath): bool + { + if (is_dir($fileRealPath) && !str_ends_with($fileRealPath, '/')) { + $fileRealPath .= '/'; + } + + if (isset($this->ignoredPathsCache[$fileRealPath])) { + return $this->ignoredPathsCache[$fileRealPath]; + } + + $ignored = false; + + foreach ($this->parentsDirectoryDownward($fileRealPath) as $parentDirectory) { + if ($this->isIgnored($parentDirectory)) { + // rules in ignored directories are ignored, no need to check further. + break; + } + + $fileRelativePath = substr($fileRealPath, \strlen($parentDirectory) + 1); + + if (null === $regexps = $this->readGitignoreFile("{$parentDirectory}/.gitignore")) { + continue; + } + + [$exclusionRegex, $inclusionRegex] = $regexps; + + if (preg_match($exclusionRegex, $fileRelativePath)) { + $ignored = true; + + continue; + } + + if (preg_match($inclusionRegex, $fileRelativePath)) { + $ignored = false; + } + } + + return $this->ignoredPathsCache[$fileRealPath] = $ignored; + } + + /** + * @return list<string> + */ + private function parentsDirectoryDownward(string $fileRealPath): array + { + $parentDirectories = []; + + $parentDirectory = $fileRealPath; + + while (true) { + $newParentDirectory = \dirname($parentDirectory); + + // dirname('/') = '/' + if ($newParentDirectory === $parentDirectory) { + break; + } + + $parentDirectory = $newParentDirectory; + + if (0 !== strpos($parentDirectory, $this->baseDir)) { + break; + } + + $parentDirectories[] = $parentDirectory; + } + + return array_reverse($parentDirectories); + } + + /** + * @return array{0: string, 1: string}|null + */ + private function readGitignoreFile(string $path): ?array + { + if (\array_key_exists($path, $this->gitignoreFilesCache)) { + return $this->gitignoreFilesCache[$path]; + } + + if (!file_exists($path)) { + return $this->gitignoreFilesCache[$path] = null; + } + + if (!is_file($path) || !is_readable($path)) { + throw new \RuntimeException("The \"ignoreVCSIgnored\" option cannot be used by the Finder as the \"{$path}\" file is not readable."); + } + + $gitignoreFileContent = file_get_contents($path); + + return $this->gitignoreFilesCache[$path] = [ + Gitignore::toRegex($gitignoreFileContent), + Gitignore::toRegexMatchingNegatedPatterns($gitignoreFileContent), + ]; + } + + private function normalizePath(string $path): string + { + if ('\\' === \DIRECTORY_SEPARATOR) { + return str_replace('\\', '/', $path); + } + + return $path; + } +} diff --git a/vendor/symfony/finder/SplFileInfo.php b/vendor/symfony/finder/SplFileInfo.php index 62c9faa6e..11604a2ef 100644 --- a/vendor/symfony/finder/SplFileInfo.php +++ b/vendor/symfony/finder/SplFileInfo.php @@ -38,7 +38,7 @@ class SplFileInfo extends \SplFileInfo * * This path does not contain the file name. * - * @return string the relative path + * @return string */ public function getRelativePath() { @@ -50,7 +50,7 @@ class SplFileInfo extends \SplFileInfo * * This path contains the file name. * - * @return string the relative path name + * @return string */ public function getRelativePathname() { @@ -67,15 +67,18 @@ class SplFileInfo extends \SplFileInfo /** * Returns the contents of the file. * - * @return string the contents of the file + * @return string * * @throws \RuntimeException */ public function getContents() { set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); - $content = file_get_contents($this->getPathname()); - restore_error_handler(); + try { + $content = file_get_contents($this->getPathname()); + } finally { + restore_error_handler(); + } if (false === $content) { throw new \RuntimeException($error); } diff --git a/vendor/symfony/finder/composer.json b/vendor/symfony/finder/composer.json index 5ccd80cd4..ef19911da 100644 --- a/vendor/symfony/finder/composer.json +++ b/vendor/symfony/finder/composer.json @@ -16,7 +16,8 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "autoload": { diff --git a/vendor/symfony/http-client-contracts/.gitignore b/vendor/symfony/http-client-contracts/.gitignore deleted file mode 100644 index c49a5d8df..000000000 --- a/vendor/symfony/http-client-contracts/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -vendor/ -composer.lock -phpunit.xml diff --git a/vendor/symfony/http-client-contracts/ChunkInterface.php b/vendor/symfony/http-client-contracts/ChunkInterface.php deleted file mode 100644 index 0800cb366..000000000 --- a/vendor/symfony/http-client-contracts/ChunkInterface.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient; - -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; - -/** - * The interface of chunks returned by ResponseStreamInterface::current(). - * - * When the chunk is first, last or timeout, the content MUST be empty. - * When an unchecked timeout or a network error occurs, a TransportExceptionInterface - * MUST be thrown by the destructor unless one was already thrown by another method. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface ChunkInterface -{ - /** - * Tells when the idle timeout has been reached. - * - * @throws TransportExceptionInterface on a network error - */ - public function isTimeout(): bool; - - /** - * Tells when headers just arrived. - * - * @throws TransportExceptionInterface on a network error or when the idle timeout is reached - */ - public function isFirst(): bool; - - /** - * Tells when the body just completed. - * - * @throws TransportExceptionInterface on a network error or when the idle timeout is reached - */ - public function isLast(): bool; - - /** - * Returns a [status code, headers] tuple when a 1xx status code was just received. - * - * @throws TransportExceptionInterface on a network error or when the idle timeout is reached - */ - public function getInformationalStatus(): ?array; - - /** - * Returns the content of the response chunk. - * - * @throws TransportExceptionInterface on a network error or when the idle timeout is reached - */ - public function getContent(): string; - - /** - * Returns the offset of the chunk in the response body. - */ - public function getOffset(): int; - - /** - * In case of error, returns the message that describes it. - */ - public function getError(): ?string; -} diff --git a/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php deleted file mode 100644 index 22d2b456a..000000000 --- a/vendor/symfony/http-client-contracts/Exception/ClientExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When a 4xx response is returned. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface ClientExceptionInterface extends HttpExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php deleted file mode 100644 index 971a7a29b..000000000 --- a/vendor/symfony/http-client-contracts/Exception/DecodingExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When a content-type cannot be decoded to the expected representation. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface DecodingExceptionInterface extends ExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php deleted file mode 100644 index e553b47a1..000000000 --- a/vendor/symfony/http-client-contracts/Exception/ExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * The base interface for all exceptions in the contract. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface ExceptionInterface extends \Throwable -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php deleted file mode 100644 index 17865ed36..000000000 --- a/vendor/symfony/http-client-contracts/Exception/HttpExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -use Symfony\Contracts\HttpClient\ResponseInterface; - -/** - * Base interface for HTTP-related exceptions. - * - * @author Anton Chernikov <anton_ch1989@mail.ru> - */ -interface HttpExceptionInterface extends ExceptionInterface -{ - public function getResponse(): ResponseInterface; -} diff --git a/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php deleted file mode 100644 index edd9b8a9b..000000000 --- a/vendor/symfony/http-client-contracts/Exception/RedirectionExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When a 3xx response is returned and the "max_redirects" option has been reached. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface RedirectionExceptionInterface extends HttpExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php deleted file mode 100644 index 9bfe1354b..000000000 --- a/vendor/symfony/http-client-contracts/Exception/ServerExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When a 5xx response is returned. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface ServerExceptionInterface extends HttpExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php deleted file mode 100644 index 08acf9fb6..000000000 --- a/vendor/symfony/http-client-contracts/Exception/TimeoutExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When an idle timeout occurs. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface TimeoutExceptionInterface extends TransportExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php b/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php deleted file mode 100644 index 0c8d131a0..000000000 --- a/vendor/symfony/http-client-contracts/Exception/TransportExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Exception; - -/** - * When any error happens at the transport level. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface TransportExceptionInterface extends ExceptionInterface -{ -} diff --git a/vendor/symfony/http-client-contracts/HttpClientInterface.php b/vendor/symfony/http-client-contracts/HttpClientInterface.php deleted file mode 100644 index 158c1a7d0..000000000 --- a/vendor/symfony/http-client-contracts/HttpClientInterface.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient; - -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; -use Symfony\Contracts\HttpClient\Test\HttpClientTestCase; - -/** - * Provides flexible methods for requesting HTTP resources synchronously or asynchronously. - * - * @see HttpClientTestCase for a reference test suite - * - * @method static withOptions(array $options) Returns a new instance of the client with new default options - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface HttpClientInterface -{ - public const OPTIONS_DEFAULTS = [ - 'auth_basic' => null, // array|string - an array containing the username as first value, and optionally the - // password as the second one; or string like username:password - enabling HTTP Basic - // authentication (RFC 7617) - 'auth_bearer' => null, // string - a token enabling HTTP Bearer authorization (RFC 6750) - 'query' => [], // string[] - associative array of query string values to merge with the request's URL - 'headers' => [], // iterable|string[]|string[][] - headers names provided as keys or as part of values - 'body' => '', // array|string|resource|\Traversable|\Closure - the callback SHOULD yield a string - // smaller than the amount requested as argument; the empty string signals EOF; if - // an array is passed, it is meant as a form payload of field names and values - 'json' => null, // mixed - if set, implementations MUST set the "body" option to the JSON-encoded - // value and set the "content-type" header to a JSON-compatible value if it is not - // explicitly defined in the headers option - typically "application/json" - 'user_data' => null, // mixed - any extra data to attach to the request (scalar, callable, object...) that - // MUST be available via $response->getInfo('user_data') - not used internally - 'max_redirects' => 20, // int - the maximum number of redirects to follow; a value lower than or equal to 0 - // means redirects should not be followed; "Authorization" and "Cookie" headers MUST - // NOT follow except for the initial host name - 'http_version' => null, // string - defaults to the best supported version, typically 1.1 or 2.0 - 'base_uri' => null, // string - the URI to resolve relative URLs, following rules in RFC 3986, section 2 - 'buffer' => true, // bool|resource|\Closure - whether the content of the response should be buffered or not, - // or a stream resource where the response body should be written, - // or a closure telling if/where the response should be buffered based on its headers - 'on_progress' => null, // callable(int $dlNow, int $dlSize, array $info) - throwing any exceptions MUST abort - // the request; it MUST be called on DNS resolution, on arrival of headers and on - // completion; it SHOULD be called on upload/download of data and at least 1/s - 'resolve' => [], // string[] - a map of host to IP address that SHOULD replace DNS resolution - 'proxy' => null, // string - by default, the proxy-related env vars handled by curl SHOULD be honored - 'no_proxy' => null, // string - a comma separated list of hosts that do not require a proxy to be reached - 'timeout' => null, // float - the idle timeout - defaults to ini_get('default_socket_timeout') - 'max_duration' => 0, // float - the maximum execution time for the request+response as a whole; - // a value lower than or equal to 0 means it is unlimited - 'bindto' => '0', // string - the interface or the local socket to bind to - 'verify_peer' => true, // see https://php.net/context.ssl for the following options - 'verify_host' => true, - 'cafile' => null, - 'capath' => null, - 'local_cert' => null, - 'local_pk' => null, - 'passphrase' => null, - 'ciphers' => null, - 'peer_fingerprint' => null, - 'capture_peer_cert_chain' => false, - 'extra' => [], // array - additional options that can be ignored if unsupported, unlike regular options - ]; - - /** - * Requests an HTTP resource. - * - * Responses MUST be lazy, but their status code MUST be - * checked even if none of their public methods are called. - * - * Implementations are not required to support all options described above; they can also - * support more custom options; but in any case, they MUST throw a TransportExceptionInterface - * when an unsupported option is passed. - * - * @throws TransportExceptionInterface When an unsupported option is passed - */ - public function request(string $method, string $url, array $options = []): ResponseInterface; - - /** - * Yields responses chunk by chunk as they complete. - * - * @param ResponseInterface|iterable<array-key, ResponseInterface> $responses One or more responses created by the current HTTP client - * @param float|null $timeout The idle timeout before yielding timeout chunks - */ - public function stream($responses, float $timeout = null): ResponseStreamInterface; -} diff --git a/vendor/symfony/http-client-contracts/LICENSE b/vendor/symfony/http-client-contracts/LICENSE deleted file mode 100644 index 74cdc2dbf..000000000 --- a/vendor/symfony/http-client-contracts/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2018-2022 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/http-client-contracts/README.md b/vendor/symfony/http-client-contracts/README.md deleted file mode 100644 index 03b3a69b7..000000000 --- a/vendor/symfony/http-client-contracts/README.md +++ /dev/null @@ -1,9 +0,0 @@ -Symfony HttpClient Contracts -============================ - -A set of abstractions extracted out of the Symfony components. - -Can be used to build on semantics that the Symfony components proved useful - and -that already have battle tested implementations. - -See https://github.com/symfony/contracts/blob/main/README.md for more information. diff --git a/vendor/symfony/http-client-contracts/ResponseInterface.php b/vendor/symfony/http-client-contracts/ResponseInterface.php deleted file mode 100644 index df7148816..000000000 --- a/vendor/symfony/http-client-contracts/ResponseInterface.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient; - -use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; - -/** - * A (lazily retrieved) HTTP response. - * - * @author Nicolas Grekas <p@tchwork.com> - */ -interface ResponseInterface -{ - /** - * Gets the HTTP status code of the response. - * - * @throws TransportExceptionInterface when a network error occurs - */ - public function getStatusCode(): int; - - /** - * Gets the HTTP headers of the response. - * - * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes - * - * @return string[][] The headers of the response keyed by header names in lowercase - * - * @throws TransportExceptionInterface When a network error occurs - * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached - * @throws ClientExceptionInterface On a 4xx when $throw is true - * @throws ServerExceptionInterface On a 5xx when $throw is true - */ - public function getHeaders(bool $throw = true): array; - - /** - * Gets the response body as a string. - * - * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes - * - * @throws TransportExceptionInterface When a network error occurs - * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached - * @throws ClientExceptionInterface On a 4xx when $throw is true - * @throws ServerExceptionInterface On a 5xx when $throw is true - */ - public function getContent(bool $throw = true): string; - - /** - * Gets the response body decoded as array, typically from a JSON payload. - * - * @param bool $throw Whether an exception should be thrown on 3/4/5xx status codes - * - * @throws DecodingExceptionInterface When the body cannot be decoded to an array - * @throws TransportExceptionInterface When a network error occurs - * @throws RedirectionExceptionInterface On a 3xx when $throw is true and the "max_redirects" option has been reached - * @throws ClientExceptionInterface On a 4xx when $throw is true - * @throws ServerExceptionInterface On a 5xx when $throw is true - */ - public function toArray(bool $throw = true): array; - - /** - * Closes the response stream and all related buffers. - * - * No further chunk will be yielded after this method has been called. - */ - public function cancel(): void; - - /** - * Returns info coming from the transport layer. - * - * This method SHOULD NOT throw any ExceptionInterface and SHOULD be non-blocking. - * The returned info is "live": it can be empty and can change from one call to - * another, as the request/response progresses. - * - * The following info MUST be returned: - * - canceled (bool) - true if the response was canceled using ResponseInterface::cancel(), false otherwise - * - error (string|null) - the error message when the transfer was aborted, null otherwise - * - http_code (int) - the last response code or 0 when it is not known yet - * - http_method (string) - the HTTP verb of the last request - * - redirect_count (int) - the number of redirects followed while executing the request - * - redirect_url (string|null) - the resolved location of redirect responses, null otherwise - * - response_headers (array) - an array modelled after the special $http_response_header variable - * - start_time (float) - the time when the request was sent or 0.0 when it's pending - * - url (string) - the last effective URL of the request - * - user_data (mixed) - the value of the "user_data" request option, null if not set - * - * When the "capture_peer_cert_chain" option is true, the "peer_certificate_chain" - * attribute SHOULD list the peer certificates as an array of OpenSSL X.509 resources. - * - * Other info SHOULD be named after curl_getinfo()'s associative return value. - * - * @return mixed An array of all available info, or one of them when $type is - * provided, or null when an unsupported type is requested - */ - public function getInfo(string $type = null); -} diff --git a/vendor/symfony/http-client-contracts/ResponseStreamInterface.php b/vendor/symfony/http-client-contracts/ResponseStreamInterface.php deleted file mode 100644 index fa3e5db6c..000000000 --- a/vendor/symfony/http-client-contracts/ResponseStreamInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient; - -/** - * Yields response chunks, returned by HttpClientInterface::stream(). - * - * @author Nicolas Grekas <p@tchwork.com> - * - * @extends \Iterator<ResponseInterface, ChunkInterface> - */ -interface ResponseStreamInterface extends \Iterator -{ - public function key(): ResponseInterface; - - public function current(): ChunkInterface; -} diff --git a/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php b/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php deleted file mode 100644 index 30a704975..000000000 --- a/vendor/symfony/http-client-contracts/Test/Fixtures/web/index.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -if ('cli-server' !== \PHP_SAPI) { - // safe guard against unwanted execution - throw new \Exception("You cannot run this script directly, it's a fixture for TestHttpServer."); -} - -$vars = []; - -if (!$_POST) { - $_POST = json_decode(file_get_contents('php://input'), true); - $_POST['content-type'] = $_SERVER['HTTP_CONTENT_TYPE'] ?? '?'; -} - -foreach ($_SERVER as $k => $v) { - switch ($k) { - default: - if (0 !== strpos($k, 'HTTP_')) { - continue 2; - } - // no break - case 'SERVER_NAME': - case 'SERVER_PROTOCOL': - case 'REQUEST_URI': - case 'REQUEST_METHOD': - case 'PHP_AUTH_USER': - case 'PHP_AUTH_PW': - $vars[$k] = $v; - } -} - -$json = json_encode($vars, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE); - -switch ($vars['REQUEST_URI']) { - default: - exit; - - case '/head': - header('Content-Length: '.strlen($json), true); - break; - - case '/': - case '/?a=a&b=b': - case 'http://127.0.0.1:8057/': - case 'http://localhost:8057/': - ob_start('ob_gzhandler'); - break; - - case '/103': - header('HTTP/1.1 103 Early Hints'); - header('Link: </style.css>; rel=preload; as=style', false); - header('Link: </script.js>; rel=preload; as=script', false); - flush(); - usleep(1000); - echo "HTTP/1.1 200 OK\r\n"; - echo "Date: Fri, 26 May 2017 10:02:11 GMT\r\n"; - echo "Content-Length: 13\r\n"; - echo "\r\n"; - echo 'Here the body'; - exit; - - case '/404': - header('Content-Type: application/json', true, 404); - break; - - case '/404-gzipped': - header('Content-Type: text/plain', true, 404); - ob_start('ob_gzhandler'); - @ob_flush(); - flush(); - usleep(300000); - echo 'some text'; - exit; - - case '/301': - if ('Basic Zm9vOmJhcg==' === $vars['HTTP_AUTHORIZATION']) { - header('Location: http://127.0.0.1:8057/302', true, 301); - } - break; - - case '/301/bad-tld': - header('Location: http://foo.example.', true, 301); - break; - - case '/301/invalid': - header('Location: //?foo=bar', true, 301); - break; - - case '/302': - if (!isset($vars['HTTP_AUTHORIZATION'])) { - header('Location: http://localhost:8057/', true, 302); - } - break; - - case '/302/relative': - header('Location: ..', true, 302); - break; - - case '/304': - header('Content-Length: 10', true, 304); - echo '12345'; - - return; - - case '/307': - header('Location: http://localhost:8057/post', true, 307); - break; - - case '/length-broken': - header('Content-Length: 1000'); - break; - - case '/post': - $output = json_encode($_POST + ['REQUEST_METHOD' => $vars['REQUEST_METHOD']], \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE); - header('Content-Type: application/json', true); - header('Content-Length: '.strlen($output)); - echo $output; - exit; - - case '/timeout-header': - usleep(300000); - break; - - case '/timeout-body': - echo '<1>'; - @ob_flush(); - flush(); - usleep(500000); - echo '<2>'; - exit; - - case '/timeout-long': - ignore_user_abort(false); - sleep(1); - while (true) { - echo '<1>'; - @ob_flush(); - flush(); - usleep(500); - } - exit; - - case '/chunked': - header('Transfer-Encoding: chunked'); - echo "8\r\nSymfony \r\n5\r\nis aw\r\n6\r\nesome!\r\n0\r\n\r\n"; - exit; - - case '/chunked-broken': - header('Transfer-Encoding: chunked'); - echo "8\r\nSymfony \r\n5\r\nis aw\r\n6\r\ne"; - exit; - - case '/gzip-broken': - header('Content-Encoding: gzip'); - echo str_repeat('-', 1000); - exit; - - case '/max-duration': - ignore_user_abort(false); - while (true) { - echo '<1>'; - @ob_flush(); - flush(); - usleep(500); - } - exit; - - case '/json': - header('Content-Type: application/json'); - echo json_encode([ - 'documents' => [ - ['id' => '/json/1'], - ['id' => '/json/2'], - ['id' => '/json/3'], - ], - ]); - exit; - - case '/json/1': - case '/json/2': - case '/json/3': - header('Content-Type: application/json'); - echo json_encode([ - 'title' => $vars['REQUEST_URI'], - ]); - - exit; -} - -header('Content-Type: application/json', true); - -echo $json; diff --git a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php b/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php deleted file mode 100644 index 7acd6b79c..000000000 --- a/vendor/symfony/http-client-contracts/Test/HttpClientTestCase.php +++ /dev/null @@ -1,1137 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Test; - -use PHPUnit\Framework\TestCase; -use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\TimeoutExceptionInterface; -use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; -use Symfony\Contracts\HttpClient\HttpClientInterface; - -/** - * A reference test suite for HttpClientInterface implementations. - */ -abstract class HttpClientTestCase extends TestCase -{ - public static function setUpBeforeClass(): void - { - TestHttpServer::start(); - } - - abstract protected function getHttpClient(string $testCase): HttpClientInterface; - - public function testGetRequest() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057', [ - 'headers' => ['Foo' => 'baR'], - 'user_data' => $data = new \stdClass(), - ]); - - $this->assertSame([], $response->getInfo('response_headers')); - $this->assertSame($data, $response->getInfo()['user_data']); - $this->assertSame(200, $response->getStatusCode()); - - $info = $response->getInfo(); - $this->assertNull($info['error']); - $this->assertSame(0, $info['redirect_count']); - $this->assertSame('HTTP/1.1 200 OK', $info['response_headers'][0]); - $this->assertSame('Host: localhost:8057', $info['response_headers'][1]); - $this->assertSame('http://localhost:8057/', $info['url']); - - $headers = $response->getHeaders(); - - $this->assertSame('localhost:8057', $headers['host'][0]); - $this->assertSame(['application/json'], $headers['content-type']); - - $body = json_decode($response->getContent(), true); - $this->assertSame($body, $response->toArray()); - - $this->assertSame('HTTP/1.1', $body['SERVER_PROTOCOL']); - $this->assertSame('/', $body['REQUEST_URI']); - $this->assertSame('GET', $body['REQUEST_METHOD']); - $this->assertSame('localhost:8057', $body['HTTP_HOST']); - $this->assertSame('baR', $body['HTTP_FOO']); - - $response = $client->request('GET', 'http://localhost:8057/length-broken'); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testHeadRequest() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('HEAD', 'http://localhost:8057/head', [ - 'headers' => ['Foo' => 'baR'], - 'user_data' => $data = new \stdClass(), - 'buffer' => false, - ]); - - $this->assertSame([], $response->getInfo('response_headers')); - $this->assertSame(200, $response->getStatusCode()); - - $info = $response->getInfo(); - $this->assertSame('HTTP/1.1 200 OK', $info['response_headers'][0]); - $this->assertSame('Host: localhost:8057', $info['response_headers'][1]); - - $headers = $response->getHeaders(); - - $this->assertSame('localhost:8057', $headers['host'][0]); - $this->assertSame(['application/json'], $headers['content-type']); - $this->assertTrue(0 < $headers['content-length'][0]); - - $this->assertSame('', $response->getContent()); - } - - public function testNonBufferedGetRequest() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057', [ - 'buffer' => false, - 'headers' => ['Foo' => 'baR'], - ]); - - $body = $response->toArray(); - $this->assertSame('baR', $body['HTTP_FOO']); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testBufferSink() - { - $sink = fopen('php://temp', 'w+'); - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057', [ - 'buffer' => $sink, - 'headers' => ['Foo' => 'baR'], - ]); - - $body = $response->toArray(); - $this->assertSame('baR', $body['HTTP_FOO']); - - rewind($sink); - $sink = stream_get_contents($sink); - $this->assertSame($sink, $response->getContent()); - } - - public function testConditionalBuffering() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057'); - $firstContent = $response->getContent(); - $secondContent = $response->getContent(); - - $this->assertSame($firstContent, $secondContent); - - $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () { return false; }]); - $response->getContent(); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testReentrantBufferCallback() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () use (&$response) { - $response->cancel(); - - return true; - }]); - - $this->assertSame(200, $response->getStatusCode()); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testThrowingBufferCallback() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () { - throw new \Exception('Boo.'); - }]); - - $this->assertSame(200, $response->getStatusCode()); - - $this->expectException(TransportExceptionInterface::class); - $this->expectExceptionMessage('Boo'); - $response->getContent(); - } - - public function testUnsupportedOption() - { - $client = $this->getHttpClient(__FUNCTION__); - - $this->expectException(\InvalidArgumentException::class); - $client->request('GET', 'http://localhost:8057', [ - 'capture_peer_cert' => 1.0, - ]); - } - - public function testHttpVersion() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057', [ - 'http_version' => 1.0, - ]); - - $this->assertSame(200, $response->getStatusCode()); - $this->assertSame('HTTP/1.0 200 OK', $response->getInfo('response_headers')[0]); - - $body = $response->toArray(); - - $this->assertSame('HTTP/1.0', $body['SERVER_PROTOCOL']); - $this->assertSame('GET', $body['REQUEST_METHOD']); - $this->assertSame('/', $body['REQUEST_URI']); - } - - public function testChunkedEncoding() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/chunked'); - - $this->assertSame(['chunked'], $response->getHeaders()['transfer-encoding']); - $this->assertSame('Symfony is awesome!', $response->getContent()); - - $response = $client->request('GET', 'http://localhost:8057/chunked-broken'); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testClientError() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/404'); - - $client->stream($response)->valid(); - - $this->assertSame(404, $response->getInfo('http_code')); - - try { - $response->getHeaders(); - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (ClientExceptionInterface $e) { - } - - try { - $response->getContent(); - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (ClientExceptionInterface $e) { - } - - $this->assertSame(404, $response->getStatusCode()); - $this->assertSame(['application/json'], $response->getHeaders(false)['content-type']); - $this->assertNotEmpty($response->getContent(false)); - - $response = $client->request('GET', 'http://localhost:8057/404'); - - try { - foreach ($client->stream($response) as $chunk) { - $this->assertTrue($chunk->isFirst()); - } - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (ClientExceptionInterface $e) { - } - } - - public function testIgnoreErrors() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/404'); - - $this->assertSame(404, $response->getStatusCode()); - } - - public function testDnsError() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/301/bad-tld'); - - try { - $response->getStatusCode(); - $this->fail(TransportExceptionInterface::class.' expected'); - } catch (TransportExceptionInterface $e) { - $this->addToAssertionCount(1); - } - - try { - $response->getStatusCode(); - $this->fail(TransportExceptionInterface::class.' still expected'); - } catch (TransportExceptionInterface $e) { - $this->addToAssertionCount(1); - } - - $response = $client->request('GET', 'http://localhost:8057/301/bad-tld'); - - try { - foreach ($client->stream($response) as $r => $chunk) { - } - $this->fail(TransportExceptionInterface::class.' expected'); - } catch (TransportExceptionInterface $e) { - $this->addToAssertionCount(1); - } - - $this->assertSame($response, $r); - $this->assertNotNull($chunk->getError()); - - $this->expectException(TransportExceptionInterface::class); - foreach ($client->stream($response) as $chunk) { - } - } - - public function testInlineAuth() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://foo:bar%3Dbar@localhost:8057'); - - $body = $response->toArray(); - - $this->assertSame('foo', $body['PHP_AUTH_USER']); - $this->assertSame('bar=bar', $body['PHP_AUTH_PW']); - } - - public function testBadRequestBody() - { - $client = $this->getHttpClient(__FUNCTION__); - - $this->expectException(TransportExceptionInterface::class); - - $response = $client->request('POST', 'http://localhost:8057/', [ - 'body' => function () { yield []; }, - ]); - - $response->getStatusCode(); - } - - public function test304() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/304', [ - 'headers' => ['If-Match' => '"abc"'], - 'buffer' => false, - ]); - - $this->assertSame(304, $response->getStatusCode()); - $this->assertSame('', $response->getContent(false)); - } - - /** - * @testWith [[]] - * [["Content-Length: 7"]] - */ - public function testRedirects(array $headers = []) - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('POST', 'http://localhost:8057/301', [ - 'auth_basic' => 'foo:bar', - 'headers' => $headers, - 'body' => function () { - yield 'foo=bar'; - }, - ]); - - $body = $response->toArray(); - $this->assertSame('GET', $body['REQUEST_METHOD']); - $this->assertSame('Basic Zm9vOmJhcg==', $body['HTTP_AUTHORIZATION']); - $this->assertSame('http://localhost:8057/', $response->getInfo('url')); - - $this->assertSame(2, $response->getInfo('redirect_count')); - $this->assertNull($response->getInfo('redirect_url')); - - $expected = [ - 'HTTP/1.1 301 Moved Permanently', - 'Location: http://127.0.0.1:8057/302', - 'Content-Type: application/json', - 'HTTP/1.1 302 Found', - 'Location: http://localhost:8057/', - 'Content-Type: application/json', - 'HTTP/1.1 200 OK', - 'Content-Type: application/json', - ]; - - $filteredHeaders = array_values(array_filter($response->getInfo('response_headers'), function ($h) { - return \in_array(substr($h, 0, 4), ['HTTP', 'Loca', 'Cont'], true) && 'Content-Encoding: gzip' !== $h; - })); - - $this->assertSame($expected, $filteredHeaders); - } - - public function testInvalidRedirect() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/301/invalid'); - - $this->assertSame(301, $response->getStatusCode()); - $this->assertSame(['//?foo=bar'], $response->getHeaders(false)['location']); - $this->assertSame(0, $response->getInfo('redirect_count')); - $this->assertNull($response->getInfo('redirect_url')); - - $this->expectException(RedirectionExceptionInterface::class); - $response->getHeaders(); - } - - public function testRelativeRedirects() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/302/relative'); - - $body = $response->toArray(); - - $this->assertSame('/', $body['REQUEST_URI']); - $this->assertNull($response->getInfo('redirect_url')); - - $response = $client->request('GET', 'http://localhost:8057/302/relative', [ - 'max_redirects' => 0, - ]); - - $this->assertSame(302, $response->getStatusCode()); - $this->assertSame('http://localhost:8057/', $response->getInfo('redirect_url')); - } - - public function testRedirect307() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('POST', 'http://localhost:8057/307', [ - 'body' => function () { - yield 'foo=bar'; - }, - 'max_redirects' => 0, - ]); - - $this->assertSame(307, $response->getStatusCode()); - - $response = $client->request('POST', 'http://localhost:8057/307', [ - 'body' => 'foo=bar', - ]); - - $body = $response->toArray(); - - $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $body); - } - - public function testMaxRedirects() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/301', [ - 'max_redirects' => 1, - 'auth_basic' => 'foo:bar', - ]); - - try { - $response->getHeaders(); - $this->fail(RedirectionExceptionInterface::class.' expected'); - } catch (RedirectionExceptionInterface $e) { - } - - $this->assertSame(302, $response->getStatusCode()); - $this->assertSame(1, $response->getInfo('redirect_count')); - $this->assertSame('http://localhost:8057/', $response->getInfo('redirect_url')); - - $expected = [ - 'HTTP/1.1 301 Moved Permanently', - 'Location: http://127.0.0.1:8057/302', - 'Content-Type: application/json', - 'HTTP/1.1 302 Found', - 'Location: http://localhost:8057/', - 'Content-Type: application/json', - ]; - - $filteredHeaders = array_values(array_filter($response->getInfo('response_headers'), function ($h) { - return \in_array(substr($h, 0, 4), ['HTTP', 'Loca', 'Cont'], true); - })); - - $this->assertSame($expected, $filteredHeaders); - } - - public function testStream() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('GET', 'http://localhost:8057'); - $chunks = $client->stream($response); - $result = []; - - foreach ($chunks as $r => $chunk) { - if ($chunk->isTimeout()) { - $result[] = 't'; - } elseif ($chunk->isLast()) { - $result[] = 'l'; - } elseif ($chunk->isFirst()) { - $result[] = 'f'; - } - } - - $this->assertSame($response, $r); - $this->assertSame(['f', 'l'], $result); - - $chunk = null; - $i = 0; - - foreach ($client->stream($response) as $chunk) { - ++$i; - } - - $this->assertSame(1, $i); - $this->assertTrue($chunk->isLast()); - } - - public function testAddToStream() - { - $client = $this->getHttpClient(__FUNCTION__); - - $r1 = $client->request('GET', 'http://localhost:8057'); - - $completed = []; - - $pool = [$r1]; - - while ($pool) { - $chunks = $client->stream($pool); - $pool = []; - - foreach ($chunks as $r => $chunk) { - if (!$chunk->isLast()) { - continue; - } - - if ($r1 === $r) { - $r2 = $client->request('GET', 'http://localhost:8057'); - $pool[] = $r2; - } - - $completed[] = $r; - } - } - - $this->assertSame([$r1, $r2], $completed); - } - - public function testCompleteTypeError() - { - $client = $this->getHttpClient(__FUNCTION__); - - $this->expectException(\TypeError::class); - $client->stream(123); - } - - public function testOnProgress() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('POST', 'http://localhost:8057/post', [ - 'headers' => ['Content-Length' => 14], - 'body' => 'foo=0123456789', - 'on_progress' => function (...$state) use (&$steps) { $steps[] = $state; }, - ]); - - $body = $response->toArray(); - - $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $body); - $this->assertSame([0, 0], \array_slice($steps[0], 0, 2)); - $lastStep = \array_slice($steps, -1)[0]; - $this->assertSame([57, 57], \array_slice($lastStep, 0, 2)); - $this->assertSame('http://localhost:8057/post', $steps[0][2]['url']); - } - - public function testPostJson() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('POST', 'http://localhost:8057/post', [ - 'json' => ['foo' => 'bar'], - ]); - - $body = $response->toArray(); - - $this->assertStringContainsString('json', $body['content-type']); - unset($body['content-type']); - $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $body); - } - - public function testPostArray() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('POST', 'http://localhost:8057/post', [ - 'body' => ['foo' => 'bar'], - ]); - - $this->assertSame(['foo' => 'bar', 'REQUEST_METHOD' => 'POST'], $response->toArray()); - } - - public function testPostResource() - { - $client = $this->getHttpClient(__FUNCTION__); - - $h = fopen('php://temp', 'w+'); - fwrite($h, 'foo=0123456789'); - rewind($h); - - $response = $client->request('POST', 'http://localhost:8057/post', [ - 'body' => $h, - ]); - - $body = $response->toArray(); - - $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $body); - } - - public function testPostCallback() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('POST', 'http://localhost:8057/post', [ - 'body' => function () { - yield 'foo'; - yield ''; - yield '='; - yield '0123456789'; - }, - ]); - - $this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $response->toArray()); - } - - public function testCancel() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-header'); - - $response->cancel(); - $this->expectException(TransportExceptionInterface::class); - $response->getHeaders(); - } - - public function testInfoOnCanceledResponse() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('GET', 'http://localhost:8057/timeout-header'); - - $this->assertFalse($response->getInfo('canceled')); - $response->cancel(); - $this->assertTrue($response->getInfo('canceled')); - } - - public function testCancelInStream() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/404'); - - foreach ($client->stream($response) as $chunk) { - $response->cancel(); - } - - $this->expectException(TransportExceptionInterface::class); - - foreach ($client->stream($response) as $chunk) { - } - } - - public function testOnProgressCancel() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-body', [ - 'on_progress' => function ($dlNow) { - if (0 < $dlNow) { - throw new \Exception('Aborting the request.'); - } - }, - ]); - - try { - foreach ($client->stream([$response]) as $chunk) { - } - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (TransportExceptionInterface $e) { - $this->assertSame('Aborting the request.', $e->getPrevious()->getMessage()); - } - - $this->assertNotNull($response->getInfo('error')); - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testOnProgressError() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-body', [ - 'on_progress' => function ($dlNow) { - if (0 < $dlNow) { - throw new \Error('BUG.'); - } - }, - ]); - - try { - foreach ($client->stream([$response]) as $chunk) { - } - $this->fail('Error expected'); - } catch (\Error $e) { - $this->assertSame('BUG.', $e->getMessage()); - } - - $this->assertNotNull($response->getInfo('error')); - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testResolve() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://symfony.com:8057/', [ - 'resolve' => ['symfony.com' => '127.0.0.1'], - ]); - - $this->assertSame(200, $response->getStatusCode()); - $this->assertSame(200, $client->request('GET', 'http://symfony.com:8057/')->getStatusCode()); - - $response = null; - $this->expectException(TransportExceptionInterface::class); - $client->request('GET', 'http://symfony.com:8057/', ['timeout' => 1]); - } - - public function testIdnResolve() - { - $client = $this->getHttpClient(__FUNCTION__); - - $response = $client->request('GET', 'http://0-------------------------------------------------------------0.com:8057/', [ - 'resolve' => ['0-------------------------------------------------------------0.com' => '127.0.0.1'], - ]); - - $this->assertSame(200, $response->getStatusCode()); - - $response = $client->request('GET', 'http://Bücher.example:8057/', [ - 'resolve' => ['xn--bcher-kva.example' => '127.0.0.1'], - ]); - - $this->assertSame(200, $response->getStatusCode()); - } - - public function testNotATimeout() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-header', [ - 'timeout' => 0.9, - ]); - sleep(1); - $this->assertSame(200, $response->getStatusCode()); - } - - public function testTimeoutOnAccess() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-header', [ - 'timeout' => 0.1, - ]); - - $this->expectException(TransportExceptionInterface::class); - $response->getHeaders(); - } - - public function testTimeoutIsNotAFatalError() - { - usleep(300000); // wait for the previous test to release the server - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-body', [ - 'timeout' => 0.25, - ]); - - try { - $response->getContent(); - $this->fail(TimeoutExceptionInterface::class.' expected'); - } catch (TimeoutExceptionInterface $e) { - } - - for ($i = 0; $i < 10; ++$i) { - try { - $this->assertSame('<1><2>', $response->getContent()); - break; - } catch (TimeoutExceptionInterface $e) { - } - } - - if (10 === $i) { - throw $e; - } - } - - public function testTimeoutOnStream() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-body'); - - $this->assertSame(200, $response->getStatusCode()); - $chunks = $client->stream([$response], 0.2); - - $result = []; - - foreach ($chunks as $r => $chunk) { - if ($chunk->isTimeout()) { - $result[] = 't'; - } else { - $result[] = $chunk->getContent(); - } - } - - $this->assertSame(['<1>', 't'], $result); - - $chunks = $client->stream([$response]); - - foreach ($chunks as $r => $chunk) { - $this->assertSame('<2>', $chunk->getContent()); - $this->assertSame('<1><2>', $r->getContent()); - - return; - } - - $this->fail('The response should have completed'); - } - - public function testUncheckedTimeoutThrows() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/timeout-body'); - $chunks = $client->stream([$response], 0.1); - - $this->expectException(TransportExceptionInterface::class); - - foreach ($chunks as $r => $chunk) { - } - } - - public function testTimeoutWithActiveConcurrentStream() - { - $p1 = TestHttpServer::start(8067); - $p2 = TestHttpServer::start(8077); - - $client = $this->getHttpClient(__FUNCTION__); - $streamingResponse = $client->request('GET', 'http://localhost:8067/max-duration'); - $blockingResponse = $client->request('GET', 'http://localhost:8077/timeout-body', [ - 'timeout' => 0.25, - ]); - - $this->assertSame(200, $streamingResponse->getStatusCode()); - $this->assertSame(200, $blockingResponse->getStatusCode()); - - $this->expectException(TransportExceptionInterface::class); - - try { - $blockingResponse->getContent(); - } finally { - $p1->stop(); - $p2->stop(); - } - } - - public function testTimeoutOnInitialize() - { - $p1 = TestHttpServer::start(8067); - $p2 = TestHttpServer::start(8077); - - $client = $this->getHttpClient(__FUNCTION__); - $start = microtime(true); - $responses = []; - - $responses[] = $client->request('GET', 'http://localhost:8067/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8077/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8067/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8077/timeout-header', ['timeout' => 0.25]); - - try { - foreach ($responses as $response) { - try { - $response->getContent(); - $this->fail(TransportExceptionInterface::class.' expected'); - } catch (TransportExceptionInterface $e) { - } - } - $responses = []; - - $duration = microtime(true) - $start; - - $this->assertLessThan(1.0, $duration); - } finally { - $p1->stop(); - $p2->stop(); - } - } - - public function testTimeoutOnDestruct() - { - $p1 = TestHttpServer::start(8067); - $p2 = TestHttpServer::start(8077); - - $client = $this->getHttpClient(__FUNCTION__); - $start = microtime(true); - $responses = []; - - $responses[] = $client->request('GET', 'http://localhost:8067/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8077/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8067/timeout-header', ['timeout' => 0.25]); - $responses[] = $client->request('GET', 'http://localhost:8077/timeout-header', ['timeout' => 0.25]); - - try { - while ($response = array_shift($responses)) { - try { - unset($response); - $this->fail(TransportExceptionInterface::class.' expected'); - } catch (TransportExceptionInterface $e) { - } - } - - $duration = microtime(true) - $start; - - $this->assertLessThan(1.0, $duration); - } finally { - $p1->stop(); - $p2->stop(); - } - } - - public function testDestruct() - { - $client = $this->getHttpClient(__FUNCTION__); - - $start = microtime(true); - $client->request('GET', 'http://localhost:8057/timeout-long'); - $client = null; - $duration = microtime(true) - $start; - - $this->assertGreaterThan(1, $duration); - $this->assertLessThan(4, $duration); - } - - public function testGetContentAfterDestruct() - { - $client = $this->getHttpClient(__FUNCTION__); - - try { - $client->request('GET', 'http://localhost:8057/404'); - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (ClientExceptionInterface $e) { - $this->assertSame('GET', $e->getResponse()->toArray(false)['REQUEST_METHOD']); - } - } - - public function testGetEncodedContentAfterDestruct() - { - $client = $this->getHttpClient(__FUNCTION__); - - try { - $client->request('GET', 'http://localhost:8057/404-gzipped'); - $this->fail(ClientExceptionInterface::class.' expected'); - } catch (ClientExceptionInterface $e) { - $this->assertSame('some text', $e->getResponse()->getContent(false)); - } - } - - public function testProxy() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/', [ - 'proxy' => 'http://localhost:8057', - ]); - - $body = $response->toArray(); - $this->assertSame('localhost:8057', $body['HTTP_HOST']); - $this->assertMatchesRegularExpression('#^http://(localhost|127\.0\.0\.1):8057/$#', $body['REQUEST_URI']); - - $response = $client->request('GET', 'http://localhost:8057/', [ - 'proxy' => 'http://foo:b%3Dar@localhost:8057', - ]); - - $body = $response->toArray(); - $this->assertSame('Basic Zm9vOmI9YXI=', $body['HTTP_PROXY_AUTHORIZATION']); - - $_SERVER['http_proxy'] = 'http://localhost:8057'; - try { - $response = $client->request('GET', 'http://localhost:8057/'); - $body = $response->toArray(); - $this->assertSame('localhost:8057', $body['HTTP_HOST']); - $this->assertMatchesRegularExpression('#^http://(localhost|127\.0\.0\.1):8057/$#', $body['REQUEST_URI']); - } finally { - unset($_SERVER['http_proxy']); - } - } - - public function testNoProxy() - { - putenv('no_proxy='.$_SERVER['no_proxy'] = 'example.com, localhost'); - - try { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/', [ - 'proxy' => 'http://localhost:8057', - ]); - - $body = $response->toArray(); - - $this->assertSame('HTTP/1.1', $body['SERVER_PROTOCOL']); - $this->assertSame('/', $body['REQUEST_URI']); - $this->assertSame('GET', $body['REQUEST_METHOD']); - } finally { - putenv('no_proxy'); - unset($_SERVER['no_proxy']); - } - } - - /** - * @requires extension zlib - */ - public function testAutoEncodingRequest() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057'); - - $this->assertSame(200, $response->getStatusCode()); - - $headers = $response->getHeaders(); - - $this->assertSame(['Accept-Encoding'], $headers['vary']); - $this->assertStringContainsString('gzip', $headers['content-encoding'][0]); - - $body = $response->toArray(); - - $this->assertStringContainsString('gzip', $body['HTTP_ACCEPT_ENCODING']); - } - - public function testBaseUri() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', '../404', [ - 'base_uri' => 'http://localhost:8057/abc/', - ]); - - $this->assertSame(404, $response->getStatusCode()); - $this->assertSame(['application/json'], $response->getHeaders(false)['content-type']); - } - - public function testQuery() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/?a=a', [ - 'query' => ['b' => 'b'], - ]); - - $body = $response->toArray(); - $this->assertSame('GET', $body['REQUEST_METHOD']); - $this->assertSame('/?a=a&b=b', $body['REQUEST_URI']); - } - - public function testInformationalResponse() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/103'); - - $this->assertSame('Here the body', $response->getContent()); - $this->assertSame(200, $response->getStatusCode()); - } - - public function testInformationalResponseStream() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/103'); - - $chunks = []; - foreach ($client->stream($response) as $chunk) { - $chunks[] = $chunk; - } - - $this->assertSame(103, $chunks[0]->getInformationalStatus()[0]); - $this->assertSame(['</style.css>; rel=preload; as=style', '</script.js>; rel=preload; as=script'], $chunks[0]->getInformationalStatus()[1]['link']); - $this->assertTrue($chunks[1]->isFirst()); - $this->assertSame('Here the body', $chunks[2]->getContent()); - $this->assertTrue($chunks[3]->isLast()); - $this->assertNull($chunks[3]->getInformationalStatus()); - - $this->assertSame(['date', 'content-length'], array_keys($response->getHeaders())); - $this->assertContains('Link: </style.css>; rel=preload; as=style', $response->getInfo('response_headers')); - } - - /** - * @requires extension zlib - */ - public function testUserlandEncodingRequest() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057', [ - 'headers' => ['Accept-Encoding' => 'gzip'], - ]); - - $headers = $response->getHeaders(); - - $this->assertSame(['Accept-Encoding'], $headers['vary']); - $this->assertStringContainsString('gzip', $headers['content-encoding'][0]); - - $body = $response->getContent(); - $this->assertSame("\x1F", $body[0]); - - $body = json_decode(gzdecode($body), true); - $this->assertSame('gzip', $body['HTTP_ACCEPT_ENCODING']); - } - - /** - * @requires extension zlib - */ - public function testGzipBroken() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/gzip-broken'); - - $this->expectException(TransportExceptionInterface::class); - $response->getContent(); - } - - public function testMaxDuration() - { - $client = $this->getHttpClient(__FUNCTION__); - $response = $client->request('GET', 'http://localhost:8057/max-duration', [ - 'max_duration' => 0.1, - ]); - - $start = microtime(true); - - try { - $response->getContent(); - } catch (TransportExceptionInterface $e) { - $this->addToAssertionCount(1); - } - - $duration = microtime(true) - $start; - - $this->assertLessThan(10, $duration); - } - - public function testWithOptions() - { - $client = $this->getHttpClient(__FUNCTION__); - if (!method_exists($client, 'withOptions')) { - $this->markTestSkipped(sprintf('Not implementing "%s::withOptions()" is deprecated.', get_debug_type($client))); - } - - $client2 = $client->withOptions(['base_uri' => 'http://localhost:8057/']); - - $this->assertNotSame($client, $client2); - $this->assertSame(\get_class($client), \get_class($client2)); - - $response = $client2->request('GET', '/'); - $this->assertSame(200, $response->getStatusCode()); - } -} diff --git a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php b/vendor/symfony/http-client-contracts/Test/TestHttpServer.php deleted file mode 100644 index 55a744aef..000000000 --- a/vendor/symfony/http-client-contracts/Test/TestHttpServer.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Contracts\HttpClient\Test; - -use Symfony\Component\Process\PhpExecutableFinder; -use Symfony\Component\Process\Process; - -class TestHttpServer -{ - private static $process = []; - - /** - * @return Process - */ - public static function start(int $port = 8057) - { - if (isset(self::$process[$port])) { - self::$process[$port]->stop(); - } else { - register_shutdown_function(static function () use ($port) { - self::$process[$port]->stop(); - }); - } - - $finder = new PhpExecutableFinder(); - $process = new Process(array_merge([$finder->find(false)], $finder->findArguments(), ['-dopcache.enable=0', '-dvariables_order=EGPCS', '-S', '127.0.0.1:'.$port])); - $process->setWorkingDirectory(__DIR__.'/Fixtures/web'); - $process->start(); - self::$process[$port] = $process; - - do { - usleep(50000); - } while (!@fopen('http://127.0.0.1:'.$port, 'r')); - - return $process; - } -} diff --git a/vendor/symfony/http-client-contracts/composer.json b/vendor/symfony/http-client-contracts/composer.json deleted file mode 100644 index b76cab852..000000000 --- a/vendor/symfony/http-client-contracts/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "symfony/http-client-contracts", - "type": "library", - "description": "Generic abstractions related to HTTP clients", - "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "autoload": { - "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" } - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/vendor/symfony/http-foundation/AcceptHeader.php b/vendor/symfony/http-foundation/AcceptHeader.php index c3c8d0c35..057c6b530 100644 --- a/vendor/symfony/http-foundation/AcceptHeader.php +++ b/vendor/symfony/http-foundation/AcceptHeader.php @@ -47,15 +47,13 @@ class AcceptHeader /** * Builds an AcceptHeader instance from a string. * - * @param string $headerValue - * * @return self */ - public static function fromString($headerValue) + public static function fromString(?string $headerValue) { $index = 0; - $parts = HeaderUtils::split((string) $headerValue, ',;='); + $parts = HeaderUtils::split($headerValue ?? '', ',;='); return new self(array_map(function ($subParts) use (&$index) { $part = array_shift($subParts); @@ -81,11 +79,9 @@ class AcceptHeader /** * Tests if header has given value. * - * @param string $value - * * @return bool */ - public function has($value) + public function has(string $value) { return isset($this->items[$value]); } @@ -93,11 +89,9 @@ class AcceptHeader /** * Returns given value's item, if exists. * - * @param string $value - * * @return AcceptHeaderItem|null */ - public function get($value) + public function get(string $value) { return $this->items[$value] ?? $this->items[explode('/', $value)[0].'/*'] ?? $this->items['*/*'] ?? $this->items['*'] ?? null; } @@ -130,11 +124,9 @@ class AcceptHeader /** * Filters items on their value using given regex. * - * @param string $pattern - * * @return self */ - public function filter($pattern) + public function filter(string $pattern) { return new self(array_filter($this->items, function (AcceptHeaderItem $item) use ($pattern) { return preg_match($pattern, $item->getValue()); diff --git a/vendor/symfony/http-foundation/AcceptHeaderItem.php b/vendor/symfony/http-foundation/AcceptHeaderItem.php index 7d01c8f5d..8b86eee67 100644 --- a/vendor/symfony/http-foundation/AcceptHeaderItem.php +++ b/vendor/symfony/http-foundation/AcceptHeaderItem.php @@ -34,13 +34,11 @@ class AcceptHeaderItem /** * Builds an AcceptHeaderInstance instance from a string. * - * @param string $itemValue - * * @return self */ - public static function fromString($itemValue) + public static function fromString(?string $itemValue) { - $parts = HeaderUtils::split($itemValue, ';='); + $parts = HeaderUtils::split($itemValue ?? '', ';='); $part = array_shift($parts); $attributes = HeaderUtils::combine($parts); @@ -66,11 +64,9 @@ class AcceptHeaderItem /** * Set the item value. * - * @param string $value - * * @return $this */ - public function setValue($value) + public function setValue(string $value) { $this->value = $value; @@ -90,11 +86,9 @@ class AcceptHeaderItem /** * Set the item quality. * - * @param float $quality - * * @return $this */ - public function setQuality($quality) + public function setQuality(float $quality) { $this->quality = $quality; @@ -114,11 +108,9 @@ class AcceptHeaderItem /** * Set the item index. * - * @param int $index - * * @return $this */ - public function setIndex($index) + public function setIndex(int $index) { $this->index = $index; @@ -138,11 +130,9 @@ class AcceptHeaderItem /** * Tests if an attribute exists. * - * @param string $name - * * @return bool */ - public function hasAttribute($name) + public function hasAttribute(string $name) { return isset($this->attributes[$name]); } @@ -150,12 +140,11 @@ class AcceptHeaderItem /** * Returns an attribute by its name. * - * @param string $name - * @param mixed $default + * @param mixed $default * * @return mixed */ - public function getAttribute($name, $default = null) + public function getAttribute(string $name, $default = null) { return $this->attributes[$name] ?? $default; } @@ -173,17 +162,14 @@ class AcceptHeaderItem /** * Set an attribute. * - * @param string $name - * @param string $value - * * @return $this */ - public function setAttribute($name, $value) + public function setAttribute(string $name, string $value) { if ('q' === $name) { $this->quality = (float) $value; } else { - $this->attributes[$name] = (string) $value; + $this->attributes[$name] = $value; } return $this; diff --git a/vendor/symfony/http-foundation/ApacheRequest.php b/vendor/symfony/http-foundation/ApacheRequest.php deleted file mode 100644 index a060d628f..000000000 --- a/vendor/symfony/http-foundation/ApacheRequest.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ApacheRequest::class, Request::class), \E_USER_DEPRECATED); - -/** - * Request represents an HTTP request from an Apache server. - * - * @deprecated since Symfony 4.4. Use the Request class instead. - * - * @author Fabien Potencier <fabien@symfony.com> - */ -class ApacheRequest extends Request -{ - /** - * {@inheritdoc} - */ - protected function prepareRequestUri() - { - return $this->server->get('REQUEST_URI'); - } - - /** - * {@inheritdoc} - */ - protected function prepareBaseUrl() - { - $baseUrl = $this->server->get('SCRIPT_NAME'); - - if (!str_contains($this->server->get('REQUEST_URI'), $baseUrl)) { - // assume mod_rewrite - return rtrim(\dirname($baseUrl), '/\\'); - } - - return $baseUrl; - } -} diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php index 1842256a3..6d7b80ad1 100644 --- a/vendor/symfony/http-foundation/BinaryFileResponse.php +++ b/vendor/symfony/http-foundation/BinaryFileResponse.php @@ -66,25 +66,26 @@ class BinaryFileResponse extends Response * @param bool $autoLastModified Whether the Last-Modified header should be automatically set * * @return static + * + * @deprecated since Symfony 5.2, use __construct() instead. */ - public static function create($file = null, $status = 200, $headers = [], $public = true, $contentDisposition = null, $autoEtag = false, $autoLastModified = true) + public static function create($file = null, int $status = 200, array $headers = [], bool $public = true, string $contentDisposition = null, bool $autoEtag = false, bool $autoLastModified = true) { + trigger_deprecation('symfony/http-foundation', '5.2', 'The "%s()" method is deprecated, use "new %s()" instead.', __METHOD__, static::class); + return new static($file, $status, $headers, $public, $contentDisposition, $autoEtag, $autoLastModified); } /** * Sets the file to stream. * - * @param \SplFileInfo|string $file The file to stream - * @param string $contentDisposition - * @param bool $autoEtag - * @param bool $autoLastModified + * @param \SplFileInfo|string $file The file to stream * * @return $this * * @throws FileException */ - public function setFile($file, $contentDisposition = null, $autoEtag = false, $autoLastModified = true) + public function setFile($file, string $contentDisposition = null, bool $autoEtag = false, bool $autoLastModified = true) { if (!$file instanceof File) { if ($file instanceof \SplFileInfo) { @@ -118,7 +119,7 @@ class BinaryFileResponse extends Response /** * Gets the file. * - * @return File The file to stream + * @return File */ public function getFile() { @@ -143,6 +144,8 @@ class BinaryFileResponse extends Response /** * Automatically sets the Last-Modified header according the file modification date. + * + * @return $this */ public function setAutoLastModified() { @@ -153,6 +156,8 @@ class BinaryFileResponse extends Response /** * Automatically sets the ETag header according to the checksum of the file. + * + * @return $this */ public function setAutoEtag() { @@ -170,7 +175,7 @@ class BinaryFileResponse extends Response * * @return $this */ - public function setContentDisposition($disposition, $filename = '', $filenameFallback = '') + public function setContentDisposition(string $disposition, string $filename = '', string $filenameFallback = '') { if ('' === $filename) { $filename = $this->file->getFilename(); @@ -312,8 +317,6 @@ class BinaryFileResponse extends Response } /** - * Sends the file. - * * {@inheritdoc} */ public function sendContent() @@ -351,7 +354,7 @@ class BinaryFileResponse extends Response fclose($out); fclose($file); } finally { - if ($this->deleteFileAfterSend && file_exists($this->file->getPathname())) { + if ($this->deleteFileAfterSend && is_file($this->file->getPathname())) { unlink($this->file->getPathname()); } } @@ -364,7 +367,7 @@ class BinaryFileResponse extends Response * * @throws \LogicException when the content is not null */ - public function setContent($content) + public function setContent(?string $content) { if (null !== $content) { throw new \LogicException('The content cannot be set on a BinaryFileResponse instance.'); @@ -393,11 +396,9 @@ class BinaryFileResponse extends Response * If this is set to true, the file will be unlinked after the request is sent * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used. * - * @param bool $shouldDelete - * * @return $this */ - public function deleteFileAfterSend($shouldDelete = true) + public function deleteFileAfterSend(bool $shouldDelete = true) { $this->deleteFileAfterSend = $shouldDelete; diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md index 3fa73a26a..ad7607add 100644 --- a/vendor/symfony/http-foundation/CHANGELOG.md +++ b/vendor/symfony/http-foundation/CHANGELOG.md @@ -1,6 +1,65 @@ CHANGELOG ========= +5.4 +--- + + * Deprecate passing `null` as `$requestIp` to `IpUtils::__checkIp()`, `IpUtils::__checkIp4()` or `IpUtils::__checkIp6()`, pass an empty string instead. + * Add the `litespeed_finish_request` method to work with Litespeed + * Deprecate `upload_progress.*` and `url_rewriter.tags` session options + * Allow setting session options via DSN + +5.3 +--- + + * Add the `SessionFactory`, `NativeSessionStorageFactory`, `PhpBridgeSessionStorageFactory` and `MockFileSessionStorageFactory` classes + * Calling `Request::getSession()` when there is no available session throws a `SessionNotFoundException` + * Add the `RequestStack::getSession` method + * Deprecate the `NamespacedAttributeBag` class + * Add `ResponseFormatSame` PHPUnit constraint + * Deprecate the `RequestStack::getMasterRequest()` method and add `getMainRequest()` as replacement + +5.2.0 +----- + + * added support for `X-Forwarded-Prefix` header + * added `HeaderUtils::parseQuery()`: it does the same as `parse_str()` but preserves dots in variable names + * added `File::getContent()` + * added ability to use comma separated ip addresses for `RequestMatcher::matchIps()` + * added `Request::toArray()` to parse a JSON request body to an array + * added `RateLimiter\RequestRateLimiterInterface` and `RateLimiter\AbstractRequestRateLimiter` + * deprecated not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()`; wrap your filter in a closure instead. + * Deprecated the `Request::HEADER_X_FORWARDED_ALL` constant, use either `HEADER_X_FORWARDED_FOR | HEADER_X_FORWARDED_HOST | HEADER_X_FORWARDED_PORT | HEADER_X_FORWARDED_PROTO` or `HEADER_X_FORWARDED_AWS_ELB` or `HEADER_X_FORWARDED_TRAEFIK` constants instead. + * Deprecated `BinaryFileResponse::create()`, use `__construct()` instead + +5.1.0 +----- + + * added `Cookie::withValue`, `Cookie::withDomain`, `Cookie::withExpires`, + `Cookie::withPath`, `Cookie::withSecure`, `Cookie::withHttpOnly`, + `Cookie::withRaw`, `Cookie::withSameSite` + * Deprecate `Response::create()`, `JsonResponse::create()`, + `RedirectResponse::create()`, and `StreamedResponse::create()` methods (use + `__construct()` instead) + * added `Request::preferSafeContent()` and `Response::setContentSafe()` to handle "safe" HTTP preference + according to [RFC 8674](https://tools.ietf.org/html/rfc8674) + * made the Mime component an optional dependency + * added `MarshallingSessionHandler`, `IdentityMarshaller` + * made `Session` accept a callback to report when the session is being used + * Add support for all core cache control directives + * Added `Symfony\Component\HttpFoundation\InputBag` + * Deprecated retrieving non-string values using `InputBag::get()`, use `InputBag::all()` if you need access to the collection of values + +5.0.0 +----- + + * made `Cookie` auto-secure and lax by default + * removed classes in the `MimeType` namespace, use the Symfony Mime component instead + * removed method `UploadedFile::getClientSize()` and the related constructor argument + * made `Request::getSession()` throw if the session has not been set before + * removed `Response::HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL` + * passing a null url when instantiating a `RedirectResponse` is not allowed + 4.4.0 ----- diff --git a/vendor/symfony/http-foundation/Cookie.php b/vendor/symfony/http-foundation/Cookie.php index c2fba7f85..b4b26c015 100644 --- a/vendor/symfony/http-foundation/Cookie.php +++ b/vendor/symfony/http-foundation/Cookie.php @@ -34,19 +34,16 @@ class Cookie private $sameSite; private $secureDefault = false; - private static $reservedCharsList = "=,; \t\r\n\v\f"; + private const RESERVED_CHARS_LIST = "=,; \t\r\n\v\f"; private const RESERVED_CHARS_FROM = ['=', ',', ';', ' ', "\t", "\r", "\n", "\v", "\f"]; private const RESERVED_CHARS_TO = ['%3D', '%2C', '%3B', '%20', '%09', '%0D', '%0A', '%0B', '%0C']; /** * Creates cookie from raw header string. * - * @param string $cookie - * @param bool $decode - * * @return static */ - public static function fromString($cookie, $decode = false) + public static function fromString(string $cookie, bool $decode = false) { $data = [ 'expires' => 0, @@ -65,8 +62,9 @@ class Cookie $value = isset($part[1]) ? ($decode ? urldecode($part[1]) : $part[1]) : null; $data = HeaderUtils::combine($parts) + $data; + $data['expires'] = self::expiresTimestamp($data['expires']); - if (isset($data['max-age'])) { + if (isset($data['max-age']) && ($data['max-age'] > 0 || $data['expires'] > time())) { $data['expires'] = time() + (int) $data['max-age']; } @@ -91,14 +89,10 @@ class Cookie * * @throws \InvalidArgumentException */ - public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, ?bool $secure = false, bool $httpOnly = true, bool $raw = false, string $sameSite = null) + public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, bool $secure = null, bool $httpOnly = true, bool $raw = false, ?string $sameSite = 'lax') { - if (9 > \func_num_args()) { - @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), \E_USER_DEPRECATED); - } - // from PHP source code - if ($raw && false !== strpbrk($name, self::$reservedCharsList)) { + if ($raw && false !== strpbrk($name, self::RESERVED_CHARS_LIST)) { throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $name)); } @@ -106,6 +100,65 @@ class Cookie throw new \InvalidArgumentException('The cookie name cannot be empty.'); } + $this->name = $name; + $this->value = $value; + $this->domain = $domain; + $this->expire = self::expiresTimestamp($expire); + $this->path = empty($path) ? '/' : $path; + $this->secure = $secure; + $this->httpOnly = $httpOnly; + $this->raw = $raw; + $this->sameSite = $this->withSameSite($sameSite)->sameSite; + } + + /** + * Creates a cookie copy with a new value. + * + * @return static + */ + public function withValue(?string $value): self + { + $cookie = clone $this; + $cookie->value = $value; + + return $cookie; + } + + /** + * Creates a cookie copy with a new domain that the cookie is available to. + * + * @return static + */ + public function withDomain(?string $domain): self + { + $cookie = clone $this; + $cookie->domain = $domain; + + return $cookie; + } + + /** + * Creates a cookie copy with a new time the cookie expires. + * + * @param int|string|\DateTimeInterface $expire + * + * @return static + */ + public function withExpires($expire = 0): self + { + $cookie = clone $this; + $cookie->expire = self::expiresTimestamp($expire); + + return $cookie; + } + + /** + * Converts expires formats to a unix timestamp. + * + * @param int|string|\DateTimeInterface $expire + */ + private static function expiresTimestamp($expire = 0): int + { // convert expiration time to a Unix timestamp if ($expire instanceof \DateTimeInterface) { $expire = $expire->format('U'); @@ -117,15 +170,72 @@ class Cookie } } - $this->name = $name; - $this->value = $value; - $this->domain = $domain; - $this->expire = 0 < $expire ? (int) $expire : 0; - $this->path = empty($path) ? '/' : $path; - $this->secure = $secure; - $this->httpOnly = $httpOnly; - $this->raw = $raw; + return 0 < $expire ? (int) $expire : 0; + } + /** + * Creates a cookie copy with a new path on the server in which the cookie will be available on. + * + * @return static + */ + public function withPath(string $path): self + { + $cookie = clone $this; + $cookie->path = '' === $path ? '/' : $path; + + return $cookie; + } + + /** + * Creates a cookie copy that only be transmitted over a secure HTTPS connection from the client. + * + * @return static + */ + public function withSecure(bool $secure = true): self + { + $cookie = clone $this; + $cookie->secure = $secure; + + return $cookie; + } + + /** + * Creates a cookie copy that be accessible only through the HTTP protocol. + * + * @return static + */ + public function withHttpOnly(bool $httpOnly = true): self + { + $cookie = clone $this; + $cookie->httpOnly = $httpOnly; + + return $cookie; + } + + /** + * Creates a cookie copy that uses no url encoding. + * + * @return static + */ + public function withRaw(bool $raw = true): self + { + if ($raw && false !== strpbrk($this->name, self::RESERVED_CHARS_LIST)) { + throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $this->name)); + } + + $cookie = clone $this; + $cookie->raw = $raw; + + return $cookie; + } + + /** + * Creates a cookie copy with SameSite attribute. + * + * @return static + */ + public function withSameSite(?string $sameSite): self + { if ('' === $sameSite) { $sameSite = null; } elseif (null !== $sameSite) { @@ -136,13 +246,16 @@ class Cookie throw new \InvalidArgumentException('The "sameSite" parameter value is not valid.'); } - $this->sameSite = $sameSite; + $cookie = clone $this; + $cookie->sameSite = $sameSite; + + return $cookie; } /** * Returns the cookie as a string. * - * @return string The cookie + * @return string */ public function __toString() { diff --git a/vendor/symfony/http-foundation/Exception/BadRequestException.php b/vendor/symfony/http-foundation/Exception/BadRequestException.php new file mode 100644 index 000000000..e4bb309c4 --- /dev/null +++ b/vendor/symfony/http-foundation/Exception/BadRequestException.php @@ -0,0 +1,19 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Exception; + +/** + * Raised when a user sends a malformed request. + */ +class BadRequestException extends \UnexpectedValueException implements RequestExceptionInterface +{ +} diff --git a/vendor/symfony/http-foundation/Exception/JsonException.php b/vendor/symfony/http-foundation/Exception/JsonException.php new file mode 100644 index 000000000..5990e760e --- /dev/null +++ b/vendor/symfony/http-foundation/Exception/JsonException.php @@ -0,0 +1,21 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Exception; + +/** + * Thrown by Request::toArray() when the content cannot be JSON-decoded. + * + * @author Tobias Nyholm <tobias.nyholm@gmail.com> + */ +final class JsonException extends \UnexpectedValueException implements RequestExceptionInterface +{ +} diff --git a/vendor/symfony/http-foundation/Exception/SessionNotFoundException.php b/vendor/symfony/http-foundation/Exception/SessionNotFoundException.php new file mode 100644 index 000000000..94b0cb69a --- /dev/null +++ b/vendor/symfony/http-foundation/Exception/SessionNotFoundException.php @@ -0,0 +1,27 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Exception; + +/** + * Raised when a session does not exist. This happens in the following cases: + * - the session is not enabled + * - attempt to read a session outside a request context (ie. cli script). + * + * @author Jérémy Derussé <jeremy@derusse.com> + */ +class SessionNotFoundException extends \LogicException implements RequestExceptionInterface +{ + public function __construct(string $message = 'There is currently no session available.', int $code = 0, \Throwable $previous = null) + { + parent::__construct($message, $code, $previous); + } +} diff --git a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php b/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php index 82b982b37..8533f99a8 100644 --- a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php +++ b/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php @@ -15,6 +15,6 @@ class UnexpectedTypeException extends FileException { public function __construct($value, string $expectedType) { - parent::__construct(sprintf('Expected argument of type %s, %s given', $expectedType, \is_object($value) ? \get_class($value) : \gettype($value))); + parent::__construct(sprintf('Expected argument of type %s, %s given', $expectedType, get_debug_type($value))); } } diff --git a/vendor/symfony/http-foundation/File/File.php b/vendor/symfony/http-foundation/File/File.php index c72a6d991..d941577d2 100644 --- a/vendor/symfony/http-foundation/File/File.php +++ b/vendor/symfony/http-foundation/File/File.php @@ -47,13 +47,17 @@ class File extends \SplFileInfo * This method uses the mime type as guessed by getMimeType() * to guess the file extension. * - * @return string|null The guessed extension or null if it cannot be guessed + * @return string|null * * @see MimeTypes * @see getMimeType() */ public function guessExtension() { + if (!class_exists(MimeTypes::class)) { + throw new \LogicException('You cannot guess the extension as the Mime component is not installed. Try running "composer require symfony/mime".'); + } + return MimeTypes::getDefault()->getExtensions($this->getMimeType())[0] ?? null; } @@ -64,32 +68,36 @@ class File extends \SplFileInfo * which uses finfo_file() then the "file" system binary, * depending on which of those are available. * - * @return string|null The guessed mime type (e.g. "application/pdf") + * @return string|null * * @see MimeTypes */ public function getMimeType() { + if (!class_exists(MimeTypes::class)) { + throw new \LogicException('You cannot guess the mime type as the Mime component is not installed. Try running "composer require symfony/mime".'); + } + return MimeTypes::getDefault()->guessMimeType($this->getPathname()); } /** * Moves the file to a new location. * - * @param string $directory The destination folder - * @param string $name The new file name - * - * @return self A File object representing the new file + * @return self * * @throws FileException if the target file could not be created */ - public function move($directory, $name = null) + public function move(string $directory, string $name = null) { $target = $this->getTargetFile($directory, $name); set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); - $renamed = rename($this->getPathname(), $target); - restore_error_handler(); + try { + $renamed = rename($this->getPathname(), $target); + } finally { + restore_error_handler(); + } if (!$renamed) { throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); } @@ -99,10 +107,21 @@ class File extends \SplFileInfo return $target; } + public function getContent(): string + { + $content = file_get_contents($this->getPathname()); + + if (false === $content) { + throw new FileException(sprintf('Could not get the content of the file "%s".', $this->getPathname())); + } + + return $content; + } + /** * @return self */ - protected function getTargetFile($directory, $name = null) + protected function getTargetFile(string $directory, string $name = null) { if (!is_dir($directory)) { if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) { @@ -120,11 +139,9 @@ class File extends \SplFileInfo /** * Returns locale independent base name of the given path. * - * @param string $name The new file name - * * @return string */ - protected function getName($name) + protected function getName(string $name) { $originalName = str_replace('\\', '/', $name); $pos = strrpos($originalName, '/'); diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php deleted file mode 100644 index f35bb37bf..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\Mime\MimeTypes; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED); - -/** - * A singleton mime type to file extension guesser. - * - * A default guesser is provided. - * You can register custom guessers by calling the register() - * method on the singleton instance: - * - * $guesser = ExtensionGuesser::getInstance(); - * $guesser->register(new MyCustomExtensionGuesser()); - * - * The last registered guesser is preferred over previously registered ones. - * - * @deprecated since Symfony 4.3, use {@link MimeTypes} instead - */ -class ExtensionGuesser implements ExtensionGuesserInterface -{ - /** - * The singleton instance. - * - * @var ExtensionGuesser - */ - private static $instance = null; - - /** - * All registered ExtensionGuesserInterface instances. - * - * @var array - */ - protected $guessers = []; - - /** - * Returns the singleton instance. - * - * @return self - */ - public static function getInstance() - { - if (null === self::$instance) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Registers all natively provided extension guessers. - */ - private function __construct() - { - $this->register(new MimeTypeExtensionGuesser()); - } - - /** - * Registers a new extension guesser. - * - * When guessing, this guesser is preferred over previously registered ones. - */ - public function register(ExtensionGuesserInterface $guesser) - { - array_unshift($this->guessers, $guesser); - } - - /** - * Tries to guess the extension. - * - * The mime type is passed to each registered mime type guesser in reverse order - * of their registration (last registered is queried first). Once a guesser - * returns a value that is not NULL, this method terminates and returns the - * value. - * - * @param string $mimeType The mime type - * - * @return string The guessed extension or NULL, if none could be guessed - */ - public function guess($mimeType) - { - foreach ($this->guessers as $guesser) { - if (null !== $extension = $guesser->guess($mimeType)) { - return $extension; - } - } - - return null; - } -} diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php deleted file mode 100644 index 69fe6efb2..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\Mime\MimeTypesInterface; - -/** - * Guesses the file extension corresponding to a given mime type. - * - * @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead - */ -interface ExtensionGuesserInterface -{ - /** - * Makes a best guess for a file extension, given a mime type. - * - * @param string $mimeType The mime type - * - * @return string The guessed extension or NULL, if none could be guessed - */ - public function guess($mimeType); -} diff --git a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php deleted file mode 100644 index 4ee5eef44..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; -use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; -use Symfony\Component\Mime\FileBinaryMimeTypeGuesser as NewFileBinaryMimeTypeGuesser; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), \E_USER_DEPRECATED); - -/** - * Guesses the mime type with the binary "file" (only available on *nix). - * - * @author Bernhard Schussek <bschussek@gmail.com> - * - * @deprecated since Symfony 4.3, use {@link NewFileBinaryMimeTypeGuesser} instead - */ -class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface -{ - private $cmd; - - /** - * The $cmd pattern must contain a "%s" string that will be replaced - * with the file name to guess. - * - * The command output must start with the mime type of the file. - * - * @param string $cmd The command to run to get the mime type of a file - */ - public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null') - { - $this->cmd = $cmd; - } - - /** - * Returns whether this guesser is supported on the current OS. - * - * @return bool - */ - public static function isSupported() - { - static $supported = null; - - if (null !== $supported) { - return $supported; - } - - if ('\\' === \DIRECTORY_SEPARATOR || !\function_exists('passthru') || !\function_exists('escapeshellarg')) { - return $supported = false; - } - - ob_start(); - passthru('command -v file', $exitStatus); - $binPath = trim(ob_get_clean()); - - return $supported = 0 === $exitStatus && '' !== $binPath; - } - - /** - * {@inheritdoc} - */ - public function guess($path) - { - if (!is_file($path)) { - throw new FileNotFoundException($path); - } - - if (!is_readable($path)) { - throw new AccessDeniedException($path); - } - - if (!self::isSupported()) { - return null; - } - - ob_start(); - - // need to use --mime instead of -i. see #6641 - passthru(sprintf($this->cmd, escapeshellarg((str_starts_with($path, '-') ? './' : '').$path)), $return); - if ($return > 0) { - ob_end_clean(); - - return null; - } - - $type = trim(ob_get_clean()); - - if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) { - // it's not a type, but an error message - return null; - } - - return $match[1]; - } -} diff --git a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php deleted file mode 100644 index 658ad607e..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; -use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; -use Symfony\Component\Mime\FileinfoMimeTypeGuesser as NewFileinfoMimeTypeGuesser; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), \E_USER_DEPRECATED); - -/** - * Guesses the mime type using the PECL extension FileInfo. - * - * @author Bernhard Schussek <bschussek@gmail.com> - * - * @deprecated since Symfony 4.3, use {@link NewFileinfoMimeTypeGuesser} instead - */ -class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface -{ - private $magicFile; - - /** - * @param string $magicFile A magic file to use with the finfo instance - * - * @see https://php.net/finfo-open - */ - public function __construct(string $magicFile = null) - { - $this->magicFile = $magicFile; - } - - /** - * Returns whether this guesser is supported on the current OS/PHP setup. - * - * @return bool - */ - public static function isSupported() - { - return \function_exists('finfo_open'); - } - - /** - * {@inheritdoc} - */ - public function guess($path) - { - if (!is_file($path)) { - throw new FileNotFoundException($path); - } - - if (!is_readable($path)) { - throw new AccessDeniedException($path); - } - - if (!self::isSupported()) { - return null; - } - - if (!$finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) { - return null; - } - $mimeType = $finfo->file($path); - - if ($mimeType && 0 === (\strlen($mimeType) % 2)) { - $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1); - $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType; - } - - return $mimeType; - } -} diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php deleted file mode 100644 index bab96fa24..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php +++ /dev/null @@ -1,826 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\Mime\MimeTypes; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED); - -/** - * Provides a best-guess mapping of mime type to file extension. - * - * @deprecated since Symfony 4.3, use {@link MimeTypes} instead - */ -class MimeTypeExtensionGuesser implements ExtensionGuesserInterface -{ - /** - * A map of mime types and their default extensions. - * - * This list has been placed under the public domain by the Apache HTTPD project. - * This list has been updated from upstream on 2019-01-14. - * - * @see https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - */ - protected $defaultExtensions = [ - 'application/andrew-inset' => 'ez', - 'application/applixware' => 'aw', - 'application/atom+xml' => 'atom', - 'application/atomcat+xml' => 'atomcat', - 'application/atomsvc+xml' => 'atomsvc', - 'application/ccxml+xml' => 'ccxml', - 'application/cdmi-capability' => 'cdmia', - 'application/cdmi-container' => 'cdmic', - 'application/cdmi-domain' => 'cdmid', - 'application/cdmi-object' => 'cdmio', - 'application/cdmi-queue' => 'cdmiq', - 'application/cu-seeme' => 'cu', - 'application/davmount+xml' => 'davmount', - 'application/docbook+xml' => 'dbk', - 'application/dssc+der' => 'dssc', - 'application/dssc+xml' => 'xdssc', - 'application/ecmascript' => 'ecma', - 'application/emma+xml' => 'emma', - 'application/epub+zip' => 'epub', - 'application/exi' => 'exi', - 'application/font-tdpfr' => 'pfr', - 'application/gml+xml' => 'gml', - 'application/gpx+xml' => 'gpx', - 'application/gxf' => 'gxf', - 'application/hyperstudio' => 'stk', - 'application/inkml+xml' => 'ink', - 'application/ipfix' => 'ipfix', - 'application/java-archive' => 'jar', - 'application/java-serialized-object' => 'ser', - 'application/java-vm' => 'class', - 'application/javascript' => 'js', - 'application/json' => 'json', - 'application/jsonml+json' => 'jsonml', - 'application/lost+xml' => 'lostxml', - 'application/mac-binhex40' => 'hqx', - 'application/mac-compactpro' => 'cpt', - 'application/mads+xml' => 'mads', - 'application/marc' => 'mrc', - 'application/marcxml+xml' => 'mrcx', - 'application/mathematica' => 'ma', - 'application/mathml+xml' => 'mathml', - 'application/mbox' => 'mbox', - 'application/mediaservercontrol+xml' => 'mscml', - 'application/metalink+xml' => 'metalink', - 'application/metalink4+xml' => 'meta4', - 'application/mets+xml' => 'mets', - 'application/mods+xml' => 'mods', - 'application/mp21' => 'm21', - 'application/mp4' => 'mp4s', - 'application/msword' => 'doc', - 'application/mxf' => 'mxf', - 'application/octet-stream' => 'bin', - 'application/oda' => 'oda', - 'application/oebps-package+xml' => 'opf', - 'application/ogg' => 'ogx', - 'application/omdoc+xml' => 'omdoc', - 'application/onenote' => 'onetoc', - 'application/oxps' => 'oxps', - 'application/patch-ops-error+xml' => 'xer', - 'application/pdf' => 'pdf', - 'application/pgp-encrypted' => 'pgp', - 'application/pgp-signature' => 'asc', - 'application/pics-rules' => 'prf', - 'application/pkcs10' => 'p10', - 'application/pkcs7-mime' => 'p7m', - 'application/pkcs7-signature' => 'p7s', - 'application/pkcs8' => 'p8', - 'application/pkix-attr-cert' => 'ac', - 'application/pkix-cert' => 'cer', - 'application/pkix-crl' => 'crl', - 'application/pkix-pkipath' => 'pkipath', - 'application/pkixcmp' => 'pki', - 'application/pls+xml' => 'pls', - 'application/postscript' => 'ai', - 'application/prs.cww' => 'cww', - 'application/pskc+xml' => 'pskcxml', - 'application/rdf+xml' => 'rdf', - 'application/reginfo+xml' => 'rif', - 'application/relax-ng-compact-syntax' => 'rnc', - 'application/resource-lists+xml' => 'rl', - 'application/resource-lists-diff+xml' => 'rld', - 'application/rls-services+xml' => 'rs', - 'application/rpki-ghostbusters' => 'gbr', - 'application/rpki-manifest' => 'mft', - 'application/rpki-roa' => 'roa', - 'application/rsd+xml' => 'rsd', - 'application/rss+xml' => 'rss', - 'application/rtf' => 'rtf', - 'application/sbml+xml' => 'sbml', - 'application/scvp-cv-request' => 'scq', - 'application/scvp-cv-response' => 'scs', - 'application/scvp-vp-request' => 'spq', - 'application/scvp-vp-response' => 'spp', - 'application/sdp' => 'sdp', - 'application/set-payment-initiation' => 'setpay', - 'application/set-registration-initiation' => 'setreg', - 'application/shf+xml' => 'shf', - 'application/smil+xml' => 'smi', - 'application/sparql-query' => 'rq', - 'application/sparql-results+xml' => 'srx', - 'application/srgs' => 'gram', - 'application/srgs+xml' => 'grxml', - 'application/sru+xml' => 'sru', - 'application/ssdl+xml' => 'ssdl', - 'application/ssml+xml' => 'ssml', - 'application/tei+xml' => 'tei', - 'application/thraud+xml' => 'tfi', - 'application/timestamped-data' => 'tsd', - 'application/vnd.3gpp.pic-bw-large' => 'plb', - 'application/vnd.3gpp.pic-bw-small' => 'psb', - 'application/vnd.3gpp.pic-bw-var' => 'pvb', - 'application/vnd.3gpp2.tcap' => 'tcap', - 'application/vnd.3m.post-it-notes' => 'pwn', - 'application/vnd.accpac.simply.aso' => 'aso', - 'application/vnd.accpac.simply.imp' => 'imp', - 'application/vnd.acucobol' => 'acu', - 'application/vnd.acucorp' => 'atc', - 'application/vnd.adobe.air-application-installer-package+zip' => 'air', - 'application/vnd.adobe.formscentral.fcdt' => 'fcdt', - 'application/vnd.adobe.fxp' => 'fxp', - 'application/vnd.adobe.xdp+xml' => 'xdp', - 'application/vnd.adobe.xfdf' => 'xfdf', - 'application/vnd.ahead.space' => 'ahead', - 'application/vnd.airzip.filesecure.azf' => 'azf', - 'application/vnd.airzip.filesecure.azs' => 'azs', - 'application/vnd.amazon.ebook' => 'azw', - 'application/vnd.americandynamics.acc' => 'acc', - 'application/vnd.amiga.ami' => 'ami', - 'application/vnd.android.package-archive' => 'apk', - 'application/vnd.anser-web-certificate-issue-initiation' => 'cii', - 'application/vnd.anser-web-funds-transfer-initiation' => 'fti', - 'application/vnd.antix.game-component' => 'atx', - 'application/vnd.apple.installer+xml' => 'mpkg', - 'application/vnd.apple.mpegurl' => 'm3u8', - 'application/vnd.aristanetworks.swi' => 'swi', - 'application/vnd.astraea-software.iota' => 'iota', - 'application/vnd.audiograph' => 'aep', - 'application/vnd.blueice.multipass' => 'mpm', - 'application/vnd.bmi' => 'bmi', - 'application/vnd.businessobjects' => 'rep', - 'application/vnd.chemdraw+xml' => 'cdxml', - 'application/vnd.chipnuts.karaoke-mmd' => 'mmd', - 'application/vnd.cinderella' => 'cdy', - 'application/vnd.claymore' => 'cla', - 'application/vnd.cloanto.rp9' => 'rp9', - 'application/vnd.clonk.c4group' => 'c4g', - 'application/vnd.cluetrust.cartomobile-config' => 'c11amc', - 'application/vnd.cluetrust.cartomobile-config-pkg' => 'c11amz', - 'application/vnd.commonspace' => 'csp', - 'application/vnd.contact.cmsg' => 'cdbcmsg', - 'application/vnd.cosmocaller' => 'cmc', - 'application/vnd.crick.clicker' => 'clkx', - 'application/vnd.crick.clicker.keyboard' => 'clkk', - 'application/vnd.crick.clicker.palette' => 'clkp', - 'application/vnd.crick.clicker.template' => 'clkt', - 'application/vnd.crick.clicker.wordbank' => 'clkw', - 'application/vnd.criticaltools.wbs+xml' => 'wbs', - 'application/vnd.ctc-posml' => 'pml', - 'application/vnd.cups-ppd' => 'ppd', - 'application/vnd.curl.car' => 'car', - 'application/vnd.curl.pcurl' => 'pcurl', - 'application/vnd.dart' => 'dart', - 'application/vnd.data-vision.rdz' => 'rdz', - 'application/vnd.dece.data' => 'uvf', - 'application/vnd.dece.ttml+xml' => 'uvt', - 'application/vnd.dece.unspecified' => 'uvx', - 'application/vnd.dece.zip' => 'uvz', - 'application/vnd.denovo.fcselayout-link' => 'fe_launch', - 'application/vnd.dna' => 'dna', - 'application/vnd.dolby.mlp' => 'mlp', - 'application/vnd.dpgraph' => 'dpg', - 'application/vnd.dreamfactory' => 'dfac', - 'application/vnd.ds-keypoint' => 'kpxx', - 'application/vnd.dvb.ait' => 'ait', - 'application/vnd.dvb.service' => 'svc', - 'application/vnd.dynageo' => 'geo', - 'application/vnd.ecowin.chart' => 'mag', - 'application/vnd.enliven' => 'nml', - 'application/vnd.epson.esf' => 'esf', - 'application/vnd.epson.msf' => 'msf', - 'application/vnd.epson.quickanime' => 'qam', - 'application/vnd.epson.salt' => 'slt', - 'application/vnd.epson.ssf' => 'ssf', - 'application/vnd.eszigno3+xml' => 'es3', - 'application/vnd.ezpix-album' => 'ez2', - 'application/vnd.ezpix-package' => 'ez3', - 'application/vnd.fdf' => 'fdf', - 'application/vnd.fdsn.mseed' => 'mseed', - 'application/vnd.fdsn.seed' => 'seed', - 'application/vnd.flographit' => 'gph', - 'application/vnd.fluxtime.clip' => 'ftc', - 'application/vnd.framemaker' => 'fm', - 'application/vnd.frogans.fnc' => 'fnc', - 'application/vnd.frogans.ltf' => 'ltf', - 'application/vnd.fsc.weblaunch' => 'fsc', - 'application/vnd.fujitsu.oasys' => 'oas', - 'application/vnd.fujitsu.oasys2' => 'oa2', - 'application/vnd.fujitsu.oasys3' => 'oa3', - 'application/vnd.fujitsu.oasysgp' => 'fg5', - 'application/vnd.fujitsu.oasysprs' => 'bh2', - 'application/vnd.fujixerox.ddd' => 'ddd', - 'application/vnd.fujixerox.docuworks' => 'xdw', - 'application/vnd.fujixerox.docuworks.binder' => 'xbd', - 'application/vnd.fuzzysheet' => 'fzs', - 'application/vnd.genomatix.tuxedo' => 'txd', - 'application/vnd.geogebra.file' => 'ggb', - 'application/vnd.geogebra.tool' => 'ggt', - 'application/vnd.geometry-explorer' => 'gex', - 'application/vnd.geonext' => 'gxt', - 'application/vnd.geoplan' => 'g2w', - 'application/vnd.geospace' => 'g3w', - 'application/vnd.gmx' => 'gmx', - 'application/vnd.google-earth.kml+xml' => 'kml', - 'application/vnd.google-earth.kmz' => 'kmz', - 'application/vnd.grafeq' => 'gqf', - 'application/vnd.groove-account' => 'gac', - 'application/vnd.groove-help' => 'ghf', - 'application/vnd.groove-identity-message' => 'gim', - 'application/vnd.groove-injector' => 'grv', - 'application/vnd.groove-tool-message' => 'gtm', - 'application/vnd.groove-tool-template' => 'tpl', - 'application/vnd.groove-vcard' => 'vcg', - 'application/vnd.hal+xml' => 'hal', - 'application/vnd.handheld-entertainment+xml' => 'zmm', - 'application/vnd.hbci' => 'hbci', - 'application/vnd.hhe.lesson-player' => 'les', - 'application/vnd.hp-hpgl' => 'hpgl', - 'application/vnd.hp-hpid' => 'hpid', - 'application/vnd.hp-hps' => 'hps', - 'application/vnd.hp-jlyt' => 'jlt', - 'application/vnd.hp-pcl' => 'pcl', - 'application/vnd.hp-pclxl' => 'pclxl', - 'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx', - 'application/vnd.ibm.minipay' => 'mpy', - 'application/vnd.ibm.modcap' => 'afp', - 'application/vnd.ibm.rights-management' => 'irm', - 'application/vnd.ibm.secure-container' => 'sc', - 'application/vnd.iccprofile' => 'icc', - 'application/vnd.igloader' => 'igl', - 'application/vnd.immervision-ivp' => 'ivp', - 'application/vnd.immervision-ivu' => 'ivu', - 'application/vnd.insors.igm' => 'igm', - 'application/vnd.intercon.formnet' => 'xpw', - 'application/vnd.intergeo' => 'i2g', - 'application/vnd.intu.qbo' => 'qbo', - 'application/vnd.intu.qfx' => 'qfx', - 'application/vnd.ipunplugged.rcprofile' => 'rcprofile', - 'application/vnd.irepository.package+xml' => 'irp', - 'application/vnd.is-xpr' => 'xpr', - 'application/vnd.isac.fcs' => 'fcs', - 'application/vnd.jam' => 'jam', - 'application/vnd.jcp.javame.midlet-rms' => 'rms', - 'application/vnd.jisp' => 'jisp', - 'application/vnd.joost.joda-archive' => 'joda', - 'application/vnd.kahootz' => 'ktz', - 'application/vnd.kde.karbon' => 'karbon', - 'application/vnd.kde.kchart' => 'chrt', - 'application/vnd.kde.kformula' => 'kfo', - 'application/vnd.kde.kivio' => 'flw', - 'application/vnd.kde.kontour' => 'kon', - 'application/vnd.kde.kpresenter' => 'kpr', - 'application/vnd.kde.kspread' => 'ksp', - 'application/vnd.kde.kword' => 'kwd', - 'application/vnd.kenameaapp' => 'htke', - 'application/vnd.kidspiration' => 'kia', - 'application/vnd.kinar' => 'kne', - 'application/vnd.koan' => 'skp', - 'application/vnd.kodak-descriptor' => 'sse', - 'application/vnd.las.las+xml' => 'lasxml', - 'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', - 'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', - 'application/vnd.lotus-1-2-3' => '123', - 'application/vnd.lotus-approach' => 'apr', - 'application/vnd.lotus-freelance' => 'pre', - 'application/vnd.lotus-notes' => 'nsf', - 'application/vnd.lotus-organizer' => 'org', - 'application/vnd.lotus-screencam' => 'scm', - 'application/vnd.lotus-wordpro' => 'lwp', - 'application/vnd.macports.portpkg' => 'portpkg', - 'application/vnd.mcd' => 'mcd', - 'application/vnd.medcalcdata' => 'mc1', - 'application/vnd.mediastation.cdkey' => 'cdkey', - 'application/vnd.mfer' => 'mwf', - 'application/vnd.mfmp' => 'mfm', - 'application/vnd.micrografx.flo' => 'flo', - 'application/vnd.micrografx.igx' => 'igx', - 'application/vnd.mif' => 'mif', - 'application/vnd.mobius.daf' => 'daf', - 'application/vnd.mobius.dis' => 'dis', - 'application/vnd.mobius.mbk' => 'mbk', - 'application/vnd.mobius.mqy' => 'mqy', - 'application/vnd.mobius.msl' => 'msl', - 'application/vnd.mobius.plc' => 'plc', - 'application/vnd.mobius.txf' => 'txf', - 'application/vnd.mophun.application' => 'mpn', - 'application/vnd.mophun.certificate' => 'mpc', - 'application/vnd.mozilla.xul+xml' => 'xul', - 'application/vnd.ms-artgalry' => 'cil', - 'application/vnd.ms-cab-compressed' => 'cab', - 'application/vnd.ms-excel' => 'xls', - 'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam', - 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb', - 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', - 'application/vnd.ms-excel.template.macroenabled.12' => 'xltm', - 'application/vnd.ms-fontobject' => 'eot', - 'application/vnd.ms-htmlhelp' => 'chm', - 'application/vnd.ms-ims' => 'ims', - 'application/vnd.ms-lrm' => 'lrm', - 'application/vnd.ms-officetheme' => 'thmx', - 'application/vnd.ms-pki.seccat' => 'cat', - 'application/vnd.ms-pki.stl' => 'stl', - 'application/vnd.ms-powerpoint' => 'ppt', - 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam', - 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm', - 'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm', - 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm', - 'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm', - 'application/vnd.ms-project' => 'mpp', - 'application/vnd.ms-word.document.macroenabled.12' => 'docm', - 'application/vnd.ms-word.template.macroenabled.12' => 'dotm', - 'application/vnd.ms-works' => 'wps', - 'application/vnd.ms-wpl' => 'wpl', - 'application/vnd.ms-xpsdocument' => 'xps', - 'application/vnd.mseq' => 'mseq', - 'application/vnd.musician' => 'mus', - 'application/vnd.muvee.style' => 'msty', - 'application/vnd.mynfc' => 'taglet', - 'application/vnd.neurolanguage.nlu' => 'nlu', - 'application/vnd.nitf' => 'ntf', - 'application/vnd.noblenet-directory' => 'nnd', - 'application/vnd.noblenet-sealer' => 'nns', - 'application/vnd.noblenet-web' => 'nnw', - 'application/vnd.nokia.n-gage.data' => 'ngdat', - 'application/vnd.nokia.n-gage.symbian.install' => 'n-gage', - 'application/vnd.nokia.radio-preset' => 'rpst', - 'application/vnd.nokia.radio-presets' => 'rpss', - 'application/vnd.novadigm.edm' => 'edm', - 'application/vnd.novadigm.edx' => 'edx', - 'application/vnd.novadigm.ext' => 'ext', - 'application/vnd.oasis.opendocument.chart' => 'odc', - 'application/vnd.oasis.opendocument.chart-template' => 'otc', - 'application/vnd.oasis.opendocument.database' => 'odb', - 'application/vnd.oasis.opendocument.formula' => 'odf', - 'application/vnd.oasis.opendocument.formula-template' => 'odft', - 'application/vnd.oasis.opendocument.graphics' => 'odg', - 'application/vnd.oasis.opendocument.graphics-template' => 'otg', - 'application/vnd.oasis.opendocument.image' => 'odi', - 'application/vnd.oasis.opendocument.image-template' => 'oti', - 'application/vnd.oasis.opendocument.presentation' => 'odp', - 'application/vnd.oasis.opendocument.presentation-template' => 'otp', - 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', - 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', - 'application/vnd.oasis.opendocument.text' => 'odt', - 'application/vnd.oasis.opendocument.text-master' => 'odm', - 'application/vnd.oasis.opendocument.text-template' => 'ott', - 'application/vnd.oasis.opendocument.text-web' => 'oth', - 'application/vnd.olpc-sugar' => 'xo', - 'application/vnd.oma.dd2+xml' => 'dd2', - 'application/vnd.openofficeorg.extension' => 'oxt', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', - 'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx', - 'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', - 'application/vnd.osgeo.mapguide.package' => 'mgp', - 'application/vnd.osgi.dp' => 'dp', - 'application/vnd.osgi.subsystem' => 'esa', - 'application/vnd.palm' => 'pdb', - 'application/vnd.pawaafile' => 'paw', - 'application/vnd.pg.format' => 'str', - 'application/vnd.pg.osasli' => 'ei6', - 'application/vnd.picsel' => 'efif', - 'application/vnd.pmi.widget' => 'wg', - 'application/vnd.pocketlearn' => 'plf', - 'application/vnd.powerbuilder6' => 'pbd', - 'application/vnd.previewsystems.box' => 'box', - 'application/vnd.proteus.magazine' => 'mgz', - 'application/vnd.publishare-delta-tree' => 'qps', - 'application/vnd.pvi.ptid1' => 'ptid', - 'application/vnd.quark.quarkxpress' => 'qxd', - 'application/vnd.realvnc.bed' => 'bed', - 'application/vnd.recordare.musicxml' => 'mxl', - 'application/vnd.recordare.musicxml+xml' => 'musicxml', - 'application/vnd.rig.cryptonote' => 'cryptonote', - 'application/vnd.rim.cod' => 'cod', - 'application/vnd.rn-realmedia' => 'rm', - 'application/vnd.rn-realmedia-vbr' => 'rmvb', - 'application/vnd.route66.link66+xml' => 'link66', - 'application/vnd.sailingtracker.track' => 'st', - 'application/vnd.seemail' => 'see', - 'application/vnd.sema' => 'sema', - 'application/vnd.semd' => 'semd', - 'application/vnd.semf' => 'semf', - 'application/vnd.shana.informed.formdata' => 'ifm', - 'application/vnd.shana.informed.formtemplate' => 'itp', - 'application/vnd.shana.informed.interchange' => 'iif', - 'application/vnd.shana.informed.package' => 'ipk', - 'application/vnd.simtech-mindmapper' => 'twd', - 'application/vnd.smaf' => 'mmf', - 'application/vnd.smart.teacher' => 'teacher', - 'application/vnd.solent.sdkm+xml' => 'sdkm', - 'application/vnd.spotfire.dxp' => 'dxp', - 'application/vnd.spotfire.sfs' => 'sfs', - 'application/vnd.stardivision.calc' => 'sdc', - 'application/vnd.stardivision.draw' => 'sda', - 'application/vnd.stardivision.impress' => 'sdd', - 'application/vnd.stardivision.math' => 'smf', - 'application/vnd.stardivision.writer' => 'sdw', - 'application/vnd.stardivision.writer-global' => 'sgl', - 'application/vnd.stepmania.package' => 'smzip', - 'application/vnd.stepmania.stepchart' => 'sm', - 'application/vnd.sun.xml.calc' => 'sxc', - 'application/vnd.sun.xml.calc.template' => 'stc', - 'application/vnd.sun.xml.draw' => 'sxd', - 'application/vnd.sun.xml.draw.template' => 'std', - 'application/vnd.sun.xml.impress' => 'sxi', - 'application/vnd.sun.xml.impress.template' => 'sti', - 'application/vnd.sun.xml.math' => 'sxm', - 'application/vnd.sun.xml.writer' => 'sxw', - 'application/vnd.sun.xml.writer.global' => 'sxg', - 'application/vnd.sun.xml.writer.template' => 'stw', - 'application/vnd.sus-calendar' => 'sus', - 'application/vnd.svd' => 'svd', - 'application/vnd.symbian.install' => 'sis', - 'application/vnd.syncml+xml' => 'xsm', - 'application/vnd.syncml.dm+wbxml' => 'bdm', - 'application/vnd.syncml.dm+xml' => 'xdm', - 'application/vnd.tao.intent-module-archive' => 'tao', - 'application/vnd.tcpdump.pcap' => 'pcap', - 'application/vnd.tmobile-livetv' => 'tmo', - 'application/vnd.trid.tpt' => 'tpt', - 'application/vnd.triscape.mxs' => 'mxs', - 'application/vnd.trueapp' => 'tra', - 'application/vnd.ufdl' => 'ufd', - 'application/vnd.uiq.theme' => 'utz', - 'application/vnd.umajin' => 'umj', - 'application/vnd.unity' => 'unityweb', - 'application/vnd.uoml+xml' => 'uoml', - 'application/vnd.vcx' => 'vcx', - 'application/vnd.visio' => 'vsd', - 'application/vnd.visionary' => 'vis', - 'application/vnd.vsf' => 'vsf', - 'application/vnd.wap.wbxml' => 'wbxml', - 'application/vnd.wap.wmlc' => 'wmlc', - 'application/vnd.wap.wmlscriptc' => 'wmlsc', - 'application/vnd.webturbo' => 'wtb', - 'application/vnd.wolfram.player' => 'nbp', - 'application/vnd.wordperfect' => 'wpd', - 'application/vnd.wqd' => 'wqd', - 'application/vnd.wt.stf' => 'stf', - 'application/vnd.xara' => 'xar', - 'application/vnd.xfdl' => 'xfdl', - 'application/vnd.yamaha.hv-dic' => 'hvd', - 'application/vnd.yamaha.hv-script' => 'hvs', - 'application/vnd.yamaha.hv-voice' => 'hvp', - 'application/vnd.yamaha.openscoreformat' => 'osf', - 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 'osfpvg', - 'application/vnd.yamaha.smaf-audio' => 'saf', - 'application/vnd.yamaha.smaf-phrase' => 'spf', - 'application/vnd.yellowriver-custom-menu' => 'cmp', - 'application/vnd.zul' => 'zir', - 'application/vnd.zzazz.deck+xml' => 'zaz', - 'application/voicexml+xml' => 'vxml', - 'application/widget' => 'wgt', - 'application/winhlp' => 'hlp', - 'application/wsdl+xml' => 'wsdl', - 'application/wspolicy+xml' => 'wspolicy', - 'application/x-7z-compressed' => '7z', - 'application/x-abiword' => 'abw', - 'application/x-ace-compressed' => 'ace', - 'application/x-apple-diskimage' => 'dmg', - 'application/x-authorware-bin' => 'aab', - 'application/x-authorware-map' => 'aam', - 'application/x-authorware-seg' => 'aas', - 'application/x-bcpio' => 'bcpio', - 'application/x-bittorrent' => 'torrent', - 'application/x-blorb' => 'blb', - 'application/x-bzip' => 'bz', - 'application/x-bzip2' => 'bz2', - 'application/x-cbr' => 'cbr', - 'application/x-cdlink' => 'vcd', - 'application/x-cfs-compressed' => 'cfs', - 'application/x-chat' => 'chat', - 'application/x-chess-pgn' => 'pgn', - 'application/x-conference' => 'nsc', - 'application/x-cpio' => 'cpio', - 'application/x-csh' => 'csh', - 'application/x-debian-package' => 'deb', - 'application/x-dgc-compressed' => 'dgc', - 'application/x-director' => 'dir', - 'application/x-doom' => 'wad', - 'application/x-dtbncx+xml' => 'ncx', - 'application/x-dtbook+xml' => 'dtb', - 'application/x-dtbresource+xml' => 'res', - 'application/x-dvi' => 'dvi', - 'application/x-envoy' => 'evy', - 'application/x-eva' => 'eva', - 'application/x-font-bdf' => 'bdf', - 'application/x-font-ghostscript' => 'gsf', - 'application/x-font-linux-psf' => 'psf', - 'application/x-font-otf' => 'otf', - 'application/x-font-pcf' => 'pcf', - 'application/x-font-snf' => 'snf', - 'application/x-font-ttf' => 'ttf', - 'application/x-font-type1' => 'pfa', - 'application/x-font-woff' => 'woff', - 'application/x-freearc' => 'arc', - 'application/x-futuresplash' => 'spl', - 'application/x-gca-compressed' => 'gca', - 'application/x-glulx' => 'ulx', - 'application/x-gnumeric' => 'gnumeric', - 'application/x-gramps-xml' => 'gramps', - 'application/x-gtar' => 'gtar', - 'application/x-hdf' => 'hdf', - 'application/x-install-instructions' => 'install', - 'application/x-iso9660-image' => 'iso', - 'application/x-java-jnlp-file' => 'jnlp', - 'application/x-latex' => 'latex', - 'application/x-lzh-compressed' => 'lzh', - 'application/x-mie' => 'mie', - 'application/x-mobipocket-ebook' => 'prc', - 'application/x-ms-application' => 'application', - 'application/x-ms-shortcut' => 'lnk', - 'application/x-ms-wmd' => 'wmd', - 'application/x-ms-wmz' => 'wmz', - 'application/x-ms-xbap' => 'xbap', - 'application/x-msaccess' => 'mdb', - 'application/x-msbinder' => 'obd', - 'application/x-mscardfile' => 'crd', - 'application/x-msclip' => 'clp', - 'application/x-msdownload' => 'exe', - 'application/x-msmediaview' => 'mvb', - 'application/x-msmetafile' => 'wmf', - 'application/x-msmoney' => 'mny', - 'application/x-mspublisher' => 'pub', - 'application/x-msschedule' => 'scd', - 'application/x-msterminal' => 'trm', - 'application/x-mswrite' => 'wri', - 'application/x-netcdf' => 'nc', - 'application/x-nzb' => 'nzb', - 'application/x-pkcs12' => 'p12', - 'application/x-pkcs7-certificates' => 'p7b', - 'application/x-pkcs7-certreqresp' => 'p7r', - 'application/x-rar-compressed' => 'rar', - 'application/x-rar' => 'rar', - 'application/x-research-info-systems' => 'ris', - 'application/x-sh' => 'sh', - 'application/x-shar' => 'shar', - 'application/x-shockwave-flash' => 'swf', - 'application/x-silverlight-app' => 'xap', - 'application/x-sql' => 'sql', - 'application/x-stuffit' => 'sit', - 'application/x-stuffitx' => 'sitx', - 'application/x-subrip' => 'srt', - 'application/x-sv4cpio' => 'sv4cpio', - 'application/x-sv4crc' => 'sv4crc', - 'application/x-t3vm-image' => 't3', - 'application/x-tads' => 'gam', - 'application/x-tar' => 'tar', - 'application/x-tcl' => 'tcl', - 'application/x-tex' => 'tex', - 'application/x-tex-tfm' => 'tfm', - 'application/x-texinfo' => 'texinfo', - 'application/x-tgif' => 'obj', - 'application/x-ustar' => 'ustar', - 'application/x-wais-source' => 'src', - 'application/x-x509-ca-cert' => 'der', - 'application/x-xfig' => 'fig', - 'application/x-xliff+xml' => 'xlf', - 'application/x-xpinstall' => 'xpi', - 'application/x-xz' => 'xz', - 'application/x-zip-compressed' => 'zip', - 'application/x-zmachine' => 'z1', - 'application/xaml+xml' => 'xaml', - 'application/xcap-diff+xml' => 'xdf', - 'application/xenc+xml' => 'xenc', - 'application/xhtml+xml' => 'xhtml', - 'application/xml' => 'xml', - 'application/xml-dtd' => 'dtd', - 'application/xop+xml' => 'xop', - 'application/xproc+xml' => 'xpl', - 'application/xslt+xml' => 'xslt', - 'application/xspf+xml' => 'xspf', - 'application/xv+xml' => 'mxml', - 'application/yang' => 'yang', - 'application/yin+xml' => 'yin', - 'application/zip' => 'zip', - 'audio/adpcm' => 'adp', - 'audio/basic' => 'au', - 'audio/midi' => 'mid', - 'audio/mp4' => 'm4a', - 'audio/mpeg' => 'mp3', - 'audio/ogg' => 'oga', - 'audio/s3m' => 's3m', - 'audio/silk' => 'sil', - 'audio/vnd.dece.audio' => 'uva', - 'audio/vnd.digital-winds' => 'eol', - 'audio/vnd.dra' => 'dra', - 'audio/vnd.dts' => 'dts', - 'audio/vnd.dts.hd' => 'dtshd', - 'audio/vnd.lucent.voice' => 'lvp', - 'audio/vnd.ms-playready.media.pya' => 'pya', - 'audio/vnd.nuera.ecelp4800' => 'ecelp4800', - 'audio/vnd.nuera.ecelp7470' => 'ecelp7470', - 'audio/vnd.nuera.ecelp9600' => 'ecelp9600', - 'audio/vnd.rip' => 'rip', - 'audio/webm' => 'weba', - 'audio/x-aac' => 'aac', - 'audio/x-aiff' => 'aif', - 'audio/x-caf' => 'caf', - 'audio/x-flac' => 'flac', - 'audio/x-hx-aac-adts' => 'aac', - 'audio/x-matroska' => 'mka', - 'audio/x-mpegurl' => 'm3u', - 'audio/x-ms-wax' => 'wax', - 'audio/x-ms-wma' => 'wma', - 'audio/x-pn-realaudio' => 'ram', - 'audio/x-pn-realaudio-plugin' => 'rmp', - 'audio/x-wav' => 'wav', - 'audio/xm' => 'xm', - 'chemical/x-cdx' => 'cdx', - 'chemical/x-cif' => 'cif', - 'chemical/x-cmdf' => 'cmdf', - 'chemical/x-cml' => 'cml', - 'chemical/x-csml' => 'csml', - 'chemical/x-xyz' => 'xyz', - 'font/collection' => 'ttc', - 'font/otf' => 'otf', - 'font/ttf' => 'ttf', - 'font/woff' => 'woff', - 'font/woff2' => 'woff2', - 'image/bmp' => 'bmp', - 'image/x-ms-bmp' => 'bmp', - 'image/cgm' => 'cgm', - 'image/g3fax' => 'g3', - 'image/gif' => 'gif', - 'image/ief' => 'ief', - 'image/jpeg' => 'jpeg', - 'image/pjpeg' => 'jpeg', - 'image/ktx' => 'ktx', - 'image/png' => 'png', - 'image/prs.btif' => 'btif', - 'image/sgi' => 'sgi', - 'image/svg+xml' => 'svg', - 'image/tiff' => 'tiff', - 'image/vnd.adobe.photoshop' => 'psd', - 'image/vnd.dece.graphic' => 'uvi', - 'image/vnd.djvu' => 'djvu', - 'image/vnd.dvb.subtitle' => 'sub', - 'image/vnd.dwg' => 'dwg', - 'image/vnd.dxf' => 'dxf', - 'image/vnd.fastbidsheet' => 'fbs', - 'image/vnd.fpx' => 'fpx', - 'image/vnd.fst' => 'fst', - 'image/vnd.fujixerox.edmics-mmr' => 'mmr', - 'image/vnd.fujixerox.edmics-rlc' => 'rlc', - 'image/vnd.ms-modi' => 'mdi', - 'image/vnd.ms-photo' => 'wdp', - 'image/vnd.net-fpx' => 'npx', - 'image/vnd.wap.wbmp' => 'wbmp', - 'image/vnd.xiff' => 'xif', - 'image/webp' => 'webp', - 'image/x-3ds' => '3ds', - 'image/x-cmu-raster' => 'ras', - 'image/x-cmx' => 'cmx', - 'image/x-freehand' => 'fh', - 'image/x-icon' => 'ico', - 'image/x-mrsid-image' => 'sid', - 'image/x-pcx' => 'pcx', - 'image/x-pict' => 'pic', - 'image/x-portable-anymap' => 'pnm', - 'image/x-portable-bitmap' => 'pbm', - 'image/x-portable-graymap' => 'pgm', - 'image/x-portable-pixmap' => 'ppm', - 'image/x-rgb' => 'rgb', - 'image/x-tga' => 'tga', - 'image/x-xbitmap' => 'xbm', - 'image/x-xpixmap' => 'xpm', - 'image/x-xwindowdump' => 'xwd', - 'message/rfc822' => 'eml', - 'model/iges' => 'igs', - 'model/mesh' => 'msh', - 'model/vnd.collada+xml' => 'dae', - 'model/vnd.dwf' => 'dwf', - 'model/vnd.gdl' => 'gdl', - 'model/vnd.gtw' => 'gtw', - 'model/vnd.mts' => 'mts', - 'model/vnd.vtu' => 'vtu', - 'model/vrml' => 'wrl', - 'model/x3d+binary' => 'x3db', - 'model/x3d+vrml' => 'x3dv', - 'model/x3d+xml' => 'x3d', - 'text/cache-manifest' => 'appcache', - 'text/calendar' => 'ics', - 'text/css' => 'css', - 'text/csv' => 'csv', - 'text/html' => 'html', - 'text/n3' => 'n3', - 'text/plain' => 'txt', - 'text/prs.lines.tag' => 'dsc', - 'text/richtext' => 'rtx', - 'text/rtf' => 'rtf', - 'text/sgml' => 'sgml', - 'text/tab-separated-values' => 'tsv', - 'text/troff' => 't', - 'text/turtle' => 'ttl', - 'text/uri-list' => 'uri', - 'text/vcard' => 'vcard', - 'text/vnd.curl' => 'curl', - 'text/vnd.curl.dcurl' => 'dcurl', - 'text/vnd.curl.mcurl' => 'mcurl', - 'text/vnd.curl.scurl' => 'scurl', - 'text/vnd.dvb.subtitle' => 'sub', - 'text/vnd.fly' => 'fly', - 'text/vnd.fmi.flexstor' => 'flx', - 'text/vnd.graphviz' => 'gv', - 'text/vnd.in3d.3dml' => '3dml', - 'text/vnd.in3d.spot' => 'spot', - 'text/vnd.sun.j2me.app-descriptor' => 'jad', - 'text/vnd.wap.wml' => 'wml', - 'text/vnd.wap.wmlscript' => 'wmls', - 'text/vtt' => 'vtt', - 'text/x-asm' => 's', - 'text/x-c' => 'c', - 'text/x-fortran' => 'f', - 'text/x-java-source' => 'java', - 'text/x-nfo' => 'nfo', - 'text/x-opml' => 'opml', - 'text/x-pascal' => 'p', - 'text/x-setext' => 'etx', - 'text/x-sfv' => 'sfv', - 'text/x-uuencode' => 'uu', - 'text/x-vcalendar' => 'vcs', - 'text/x-vcard' => 'vcf', - 'video/3gpp' => '3gp', - 'video/3gpp2' => '3g2', - 'video/h261' => 'h261', - 'video/h263' => 'h263', - 'video/h264' => 'h264', - 'video/jpeg' => 'jpgv', - 'video/jpm' => 'jpm', - 'video/mj2' => 'mj2', - 'video/mp4' => 'mp4', - 'video/mpeg' => 'mpeg', - 'video/ogg' => 'ogv', - 'video/quicktime' => 'qt', - 'video/vnd.dece.hd' => 'uvh', - 'video/vnd.dece.mobile' => 'uvm', - 'video/vnd.dece.pd' => 'uvp', - 'video/vnd.dece.sd' => 'uvs', - 'video/vnd.dece.video' => 'uvv', - 'video/vnd.dvb.file' => 'dvb', - 'video/vnd.fvt' => 'fvt', - 'video/vnd.mpegurl' => 'mxu', - 'video/vnd.ms-playready.media.pyv' => 'pyv', - 'video/vnd.uvvu.mp4' => 'uvu', - 'video/vnd.vivo' => 'viv', - 'video/webm' => 'webm', - 'video/x-f4v' => 'f4v', - 'video/x-fli' => 'fli', - 'video/x-flv' => 'flv', - 'video/x-m4v' => 'm4v', - 'video/x-matroska' => 'mkv', - 'video/x-mng' => 'mng', - 'video/x-ms-asf' => 'asf', - 'video/x-ms-vob' => 'vob', - 'video/x-ms-wm' => 'wm', - 'video/x-ms-wmv' => 'wmv', - 'video/x-ms-wmx' => 'wmx', - 'video/x-ms-wvx' => 'wvx', - 'video/x-msvideo' => 'avi', - 'video/x-sgi-movie' => 'movie', - 'video/x-smv' => 'smv', - 'x-conference/x-cooltalk' => 'ice', - ]; - - /** - * {@inheritdoc} - */ - public function guess($mimeType) - { - if (isset($this->defaultExtensions[$mimeType])) { - return $this->defaultExtensions[$mimeType]; - } - - $lcMimeType = strtolower($mimeType); - - return $this->defaultExtensions[$lcMimeType] ?? null; - } -} diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php deleted file mode 100644 index bdac43149..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; -use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; -use Symfony\Component\Mime\MimeTypes; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), \E_USER_DEPRECATED); - -/** - * A singleton mime type guesser. - * - * By default, all mime type guessers provided by the framework are installed - * (if available on the current OS/PHP setup). - * - * You can register custom guessers by calling the register() method on the - * singleton instance. Custom guessers are always called before any default ones. - * - * $guesser = MimeTypeGuesser::getInstance(); - * $guesser->register(new MyCustomMimeTypeGuesser()); - * - * If you want to change the order of the default guessers, just re-register your - * preferred one as a custom one. The last registered guesser is preferred over - * previously registered ones. - * - * Re-registering a built-in guesser also allows you to configure it: - * - * $guesser = MimeTypeGuesser::getInstance(); - * $guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file')); - * - * @author Bernhard Schussek <bschussek@gmail.com> - */ -class MimeTypeGuesser implements MimeTypeGuesserInterface -{ - /** - * The singleton instance. - * - * @var MimeTypeGuesser - */ - private static $instance = null; - - /** - * All registered MimeTypeGuesserInterface instances. - * - * @var array - */ - protected $guessers = []; - - /** - * Returns the singleton instance. - * - * @return self - */ - public static function getInstance() - { - if (null === self::$instance) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Resets the singleton instance. - */ - public static function reset() - { - self::$instance = null; - } - - /** - * Registers all natively provided mime type guessers. - */ - private function __construct() - { - $this->register(new FileBinaryMimeTypeGuesser()); - $this->register(new FileinfoMimeTypeGuesser()); - } - - /** - * Registers a new mime type guesser. - * - * When guessing, this guesser is preferred over previously registered ones. - */ - public function register(MimeTypeGuesserInterface $guesser) - { - array_unshift($this->guessers, $guesser); - } - - /** - * Tries to guess the mime type of the given file. - * - * The file is passed to each registered mime type guesser in reverse order - * of their registration (last registered is queried first). Once a guesser - * returns a value that is not NULL, this method terminates and returns the - * value. - * - * @param string $path The path to the file - * - * @return string The mime type or NULL, if none could be guessed - * - * @throws \LogicException - * @throws FileNotFoundException - * @throws AccessDeniedException - */ - public function guess($path) - { - if (!is_file($path)) { - throw new FileNotFoundException($path); - } - - if (!is_readable($path)) { - throw new AccessDeniedException($path); - } - - foreach ($this->guessers as $guesser) { - if (null !== $mimeType = $guesser->guess($path)) { - return $mimeType; - } - } - - if (2 === \count($this->guessers) && !FileBinaryMimeTypeGuesser::isSupported() && !FileinfoMimeTypeGuesser::isSupported()) { - throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?).'); - } - - return null; - } -} diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php deleted file mode 100644 index eab444890..000000000 --- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation\File\MimeType; - -use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; -use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; -use Symfony\Component\Mime\MimeTypesInterface; - -/** - * Guesses the mime type of a file. - * - * @author Bernhard Schussek <bschussek@gmail.com> - * - * @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead - */ -interface MimeTypeGuesserInterface -{ - /** - * Guesses the mime type of the file with the given path. - * - * @param string $path The path to the file - * - * @return string|null The mime type or NULL, if none could be guessed - * - * @throws FileNotFoundException If the file does not exist - * @throws AccessDeniedException If the file could not be read - */ - public function guess($path); -} diff --git a/vendor/symfony/http-foundation/File/UploadedFile.php b/vendor/symfony/http-foundation/File/UploadedFile.php index 6148f1d8b..fcc629913 100644 --- a/vendor/symfony/http-foundation/File/UploadedFile.php +++ b/vendor/symfony/http-foundation/File/UploadedFile.php @@ -60,17 +60,10 @@ class UploadedFile extends File * @throws FileException If file_uploads is disabled * @throws FileNotFoundException If the file does not exist */ - public function __construct(string $path, string $originalName, string $mimeType = null, int $error = null, $test = false) + public function __construct(string $path, string $originalName, string $mimeType = null, int $error = null, bool $test = false) { $this->originalName = $this->getName($originalName); $this->mimeType = $mimeType ?: 'application/octet-stream'; - - if (4 < \func_num_args() ? !\is_bool($test) : null !== $error && @filesize($path) === $error) { - @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), \E_USER_DEPRECATED); - $error = $test; - $test = 5 < \func_num_args() ? func_get_arg(5) : false; - } - $this->error = $error ?: \UPLOAD_ERR_OK; $this->test = $test; @@ -83,7 +76,7 @@ class UploadedFile extends File * It is extracted from the request from which the file has been uploaded. * Then it should not be considered as a safe value. * - * @return string The original name + * @return string */ public function getClientOriginalName() { @@ -96,7 +89,7 @@ class UploadedFile extends File * It is extracted from the original file name that was uploaded. * Then it should not be considered as a safe value. * - * @return string The extension + * @return string */ public function getClientOriginalExtension() { @@ -112,7 +105,7 @@ class UploadedFile extends File * For a trusted mime type, use getMimeType() instead (which guesses the mime * type based on the file content). * - * @return string The mime type + * @return string * * @see getMimeType() */ @@ -133,40 +126,27 @@ class UploadedFile extends File * For a trusted extension, use guessExtension() instead (which guesses * the extension based on the guessed mime type for the file). * - * @return string|null The guessed extension or null if it cannot be guessed + * @return string|null * * @see guessExtension() * @see getClientMimeType() */ public function guessClientExtension() { + if (!class_exists(MimeTypes::class)) { + throw new \LogicException('You cannot guess the extension as the Mime component is not installed. Try running "composer require symfony/mime".'); + } + return MimeTypes::getDefault()->getExtensions($this->getClientMimeType())[0] ?? null; } - /** - * Returns the file size. - * - * It is extracted from the request from which the file has been uploaded. - * Then it should not be considered as a safe value. - * - * @deprecated since Symfony 4.1, use getSize() instead. - * - * @return int|null The file sizes - */ - public function getClientSize() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->getSize(); - } - /** * Returns the upload error. * * If the upload was successful, the constant UPLOAD_ERR_OK is returned. * Otherwise one of the other UPLOAD_ERR_XXX constants is returned. * - * @return int The upload error + * @return int */ public function getError() { @@ -174,9 +154,9 @@ class UploadedFile extends File } /** - * Returns whether the file was uploaded successfully. + * Returns whether the file has been uploaded with HTTP and no error occurred. * - * @return bool True if the file has been uploaded with HTTP and no error occurred + * @return bool */ public function isValid() { @@ -188,14 +168,11 @@ class UploadedFile extends File /** * Moves the file to a new location. * - * @param string $directory The destination folder - * @param string $name The new file name - * - * @return File A File object representing the new file + * @return File * * @throws FileException if, for any reason, the file could not have been moved */ - public function move($directory, $name = null) + public function move(string $directory, string $name = null) { if ($this->isValid()) { if ($this->test) { @@ -205,8 +182,11 @@ class UploadedFile extends File $target = $this->getTargetFile($directory, $name); set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); - $moved = move_uploaded_file($this->getPathname(), $target); - restore_error_handler(); + try { + $moved = move_uploaded_file($this->getPathname(), $target); + } finally { + restore_error_handler(); + } if (!$moved) { throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error))); } @@ -273,11 +253,11 @@ class UploadedFile extends File switch (substr($size, -1)) { case 't': $max *= 1024; - // no break + // no break case 'g': $max *= 1024; - // no break + // no break case 'm': $max *= 1024; - // no break + // no break case 'k': $max *= 1024; } @@ -287,7 +267,7 @@ class UploadedFile extends File /** * Returns an informative upload error message. * - * @return string The error message regarding the specified error code + * @return string */ public function getErrorMessage() { diff --git a/vendor/symfony/http-foundation/FileBag.php b/vendor/symfony/http-foundation/FileBag.php index 65242453c..ff5ab7778 100644 --- a/vendor/symfony/http-foundation/FileBag.php +++ b/vendor/symfony/http-foundation/FileBag.php @@ -43,7 +43,7 @@ class FileBag extends ParameterBag /** * {@inheritdoc} */ - public function set($key, $value) + public function set(string $key, $value) { if (!\is_array($value) && !$value instanceof UploadedFile) { throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.'); @@ -67,7 +67,7 @@ class FileBag extends ParameterBag * * @param array|UploadedFile $file A (multi-dimensional) array of uploaded file information * - * @return UploadedFile[]|UploadedFile|null A (multi-dimensional) array of UploadedFile instances + * @return UploadedFile[]|UploadedFile|null */ protected function convertFileInformation($file) { @@ -107,11 +107,9 @@ class FileBag extends ParameterBag * It's safe to pass an already converted array, in which case this method * just returns the original array unmodified. * - * @param array $data - * * @return array */ - protected function fixPhpFilesArray($data) + protected function fixPhpFilesArray(array $data) { // Remove extra key added by PHP 8.1. unset($data['full_path']); diff --git a/vendor/symfony/http-foundation/HeaderBag.php b/vendor/symfony/http-foundation/HeaderBag.php index ac61ab2b6..4683a6840 100644 --- a/vendor/symfony/http-foundation/HeaderBag.php +++ b/vendor/symfony/http-foundation/HeaderBag.php @@ -15,12 +15,17 @@ namespace Symfony\Component\HttpFoundation; * HeaderBag is a container for HTTP headers. * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<string, list<string|null>> */ class HeaderBag implements \IteratorAggregate, \Countable { protected const UPPER = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ'; protected const LOWER = '-abcdefghijklmnopqrstuvwxyz'; + /** + * @var array<string, list<string|null>> + */ protected $headers = []; protected $cacheControl = []; @@ -34,7 +39,7 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns the headers as a string. * - * @return string The headers + * @return string */ public function __toString() { @@ -60,11 +65,11 @@ class HeaderBag implements \IteratorAggregate, \Countable * * @param string|null $key The name of the headers to return or null to get them all * - * @return array An array of headers + * @return array<string, array<int, string|null>>|array<int, string|null> */ - public function all(/* string $key = null */) + public function all(string $key = null) { - if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) { + if (null !== $key) { return $this->headers[strtr($key, self::UPPER, self::LOWER)] ?? []; } @@ -74,7 +79,7 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns the parameter keys. * - * @return array An array of parameter keys + * @return string[] */ public function keys() { @@ -101,23 +106,13 @@ class HeaderBag implements \IteratorAggregate, \Countable } /** - * Returns a header value by name. + * Returns the first header by name or the default one. * - * @param string $key The header name - * @param string|null $default The default value - * - * @return string|null The first header value or default value + * @return string|null */ - public function get($key, $default = null) + public function get(string $key, string $default = null) { - $headers = $this->all((string) $key); - if (2 < \func_num_args()) { - @trigger_error(sprintf('Passing a third argument to "%s()" is deprecated since Symfony 4.4, use method "all()" instead', __METHOD__), \E_USER_DEPRECATED); - - if (!func_get_arg(2)) { - return $headers; - } - } + $headers = $this->all($key); if (!$headers) { return $default; @@ -133,11 +128,10 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Sets a header by name. * - * @param string $key The key * @param string|string[]|null $values The value or an array of values * @param bool $replace Whether to replace the actual value or not (true by default) */ - public function set($key, $values, $replace = true) + public function set(string $key, $values, bool $replace = true) { $key = strtr($key, self::UPPER, self::LOWER); @@ -165,11 +159,9 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns true if the HTTP header is defined. * - * @param string $key The HTTP header - * - * @return bool true if the parameter exists, false otherwise + * @return bool */ - public function has($key) + public function has(string $key) { return \array_key_exists(strtr($key, self::UPPER, self::LOWER), $this->all()); } @@ -177,22 +169,17 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns true if the given HTTP header contains the given value. * - * @param string $key The HTTP header name - * @param string $value The HTTP value - * - * @return bool true if the value is contained in the header, false otherwise + * @return bool */ - public function contains($key, $value) + public function contains(string $key, string $value) { - return \in_array($value, $this->all((string) $key)); + return \in_array($value, $this->all($key)); } /** * Removes a header. - * - * @param string $key The HTTP header name */ - public function remove($key) + public function remove(string $key) { $key = strtr($key, self::UPPER, self::LOWER); @@ -206,13 +193,11 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns the HTTP header value converted to a date. * - * @param string $key The parameter key - * - * @return \DateTimeInterface|null The parsed DateTime or the default value if the header does not exist + * @return \DateTimeInterface|null * * @throws \RuntimeException When the HTTP header is not parseable */ - public function getDate($key, \DateTime $default = null) + public function getDate(string $key, \DateTime $default = null) { if (null === $value = $this->get($key)) { return $default; @@ -228,10 +213,9 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Adds a custom Cache-Control directive. * - * @param string $key The Cache-Control directive name * @param bool|string $value The Cache-Control directive value */ - public function addCacheControlDirective($key, $value = true) + public function addCacheControlDirective(string $key, $value = true) { $this->cacheControl[$key] = $value; @@ -241,11 +225,9 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns true if the Cache-Control directive is defined. * - * @param string $key The Cache-Control directive - * - * @return bool true if the directive exists, false otherwise + * @return bool */ - public function hasCacheControlDirective($key) + public function hasCacheControlDirective(string $key) { return \array_key_exists($key, $this->cacheControl); } @@ -253,21 +235,17 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns a Cache-Control directive value by name. * - * @param string $key The directive name - * - * @return bool|string|null The directive value if defined, null otherwise + * @return bool|string|null */ - public function getCacheControlDirective($key) + public function getCacheControlDirective(string $key) { return $this->cacheControl[$key] ?? null; } /** * Removes a Cache-Control directive. - * - * @param string $key The Cache-Control directive */ - public function removeCacheControlDirective($key) + public function removeCacheControlDirective(string $key) { unset($this->cacheControl[$key]); @@ -277,7 +255,7 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns an iterator for headers. * - * @return \ArrayIterator An \ArrayIterator instance + * @return \ArrayIterator<string, list<string|null>> */ #[\ReturnTypeWillChange] public function getIterator() @@ -288,7 +266,7 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Returns the number of headers. * - * @return int The number of headers + * @return int */ #[\ReturnTypeWillChange] public function count() @@ -306,11 +284,9 @@ class HeaderBag implements \IteratorAggregate, \Countable /** * Parses a Cache-Control HTTP header. * - * @param string $header The value of the Cache-Control HTTP header - * - * @return array An array representing the attribute values + * @return array */ - protected function parseCacheControl($header) + protected function parseCacheControl(string $header) { $parts = HeaderUtils::split($header, ',='); diff --git a/vendor/symfony/http-foundation/HeaderUtils.php b/vendor/symfony/http-foundation/HeaderUtils.php index 412903f03..1d56be080 100644 --- a/vendor/symfony/http-foundation/HeaderUtils.php +++ b/vendor/symfony/http-foundation/HeaderUtils.php @@ -154,8 +154,6 @@ class HeaderUtils * is semantically equivalent to $filename. If the filename is already ASCII, * it can be omitted, or just copied from $filename * - * @return string A string suitable for use as a Content-Disposition field-value - * * @throws \InvalidArgumentException * * @see RFC 6266 @@ -193,6 +191,64 @@ class HeaderUtils return $disposition.'; '.self::toString($params, ';'); } + /** + * Like parse_str(), but preserves dots in variable names. + */ + public static function parseQuery(string $query, bool $ignoreBrackets = false, string $separator = '&'): array + { + $q = []; + + foreach (explode($separator, $query) as $v) { + if (false !== $i = strpos($v, "\0")) { + $v = substr($v, 0, $i); + } + + if (false === $i = strpos($v, '=')) { + $k = urldecode($v); + $v = ''; + } else { + $k = urldecode(substr($v, 0, $i)); + $v = substr($v, $i); + } + + if (false !== $i = strpos($k, "\0")) { + $k = substr($k, 0, $i); + } + + $k = ltrim($k, ' '); + + if ($ignoreBrackets) { + $q[$k][] = urldecode(substr($v, 1)); + + continue; + } + + if (false === $i = strpos($k, '[')) { + $q[] = bin2hex($k).$v; + } else { + $q[] = bin2hex(substr($k, 0, $i)).rawurlencode(substr($k, $i)).$v; + } + } + + if ($ignoreBrackets) { + return $q; + } + + parse_str(implode('&', $q), $q); + + $query = []; + + foreach ($q as $k => $v) { + if (false !== $i = strpos($k, '_')) { + $query[substr_replace($k, hex2bin(substr($k, 0, $i)).'[', 0, 1 + $i)] = $v; + } else { + $query[hex2bin($k)] = $v; + } + } + + return $query; + } + private static function groupParts(array $matches, string $separators, bool $first = true): array { $separator = $separators[0]; diff --git a/vendor/symfony/http-foundation/InputBag.php b/vendor/symfony/http-foundation/InputBag.php new file mode 100644 index 000000000..a9d3cd82a --- /dev/null +++ b/vendor/symfony/http-foundation/InputBag.php @@ -0,0 +1,113 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation; + +use Symfony\Component\HttpFoundation\Exception\BadRequestException; + +/** + * InputBag is a container for user input values such as $_GET, $_POST, $_REQUEST, and $_COOKIE. + * + * @author Saif Eddin Gmati <azjezz@protonmail.com> + */ +final class InputBag extends ParameterBag +{ + /** + * Returns a scalar input value by name. + * + * @param string|int|float|bool|null $default The default value if the input key does not exist + * + * @return string|int|float|bool|null + */ + public function get(string $key, $default = null) + { + if (null !== $default && !\is_scalar($default) && !(\is_object($default) && method_exists($default, '__toString'))) { + trigger_deprecation('symfony/http-foundation', '5.1', 'Passing a non-scalar value as 2nd argument to "%s()" is deprecated, pass a scalar or null instead.', __METHOD__); + } + + $value = parent::get($key, $this); + + if (null !== $value && $this !== $value && !\is_scalar($value) && !(\is_object($value) && method_exists($value, '__toString'))) { + trigger_deprecation('symfony/http-foundation', '5.1', 'Retrieving a non-scalar value from "%s()" is deprecated, and will throw a "%s" exception in Symfony 6.0, use "%s::all($key)" instead.', __METHOD__, BadRequestException::class, __CLASS__); + } + + return $this === $value ? $default : $value; + } + + /** + * {@inheritdoc} + */ + public function all(string $key = null): array + { + return parent::all($key); + } + + /** + * Replaces the current input values by a new set. + */ + public function replace(array $inputs = []) + { + $this->parameters = []; + $this->add($inputs); + } + + /** + * Adds input values. + */ + public function add(array $inputs = []) + { + foreach ($inputs as $input => $value) { + $this->set($input, $value); + } + } + + /** + * Sets an input by name. + * + * @param string|int|float|bool|array|null $value + */ + public function set(string $key, $value) + { + if (null !== $value && !\is_scalar($value) && !\is_array($value) && !method_exists($value, '__toString')) { + trigger_deprecation('symfony/http-foundation', '5.1', 'Passing "%s" as a 2nd Argument to "%s()" is deprecated, pass a scalar, array, or null instead.', get_debug_type($value), __METHOD__); + } + + $this->parameters[$key] = $value; + } + + /** + * {@inheritdoc} + */ + public function filter(string $key, $default = null, int $filter = \FILTER_DEFAULT, $options = []) + { + $value = $this->has($key) ? $this->all()[$key] : $default; + + // Always turn $options into an array - this allows filter_var option shortcuts. + if (!\is_array($options) && $options) { + $options = ['flags' => $options]; + } + + if (\is_array($value) && !(($options['flags'] ?? 0) & (\FILTER_REQUIRE_ARRAY | \FILTER_FORCE_ARRAY))) { + trigger_deprecation('symfony/http-foundation', '5.1', 'Filtering an array value with "%s()" without passing the FILTER_REQUIRE_ARRAY or FILTER_FORCE_ARRAY flag is deprecated', __METHOD__); + + if (!isset($options['flags'])) { + $options['flags'] = \FILTER_REQUIRE_ARRAY; + } + } + + if ((\FILTER_CALLBACK & $filter) && !(($options['options'] ?? null) instanceof \Closure)) { + trigger_deprecation('symfony/http-foundation', '5.2', 'Not passing a Closure together with FILTER_CALLBACK to "%s()" is deprecated. Wrap your filter in a closure instead.', __METHOD__); + // throw new \InvalidArgumentException(sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); + } + + return filter_var($value, $filter, $options); + } +} diff --git a/vendor/symfony/http-foundation/IpUtils.php b/vendor/symfony/http-foundation/IpUtils.php index de2112cfc..9a1afa7bf 100644 --- a/vendor/symfony/http-foundation/IpUtils.php +++ b/vendor/symfony/http-foundation/IpUtils.php @@ -30,14 +30,15 @@ class IpUtils /** * Checks if an IPv4 or IPv6 address is contained in the list of given IPs or subnets. * - * @param string $requestIp IP to check - * @param string|array $ips List of IPs or subnets (can be a string if only a single one) + * @param string|array $ips List of IPs or subnets (can be a string if only a single one) * - * @return bool Whether the IP is valid + * @return bool */ - public static function checkIp($requestIp, $ips) + public static function checkIp(?string $requestIp, $ips) { if (null === $requestIp) { + trigger_deprecation('symfony/http-foundation', '5.4', 'Passing null as $requestIp to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + return false; } @@ -60,13 +61,18 @@ class IpUtils * Compares two IPv4 addresses. * In case a subnet is given, it checks if it contains the request IP. * - * @param string $requestIp IPv4 address to check - * @param string $ip IPv4 address or subnet in CIDR notation + * @param string $ip IPv4 address or subnet in CIDR notation * * @return bool Whether the request IP matches the IP, or whether the request IP is within the CIDR subnet */ - public static function checkIp4($requestIp, $ip) + public static function checkIp4(?string $requestIp, string $ip) { + if (null === $requestIp) { + trigger_deprecation('symfony/http-foundation', '5.4', 'Passing null as $requestIp to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + return false; + } + $cacheKey = $requestIp.'-'.$ip; if (isset(self::$checkedIps[$cacheKey])) { return self::$checkedIps[$cacheKey]; @@ -106,15 +112,20 @@ class IpUtils * * @see https://github.com/dsp/v6tools * - * @param string $requestIp IPv6 address to check - * @param string $ip IPv6 address or subnet in CIDR notation + * @param string $ip IPv6 address or subnet in CIDR notation * - * @return bool Whether the IP is valid + * @return bool * * @throws \RuntimeException When IPV6 support is not enabled */ - public static function checkIp6($requestIp, $ip) + public static function checkIp6(?string $requestIp, string $ip) { + if (null === $requestIp) { + trigger_deprecation('symfony/http-foundation', '5.4', 'Passing null as $requestIp to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + return false; + } + $cacheKey = $requestIp.'-'.$ip; if (isset(self::$checkedIps[$cacheKey])) { return self::$checkedIps[$cacheKey]; @@ -125,10 +136,6 @@ class IpUtils } // Check to see if we were given a IP4 $requestIp or $ip by mistake - if (str_contains($requestIp, '.') || str_contains($ip, '.')) { - return self::$checkedIps[$cacheKey] = false; - } - if (!filter_var($requestIp, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) { return self::$checkedIps[$cacheKey] = false; } @@ -136,6 +143,10 @@ class IpUtils if (str_contains($ip, '/')) { [$address, $netmask] = explode('/', $ip, 2); + if (!filter_var($address, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) { + return self::$checkedIps[$cacheKey] = false; + } + if ('0' === $netmask) { return (bool) unpack('n*', @inet_pton($address)); } @@ -144,6 +155,10 @@ class IpUtils return self::$checkedIps[$cacheKey] = false; } } else { + if (!filter_var($ip, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) { + return self::$checkedIps[$cacheKey] = false; + } + $address = $ip; $netmask = 128; } diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php index 4daea10d4..501a6387d 100644 --- a/vendor/symfony/http-foundation/JsonResponse.php +++ b/vendor/symfony/http-foundation/JsonResponse.php @@ -67,9 +67,13 @@ class JsonResponse extends Response * @param array $headers An array of response headers * * @return static + * + * @deprecated since Symfony 5.1, use __construct() instead. */ - public static function create($data = null, $status = 200, $headers = []) + public static function create($data = null, int $status = 200, array $headers = []) { + trigger_deprecation('symfony/http-foundation', '5.1', 'The "%s()" method is deprecated, use "new %s()" instead.', __METHOD__, static::class); + return new static($data, $status, $headers); } @@ -87,7 +91,7 @@ class JsonResponse extends Response * * @return static */ - public static function fromJsonString($data, $status = 200, $headers = []) + public static function fromJsonString(string $data, int $status = 200, array $headers = []) { return new static($data, $status, $headers, true); } @@ -101,7 +105,7 @@ class JsonResponse extends Response * * @throws \InvalidArgumentException When the callback name is not valid */ - public function setCallback($callback = null) + public function setCallback(string $callback = null) { if (null !== $callback) { // partially taken from https://geekality.net/2011/08/03/valid-javascript-identifier/ @@ -130,11 +134,9 @@ class JsonResponse extends Response /** * Sets a raw string containing a JSON document to be sent. * - * @param string $json - * * @return $this */ - public function setJson($json) + public function setJson(string $json) { $this->data = $json; @@ -185,13 +187,11 @@ class JsonResponse extends Response /** * Sets options used while encoding data to JSON. * - * @param int $encodingOptions - * * @return $this */ - public function setEncodingOptions($encodingOptions) + public function setEncodingOptions(int $encodingOptions) { - $this->encodingOptions = (int) $encodingOptions; + $this->encodingOptions = $encodingOptions; return $this->setData(json_decode($this->data)); } diff --git a/vendor/symfony/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php index a2fe0af86..e1f89d69e 100644 --- a/vendor/symfony/http-foundation/ParameterBag.php +++ b/vendor/symfony/http-foundation/ParameterBag.php @@ -11,10 +11,14 @@ namespace Symfony\Component\HttpFoundation; +use Symfony\Component\HttpFoundation\Exception\BadRequestException; + /** * ParameterBag is a container for key/value pairs. * * @author Fabien Potencier <fabien@symfony.com> + * + * @implements \IteratorAggregate<string, mixed> */ class ParameterBag implements \IteratorAggregate, \Countable { @@ -31,17 +35,29 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the parameters. * - * @return array An array of parameters + * @param string|null $key The name of the parameter to return or null to get them all + * + * @return array */ - public function all() + public function all(/* string $key = null */) { - return $this->parameters; + $key = \func_num_args() > 0 ? func_get_arg(0) : null; + + if (null === $key) { + return $this->parameters; + } + + if (!\is_array($value = $this->parameters[$key] ?? [])) { + throw new BadRequestException(sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value))); + } + + return $value; } /** * Returns the parameter keys. * - * @return array An array of parameter keys + * @return array */ public function keys() { @@ -67,12 +83,11 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns a parameter by name. * - * @param string $key The key - * @param mixed $default The default value if the parameter key does not exist + * @param mixed $default The default value if the parameter key does not exist * * @return mixed */ - public function get($key, $default = null) + public function get(string $key, $default = null) { return \array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default; } @@ -80,10 +95,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Sets a parameter by name. * - * @param string $key The key - * @param mixed $value The value + * @param mixed $value The value */ - public function set($key, $value) + public function set(string $key, $value) { $this->parameters[$key] = $value; } @@ -91,21 +105,17 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns true if the parameter is defined. * - * @param string $key The key - * - * @return bool true if the parameter exists, false otherwise + * @return bool */ - public function has($key) + public function has(string $key) { return \array_key_exists($key, $this->parameters); } /** * Removes a parameter. - * - * @param string $key The key */ - public function remove($key) + public function remove(string $key) { unset($this->parameters[$key]); } @@ -113,12 +123,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the alphabetic characters of the parameter value. * - * @param string $key The parameter key - * @param string $default The default value if the parameter key does not exist - * - * @return string The filtered value + * @return string */ - public function getAlpha($key, $default = '') + public function getAlpha(string $key, string $default = '') { return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default)); } @@ -126,12 +133,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the alphabetic characters and digits of the parameter value. * - * @param string $key The parameter key - * @param string $default The default value if the parameter key does not exist - * - * @return string The filtered value + * @return string */ - public function getAlnum($key, $default = '') + public function getAlnum(string $key, string $default = '') { return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default)); } @@ -139,12 +143,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the digits of the parameter value. * - * @param string $key The parameter key - * @param string $default The default value if the parameter key does not exist - * - * @return string The filtered value + * @return string */ - public function getDigits($key, $default = '') + public function getDigits(string $key, string $default = '') { // we need to remove - and + because they're allowed in the filter return str_replace(['-', '+'], '', $this->filter($key, $default, \FILTER_SANITIZE_NUMBER_INT)); @@ -153,12 +154,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the parameter value converted to integer. * - * @param string $key The parameter key - * @param int $default The default value if the parameter key does not exist - * - * @return int The filtered value + * @return int */ - public function getInt($key, $default = 0) + public function getInt(string $key, int $default = 0) { return (int) $this->get($key, $default); } @@ -166,12 +164,9 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the parameter value converted to boolean. * - * @param string $key The parameter key - * @param bool $default The default value if the parameter key does not exist - * - * @return bool The filtered value + * @return bool */ - public function getBoolean($key, $default = false) + public function getBoolean(string $key, bool $default = false) { return $this->filter($key, $default, \FILTER_VALIDATE_BOOLEAN); } @@ -179,16 +174,15 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Filter key. * - * @param string $key Key - * @param mixed $default Default = null - * @param int $filter FILTER_* constant - * @param mixed $options Filter options + * @param mixed $default Default = null + * @param int $filter FILTER_* constant + * @param mixed $options Filter options * * @see https://php.net/filter-var * * @return mixed */ - public function filter($key, $default = null, $filter = \FILTER_DEFAULT, $options = []) + public function filter(string $key, $default = null, int $filter = \FILTER_DEFAULT, $options = []) { $value = $this->get($key, $default); @@ -202,13 +196,18 @@ class ParameterBag implements \IteratorAggregate, \Countable $options['flags'] = \FILTER_REQUIRE_ARRAY; } + if ((\FILTER_CALLBACK & $filter) && !(($options['options'] ?? null) instanceof \Closure)) { + trigger_deprecation('symfony/http-foundation', '5.2', 'Not passing a Closure together with FILTER_CALLBACK to "%s()" is deprecated. Wrap your filter in a closure instead.', __METHOD__); + // throw new \InvalidArgumentException(sprintf('A Closure must be passed to "%s()" when FILTER_CALLBACK is used, "%s" given.', __METHOD__, get_debug_type($options['options'] ?? null))); + } + return filter_var($value, $filter, $options); } /** * Returns an iterator for parameters. * - * @return \ArrayIterator An \ArrayIterator instance + * @return \ArrayIterator<string, mixed> */ #[\ReturnTypeWillChange] public function getIterator() @@ -219,7 +218,7 @@ class ParameterBag implements \IteratorAggregate, \Countable /** * Returns the number of parameters. * - * @return int The number of parameters + * @return int */ #[\ReturnTypeWillChange] public function count() diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md index 5cf900744..424f2c4f0 100644 --- a/vendor/symfony/http-foundation/README.md +++ b/vendor/symfony/http-foundation/README.md @@ -4,6 +4,16 @@ HttpFoundation Component The HttpFoundation component defines an object-oriented layer for the HTTP specification. +Sponsor +------- + +The HttpFoundation component for Symfony 5.4/6.0 is [backed][1] by [Laravel][2]. + +Laravel is a PHP web development framework that is passionate about maximum developer +happiness. Laravel is built using a variety of bespoke and Symfony based components. + +Help Symfony by [sponsoring][3] its development! + Resources --------- @@ -12,3 +22,7 @@ Resources * [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls) in the [main Symfony repository](https://github.com/symfony/symfony) + +[1]: https://symfony.com/backers +[2]: https://laravel.com/ +[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php b/vendor/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php new file mode 100644 index 000000000..a6dd993b7 --- /dev/null +++ b/vendor/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php @@ -0,0 +1,71 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\RateLimiter; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\RateLimiter\LimiterInterface; +use Symfony\Component\RateLimiter\Policy\NoLimiter; +use Symfony\Component\RateLimiter\RateLimit; + +/** + * An implementation of RequestRateLimiterInterface that + * fits most use-cases. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +abstract class AbstractRequestRateLimiter implements RequestRateLimiterInterface +{ + public function consume(Request $request): RateLimit + { + $limiters = $this->getLimiters($request); + if (0 === \count($limiters)) { + $limiters = [new NoLimiter()]; + } + + $minimalRateLimit = null; + foreach ($limiters as $limiter) { + $rateLimit = $limiter->consume(1); + + $minimalRateLimit = $minimalRateLimit ? self::getMinimalRateLimit($minimalRateLimit, $rateLimit) : $rateLimit; + } + + return $minimalRateLimit; + } + + public function reset(Request $request): void + { + foreach ($this->getLimiters($request) as $limiter) { + $limiter->reset(); + } + } + + /** + * @return LimiterInterface[] a set of limiters using keys extracted from the request + */ + abstract protected function getLimiters(Request $request): array; + + private static function getMinimalRateLimit(RateLimit $first, RateLimit $second): RateLimit + { + if ($first->isAccepted() !== $second->isAccepted()) { + return $first->isAccepted() ? $second : $first; + } + + $firstRemainingTokens = $first->getRemainingTokens(); + $secondRemainingTokens = $second->getRemainingTokens(); + + if ($firstRemainingTokens === $secondRemainingTokens) { + return $first->getRetryAfter() < $second->getRetryAfter() ? $second : $first; + } + + return $firstRemainingTokens > $secondRemainingTokens ? $second : $first; + } +} diff --git a/vendor/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php b/vendor/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php new file mode 100644 index 000000000..4c87a40a8 --- /dev/null +++ b/vendor/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php @@ -0,0 +1,30 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\RateLimiter; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\RateLimiter\RateLimit; + +/** + * A special type of limiter that deals with requests. + * + * This allows to limit on different types of information + * from the requests. + * + * @author Wouter de Jong <wouter@wouterj.nl> + */ +interface RequestRateLimiterInterface +{ + public function consume(Request $request): RateLimit; + + public function reset(Request $request): void; +} diff --git a/vendor/symfony/http-foundation/RedirectResponse.php b/vendor/symfony/http-foundation/RedirectResponse.php index 6348aca50..2103280c6 100644 --- a/vendor/symfony/http-foundation/RedirectResponse.php +++ b/vendor/symfony/http-foundation/RedirectResponse.php @@ -32,13 +32,8 @@ class RedirectResponse extends Response * * @see https://tools.ietf.org/html/rfc2616#section-10.3 */ - public function __construct(?string $url, int $status = 302, array $headers = []) + public function __construct(string $url, int $status = 302, array $headers = []) { - if (null === $url) { - @trigger_error(sprintf('Passing a null url when instantiating a "%s" is deprecated since Symfony 4.4.', __CLASS__), \E_USER_DEPRECATED); - $url = ''; - } - parent::__construct('', $status, $headers); $this->setTargetUrl($url); @@ -55,21 +50,23 @@ class RedirectResponse extends Response /** * Factory method for chainability. * - * @param string $url The url to redirect to - * @param int $status The response status code - * @param array $headers An array of response headers + * @param string $url The URL to redirect to * * @return static + * + * @deprecated since Symfony 5.1, use __construct() instead. */ - public static function create($url = '', $status = 302, $headers = []) + public static function create($url = '', int $status = 302, array $headers = []) { + trigger_deprecation('symfony/http-foundation', '5.1', 'The "%s()" method is deprecated, use "new %s()" instead.', __METHOD__, static::class); + return new static($url, $status, $headers); } /** * Returns the target URL. * - * @return string target URL + * @return string */ public function getTargetUrl() { @@ -79,15 +76,13 @@ class RedirectResponse extends Response /** * Sets the redirect target of this response. * - * @param string $url The URL to redirect to - * * @return $this * * @throws \InvalidArgumentException */ - public function setTargetUrl($url) + public function setTargetUrl(string $url) { - if ('' === ($url ?? '')) { + if ('' === $url) { throw new \InvalidArgumentException('Cannot redirect to an empty URL.'); } diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php index 32e07b532..10f779d27 100644 --- a/vendor/symfony/http-foundation/Request.php +++ b/vendor/symfony/http-foundation/Request.php @@ -12,6 +12,8 @@ namespace Symfony\Component\HttpFoundation; use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; +use Symfony\Component\HttpFoundation\Exception\JsonException; +use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -20,6 +22,7 @@ class_exists(AcceptHeader::class); class_exists(FileBag::class); class_exists(HeaderBag::class); class_exists(HeaderUtils::class); +class_exists(InputBag::class); class_exists(ParameterBag::class); class_exists(ServerBag::class); @@ -38,13 +41,17 @@ class_exists(ServerBag::class); */ class Request { - public const HEADER_FORWARDED = 0b00001; // When using RFC 7239 - public const HEADER_X_FORWARDED_FOR = 0b00010; - public const HEADER_X_FORWARDED_HOST = 0b00100; - public const HEADER_X_FORWARDED_PROTO = 0b01000; - public const HEADER_X_FORWARDED_PORT = 0b10000; - public const HEADER_X_FORWARDED_ALL = 0b11110; // All "X-Forwarded-*" headers - public const HEADER_X_FORWARDED_AWS_ELB = 0b11010; // AWS ELB doesn't send X-Forwarded-Host + public const HEADER_FORWARDED = 0b000001; // When using RFC 7239 + public const HEADER_X_FORWARDED_FOR = 0b000010; + public const HEADER_X_FORWARDED_HOST = 0b000100; + public const HEADER_X_FORWARDED_PROTO = 0b001000; + public const HEADER_X_FORWARDED_PORT = 0b010000; + public const HEADER_X_FORWARDED_PREFIX = 0b100000; + + /** @deprecated since Symfony 5.2, use either "HEADER_X_FORWARDED_FOR | HEADER_X_FORWARDED_HOST | HEADER_X_FORWARDED_PORT | HEADER_X_FORWARDED_PROTO" or "HEADER_X_FORWARDED_AWS_ELB" or "HEADER_X_FORWARDED_TRAEFIK" constants instead. */ + public const HEADER_X_FORWARDED_ALL = 0b1011110; // All "X-Forwarded-*" headers sent by "usual" reverse proxy + public const HEADER_X_FORWARDED_AWS_ELB = 0b0011010; // AWS ELB doesn't send X-Forwarded-Host + public const HEADER_X_FORWARDED_TRAEFIK = 0b0111110; // All "X-Forwarded-*" headers sent by Traefik reverse proxy public const METHOD_HEAD = 'HEAD'; public const METHOD_GET = 'GET'; @@ -84,14 +91,14 @@ class Request /** * Request body parameters ($_POST). * - * @var ParameterBag + * @var InputBag */ public $request; /** * Query string parameters ($_GET). * - * @var ParameterBag + * @var InputBag */ public $query; @@ -112,7 +119,7 @@ class Request /** * Cookies ($_COOKIE). * - * @var ParameterBag + * @var InputBag */ public $cookies; @@ -179,7 +186,7 @@ class Request protected $format; /** - * @var SessionInterface|callable + * @var SessionInterface|callable(): SessionInterface */ protected $session; @@ -207,6 +214,11 @@ class Request private $isHostValid = true; private $isForwardedValid = true; + /** + * @var bool|null + */ + private $isSafeContentPreferred; + private static $trustedHeaderSet = -1; private const FORWARDED_PARAMS = [ @@ -231,6 +243,7 @@ class Request self::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', self::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', self::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', + self::HEADER_X_FORWARDED_PREFIX => 'X_FORWARDED_PREFIX', ]; /** @@ -262,10 +275,10 @@ class Request */ public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) { - $this->request = new ParameterBag($request); - $this->query = new ParameterBag($query); + $this->request = new InputBag($request); + $this->query = new InputBag($query); $this->attributes = new ParameterBag($attributes); - $this->cookies = new ParameterBag($cookies); + $this->cookies = new InputBag($cookies); $this->files = new FileBag($files); $this->server = new ServerBag($server); $this->headers = new HeaderBag($this->server->getHeaders()); @@ -296,7 +309,7 @@ class Request && \in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), ['PUT', 'DELETE', 'PATCH']) ) { parse_str($request->getContent(), $data); - $request->request = new ParameterBag($data); + $request->request = new InputBag($data); } return $request; @@ -318,7 +331,7 @@ class Request * * @return static */ - public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) + public static function create(string $uri, string $method = 'GET', array $parameters = [], array $cookies = [], array $files = [], array $server = [], $content = null) { $server = array_replace([ 'SERVER_NAME' => 'localhost', @@ -417,10 +430,8 @@ class Request * This is mainly useful when you need to override the Request class * to keep BC with an existing system. It should not be used for any * other purpose. - * - * @param callable|null $callable A PHP callable */ - public static function setFactory($callable) + public static function setFactory(?callable $callable) { self::$requestFactory = $callable; } @@ -441,16 +452,16 @@ class Request { $dup = clone $this; if (null !== $query) { - $dup->query = new ParameterBag($query); + $dup->query = new InputBag($query); } if (null !== $request) { - $dup->request = new ParameterBag($request); + $dup->request = new InputBag($request); } if (null !== $attributes) { $dup->attributes = new ParameterBag($attributes); } if (null !== $cookies) { - $dup->cookies = new ParameterBag($cookies); + $dup->cookies = new InputBag($cookies); } if (null !== $files) { $dup->files = new FileBag($files); @@ -501,7 +512,7 @@ class Request /** * Returns the request as a string. * - * @return string The request + * @return string */ public function __toString() { @@ -511,10 +522,10 @@ class Request $cookies = []; foreach ($this->cookies as $k => $v) { - $cookies[] = $k.'='.$v; + $cookies[] = \is_array($v) ? http_build_query([$k => $v], '', '; ', \PHP_QUERY_RFC3986) : "$k=$v"; } - if (!empty($cookies)) { + if ($cookies) { $cookieHeader = 'Cookie: '.implode('; ', $cookies)."\r\n"; } @@ -573,6 +584,9 @@ class Request */ public static function setTrustedProxies(array $proxies, int $trustedHeaderSet) { + if (self::HEADER_X_FORWARDED_ALL === $trustedHeaderSet) { + trigger_deprecation('symfony/http-foundation', '5.2', 'The "HEADER_X_FORWARDED_ALL" constant is deprecated, use either "HEADER_X_FORWARDED_FOR | HEADER_X_FORWARDED_HOST | HEADER_X_FORWARDED_PORT | HEADER_X_FORWARDED_PROTO" or "HEADER_X_FORWARDED_AWS_ELB" or "HEADER_X_FORWARDED_TRAEFIK" constants instead.'); + } self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) { if ('REMOTE_ADDR' !== $proxy) { $proxies[] = $proxy; @@ -588,7 +602,7 @@ class Request /** * Gets the list of trusted proxies. * - * @return array An array of trusted proxies + * @return array */ public static function getTrustedProxies() { @@ -624,7 +638,7 @@ class Request /** * Gets the list of trusted host patterns. * - * @return array An array of trusted host patterns + * @return array */ public static function getTrustedHosts() { @@ -637,17 +651,15 @@ class Request * It builds a normalized query string, where keys/value pairs are alphabetized, * have consistent escaping and unneeded delimiters are removed. * - * @param string $qs Query string - * - * @return string A normalized query string for the Request + * @return string */ - public static function normalizeQueryString($qs) + public static function normalizeQueryString(?string $qs) { if ('' === ($qs ?? '')) { return ''; } - parse_str($qs, $qs); + $qs = HeaderUtils::parseQuery($qs); ksort($qs); return http_build_query($qs, '', '&', \PHP_QUERY_RFC3986); @@ -672,7 +684,7 @@ class Request /** * Checks whether support for the _method request parameter is enabled. * - * @return bool True when the _method request parameter is enabled, false otherwise + * @return bool */ public static function getHttpMethodParameterOverride() { @@ -688,23 +700,24 @@ class Request * * Order of precedence: PATH (routing placeholders or custom attributes), GET, POST * - * @param string $key The key - * @param mixed $default The default value if the parameter key does not exist + * @param mixed $default The default value if the parameter key does not exist * * @return mixed + * + * @internal since Symfony 5.4, use explicit input sources instead */ - public function get($key, $default = null) + public function get(string $key, $default = null) { if ($this !== $result = $this->attributes->get($key, $this)) { return $result; } - if ($this !== $result = $this->query->get($key, $this)) { - return $result; + if ($this->query->has($key)) { + return $this->query->all()[$key]; } - if ($this !== $result = $this->request->get($key, $this)) { - return $result; + if ($this->request->has($key)) { + return $this->request->all()[$key]; } return $default; @@ -713,7 +726,7 @@ class Request /** * Gets the Session. * - * @return SessionInterface The session + * @return SessionInterface */ public function getSession() { @@ -723,8 +736,7 @@ class Request } if (null === $session) { - @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), \E_USER_DEPRECATED); - // throw new \BadMethodCallException('Session has not been set.'); + throw new SessionNotFoundException('Session has not been set.'); } return $session; @@ -749,11 +761,15 @@ class Request * like whether the session is started or not. It is just a way to check if this Request * is associated with a Session instance. * - * @return bool true when the Request contains a Session object, false otherwise + * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` + * + * @return bool */ - public function hasSession() + public function hasSession(/* bool $skipIfUninitialized = false */) { - return null !== $this->session; + $skipIfUninitialized = \func_num_args() > 0 ? func_get_arg(0) : false; + + return null !== $this->session && (!$skipIfUninitialized || $this->session instanceof SessionInterface); } public function setSession(SessionInterface $session) @@ -763,6 +779,8 @@ class Request /** * @internal + * + * @param callable(): SessionInterface $factory */ public function setSessionFactory(callable $factory) { @@ -778,7 +796,7 @@ class Request * * Use this method carefully; you should use getClientIp() instead. * - * @return array The client IP addresses + * @return array * * @see getClientIp() */ @@ -806,7 +824,7 @@ class Request * ("Client-Ip" for instance), configure it via the $trustedHeaderSet * argument of the Request::setTrustedProxies() method instead. * - * @return string|null The client IP address + * @return string|null * * @see getClientIps() * @see https://wikipedia.org/wiki/X-Forwarded-For @@ -883,6 +901,24 @@ class Request * @return string The raw URL (i.e. not urldecoded) */ public function getBaseUrl() + { + $trustedPrefix = ''; + + // the proxy prefix must be prepended to any prefix being needed at the webserver level + if ($this->isFromTrustedProxy() && $trustedPrefixValues = $this->getTrustedValues(self::HEADER_X_FORWARDED_PREFIX)) { + $trustedPrefix = rtrim($trustedPrefixValues[0], '/'); + } + + return $trustedPrefix.$this->getBaseUrlReal(); + } + + /** + * Returns the real base URL received by the webserver from which this request is executed. + * The URL does not include trusted reverse proxy prefix. + * + * @return string The raw URL (i.e. not urldecoded) + */ + private function getBaseUrlReal(): string { if (null === $this->baseUrl) { $this->baseUrl = $this->prepareBaseUrl(); @@ -909,7 +945,7 @@ class Request * * The "X-Forwarded-Port" header must contain the client port. * - * @return int|string can be a string if fetched from the server bag + * @return int|string|null Can be a string if fetched from the server bag */ public function getPort() { @@ -1010,7 +1046,7 @@ class Request * If the URL was called with basic authentication, the user * and the password are not added to the generated string. * - * @return string The scheme and HTTP host + * @return string */ public function getSchemeAndHttpHost() { @@ -1020,7 +1056,7 @@ class Request /** * Generates a normalized URI (URL) for the Request. * - * @return string A normalized URI (URL) for the Request + * @return string * * @see getQueryString() */ @@ -1038,9 +1074,9 @@ class Request * * @param string $path A path to use instead of the current one * - * @return string The normalized URI for the path + * @return string */ - public function getUriForPath($path) + public function getUriForPath(string $path) { return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path; } @@ -1060,11 +1096,9 @@ class Request * - "/a/b/c/other" -> "other" * - "/a/x/y" -> "../../x/y" * - * @param string $path The target path - * - * @return string The relative target path + * @return string */ - public function getRelativeUriForPath($path) + public function getRelativeUriForPath(string $path) { // be sure that we are dealing with an absolute path if (!isset($path[0]) || '/' !== $path[0]) { @@ -1106,7 +1140,7 @@ class Request * It builds a normalized query string, where keys/value pairs are alphabetized * and have consistent escaping. * - * @return string|null A normalized query string for the Request + * @return string|null */ public function getQueryString() { @@ -1202,10 +1236,8 @@ class Request /** * Sets the request method. - * - * @param string $method */ - public function setMethod($method) + public function setMethod(string $method) { $this->method = null; $this->server->set('REQUEST_METHOD', $method); @@ -1222,7 +1254,7 @@ class Request * * The method is always an uppercased string. * - * @return string The request method + * @return string * * @see getRealMethod() */ @@ -1264,7 +1296,7 @@ class Request /** * Gets the "real" request method. * - * @return string The request method + * @return string * * @see getMethod() */ @@ -1276,11 +1308,9 @@ class Request /** * Gets the mime type associated with the format. * - * @param string $format The format - * - * @return string|null The associated mime type (null if not found) + * @return string|null */ - public function getMimeType($format) + public function getMimeType(string $format) { if (null === static::$formats) { static::initializeFormats(); @@ -1292,11 +1322,9 @@ class Request /** * Gets the mime types associated with the format. * - * @param string $format The format - * - * @return array The associated mime types + * @return array */ - public static function getMimeTypes($format) + public static function getMimeTypes(string $format) { if (null === static::$formats) { static::initializeFormats(); @@ -1308,14 +1336,12 @@ class Request /** * Gets the format associated with the mime type. * - * @param string $mimeType The associated mime type - * - * @return string|null The format (null if not found) + * @return string|null */ - public function getFormat($mimeType) + public function getFormat(?string $mimeType) { $canonicalMimeType = null; - if (false !== $pos = strpos($mimeType, ';')) { + if ($mimeType && false !== $pos = strpos($mimeType, ';')) { $canonicalMimeType = trim(substr($mimeType, 0, $pos)); } @@ -1338,10 +1364,9 @@ class Request /** * Associates a format with mime types. * - * @param string $format The format * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) */ - public function setFormat($format, $mimeTypes) + public function setFormat(?string $format, $mimeTypes) { if (null === static::$formats) { static::initializeFormats(); @@ -1361,11 +1386,9 @@ class Request * * @see getPreferredFormat * - * @param string|null $default The default format - * - * @return string|null The request format + * @return string|null */ - public function getRequestFormat($default = 'html') + public function getRequestFormat(?string $default = 'html') { if (null === $this->format) { $this->format = $this->attributes->get('_format'); @@ -1376,10 +1399,8 @@ class Request /** * Sets the request format. - * - * @param string $format The request format */ - public function setRequestFormat($format) + public function setRequestFormat(?string $format) { $this->format = $format; } @@ -1387,7 +1408,7 @@ class Request /** * Gets the format associated with the request. * - * @return string|null The format (null if no content type is present) + * @return string|null */ public function getContentType() { @@ -1396,10 +1417,8 @@ class Request /** * Sets the default locale. - * - * @param string $locale */ - public function setDefaultLocale($locale) + public function setDefaultLocale(string $locale) { $this->defaultLocale = $locale; @@ -1420,10 +1439,8 @@ class Request /** * Sets the locale. - * - * @param string $locale */ - public function setLocale($locale) + public function setLocale(string $locale) { $this->setPhpDefaultLocale($this->locale = $locale); } @@ -1445,7 +1462,7 @@ class Request * * @return bool */ - public function isMethod($method) + public function isMethod(string $method) { return $this->getMethod() === strtoupper($method); } @@ -1459,10 +1476,6 @@ class Request */ public function isMethodSafe() { - if (\func_num_args() > 0) { - @trigger_error(sprintf('Passing arguments to "%s()" has been deprecated since Symfony 4.4; use "%s::isMethodCacheable()" to check if the method is cacheable instead.', __METHOD__, __CLASS__), \E_USER_DEPRECATED); - } - return \in_array($this->getMethod(), ['GET', 'HEAD', 'OPTIONS', 'TRACE']); } @@ -1481,7 +1494,7 @@ class Request * * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 * - * @return bool True for GET and HEAD, false otherwise + * @return bool */ public function isMethodCacheable() { @@ -1517,9 +1530,9 @@ class Request * * @param bool $asResource If true, a resource will be returned * - * @return string|resource The request body content or a resource to read the body stream + * @return string|resource */ - public function getContent($asResource = false) + public function getContent(bool $asResource = false) { $currentContentIsResource = \is_resource($this->content); @@ -1557,10 +1570,40 @@ class Request return $this->content; } + /** + * Gets the request body decoded as array, typically from a JSON payload. + * + * @throws JsonException When the body cannot be decoded to an array + * + * @return array + */ + public function toArray() + { + if ('' === $content = $this->getContent()) { + throw new JsonException('Request body is empty.'); + } + + try { + $content = json_decode($content, true, 512, \JSON_BIGINT_AS_STRING | (\PHP_VERSION_ID >= 70300 ? \JSON_THROW_ON_ERROR : 0)); + } catch (\JsonException $e) { + throw new JsonException('Could not decode request body.', $e->getCode(), $e); + } + + if (\PHP_VERSION_ID < 70300 && \JSON_ERROR_NONE !== json_last_error()) { + throw new JsonException('Could not decode request body: '.json_last_error_msg(), json_last_error()); + } + + if (!\is_array($content)) { + throw new JsonException(sprintf('JSON content was expected to decode to an array, "%s" returned.', get_debug_type($content))); + } + + return $content; + } + /** * Gets the Etags. * - * @return array The entity tags + * @return array */ public function getETags() { @@ -1577,7 +1620,7 @@ class Request /** * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat + * * the request format set using setRequestFormat; * * the values of the Accept HTTP header. * * Note that if you use this method, you should send the "Vary: Accept" header @@ -1603,7 +1646,7 @@ class Request * * @param string[] $locales An array of ordered available locales * - * @return string|null The preferred locale + * @return string|null */ public function getPreferredLanguage(array $locales = null) { @@ -1634,9 +1677,9 @@ class Request } /** - * Gets a list of languages acceptable by the client browser. + * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. * - * @return array Languages ordered in the user browser preferences + * @return array */ public function getLanguages() { @@ -1675,9 +1718,9 @@ class Request } /** - * Gets a list of charsets acceptable by the client browser. + * Gets a list of charsets acceptable by the client browser in preferable order. * - * @return array List of charsets in preferable order + * @return array */ public function getCharsets() { @@ -1689,9 +1732,9 @@ class Request } /** - * Gets a list of encodings acceptable by the client browser. + * Gets a list of encodings acceptable by the client browser in preferable order. * - * @return array List of encodings in preferable order + * @return array */ public function getEncodings() { @@ -1703,9 +1746,9 @@ class Request } /** - * Gets a list of content types acceptable by the client browser. + * Gets a list of content types acceptable by the client browser in preferable order. * - * @return array List of content types in preferable order + * @return array */ public function getAcceptableContentTypes() { @@ -1724,13 +1767,32 @@ class Request * * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript * - * @return bool true if the request is an XMLHttpRequest, false otherwise + * @return bool */ public function isXmlHttpRequest() { return 'XMLHttpRequest' == $this->headers->get('X-Requested-With'); } + /** + * Checks whether the client browser prefers safe content or not according to RFC8674. + * + * @see https://tools.ietf.org/html/rfc8674 + */ + public function preferSafeContent(): bool + { + if (null !== $this->isSafeContentPreferred) { + return $this->isSafeContentPreferred; + } + + if (!$this->isSecure()) { + // see https://tools.ietf.org/html/rfc8674#section-3 + return $this->isSafeContentPreferred = false; + } + + return $this->isSafeContentPreferred = AcceptHeader::fromString($this->headers->get('Prefer'))->has('safe'); + } + /* * The following methods are derived from code of the Zend Framework (1.10dev - 2010-01-24) * @@ -1856,7 +1918,7 @@ class Request /** * Prepares the base path. * - * @return string base path + * @return string */ protected function prepareBasePath() { @@ -1882,7 +1944,7 @@ class Request /** * Prepares the path info. * - * @return string path info + * @return string */ protected function preparePathInfo() { @@ -1898,7 +1960,7 @@ class Request $requestUri = '/'.$requestUri; } - if (null === ($baseUrl = $this->getBaseUrl())) { + if (null === ($baseUrl = $this->getBaseUrlReal())) { return $requestUri; } @@ -1927,7 +1989,7 @@ class Request 'rdf' => ['application/rdf+xml'], 'atom' => ['application/atom+xml'], 'rss' => ['application/rss+xml'], - 'form' => ['application/x-www-form-urlencoded'], + 'form' => ['application/x-www-form-urlencoded', 'multipart/form-data'], ]; } @@ -1984,7 +2046,7 @@ class Request * This can be useful to determine whether or not to trust the * contents of a proxy-specific header. * - * @return bool true if the request came from a trusted proxy, false otherwise + * @return bool */ public function isFromTrustedProxy() { @@ -2002,7 +2064,7 @@ class Request } } - if ((self::$trustedHeaderSet & self::HEADER_FORWARDED) && $this->headers->has(self::TRUSTED_HEADERS[self::HEADER_FORWARDED])) { + if ((self::$trustedHeaderSet & self::HEADER_FORWARDED) && (isset(self::FORWARDED_PARAMS[$type])) && $this->headers->has(self::TRUSTED_HEADERS[self::HEADER_FORWARDED])) { $forwarded = $this->headers->get(self::TRUSTED_HEADERS[self::HEADER_FORWARDED]); $parts = HeaderUtils::split($forwarded, ',;='); $forwardedValues = []; diff --git a/vendor/symfony/http-foundation/RequestMatcher.php b/vendor/symfony/http-foundation/RequestMatcher.php index 82be2d868..f2645f9ae 100644 --- a/vendor/symfony/http-foundation/RequestMatcher.php +++ b/vendor/symfony/http-foundation/RequestMatcher.php @@ -84,10 +84,8 @@ class RequestMatcher implements RequestMatcherInterface /** * Adds a check for the URL host name. - * - * @param string|null $regexp A Regexp */ - public function matchHost($regexp) + public function matchHost(?string $regexp) { $this->host = $regexp; } @@ -104,10 +102,8 @@ class RequestMatcher implements RequestMatcherInterface /** * Adds a check for the URL path info. - * - * @param string|null $regexp A Regexp */ - public function matchPath($regexp) + public function matchPath(?string $regexp) { $this->path = $regexp; } @@ -117,7 +113,7 @@ class RequestMatcher implements RequestMatcherInterface * * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24 */ - public function matchIp($ip) + public function matchIp(string $ip) { $this->matchIps($ip); } @@ -129,7 +125,11 @@ class RequestMatcher implements RequestMatcherInterface */ public function matchIps($ips) { - $this->ips = null !== $ips ? (array) $ips : []; + $ips = null !== $ips ? (array) $ips : []; + + $this->ips = array_reduce($ips, static function (array $ips, string $ip) { + return array_merge($ips, preg_split('/\s*,\s*/', $ip)); + }, []); } /** @@ -144,11 +144,8 @@ class RequestMatcher implements RequestMatcherInterface /** * Adds a check for request attribute. - * - * @param string $key The request attribute name - * @param string $regexp A Regexp */ - public function matchAttribute($key, $regexp) + public function matchAttribute(string $key, string $regexp) { $this->attributes[$key] = $regexp; } @@ -188,7 +185,7 @@ class RequestMatcher implements RequestMatcherInterface return false; } - if (IpUtils::checkIp($request->getClientIp(), $this->ips)) { + if (IpUtils::checkIp($request->getClientIp() ?? '', $this->ips)) { return true; } diff --git a/vendor/symfony/http-foundation/RequestMatcherInterface.php b/vendor/symfony/http-foundation/RequestMatcherInterface.php index c26db3e6f..c2e147858 100644 --- a/vendor/symfony/http-foundation/RequestMatcherInterface.php +++ b/vendor/symfony/http-foundation/RequestMatcherInterface.php @@ -21,7 +21,7 @@ interface RequestMatcherInterface /** * Decides whether the rule(s) implemented by the strategy matches the supplied request. * - * @return bool true if the request matches, false otherwise + * @return bool */ public function matches(Request $request); } diff --git a/vendor/symfony/http-foundation/RequestStack.php b/vendor/symfony/http-foundation/RequestStack.php index 7e45a903e..855b51816 100644 --- a/vendor/symfony/http-foundation/RequestStack.php +++ b/vendor/symfony/http-foundation/RequestStack.php @@ -11,6 +11,9 @@ namespace Symfony\Component\HttpFoundation; +use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; +use Symfony\Component\HttpFoundation\Session\SessionInterface; + /** * Request stack that controls the lifecycle of requests. * @@ -62,15 +65,13 @@ class RequestStack } /** - * Gets the master Request. + * Gets the main request. * - * Be warned that making your code aware of the master request + * Be warned that making your code aware of the main request * might make it un-compatible with other features of your framework * like ESI support. - * - * @return Request|null */ - public function getMasterRequest() + public function getMainRequest(): ?Request { if (!$this->requests) { return null; @@ -79,6 +80,20 @@ class RequestStack return $this->requests[0]; } + /** + * Gets the master request. + * + * @return Request|null + * + * @deprecated since symfony/http-foundation 5.3, use getMainRequest() instead + */ + public function getMasterRequest() + { + trigger_deprecation('symfony/http-foundation', '5.3', '"%s()" is deprecated, use "getMainRequest()" instead.', __METHOD__); + + return $this->getMainRequest(); + } + /** * Returns the parent request of the current. * @@ -86,7 +101,7 @@ class RequestStack * might make it un-compatible with other features of your framework * like ESI support. * - * If current Request is the master request, it returns null. + * If current Request is the main request, it returns null. * * @return Request|null */ @@ -96,4 +111,18 @@ class RequestStack return $this->requests[$pos] ?? null; } + + /** + * Gets the current session. + * + * @throws SessionNotFoundException + */ + public function getSession(): SessionInterface + { + if ((null !== $request = end($this->requests) ?: null) && $request->hasSession()) { + return $request->getSession(); + } + + throw new SessionNotFoundException(); + } } diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php index 75f64fa9e..d5c8cb45c 100644 --- a/vendor/symfony/http-foundation/Response.php +++ b/vendor/symfony/http-foundation/Response.php @@ -67,11 +67,6 @@ class Response public const HTTP_UNPROCESSABLE_ENTITY = 422; // RFC4918 public const HTTP_LOCKED = 423; // RFC4918 public const HTTP_FAILED_DEPENDENCY = 424; // RFC4918 - - /** - * @deprecated - */ - public const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; // RFC2817 public const HTTP_TOO_EARLY = 425; // RFC-ietf-httpbis-replay-04 public const HTTP_UPGRADE_REQUIRED = 426; // RFC2817 public const HTTP_PRECONDITION_REQUIRED = 428; // RFC6585 @@ -90,6 +85,24 @@ class Response public const HTTP_NOT_EXTENDED = 510; // RFC2774 public const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; // RFC6585 + /** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control + */ + private const HTTP_RESPONSE_CACHE_CONTROL_DIRECTIVES = [ + 'must_revalidate' => false, + 'no_cache' => false, + 'no_store' => false, + 'no_transform' => false, + 'public' => false, + 'private' => false, + 'proxy_revalidate' => false, + 'max_age' => true, + 's_maxage' => true, + 'immutable' => false, + 'last_modified' => true, + 'etag' => true, + ]; + /** * @var ResponseHeaderBag */ @@ -125,7 +138,7 @@ class Response * * The list of codes is complete according to the * {@link https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml Hypertext Transfer Protocol (HTTP) Status Code Registry} - * (last updated 2018-09-21). + * (last updated 2021-10-01). * * Unless otherwise noted, the status code is defined in RFC2616. * @@ -167,14 +180,14 @@ class Response 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', - 413 => 'Payload Too Large', + 413 => 'Content Too Large', // RFC-ietf-httpbis-semantics 414 => 'URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Range Not Satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', // RFC2324 421 => 'Misdirected Request', // RFC7540 - 422 => 'Unprocessable Entity', // RFC4918 + 422 => 'Unprocessable Content', // RFC-ietf-httpbis-semantics 423 => 'Locked', // RFC4918 424 => 'Failed Dependency', // RFC4918 425 => 'Too Early', // RFC-ietf-httpbis-replay-04 @@ -199,7 +212,7 @@ class Response /** * @throws \InvalidArgumentException When the HTTP status code is not valid */ - public function __construct($content = '', int $status = 200, array $headers = []) + public function __construct(?string $content = '', int $status = 200, array $headers = []) { $this->headers = new ResponseHeaderBag($headers); $this->setContent($content); @@ -215,14 +228,14 @@ class Response * return Response::create($body, 200) * ->setSharedMaxAge(300); * - * @param mixed $content The response content, see setContent() - * @param int $status The response status code - * @param array $headers An array of response headers - * * @return static + * + * @deprecated since Symfony 5.1, use __construct() instead. */ - public static function create($content = '', $status = 200, $headers = []) + public static function create(?string $content = '', int $status = 200, array $headers = []) { + trigger_deprecation('symfony/http-foundation', '5.1', 'The "%s()" method is deprecated, use "new %s()" instead.', __METHOD__, static::class); + return new static($content, $status, $headers); } @@ -233,7 +246,7 @@ class Response * one that will be sent to the client only if the prepare() method * has been called before. * - * @return string The Response as an HTTP string + * @return string * * @see prepare() */ @@ -382,6 +395,8 @@ class Response if (\function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); + } elseif (\function_exists('litespeed_finish_request')) { + litespeed_finish_request(); } elseif (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) { static::closeOutputBuffers(0, true); flush(); @@ -393,21 +408,11 @@ class Response /** * Sets the response content. * - * Valid types are strings, numbers, null, and objects that implement a __toString() method. - * - * @param mixed $content Content that can be cast to string - * * @return $this - * - * @throws \UnexpectedValueException */ - public function setContent($content) + public function setContent(?string $content) { - if (null !== $content && !\is_string($content) && !is_numeric($content) && !\is_callable([$content, '__toString'])) { - throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', \gettype($content))); - } - - $this->content = (string) $content; + $this->content = $content ?? ''; return $this; } @@ -429,7 +434,7 @@ class Response * * @final */ - public function setProtocolVersion(string $version) + public function setProtocolVersion(string $version): object { $this->version = $version; @@ -458,7 +463,7 @@ class Response * * @final */ - public function setStatusCode(int $code, $text = null) + public function setStatusCode(int $code, string $text = null): object { $this->statusCode = $code; if ($this->isInvalid()) { @@ -499,7 +504,7 @@ class Response * * @final */ - public function setCharset(string $charset) + public function setCharset(string $charset): object { $this->charset = $charset; @@ -580,7 +585,7 @@ class Response * * @final */ - public function setPrivate() + public function setPrivate(): object { $this->headers->removeCacheControlDirective('public'); $this->headers->addCacheControlDirective('private'); @@ -597,7 +602,7 @@ class Response * * @final */ - public function setPublic() + public function setPublic(): object { $this->headers->addCacheControlDirective('public'); $this->headers->removeCacheControlDirective('private'); @@ -612,7 +617,7 @@ class Response * * @final */ - public function setImmutable(bool $immutable = true) + public function setImmutable(bool $immutable = true): object { if ($immutable) { $this->headers->addCacheControlDirective('immutable'); @@ -667,7 +672,7 @@ class Response * * @final */ - public function setDate(\DateTimeInterface $date) + public function setDate(\DateTimeInterface $date): object { if ($date instanceof \DateTime) { $date = \DateTimeImmutable::createFromMutable($date); @@ -732,7 +737,7 @@ class Response * * @final */ - public function setExpires(\DateTimeInterface $date = null) + public function setExpires(\DateTimeInterface $date = null): object { if (null === $date) { $this->headers->remove('Expires'); @@ -785,7 +790,7 @@ class Response * * @final */ - public function setMaxAge(int $value) + public function setMaxAge(int $value): object { $this->headers->addCacheControlDirective('max-age', $value); @@ -801,7 +806,7 @@ class Response * * @final */ - public function setSharedMaxAge(int $value) + public function setSharedMaxAge(int $value): object { $this->setPublic(); $this->headers->addCacheControlDirective('s-maxage', $value); @@ -835,7 +840,7 @@ class Response * * @final */ - public function setTtl(int $seconds) + public function setTtl(int $seconds): object { $this->setSharedMaxAge($this->getAge() + $seconds); @@ -851,7 +856,7 @@ class Response * * @final */ - public function setClientTtl(int $seconds) + public function setClientTtl(int $seconds): object { $this->setMaxAge($this->getAge() + $seconds); @@ -879,7 +884,7 @@ class Response * * @final */ - public function setLastModified(\DateTimeInterface $date = null) + public function setLastModified(\DateTimeInterface $date = null): object { if (null === $date) { $this->headers->remove('Last-Modified'); @@ -917,7 +922,7 @@ class Response * * @final */ - public function setEtag(string $etag = null, bool $weak = false) + public function setEtag(string $etag = null, bool $weak = false): object { if (null === $etag) { $this->headers->remove('Etag'); @@ -935,7 +940,7 @@ class Response /** * Sets the response's cache headers (validation and/or expiration). * - * Available options are: etag, last_modified, max_age, s_maxage, private, public and immutable. + * Available options are: must_revalidate, no_cache, no_store, no_transform, public, private, proxy_revalidate, max_age, s_maxage, immutable, last_modified and etag. * * @return $this * @@ -943,9 +948,9 @@ class Response * * @final */ - public function setCache(array $options) + public function setCache(array $options): object { - if ($diff = array_diff(array_keys($options), ['etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public', 'immutable'])) { + if ($diff = array_diff(array_keys($options), array_keys(self::HTTP_RESPONSE_CACHE_CONTROL_DIRECTIVES))) { throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', $diff))); } @@ -965,6 +970,16 @@ class Response $this->setSharedMaxAge($options['s_maxage']); } + foreach (self::HTTP_RESPONSE_CACHE_CONTROL_DIRECTIVES as $directive => $hasValue) { + if (!$hasValue && isset($options[$directive])) { + if ($options[$directive]) { + $this->headers->addCacheControlDirective(str_replace('_', '-', $directive)); + } else { + $this->headers->removeCacheControlDirective(str_replace('_', '-', $directive)); + } + } + } + if (isset($options['public'])) { if ($options['public']) { $this->setPublic(); @@ -981,10 +996,6 @@ class Response } } - if (isset($options['immutable'])) { - $this->setImmutable((bool) $options['immutable']); - } - return $this; } @@ -1000,7 +1011,7 @@ class Response * * @final */ - public function setNotModified() + public function setNotModified(): object { $this->setStatusCode(304); $this->setContent(null); @@ -1036,10 +1047,10 @@ class Response $ret = []; foreach ($vary as $item) { - $ret = array_merge($ret, preg_split('/[\s,]+/', $item)); + $ret[] = preg_split('/[\s,]+/', $item); } - return $ret; + return array_merge([], ...$ret); } /** @@ -1052,7 +1063,7 @@ class Response * * @final */ - public function setVary($headers, bool $replace = true) + public function setVary($headers, bool $replace = true): object { $this->headers->set('Vary', $headers, $replace); @@ -1066,8 +1077,6 @@ class Response * If the Response is not modified, it sets the status code to 304 and * removes the actual content by calling the setNotModified() method. * - * @return bool true if the Response validators match the Request, false otherwise - * * @final */ public function isNotModified(Request $request): bool @@ -1243,6 +1252,22 @@ class Response } } + /** + * Marks a response as safe according to RFC8674. + * + * @see https://tools.ietf.org/html/rfc8674 + */ + public function setContentSafe(bool $safe = true): void + { + if ($safe) { + $this->headers->set('Preference-Applied', 'safe'); + } elseif ('safe' === $this->headers->get('Preference-Applied')) { + $this->headers->remove('Preference-Applied'); + } + + $this->setVary('Prefer', false); + } + /** * Checks if we need to remove Cache-Control for SSL encrypted downloads when using IE < 9. * diff --git a/vendor/symfony/http-foundation/ResponseHeaderBag.php b/vendor/symfony/http-foundation/ResponseHeaderBag.php index 3c94cd2a6..1df13fa21 100644 --- a/vendor/symfony/http-foundation/ResponseHeaderBag.php +++ b/vendor/symfony/http-foundation/ResponseHeaderBag.php @@ -45,7 +45,7 @@ class ResponseHeaderBag extends HeaderBag /** * Returns the headers, with original capitalizations. * - * @return array An array of headers + * @return array */ public function allPreserveCase() { @@ -87,14 +87,12 @@ class ResponseHeaderBag extends HeaderBag /** * {@inheritdoc} - * - * @param string|null $key The name of the headers to return or null to get them all */ - public function all(/* string $key = null */) + public function all(string $key = null) { $headers = parent::all(); - if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) { + if (null !== $key) { $key = strtr($key, self::UPPER, self::LOWER); return 'set-cookie' !== $key ? $headers[$key] ?? [] : array_map('strval', $this->getCookies()); @@ -110,7 +108,7 @@ class ResponseHeaderBag extends HeaderBag /** * {@inheritdoc} */ - public function set($key, $values, $replace = true) + public function set(string $key, $values, bool $replace = true) { $uniqueKey = strtr($key, self::UPPER, self::LOWER); @@ -141,7 +139,7 @@ class ResponseHeaderBag extends HeaderBag /** * {@inheritdoc} */ - public function remove($key) + public function remove(string $key) { $uniqueKey = strtr($key, self::UPPER, self::LOWER); unset($this->headerNames[$uniqueKey]); @@ -166,7 +164,7 @@ class ResponseHeaderBag extends HeaderBag /** * {@inheritdoc} */ - public function hasCacheControlDirective($key) + public function hasCacheControlDirective(string $key) { return \array_key_exists($key, $this->computedCacheControl); } @@ -174,7 +172,7 @@ class ResponseHeaderBag extends HeaderBag /** * {@inheritdoc} */ - public function getCacheControlDirective($key) + public function getCacheControlDirective(string $key) { return $this->computedCacheControl[$key] ?? null; } @@ -187,12 +185,8 @@ class ResponseHeaderBag extends HeaderBag /** * Removes a cookie from the array, but does not unset it in the browser. - * - * @param string $name - * @param string $path - * @param string $domain */ - public function removeCookie($name, $path = '/', $domain = null) + public function removeCookie(string $name, ?string $path = '/', string $domain = null) { if (null === $path) { $path = '/'; @@ -216,13 +210,11 @@ class ResponseHeaderBag extends HeaderBag /** * Returns an array with all cookies. * - * @param string $format - * * @return Cookie[] * * @throws \InvalidArgumentException When the $format is invalid */ - public function getCookies($format = self::COOKIES_FLAT) + public function getCookies(string $format = self::COOKIES_FLAT) { if (!\in_array($format, [self::COOKIES_FLAT, self::COOKIES_ARRAY])) { throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', [self::COOKIES_FLAT, self::COOKIES_ARRAY]))); @@ -246,27 +238,18 @@ class ResponseHeaderBag extends HeaderBag /** * Clears a cookie in the browser. - * - * @param string $name - * @param string $path - * @param string $domain - * @param bool $secure - * @param bool $httpOnly - * @param string $sameSite */ - public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true/* , $sameSite = null */) + public function clearCookie(string $name, ?string $path = '/', string $domain = null, bool $secure = false, bool $httpOnly = true, string $sameSite = null) { - $sameSite = \func_num_args() > 5 ? func_get_arg(5) : null; - $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite)); } /** * @see HeaderUtils::makeDisposition() */ - public function makeDisposition($disposition, $filename, $filenameFallback = '') + public function makeDisposition(string $disposition, string $filename, string $filenameFallback = '') { - return HeaderUtils::makeDisposition((string) $disposition, (string) $filename, (string) $filenameFallback); + return HeaderUtils::makeDisposition($disposition, $filename, $filenameFallback); } /** @@ -303,8 +286,6 @@ class ResponseHeaderBag extends HeaderBag private function initDate(): void { - $now = \DateTime::createFromFormat('U', time()); - $now->setTimezone(new \DateTimeZone('UTC')); - $this->set('Date', $now->format('D, d M Y H:i:s').' GMT'); + $this->set('Date', gmdate('D, d M Y H:i:s').' GMT'); } } diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php index bd3553173..f4f051c7a 100644 --- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php +++ b/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php @@ -13,6 +13,8 @@ namespace Symfony\Component\HttpFoundation\Session\Attribute; /** * This class relates to session attribute storage. + * + * @implements \IteratorAggregate<string, mixed> */ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable { @@ -37,7 +39,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta return $this->name; } - public function setName($name) + public function setName(string $name) { $this->name = $name; } @@ -61,7 +63,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * {@inheritdoc} */ - public function has($name) + public function has(string $name) { return \array_key_exists($name, $this->attributes); } @@ -69,7 +71,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * {@inheritdoc} */ - public function get($name, $default = null) + public function get(string $name, $default = null) { return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default; } @@ -77,7 +79,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * {@inheritdoc} */ - public function set($name, $value) + public function set(string $name, $value) { $this->attributes[$name] = $value; } @@ -104,7 +106,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * {@inheritdoc} */ - public function remove($name) + public function remove(string $name) { $retval = null; if (\array_key_exists($name, $this->attributes)) { @@ -129,7 +131,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * Returns an iterator for attributes. * - * @return \ArrayIterator An \ArrayIterator instance + * @return \ArrayIterator<string, mixed> */ #[\ReturnTypeWillChange] public function getIterator() @@ -140,7 +142,7 @@ class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Counta /** * Returns the number of attributes. * - * @return int The number of attributes + * @return int */ #[\ReturnTypeWillChange] public function count() diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php index 6fa229397..cb5069681 100644 --- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php +++ b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php @@ -23,34 +23,30 @@ interface AttributeBagInterface extends SessionBagInterface /** * Checks if an attribute is defined. * - * @param string $name The attribute name - * - * @return bool true if the attribute is defined, false otherwise + * @return bool */ - public function has($name); + public function has(string $name); /** * Returns an attribute. * - * @param string $name The attribute name - * @param mixed $default The default value if not found + * @param mixed $default The default value if not found * * @return mixed */ - public function get($name, $default = null); + public function get(string $name, $default = null); /** * Sets an attribute. * - * @param string $name - * @param mixed $value + * @param mixed $value */ - public function set($name, $value); + public function set(string $name, $value); /** * Returns attributes. * - * @return array + * @return array<string, mixed> */ public function all(); @@ -59,9 +55,7 @@ interface AttributeBagInterface extends SessionBagInterface /** * Removes an attribute. * - * @param string $name - * * @return mixed The removed value or null when it does not exist */ - public function remove($name); + public function remove(string $name); } diff --git a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php index 7ba224ace..864b35fb7 100644 --- a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php +++ b/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php @@ -11,11 +11,15 @@ namespace Symfony\Component\HttpFoundation\Session\Attribute; +trigger_deprecation('symfony/http-foundation', '5.3', 'The "%s" class is deprecated.', NamespacedAttributeBag::class); + /** * This class provides structured storage of session attributes using * a name spacing character in the key. * * @author Drak <drak@zikula.org> + * + * @deprecated since Symfony 5.3 */ class NamespacedAttributeBag extends AttributeBag { @@ -34,7 +38,7 @@ class NamespacedAttributeBag extends AttributeBag /** * {@inheritdoc} */ - public function has($name) + public function has(string $name) { // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is $attributes = $this->resolveAttributePath($name); @@ -50,7 +54,7 @@ class NamespacedAttributeBag extends AttributeBag /** * {@inheritdoc} */ - public function get($name, $default = null) + public function get(string $name, $default = null) { // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is $attributes = $this->resolveAttributePath($name); @@ -66,7 +70,7 @@ class NamespacedAttributeBag extends AttributeBag /** * {@inheritdoc} */ - public function set($name, $value) + public function set(string $name, $value) { $attributes = &$this->resolveAttributePath($name, true); $name = $this->resolveKey($name); @@ -76,7 +80,7 @@ class NamespacedAttributeBag extends AttributeBag /** * {@inheritdoc} */ - public function remove($name) + public function remove(string $name) { $retval = null; $attributes = &$this->resolveAttributePath($name); @@ -99,7 +103,7 @@ class NamespacedAttributeBag extends AttributeBag * * @return array|null */ - protected function &resolveAttributePath($name, $writeContext = false) + protected function &resolveAttributePath(string $name, bool $writeContext = false) { $array = &$this->attributes; $name = (str_starts_with($name, $this->namespaceCharacter)) ? substr($name, 1) : $name; @@ -144,11 +148,9 @@ class NamespacedAttributeBag extends AttributeBag * * This is the last part in a dot separated string. * - * @param string $name - * * @return string */ - protected function resolveKey($name) + protected function resolveKey(string $name) { if (false !== $pos = strrpos($name, $this->namespaceCharacter)) { $name = substr($name, $pos + 1); diff --git a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php b/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php index facbe102d..8aab3a122 100644 --- a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php +++ b/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php @@ -38,7 +38,7 @@ class AutoExpireFlashBag implements FlashBagInterface return $this->name; } - public function setName($name) + public function setName(string $name) { $this->name = $name; } @@ -60,7 +60,7 @@ class AutoExpireFlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function add($type, $message) + public function add(string $type, $message) { $this->flashes['new'][$type][] = $message; } @@ -68,7 +68,7 @@ class AutoExpireFlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function peek($type, array $default = []) + public function peek(string $type, array $default = []) { return $this->has($type) ? $this->flashes['display'][$type] : $default; } @@ -84,7 +84,7 @@ class AutoExpireFlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function get($type, array $default = []) + public function get(string $type, array $default = []) { $return = $default; @@ -122,7 +122,7 @@ class AutoExpireFlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function set($type, $messages) + public function set(string $type, $messages) { $this->flashes['new'][$type] = (array) $messages; } @@ -130,7 +130,7 @@ class AutoExpireFlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function has($type) + public function has(string $type) { return \array_key_exists($type, $this->flashes['display']) && $this->flashes['display'][$type]; } diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php b/vendor/symfony/http-foundation/Session/Flash/FlashBag.php index c6b7ce354..88df7508a 100644 --- a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php +++ b/vendor/symfony/http-foundation/Session/Flash/FlashBag.php @@ -38,7 +38,7 @@ class FlashBag implements FlashBagInterface return $this->name; } - public function setName($name) + public function setName(string $name) { $this->name = $name; } @@ -54,7 +54,7 @@ class FlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function add($type, $message) + public function add(string $type, $message) { $this->flashes[$type][] = $message; } @@ -62,7 +62,7 @@ class FlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function peek($type, array $default = []) + public function peek(string $type, array $default = []) { return $this->has($type) ? $this->flashes[$type] : $default; } @@ -78,7 +78,7 @@ class FlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function get($type, array $default = []) + public function get(string $type, array $default = []) { if (!$this->has($type)) { return $default; @@ -105,7 +105,7 @@ class FlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function set($type, $messages) + public function set(string $type, $messages) { $this->flashes[$type] = (array) $messages; } @@ -121,7 +121,7 @@ class FlashBag implements FlashBagInterface /** * {@inheritdoc} */ - public function has($type) + public function has(string $type) { return \array_key_exists($type, $this->flashes) && $this->flashes[$type]; } diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php b/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php index 99e807421..8713e71d0 100644 --- a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php +++ b/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php @@ -23,18 +23,16 @@ interface FlashBagInterface extends SessionBagInterface /** * Adds a flash message for the given type. * - * @param string $type - * @param mixed $message + * @param mixed $message */ - public function add($type, $message); + public function add(string $type, $message); /** * Registers one or more messages for a given type. * - * @param string $type * @param string|array $messages */ - public function set($type, $messages); + public function set(string $type, $messages); /** * Gets flash messages for a given type. @@ -44,7 +42,7 @@ interface FlashBagInterface extends SessionBagInterface * * @return array */ - public function peek($type, array $default = []); + public function peek(string $type, array $default = []); /** * Gets all flash messages. @@ -56,12 +54,11 @@ interface FlashBagInterface extends SessionBagInterface /** * Gets and clears flash from the stack. * - * @param string $type - * @param array $default Default value if $type does not exist + * @param array $default Default value if $type does not exist * * @return array */ - public function get($type, array $default = []); + public function get(string $type, array $default = []); /** * Gets and clears flashes from the stack. @@ -78,11 +75,9 @@ interface FlashBagInterface extends SessionBagInterface /** * Has flash messages for a given type? * - * @param string $type - * * @return bool */ - public function has($type); + public function has(string $type); /** * Returns a list of all defined types. diff --git a/vendor/symfony/http-foundation/Session/Session.php b/vendor/symfony/http-foundation/Session/Session.php index f42ed38ef..022e3986f 100644 --- a/vendor/symfony/http-foundation/Session/Session.php +++ b/vendor/symfony/http-foundation/Session/Session.php @@ -26,6 +26,8 @@ class_exists(SessionBagProxy::class); /** * @author Fabien Potencier <fabien@symfony.com> * @author Drak <drak@zikula.org> + * + * @implements \IteratorAggregate<string, mixed> */ class Session implements SessionInterface, \IteratorAggregate, \Countable { @@ -35,10 +37,12 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable private $attributeName; private $data = []; private $usageIndex = 0; + private $usageReporter; - public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) + public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null, callable $usageReporter = null) { $this->storage = $storage ?? new NativeSessionStorage(); + $this->usageReporter = $usageReporter; $attributes = $attributes ?? new AttributeBag(); $this->attributeName = $attributes->getName(); @@ -60,7 +64,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function has($name) + public function has(string $name) { return $this->getAttributeBag()->has($name); } @@ -68,7 +72,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function get($name, $default = null) + public function get(string $name, $default = null) { return $this->getAttributeBag()->get($name, $default); } @@ -76,7 +80,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function set($name, $value) + public function set(string $name, $value) { $this->getAttributeBag()->set($name, $value); } @@ -100,7 +104,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function remove($name) + public function remove(string $name) { return $this->getAttributeBag()->remove($name); } @@ -124,7 +128,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * Returns an iterator for attributes. * - * @return \ArrayIterator An \ArrayIterator instance + * @return \ArrayIterator<string, mixed> */ #[\ReturnTypeWillChange] public function getIterator() @@ -155,6 +159,9 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable { if ($this->isStarted()) { ++$this->usageIndex; + if ($this->usageReporter && 0 <= $this->usageIndex) { + ($this->usageReporter)(); + } } foreach ($this->data as &$data) { if (!empty($data)) { @@ -168,7 +175,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function invalidate($lifetime = null) + public function invalidate(int $lifetime = null) { $this->storage->clear(); @@ -178,7 +185,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function migrate($destroy = false, $lifetime = null) + public function migrate(bool $destroy = false, int $lifetime = null) { return $this->storage->regenerate($destroy, $lifetime); } @@ -202,7 +209,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function setId($id) + public function setId(string $id) { if ($this->storage->getId() !== $id) { $this->storage->setId($id); @@ -220,7 +227,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable /** * {@inheritdoc} */ - public function setName($name) + public function setName(string $name) { $this->storage->setName($name); } @@ -231,6 +238,9 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable public function getMetadataBag() { ++$this->usageIndex; + if ($this->usageReporter && 0 <= $this->usageIndex) { + ($this->usageReporter)(); + } return $this->storage->getMetadataBag(); } @@ -240,13 +250,13 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable */ public function registerBag(SessionBagInterface $bag) { - $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex)); + $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex, $this->usageReporter)); } /** * {@inheritdoc} */ - public function getBag($name) + public function getBag(string $name) { $bag = $this->storage->getBag($name); diff --git a/vendor/symfony/http-foundation/Session/SessionBagProxy.php b/vendor/symfony/http-foundation/Session/SessionBagProxy.php index 0ae8231ef..90aa010c9 100644 --- a/vendor/symfony/http-foundation/Session/SessionBagProxy.php +++ b/vendor/symfony/http-foundation/Session/SessionBagProxy.php @@ -21,17 +21,22 @@ final class SessionBagProxy implements SessionBagInterface private $bag; private $data; private $usageIndex; + private $usageReporter; - public function __construct(SessionBagInterface $bag, array &$data, ?int &$usageIndex) + public function __construct(SessionBagInterface $bag, array &$data, ?int &$usageIndex, ?callable $usageReporter) { $this->bag = $bag; $this->data = &$data; $this->usageIndex = &$usageIndex; + $this->usageReporter = $usageReporter; } public function getBag(): SessionBagInterface { ++$this->usageIndex; + if ($this->usageReporter && 0 <= $this->usageIndex) { + ($this->usageReporter)(); + } return $this->bag; } @@ -42,6 +47,9 @@ final class SessionBagProxy implements SessionBagInterface return true; } ++$this->usageIndex; + if ($this->usageReporter && 0 <= $this->usageIndex) { + ($this->usageReporter)(); + } return empty($this->data[$this->bag->getStorageKey()]); } @@ -60,6 +68,10 @@ final class SessionBagProxy implements SessionBagInterface public function initialize(array &$array): void { ++$this->usageIndex; + if ($this->usageReporter && 0 <= $this->usageIndex) { + ($this->usageReporter)(); + } + $this->data[$this->bag->getStorageKey()] = &$array; $this->bag->initialize($array); diff --git a/vendor/symfony/http-foundation/Session/SessionFactory.php b/vendor/symfony/http-foundation/Session/SessionFactory.php new file mode 100644 index 000000000..04c4b06a0 --- /dev/null +++ b/vendor/symfony/http-foundation/Session/SessionFactory.php @@ -0,0 +1,40 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session; + +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageFactoryInterface; + +// Help opcache.preload discover always-needed symbols +class_exists(Session::class); + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + */ +class SessionFactory implements SessionFactoryInterface +{ + private $requestStack; + private $storageFactory; + private $usageReporter; + + public function __construct(RequestStack $requestStack, SessionStorageFactoryInterface $storageFactory, callable $usageReporter = null) + { + $this->requestStack = $requestStack; + $this->storageFactory = $storageFactory; + $this->usageReporter = $usageReporter; + } + + public function createSession(): SessionInterface + { + return new Session($this->storageFactory->createStorage($this->requestStack->getMainRequest()), null, null, $this->usageReporter); + } +} diff --git a/vendor/symfony/http-foundation/Session/SessionFactoryInterface.php b/vendor/symfony/http-foundation/Session/SessionFactoryInterface.php new file mode 100644 index 000000000..b24fdc495 --- /dev/null +++ b/vendor/symfony/http-foundation/Session/SessionFactoryInterface.php @@ -0,0 +1,20 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session; + +/** + * @author Kevin Bond <kevinbond@gmail.com> + */ +interface SessionFactoryInterface +{ + public function createSession(): SessionInterface; +} diff --git a/vendor/symfony/http-foundation/Session/SessionInterface.php b/vendor/symfony/http-foundation/Session/SessionInterface.php index e758c6bda..b2f09fd0d 100644 --- a/vendor/symfony/http-foundation/Session/SessionInterface.php +++ b/vendor/symfony/http-foundation/Session/SessionInterface.php @@ -38,10 +38,8 @@ interface SessionInterface /** * Sets the session ID. - * - * @param string $id */ - public function setId($id); + public function setId(string $id); /** * Returns the session name. @@ -52,10 +50,8 @@ interface SessionInterface /** * Sets the session name. - * - * @param string $name */ - public function setName($name); + public function setName(string $name); /** * Invalidates the current session. @@ -70,7 +66,7 @@ interface SessionInterface * * @return bool */ - public function invalidate($lifetime = null); + public function invalidate(int $lifetime = null); /** * Migrates the current session to a new session id while maintaining all @@ -84,7 +80,7 @@ interface SessionInterface * * @return bool */ - public function migrate($destroy = false, $lifetime = null); + public function migrate(bool $destroy = false, int $lifetime = null); /** * Force the session to be saved and closed. @@ -98,29 +94,25 @@ interface SessionInterface /** * Checks if an attribute is defined. * - * @param string $name The attribute name - * * @return bool */ - public function has($name); + public function has(string $name); /** * Returns an attribute. * - * @param string $name The attribute name - * @param mixed $default The default value if not found + * @param mixed $default The default value if not found * * @return mixed */ - public function get($name, $default = null); + public function get(string $name, $default = null); /** * Sets an attribute. * - * @param string $name - * @param mixed $value + * @param mixed $value */ - public function set($name, $value); + public function set(string $name, $value); /** * Returns attributes. @@ -137,11 +129,9 @@ interface SessionInterface /** * Removes an attribute. * - * @param string $name - * * @return mixed The removed value or null when it does not exist */ - public function remove($name); + public function remove(string $name); /** * Clears all attributes. @@ -163,11 +153,9 @@ interface SessionInterface /** * Gets a bag instance by name. * - * @param string $name - * * @return SessionBagInterface */ - public function getBag($name); + public function getBag(string $name); /** * Gets session meta. diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php index dbbda3c39..35d7b4b81 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php @@ -43,26 +43,19 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess } /** - * @param string $sessionId - * * @return string */ - abstract protected function doRead($sessionId); + abstract protected function doRead(string $sessionId); /** - * @param string $sessionId - * @param string $data - * * @return bool */ - abstract protected function doWrite($sessionId, $data); + abstract protected function doWrite(string $sessionId, string $data); /** - * @param string $sessionId - * * @return bool */ - abstract protected function doDestroy($sessionId); + abstract protected function doDestroy(string $sessionId); /** * @return bool diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php b/vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php new file mode 100644 index 000000000..bea3a323e --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php @@ -0,0 +1,42 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; + +use Symfony\Component\Cache\Marshaller\MarshallerInterface; + +/** + * @author Ahmed TAILOULOUTE <ahmed.tailouloute@gmail.com> + */ +class IdentityMarshaller implements MarshallerInterface +{ + /** + * {@inheritdoc} + */ + public function marshall(array $values, ?array &$failed): array + { + foreach ($values as $key => $value) { + if (!\is_string($value)) { + throw new \LogicException(sprintf('%s accepts only string as data.', __METHOD__)); + } + } + + return $values; + } + + /** + * {@inheritdoc} + */ + public function unmarshall(string $value): string + { + return $value; + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php new file mode 100644 index 000000000..c321c8c93 --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php @@ -0,0 +1,108 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; + +use Symfony\Component\Cache\Marshaller\MarshallerInterface; + +/** + * @author Ahmed TAILOULOUTE <ahmed.tailouloute@gmail.com> + */ +class MarshallingSessionHandler implements \SessionHandlerInterface, \SessionUpdateTimestampHandlerInterface +{ + private $handler; + private $marshaller; + + public function __construct(AbstractSessionHandler $handler, MarshallerInterface $marshaller) + { + $this->handler = $handler; + $this->marshaller = $marshaller; + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function open($savePath, $name) + { + return $this->handler->open($savePath, $name); + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function close() + { + return $this->handler->close(); + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function destroy($sessionId) + { + return $this->handler->destroy($sessionId); + } + + /** + * @return int|false + */ + #[\ReturnTypeWillChange] + public function gc($maxlifetime) + { + return $this->handler->gc($maxlifetime); + } + + /** + * @return string + */ + #[\ReturnTypeWillChange] + public function read($sessionId) + { + return $this->marshaller->unmarshall($this->handler->read($sessionId)); + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function write($sessionId, $data) + { + $failed = []; + $marshalledData = $this->marshaller->marshall(['data' => $data], $failed); + + if (isset($failed['data'])) { + return false; + } + + return $this->handler->write($sessionId, $marshalledData['data']); + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function validateId($sessionId) + { + return $this->handler->validateId($sessionId); + } + + /** + * @return bool + */ + #[\ReturnTypeWillChange] + public function updateTimestamp($sessionId, $data) + { + return $this->handler->updateTimestamp($sessionId, $data); + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php index af9d45cae..e0ec4d2d9 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php @@ -38,7 +38,7 @@ class MemcachedSessionHandler extends AbstractSessionHandler * * List of available options: * * prefix: The prefix to use for the memcached keys in order to avoid collision - * * expiretime: The time to live in seconds. + * * ttl: The time to live in seconds. * * @throws \InvalidArgumentException When unsupported options are passed */ @@ -46,11 +46,11 @@ class MemcachedSessionHandler extends AbstractSessionHandler { $this->memcached = $memcached; - if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime'])) { + if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime', 'ttl'])) { throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff))); } - $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400; + $this->ttl = $options['expiretime'] ?? $options['ttl'] ?? null; $this->prefix = $options['prefix'] ?? 'sf2s'; } @@ -66,7 +66,7 @@ class MemcachedSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doRead($sessionId) + protected function doRead(string $sessionId) { return $this->memcached->get($this->prefix.$sessionId) ?: ''; } @@ -77,7 +77,7 @@ class MemcachedSessionHandler extends AbstractSessionHandler #[\ReturnTypeWillChange] public function updateTimestamp($sessionId, $data) { - $this->memcached->touch($this->prefix.$sessionId, time() + $this->ttl); + $this->memcached->touch($this->prefix.$sessionId, $this->getCompatibleTtl()); return true; } @@ -85,15 +85,28 @@ class MemcachedSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite(string $sessionId, string $data) { - return $this->memcached->set($this->prefix.$sessionId, $data, time() + $this->ttl); + return $this->memcached->set($this->prefix.$sessionId, $data, $this->getCompatibleTtl()); + } + + private function getCompatibleTtl(): int + { + $ttl = (int) ($this->ttl ?? \ini_get('session.gc_maxlifetime')); + + // If the relative TTL that is used exceeds 30 days, memcached will treat the value as Unix time. + // We have to convert it to an absolute Unix time at this point, to make sure the TTL is correct. + if ($ttl > 60 * 60 * 24 * 30) { + $ttl += time(); + } + + return $ttl; } /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy(string $sessionId) { $result = $this->memcached->delete($this->prefix.$sessionId); diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php index a4f28ef21..bf27ca6cc 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php @@ -22,7 +22,14 @@ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; */ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdateTimestampHandlerInterface { + /** + * @var \SessionHandlerInterface&\SessionUpdateTimestampHandlerInterface + */ private $currentHandler; + + /** + * @var \SessionHandlerInterface&\SessionUpdateTimestampHandlerInterface + */ private $writeOnlyHandler; public function __construct(\SessionHandlerInterface $currentHandler, \SessionHandlerInterface $writeOnlyHandler) diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php index 084556b2e..ef8f71942 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php @@ -11,6 +11,11 @@ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; +use MongoDB\BSON\Binary; +use MongoDB\BSON\UTCDateTime; +use MongoDB\Client; +use MongoDB\Collection; + /** * Session handler using the mongodb/mongodb package and MongoDB driver extension. * @@ -24,7 +29,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler private $mongo; /** - * @var \MongoDB\Collection + * @var Collection */ private $collection; @@ -63,7 +68,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler * * @throws \InvalidArgumentException When "database" or "collection" not provided */ - public function __construct(\MongoDB\Client $mongo, array $options) + public function __construct(Client $mongo, array $options) { if (!isset($options['database']) || !isset($options['collection'])) { throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler.'); @@ -91,7 +96,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy(string $sessionId) { $this->getCollection()->deleteOne([ $this->options['id_field'] => $sessionId, @@ -107,21 +112,21 @@ class MongoDbSessionHandler extends AbstractSessionHandler public function gc($maxlifetime) { return $this->getCollection()->deleteMany([ - $this->options['expiry_field'] => ['$lt' => new \MongoDB\BSON\UTCDateTime()], + $this->options['expiry_field'] => ['$lt' => new UTCDateTime()], ])->getDeletedCount(); } /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite(string $sessionId, string $data) { - $expiry = new \MongoDB\BSON\UTCDateTime((time() + (int) \ini_get('session.gc_maxlifetime')) * 1000); + $expiry = new UTCDateTime((time() + (int) \ini_get('session.gc_maxlifetime')) * 1000); $fields = [ - $this->options['time_field'] => new \MongoDB\BSON\UTCDateTime(), + $this->options['time_field'] => new UTCDateTime(), $this->options['expiry_field'] => $expiry, - $this->options['data_field'] => new \MongoDB\BSON\Binary($data, \MongoDB\BSON\Binary::TYPE_OLD_BINARY), + $this->options['data_field'] => new Binary($data, Binary::TYPE_OLD_BINARY), ]; $this->getCollection()->updateOne( @@ -139,12 +144,12 @@ class MongoDbSessionHandler extends AbstractSessionHandler #[\ReturnTypeWillChange] public function updateTimestamp($sessionId, $data) { - $expiry = new \MongoDB\BSON\UTCDateTime((time() + (int) \ini_get('session.gc_maxlifetime')) * 1000); + $expiry = new UTCDateTime((time() + (int) \ini_get('session.gc_maxlifetime')) * 1000); $this->getCollection()->updateOne( [$this->options['id_field'] => $sessionId], ['$set' => [ - $this->options['time_field'] => new \MongoDB\BSON\UTCDateTime(), + $this->options['time_field'] => new UTCDateTime(), $this->options['expiry_field'] => $expiry, ]] ); @@ -155,11 +160,11 @@ class MongoDbSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doRead($sessionId) + protected function doRead(string $sessionId) { $dbData = $this->getCollection()->findOne([ $this->options['id_field'] => $sessionId, - $this->options['expiry_field'] => ['$gte' => new \MongoDB\BSON\UTCDateTime()], + $this->options['expiry_field'] => ['$gte' => new UTCDateTime()], ]); if (null === $dbData) { @@ -169,7 +174,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler return $dbData[$this->options['data_field']]->getData(); } - private function getCollection(): \MongoDB\Collection + private function getCollection(): Collection { if (null === $this->collection) { $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']); @@ -179,7 +184,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler } /** - * @return \MongoDB\Client + * @return Client */ protected function getMongo() { diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php index a85ab6586..4331dbe50 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php @@ -39,7 +39,7 @@ class NullSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doRead($sessionId) + protected function doRead(string $sessionId) { return ''; } @@ -56,7 +56,7 @@ class NullSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite(string $sessionId, string $data) { return true; } @@ -64,7 +64,7 @@ class NullSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy(string $sessionId) { return true; } diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php index 78efa2e82..24c98940d 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php @@ -73,57 +73,67 @@ class PdoSessionHandler extends AbstractSessionHandler private $pdo; /** - * @var string|false|null DSN string or null for session.save_path or false when lazy connection disabled + * DSN string or null for session.save_path or false when lazy connection disabled. + * + * @var string|false|null */ private $dsn = false; /** - * @var string Database driver + * @var string|null */ private $driver; /** - * @var string Table name + * @var string */ private $table = 'sessions'; /** - * @var string Column for session id + * @var string */ private $idCol = 'sess_id'; /** - * @var string Column for session data + * @var string */ private $dataCol = 'sess_data'; /** - * @var string Column for lifetime + * @var string */ private $lifetimeCol = 'sess_lifetime'; /** - * @var string Column for timestamp + * @var string */ private $timeCol = 'sess_time'; /** - * @var string Username when lazy-connect + * Username when lazy-connect. + * + * @var string */ private $username = ''; /** - * @var string Password when lazy-connect + * Password when lazy-connect. + * + * @var string */ private $password = ''; /** - * @var array Connection options when lazy-connect + * Connection options when lazy-connect. + * + * @var array */ private $connectionOptions = []; /** - * @var int The strategy for locking, see constants + * The strategy for locking, see constants. + * + * @var int */ private $lockMode = self::LOCK_TRANSACTIONAL; @@ -135,17 +145,23 @@ class PdoSessionHandler extends AbstractSessionHandler private $unlockStatements = []; /** - * @var bool True when the current session exists but expired according to session.gc_maxlifetime + * True when the current session exists but expired according to session.gc_maxlifetime. + * + * @var bool */ private $sessionExpired = false; /** - * @var bool Whether a transaction is active + * Whether a transaction is active. + * + * @var bool */ private $inTransaction = false; /** - * @var bool Whether gc() has been called + * Whether gc() has been called. + * + * @var bool */ private $gcCalled = false; @@ -252,7 +268,7 @@ class PdoSessionHandler extends AbstractSessionHandler * * Can be used to distinguish between a new session and one that expired due to inactivity. * - * @return bool Whether current session expired + * @return bool */ public function isSessionExpired() { @@ -305,7 +321,7 @@ class PdoSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy(string $sessionId) { // delete the record associated with this id $sql = "DELETE FROM $this->table WHERE $this->idCol = :id"; @@ -326,7 +342,7 @@ class PdoSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite(string $sessionId, string $data) { $maxlifetime = (int) \ini_get('session.gc_maxlifetime'); @@ -430,6 +446,7 @@ class PdoSessionHandler extends AbstractSessionHandler if (false !== $this->dsn) { $this->pdo = null; // only close lazy-connection + $this->driver = null; } return true; @@ -491,10 +508,32 @@ class PdoSessionHandler extends AbstractSessionHandler $driver = substr($driver, 4); } + $dsn = null; switch ($driver) { case 'mysql': + $dsn = 'mysql:'; + if ('' !== ($params['query'] ?? '')) { + $queryParams = []; + parse_str($params['query'], $queryParams); + if ('' !== ($queryParams['charset'] ?? '')) { + $dsn .= 'charset='.$queryParams['charset'].';'; + } + + if ('' !== ($queryParams['unix_socket'] ?? '')) { + $dsn .= 'unix_socket='.$queryParams['unix_socket'].';'; + + if (isset($params['path'])) { + $dbName = substr($params['path'], 1); // Remove the leading slash + $dsn .= 'dbname='.$dbName.';'; + } + + return $dsn; + } + } + // If "unix_socket" is not in the query, we continue with the same process as pgsql + // no break case 'pgsql': - $dsn = $driver.':'; + $dsn ?? $dsn = 'pgsql:'; if (isset($params['host']) && '' !== $params['host']) { $dsn .= 'host='.$params['host'].';'; @@ -611,11 +650,9 @@ class PdoSessionHandler extends AbstractSessionHandler * We need to make sure we do not return session data that is already considered garbage according * to the session.gc_maxlifetime setting because gc() is called after read() and only sometimes. * - * @param string $sessionId Session ID - * - * @return string The session data + * @return string */ - protected function doRead($sessionId) + protected function doRead(string $sessionId) { if (self::LOCK_ADVISORY === $this->lockMode) { $this->unlockStatements[] = $this->doAdvisoryLock($sessionId); diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php index d9bd3835a..31954e677 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php @@ -54,7 +54,7 @@ class RedisSessionHandler extends AbstractSessionHandler !$redis instanceof RedisProxy && !$redis instanceof RedisClusterProxy ) { - throw new \InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis))); + throw new \InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, get_debug_type($redis))); } if ($diff = array_diff(array_keys($options), ['prefix', 'ttl'])) { @@ -69,7 +69,7 @@ class RedisSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doRead($sessionId): string + protected function doRead(string $sessionId): string { return $this->redis->get($this->prefix.$sessionId) ?: ''; } @@ -77,7 +77,7 @@ class RedisSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data): bool + protected function doWrite(string $sessionId, string $data): bool { $result = $this->redis->setEx($this->prefix.$sessionId, (int) ($this->ttl ?? \ini_get('session.gc_maxlifetime')), $data); @@ -87,9 +87,21 @@ class RedisSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doDestroy($sessionId): bool + protected function doDestroy(string $sessionId): bool { - $this->redis->del($this->prefix.$sessionId); + static $unlink = true; + + if ($unlink) { + try { + $unlink = false !== $this->redis->unlink($this->prefix.$sessionId); + } catch (\Throwable $e) { + $unlink = false; + } + } + + if (!$unlink) { + $this->redis->del($this->prefix.$sessionId); + } return true; } diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php b/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php index 05e9418c4..f3f7b201d 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php @@ -27,7 +27,11 @@ class SessionHandlerFactory public static function createHandler($connection): AbstractSessionHandler { if (!\is_string($connection) && !\is_object($connection)) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a string or a connection object, "%s" given.', __METHOD__, \gettype($connection))); + throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a string or a connection object, "%s" given.', __METHOD__, get_debug_type($connection))); + } + + if ($options = \is_string($connection) ? parse_url($connection) : false) { + parse_str($options['query'] ?? '', $options); } switch (true) { @@ -46,7 +50,7 @@ class SessionHandlerFactory return new PdoSessionHandler($connection); case !\is_string($connection): - throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', \get_class($connection))); + throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', get_debug_type($connection))); case str_starts_with($connection, 'file://'): $savePath = substr($connection, 7); @@ -61,7 +65,7 @@ class SessionHandlerFactory $handlerClass = str_starts_with($connection, 'memcached:') ? MemcachedSessionHandler::class : RedisSessionHandler::class; $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]); - return new $handlerClass($connection); + return new $handlerClass($connection, array_intersect_key($options ?: [], ['prefix' => 1, 'ttl' => 1])); case str_starts_with($connection, 'pdo_oci://'): if (!class_exists(DriverManager::class)) { @@ -79,7 +83,7 @@ class SessionHandlerFactory case str_starts_with($connection, 'sqlsrv://'): case str_starts_with($connection, 'sqlite://'): case str_starts_with($connection, 'sqlite3://'): - return new PdoSessionHandler($connection); + return new PdoSessionHandler($connection, $options ?: []); } throw new \InvalidArgumentException(sprintf('Unsupported Connection: "%s".', $connection)); diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php index 7e5b5c019..f7c385f64 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php @@ -24,7 +24,7 @@ class StrictSessionHandler extends AbstractSessionHandler public function __construct(\SessionHandlerInterface $handler) { if ($handler instanceof \SessionUpdateTimestampHandlerInterface) { - throw new \LogicException(sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', \get_class($handler), self::class)); + throw new \LogicException(sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', get_debug_type($handler), self::class)); } $this->handler = $handler; @@ -54,7 +54,7 @@ class StrictSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doRead($sessionId) + protected function doRead(string $sessionId) { return $this->handler->read($sessionId); } @@ -71,7 +71,7 @@ class StrictSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doWrite($sessionId, $data) + protected function doWrite(string $sessionId, string $data) { return $this->handler->write($sessionId, $data); } @@ -91,7 +91,7 @@ class StrictSessionHandler extends AbstractSessionHandler /** * {@inheritdoc} */ - protected function doDestroy($sessionId) + protected function doDestroy(string $sessionId) { $this->doDestroy = false; diff --git a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php index 0a4dec605..595a9e23c 100644 --- a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php +++ b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php @@ -100,7 +100,7 @@ class MetadataBag implements SessionBagInterface * to expire with browser session. Time is in seconds, and is * not a Unix timestamp. */ - public function stampNew($lifetime = null) + public function stampNew(int $lifetime = null) { $this->stampCreated($lifetime); } @@ -139,6 +139,7 @@ class MetadataBag implements SessionBagInterface public function clear() { // nothing to do + return null; } /** @@ -151,10 +152,8 @@ class MetadataBag implements SessionBagInterface /** * Sets name. - * - * @param string $name */ - public function setName($name) + public function setName(string $name) { $this->name = $name; } diff --git a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php index 73ba34919..c5c2bb073 100644 --- a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php +++ b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php @@ -94,7 +94,7 @@ class MockArraySessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function regenerate($destroy = false, $lifetime = null) + public function regenerate(bool $destroy = false, int $lifetime = null) { if (!$this->started) { $this->start(); @@ -117,7 +117,7 @@ class MockArraySessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function setId($id) + public function setId(string $id) { if ($this->started) { throw new \LogicException('Cannot set session ID after the session has started.'); @@ -137,7 +137,7 @@ class MockArraySessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function setName($name) + public function setName(string $name) { $this->name = $name; } @@ -183,7 +183,7 @@ class MockArraySessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function getBag($name) + public function getBag(string $name) { if (!isset($this->bags[$name])) { throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name)); diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php index 947fd865f..8e32a45e3 100644 --- a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php +++ b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php @@ -28,8 +28,7 @@ class MockFileSessionStorage extends MockArraySessionStorage private $savePath; /** - * @param string $savePath Path of directory to save session files - * @param string $name Session name + * @param string|null $savePath Path of directory to save session files */ public function __construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null) { @@ -69,7 +68,7 @@ class MockFileSessionStorage extends MockArraySessionStorage /** * {@inheritdoc} */ - public function regenerate($destroy = false, $lifetime = null) + public function regenerate(bool $destroy = false, int $lifetime = null) { if (!$this->started) { $this->start(); diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php new file mode 100644 index 000000000..d0da1e169 --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php @@ -0,0 +1,42 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage; + +use Symfony\Component\HttpFoundation\Request; + +// Help opcache.preload discover always-needed symbols +class_exists(MockFileSessionStorage::class); + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + */ +class MockFileSessionStorageFactory implements SessionStorageFactoryInterface +{ + private $savePath; + private $name; + private $metaBag; + + /** + * @see MockFileSessionStorage constructor. + */ + public function __construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null) + { + $this->savePath = $savePath; + $this->name = $name; + $this->metaBag = $metaBag; + } + + public function createStorage(?Request $request): SessionStorageInterface + { + return new MockFileSessionStorage($this->savePath, $this->name, $this->metaBag); + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php index 6005df346..a50c8270f 100644 --- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php +++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php @@ -90,13 +90,6 @@ class NativeSessionStorage implements SessionStorageInterface * use_cookies, "1" * use_only_cookies, "1" * use_trans_sid, "0" - * upload_progress.enabled, "1" - * upload_progress.cleanup, "1" - * upload_progress.prefix, "upload_progress_" - * upload_progress.name, "PHP_SESSION_UPLOAD_PROGRESS" - * upload_progress.freq, "1%" - * upload_progress.min-freq, "1" - * url_rewriter.tags, "a=href,area=href,frame=src,form=,fieldset=" * sid_length, "32" * sid_bits_per_character, "5" * trans_sid_hosts, $_SERVER['HTTP_HOST'] @@ -216,7 +209,7 @@ class NativeSessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function setId($id) + public function setId(string $id) { $this->saveHandler->setId($id); } @@ -232,7 +225,7 @@ class NativeSessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function setName($name) + public function setName(string $name) { $this->saveHandler->setName($name); } @@ -240,7 +233,7 @@ class NativeSessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function regenerate($destroy = false, $lifetime = null) + public function regenerate(bool $destroy = false, int $lifetime = null) { // Cannot regenerate the session ID for non-active sessions. if (\PHP_SESSION_ACTIVE !== session_status()) { @@ -347,7 +340,7 @@ class NativeSessionStorage implements SessionStorageInterface /** * {@inheritdoc} */ - public function getBag($name) + public function getBag(string $name) { if (!isset($this->bags[$name])) { throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name)); @@ -419,6 +412,13 @@ class NativeSessionStorage implements SessionStorageInterface foreach ($options as $key => $value) { if (isset($validOptions[$key])) { + if (str_starts_with($key, 'upload_progress.')) { + trigger_deprecation('symfony/http-foundation', '5.4', 'Support for the "%s" session option is deprecated. The settings prefixed with "session.upload_progress." can not be changed at runtime.', $key); + continue; + } + if ('url_rewriter.tags' === $key) { + trigger_deprecation('symfony/http-foundation', '5.4', 'Support for the "%s" session option is deprecated. Use "trans_sid_tags" instead.', $key); + } if ('cookie_samesite' === $key && \PHP_VERSION_ID < 70300) { // PHP < 7.3 does not support same_site cookies. We will emulate it in // the start() method instead. diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php new file mode 100644 index 000000000..a7d7411ff --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php @@ -0,0 +1,49 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage; + +use Symfony\Component\HttpFoundation\Request; + +// Help opcache.preload discover always-needed symbols +class_exists(NativeSessionStorage::class); + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + */ +class NativeSessionStorageFactory implements SessionStorageFactoryInterface +{ + private $options; + private $handler; + private $metaBag; + private $secure; + + /** + * @see NativeSessionStorage constructor. + */ + public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null, bool $secure = false) + { + $this->options = $options; + $this->handler = $handler; + $this->metaBag = $metaBag; + $this->secure = $secure; + } + + public function createStorage(?Request $request): SessionStorageInterface + { + $storage = new NativeSessionStorage($this->options, $this->handler, $this->metaBag); + if ($this->secure && $request && $request->isSecure()) { + $storage->setOptions(['cookie_secure' => true]); + } + + return $storage; + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php new file mode 100644 index 000000000..173ef71de --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php @@ -0,0 +1,47 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage; + +use Symfony\Component\HttpFoundation\Request; + +// Help opcache.preload discover always-needed symbols +class_exists(PhpBridgeSessionStorage::class); + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + */ +class PhpBridgeSessionStorageFactory implements SessionStorageFactoryInterface +{ + private $handler; + private $metaBag; + private $secure; + + /** + * @see PhpBridgeSessionStorage constructor. + */ + public function __construct($handler = null, MetadataBag $metaBag = null, bool $secure = false) + { + $this->handler = $handler; + $this->metaBag = $metaBag; + $this->secure = $secure; + } + + public function createStorage(?Request $request): SessionStorageInterface + { + $storage = new PhpBridgeSessionStorage($this->handler, $this->metaBag); + if ($this->secure && $request && $request->isSecure()) { + $storage->setOptions(['cookie_secure' => true]); + } + + return $storage; + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php index 9e1c94ddf..edd04dff8 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php +++ b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php @@ -81,11 +81,9 @@ abstract class AbstractProxy /** * Sets the session ID. * - * @param string $id - * * @throws \LogicException */ - public function setId($id) + public function setId(string $id) { if ($this->isActive()) { throw new \LogicException('Cannot change the ID of an active session.'); @@ -107,11 +105,9 @@ abstract class AbstractProxy /** * Sets the session name. * - * @param string $name - * * @throws \LogicException */ - public function setName($name) + public function setName(string $name) { if ($this->isActive()) { throw new \LogicException('Cannot change the name of an active session.'); diff --git a/vendor/symfony/http-foundation/Session/Storage/ServiceSessionFactory.php b/vendor/symfony/http-foundation/Session/Storage/ServiceSessionFactory.php new file mode 100644 index 000000000..d17c60aeb --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/ServiceSessionFactory.php @@ -0,0 +1,38 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage; + +use Symfony\Component\HttpFoundation\Request; + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + * + * @internal to be removed in Symfony 6 + */ +final class ServiceSessionFactory implements SessionStorageFactoryInterface +{ + private $storage; + + public function __construct(SessionStorageInterface $storage) + { + $this->storage = $storage; + } + + public function createStorage(?Request $request): SessionStorageInterface + { + if ($this->storage instanceof NativeSessionStorage && $request && $request->isSecure()) { + $this->storage->setOptions(['cookie_secure' => true]); + } + + return $this->storage; + } +} diff --git a/vendor/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php b/vendor/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php new file mode 100644 index 000000000..d03f0da4c --- /dev/null +++ b/vendor/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php @@ -0,0 +1,25 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Session\Storage; + +use Symfony\Component\HttpFoundation\Request; + +/** + * @author Jérémy Derussé <jeremy@derusse.com> + */ +interface SessionStorageFactoryInterface +{ + /** + * Creates a new instance of SessionStorageInterface. + */ + public function createStorage(?Request $request): SessionStorageInterface; +} diff --git a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php b/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php index eeb396a2f..b7f66e7c7 100644 --- a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php +++ b/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php @@ -24,7 +24,7 @@ interface SessionStorageInterface /** * Starts the session. * - * @return bool True if started + * @return bool * * @throws \RuntimeException if something goes wrong starting the session */ @@ -33,37 +33,33 @@ interface SessionStorageInterface /** * Checks if the session is started. * - * @return bool True if started, false otherwise + * @return bool */ public function isStarted(); /** * Returns the session ID. * - * @return string The session ID or empty + * @return string */ public function getId(); /** * Sets the session ID. - * - * @param string $id */ - public function setId($id); + public function setId(string $id); /** * Returns the session name. * - * @return mixed The session name + * @return string */ public function getName(); /** * Sets the session name. - * - * @param string $name */ - public function setName($name); + public function setName(string $name); /** * Regenerates id that represents this storage. @@ -90,11 +86,11 @@ interface SessionStorageInterface * to expire with browser session. Time is in seconds, and is * not a Unix timestamp. * - * @return bool True if session regenerated, false if error + * @return bool * * @throws \RuntimeException If an error occurs while regenerating this storage */ - public function regenerate($destroy = false, $lifetime = null); + public function regenerate(bool $destroy = false, int $lifetime = null); /** * Force the session to be saved and closed. @@ -117,13 +113,11 @@ interface SessionStorageInterface /** * Gets a SessionBagInterface by name. * - * @param string $name - * * @return SessionBagInterface * * @throws \InvalidArgumentException If the bag does not exist */ - public function getBag($name); + public function getBag(string $name); /** * Registers a SessionBagInterface for use. diff --git a/vendor/symfony/http-foundation/StreamedResponse.php b/vendor/symfony/http-foundation/StreamedResponse.php index ef8095bbe..676cd6687 100644 --- a/vendor/symfony/http-foundation/StreamedResponse.php +++ b/vendor/symfony/http-foundation/StreamedResponse.php @@ -30,11 +30,6 @@ class StreamedResponse extends Response protected $streamed; private $headersSent; - /** - * @param callable|null $callback A valid PHP callback or null to set it later - * @param int $status The response status code - * @param array $headers An array of response headers - */ public function __construct(callable $callback = null, int $status = 200, array $headers = []) { parent::__construct(null, $status, $headers); @@ -50,13 +45,15 @@ class StreamedResponse extends Response * Factory method for chainability. * * @param callable|null $callback A valid PHP callback or null to set it later - * @param int $status The response status code - * @param array $headers An array of response headers * * @return static + * + * @deprecated since Symfony 5.1, use __construct() instead. */ - public static function create($callback = null, $status = 200, $headers = []) + public static function create($callback = null, int $status = 200, array $headers = []) { + trigger_deprecation('symfony/http-foundation', '5.1', 'The "%s()" method is deprecated, use "new %s()" instead.', __METHOD__, static::class); + return new static($callback, $status, $headers); } @@ -121,7 +118,7 @@ class StreamedResponse extends Response * * @return $this */ - public function setContent($content) + public function setContent(?string $content) { if (null !== $content) { throw new \LogicException('The content cannot be set on a StreamedResponse instance.'); diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php new file mode 100644 index 000000000..f73aedfa1 --- /dev/null +++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php @@ -0,0 +1,71 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Test\Constraint; + +use PHPUnit\Framework\Constraint\Constraint; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +/** + * Asserts that the response is in the given format. + * + * @author Kévin Dunglas <dunglas@gmail.com> + */ +final class ResponseFormatSame extends Constraint +{ + private $request; + private $format; + + public function __construct(Request $request, ?string $format) + { + $this->request = $request; + $this->format = $format; + } + + /** + * {@inheritdoc} + */ + public function toString(): string + { + return 'format is '.($this->format ?? 'null'); + } + + /** + * @param Response $response + * + * {@inheritdoc} + */ + protected function matches($response): bool + { + return $this->format === $this->request->getFormat($response->headers->get('Content-Type')); + } + + /** + * @param Response $response + * + * {@inheritdoc} + */ + protected function failureDescription($response): string + { + return 'the Response '.$this->toString(); + } + + /** + * @param Response $response + * + * {@inheritdoc} + */ + protected function additionalFailureDescription($response): string + { + return (string) $response; + } +} diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php new file mode 100644 index 000000000..880c7818b --- /dev/null +++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php @@ -0,0 +1,56 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundation\Test\Constraint; + +use PHPUnit\Framework\Constraint\Constraint; +use Symfony\Component\HttpFoundation\Response; + +final class ResponseIsUnprocessable extends Constraint +{ + /** + * {@inheritdoc} + */ + public function toString(): string + { + return 'is unprocessable'; + } + + /** + * @param Response $other + * + * {@inheritdoc} + */ + protected function matches($other): bool + { + return Response::HTTP_UNPROCESSABLE_ENTITY === $other->getStatusCode(); + } + + /** + * @param Response $other + * + * {@inheritdoc} + */ + protected function failureDescription($other): string + { + return 'the Response '.$this->toString(); + } + + /** + * @param Response $other + * + * {@inheritdoc} + */ + protected function additionalFailureDescription($other): string + { + return (string) $other; + } +} diff --git a/vendor/symfony/http-foundation/UrlHelper.php b/vendor/symfony/http-foundation/UrlHelper.php index 3fe053ddb..c15f101cd 100644 --- a/vendor/symfony/http-foundation/UrlHelper.php +++ b/vendor/symfony/http-foundation/UrlHelper.php @@ -35,7 +35,7 @@ final class UrlHelper return $path; } - if (null === $request = $this->requestStack->getMasterRequest()) { + if (null === $request = $this->requestStack->getMainRequest()) { return $this->getAbsoluteUrlFromContext($path); } @@ -64,7 +64,7 @@ final class UrlHelper return $path; } - if (null === $request = $this->requestStack->getMasterRequest()) { + if (null === $request = $this->requestStack->getMainRequest()) { return $path; } diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json index 00b247a9a..cb8d59ffe 100644 --- a/vendor/symfony/http-foundation/composer.json +++ b/vendor/symfony/http-foundation/composer.json @@ -16,14 +16,22 @@ } ], "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest" : { + "symfony/mime": "To use the file extension guesser" }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, diff --git a/vendor/symfony/http-kernel/Attribute/ArgumentInterface.php b/vendor/symfony/http-kernel/Attribute/ArgumentInterface.php new file mode 100644 index 000000000..78769f1ac --- /dev/null +++ b/vendor/symfony/http-kernel/Attribute/ArgumentInterface.php @@ -0,0 +1,23 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Attribute; + +trigger_deprecation('symfony/http-kernel', '5.3', 'The "%s" interface is deprecated.', ArgumentInterface::class); + +/** + * Marker interface for controller argument attributes. + * + * @deprecated since Symfony 5.3 + */ +interface ArgumentInterface +{ +} diff --git a/vendor/symfony/http-kernel/Attribute/AsController.php b/vendor/symfony/http-kernel/Attribute/AsController.php new file mode 100644 index 000000000..ef3710451 --- /dev/null +++ b/vendor/symfony/http-kernel/Attribute/AsController.php @@ -0,0 +1,23 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Attribute; + +/** + * Service tag to autoconfigure controllers. + */ +#[\Attribute(\Attribute::TARGET_CLASS)] +class AsController +{ + public function __construct() + { + } +} diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php index e8057737e..54a1d10b9 100644 --- a/vendor/symfony/http-kernel/Bundle/Bundle.php +++ b/vendor/symfony/http-kernel/Bundle/Bundle.php @@ -58,7 +58,7 @@ abstract class Bundle implements BundleInterface /** * Returns the bundle's container extension. * - * @return ExtensionInterface|null The container extension + * @return ExtensionInterface|null * * @throws \LogicException */ @@ -69,7 +69,7 @@ abstract class Bundle implements BundleInterface if (null !== $extension) { if (!$extension instanceof ExtensionInterface) { - throw new \LogicException(sprintf('Extension "%s" must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension))); + throw new \LogicException(sprintf('Extension "%s" must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', get_debug_type($extension))); } // check naming convention diff --git a/vendor/symfony/http-kernel/Bundle/BundleInterface.php b/vendor/symfony/http-kernel/Bundle/BundleInterface.php index 88a95d833..fdc13e0c8 100644 --- a/vendor/symfony/http-kernel/Bundle/BundleInterface.php +++ b/vendor/symfony/http-kernel/Bundle/BundleInterface.php @@ -42,21 +42,21 @@ interface BundleInterface extends ContainerAwareInterface /** * Returns the container extension that should be implicitly loaded. * - * @return ExtensionInterface|null The default extension or null if there is none + * @return ExtensionInterface|null */ public function getContainerExtension(); /** * Returns the bundle name (the class short name). * - * @return string The Bundle name + * @return string */ public function getName(); /** * Gets the Bundle namespace. * - * @return string The Bundle namespace + * @return string */ public function getNamespace(); @@ -65,7 +65,7 @@ interface BundleInterface extends ContainerAwareInterface * * The path should always be returned as a Unix path (with /). * - * @return string The Bundle absolute path + * @return string */ public function getPath(); } diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md index 08a8cfddd..d0dc2076c 100644 --- a/vendor/symfony/http-kernel/CHANGELOG.md +++ b/vendor/symfony/http-kernel/CHANGELOG.md @@ -1,6 +1,82 @@ CHANGELOG ========= +5.4 +--- + + * Add the ability to enable the profiler using a request query parameter, body parameter or attribute + * Deprecate `AbstractTestSessionListener` and `TestSessionListener`, use `AbstractSessionListener` and `SessionListener` instead + * Deprecate the `fileLinkFormat` parameter of `DebugHandlersListener` + * Add support for configuring log level, and status code by exception class + * Allow ignoring "kernel.reset" methods that don't exist with "on_invalid" attribute + +5.3 +--- + + * Deprecate `ArgumentInterface` + * Add `ArgumentMetadata::getAttributes()` + * Deprecate `ArgumentMetadata::getAttribute()`, use `getAttributes()` instead + * Mark the class `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` as internal + * Deprecate returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()` + * Deprecate `HttpKernelInterface::MASTER_REQUEST` and add `HttpKernelInterface::MAIN_REQUEST` as replacement + * Deprecate `KernelEvent::isMasterRequest()` and add `isMainRequest()` as replacement + * Add `#[AsController]` attribute for declaring standalone controllers on PHP 8 + * Add `FragmentUriGeneratorInterface` and `FragmentUriGenerator` to generate the URI of a fragment + +5.2.0 +----- + + * added session usage + * made the public `http_cache` service handle requests when available + * allowed enabling trusted hosts and proxies using new `kernel.trusted_hosts`, + `kernel.trusted_proxies` and `kernel.trusted_headers` parameters + * content of request parameter `_password` is now also hidden + in the request profiler raw content section + * Allowed adding attributes on controller arguments that will be passed to argument resolvers. + * kernels implementing the `ExtensionInterface` will now be auto-registered to the container + * added parameter `kernel.runtime_environment`, defined as `%env(default:kernel.environment:APP_RUNTIME_ENV)%` + * do not set a default `Accept` HTTP header when using `HttpKernelBrowser` + +5.1.0 +----- + + * allowed to use a specific logger channel for deprecations + * made `WarmableInterface::warmUp()` return a list of classes or files to preload on PHP 7.4+; + not returning an array is deprecated + * made kernels implementing `WarmableInterface` be part of the cache warmup stage + * deprecated support for `service:action` syntax to reference controllers, use `serviceOrFqcn::method` instead + * allowed using public aliases to reference controllers + * added session usage reporting when the `_stateless` attribute of the request is set to `true` + * added `AbstractSessionListener::onSessionUsage()` to report when the session is used while a request is stateless + +5.0.0 +----- + + * removed support for getting the container from a non-booted kernel + * removed the first and second constructor argument of `ConfigDataCollector` + * removed `ConfigDataCollector::getApplicationName()` + * removed `ConfigDataCollector::getApplicationVersion()` + * removed support for `Symfony\Component\Templating\EngineInterface` in `HIncludeFragmentRenderer`, use a `Twig\Environment` only + * removed `TranslatorListener` in favor of `LocaleAwareListener` + * removed `getRootDir()` and `getName()` from `Kernel` and `KernelInterface` + * removed `FilterControllerArgumentsEvent`, use `ControllerArgumentsEvent` instead + * removed `FilterControllerEvent`, use `ControllerEvent` instead + * removed `FilterResponseEvent`, use `ResponseEvent` instead + * removed `GetResponseEvent`, use `RequestEvent` instead + * removed `GetResponseForControllerResultEvent`, use `ViewEvent` instead + * removed `GetResponseForExceptionEvent`, use `ExceptionEvent` instead + * removed `PostResponseEvent`, use `TerminateEvent` instead + * removed `SaveSessionListener` in favor of `AbstractSessionListener` + * removed `Client`, use `HttpKernelBrowser` instead + * added method `getProjectDir()` to `KernelInterface` + * removed methods `serialize` and `unserialize` from `DataCollector`, store the serialized state in the data property instead + * made `ProfilerStorageInterface` internal + * removed the second and third argument of `KernelInterface::locateResource` + * removed the second and third argument of `FileLocator::__construct` + * removed loading resources from `%kernel.root_dir%/Resources` and `%kernel.root_dir%` as + fallback directories. + * removed class `ExceptionListener`, use `ErrorListener` instead + 4.4.0 ----- diff --git a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php b/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php index 675c58423..270f690e5 100644 --- a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php +++ b/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php @@ -20,8 +20,6 @@ interface CacheClearerInterface { /** * Clears any caches necessary. - * - * @param string $cacheDir The cache directory */ - public function clear($cacheDir); + public function clear(string $cacheDir); } diff --git a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php index 5061a8d18..a875d899d 100644 --- a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php +++ b/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php @@ -22,6 +22,9 @@ class ChainCacheClearer implements CacheClearerInterface { private $clearers; + /** + * @param iterable<mixed, CacheClearerInterface> $clearers + */ public function __construct(iterable $clearers = []) { $this->clearers = $clearers; @@ -30,7 +33,7 @@ class ChainCacheClearer implements CacheClearerInterface /** * {@inheritdoc} */ - public function clear($cacheDir) + public function clear(string $cacheDir) { foreach ($this->clearers as $clearer) { $clearer->clear($cacheDir); diff --git a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php index f5670f1b9..a074060e4 100644 --- a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php +++ b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel\CacheClearer; +use Psr\Cache\CacheItemPoolInterface; + /** * @author Nicolas Grekas <p@tchwork.com> */ @@ -18,17 +20,28 @@ class Psr6CacheClearer implements CacheClearerInterface { private $pools = []; + /** + * @param array<string, CacheItemPoolInterface> $pools + */ public function __construct(array $pools = []) { $this->pools = $pools; } - public function hasPool($name) + /** + * @return bool + */ + public function hasPool(string $name) { return isset($this->pools[$name]); } - public function getPool($name) + /** + * @return CacheItemPoolInterface + * + * @throws \InvalidArgumentException If the cache pool with the given name does not exist + */ + public function getPool(string $name) { if (!$this->hasPool($name)) { throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name)); @@ -37,7 +50,12 @@ class Psr6CacheClearer implements CacheClearerInterface return $this->pools[$name]; } - public function clearPool($name) + /** + * @return bool + * + * @throws \InvalidArgumentException If the cache pool with the given name does not exist + */ + public function clearPool(string $name) { if (!isset($this->pools[$name])) { throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name)); @@ -49,7 +67,7 @@ class Psr6CacheClearer implements CacheClearerInterface /** * {@inheritdoc} */ - public function clear($cacheDir) + public function clear(string $cacheDir) { foreach ($this->pools as $pool) { $pool->clear(); diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php index 52dc2ad2c..aef42d62f 100644 --- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php +++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php @@ -18,7 +18,7 @@ namespace Symfony\Component\HttpKernel\CacheWarmer; */ abstract class CacheWarmer implements CacheWarmerInterface { - protected function writeCacheFile($file, $content) + protected function writeCacheFile(string $file, $content) { $tmpFile = @tempnam(\dirname($file), basename($file)); if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) { diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php index 308322593..67f9ed50b 100644 --- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php +++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php @@ -26,6 +26,9 @@ class CacheWarmerAggregate implements CacheWarmerInterface private $optionalsEnabled = false; private $onlyOptionalsEnabled = false; + /** + * @param iterable<mixed, CacheWarmerInterface> $warmers + */ public function __construct(iterable $warmers = [], bool $debug = false, string $deprecationLogsFilepath = null) { $this->warmers = $warmers; @@ -44,11 +47,9 @@ class CacheWarmerAggregate implements CacheWarmerInterface } /** - * Warms up the cache. - * - * @param string $cacheDir The cache directory + * {@inheritdoc} */ - public function warmUp($cacheDir) + public function warmUp(string $cacheDir): array { if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) { $collectedLogs = []; @@ -85,6 +86,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface }); } + $preload = []; try { foreach ($this->warmers as $warmer) { if (!$this->optionalsEnabled && $warmer->isOptional()) { @@ -94,13 +96,13 @@ class CacheWarmerAggregate implements CacheWarmerInterface continue; } - $warmer->warmUp($cacheDir); + $preload[] = array_values((array) $warmer->warmUp($cacheDir)); } } finally { if ($collectDeprecations) { restore_error_handler(); - if (file_exists($this->deprecationLogsFilepath)) { + if (is_file($this->deprecationLogsFilepath)) { $previousLogs = unserialize(file_get_contents($this->deprecationLogsFilepath)); if (\is_array($previousLogs)) { $collectedLogs = array_merge($previousLogs, $collectedLogs); @@ -110,12 +112,12 @@ class CacheWarmerAggregate implements CacheWarmerInterface file_put_contents($this->deprecationLogsFilepath, serialize(array_values($collectedLogs))); } } + + return array_values(array_unique(array_merge([], ...$preload))); } /** - * Checks whether this warmer is optional or not. - * - * @return bool always false + * {@inheritdoc} */ public function isOptional(): bool { diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php index 8fece5e95..1f1740b7e 100644 --- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php +++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php @@ -26,7 +26,7 @@ interface CacheWarmerInterface extends WarmableInterface * A warmer should return true if the cache can be * generated incrementally and on-demand. * - * @return bool true if the warmer is optional, false otherwise + * @return bool */ public function isOptional(); } diff --git a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php b/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php index 25d8ee8f6..2f442cb53 100644 --- a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php +++ b/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php @@ -21,7 +21,7 @@ interface WarmableInterface /** * Warms up the cache. * - * @param string $cacheDir The cache directory + * @return string[] A list of classes or files to preload on PHP 7.4+ */ - public function warmUp($cacheDir); + public function warmUp(string $cacheDir); } diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php deleted file mode 100644 index 5c9169ce4..000000000 --- a/vendor/symfony/http-kernel/Client.php +++ /dev/null @@ -1,201 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel; - -use Symfony\Component\BrowserKit\AbstractBrowser; -use Symfony\Component\BrowserKit\CookieJar; -use Symfony\Component\BrowserKit\History; -use Symfony\Component\BrowserKit\Request as DomRequest; -use Symfony\Component\BrowserKit\Response as DomResponse; -use Symfony\Component\HttpFoundation\File\UploadedFile; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; - -/** - * Client simulates a browser and makes requests to an HttpKernel instance. - * - * @method Request getRequest() A Request instance - * @method Response getResponse() A Response instance - * - * @deprecated since Symfony 4.3, use HttpKernelBrowser instead. - */ -class Client extends AbstractBrowser -{ - protected $kernel; - private $catchExceptions = true; - - /** - * @param array $server The server parameters (equivalent of $_SERVER) - */ - public function __construct(HttpKernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null) - { - // These class properties must be set before calling the parent constructor, as it may depend on it. - $this->kernel = $kernel; - $this->followRedirects = false; - - parent::__construct($server, $history, $cookieJar); - } - - /** - * Sets whether to catch exceptions when the kernel is handling a request. - * - * @param bool $catchExceptions Whether to catch exceptions - */ - public function catchExceptions($catchExceptions) - { - $this->catchExceptions = $catchExceptions; - } - - /** - * Makes a request. - * - * @return Response A Response instance - */ - protected function doRequest($request) - { - $response = $this->kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, $this->catchExceptions); - - if ($this->kernel instanceof TerminableInterface) { - $this->kernel->terminate($request, $response); - } - - return $response; - } - - /** - * Returns the script to execute when the request must be insulated. - * - * @return string - */ - protected function getScript($request) - { - $kernel = var_export(serialize($this->kernel), true); - $request = var_export(serialize($request), true); - - $errorReporting = error_reporting(); - - $requires = ''; - foreach (get_declared_classes() as $class) { - if (str_starts_with($class, 'ComposerAutoloaderInit')) { - $r = new \ReflectionClass($class); - $file = \dirname($r->getFileName(), 2).'/autoload.php'; - if (file_exists($file)) { - $requires .= 'require_once '.var_export($file, true).";\n"; - } - } - } - - if (!$requires) { - throw new \RuntimeException('Composer autoloader not found.'); - } - - $code = <<<EOF -<?php - -error_reporting($errorReporting); - -$requires - -\$kernel = unserialize($kernel); -\$request = unserialize($request); -EOF; - - return $code.$this->getHandleScript(); - } - - protected function getHandleScript() - { - return <<<'EOF' -$response = $kernel->handle($request); - -if ($kernel instanceof Symfony\Component\HttpKernel\TerminableInterface) { - $kernel->terminate($request, $response); -} - -echo serialize($response); -EOF; - } - - /** - * Converts the BrowserKit request to a HttpKernel request. - * - * @return Request A Request instance - */ - protected function filterRequest(DomRequest $request) - { - $httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $request->getServer(), $request->getContent()); - - foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) { - $httpRequest->files->set($key, $value); - } - - return $httpRequest; - } - - /** - * Filters an array of files. - * - * This method created test instances of UploadedFile so that the move() - * method can be called on those instances. - * - * If the size of a file is greater than the allowed size (from php.ini) then - * an invalid UploadedFile is returned with an error set to UPLOAD_ERR_INI_SIZE. - * - * @see UploadedFile - * - * @return array An array with all uploaded files marked as already moved - */ - protected function filterFiles(array $files) - { - $filtered = []; - foreach ($files as $key => $value) { - if (\is_array($value)) { - $filtered[$key] = $this->filterFiles($value); - } elseif ($value instanceof UploadedFile) { - if ($value->isValid() && $value->getSize() > UploadedFile::getMaxFilesize()) { - $filtered[$key] = new UploadedFile( - '', - $value->getClientOriginalName(), - $value->getClientMimeType(), - \UPLOAD_ERR_INI_SIZE, - true - ); - } else { - $filtered[$key] = new UploadedFile( - $value->getPathname(), - $value->getClientOriginalName(), - $value->getClientMimeType(), - $value->getError(), - true - ); - } - } - } - - return $filtered; - } - - /** - * Converts the HttpKernel response to a BrowserKit response. - * - * @return DomResponse A DomResponse instance - */ - protected function filterResponse($response) - { - // this is needed to support StreamedResponse - ob_start(); - $response->sendContent(); - $content = ob_get_clean(); - - return new DomResponse($content, $response->getStatusCode(), $response->headers->all()); - } -} diff --git a/vendor/symfony/http-kernel/Config/FileLocator.php b/vendor/symfony/http-kernel/Config/FileLocator.php index 2dda23470..6eca98635 100644 --- a/vendor/symfony/http-kernel/Config/FileLocator.php +++ b/vendor/symfony/http-kernel/Config/FileLocator.php @@ -23,68 +23,24 @@ class FileLocator extends BaseFileLocator { private $kernel; - /** - * @deprecated since Symfony 4.4 - */ - private $path; - - public function __construct(KernelInterface $kernel/* , string $path = null, array $paths = [], bool $triggerDeprecation = true */) + public function __construct(KernelInterface $kernel) { $this->kernel = $kernel; - if (2 <= \func_num_args()) { - $this->path = func_get_arg(1); - $paths = 3 <= \func_num_args() ? func_get_arg(2) : []; - if (null !== $this->path) { - $paths[] = $this->path; - } - - if (4 !== \func_num_args() || func_get_arg(3)) { - @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED); - } - } else { - $paths = []; - } - - parent::__construct($paths); + parent::__construct(); } /** * {@inheritdoc} */ - public function locate($file, $currentPath = null, $first = true) + public function locate(string $file, string $currentPath = null, bool $first = true) { if (isset($file[0]) && '@' === $file[0]) { - return $this->kernel->locateResource($file, $this->path, $first, false); + $resource = $this->kernel->locateResource($file); + + return $first ? $resource : [$resource]; } - $locations = parent::locate($file, $currentPath, $first); - - if (isset($file[0]) && !( - '/' === $file[0] || '\\' === $file[0] - || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && ('\\' === $file[2] || '/' === $file[2])) - || null !== parse_url($file, \PHP_URL_SCHEME) - )) { - $deprecation = false; - - // no need to trigger deprecations when the loaded file is given as absolute path - foreach ($this->paths as $deprecatedPath) { - foreach ((array) $locations as $location) { - if (null !== $currentPath && str_starts_with($location, $currentPath)) { - return $locations; - } - - if (str_starts_with($location, $deprecatedPath) && (null === $currentPath || !str_contains($location, $currentPath))) { - $deprecation = sprintf('Loading the file "%s" from the global resource directory "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $file, $deprecatedPath); - } - } - } - - if ($deprecation) { - @trigger_error($deprecation, \E_USER_DEPRECATED); - } - } - - return $locations; + return parent::locate($file, $currentPath, $first); } } diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php index 421d10f12..a54140b7e 100644 --- a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php +++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php @@ -28,12 +28,11 @@ use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInter final class ArgumentResolver implements ArgumentResolverInterface { private $argumentMetadataFactory; - - /** - * @var iterable|ArgumentValueResolverInterface[] - */ private $argumentValueResolvers; + /** + * @param iterable<mixed, ArgumentValueResolverInterface> $argumentValueResolvers + */ public function __construct(ArgumentMetadataFactoryInterface $argumentMetadataFactory = null, iterable $argumentValueResolvers = []) { $this->argumentMetadataFactory = $argumentMetadataFactory ?? new ArgumentMetadataFactory(); @@ -43,7 +42,7 @@ final class ArgumentResolver implements ArgumentResolverInterface /** * {@inheritdoc} */ - public function getArguments(Request $request, $controller): array + public function getArguments(Request $request, callable $controller): array { $arguments = []; @@ -62,7 +61,7 @@ final class ArgumentResolver implements ArgumentResolverInterface } if (!$atLeastOne) { - throw new \InvalidArgumentException(sprintf('"%s::resolve()" must yield at least one value.', \get_class($resolver))); + throw new \InvalidArgumentException(sprintf('"%s::resolve()" must yield at least one value.', get_debug_type($resolver))); } // continue to the next controller argument @@ -83,6 +82,9 @@ final class ArgumentResolver implements ArgumentResolverInterface return $arguments; } + /** + * @return iterable<int, ArgumentValueResolverInterface> + */ public static function getDefaultArgumentValueResolvers(): iterable { return [ diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php index ed61420e6..a8f7e0f44 100644 --- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php +++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php @@ -38,7 +38,7 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface $values = $request->attributes->get($argument->getName()); if (!\is_array($values)) { - throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), \gettype($values))); + throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), get_debug_type($values))); } yield from $values; diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php b/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php index ba97775a9..30e4783e8 100644 --- a/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php +++ b/vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php @@ -24,11 +24,9 @@ interface ArgumentResolverInterface /** * Returns the arguments to pass to the controller. * - * @param callable $controller - * - * @return array An array of arguments to pass to the controller + * @return array * * @throws \RuntimeException When no value could be provided for a required argument */ - public function getArguments(Request $request, $controller); + public function getArguments(Request $request, callable $controller); } diff --git a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php index 7eb028de1..3b9468465 100644 --- a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php +++ b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php @@ -16,7 +16,7 @@ use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\Container; /** - * A controller resolver searching for a controller in a psr-11 container when using the "service:method" notation. + * A controller resolver searching for a controller in a psr-11 container when using the "service::method" notation. * * @author Fabien Potencier <fabien@symfony.com> * @author Maxime Steinhausser <maxime.steinhausser@gmail.com> @@ -32,11 +32,11 @@ class ContainerControllerResolver extends ControllerResolver parent::__construct($logger); } - protected function createController($controller) + protected function createController(string $controller) { if (1 === substr_count($controller, ':')) { $controller = str_replace(':', '::', $controller); - // TODO deprecate this in 5.1 + trigger_deprecation('symfony/http-kernel', '5.1', 'Referencing controllers with a single colon is deprecated. Use "%s" instead.', $controller); } return parent::createController($controller); @@ -45,7 +45,7 @@ class ContainerControllerResolver extends ControllerResolver /** * {@inheritdoc} */ - protected function instantiateController($class) + protected function instantiateController(string $class) { $class = ltrim($class, '\\'); diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/vendor/symfony/http-kernel/Controller/ControllerResolver.php index 7b8deeff1..8abbadd48 100644 --- a/vendor/symfony/http-kernel/Controller/ControllerResolver.php +++ b/vendor/symfony/http-kernel/Controller/ControllerResolver.php @@ -72,7 +72,7 @@ class ControllerResolver implements ControllerResolverInterface if (\is_object($controller)) { if (!\is_callable($controller)) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($controller), $request->getPathInfo())); + throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller)); } return $controller; @@ -89,7 +89,7 @@ class ControllerResolver implements ControllerResolverInterface } if (!\is_callable($callable)) { - throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($callable), $request->getPathInfo())); + throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($callable)); } return $callable; @@ -98,13 +98,11 @@ class ControllerResolver implements ControllerResolverInterface /** * Returns a callable for the given controller. * - * @param string $controller A Controller string - * - * @return callable A PHP callable + * @return callable * * @throws \InvalidArgumentException When the controller cannot be created */ - protected function createController($controller) + protected function createController(string $controller) { if (!str_contains($controller, '::')) { $controller = $this->instantiateController($controller); @@ -142,11 +140,9 @@ class ControllerResolver implements ControllerResolverInterface /** * Returns an instantiated controller. * - * @param string $class A class name - * * @return object */ - protected function instantiateController($class) + protected function instantiateController(string $class) { return new $class(); } @@ -165,11 +161,11 @@ class ControllerResolver implements ControllerResolverInterface $availableMethods = $this->getClassMethodsWithoutMagicMethods($callable); $alternativeMsg = $availableMethods ? sprintf(' or use one of the available methods: "%s"', implode('", "', $availableMethods)) : ''; - return sprintf('Controller class "%s" cannot be called without a method name. You need to implement "__invoke"%s.', \get_class($callable), $alternativeMsg); + return sprintf('Controller class "%s" cannot be called without a method name. You need to implement "__invoke"%s.', get_debug_type($callable), $alternativeMsg); } if (!\is_array($callable)) { - return sprintf('Invalid type for controller given, expected string, array or object, got "%s".', \gettype($callable)); + return sprintf('Invalid type for controller given, expected string, array or object, got "%s".', get_debug_type($callable)); } if (!isset($callable[0]) || !isset($callable[1]) || 2 !== \count($callable)) { @@ -182,7 +178,7 @@ class ControllerResolver implements ControllerResolverInterface return sprintf('Class "%s" does not exist.', $controller); } - $className = \is_object($controller) ? \get_class($controller) : $controller; + $className = \is_object($controller) ? get_debug_type($controller) : $controller; if (method_exists($controller, $method)) { return sprintf('Method "%s" on class "%s" should be public and non-abstract.', $method, $className); diff --git a/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php b/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php index 39848127b..e22cf082c 100644 --- a/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php +++ b/vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php @@ -31,7 +31,7 @@ class TraceableArgumentResolver implements ArgumentResolverInterface /** * {@inheritdoc} */ - public function getArguments(Request $request, $controller) + public function getArguments(Request $request, callable $controller) { $e = $this->stopwatch->start('controller.get_arguments'); diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php index 6fc7e7034..1a9ebc0c3 100644 --- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php +++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel\ControllerMetadata; +use Symfony\Component\HttpKernel\Attribute\ArgumentInterface; + /** * Responsible for storing metadata of an argument. * @@ -18,14 +20,20 @@ namespace Symfony\Component\HttpKernel\ControllerMetadata; */ class ArgumentMetadata { + public const IS_INSTANCEOF = 2; + private $name; private $type; private $isVariadic; private $hasDefaultValue; private $defaultValue; private $isNullable; + private $attributes; - public function __construct(string $name, ?string $type, bool $isVariadic, bool $hasDefaultValue, $defaultValue, bool $isNullable = false) + /** + * @param object[] $attributes + */ + public function __construct(string $name, ?string $type, bool $isVariadic, bool $hasDefaultValue, $defaultValue, bool $isNullable = false, $attributes = []) { $this->name = $name; $this->type = $type; @@ -33,6 +41,13 @@ class ArgumentMetadata $this->hasDefaultValue = $hasDefaultValue; $this->defaultValue = $defaultValue; $this->isNullable = $isNullable || null === $type || ($hasDefaultValue && null === $defaultValue); + + if (null === $attributes || $attributes instanceof ArgumentInterface) { + trigger_deprecation('symfony/http-kernel', '5.3', 'The "%s" constructor expects an array of PHP attributes as last argument, %s given.', __CLASS__, get_debug_type($attributes)); + $attributes = $attributes ? [$attributes] : []; + } + + $this->attributes = $attributes; } /** @@ -104,4 +119,45 @@ class ArgumentMetadata return $this->defaultValue; } + + /** + * Returns the attribute (if any) that was set on the argument. + */ + public function getAttribute(): ?ArgumentInterface + { + trigger_deprecation('symfony/http-kernel', '5.3', 'Method "%s()" is deprecated, use "getAttributes()" instead.', __METHOD__); + + if (!$this->attributes) { + return null; + } + + return $this->attributes[0] instanceof ArgumentInterface ? $this->attributes[0] : null; + } + + /** + * @return object[] + */ + public function getAttributes(string $name = null, int $flags = 0): array + { + if (!$name) { + return $this->attributes; + } + + $attributes = []; + if ($flags & self::IS_INSTANCEOF) { + foreach ($this->attributes as $attribute) { + if ($attribute instanceof $name) { + $attributes[] = $attribute; + } + } + } else { + foreach ($this->attributes as $attribute) { + if (\get_class($attribute) === $name) { + $attributes[] = $attribute; + } + } + } + + return $attributes; + } } diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php index 994d53109..85bb805f3 100644 --- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php +++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php @@ -33,13 +33,22 @@ final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface $class = $reflection->class; } else { $reflection = new \ReflectionFunction($controller); - if ($class = str_contains($reflection->name, '{closure}') ? null : $reflection->getClosureScopeClass()) { + if ($class = str_contains($reflection->name, '{closure}') ? null : (\PHP_VERSION_ID >= 80111 ? $reflection->getClosureCalledClass() : $reflection->getClosureScopeClass())) { $class = $class->name; } } foreach ($reflection->getParameters() as $param) { - $arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param, $class), $param->isVariadic(), $param->isDefaultValueAvailable(), $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null, $param->allowsNull()); + $attributes = []; + if (\PHP_VERSION_ID >= 80000) { + foreach ($param->getAttributes() as $reflectionAttribute) { + if (class_exists($reflectionAttribute->getName())) { + $attributes[] = $reflectionAttribute->newInstance(); + } + } + } + + $arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param, $class), $param->isVariadic(), $param->isDefaultValueAvailable(), $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null, $param->allowsNull(), $attributes); } return $arguments; diff --git a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php index a134ebc25..fda6a4eaa 100644 --- a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php @@ -15,20 +15,13 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** - * AjaxDataCollector. - * * @author Bart van den Burg <bart@burgov.nl> * - * @final since Symfony 4.4 + * @final */ class AjaxDataCollector extends DataCollector { - /** - * {@inheritdoc} - * - * @param \Throwable|null $exception - */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { // all collecting is done client side } @@ -38,7 +31,7 @@ class AjaxDataCollector extends DataCollector // all collecting is done client side } - public function getName() + public function getName(): string { return 'ajax'; } diff --git a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php index 91b62899f..9819507aa 100644 --- a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php @@ -20,7 +20,7 @@ use Symfony\Component\VarDumper\Caster\ClassStub; /** * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class ConfigDataCollector extends DataCollector implements LateDataCollectorInterface { @@ -28,21 +28,6 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte * @var KernelInterface */ private $kernel; - private $name; - private $version; - - public function __construct(string $name = null, string $version = null) - { - if (1 <= \func_num_args()) { - @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - if (2 <= \func_num_args()) { - @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - - $this->name = $name; - $this->version = $version; - } /** * Sets the Kernel associated with this Request. @@ -54,17 +39,13 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE); $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE); $this->data = [ - 'app_name' => $this->name, - 'app_version' => $this->version, 'token' => $response->headers->get('X-Debug-Token'), 'symfony_version' => Kernel::VERSION, 'symfony_minor_version' => sprintf('%s.%s', Kernel::MAJOR_VERSION, Kernel::MINOR_VERSION), @@ -110,42 +91,18 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte $this->data = $this->cloneVar($this->data); } - /** - * @deprecated since Symfony 4.2 - */ - public function getApplicationName() - { - @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - - return $this->data['app_name']; - } - - /** - * @deprecated since Symfony 4.2 - */ - public function getApplicationVersion() - { - @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - - return $this->data['app_version']; - } - /** * Gets the token. - * - * @return string|null The token */ - public function getToken() + public function getToken(): ?string { return $this->data['token']; } /** * Gets the Symfony version. - * - * @return string The Symfony version */ - public function getSymfonyVersion() + public function getSymfonyVersion(): string { return $this->data['symfony_version']; } @@ -155,7 +112,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte * * @return string One of: unknown, dev, stable, eom, eol */ - public function getSymfonyState() + public function getSymfonyState(): string { return $this->data['symfony_state']; } @@ -163,10 +120,8 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Returns the minor Symfony version used (without patch numbers of extra * suffix like "RC", "beta", etc.). - * - * @return string */ - public function getSymfonyMinorVersion() + public function getSymfonyMinorVersion(): string { return $this->data['symfony_minor_version']; } @@ -182,10 +137,8 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Returns the human readable date when this Symfony version ends its * maintenance period. - * - * @return string */ - public function getSymfonyEom() + public function getSymfonyEom(): string { return $this->data['symfony_eom']; } @@ -193,30 +146,24 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Returns the human readable date when this Symfony version reaches its * "end of life" and won't receive bugs or security fixes. - * - * @return string */ - public function getSymfonyEol() + public function getSymfonyEol(): string { return $this->data['symfony_eol']; } /** * Gets the PHP version. - * - * @return string The PHP version */ - public function getPhpVersion() + public function getPhpVersion(): string { return $this->data['php_version']; } /** * Gets the PHP version extra part. - * - * @return string|null The extra part */ - public function getPhpVersionExtra() + public function getPhpVersionExtra(): ?string { return $this->data['php_version_extra'] ?? null; } @@ -224,47 +171,25 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * @return int The PHP architecture as number of bits (e.g. 32 or 64) */ - public function getPhpArchitecture() + public function getPhpArchitecture(): int { return $this->data['php_architecture']; } - /** - * @return string - */ - public function getPhpIntlLocale() + public function getPhpIntlLocale(): string { return $this->data['php_intl_locale']; } - /** - * @return string - */ - public function getPhpTimezone() + public function getPhpTimezone(): string { return $this->data['php_timezone']; } - /** - * Gets the application name. - * - * @return string The application name - * - * @deprecated since Symfony 4.2 - */ - public function getAppName() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - - return 'n/a'; - } - /** * Gets the environment. - * - * @return string The environment */ - public function getEnv() + public function getEnv(): string { return $this->data['env']; } @@ -272,7 +197,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Returns true if the debug is enabled. * - * @return bool true if debug is enabled, false otherwise + * @return bool|string true if debug is enabled, false otherwise or a string if no kernel was set */ public function isDebug() { @@ -281,30 +206,24 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Returns true if the XDebug is enabled. - * - * @return bool true if XDebug is enabled, false otherwise */ - public function hasXDebug() + public function hasXDebug(): bool { return $this->data['xdebug_enabled']; } /** * Returns true if APCu is enabled. - * - * @return bool true if APCu is enabled, false otherwise */ - public function hasApcu() + public function hasApcu(): bool { return $this->data['apcu_enabled']; } /** * Returns true if Zend OPcache is enabled. - * - * @return bool true if Zend OPcache is enabled, false otherwise */ - public function hasZendOpcache() + public function hasZendOpcache(): bool { return $this->data['zend_opcache_enabled']; } @@ -316,10 +235,8 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * Gets the PHP SAPI name. - * - * @return string The environment */ - public function getSapiName() + public function getSapiName(): string { return $this->data['sapi_name']; } @@ -327,7 +244,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'config'; } diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php index 3938dab6a..ccaf66da0 100644 --- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/DataCollector.php @@ -38,29 +38,6 @@ abstract class DataCollector implements DataCollectorInterface */ private $cloner; - /** - * @deprecated since Symfony 4.3, store all the serialized state in the data property instead - */ - public function serialize() - { - @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED); - - $trace = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT, 2); - $isCalledFromOverridingMethod = isset($trace[1]['function'], $trace[1]['object']) && 'serialize' === $trace[1]['function'] && $this === $trace[1]['object']; - - return $isCalledFromOverridingMethod ? $this->data : serialize($this->data); - } - - /** - * @deprecated since Symfony 4.3, store all the serialized state in the data property instead - */ - public function unserialize($data) - { - @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED); - - $this->data = \is_array($data) ? $data : unserialize($data); - } - /** * Converts the variable into a serializable Data instance. * @@ -112,23 +89,24 @@ abstract class DataCollector implements DataCollectorInterface */ public function __sleep() { - if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) { - @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED); - $this->data = $this->serialize(); - } - return ['data']; } public function __wakeup() { - if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'unserialize'))->getDeclaringClass()->name) { - if (\is_object($this->data)) { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } + } - @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED); - $this->unserialize($this->data); - } + /** + * @internal to prevent implementing \Serializable + */ + final protected function serialize() + { + } + + /** + * @internal to prevent implementing \Serializable + */ + final protected function unserialize($data) + { } } diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php index 2ee955ba0..1cb865fd6 100644 --- a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php +++ b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php @@ -24,15 +24,13 @@ interface DataCollectorInterface extends ResetInterface { /** * Collects data for the given Request and Response. - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */); + public function collect(Request $request, Response $response, \Throwable $exception = null); /** * Returns the name of the collector. * - * @return string The collector name + * @return string */ public function getName(); } diff --git a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php index 155d41c3c..08026e562 100644 --- a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php @@ -27,7 +27,7 @@ use Symfony\Component\VarDumper\Server\Connection; /** * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.3 + * @final */ class DumpDataCollector extends DataCollector implements DataDumperInterface { @@ -101,19 +101,14 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface } } - /** - * {@inheritdoc} - * - * @param \Throwable|null $exception - */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { if (!$this->dataCount) { $this->data = []; } // Sub-requests and programmatic calls stay in the collected profile. - if ($this->dumper || ($this->requestStack && $this->requestStack->getMasterRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) { + if ($this->dumper || ($this->requestStack && $this->requestStack->getMainRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) { return; } @@ -193,12 +188,12 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface self::__construct($this->stopwatch, \is_string($fileLinkFormat) || $fileLinkFormat instanceof FileLinkFormatter ? $fileLinkFormat : null, \is_string($charset) ? $charset : null); } - public function getDumpsCount() + public function getDumpsCount(): int { return $this->dataCount; } - public function getDumps($format, $maxDepthLimit = -1, $maxItemsPerDepth = -1) + public function getDumps(string $format, int $maxDepthLimit = -1, int $maxItemsPerDepth = -1): array { $data = fopen('php://memory', 'r+'); @@ -225,7 +220,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface return $dumps; } - public function getName() + public function getName(): string { return 'dump'; } diff --git a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php index 24ed55961..a81355336 100644 --- a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php @@ -12,19 +12,17 @@ namespace Symfony\Component\HttpKernel\DataCollector; use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher; -use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\VarDumper\Cloner\Data; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Contracts\Service\ResetInterface; /** - * EventDataCollector. - * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class EventDataCollector extends DataCollector implements LateDataCollectorInterface { @@ -40,12 +38,10 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { - $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null; + $this->currentRequest = $this->requestStack && $this->requestStack->getMainRequest() !== $request ? $request : null; $this->data = [ 'called_listeners' => [], 'not_called_listeners' => [], @@ -64,12 +60,9 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter public function lateCollect() { - if ($this->dispatcher instanceof TraceableEventDispatcherInterface) { + if ($this->dispatcher instanceof TraceableEventDispatcher) { $this->setCalledListeners($this->dispatcher->getCalledListeners($this->currentRequest)); $this->setNotCalledListeners($this->dispatcher->getNotCalledListeners($this->currentRequest)); - } - - if ($this->dispatcher instanceof TraceableEventDispatcher) { $this->setOrphanedEvents($this->dispatcher->getOrphanedEvents($this->currentRequest)); } @@ -77,8 +70,6 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Sets the called listeners. - * * @param array $listeners An array of called listeners * * @see TraceableEventDispatcher @@ -89,11 +80,9 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Gets the called listeners. - * - * @return array An array of called listeners - * * @see TraceableEventDispatcher + * + * @return array|Data */ public function getCalledListeners() { @@ -101,8 +90,6 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Sets the not called listeners. - * * @see TraceableEventDispatcher */ public function setNotCalledListeners(array $listeners) @@ -111,11 +98,9 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Gets the not called listeners. - * - * @return array - * * @see TraceableEventDispatcher + * + * @return array|Data */ public function getNotCalledListeners() { @@ -123,8 +108,6 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Sets the orphaned events. - * * @param array $events An array of orphaned events * * @see TraceableEventDispatcher @@ -135,11 +118,9 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter } /** - * Gets the orphaned events. - * - * @return array An array of orphaned events - * * @see TraceableEventDispatcher + * + * @return array|Data */ public function getOrphanedEvents() { @@ -149,7 +130,7 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'events'; } diff --git a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php index 9868659b9..14bbbb364 100644 --- a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php @@ -16,23 +16,17 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** - * ExceptionDataCollector. - * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class ExceptionDataCollector extends DataCollector { /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { - $exception = 2 < \func_num_args() ? func_get_arg(2) : null; - if (null !== $exception) { $this->data = [ 'exception' => FlattenException::createFromThrowable($exception), @@ -48,19 +42,12 @@ class ExceptionDataCollector extends DataCollector $this->data = []; } - /** - * Checks if the exception is not null. - * - * @return bool true if the exception is not null, false otherwise - */ - public function hasException() + public function hasException(): bool { return isset($this->data['exception']); } /** - * Gets the exception. - * * @return \Exception|FlattenException */ public function getException() @@ -68,42 +55,22 @@ class ExceptionDataCollector extends DataCollector return $this->data['exception']; } - /** - * Gets the exception message. - * - * @return string The exception message - */ - public function getMessage() + public function getMessage(): string { return $this->data['exception']->getMessage(); } - /** - * Gets the exception code. - * - * @return int The exception code - */ - public function getCode() + public function getCode(): int { return $this->data['exception']->getCode(); } - /** - * Gets the status code. - * - * @return int The status code - */ - public function getStatusCode() + public function getStatusCode(): int { return $this->data['exception']->getStatusCode(); } - /** - * Gets the exception trace. - * - * @return array The exception trace - */ - public function getTrace() + public function getTrace(): array { return $this->data['exception']->getTrace(); } @@ -111,7 +78,7 @@ class ExceptionDataCollector extends DataCollector /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'exception'; } diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php index 849adfd8c..2bbd2a039 100644 --- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php @@ -20,7 +20,7 @@ use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; /** * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class LoggerDataCollector extends DataCollector implements LateDataCollectorInterface { @@ -28,8 +28,9 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte private $containerPathPrefix; private $currentRequest; private $requestStack; + private $processedLogs; - public function __construct($logger = null, string $containerPathPrefix = null, RequestStack $requestStack = null) + public function __construct(object $logger = null, string $containerPathPrefix = null, RequestStack $requestStack = null) { if (null !== $logger && $logger instanceof DebugLoggerInterface) { $this->logger = $logger; @@ -41,12 +42,10 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { - $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null; + $this->currentRequest = $this->requestStack && $this->requestStack->getMainRequest() !== $request ? $request : null; } /** @@ -82,6 +81,82 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte return $this->data['logs'] ?? []; } + public function getProcessedLogs() + { + if (null !== $this->processedLogs) { + return $this->processedLogs; + } + + $rawLogs = $this->getLogs(); + if ([] === $rawLogs) { + return $this->processedLogs = $rawLogs; + } + + $logs = []; + foreach ($this->getLogs()->getValue() as $rawLog) { + $rawLogData = $rawLog->getValue(); + + if ($rawLogData['priority']->getValue() > 300) { + $logType = 'error'; + } elseif (isset($rawLogData['scream']) && false === $rawLogData['scream']->getValue()) { + $logType = 'deprecation'; + } elseif (isset($rawLogData['scream']) && true === $rawLogData['scream']->getValue()) { + $logType = 'silenced'; + } else { + $logType = 'regular'; + } + + $logs[] = [ + 'type' => $logType, + 'errorCount' => $rawLog['errorCount'] ?? 1, + 'timestamp' => $rawLogData['timestamp_rfc3339']->getValue(), + 'priority' => $rawLogData['priority']->getValue(), + 'priorityName' => $rawLogData['priorityName']->getValue(), + 'channel' => $rawLogData['channel']->getValue(), + 'message' => $rawLogData['message'], + 'context' => $rawLogData['context'], + ]; + } + + // sort logs from oldest to newest + usort($logs, static function ($logA, $logB) { + return $logA['timestamp'] <=> $logB['timestamp']; + }); + + return $this->processedLogs = $logs; + } + + public function getFilters() + { + $filters = [ + 'channel' => [], + 'priority' => [ + 'Debug' => 100, + 'Info' => 200, + 'Notice' => 250, + 'Warning' => 300, + 'Error' => 400, + 'Critical' => 500, + 'Alert' => 550, + 'Emergency' => 600, + ], + ]; + + $allChannels = []; + foreach ($this->getProcessedLogs() as $log) { + if ('' === trim($log['channel'] ?? '')) { + continue; + } + + $allChannels[] = $log['channel']; + } + $channels = array_unique($allChannels); + sort($channels); + $filters['channel'] = $channels; + + return $filters; + } + public function getPriorities() { return $this->data['priorities'] ?? []; @@ -115,14 +190,14 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'logger'; } private function getContainerDeprecationLogs(): array { - if (null === $this->containerPathPrefix || !file_exists($file = $this->containerPathPrefix.'Deprecations.log')) { + if (null === $this->containerPathPrefix || !is_file($file = $this->containerPathPrefix.'Deprecations.log')) { return []; } @@ -135,6 +210,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte foreach (unserialize($logContent) as $log) { $log['context'] = ['exception' => new SilencedErrorContext($log['type'], $log['file'], $log['line'], $log['trace'], $log['count'])]; $log['timestamp'] = $bootTime; + $log['timestamp_rfc3339'] = (new \DateTimeImmutable())->setTimestamp($bootTime)->format(\DateTimeInterface::RFC3339_EXTENDED); $log['priority'] = 100; $log['priorityName'] = 'DEBUG'; $log['channel'] = null; @@ -148,7 +224,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte private function getContainerCompilerLogs(string $compilerLogsFilepath = null): array { - if (!file_exists($compilerLogsFilepath)) { + if (!is_file($compilerLogsFilepath)) { return []; } diff --git a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php index f6015bafa..53a1f9e44 100644 --- a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php @@ -15,11 +15,9 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** - * MemoryDataCollector. - * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface { @@ -30,10 +28,8 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { $this->updateMemoryUsage(); } @@ -57,29 +53,19 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte $this->updateMemoryUsage(); } - /** - * Gets the memory. - * - * @return int The memory - */ - public function getMemory() + public function getMemory(): int { return $this->data['memory']; } /** - * Gets the PHP memory limit. - * - * @return int The memory limit + * @return int|float */ public function getMemoryLimit() { return $this->data['memory_limit']; } - /** - * Updates the memory usage data. - */ public function updateMemoryUsage() { $this->data['memory'] = memory_get_peak_usage(true); @@ -88,7 +74,7 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'memory'; } diff --git a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php index 2147c678f..5717000f2 100644 --- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php @@ -15,31 +15,39 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpFoundation\Session\SessionBagInterface; +use Symfony\Component\HttpFoundation\Session\SessionInterface; +use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\VarDumper\Cloner\Data; /** * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface { - protected $controllers; + /** + * @var \SplObjectStorage<Request, callable> + */ + private $controllers; + private $sessionUsages = []; + private $requestStack; - public function __construct() + public function __construct(RequestStack $requestStack = null) { $this->controllers = new \SplObjectStorage(); + $this->requestStack = $requestStack; } /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { // attributes are serialized and as they can be anything, they need to be converted to strings. $attributes = []; @@ -86,7 +94,6 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter $this->data = [ 'method' => $request->getMethod(), 'format' => $request->getRequestFormat(), - 'content' => $content, 'content_type' => $response->headers->get('Content-Type', 'text/html'), 'status_text' => Response::$statusTexts[$statusCode] ?? '', 'status_code' => $statusCode, @@ -102,6 +109,8 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter 'response_cookies' => $responseCookies, 'session_metadata' => $sessionMetadata, 'session_attributes' => $sessionAttributes, + 'session_usages' => array_values($this->sessionUsages), + 'stateless_check' => $this->requestStack && ($mainRequest = $this->requestStack->getMainRequest()) && $mainRequest->attributes->get('_stateless', false), 'flashes' => $flashes, 'path_info' => $request->getPathInfo(), 'controller' => 'n/a', @@ -118,9 +127,13 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter } if (isset($this->data['request_request']['_password'])) { + $encodedPassword = rawurlencode($this->data['request_request']['_password']); + $content = str_replace('_password='.$encodedPassword, '_password=******', $content); $this->data['request_request']['_password'] = '******'; } + $this->data['content'] = $content; + foreach ($this->data as $key => $value) { if (!\is_array($value)) { continue; @@ -172,6 +185,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter { $this->data = []; $this->controllers = new \SplObjectStorage(); + $this->sessionUsages = []; } public function getMethod() @@ -204,12 +218,12 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter return new ParameterBag($this->data['request_headers']->getValue()); } - public function getRequestServer($raw = false) + public function getRequestServer(bool $raw = false) { return new ParameterBag($this->data['request_server']->getValue($raw)); } - public function getRequestCookies($raw = false) + public function getRequestCookies(bool $raw = false) { return new ParameterBag($this->data['request_cookies']->getValue($raw)); } @@ -239,6 +253,16 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter return $this->data['session_attributes']->getValue(); } + public function getStatelessCheck() + { + return $this->data['stateless_check']; + } + + public function getSessionUsages() + { + return $this->data['session_usages']; + } + public function getFlashes() { return $this->data['flashes']->getValue(); @@ -295,10 +319,8 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter * Gets the route name. * * The _route request attributes is automatically set by the Router Matcher. - * - * @return string The route */ - public function getRoute() + public function getRoute(): string { return $this->data['route']; } @@ -312,10 +334,8 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter * Gets the route parameters. * * The _route_params request attributes is automatically set by the RouterListener. - * - * @return array The parameters */ - public function getRouteParams() + public function getRouteParams(): array { return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params']->getValue() : []; } @@ -323,8 +343,8 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter /** * Gets the parsed controller. * - * @return array|string The controller as a string or array of data - * with keys 'class', 'method', 'file' and 'line' + * @return array|string|Data The controller as a string or array of data + * with keys 'class', 'method', 'file' and 'line' */ public function getController() { @@ -334,8 +354,8 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter /** * Gets the previous request attributes. * - * @return array|bool A legacy array of data from the previous redirection response - * or false otherwise + * @return array|Data|false A legacy array of data from the previous redirection response + * or false otherwise */ public function getRedirect() { @@ -347,20 +367,14 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter return $this->data['forward_token'] ?? null; } - /** - * @final since Symfony 4.3 - */ - public function onKernelController(FilterControllerEvent $event) + public function onKernelController(ControllerEvent $event) { $this->controllers[$event->getRequest()] = $event->getController(); } - /** - * @final since Symfony 4.3 - */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -369,7 +383,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter } } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::CONTROLLER => 'onKernelController', @@ -380,19 +394,48 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'request'; } + public function collectSessionUsage(): void + { + $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); + + $traceEndIndex = \count($trace) - 1; + for ($i = $traceEndIndex; $i > 0; --$i) { + if (null !== ($class = $trace[$i]['class'] ?? null) && (is_subclass_of($class, SessionInterface::class) || is_subclass_of($class, SessionBagInterface::class))) { + $traceEndIndex = $i; + break; + } + } + + if ((\count($trace) - 1) === $traceEndIndex) { + return; + } + + // Remove part of the backtrace that belongs to session only + array_splice($trace, 0, $traceEndIndex); + + // Merge identical backtraces generated by internal call reports + $name = sprintf('%s:%s', $trace[1]['class'] ?? $trace[0]['file'], $trace[0]['line']); + if (!\array_key_exists($name, $this->sessionUsages)) { + $this->sessionUsages[$name] = [ + 'name' => $name, + 'file' => $trace[0]['file'], + 'line' => $trace[0]['line'], + 'trace' => $trace, + ]; + } + } + /** - * Parse a controller. - * * @param string|object|array|null $controller The controller to parse * * @return array|string An array of controller data or a simple string */ - protected function parseController($controller) + private function parseController($controller) { if (\is_string($controller) && str_contains($controller, '::')) { $controller = explode('::', $controller); @@ -403,7 +446,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter $r = new \ReflectionMethod($controller[0], $controller[1]); return [ - 'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0], + 'class' => \is_object($controller[0]) ? get_debug_type($controller[0]) : $controller[0], 'method' => $controller[1], 'file' => $r->getFileName(), 'line' => $r->getStartLine(), @@ -412,7 +455,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter if (\is_callable($controller)) { // using __call or __callStatic return [ - 'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0], + 'class' => \is_object($controller[0]) ? get_debug_type($controller[0]) : $controller[0], 'method' => $controller[1], 'file' => 'n/a', 'line' => 'n/a', @@ -436,7 +479,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter } $controller['method'] = $r->name; - if ($class = $r->getClosureScopeClass()) { + if ($class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { $controller['class'] = $class->name; } else { return $r->name; diff --git a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php index 8ff676cc8..372ede037 100644 --- a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php @@ -14,7 +14,7 @@ namespace Symfony\Component\HttpKernel\DataCollector; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\ControllerEvent; /** * @author Fabien Potencier <fabien@symfony.com> @@ -22,7 +22,7 @@ use Symfony\Component\HttpKernel\Event\FilterControllerEvent; class RouterDataCollector extends DataCollector { /** - * @var \SplObjectStorage + * @var \SplObjectStorage<Request, callable> */ protected $controllers; @@ -34,11 +34,9 @@ class RouterDataCollector extends DataCollector /** * {@inheritdoc} * - * @param \Throwable|null $exception - * - * @final since Symfony 4.4 + * @final */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { if ($response instanceof RedirectResponse) { $this->data['redirect'] = true; @@ -70,10 +68,8 @@ class RouterDataCollector extends DataCollector /** * Remembers the controller associated to each request. - * - * @final since Symfony 4.3 */ - public function onKernelController(FilterControllerEvent $event) + public function onKernelController(ControllerEvent $event) { $this->controllers[$event->getRequest()] = $event->getController(); } @@ -87,7 +83,7 @@ class RouterDataCollector extends DataCollector } /** - * @return string|null The target URL + * @return string|null */ public function getTargetUrl() { @@ -95,7 +91,7 @@ class RouterDataCollector extends DataCollector } /** - * @return string|null The target route + * @return string|null */ public function getTargetRoute() { diff --git a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php index c6166c8aa..43799060f 100644 --- a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php @@ -20,12 +20,12 @@ use Symfony\Component\Stopwatch\StopwatchEvent; /** * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.4 + * @final */ class TimeDataCollector extends DataCollector implements LateDataCollectorInterface { - protected $kernel; - protected $stopwatch; + private $kernel; + private $stopwatch; public function __construct(KernelInterface $kernel = null, Stopwatch $stopwatch = null) { @@ -35,10 +35,8 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { if (null !== $this->kernel) { $startTime = $this->kernel->getStartTime(); @@ -78,8 +76,6 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf } /** - * Sets the request events. - * * @param StopwatchEvent[] $events The request events */ public function setEvents(array $events) @@ -92,21 +88,17 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf } /** - * Gets the request events. - * - * @return StopwatchEvent[] The request events + * @return StopwatchEvent[] */ - public function getEvents() + public function getEvents(): array { return $this->data['events']; } /** * Gets the request elapsed time. - * - * @return float The elapsed time */ - public function getDuration() + public function getDuration(): float { if (!isset($this->data['events']['__section__'])) { return 0; @@ -121,10 +113,8 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf * Gets the initialization time. * * This is the time spent until the beginning of the request handling. - * - * @return float The elapsed time */ - public function getInitTime() + public function getInitTime(): float { if (!isset($this->data['events']['__section__'])) { return 0; @@ -133,20 +123,12 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf return $this->data['events']['__section__']->getOrigin() - $this->getStartTime(); } - /** - * Gets the request time. - * - * @return float - */ - public function getStartTime() + public function getStartTime(): float { return $this->data['start_time']; } - /** - * @return bool whether or not the stopwatch component is installed - */ - public function isStopwatchInstalled() + public function isStopwatchInstalled(): bool { return $this->data['stopwatch_installed']; } @@ -154,7 +136,7 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'time'; } diff --git a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php index c235b1dbb..9ac688cc5 100644 --- a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php +++ b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php @@ -20,10 +20,20 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface; * * @author Jérémy Romey <jeremy@free-agent.fr> * - * @final since Symfony 4.3 + * @final */ class FileLinkFormatter { + private const FORMATS = [ + 'textmate' => 'txmt://open?url=file://%f&line=%l', + 'macvim' => 'mvim://open?url=file://%f&line=%l', + 'emacs' => 'emacs://open?url=file://%f&line=%l', + 'sublime' => 'subl://open?url=file://%f&line=%l', + 'phpstorm' => 'phpstorm://open?file=%f&line=%l', + 'atom' => 'atom://core/open/file?filename=%f&line=%l', + 'vscode' => 'vscode://file/%f:%l', + ]; + private $fileLinkFormat; private $requestStack; private $baseDir; @@ -35,7 +45,7 @@ class FileLinkFormatter */ public function __construct($fileLinkFormat = null, RequestStack $requestStack = null, string $baseDir = null, $urlFormat = null) { - if (!\is_array($fileLinkFormat) && $fileLinkFormat = $fileLinkFormat ?: \ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format')) { + if (!\is_array($fileLinkFormat) && $fileLinkFormat = (self::FORMATS[$fileLinkFormat] ?? $fileLinkFormat) ?: \ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format')) { $i = strpos($f = $fileLinkFormat, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f); $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE); } @@ -46,7 +56,7 @@ class FileLinkFormatter $this->urlFormat = $urlFormat; } - public function format($file, $line) + public function format(string $file, int $line) { if ($fmt = $this->getFileLinkFormat()) { for ($i = 1; isset($fmt[$i]); ++$i) { @@ -75,7 +85,7 @@ class FileLinkFormatter /** * @internal */ - public static function generateUrlFormat(UrlGeneratorInterface $router, $routeName, $queryString) + public static function generateUrlFormat(UrlGeneratorInterface $router, string $routeName, string $queryString): ?string { try { return $router->generate($routeName).$queryString; @@ -91,7 +101,7 @@ class FileLinkFormatter } if ($this->requestStack && $this->baseDir && $this->urlFormat) { - $request = $this->requestStack->getMasterRequest(); + $request = $this->requestStack->getMainRequest(); if ($request instanceof Request && (!$this->urlFormat instanceof \Closure || $this->urlFormat = ($this->urlFormat)())) { return [ diff --git a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php b/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php index 832bfb58d..fd1cf9e58 100644 --- a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php +++ b/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php @@ -26,7 +26,7 @@ class TraceableEventDispatcher extends BaseTraceableEventDispatcher /** * {@inheritdoc} */ - protected function beforeDispatch(string $eventName, $event) + protected function beforeDispatch(string $eventName, object $event) { switch ($eventName) { case KernelEvents::REQUEST: @@ -61,7 +61,7 @@ class TraceableEventDispatcher extends BaseTraceableEventDispatcher /** * {@inheritdoc} */ - protected function afterDispatch(string $eventName, $event) + protected function afterDispatch(string $eventName, object $event) { switch ($eventName) { case KernelEvents::CONTROLLER_ARGUMENTS: diff --git a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php index 9825151ab..4bb60b41f 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php @@ -37,13 +37,15 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface */ public function process(ContainerBuilder $container) { - $annotatedClasses = $this->kernel->getAnnotatedClassesToCompile(); + $annotatedClasses = []; foreach ($container->getExtensions() as $extension) { if ($extension instanceof Extension) { - $annotatedClasses = array_merge($annotatedClasses, $extension->getAnnotatedClassesToCompile()); + $annotatedClasses[] = $extension->getAnnotatedClassesToCompile(); } } + $annotatedClasses = array_merge($this->kernel->getAnnotatedClassesToCompile(), ...$annotatedClasses); + $existingClasses = $this->getClassesInComposerClassMaps(); $annotatedClasses = $container->getParameterBag()->resolveValue($annotatedClasses); diff --git a/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php b/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php index 705c88dbf..d925ed6b0 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php @@ -34,6 +34,10 @@ class ControllerArgumentValueResolverPass implements CompilerPassInterface public function __construct(string $argumentResolverService = 'argument_resolver', string $argumentValueResolverTag = 'controller.argument_value_resolver', string $traceableResolverStopwatch = 'debug.stopwatch') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->argumentResolverService = $argumentResolverService; $this->argumentValueResolverTag = $argumentValueResolverTag; $this->traceableResolverStopwatch = $traceableResolverStopwatch; diff --git a/vendor/symfony/http-kernel/DependencyInjection/Extension.php b/vendor/symfony/http-kernel/DependencyInjection/Extension.php index db376e6d9..4090fd822 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/Extension.php +++ b/vendor/symfony/http-kernel/DependencyInjection/Extension.php @@ -25,7 +25,7 @@ abstract class Extension extends BaseExtension /** * Gets the annotated classes to cache. * - * @return array An array of classes + * @return array */ public function getAnnotatedClassesToCompile() { diff --git a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php b/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php index 432f76720..f26baeca9 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php @@ -30,6 +30,10 @@ class FragmentRendererPass implements CompilerPassInterface public function __construct(string $handlerService = 'fragment.handler', string $rendererTag = 'kernel.fragment_renderer') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->handlerService = $handlerService; $this->rendererTag = $rendererTag; } diff --git a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php index 526c11faa..f25328704 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php +++ b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php @@ -23,6 +23,10 @@ use Symfony\Component\HttpKernel\Fragment\FragmentHandler; class LazyLoadingFragmentHandler extends FragmentHandler { private $container; + + /** + * @var array<string, bool> + */ private $initialized = []; public function __construct(ContainerInterface $container, RequestStack $requestStack, bool $debug = false) @@ -35,7 +39,7 @@ class LazyLoadingFragmentHandler extends FragmentHandler /** * {@inheritdoc} */ - public function render($uri, $renderer = 'inline', array $options = []) + public function render($uri, string $renderer = 'inline', array $options = []) { if (!isset($this->initialized[$renderer]) && $this->container->has($renderer)) { $this->addRenderer($this->container->get($renderer)); diff --git a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php b/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php index 83e1b758d..5f0f0d8de 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php @@ -23,6 +23,9 @@ class MergeExtensionConfigurationPass extends BaseMergeExtensionConfigurationPas { private $extensions; + /** + * @param string[] $extensions + */ public function __construct(array $extensions) { $this->extensions = $extensions; diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php index bcf2b5d9a..3dbaff564 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php @@ -12,6 +12,7 @@ namespace Symfony\Component\HttpKernel\DependencyInjection; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\DependencyInjection\Attribute\Target; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; @@ -23,6 +24,8 @@ use Symfony\Component\DependencyInjection\LazyProxy\ProxyHelper; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\TypedReference; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Session\SessionInterface; /** * Creates the service-locators required by ServiceValueResolver. @@ -38,6 +41,10 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface public function __construct(string $resolverServiceId = 'argument_resolver.service', string $controllerTag = 'controller.service_arguments', string $controllerLocator = 'argument_resolver.controller_locator', string $notTaggedControllerResolverServiceId = 'argument_resolver.not_tagged_controller') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->resolverServiceId = $resolverServiceId; $this->controllerTag = $controllerTag; $this->controllerLocator = $controllerLocator; @@ -53,6 +60,13 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface $parameterBag = $container->getParameterBag(); $controllers = []; + $publicAliases = []; + foreach ($container->getAliases() as $id => $alias) { + if ($alias->isPublic() && !$alias->isPrivate()) { + $publicAliases[(string) $alias][] = $id; + } + } + foreach ($container->findTaggedServiceIds($this->controllerTag, true) as $id => $tags) { $def = $container->getDefinition($id); $def->setPublic(true); @@ -136,7 +150,7 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface } elseif ($p->allowsNull() && !$p->isOptional()) { $invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE; } - } elseif (isset($bindings[$bindingName = $type.' $'.$p->name]) || isset($bindings[$bindingName = '$'.$p->name]) || isset($bindings[$bindingName = $type])) { + } elseif (isset($bindings[$bindingName = $type.' $'.$name = Target::parseName($p)]) || isset($bindings[$bindingName = '$'.$name]) || isset($bindings[$bindingName = $type])) { $binding = $bindings[$bindingName]; [$bindingValue, $bindingId, , $bindingType, $bindingFile] = $binding->getValues(); @@ -161,7 +175,7 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface $invalidBehavior = ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE; } - if (Request::class === $type) { + if (Request::class === $type || SessionInterface::class === $type || Response::class === $type) { continue; } @@ -173,15 +187,22 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface $message .= ' Did you forget to add a use statement?'; } - throw new InvalidArgumentException($message); - } + $container->register($erroredId = '.errored.'.$container->hash($message), $type) + ->addError($message); - $target = ltrim($target, '\\'); - $args[$p->name] = $type ? new TypedReference($target, $type, $invalidBehavior, $p->name) : new Reference($target, $invalidBehavior); + $args[$p->name] = new Reference($erroredId, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE); + } else { + $target = ltrim($target, '\\'); + $args[$p->name] = $type ? new TypedReference($target, $type, $invalidBehavior, Target::parseName($p)) : new Reference($target, $invalidBehavior); + } } // register the maps as a per-method service-locators if ($args) { $controllers[$id.'::'.$r->name] = ServiceLocatorTagPass::register($container, $args); + + foreach ($publicAliases[$id] ?? [] as $alias) { + $controllers[$alias.'::'.$r->name] = clone $controllers[$id.'::'.$r->name]; + } } } } diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php index 0efb164b7..f0b801b8d 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php @@ -28,6 +28,10 @@ class RegisterLocaleAwareServicesPass implements CompilerPassInterface public function __construct(string $listenerServiceId = 'locale_aware_listener', string $localeAwareTag = 'kernel.locale_aware') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->listenerServiceId = $listenerServiceId; $this->localeAwareTag = $localeAwareTag; } diff --git a/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php index c09f2bfdf..2d077a0cb 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php @@ -25,6 +25,10 @@ class RemoveEmptyControllerArgumentLocatorsPass implements CompilerPassInterface public function __construct(string $controllerLocator = 'argument_resolver.controller_locator') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->controllerLocator = $controllerLocator; } @@ -43,6 +47,11 @@ class RemoveEmptyControllerArgumentLocatorsPass implements CompilerPassInterface // any methods listed for call-at-instantiation cannot be actions $reason = false; [$id, $action] = explode('::', $controller); + + if ($container->hasAlias($id)) { + continue; + } + $controllerDef = $container->getDefinition($id); foreach ($controllerDef->getMethodCalls() as [$method]) { if (0 === strcasecmp($action, $method)) { @@ -51,7 +60,7 @@ class RemoveEmptyControllerArgumentLocatorsPass implements CompilerPassInterface } } if (!$reason) { - // Deprecated since Symfony 4.1. See Symfony\Component\HttpKernel\Controller\ContainerControllerResolver + // see Symfony\Component\HttpKernel\Controller\ContainerControllerResolver $controllers[$id.':'.$action] = $argumentRef; if ('__invoke' === $action) { diff --git a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php index b5e46106a..2e4cd6927 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php +++ b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php @@ -27,6 +27,10 @@ class ResettableServicePass implements CompilerPassInterface public function __construct(string $tagName = 'kernel.reset') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->tagName = $tagName; } @@ -53,6 +57,10 @@ class ResettableServicePass implements CompilerPassInterface $methods[$id] = []; } + if ('ignore' === ($attributes['on_invalid'] ?? null)) { + $attributes['method'] = '?'.$attributes['method']; + } + $methods[$id][] = $attributes['method']; } } diff --git a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php index d9e0028ce..0063deca3 100644 --- a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php +++ b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php @@ -26,6 +26,10 @@ class ServicesResetter implements ResetInterface private $resettableServices; private $resetMethods; + /** + * @param \Traversable<string, object> $resettableServices + * @param array<string, string|string[]> $resetMethods + */ public function __construct(\Traversable $resettableServices, array $resetMethods) { $this->resettableServices = $resettableServices; @@ -36,6 +40,10 @@ class ServicesResetter implements ResetInterface { foreach ($this->resettableServices as $id => $service) { foreach ((array) $this->resetMethods[$id] as $resetMethod) { + if ('?' === $resetMethod[0] && !method_exists($service, $resetMethod = substr($resetMethod, 1))) { + continue; + } + $service->$resetMethod(); } } diff --git a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php index 5efb80cf8..d075ee90b 100644 --- a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php +++ b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php @@ -11,6 +11,9 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows filtering of controller arguments. * @@ -22,9 +25,37 @@ namespace Symfony\Component\HttpKernel\Event; * controller. * * @author Christophe Coevoet <stof@notk.org> - * - * @final since Symfony 4.4 */ -class ControllerArgumentsEvent extends FilterControllerArgumentsEvent +final class ControllerArgumentsEvent extends KernelEvent { + private $controller; + private $arguments; + + public function __construct(HttpKernelInterface $kernel, callable $controller, array $arguments, Request $request, ?int $requestType) + { + parent::__construct($kernel, $request, $requestType); + + $this->controller = $controller; + $this->arguments = $arguments; + } + + public function getController(): callable + { + return $this->controller; + } + + public function setController(callable $controller) + { + $this->controller = $controller; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function setArguments(array $arguments) + { + $this->arguments = $arguments; + } } diff --git a/vendor/symfony/http-kernel/Event/ControllerEvent.php b/vendor/symfony/http-kernel/Event/ControllerEvent.php index 7b642eaa3..da88800e2 100644 --- a/vendor/symfony/http-kernel/Event/ControllerEvent.php +++ b/vendor/symfony/http-kernel/Event/ControllerEvent.php @@ -11,6 +11,9 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows filtering of a controller callable. * @@ -21,9 +24,25 @@ namespace Symfony\Component\HttpKernel\Event; * Controllers should be callables. * * @author Bernhard Schussek <bschussek@gmail.com> - * - * @final since Symfony 4.4 */ -class ControllerEvent extends FilterControllerEvent +final class ControllerEvent extends KernelEvent { + private $controller; + + public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, ?int $requestType) + { + parent::__construct($kernel, $request, $requestType); + + $this->setController($controller); + } + + public function getController(): callable + { + return $this->controller; + } + + public function setController(callable $controller): void + { + $this->controller = $controller; + } } diff --git a/vendor/symfony/http-kernel/Event/ExceptionEvent.php b/vendor/symfony/http-kernel/Event/ExceptionEvent.php index 313a3615b..a18fbd31f 100644 --- a/vendor/symfony/http-kernel/Event/ExceptionEvent.php +++ b/vendor/symfony/http-kernel/Event/ExceptionEvent.php @@ -11,6 +11,9 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows to create a response for a thrown exception. * @@ -23,9 +26,51 @@ namespace Symfony\Component\HttpKernel\Event; * event. * * @author Bernhard Schussek <bschussek@gmail.com> - * - * @final since Symfony 4.4 */ -class ExceptionEvent extends GetResponseForExceptionEvent +final class ExceptionEvent extends RequestEvent { + private $throwable; + + /** + * @var bool + */ + private $allowCustomResponseCode = false; + + public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e) + { + parent::__construct($kernel, $request, $requestType); + + $this->setThrowable($e); + } + + public function getThrowable(): \Throwable + { + return $this->throwable; + } + + /** + * Replaces the thrown exception. + * + * This exception will be thrown if no response is set in the event. + */ + public function setThrowable(\Throwable $exception): void + { + $this->throwable = $exception; + } + + /** + * Mark the event as allowing a custom response code. + */ + public function allowCustomResponseCode(): void + { + $this->allowCustomResponseCode = true; + } + + /** + * Returns true if the event allows a custom response code. + */ + public function isAllowingCustomResponseCode(): bool + { + return $this->allowCustomResponseCode; + } } diff --git a/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php deleted file mode 100644 index f3c5dc34a..000000000 --- a/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use ControllerArgumentsEvent instead - */ -class FilterControllerArgumentsEvent extends FilterControllerEvent -{ - private $arguments; - - public function __construct(HttpKernelInterface $kernel, callable $controller, array $arguments, Request $request, ?int $requestType) - { - parent::__construct($kernel, $controller, $request, $requestType); - - $this->arguments = $arguments; - } - - /** - * @return array - */ - public function getArguments() - { - return $this->arguments; - } - - public function setArguments(array $arguments) - { - $this->arguments = $arguments; - } -} diff --git a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php b/vendor/symfony/http-kernel/Event/FilterControllerEvent.php deleted file mode 100644 index 74fa681f8..000000000 --- a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use ControllerEvent instead - */ -class FilterControllerEvent extends KernelEvent -{ - private $controller; - - public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, ?int $requestType) - { - parent::__construct($kernel, $request, $requestType); - - $this->setController($controller); - } - - /** - * Returns the current controller. - * - * @return callable - */ - public function getController() - { - return $this->controller; - } - - public function setController(callable $controller) - { - $this->controller = $controller; - } -} diff --git a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php b/vendor/symfony/http-kernel/Event/FilterResponseEvent.php deleted file mode 100644 index eaa2e8256..000000000 --- a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use ResponseEvent instead - */ -class FilterResponseEvent extends KernelEvent -{ - private $response; - - public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, Response $response) - { - parent::__construct($kernel, $request, $requestType); - - $this->setResponse($response); - } - - /** - * Returns the current response object. - * - * @return Response - */ - public function getResponse() - { - return $this->response; - } - - /** - * Sets a new response object. - */ - public function setResponse(Response $response) - { - $this->response = $response; - } -} diff --git a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php index 9374d2db9..306a7ad1c 100644 --- a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php +++ b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php @@ -15,9 +15,7 @@ namespace Symfony\Component\HttpKernel\Event; * Triggered whenever a request is fully processed. * * @author Benjamin Eberlei <kontakt@beberlei.de> - * - * @final since Symfony 4.4 */ -class FinishRequestEvent extends KernelEvent +final class FinishRequestEvent extends KernelEvent { } diff --git a/vendor/symfony/http-kernel/Event/GetResponseEvent.php b/vendor/symfony/http-kernel/Event/GetResponseEvent.php deleted file mode 100644 index fbed7beef..000000000 --- a/vendor/symfony/http-kernel/Event/GetResponseEvent.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Response; - -/** - * @deprecated since Symfony 4.3, use RequestEvent instead - */ -class GetResponseEvent extends KernelEvent -{ - private $response; - - /** - * Returns the response object. - * - * @return Response|null - */ - public function getResponse() - { - return $this->response; - } - - /** - * Sets a response and stops event propagation. - */ - public function setResponse(Response $response) - { - $this->response = $response; - - $this->stopPropagation(); - } - - /** - * Returns whether a response was set. - * - * @return bool Whether a response was set - */ - public function hasResponse() - { - return null !== $this->response; - } -} diff --git a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php deleted file mode 100644 index 4e70dbc63..000000000 --- a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use ViewEvent instead - */ -class GetResponseForControllerResultEvent extends RequestEvent -{ - /** - * The return value of the controller. - * - * @var mixed - */ - private $controllerResult; - - public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, $controllerResult) - { - parent::__construct($kernel, $request, $requestType); - - $this->controllerResult = $controllerResult; - } - - /** - * Returns the return value of the controller. - * - * @return mixed The controller return value - */ - public function getControllerResult() - { - return $this->controllerResult; - } - - /** - * Assigns the return value of the controller. - * - * @param mixed $controllerResult The controller return value - */ - public function setControllerResult($controllerResult) - { - $this->controllerResult = $controllerResult; - } -} diff --git a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php deleted file mode 100644 index bfec654ed..000000000 --- a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\Debug\Exception\FatalThrowableError; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use ExceptionEvent instead - */ -class GetResponseForExceptionEvent extends RequestEvent -{ - private $throwable; - private $exception; - private $allowCustomResponseCode = false; - - public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e) - { - parent::__construct($kernel, $request, $requestType); - - $this->setThrowable($e); - } - - public function getThrowable(): \Throwable - { - return $this->throwable; - } - - /** - * Replaces the thrown exception. - * - * This exception will be thrown if no response is set in the event. - */ - public function setThrowable(\Throwable $exception): void - { - $this->exception = null; - $this->throwable = $exception; - } - - /** - * @deprecated since Symfony 4.4, use getThrowable instead - * - * @return \Exception The thrown exception - */ - public function getException() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "getThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED); - - return $this->exception ?? $this->exception = $this->throwable instanceof \Exception ? $this->throwable : new FatalThrowableError($this->throwable); - } - - /** - * @deprecated since Symfony 4.4, use setThrowable instead - * - * @param \Exception $exception The thrown exception - */ - public function setException(\Exception $exception) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "setThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED); - - $this->throwable = $this->exception = $exception; - } - - /** - * Mark the event as allowing a custom response code. - */ - public function allowCustomResponseCode() - { - $this->allowCustomResponseCode = true; - } - - /** - * Returns true if the event allows a custom response code. - * - * @return bool - */ - public function isAllowingCustomResponseCode() - { - return $this->allowCustomResponseCode; - } -} diff --git a/vendor/symfony/http-kernel/Event/KernelEvent.php b/vendor/symfony/http-kernel/Event/KernelEvent.php index f6dff06ac..d9d425e11 100644 --- a/vendor/symfony/http-kernel/Event/KernelEvent.php +++ b/vendor/symfony/http-kernel/Event/KernelEvent.php @@ -11,9 +11,9 @@ namespace Symfony\Component\HttpKernel\Event; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Contracts\EventDispatcher\Event; /** * Base class for events thrown in the HttpKernel component. @@ -28,7 +28,7 @@ class KernelEvent extends Event /** * @param int $requestType The request type the kernel is currently processing; one of - * HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST + * HttpKernelInterface::MAIN_REQUEST or HttpKernelInterface::SUB_REQUEST */ public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType) { @@ -60,7 +60,7 @@ class KernelEvent extends Event /** * Returns the request type the kernel is currently processing. * - * @return int One of HttpKernelInterface::MASTER_REQUEST and + * @return int One of HttpKernelInterface::MAIN_REQUEST and * HttpKernelInterface::SUB_REQUEST */ public function getRequestType() @@ -68,13 +68,25 @@ class KernelEvent extends Event return $this->requestType; } + /** + * Checks if this is the main request. + */ + public function isMainRequest(): bool + { + return HttpKernelInterface::MAIN_REQUEST === $this->requestType; + } + /** * Checks if this is a master request. * - * @return bool True if the request is a master request + * @return bool + * + * @deprecated since symfony/http-kernel 5.3, use isMainRequest() instead */ public function isMasterRequest() { - return HttpKernelInterface::MASTER_REQUEST === $this->requestType; + trigger_deprecation('symfony/http-kernel', '5.3', '"%s()" is deprecated, use "isMainRequest()" instead.', __METHOD__); + + return $this->isMainRequest(); } } diff --git a/vendor/symfony/http-kernel/Event/PostResponseEvent.php b/vendor/symfony/http-kernel/Event/PostResponseEvent.php deleted file mode 100644 index b86bf0774..000000000 --- a/vendor/symfony/http-kernel/Event/PostResponseEvent.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Event; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * @deprecated since Symfony 4.3, use TerminateEvent instead - */ -class PostResponseEvent extends KernelEvent -{ - private $response; - - public function __construct(HttpKernelInterface $kernel, Request $request, Response $response) - { - parent::__construct($kernel, $request, HttpKernelInterface::MASTER_REQUEST); - - $this->response = $response; - } - - /** - * Returns the response for which this event was thrown. - * - * @return Response - */ - public function getResponse() - { - return $this->response; - } -} diff --git a/vendor/symfony/http-kernel/Event/RequestEvent.php b/vendor/symfony/http-kernel/Event/RequestEvent.php index c1beb929f..30ffcdcbd 100644 --- a/vendor/symfony/http-kernel/Event/RequestEvent.php +++ b/vendor/symfony/http-kernel/Event/RequestEvent.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Response; + /** * Allows to create a response for a request. * @@ -20,6 +22,37 @@ namespace Symfony\Component\HttpKernel\Event; * * @author Bernhard Schussek <bschussek@gmail.com> */ -class RequestEvent extends GetResponseEvent +class RequestEvent extends KernelEvent { + private $response; + + /** + * Returns the response object. + * + * @return Response|null + */ + public function getResponse() + { + return $this->response; + } + + /** + * Sets a response and stops event propagation. + */ + public function setResponse(Response $response) + { + $this->response = $response; + + $this->stopPropagation(); + } + + /** + * Returns whether a response was set. + * + * @return bool + */ + public function hasResponse() + { + return null !== $this->response; + } } diff --git a/vendor/symfony/http-kernel/Event/ResponseEvent.php b/vendor/symfony/http-kernel/Event/ResponseEvent.php index eae8c39cc..1e56ebea2 100644 --- a/vendor/symfony/http-kernel/Event/ResponseEvent.php +++ b/vendor/symfony/http-kernel/Event/ResponseEvent.php @@ -11,6 +11,10 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows to filter a Response object. * @@ -19,9 +23,25 @@ namespace Symfony\Component\HttpKernel\Event; * browser. * * @author Bernhard Schussek <bschussek@gmail.com> - * - * @final since Symfony 4.4 */ -class ResponseEvent extends FilterResponseEvent +final class ResponseEvent extends KernelEvent { + private $response; + + public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, Response $response) + { + parent::__construct($kernel, $request, $requestType); + + $this->setResponse($response); + } + + public function getResponse(): Response + { + return $this->response; + } + + public function setResponse(Response $response): void + { + $this->response = $response; + } } diff --git a/vendor/symfony/http-kernel/Event/TerminateEvent.php b/vendor/symfony/http-kernel/Event/TerminateEvent.php index 6a74445d6..014ca535f 100644 --- a/vendor/symfony/http-kernel/Event/TerminateEvent.php +++ b/vendor/symfony/http-kernel/Event/TerminateEvent.php @@ -11,16 +11,31 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows to execute logic after a response was sent. * - * Since it's only triggered on master requests, the `getRequestType()` method - * will always return the value of `HttpKernelInterface::MASTER_REQUEST`. + * Since it's only triggered on main requests, the `getRequestType()` method + * will always return the value of `HttpKernelInterface::MAIN_REQUEST`. * * @author Jordi Boggiano <j.boggiano@seld.be> - * - * @final since Symfony 4.4 */ -class TerminateEvent extends PostResponseEvent +final class TerminateEvent extends KernelEvent { + private $response; + + public function __construct(HttpKernelInterface $kernel, Request $request, Response $response) + { + parent::__construct($kernel, $request, HttpKernelInterface::MAIN_REQUEST); + + $this->response = $response; + } + + public function getResponse(): Response + { + return $this->response; + } } diff --git a/vendor/symfony/http-kernel/Event/ViewEvent.php b/vendor/symfony/http-kernel/Event/ViewEvent.php index da50da82a..88211da41 100644 --- a/vendor/symfony/http-kernel/Event/ViewEvent.php +++ b/vendor/symfony/http-kernel/Event/ViewEvent.php @@ -11,6 +11,9 @@ namespace Symfony\Component\HttpKernel\Event; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\HttpKernelInterface; + /** * Allows to create a response for the return value of a controller. * @@ -19,9 +22,40 @@ namespace Symfony\Component\HttpKernel\Event; * response is set. * * @author Bernhard Schussek <bschussek@gmail.com> - * - * @final since Symfony 4.4 */ -class ViewEvent extends GetResponseForControllerResultEvent +final class ViewEvent extends RequestEvent { + /** + * The return value of the controller. + * + * @var mixed + */ + private $controllerResult; + + public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, $controllerResult) + { + parent::__construct($kernel, $request, $requestType); + + $this->controllerResult = $controllerResult; + } + + /** + * Returns the return value of the controller. + * + * @return mixed + */ + public function getControllerResult() + { + return $this->controllerResult; + } + + /** + * Assigns the return value of the controller. + * + * @param mixed $controllerResult The controller return value + */ + public function setControllerResult($controllerResult): void + { + $this->controllerResult = $controllerResult; + } } diff --git a/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php index 5f657bfbd..27749b24b 100644 --- a/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php +++ b/vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php @@ -13,12 +13,16 @@ namespace Symfony\Component\HttpKernel\EventListener; use Psr\Container\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\SessionInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpFoundation\Session\SessionUtils; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Exception\UnexpectedSessionUsageException; use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Contracts\Service\ResetInterface; /** * Sets the session onto the request on the "kernel.request" event and saves @@ -33,39 +37,65 @@ use Symfony\Component\HttpKernel\KernelEvents; * @author Johannes M. Schmitt <schmittjoh@gmail.com> * @author Tobias Schultze <http://tobion.de> * - * @internal since Symfony 4.3 + * @internal */ -abstract class AbstractSessionListener implements EventSubscriberInterface +abstract class AbstractSessionListener implements EventSubscriberInterface, ResetInterface { public const NO_AUTO_CACHE_CONTROL_HEADER = 'Symfony-Session-NoAutoCacheControl'; protected $container; private $sessionUsageStack = []; + private $debug; - public function __construct(ContainerInterface $container = null) + /** + * @var array<string, mixed> + */ + private $sessionOptions; + + public function __construct(ContainerInterface $container = null, bool $debug = false, array $sessionOptions = []) { $this->container = $container; + $this->debug = $debug; + $this->sessionOptions = $sessionOptions; } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } $request = $event->getRequest(); if (!$request->hasSession()) { + // This variable prevents calling `$this->getSession()` twice in case the Request (and the below factory) is cloned $sess = null; - $request->setSessionFactory(function () use (&$sess) { return $sess ?? $sess = $this->getSession(); }); + $request->setSessionFactory(function () use (&$sess, $request) { + if (!$sess) { + $sess = $this->getSession(); + + /* + * For supporting sessions in php runtime with runners like roadrunner or swoole, the session + * cookie needs to be read from the cookie bag and set on the session storage. + * + * Do not set it when a native php session is active. + */ + if ($sess && !$sess->isStarted() && \PHP_SESSION_ACTIVE !== session_status()) { + $sessionId = $sess->getId() ?: $request->cookies->get($sess->getName(), ''); + $sess->setId($sessionId); + } + } + + return $sess; + }); } $session = $this->container && $this->container->has('initialized_session') ? $this->container->get('initialized_session') : null; $this->sessionUsageStack[] = $session instanceof Session ? $session->getUsageIndex() : 0; } - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest() || (!$this->container->has('initialized_session') && !$event->getRequest()->hasSession())) { return; } @@ -78,16 +108,6 @@ abstract class AbstractSessionListener implements EventSubscriberInterface return; } - if ($session instanceof Session ? $session->getUsageIndex() !== end($this->sessionUsageStack) : $session->isStarted()) { - if ($autoCacheControl) { - $response - ->setExpires(new \DateTime()) - ->setPrivate() - ->setMaxAge(0) - ->headers->addCacheControlDirective('must-revalidate'); - } - } - if ($session->isStarted()) { /* * Saves the session, in case it is still open, before sending the response/headers. @@ -115,20 +135,135 @@ abstract class AbstractSessionListener implements EventSubscriberInterface * it is saved will just restart it. */ $session->save(); + + /* + * For supporting sessions in php runtime with runners like roadrunner or swoole the session + * cookie need to be written on the response object and should not be written by PHP itself. + */ + $sessionName = $session->getName(); + $sessionId = $session->getId(); + $sessionOptions = $this->getSessionOptions($this->sessionOptions); + $sessionCookiePath = $sessionOptions['cookie_path'] ?? '/'; + $sessionCookieDomain = $sessionOptions['cookie_domain'] ?? null; + $sessionCookieSecure = $sessionOptions['cookie_secure'] ?? false; + $sessionCookieHttpOnly = $sessionOptions['cookie_httponly'] ?? true; + $sessionCookieSameSite = $sessionOptions['cookie_samesite'] ?? Cookie::SAMESITE_LAX; + $sessionUseCookies = $sessionOptions['use_cookies'] ?? true; + + SessionUtils::popSessionCookie($sessionName, $sessionId); + + if ($sessionUseCookies) { + $request = $event->getRequest(); + $requestSessionCookieId = $request->cookies->get($sessionName); + + $isSessionEmpty = $session->isEmpty() && empty($_SESSION); // checking $_SESSION to keep compatibility with native sessions + if ($requestSessionCookieId && $isSessionEmpty) { + // PHP internally sets the session cookie value to "deleted" when setcookie() is called with empty string $value argument + // which happens in \Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler::destroy + // when the session gets invalidated (for example on logout) so we must handle this case here too + // otherwise we would send two Set-Cookie headers back with the response + SessionUtils::popSessionCookie($sessionName, 'deleted'); + $response->headers->clearCookie( + $sessionName, + $sessionCookiePath, + $sessionCookieDomain, + $sessionCookieSecure, + $sessionCookieHttpOnly, + $sessionCookieSameSite + ); + } elseif ($sessionId !== $requestSessionCookieId && !$isSessionEmpty) { + $expire = 0; + $lifetime = $sessionOptions['cookie_lifetime'] ?? null; + if ($lifetime) { + $expire = time() + $lifetime; + } + + $response->headers->setCookie( + Cookie::create( + $sessionName, + $sessionId, + $expire, + $sessionCookiePath, + $sessionCookieDomain, + $sessionCookieSecure, + $sessionCookieHttpOnly, + false, + $sessionCookieSameSite + ) + ); + } + } + } + + if ($session instanceof Session ? $session->getUsageIndex() === end($this->sessionUsageStack) : !$session->isStarted()) { + return; + } + + if ($autoCacheControl) { + $maxAge = $response->headers->hasCacheControlDirective('public') ? 0 : (int) $response->getMaxAge(); + $response + ->setExpires(new \DateTimeImmutable('+'.$maxAge.' seconds')) + ->setPrivate() + ->setMaxAge($maxAge) + ->headers->addCacheControlDirective('must-revalidate'); + } + + if (!$event->getRequest()->attributes->get('_stateless', false)) { + return; + } + + if ($this->debug) { + throw new UnexpectedSessionUsageException('Session was used while the request was declared stateless.'); + } + + if ($this->container->has('logger')) { + $this->container->get('logger')->warning('Session was used while the request was declared stateless.'); } } - /** - * @internal - */ public function onFinishRequest(FinishRequestEvent $event) { - if ($event->isMasterRequest()) { + if ($event->isMainRequest()) { array_pop($this->sessionUsageStack); } } - public static function getSubscribedEvents() + public function onSessionUsage(): void + { + if (!$this->debug) { + return; + } + + if ($this->container && $this->container->has('session_collector')) { + $this->container->get('session_collector')(); + } + + if (!$requestStack = $this->container && $this->container->has('request_stack') ? $this->container->get('request_stack') : null) { + return; + } + + $stateless = false; + $clonedRequestStack = clone $requestStack; + while (null !== ($request = $clonedRequestStack->pop()) && !$stateless) { + $stateless = $request->attributes->get('_stateless'); + } + + if (!$stateless) { + return; + } + + if (!$session = $this->container && $this->container->has('initialized_session') ? $this->container->get('initialized_session') : $requestStack->getCurrentRequest()->getSession()) { + return; + } + + if ($session->isStarted()) { + $session->save(); + } + + throw new UnexpectedSessionUsageException('Session was used while the request was declared stateless.'); + } + + public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => ['onKernelRequest', 128], @@ -138,10 +273,43 @@ abstract class AbstractSessionListener implements EventSubscriberInterface ]; } + public function reset(): void + { + if (\PHP_SESSION_ACTIVE === session_status()) { + session_abort(); + } + + session_unset(); + $_SESSION = []; + + if (!headers_sent()) { // session id can only be reset when no headers were so we check for headers_sent first + session_id(''); + } + } + /** * Gets the session object. * - * @return SessionInterface|null A SessionInterface instance or null if no session is available + * @return SessionInterface|null */ abstract protected function getSession(); + + private function getSessionOptions(array $sessionOptions): array + { + $mergedSessionOptions = []; + + foreach (session_get_cookie_params() as $key => $value) { + $mergedSessionOptions['cookie_'.$key] = $value; + } + + foreach ($sessionOptions as $key => $value) { + // do the same logic as in the NativeSessionStorage + if ('cookie_secure' === $key && 'auto' === $value) { + continue; + } + $mergedSessionOptions[$key] = $value; + } + + return $mergedSessionOptions; + } } diff --git a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php index 25be3b390..838c2944b 100644 --- a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php +++ b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php @@ -15,10 +15,12 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\SessionInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; +trigger_deprecation('symfony/http-kernel', '5.4', '"%s" is deprecated use "%s" instead.', AbstractTestSessionListener::class, AbstractSessionListener::class); + /** * TestSessionListener. * @@ -27,7 +29,9 @@ use Symfony\Component\HttpKernel\KernelEvents; * @author Bulat Shakirzyanov <mallluhuct@gmail.com> * @author Fabien Potencier <fabien@symfony.com> * - * @internal since Symfony 4.3 + * @internal + * + * @deprecated since Symfony 5.4, use AbstractSessionListener instead */ abstract class AbstractTestSessionListener implements EventSubscriberInterface { @@ -39,14 +43,16 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface $this->sessionOptions = $sessionOptions; } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } // bootstrap the session - if (!$session = $this->getSession()) { + if ($event->getRequest()->hasSession()) { + $session = $event->getRequest()->getSession(); + } elseif (!$session = $this->getSession()) { return; } @@ -59,12 +65,12 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface } /** - * Checks if session was initialized and saves if current request is master + * Checks if session was initialized and saves if current request is the main request * Runs on 'kernel.response' in test environment. */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -97,10 +103,10 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface } } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ - KernelEvents::REQUEST => ['onKernelRequest', 192], + KernelEvents::REQUEST => ['onKernelRequest', 127], // AFTER SessionListener KernelEvents::RESPONSE => ['onKernelResponse', -128], ]; } @@ -108,7 +114,7 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface /** * Gets the session object. * - * @return SessionInterface|null A SessionInterface instance or null if no session is available + * @return SessionInterface|null */ abstract protected function getSession(); } diff --git a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php b/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php index 47c7069c9..9e896adb3 100644 --- a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php +++ b/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php @@ -12,7 +12,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -20,7 +20,7 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Gildas Quemener <gildas.quemener@gmail.com> * - * @final since Symfony 4.3 + * @final */ class AddRequestFormatsListener implements EventSubscriberInterface { @@ -34,7 +34,7 @@ class AddRequestFormatsListener implements EventSubscriberInterface /** * Adds request formats. */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); foreach ($this->formats as $format => $mimeTypes) { @@ -45,7 +45,7 @@ class AddRequestFormatsListener implements EventSubscriberInterface /** * {@inheritdoc} */ - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [KernelEvents::REQUEST => ['onKernelRequest', 100]]; } diff --git a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php index 6563487f3..bd124f94d 100644 --- a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php +++ b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php @@ -15,12 +15,8 @@ use Psr\Log\LoggerInterface; use Symfony\Component\Console\ConsoleEvents; use Symfony\Component\Console\Event\ConsoleEvent; use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Debug\ErrorHandler as LegacyErrorHandler; -use Symfony\Component\Debug\Exception\FatalThrowableError; use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Debug\FileLinkFormatter; use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; @@ -29,31 +25,38 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final + * + * @internal since Symfony 5.3 */ class DebugHandlersListener implements EventSubscriberInterface { private $earlyHandler; private $exceptionHandler; private $logger; + private $deprecationLogger; private $levels; private $throwAt; private $scream; - private $fileLinkFormat; private $scope; private $firstCall = true; private $hasTerminatedWithException; /** - * @param callable|null $exceptionHandler A handler that must support \Throwable instances that will be called on Exception - * @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants - * @param int|null $throwAt Thrown errors in a bit field of E_* constants, or null to keep the current value - * @param bool $scream Enables/disables screaming mode, where even silenced errors are logged - * @param string|FileLinkFormatter|null $fileLinkFormat The format for links to source files - * @param bool $scope Enables/disables scoping mode + * @param callable|null $exceptionHandler A handler that must support \Throwable instances that will be called on Exception + * @param array|int|null $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants + * @param int|null $throwAt Thrown errors in a bit field of E_* constants, or null to keep the current value + * @param bool $scream Enables/disables screaming mode, where even silenced errors are logged + * @param bool $scope Enables/disables scoping mode */ - public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = \E_ALL, ?int $throwAt = \E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true) + public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = \E_ALL, ?int $throwAt = \E_ALL, bool $scream = true, $scope = true, $deprecationLogger = null, $fileLinkFormat = null) { + if (!\is_bool($scope)) { + trigger_deprecation('symfony/http-kernel', '5.4', 'Passing a $fileLinkFormat is deprecated.'); + $scope = $deprecationLogger; + $deprecationLogger = $fileLinkFormat; + } + $handler = set_exception_handler('is_int'); $this->earlyHandler = \is_array($handler) ? $handler[0] : null; restore_exception_handler(); @@ -63,19 +66,19 @@ class DebugHandlersListener implements EventSubscriberInterface $this->levels = $levels ?? \E_ALL; $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? \E_ALL : null)); $this->scream = $scream; - $this->fileLinkFormat = $fileLinkFormat; $this->scope = $scope; + $this->deprecationLogger = $deprecationLogger; } /** * Configures the error handler. */ - public function configure(Event $event = null) + public function configure(object $event = null) { if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) { return; } - if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMasterRequest()) { + if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMainRequest()) { return; } $this->firstCall = $this->hasTerminatedWithException = false; @@ -84,35 +87,34 @@ class DebugHandlersListener implements EventSubscriberInterface $handler = \is_array($handler) ? $handler[0] : null; restore_exception_handler(); - if (!$handler instanceof ErrorHandler && !$handler instanceof LegacyErrorHandler) { + if (!$handler instanceof ErrorHandler) { $handler = $this->earlyHandler; } - if ($this->logger || null !== $this->throwAt) { - if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) { - if ($this->logger) { - $handler->setDefaultLogger($this->logger, $this->levels); - if (\is_array($this->levels)) { - $levels = 0; - foreach ($this->levels as $type => $log) { - $levels |= $type; - } - } else { - $levels = $this->levels; + if ($handler instanceof ErrorHandler) { + if ($this->logger || $this->deprecationLogger) { + $this->setDefaultLoggers($handler); + if (\is_array($this->levels)) { + $levels = 0; + foreach ($this->levels as $type => $log) { + $levels |= $type; } - if ($this->scream) { - $handler->screamAt($levels); - } - if ($this->scope) { - $handler->scopeAt($levels & ~\E_USER_DEPRECATED & ~\E_DEPRECATED); - } else { - $handler->scopeAt(0, true); - } - $this->logger = $this->levels = null; + } else { + $levels = $this->levels; } - if (null !== $this->throwAt) { - $handler->throwAt($this->throwAt, true); + + if ($this->scream) { + $handler->screamAt($levels); } + if ($this->scope) { + $handler->scopeAt($levels & ~\E_USER_DEPRECATED & ~\E_DEPRECATED); + } else { + $handler->scopeAt(0, true); + } + $this->logger = $this->deprecationLogger = $this->levels = null; + } + if (null !== $this->throwAt) { + $handler->throwAt($this->throwAt, true); } } if (!$this->exceptionHandler) { @@ -135,27 +137,47 @@ class DebugHandlersListener implements EventSubscriberInterface $output = $output->getErrorOutput(); } $this->exceptionHandler = static function (\Throwable $e) use ($app, $output) { - if (method_exists($app, 'renderThrowable')) { - $app->renderThrowable($e, $output); - } else { - if (!$e instanceof \Exception) { - $e = new FatalThrowableError($e); - } - - $app->renderException($e, $output); - } + $app->renderThrowable($e, $output); }; } } if ($this->exceptionHandler) { - if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) { + if ($handler instanceof ErrorHandler) { $handler->setExceptionHandler($this->exceptionHandler); } $this->exceptionHandler = null; } } - public static function getSubscribedEvents() + private function setDefaultLoggers(ErrorHandler $handler): void + { + if (\is_array($this->levels)) { + $levelsDeprecatedOnly = []; + $levelsWithoutDeprecated = []; + foreach ($this->levels as $type => $log) { + if (\E_DEPRECATED == $type || \E_USER_DEPRECATED == $type) { + $levelsDeprecatedOnly[$type] = $log; + } else { + $levelsWithoutDeprecated[$type] = $log; + } + } + } else { + $levelsDeprecatedOnly = $this->levels & (\E_DEPRECATED | \E_USER_DEPRECATED); + $levelsWithoutDeprecated = $this->levels & ~\E_DEPRECATED & ~\E_USER_DEPRECATED; + } + + $defaultLoggerLevels = $this->levels; + if ($this->deprecationLogger && $levelsDeprecatedOnly) { + $handler->setDefaultLogger($this->deprecationLogger, $levelsDeprecatedOnly); + $defaultLoggerLevels = $levelsWithoutDeprecated; + } + + if ($this->logger && $defaultLoggerLevels) { + $handler->setDefaultLogger($this->logger, $defaultLoggerLevels); + } + } + + public static function getSubscribedEvents(): array { $events = [KernelEvents::REQUEST => ['configure', 2048]]; diff --git a/vendor/symfony/http-kernel/EventListener/ErrorListener.php b/vendor/symfony/http-kernel/EventListener/ErrorListener.php index 1ca6c9b45..b6fd0a357 100644 --- a/vendor/symfony/http-kernel/EventListener/ErrorListener.php +++ b/vendor/symfony/http-kernel/EventListener/ErrorListener.php @@ -14,11 +14,12 @@ namespace Symfony\Component\HttpKernel\EventListener; use Psr\Log\LoggerInterface; use Symfony\Component\Debug\Exception\FlattenException as LegacyFlattenException; use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; use Symfony\Component\HttpKernel\Event\ExceptionEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\KernelEvents; @@ -32,29 +33,59 @@ class ErrorListener implements EventSubscriberInterface protected $controller; protected $logger; protected $debug; + /** + * @var array<class-string, array{log_level: string|null, status_code: int<100,599>|null}> + */ + protected $exceptionsMapping; - public function __construct($controller, LoggerInterface $logger = null, $debug = false) + /** + * @param array<class-string, array{log_level: string|null, status_code: int<100,599>|null}> $exceptionsMapping + */ + public function __construct($controller, LoggerInterface $logger = null, bool $debug = false, array $exceptionsMapping = []) { $this->controller = $controller; $this->logger = $logger; $this->debug = $debug; + $this->exceptionsMapping = $exceptionsMapping; } public function logKernelException(ExceptionEvent $event) { - $e = FlattenException::createFromThrowable($event->getThrowable()); + $throwable = $event->getThrowable(); + $logLevel = null; - $this->logException($event->getThrowable(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine())); + foreach ($this->exceptionsMapping as $class => $config) { + if ($throwable instanceof $class && $config['log_level']) { + $logLevel = $config['log_level']; + break; + } + } + + foreach ($this->exceptionsMapping as $class => $config) { + if (!$throwable instanceof $class || !$config['status_code']) { + continue; + } + if (!$throwable instanceof HttpExceptionInterface || $throwable->getStatusCode() !== $config['status_code']) { + $headers = $throwable instanceof HttpExceptionInterface ? $throwable->getHeaders() : []; + $throwable = new HttpException($config['status_code'], $throwable->getMessage(), $throwable, $headers); + $event->setThrowable($throwable); + } + break; + } + + $e = FlattenException::createFromThrowable($throwable); + + $this->logException($throwable, sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()), $logLevel); } - public function onKernelException(ExceptionEvent $event, string $eventName = null, EventDispatcherInterface $eventDispatcher = null) + public function onKernelException(ExceptionEvent $event) { if (null === $this->controller) { return; } - $exception = $event->getThrowable(); - $request = $this->duplicateRequest($exception, $event->getRequest()); + $throwable = $event->getThrowable(); + $request = $this->duplicateRequest($throwable, $event->getRequest()); try { $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); @@ -65,26 +96,29 @@ class ErrorListener implements EventSubscriberInterface $prev = $e; do { - if ($exception === $wrapper = $prev) { + if ($throwable === $wrapper = $prev) { throw $e; } } while ($prev = $wrapper->getPrevious()); $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous'); $prev->setAccessible(true); - $prev->setValue($wrapper, $exception); + $prev->setValue($wrapper, $throwable); throw $e; } $event->setResponse($response); - if ($this->debug && $eventDispatcher instanceof EventDispatcherInterface) { - $cspRemovalListener = function ($event) use (&$cspRemovalListener, $eventDispatcher) { - $event->getResponse()->headers->remove('Content-Security-Policy'); - $eventDispatcher->removeListener(KernelEvents::RESPONSE, $cspRemovalListener); - }; - $eventDispatcher->addListener(KernelEvents::RESPONSE, $cspRemovalListener, -128); + if ($this->debug) { + $event->getRequest()->attributes->set('_remove_csp_headers', true); + } + } + + public function removeCspHeader(ResponseEvent $event): void + { + if ($this->debug && $event->getRequest()->attributes->get('_remove_csp_headers', false)) { + $event->getResponse()->headers->remove('Content-Security-Policy'); } } @@ -114,16 +148,19 @@ class ErrorListener implements EventSubscriberInterface ['logKernelException', 0], ['onKernelException', -128], ], + KernelEvents::RESPONSE => ['removeCspHeader', -128], ]; } /** * Logs an exception. */ - protected function logException(\Throwable $exception, string $message): void + protected function logException(\Throwable $exception, string $message, string $logLevel = null): void { if (null !== $this->logger) { - if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) { + if (null !== $logLevel) { + $this->logger->log($logLevel, $message, ['exception' => $exception]); + } elseif (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) { $this->logger->critical($message, ['exception' => $exception]); } else { $this->logger->error($message, ['exception' => $exception]); diff --git a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php deleted file mode 100644 index ef5a71a35..000000000 --- a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Psr\Log\LoggerInterface; -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "ErrorListener" instead.', ExceptionListener::class), \E_USER_DEPRECATED); - -/** - * @deprecated since Symfony 4.4, use ErrorListener instead - */ -class ExceptionListener implements EventSubscriberInterface -{ - protected $controller; - protected $logger; - protected $debug; - - public function __construct($controller, LoggerInterface $logger = null, $debug = false) - { - $this->controller = $controller; - $this->logger = $logger; - $this->debug = $debug; - } - - public function logKernelException(GetResponseForExceptionEvent $event) - { - $e = FlattenException::createFromThrowable($event->getException()); - - $this->logException($event->getException(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine())); - } - - public function onKernelException(GetResponseForExceptionEvent $event) - { - if (null === $this->controller) { - return; - } - - $exception = $event->getException(); - $request = $this->duplicateRequest($exception, $event->getRequest()); - $eventDispatcher = \func_num_args() > 2 ? func_get_arg(2) : null; - - try { - $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); - } catch (\Exception $e) { - $f = FlattenException::createFromThrowable($e); - - $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), $e->getFile(), $e->getLine())); - - $prev = $e; - do { - if ($exception === $wrapper = $prev) { - throw $e; - } - } while ($prev = $wrapper->getPrevious()); - - $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous'); - $prev->setAccessible(true); - $prev->setValue($wrapper, $exception); - - throw $e; - } - - $event->setResponse($response); - - if ($this->debug && $eventDispatcher instanceof EventDispatcherInterface) { - $cspRemovalListener = function ($event) use (&$cspRemovalListener, $eventDispatcher) { - $event->getResponse()->headers->remove('Content-Security-Policy'); - $eventDispatcher->removeListener(KernelEvents::RESPONSE, $cspRemovalListener); - }; - $eventDispatcher->addListener(KernelEvents::RESPONSE, $cspRemovalListener, -128); - } - } - - public static function getSubscribedEvents() - { - return [ - KernelEvents::EXCEPTION => [ - ['logKernelException', 0], - ['onKernelException', -128], - ], - ]; - } - - /** - * Logs an exception. - * - * @param \Exception $exception The \Exception instance - * @param string $message The error message to log - */ - protected function logException(\Exception $exception, $message) - { - if (null !== $this->logger) { - if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) { - $this->logger->critical($message, ['exception' => $exception]); - } else { - $this->logger->error($message, ['exception' => $exception]); - } - } - } - - /** - * Clones the request for the exception. - * - * @return Request The cloned request - */ - protected function duplicateRequest(\Exception $exception, Request $request) - { - $attributes = [ - '_controller' => $this->controller, - 'exception' => FlattenException::createFromThrowable($exception), - 'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null, - ]; - $request = $request->duplicate(null, null, $attributes); - $request->setMethod('GET'); - - return $request; - } -} diff --git a/vendor/symfony/http-kernel/EventListener/FragmentListener.php b/vendor/symfony/http-kernel/EventListener/FragmentListener.php index 5ae61daaa..c01d9ad49 100644 --- a/vendor/symfony/http-kernel/EventListener/FragmentListener.php +++ b/vendor/symfony/http-kernel/EventListener/FragmentListener.php @@ -13,7 +13,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\UriSigner; @@ -29,7 +29,7 @@ use Symfony\Component\HttpKernel\UriSigner; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class FragmentListener implements EventSubscriberInterface { @@ -50,7 +50,7 @@ class FragmentListener implements EventSubscriberInterface * * @throws AccessDeniedHttpException if the request does not come from a trusted IP */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); @@ -65,7 +65,7 @@ class FragmentListener implements EventSubscriberInterface return; } - if ($event->isMasterRequest()) { + if ($event->isMainRequest()) { $this->validateRequest($request); } @@ -83,15 +83,14 @@ class FragmentListener implements EventSubscriberInterface } // is the Request signed? - // we cannot use $request->getUri() here as we want to work with the original URI (no query string reordering) - if ($this->signer->check($request->getSchemeAndHttpHost().$request->getBaseUrl().$request->getPathInfo().(null !== ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''))) { + if ($this->signer->checkRequest($request)) { return; } throw new AccessDeniedHttpException(); } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => [['onKernelRequest', 48]], diff --git a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php index 62d03026a..a126f06ec 100644 --- a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php +++ b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php @@ -29,7 +29,7 @@ class LocaleAwareListener implements EventSubscriberInterface private $requestStack; /** - * @param LocaleAwareInterface[] $localeAwareServices + * @param iterable<mixed, LocaleAwareInterface> $localeAwareServices */ public function __construct(iterable $localeAwareServices, RequestStack $requestStack) { diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php index b09a6c76a..f19e13649 100644 --- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php +++ b/vendor/symfony/http-kernel/EventListener/LocaleListener.php @@ -15,8 +15,8 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\KernelEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Routing\RequestContextAwareInterface; @@ -25,19 +25,23 @@ use Symfony\Component\Routing\RequestContextAwareInterface; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class LocaleListener implements EventSubscriberInterface { private $router; private $defaultLocale; private $requestStack; + private $useAcceptLanguageHeader; + private $enabledLocales; - public function __construct(RequestStack $requestStack, string $defaultLocale = 'en', RequestContextAwareInterface $router = null) + public function __construct(RequestStack $requestStack, string $defaultLocale = 'en', RequestContextAwareInterface $router = null, bool $useAcceptLanguageHeader = false, array $enabledLocales = []) { $this->defaultLocale = $defaultLocale; $this->requestStack = $requestStack; $this->router = $router; + $this->useAcceptLanguageHeader = $useAcceptLanguageHeader; + $this->enabledLocales = $enabledLocales; } public function setDefaultLocale(KernelEvent $event) @@ -45,7 +49,7 @@ class LocaleListener implements EventSubscriberInterface $event->getRequest()->setDefaultLocale($this->defaultLocale); } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); @@ -64,6 +68,9 @@ class LocaleListener implements EventSubscriberInterface { if ($locale = $request->attributes->get('_locale')) { $request->setLocale($locale); + } elseif ($this->useAcceptLanguageHeader && $this->enabledLocales && ($preferredLanguage = $request->getPreferredLanguage($this->enabledLocales))) { + $request->setLocale($preferredLanguage); + $request->attributes->set('_vary_by_language', true); } } @@ -74,7 +81,7 @@ class LocaleListener implements EventSubscriberInterface } } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => [ diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php index 32e809229..adbafe62e 100644 --- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php +++ b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php @@ -16,10 +16,11 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestMatcherInterface; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Session; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; -use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Profiler\Profile; use Symfony\Component\HttpKernel\Profiler\Profiler; /** @@ -27,40 +28,44 @@ use Symfony\Component\HttpKernel\Profiler\Profiler; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class ProfilerListener implements EventSubscriberInterface { protected $profiler; protected $matcher; protected $onlyException; - protected $onlyMasterRequests; + protected $onlyMainRequests; protected $exception; + /** @var \SplObjectStorage<Request, Profile> */ protected $profiles; protected $requestStack; + protected $collectParameter; + /** @var \SplObjectStorage<Request, Request|null> */ protected $parents; /** - * @param bool $onlyException True if the profiler only collects data when an exception occurs, false otherwise - * @param bool $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise + * @param bool $onlyException True if the profiler only collects data when an exception occurs, false otherwise + * @param bool $onlyMainRequests True if the profiler only collects data when the request is the main request, false otherwise */ - public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMasterRequests = false) + public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMainRequests = false, string $collectParameter = null) { $this->profiler = $profiler; $this->matcher = $matcher; $this->onlyException = $onlyException; - $this->onlyMasterRequests = $onlyMasterRequests; + $this->onlyMainRequests = $onlyMainRequests; $this->profiles = new \SplObjectStorage(); $this->parents = new \SplObjectStorage(); $this->requestStack = $requestStack; + $this->collectParameter = $collectParameter; } /** * Handles the onKernelException event. */ - public function onKernelException(GetResponseForExceptionEvent $event) + public function onKernelException(ExceptionEvent $event) { - if ($this->onlyMasterRequests && !$event->isMasterRequest()) { + if ($this->onlyMainRequests && !$event->isMainRequest()) { return; } @@ -70,10 +75,9 @@ class ProfilerListener implements EventSubscriberInterface /** * Handles the onKernelResponse event. */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - $master = $event->isMasterRequest(); - if ($this->onlyMasterRequests && !$master) { + if ($this->onlyMainRequests && !$event->isMainRequest()) { return; } @@ -82,6 +86,10 @@ class ProfilerListener implements EventSubscriberInterface } $request = $event->getRequest(); + if (null !== $this->collectParameter && null !== $collectParameterValue = $request->get($this->collectParameter)) { + true === $collectParameterValue || filter_var($collectParameterValue, \FILTER_VALIDATE_BOOLEAN) ? $this->profiler->enable() : $this->profiler->disable(); + } + $exception = $this->exception; $this->exception = null; @@ -89,7 +97,7 @@ class ProfilerListener implements EventSubscriberInterface return; } - $session = method_exists(Request::class, 'getPreferredFormat') && $request->hasPreviousSession() && $request->hasSession() ? $request->getSession() : null; + $session = $request->hasPreviousSession() && $request->hasSession() ? $request->getSession() : null; if ($session instanceof Session) { $usageIndexValue = $usageIndexReference = &$session->getUsageIndex(); @@ -111,7 +119,7 @@ class ProfilerListener implements EventSubscriberInterface $this->parents[$request] = $this->requestStack->getParentRequest(); } - public function onKernelTerminate(PostResponseEvent $event) + public function onKernelTerminate(TerminateEvent $event) { // attach children to parents foreach ($this->profiles as $request) { @@ -131,7 +139,7 @@ class ProfilerListener implements EventSubscriberInterface $this->parents = new \SplObjectStorage(); } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => ['onKernelResponse', -100], diff --git a/vendor/symfony/http-kernel/EventListener/ResponseListener.php b/vendor/symfony/http-kernel/EventListener/ResponseListener.php index 01973e222..a4090159b 100644 --- a/vendor/symfony/http-kernel/EventListener/ResponseListener.php +++ b/vendor/symfony/http-kernel/EventListener/ResponseListener.php @@ -12,7 +12,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -20,23 +20,25 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class ResponseListener implements EventSubscriberInterface { private $charset; + private $addContentLanguageHeader; - public function __construct(string $charset) + public function __construct(string $charset, bool $addContentLanguageHeader = false) { $this->charset = $charset; + $this->addContentLanguageHeader = $addContentLanguageHeader; } /** * Filters the Response. */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -46,10 +48,18 @@ class ResponseListener implements EventSubscriberInterface $response->setCharset($this->charset); } + if ($this->addContentLanguageHeader && !$response->isInformational() && !$response->isEmpty() && !$response->headers->has('Content-Language')) { + $response->headers->set('Content-Language', $event->getRequest()->getLocale()); + } + + if ($event->getRequest()->attributes->get('_vary_by_language')) { + $response->setVary('Accept-Language', false); + } + $response->prepare($event->getRequest()); } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => 'onKernelResponse', diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php index 47ee87b10..7c4da9892 100644 --- a/vendor/symfony/http-kernel/EventListener/RouterListener.php +++ b/vendor/symfony/http-kernel/EventListener/RouterListener.php @@ -16,9 +16,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -38,7 +38,7 @@ use Symfony\Component\Routing\RequestContextAwareInterface; * @author Fabien Potencier <fabien@symfony.com> * @author Yonel Ceruto <yonelceruto@gmail.com> * - * @final since Symfony 4.3 + * @final */ class RouterListener implements EventSubscriberInterface { @@ -50,9 +50,8 @@ class RouterListener implements EventSubscriberInterface private $debug; /** - * @param UrlMatcherInterface|RequestMatcherInterface $matcher The Url or Request matcher - * @param RequestContext|null $context The RequestContext (can be null when $matcher implements RequestContextAwareInterface) - * @param string $projectDir + * @param UrlMatcherInterface|RequestMatcherInterface $matcher The Url or Request matcher + * @param RequestContext|null $context The RequestContext (can be null when $matcher implements RequestContextAwareInterface) * * @throws \InvalidArgumentException */ @@ -67,7 +66,7 @@ class RouterListener implements EventSubscriberInterface } $this->matcher = $matcher; - $this->context = $context ?: $matcher->getContext(); + $this->context = $context ?? $matcher->getContext(); $this->requestStack = $requestStack; $this->logger = $logger; $this->projectDir = $projectDir; @@ -94,7 +93,7 @@ class RouterListener implements EventSubscriberInterface $this->setCurrentRequest($this->requestStack->getParentRequest()); } - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); @@ -127,7 +126,7 @@ class RouterListener implements EventSubscriberInterface unset($parameters['_route'], $parameters['_controller']); $request->attributes->set('_route_params', $parameters); } catch (ResourceNotFoundException $e) { - $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo()); + $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getUriForPath($request->getPathInfo())); if ($referer = $request->headers->get('referer')) { $message .= sprintf(' (from "%s")', $referer); @@ -135,13 +134,13 @@ class RouterListener implements EventSubscriberInterface throw new NotFoundHttpException($message, $e); } catch (MethodNotAllowedException $e) { - $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods())); + $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getUriForPath($request->getPathInfo()), implode(', ', $e->getAllowedMethods())); throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e); } } - public function onKernelException(GetResponseForExceptionEvent $event) + public function onKernelException(ExceptionEvent $event) { if (!$this->debug || !($e = $event->getThrowable()) instanceof NotFoundHttpException) { return; @@ -152,7 +151,7 @@ class RouterListener implements EventSubscriberInterface } } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => [['onKernelRequest', 32]], diff --git a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php deleted file mode 100644 index c3adaf84c..000000000 --- a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), \E_USER_DEPRECATED); - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; -use Symfony\Component\HttpKernel\KernelEvents; - -/** - * @author Tobias Schultze <http://tobion.de> - * - * @deprecated since Symfony 4.1, use AbstractSessionListener instead - */ -class SaveSessionListener implements EventSubscriberInterface -{ - public function onKernelResponse(FilterResponseEvent $event) - { - if (!$event->isMasterRequest()) { - return; - } - - $request = $event->getRequest(); - if ($request->hasSession() && ($session = $request->getSession())->isStarted()) { - $session->save(); - } - } - - public static function getSubscribedEvents() - { - return [ - // low priority but higher than StreamedResponseListener - KernelEvents::RESPONSE => [['onKernelResponse', -1000]], - ]; - } -} diff --git a/vendor/symfony/http-kernel/EventListener/SessionListener.php b/vendor/symfony/http-kernel/EventListener/SessionListener.php index 6cff47b88..61887fde6 100644 --- a/vendor/symfony/http-kernel/EventListener/SessionListener.php +++ b/vendor/symfony/http-kernel/EventListener/SessionListener.php @@ -11,17 +11,16 @@ namespace Symfony\Component\HttpKernel\EventListener; -use Psr\Container\ContainerInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; /** * Sets the session in the request. * * When the passed container contains a "session_storage" entry which * holds a NativeSessionStorage instance, the "cookie_secure" option - * will be set to true whenever the current master request is secure. + * will be set to true whenever the current main request is secure. * * @author Fabien Potencier <fabien@symfony.com> * @@ -29,23 +28,18 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent; */ class SessionListener extends AbstractSessionListener { - public function __construct(ContainerInterface $container) - { - $this->container = $container; - } - - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { parent::onKernelRequest($event); - if (!$event->isMasterRequest() || !$this->container->has('session')) { + if (!$event->isMainRequest() || (!$this->container->has('session') && !$this->container->has('session_factory'))) { return; } if ($this->container->has('session_storage') && ($storage = $this->container->get('session_storage')) instanceof NativeSessionStorage - && ($masterRequest = $this->container->get('request_stack')->getMasterRequest()) - && $masterRequest->isSecure() + && ($mainRequest = $this->container->get('request_stack')->getMainRequest()) + && $mainRequest->isSecure() ) { $storage->setOptions(['cookie_secure' => true]); } @@ -53,10 +47,14 @@ class SessionListener extends AbstractSessionListener protected function getSession(): ?SessionInterface { - if (!$this->container->has('session')) { - return null; + if ($this->container->has('session')) { + return $this->container->get('session'); } - return $this->container->get('session'); + if ($this->container->has('session_factory')) { + return $this->container->get('session_factory')->createSession(); + } + + return null; } } diff --git a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php b/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php index f28f5d868..b3f7ca40f 100644 --- a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php +++ b/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php @@ -13,7 +13,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\StreamedResponse; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -22,16 +22,16 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class StreamedResponseListener implements EventSubscriberInterface { /** * Filters the Response. */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -42,7 +42,7 @@ class StreamedResponseListener implements EventSubscriberInterface } } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => ['onKernelResponse', -1024], diff --git a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php b/vendor/symfony/http-kernel/EventListener/SurrogateListener.php index 9c3e960b0..9081bff65 100644 --- a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php +++ b/vendor/symfony/http-kernel/EventListener/SurrogateListener.php @@ -12,7 +12,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\HttpCache\HttpCache; use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface; use Symfony\Component\HttpKernel\KernelEvents; @@ -22,7 +22,7 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Fabien Potencier <fabien@symfony.com> * - * @final since Symfony 4.3 + * @final */ class SurrogateListener implements EventSubscriberInterface { @@ -36,9 +36,9 @@ class SurrogateListener implements EventSubscriberInterface /** * Filters the Response. */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ResponseEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } @@ -58,7 +58,7 @@ class SurrogateListener implements EventSubscriberInterface $surrogate->addSurrogateControl($event->getResponse()); } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => 'onKernelResponse', diff --git a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php index ff8b4aaa6..45fa312be 100644 --- a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php +++ b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php @@ -14,12 +14,16 @@ namespace Symfony\Component\HttpKernel\EventListener; use Psr\Container\ContainerInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; +trigger_deprecation('symfony/http-kernel', '5.4', '"%s" is deprecated, use "%s" instead.', TestSessionListener::class, SessionListener::class); + /** * Sets the session in the request. * * @author Fabien Potencier <fabien@symfony.com> * * @final + * + * @deprecated since Symfony 5.4, use SessionListener instead */ class TestSessionListener extends AbstractTestSessionListener { @@ -33,10 +37,10 @@ class TestSessionListener extends AbstractTestSessionListener protected function getSession(): ?SessionInterface { - if (!$this->container->has('session')) { - return null; + if ($this->container->has('session')) { + return $this->container->get('session'); } - return $this->container->get('session'); + return null; } } diff --git a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php deleted file mode 100644 index 6851c3b92..000000000 --- a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), \E_USER_DEPRECATED); - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\HttpKernel\Event\FinishRequestEvent; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\Translation\TranslatorInterface; -use Symfony\Contracts\Translation\LocaleAwareInterface; - -/** - * Synchronizes the locale between the request and the translator. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.3, use LocaleAwareListener instead - */ -class TranslatorListener implements EventSubscriberInterface -{ - private $translator; - private $requestStack; - - /** - * @param LocaleAwareInterface $translator - */ - public function __construct($translator, RequestStack $requestStack) - { - if (!$translator instanceof TranslatorInterface && !$translator instanceof LocaleAwareInterface) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator))); - } - $this->translator = $translator; - $this->requestStack = $requestStack; - } - - public function onKernelRequest(GetResponseEvent $event) - { - $this->setLocale($event->getRequest()); - } - - public function onKernelFinishRequest(FinishRequestEvent $event) - { - if (null === $parentRequest = $this->requestStack->getParentRequest()) { - return; - } - - $this->setLocale($parentRequest); - } - - public static function getSubscribedEvents() - { - return [ - // must be registered after the Locale listener - KernelEvents::REQUEST => [['onKernelRequest', 10]], - KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]], - ]; - } - - private function setLocale(Request $request) - { - try { - $this->translator->setLocale($request->getLocale()); - } catch (\InvalidArgumentException $e) { - $this->translator->setLocale($request->getDefaultLocale()); - } - } -} diff --git a/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php b/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php index 69c86b409..caa0f32aa 100644 --- a/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php +++ b/vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php @@ -12,7 +12,7 @@ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -20,16 +20,16 @@ use Symfony\Component\HttpKernel\KernelEvents; * * @author Magnus Nordlander <magnus@fervo.se> * - * @final since Symfony 4.3 + * @final */ class ValidateRequestListener implements EventSubscriberInterface { /** * Performs the validation. */ - public function onKernelRequest(GetResponseEvent $event) + public function onKernelRequest(RequestEvent $event) { - if (!$event->isMasterRequest()) { + if (!$event->isMainRequest()) { return; } $request = $event->getRequest(); @@ -44,7 +44,7 @@ class ValidateRequestListener implements EventSubscriberInterface /** * {@inheritdoc} */ - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => [ diff --git a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php b/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php index f0c81111d..58680a327 100644 --- a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php +++ b/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php @@ -24,6 +24,12 @@ class AccessDeniedHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(403, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php b/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php index 8eccce1e1..f530f7db4 100644 --- a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php +++ b/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php @@ -23,6 +23,12 @@ class BadRequestHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(400, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php b/vendor/symfony/http-kernel/Exception/ConflictHttpException.php index 72b8aa127..79c36041c 100644 --- a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php +++ b/vendor/symfony/http-kernel/Exception/ConflictHttpException.php @@ -23,6 +23,12 @@ class ConflictHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(409, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/GoneHttpException.php b/vendor/symfony/http-kernel/Exception/GoneHttpException.php index 6bba8159a..9ea65057b 100644 --- a/vendor/symfony/http-kernel/Exception/GoneHttpException.php +++ b/vendor/symfony/http-kernel/Exception/GoneHttpException.php @@ -23,6 +23,12 @@ class GoneHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(410, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/HttpException.php b/vendor/symfony/http-kernel/Exception/HttpException.php index f3c0c3362..249fe366d 100644 --- a/vendor/symfony/http-kernel/Exception/HttpException.php +++ b/vendor/symfony/http-kernel/Exception/HttpException.php @@ -23,6 +23,17 @@ class HttpException extends \RuntimeException implements HttpExceptionInterface public function __construct(int $statusCode, ?string $message = '', \Throwable $previous = null, array $headers = [], ?int $code = 0) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + if (null === $code) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $code to "%s()" is deprecated, pass 0 instead.', __METHOD__); + + $code = 0; + } + $this->statusCode = $statusCode; $this->headers = $headers; diff --git a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php index 735e9c805..4ae050945 100644 --- a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php +++ b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php @@ -21,14 +21,14 @@ interface HttpExceptionInterface extends \Throwable /** * Returns the status code. * - * @return int An HTTP response status code + * @return int */ public function getStatusCode(); /** * Returns response headers. * - * @return array Response headers + * @return array */ public function getHeaders(); } diff --git a/vendor/symfony/http-kernel/Exception/InvalidMetadataException.php b/vendor/symfony/http-kernel/Exception/InvalidMetadataException.php new file mode 100644 index 000000000..129267ab0 --- /dev/null +++ b/vendor/symfony/http-kernel/Exception/InvalidMetadataException.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Exception; + +class InvalidMetadataException extends \LogicException +{ +} diff --git a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php index 92f9c74da..fcac13785 100644 --- a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php +++ b/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php @@ -23,6 +23,12 @@ class LengthRequiredHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(411, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php b/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php index 665ae355b..37576bcac 100644 --- a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php +++ b/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php @@ -24,6 +24,17 @@ class MethodNotAllowedHttpException extends HttpException */ public function __construct(array $allow, ?string $message = '', \Throwable $previous = null, ?int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + if (null === $code) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $code to "%s()" is deprecated, pass 0 instead.', __METHOD__); + + $code = 0; + } + $headers['Allow'] = strtoupper(implode(', ', $allow)); parent::__construct(405, $message, $previous, $headers, $code); diff --git a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php b/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php index a985e86b9..5a422406b 100644 --- a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php +++ b/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php @@ -23,6 +23,12 @@ class NotAcceptableHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(406, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php b/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php index 3be305ee9..a475113c5 100644 --- a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php +++ b/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php @@ -23,6 +23,12 @@ class NotFoundHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(404, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php index bdedea143..e23740a28 100644 --- a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php +++ b/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php @@ -23,6 +23,12 @@ class PreconditionFailedHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(412, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php index bc2680483..5c31fae82 100644 --- a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php +++ b/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php @@ -25,6 +25,12 @@ class PreconditionRequiredHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(428, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php b/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php index 1fb793dbf..d5681bbeb 100644 --- a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php +++ b/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php @@ -24,6 +24,17 @@ class ServiceUnavailableHttpException extends HttpException */ public function __construct($retryAfter = null, ?string $message = '', \Throwable $previous = null, ?int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + if (null === $code) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $code to "%s()" is deprecated, pass 0 instead.', __METHOD__); + + $code = 0; + } + if ($retryAfter) { $headers['Retry-After'] = $retryAfter; } diff --git a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php b/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php index e1e47d048..fd74402b5 100644 --- a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php +++ b/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php @@ -26,6 +26,17 @@ class TooManyRequestsHttpException extends HttpException */ public function __construct($retryAfter = null, ?string $message = '', \Throwable $previous = null, ?int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + if (null === $code) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $code to "%s()" is deprecated, pass 0 instead.', __METHOD__); + + $code = 0; + } + if ($retryAfter) { $headers['Retry-After'] = $retryAfter; } diff --git a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php b/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php index ddb48f116..aeb9713a3 100644 --- a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php +++ b/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php @@ -24,6 +24,17 @@ class UnauthorizedHttpException extends HttpException */ public function __construct(string $challenge, ?string $message = '', \Throwable $previous = null, ?int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + if (null === $code) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $code to "%s()" is deprecated, pass 0 instead.', __METHOD__); + + $code = 0; + } + $headers['WWW-Authenticate'] = $challenge; parent::__construct(401, $message, $previous, $headers, $code); diff --git a/vendor/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php b/vendor/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php new file mode 100644 index 000000000..0145b1691 --- /dev/null +++ b/vendor/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php @@ -0,0 +1,19 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Exception; + +/** + * @author Mathias Arlaud <mathias.arlaud@gmail.com> + */ +class UnexpectedSessionUsageException extends \LogicException +{ +} diff --git a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php b/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php index 237340a57..7b828b1d9 100644 --- a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php +++ b/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php @@ -23,6 +23,12 @@ class UnprocessableEntityHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(422, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php b/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php index 74ddbfccb..7908423f4 100644 --- a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php +++ b/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php @@ -23,6 +23,12 @@ class UnsupportedMediaTypeHttpException extends HttpException */ public function __construct(?string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) { + if (null === $message) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + parent::__construct(415, $message, $previous, $headers, $code); } } diff --git a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php index f59f86247..4e4d028b4 100644 --- a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php +++ b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php @@ -83,14 +83,7 @@ abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRendere private function generateSignedFragmentUri(ControllerReference $uri, Request $request): string { - if (null === $this->signer) { - throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.'); - } - - // we need to sign the absolute URI, but want to return the path only. - $fragmentUri = $this->signer->sign($this->generateFragmentUri($uri, $request, true)); - - return substr($fragmentUri, \strlen($request->getSchemeAndHttpHost())); + return (new FragmentUriGenerator($this->fragmentPath, $this->signer))->generate($uri, $request); } private function containsNonScalars(array $values): bool diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php index e981291b8..1ecaaef1a 100644 --- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php +++ b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php @@ -15,6 +15,7 @@ use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpKernel\Controller\ControllerReference; +use Symfony\Component\HttpKernel\Exception\HttpException; /** * Renders a URI that represents a resource fragment. @@ -60,15 +61,14 @@ class FragmentHandler * * * ignore_errors: true to return an empty string in case of an error * - * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance - * @param string $renderer The renderer name + * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance * - * @return string|null The Response content or null when the Response is streamed + * @return string|null * * @throws \InvalidArgumentException when the renderer does not exist - * @throws \LogicException when no master request is being handled + * @throws \LogicException when no main request is being handled */ - public function render($uri, $renderer = 'inline', array $options = []) + public function render($uri, string $renderer = 'inline', array $options = []) { if (!isset($options['ignore_errors'])) { $options['ignore_errors'] = !$this->debug; @@ -98,7 +98,8 @@ class FragmentHandler protected function deliver(Response $response) { if (!$response->isSuccessful()) { - throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode())); + $responseStatusCode = $response->getStatusCode(); + throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $this->requestStack->getCurrentRequest()->getUri(), $responseStatusCode), 0, new HttpException($responseStatusCode)); } if (!$response instanceof StreamedResponse) { diff --git a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php index 4f8ac50b1..568b1781a 100644 --- a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php +++ b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php @@ -27,14 +27,14 @@ interface FragmentRendererInterface * * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance * - * @return Response A Response instance + * @return Response */ public function render($uri, Request $request, array $options = []); /** * Gets the name of the strategy. * - * @return string The strategy name + * @return string */ public function getName(); } diff --git a/vendor/symfony/http-kernel/Fragment/FragmentUriGenerator.php b/vendor/symfony/http-kernel/Fragment/FragmentUriGenerator.php new file mode 100644 index 000000000..4c0fac997 --- /dev/null +++ b/vendor/symfony/http-kernel/Fragment/FragmentUriGenerator.php @@ -0,0 +1,93 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Fragment; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpKernel\Controller\ControllerReference; +use Symfony\Component\HttpKernel\UriSigner; + +/** + * Generates a fragment URI. + * + * @author Kévin Dunglas <kevin@dunglas.fr> + * @author Fabien Potencier <fabien@symfony.com> + */ +final class FragmentUriGenerator implements FragmentUriGeneratorInterface +{ + private $fragmentPath; + private $signer; + private $requestStack; + + public function __construct(string $fragmentPath, UriSigner $signer = null, RequestStack $requestStack = null) + { + $this->fragmentPath = $fragmentPath; + $this->signer = $signer; + $this->requestStack = $requestStack; + } + + /** + * {@inheritDoc} + */ + public function generate(ControllerReference $controller, Request $request = null, bool $absolute = false, bool $strict = true, bool $sign = true): string + { + if (null === $request && (null === $this->requestStack || null === $request = $this->requestStack->getCurrentRequest())) { + throw new \LogicException('Generating a fragment URL can only be done when handling a Request.'); + } + + if ($sign && null === $this->signer) { + throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.'); + } + + if ($strict) { + $this->checkNonScalar($controller->attributes); + } + + // We need to forward the current _format and _locale values as we don't have + // a proper routing pattern to do the job for us. + // This makes things inconsistent if you switch from rendering a controller + // to rendering a route if the route pattern does not contain the special + // _format and _locale placeholders. + if (!isset($controller->attributes['_format'])) { + $controller->attributes['_format'] = $request->getRequestFormat(); + } + if (!isset($controller->attributes['_locale'])) { + $controller->attributes['_locale'] = $request->getLocale(); + } + + $controller->attributes['_controller'] = $controller->controller; + $controller->query['_path'] = http_build_query($controller->attributes, '', '&'); + $path = $this->fragmentPath.'?'.http_build_query($controller->query, '', '&'); + + // we need to sign the absolute URI, but want to return the path only. + $fragmentUri = $sign || $absolute ? $request->getUriForPath($path) : $request->getBaseUrl().$path; + + if (!$sign) { + return $fragmentUri; + } + + $fragmentUri = $this->signer->sign($fragmentUri); + + return $absolute ? $fragmentUri : substr($fragmentUri, \strlen($request->getSchemeAndHttpHost())); + } + + private function checkNonScalar(array $values): void + { + foreach ($values as $key => $value) { + if (\is_array($value)) { + $this->checkNonScalar($value); + } elseif (!\is_scalar($value) && null !== $value) { + throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key)); + } + } + } +} diff --git a/vendor/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php new file mode 100644 index 000000000..b211f5e37 --- /dev/null +++ b/vendor/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php @@ -0,0 +1,32 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Fragment; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Controller\ControllerReference; + +/** + * Interface implemented by rendering strategies able to generate an URL for a fragment. + * + * @author Kévin Dunglas <kevin@dunglas.fr> + */ +interface FragmentUriGeneratorInterface +{ + /** + * Generates a fragment URI for a given controller. + * + * @param bool $absolute Whether to generate an absolute URL or not + * @param bool $strict Whether to allow non-scalar attributes or not + * @param bool $sign Whether to sign the URL or not + */ + public function generate(ControllerReference $controller, Request $request = null, bool $absolute = false, bool $strict = true, bool $sign = true): string; +} diff --git a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php index 9004102f7..446ce2d9d 100644 --- a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php +++ b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php @@ -15,11 +15,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Controller\ControllerReference; use Symfony\Component\HttpKernel\UriSigner; -use Symfony\Component\Templating\EngineInterface; use Twig\Environment; -use Twig\Error\LoaderError; -use Twig\Loader\ExistsLoaderInterface; -use Twig\Loader\SourceContextLoaderInterface; /** * Implements the Hinclude rendering strategy. @@ -30,51 +26,28 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer { private $globalDefaultTemplate; private $signer; - private $templating; + private $twig; private $charset; /** - * @param EngineInterface|Environment $templating An EngineInterface or a Twig instance - * @param string $globalDefaultTemplate The global default content (it can be a template name or the content) + * @param string $globalDefaultTemplate The global default content (it can be a template name or the content) */ - public function __construct($templating = null, UriSigner $signer = null, string $globalDefaultTemplate = null, string $charset = 'utf-8') + public function __construct(Environment $twig = null, UriSigner $signer = null, string $globalDefaultTemplate = null, string $charset = 'utf-8') { - $this->setTemplating($templating); + $this->twig = $twig; $this->globalDefaultTemplate = $globalDefaultTemplate; $this->signer = $signer; $this->charset = $charset; } - /** - * Sets the templating engine to use to render the default content. - * - * @param EngineInterface|Environment|null $templating An EngineInterface or an Environment instance - * - * @throws \InvalidArgumentException - * - * @internal - */ - public function setTemplating($templating) - { - if (null !== $templating && !$templating instanceof EngineInterface && !$templating instanceof Environment) { - throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface.'); - } - - if ($templating instanceof EngineInterface) { - @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), \E_USER_DEPRECATED); - } - - $this->templating = $templating; - } - /** * Checks if a templating engine has been set. * - * @return bool true if the templating engine has been set, false otherwise + * @return bool */ public function hasTemplating() { - return null !== $this->templating; + return null !== $this->twig; } /** @@ -89,20 +62,15 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer public function render($uri, Request $request, array $options = []) { if ($uri instanceof ControllerReference) { - if (null === $this->signer) { - throw new \LogicException('You must use a proper URI when using the Hinclude rendering strategy or set a URL signer.'); - } - - // we need to sign the absolute URI, but want to return the path only. - $uri = substr($this->signer->sign($this->generateFragmentUri($uri, $request, true)), \strlen($request->getSchemeAndHttpHost())); + $uri = (new FragmentUriGenerator($this->fragmentPath, $this->signer))->generate($uri, $request); } // We need to replace ampersands in the URI with the encoded form in order to return valid html/xml content. $uri = str_replace('&', '&', $uri); $template = $options['default'] ?? $this->globalDefaultTemplate; - if (null !== $this->templating && $template && $this->templateExists($template)) { - $content = $this->templating->render($template); + if (null !== $this->twig && $template && $this->twig->getLoader()->exists($template)) { + $content = $this->twig->render($template); } else { $content = $template; } @@ -126,36 +94,6 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer return new Response(sprintf('<hx:include src="%s"%s>%s</hx:include>', $uri, $renderedAttributes, $content)); } - private function templateExists(string $template): bool - { - if ($this->templating instanceof EngineInterface) { - try { - return $this->templating->exists($template); - } catch (\Exception $e) { - return false; - } - } - - $loader = $this->templating->getLoader(); - - if (1 === Environment::MAJOR_VERSION && !$loader instanceof ExistsLoaderInterface) { - try { - if ($loader instanceof SourceContextLoaderInterface) { - $loader->getSourceContext($template); - } else { - $loader->getSource($template); - } - - return true; - } catch (LoaderError $e) { - } - - return false; - } - - return $loader->exists($template); - } - /** * {@inheritdoc} */ diff --git a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php index 8f89733b5..ea45fdcb3 100644 --- a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php +++ b/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php @@ -11,7 +11,6 @@ namespace Symfony\Component\HttpKernel\Fragment; -use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Controller\ControllerReference; @@ -34,7 +33,7 @@ class InlineFragmentRenderer extends RoutableFragmentRenderer public function __construct(HttpKernelInterface $kernel, EventDispatcherInterface $dispatcher = null) { $this->kernel = $kernel; - $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher); + $this->dispatcher = $dispatcher; } /** @@ -106,7 +105,7 @@ class InlineFragmentRenderer extends RoutableFragmentRenderer } } - protected function createSubRequest($uri, Request $request) + protected function createSubRequest(string $uri, Request $request) { $cookies = $request->cookies->all(); $server = $request->server->all(); diff --git a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php index bd86a42df..e922ffb64 100644 --- a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php +++ b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php @@ -22,16 +22,17 @@ use Symfony\Component\HttpKernel\EventListener\FragmentListener; */ abstract class RoutableFragmentRenderer implements FragmentRendererInterface { - private $fragmentPath = '/_fragment'; + /** + * @internal + */ + protected $fragmentPath = '/_fragment'; /** * Sets the fragment path that triggers the fragment listener. * - * @param string $path The path - * * @see FragmentListener */ - public function setFragmentPath($path) + public function setFragmentPath(string $path) { $this->fragmentPath = $path; } @@ -42,47 +43,10 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface * @param bool $absolute Whether to generate an absolute URL or not * @param bool $strict Whether to allow non-scalar attributes or not * - * @return string A fragment URI + * @return string */ - protected function generateFragmentUri(ControllerReference $reference, Request $request, $absolute = false, $strict = true) + protected function generateFragmentUri(ControllerReference $reference, Request $request, bool $absolute = false, bool $strict = true) { - if ($strict) { - $this->checkNonScalar($reference->attributes); - } - - // We need to forward the current _format and _locale values as we don't have - // a proper routing pattern to do the job for us. - // This makes things inconsistent if you switch from rendering a controller - // to rendering a route if the route pattern does not contain the special - // _format and _locale placeholders. - if (!isset($reference->attributes['_format'])) { - $reference->attributes['_format'] = $request->getRequestFormat(); - } - if (!isset($reference->attributes['_locale'])) { - $reference->attributes['_locale'] = $request->getLocale(); - } - - $reference->attributes['_controller'] = $reference->controller; - - $reference->query['_path'] = http_build_query($reference->attributes, '', '&'); - - $path = $this->fragmentPath.'?'.http_build_query($reference->query, '', '&'); - - if ($absolute) { - return $request->getUriForPath($path); - } - - return $request->getBaseUrl().$path; - } - - private function checkNonScalar(array $values) - { - foreach ($values as $key => $value) { - if (\is_array($value)) { - $this->checkNonScalar($value); - } elseif (!\is_scalar($value) && null !== $value) { - throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key)); - } - } + return (new FragmentUriGenerator($this->fragmentPath))->generate($reference, $request, $absolute, $strict, false); } } diff --git a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php index 9301d0c11..f2d809e8d 100644 --- a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php +++ b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php @@ -41,7 +41,7 @@ abstract class AbstractSurrogate implements SurrogateInterface /** * Returns a new cache strategy instance. * - * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance + * @return ResponseCacheStrategyInterface */ public function createCacheStrategy() { @@ -88,7 +88,7 @@ abstract class AbstractSurrogate implements SurrogateInterface /** * {@inheritdoc} */ - public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors) + public function handle(HttpCache $cache, string $uri, string $alt, bool $ignoreErrors) { $subRequest = Request::create($uri, Request::METHOD_GET, [], $cache->getRequest()->cookies->all(), [], $cache->getRequest()->server->all()); diff --git a/vendor/symfony/http-kernel/HttpCache/Esi.php b/vendor/symfony/http-kernel/HttpCache/Esi.php index 829f4ac64..cd6a00a10 100644 --- a/vendor/symfony/http-kernel/HttpCache/Esi.php +++ b/vendor/symfony/http-kernel/HttpCache/Esi.php @@ -45,7 +45,7 @@ class Esi extends AbstractSurrogate /** * {@inheritdoc} */ - public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '') + public function renderIncludeTag(string $uri, string $alt = null, bool $ignoreErrors = true, string $comment = '') { $html = sprintf('<esi:include src="%s"%s%s />', $uri, diff --git a/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/vendor/symfony/http-kernel/HttpCache/HttpCache.php index 84b77c518..28be364c1 100644 --- a/vendor/symfony/http-kernel/HttpCache/HttpCache.php +++ b/vendor/symfony/http-kernel/HttpCache/HttpCache.php @@ -46,7 +46,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * will try to carry on and deliver a meaningful response. * * * trace_level May be one of 'none', 'short' and 'full'. For 'short', a concise trace of the - * master request will be added as an HTTP header. 'full' will add traces for all + * main request will be added as an HTTP header. 'full' will add traces for all * requests (including ESI subrequests). (default: 'full' if in debug; 'none' otherwise) * * * trace_header Header name to use for traces. (default: X-Symfony-Cache) @@ -108,7 +108,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Gets the current store. * - * @return StoreInterface A StoreInterface instance + * @return StoreInterface */ public function getStore() { @@ -118,7 +118,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Returns an array of events that took place during processing of the last request. * - * @return array An array of events + * @return array */ public function getTraces() { @@ -145,7 +145,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Returns a log message for the events of the last request processing. * - * @return string A log message + * @return string */ public function getLog() { @@ -158,9 +158,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface } /** - * Gets the Request instance associated with the master request. + * Gets the Request instance associated with the main request. * - * @return Request A Request instance + * @return Request */ public function getRequest() { @@ -170,7 +170,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Gets the Kernel instance. * - * @return HttpKernelInterface An HttpKernelInterface instance + * @return HttpKernelInterface */ public function getKernel() { @@ -180,7 +180,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Gets the Surrogate instance. * - * @return SurrogateInterface A Surrogate instance + * @return SurrogateInterface * * @throws \LogicException */ @@ -192,10 +192,10 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * {@inheritdoc} */ - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) + public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true) { // FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism - if (HttpKernelInterface::MASTER_REQUEST === $type) { + if (HttpKernelInterface::MAIN_REQUEST === $type) { $this->traces = []; // Keep a clone of the original request for surrogates so they can access it. // We must clone here to get a separate instance because the application will modify the request during @@ -226,12 +226,12 @@ class HttpCache implements HttpKernelInterface, TerminableInterface $this->restoreResponseBody($request, $response); - if (HttpKernelInterface::MASTER_REQUEST === $type) { + if (HttpKernelInterface::MAIN_REQUEST === $type) { $this->addTraces($response); } if (null !== $this->surrogate) { - if (HttpKernelInterface::MASTER_REQUEST === $type) { + if (HttpKernelInterface::MAIN_REQUEST === $type) { $this->surrogateCacheStrategy->update($response); } else { $this->surrogateCacheStrategy->add($response); @@ -260,9 +260,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * * @param bool $catch Whether to process exceptions * - * @return Response A Response instance + * @return Response */ - protected function pass(Request $request, $catch = false) + protected function pass(Request $request, bool $catch = false) { $this->record($request, 'pass'); @@ -274,13 +274,13 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * * @param bool $catch Whether to process exceptions * - * @return Response A Response instance + * @return Response * * @throws \Exception * * @see RFC2616 13.10 */ - protected function invalidate(Request $request, $catch = false) + protected function invalidate(Request $request, bool $catch = false) { $response = $this->pass($request, $catch); @@ -322,11 +322,11 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * * @param bool $catch Whether to process exceptions * - * @return Response A Response instance + * @return Response * * @throws \Exception */ - protected function lookup(Request $request, $catch = false) + protected function lookup(Request $request, bool $catch = false) { try { $entry = $this->store->lookup($request); @@ -371,9 +371,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * * @param bool $catch Whether to process exceptions * - * @return Response A Response instance + * @return Response */ - protected function validate(Request $request, Response $entry, $catch = false) + protected function validate(Request $request, Response $entry, bool $catch = false) { $subRequest = clone $request; @@ -434,9 +434,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * * @param bool $catch Whether to process exceptions * - * @return Response A Response instance + * @return Response */ - protected function fetch(Request $request, $catch = false) + protected function fetch(Request $request, bool $catch = false) { $subRequest = clone $request; @@ -467,16 +467,16 @@ class HttpCache implements HttpKernelInterface, TerminableInterface * @param bool $catch Whether to catch exceptions or not * @param Response|null $entry A Response instance (the stale entry if present, null otherwise) * - * @return Response A Response instance + * @return Response */ - protected function forward(Request $request, $catch = false, Response $entry = null) + protected function forward(Request $request, bool $catch = false, Response $entry = null) { if ($this->surrogate) { $this->surrogate->addSurrogateCapability($request); } // always a "master" request (as the real master request can be in cache) - $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch); + $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MAIN_REQUEST, $catch); /* * Support stale-if-error given on Responses or as a config option. @@ -540,7 +540,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface /** * Checks whether the cache entry is "fresh enough" to satisfy the Request. * - * @return bool true if the cache entry if fresh enough, false otherwise + * @return bool */ protected function isFreshEnough(Request $request, Response $entry) { diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php index 17a7e87fe..cf8682257 100644 --- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php +++ b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php @@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Response; * ResponseCacheStrategy knows how to compute the Response cache HTTP header * based on the different response cache headers. * - * This implementation changes the master response TTL to the smallest TTL received + * This implementation changes the main response TTL to the smallest TTL received * or force validation if one of the surrogates has validation cache strategy. * * @author Fabien Potencier <fabien@symfony.com> diff --git a/vendor/symfony/http-kernel/HttpCache/Ssi.php b/vendor/symfony/http-kernel/HttpCache/Ssi.php index a2856f276..f114e05cf 100644 --- a/vendor/symfony/http-kernel/HttpCache/Ssi.php +++ b/vendor/symfony/http-kernel/HttpCache/Ssi.php @@ -42,7 +42,7 @@ class Ssi extends AbstractSurrogate /** * {@inheritdoc} */ - public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '') + public function renderIncludeTag(string $uri, string $alt = null, bool $ignoreErrors = true, string $comment = '') { return sprintf('<!--#include virtual="%s" -->', $uri); } diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php index eeb7a6ef9..c77739138 100644 --- a/vendor/symfony/http-kernel/HttpCache/Store.php +++ b/vendor/symfony/http-kernel/HttpCache/Store.php @@ -25,8 +25,10 @@ use Symfony\Component\HttpFoundation\Response; class Store implements StoreInterface { protected $root; + /** @var \SplObjectStorage<Request, string> */ private $keyCache; - private $locks; + /** @var array<string, resource> */ + private $locks = []; /** * @throws \RuntimeException @@ -34,11 +36,10 @@ class Store implements StoreInterface public function __construct(string $root) { $this->root = $root; - if (!file_exists($this->root) && !@mkdir($this->root, 0777, true) && !is_dir($this->root)) { + if (!is_dir($this->root) && !@mkdir($this->root, 0777, true) && !is_dir($this->root)) { throw new \RuntimeException(sprintf('Unable to create the store directory (%s).', $this->root)); } $this->keyCache = new \SplObjectStorage(); - $this->locks = []; } /** @@ -66,7 +67,7 @@ class Store implements StoreInterface if (!isset($this->locks[$key])) { $path = $this->getPath($key); - if (!file_exists(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) { + if (!is_dir(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) { return $path; } $h = fopen($path, 'c'); @@ -110,7 +111,7 @@ class Store implements StoreInterface return true; // shortcut if lock held by this process } - if (!file_exists($path = $this->getPath($key))) { + if (!is_file($path = $this->getPath($key))) { return false; } @@ -125,7 +126,7 @@ class Store implements StoreInterface /** * Locates a cached Response for the Request provided. * - * @return Response|null A Response instance, or null if no cache entry was found + * @return Response|null */ public function lookup(Request $request) { @@ -166,7 +167,7 @@ class Store implements StoreInterface * Existing entries are read and any that match the response are removed. This * method calls write with the new list of cache entries. * - * @return string The key under which the response is stored + * @return string * * @throws \RuntimeException */ @@ -207,7 +208,7 @@ class Store implements StoreInterface $entry[1]['vary'] = ['']; } - if ($entry[1]['vary'][0] != $vary || !$this->requestsMatch($vary, $entry[0], $storedEnv)) { + if ($entry[1]['vary'][0] != $vary || !$this->requestsMatch($vary ?? '', $entry[0], $storedEnv)) { $entries[] = $entry; } } @@ -265,9 +266,9 @@ class Store implements StoreInterface * Determines whether two Request HTTP header sets are non-varying based on * the vary response header value provided. * - * @param string $vary A Response vary header - * @param array $env1 A Request HTTP header array - * @param array $env2 A Request HTTP header array + * @param string|null $vary A Response vary header + * @param array $env1 A Request HTTP header array + * @param array $env2 A Request HTTP header array */ private function requestsMatch(?string $vary, array $env1, array $env2): bool { @@ -306,11 +307,9 @@ class Store implements StoreInterface * * This method purges both the HTTP and the HTTPS version of the cache entry. * - * @param string $url A URL - * * @return bool true if the URL exists with either HTTP or HTTPS scheme and has been purged, false otherwise */ - public function purge($url) + public function purge(string $url) { $http = preg_replace('#^https:#', 'http:', $url); $https = preg_replace('#^http:#', 'https:', $url); @@ -333,7 +332,7 @@ class Store implements StoreInterface unset($this->locks[$key]); } - if (file_exists($path = $this->getPath($key))) { + if (is_file($path = $this->getPath($key))) { unlink($path); return true; @@ -349,7 +348,7 @@ class Store implements StoreInterface { $path = $this->getPath($key); - return file_exists($path) && false !== ($contents = @file_get_contents($path)) ? $contents : null; + return is_file($path) && false !== ($contents = @file_get_contents($path)) ? $contents : null; } /** @@ -374,7 +373,7 @@ class Store implements StoreInterface return false; } } else { - if (!file_exists(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) { + if (!is_dir(\dirname($path)) && false === @mkdir(\dirname($path), 0777, true) && !is_dir(\dirname($path))) { return false; } @@ -405,7 +404,7 @@ class Store implements StoreInterface return true; } - public function getPath($key) + public function getPath(string $key) { return $this->root.\DIRECTORY_SEPARATOR.substr($key, 0, 2).\DIRECTORY_SEPARATOR.substr($key, 2, 2).\DIRECTORY_SEPARATOR.substr($key, 4, 2).\DIRECTORY_SEPARATOR.substr($key, 6); } @@ -420,7 +419,7 @@ class Store implements StoreInterface * headers, use a Vary header to indicate them, and each representation will * be stored independently under the same cache key. * - * @return string A key for the given Request + * @return string */ protected function generateCacheKey(Request $request) { diff --git a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php b/vendor/symfony/http-kernel/HttpCache/StoreInterface.php index 8f1cf4409..3d07ef3fc 100644 --- a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php +++ b/vendor/symfony/http-kernel/HttpCache/StoreInterface.php @@ -27,7 +27,7 @@ interface StoreInterface /** * Locates a cached Response for the Request provided. * - * @return Response|null A Response instance, or null if no cache entry was found + * @return Response|null */ public function lookup(Request $request); @@ -70,11 +70,9 @@ interface StoreInterface /** * Purges data for the given URL. * - * @param string $url A URL - * * @return bool true if the URL exists and has been purged, false otherwise */ - public function purge($url); + public function purge(string $url); /** * Cleanups storage. diff --git a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php b/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php index cef9817e0..253071f07 100644 --- a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php +++ b/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php @@ -23,7 +23,7 @@ use Symfony\Component\HttpKernel\HttpKernelInterface; */ class SubRequestHandler { - public static function handle(HttpKernelInterface $kernel, Request $request, $type, $catch): Response + public static function handle(HttpKernelInterface $kernel, Request $request, int $type, bool $catch): Response { // save global state related to trusted headers and proxies $trustedProxies = Request::getTrustedProxies(); @@ -31,13 +31,14 @@ class SubRequestHandler // remove untrusted values $remoteAddr = $request->server->get('REMOTE_ADDR'); - if (!IpUtils::checkIp($remoteAddr, $trustedProxies)) { + if (!$remoteAddr || !IpUtils::checkIp($remoteAddr, $trustedProxies)) { $trustedHeaders = [ 'FORWARDED' => $trustedHeaderSet & Request::HEADER_FORWARDED, 'X_FORWARDED_FOR' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_FOR, 'X_FORWARDED_HOST' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_HOST, 'X_FORWARDED_PROTO' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_PROTO, 'X_FORWARDED_PORT' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_PORT, + 'X_FORWARDED_PREFIX' => $trustedHeaderSet & Request::HEADER_X_FORWARDED_PREFIX, ]; foreach (array_filter($trustedHeaders) as $name => $key) { $request->headers->remove($name); diff --git a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php index a26698c91..3f3c74a97 100644 --- a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php +++ b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php @@ -26,14 +26,14 @@ interface SurrogateInterface /** * Returns a new cache strategy instance. * - * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance + * @return ResponseCacheStrategyInterface */ public function createCacheStrategy(); /** * Checks that at least one surrogate has Surrogate capability. * - * @return bool true if one surrogate has Surrogate capability, false otherwise + * @return bool */ public function hasSurrogateCapability(Request $request); @@ -52,21 +52,19 @@ interface SurrogateInterface /** * Checks that the Response needs to be parsed for Surrogate tags. * - * @return bool true if the Response needs to be parsed, false otherwise + * @return bool */ public function needsParsing(Response $response); /** * Renders a Surrogate tag. * - * @param string $uri A URI - * @param string $alt An alternate URI - * @param bool $ignoreErrors Whether to ignore errors or not - * @param string $comment A comment to add as an esi:include tag + * @param string $alt An alternate URI + * @param string $comment A comment to add as an esi:include tag * * @return string */ - public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = ''); + public function renderIncludeTag(string $uri, string $alt = null, bool $ignoreErrors = true, string $comment = ''); /** * Replaces a Response Surrogate tags with the included resource content. @@ -78,14 +76,12 @@ interface SurrogateInterface /** * Handles a Surrogate from the cache. * - * @param string $uri The main URI - * @param string $alt An alternative URI - * @param bool $ignoreErrors Whether to ignore errors or not + * @param string $alt An alternative URI * * @return string * * @throws \RuntimeException * @throws \Exception */ - public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors); + public function handle(HttpCache $cache, string $uri, string $alt, bool $ignoreErrors); } diff --git a/vendor/symfony/http-kernel/HttpClientKernel.php b/vendor/symfony/http-kernel/HttpClientKernel.php index 7acb04c89..58ca82e5a 100644 --- a/vendor/symfony/http-kernel/HttpClientKernel.php +++ b/vendor/symfony/http-kernel/HttpClientKernel.php @@ -42,7 +42,7 @@ final class HttpClientKernel implements HttpKernelInterface $this->client = $client ?? HttpClient::create(); } - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): Response + public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response { $headers = $this->getHeaders($request); $body = ''; diff --git a/vendor/symfony/http-kernel/HttpKernel.php b/vendor/symfony/http-kernel/HttpKernel.php index e23023d3c..38102e252 100644 --- a/vendor/symfony/http-kernel/HttpKernel.php +++ b/vendor/symfony/http-kernel/HttpKernel.php @@ -11,7 +11,6 @@ namespace Symfony\Component\HttpKernel; -use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; @@ -34,7 +33,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; // Help opcache.preload discover always-needed symbols -class_exists(LegacyEventDispatcherProxy::class); class_exists(ControllerArgumentsEvent::class); class_exists(ControllerEvent::class); class_exists(ExceptionEvent::class); @@ -59,20 +57,16 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null, ArgumentResolverInterface $argumentResolver = null) { - $this->dispatcher = LegacyEventDispatcherProxy::decorate($dispatcher); + $this->dispatcher = $dispatcher; $this->resolver = $resolver; $this->requestStack = $requestStack ?? new RequestStack(); - $this->argumentResolver = $argumentResolver; - - if (null === $this->argumentResolver) { - $this->argumentResolver = new ArgumentResolver(); - } + $this->argumentResolver = $argumentResolver ?? new ArgumentResolver(); } /** * {@inheritdoc} */ - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) + public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true) { $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); @@ -108,16 +102,16 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface */ public function terminateWithException(\Throwable $exception, Request $request = null) { - if (!$request = $request ?: $this->requestStack->getMasterRequest()) { + if (!$request = $request ?: $this->requestStack->getMainRequest()) { throw $exception; } - if ($pop = $request !== $this->requestStack->getMasterRequest()) { + if ($pop = $request !== $this->requestStack->getMainRequest()) { $this->requestStack->push($request); } try { - $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST); + $response = $this->handleThrowable($exception, $request, self::MAIN_REQUEST); } finally { if ($pop) { $this->requestStack->pop(); @@ -138,7 +132,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface * @throws \LogicException If one of the listener does not behave as expected * @throws NotFoundHttpException When controller cannot be found */ - private function handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response + private function handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response { // request $event = new RequestEvent($this, $request, $type); diff --git a/vendor/symfony/http-kernel/HttpKernelBrowser.php b/vendor/symfony/http-kernel/HttpKernelBrowser.php index e41363475..643134f1b 100644 --- a/vendor/symfony/http-kernel/HttpKernelBrowser.php +++ b/vendor/symfony/http-kernel/HttpKernelBrowser.php @@ -11,17 +11,198 @@ namespace Symfony\Component\HttpKernel; +use Symfony\Component\BrowserKit\AbstractBrowser; +use Symfony\Component\BrowserKit\CookieJar; +use Symfony\Component\BrowserKit\History; +use Symfony\Component\BrowserKit\Request as DomRequest; +use Symfony\Component\BrowserKit\Response as DomResponse; +use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** - * Client simulates a browser and makes requests to an HttpKernel instance. + * Simulates a browser and makes requests to an HttpKernel instance. * * @author Fabien Potencier <fabien@symfony.com> * - * @method Request getRequest() A Request instance - * @method Response getResponse() A Response instance + * @method Request getRequest() + * @method Response getResponse() */ -class HttpKernelBrowser extends Client +class HttpKernelBrowser extends AbstractBrowser { + protected $kernel; + private $catchExceptions = true; + + /** + * @param array $server The server parameters (equivalent of $_SERVER) + */ + public function __construct(HttpKernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null) + { + // These class properties must be set before calling the parent constructor, as it may depend on it. + $this->kernel = $kernel; + $this->followRedirects = false; + + parent::__construct($server, $history, $cookieJar); + } + + /** + * Sets whether to catch exceptions when the kernel is handling a request. + */ + public function catchExceptions(bool $catchExceptions) + { + $this->catchExceptions = $catchExceptions; + } + + /** + * {@inheritdoc} + * + * @param Request $request + * + * @return Response + */ + protected function doRequest(object $request) + { + $response = $this->kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, $this->catchExceptions); + + if ($this->kernel instanceof TerminableInterface) { + $this->kernel->terminate($request, $response); + } + + return $response; + } + + /** + * {@inheritdoc} + * + * @param Request $request + * + * @return string + */ + protected function getScript(object $request) + { + $kernel = var_export(serialize($this->kernel), true); + $request = var_export(serialize($request), true); + + $errorReporting = error_reporting(); + + $requires = ''; + foreach (get_declared_classes() as $class) { + if (0 === strpos($class, 'ComposerAutoloaderInit')) { + $r = new \ReflectionClass($class); + $file = \dirname($r->getFileName(), 2).'/autoload.php'; + if (file_exists($file)) { + $requires .= 'require_once '.var_export($file, true).";\n"; + } + } + } + + if (!$requires) { + throw new \RuntimeException('Composer autoloader not found.'); + } + + $code = <<<EOF +<?php + +error_reporting($errorReporting); + +$requires + +\$kernel = unserialize($kernel); +\$request = unserialize($request); +EOF; + + return $code.$this->getHandleScript(); + } + + protected function getHandleScript() + { + return <<<'EOF' +$response = $kernel->handle($request); + +if ($kernel instanceof Symfony\Component\HttpKernel\TerminableInterface) { + $kernel->terminate($request, $response); +} + +echo serialize($response); +EOF; + } + + /** + * {@inheritdoc} + * + * @return Request + */ + protected function filterRequest(DomRequest $request) + { + $httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $server = $request->getServer(), $request->getContent()); + if (!isset($server['HTTP_ACCEPT'])) { + $httpRequest->headers->remove('Accept'); + } + + foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) { + $httpRequest->files->set($key, $value); + } + + return $httpRequest; + } + + /** + * Filters an array of files. + * + * This method created test instances of UploadedFile so that the move() + * method can be called on those instances. + * + * If the size of a file is greater than the allowed size (from php.ini) then + * an invalid UploadedFile is returned with an error set to UPLOAD_ERR_INI_SIZE. + * + * @see UploadedFile + * + * @return array + */ + protected function filterFiles(array $files) + { + $filtered = []; + foreach ($files as $key => $value) { + if (\is_array($value)) { + $filtered[$key] = $this->filterFiles($value); + } elseif ($value instanceof UploadedFile) { + if ($value->isValid() && $value->getSize() > UploadedFile::getMaxFilesize()) { + $filtered[$key] = new UploadedFile( + '', + $value->getClientOriginalName(), + $value->getClientMimeType(), + \UPLOAD_ERR_INI_SIZE, + true + ); + } else { + $filtered[$key] = new UploadedFile( + $value->getPathname(), + $value->getClientOriginalName(), + $value->getClientMimeType(), + $value->getError(), + true + ); + } + } + } + + return $filtered; + } + + /** + * {@inheritdoc} + * + * @param Response $response + * + * @return DomResponse + */ + protected function filterResponse(object $response) + { + // this is needed to support StreamedResponse + ob_start(); + $response->sendContent(); + $content = ob_get_clean(); + + return new DomResponse($content, $response->getStatusCode(), $response->headers->all()); + } } diff --git a/vendor/symfony/http-kernel/HttpKernelInterface.php b/vendor/symfony/http-kernel/HttpKernelInterface.php index 85fedbbe2..0449240e7 100644 --- a/vendor/symfony/http-kernel/HttpKernelInterface.php +++ b/vendor/symfony/http-kernel/HttpKernelInterface.php @@ -21,9 +21,15 @@ use Symfony\Component\HttpFoundation\Response; */ interface HttpKernelInterface { - public const MASTER_REQUEST = 1; + public const MAIN_REQUEST = 1; public const SUB_REQUEST = 2; + /** + * @deprecated since symfony/http-kernel 5.3, use MAIN_REQUEST instead. + * To ease the migration, this constant won't be removed until Symfony 7.0. + */ + public const MASTER_REQUEST = self::MAIN_REQUEST; + /** * Handles a Request to convert it to a Response. * @@ -31,12 +37,12 @@ interface HttpKernelInterface * and do its best to convert them to a Response instance. * * @param int $type The type of the request - * (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST) + * (one of HttpKernelInterface::MAIN_REQUEST or HttpKernelInterface::SUB_REQUEST) * @param bool $catch Whether to catch exceptions or not * - * @return Response A Response instance + * @return Response * * @throws \Exception When an Exception occurs during processing */ - public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true); + public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true); } diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php index be36bc634..62af9c6ac 100644 --- a/vendor/symfony/http-kernel/Kernel.php +++ b/vendor/symfony/http-kernel/Kernel.php @@ -13,6 +13,7 @@ namespace Symfony\Component\HttpKernel; use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator; use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper; +use Symfony\Component\Config\Builder\ConfigBuilderGenerator; use Symfony\Component\Config\ConfigCache; use Symfony\Component\Config\Loader\DelegatingLoader; use Symfony\Component\Config\Loader\LoaderResolver; @@ -22,6 +23,8 @@ use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Dumper\PhpDumper; +use Symfony\Component\DependencyInjection\Dumper\Preloader; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\DependencyInjection\Loader\ClosureLoader; use Symfony\Component\DependencyInjection\Loader\DirectoryLoader; use Symfony\Component\DependencyInjection\Loader\GlobFileLoader; @@ -34,10 +37,14 @@ use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Bundle\BundleInterface; +use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; use Symfony\Component\HttpKernel\Config\FileLocator; use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass; use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass; +// Help opcache.preload discover always-needed symbols +class_exists(ConfigCache::class); + /** * The Kernel is the heart of the Symfony system. * @@ -51,22 +58,14 @@ use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfiguration abstract class Kernel implements KernelInterface, RebootableInterface, TerminableInterface { /** - * @var BundleInterface[] + * @var array<string, BundleInterface> */ protected $bundles = []; protected $container; - /** - * @deprecated since Symfony 4.2 - */ - protected $rootDir; protected $environment; protected $debug; protected $booted = false; - /** - * @deprecated since Symfony 4.2 - */ - protected $name; protected $startTime; private $projectDir; @@ -74,24 +73,28 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; + /** + * @var array<string, bool> + */ private static $freshCache = []; - public const VERSION = '4.4.49'; - public const VERSION_ID = 40449; - public const MAJOR_VERSION = 4; + public const VERSION = '5.4.18'; + public const VERSION_ID = 50418; + public const MAJOR_VERSION = 5; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 49; + public const RELEASE_VERSION = 18; public const EXTRA_VERSION = ''; - public const END_OF_MAINTENANCE = '11/2022'; - public const END_OF_LIFE = '11/2023'; + public const END_OF_MAINTENANCE = '11/2024'; + public const END_OF_LIFE = '11/2025'; public function __construct(string $environment, bool $debug) { - $this->environment = $environment; + if (!$this->environment = $environment) { + throw new \InvalidArgumentException(sprintf('Invalid environment provided to "%s": the environment cannot be empty.', get_debug_type($this))); + } + $this->debug = $debug; - $this->rootDir = $this->getRootDir(false); - $this->name = $this->getName(false); } public function __clone() @@ -120,20 +123,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl return; } - if ($this->debug) { - $this->startTime = microtime(true); - } - if ($this->debug && !isset($_ENV['SHELL_VERBOSITY']) && !isset($_SERVER['SHELL_VERBOSITY'])) { - putenv('SHELL_VERBOSITY=3'); - $_ENV['SHELL_VERBOSITY'] = 3; - $_SERVER['SHELL_VERBOSITY'] = 3; - } - // init bundles - $this->initializeBundles(); - - // init container - $this->initializeContainer(); + if (null === $this->container) { + $this->preBoot(); + } foreach ($this->getBundles() as $bundle) { $bundle->setContainer($this->container); @@ -146,7 +139,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * {@inheritdoc} */ - public function reboot($warmupDir) + public function reboot(?string $warmupDir) { $this->shutdown(); $this->warmupDir = $warmupDir; @@ -191,8 +184,16 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * {@inheritdoc} */ - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) + public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true) { + if (!$this->booted) { + $container = $this->container ?? $this->preBoot(); + + if ($container->has('http_cache')) { + return $container->get('http_cache')->handle($request, $type, $catch); + } + } + $this->boot(); ++$this->requestStackSize; $this->resetServices = true; @@ -225,7 +226,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * {@inheritdoc} */ - public function getBundle($name) + public function getBundle(string $name) { if (!isset($this->bundles[$name])) { throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this))); @@ -237,20 +238,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * {@inheritdoc} */ - public function locateResource($name/* , $dir = null, $first = true, $triggerDeprecation = true */) + public function locateResource(string $name) { - if (2 <= \func_num_args()) { - $dir = func_get_arg(1); - $first = 3 <= \func_num_args() ? func_get_arg(2) : true; - - if (4 !== \func_num_args() || func_get_arg(3)) { - @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED); - } - } else { - $dir = null; - $first = true; - } - if ('@' !== $name[0]) { throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name)); } @@ -265,53 +254,14 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl [$bundleName, $path] = explode('/', $bundleName, 2); } - $isResource = str_starts_with($path, 'Resources') && null !== $dir; - $overridePath = substr($path, 9); $bundle = $this->getBundle($bundleName); - $files = []; - - if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) { - $files[] = $file; - - // see https://symfony.com/doc/current/bundles/override.html on how to overwrite parts of a bundle - @trigger_error(sprintf('Overwriting the resource "%s" with "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $name, $file), \E_USER_DEPRECATED); - } - if (file_exists($file = $bundle->getPath().'/'.$path)) { - if ($first && !$isResource) { - return $file; - } - $files[] = $file; - } - - if (\count($files) > 0) { - return $first && $isResource ? $files[0] : $files; + return $file; } throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name)); } - /** - * {@inheritdoc} - * - * @deprecated since Symfony 4.2 - */ - public function getName(/* $triggerDeprecation = true */) - { - if (0 === \func_num_args() || func_get_arg(0)) { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - - if (null === $this->name) { - $this->name = preg_replace('/[^a-zA-Z0-9_]+/', '', basename($this->rootDir)); - if (ctype_digit($this->name[0])) { - $this->name = '_'.$this->name; - } - } - - return $this->name; - } - /** * {@inheritdoc} */ @@ -328,41 +278,22 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl return $this->debug; } - /** - * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use getProjectDir() instead - */ - public function getRootDir(/* $triggerDeprecation = true */) - { - if (0 === \func_num_args() || func_get_arg(0)) { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), \E_USER_DEPRECATED); - } - - if (null === $this->rootDir) { - $r = new \ReflectionObject($this); - $this->rootDir = \dirname($r->getFileName()); - } - - return $this->rootDir; - } - /** * Gets the application root dir (path of the project's composer file). * - * @return string The project root dir + * @return string */ public function getProjectDir() { if (null === $this->projectDir) { $r = new \ReflectionObject($this); - if (!file_exists($dir = $r->getFileName())) { + if (!is_file($dir = $r->getFileName())) { throw new \LogicException(sprintf('Cannot auto-detect project dir for kernel of class "%s".', $r->name)); } $dir = $rootDir = \dirname($dir); - while (!file_exists($dir.'/composer.json')) { + while (!is_file($dir.'/composer.json')) { if ($dir === \dirname($dir)) { return $this->projectDir = $rootDir; } @@ -380,7 +311,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl public function getContainer() { if (!$this->container) { - @trigger_error('Getting the container from a non-booted kernel is deprecated since Symfony 4.4.', \E_USER_DEPRECATED); + throw new \LogicException('Cannot retrieve the container from a non-booted kernel.'); } return $this->container; @@ -391,7 +322,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ public function setAnnotatedClassCache(array $annotatedClasses) { - file_put_contents(($this->warmupDir ?: $this->getCacheDir()).'/annotations.map', sprintf('<?php return %s;', var_export($annotatedClasses, true))); + file_put_contents(($this->warmupDir ?: $this->getBuildDir()).'/annotations.map', sprintf('<?php return %s;', var_export($annotatedClasses, true))); } /** @@ -410,6 +341,15 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl return $this->getProjectDir().'/var/cache/'.$this->environment; } + /** + * {@inheritdoc} + */ + public function getBuildDir(): string + { + // Returns $this->getCacheDir() for backward compatibility + return $this->getCacheDir(); + } + /** * {@inheritdoc} */ @@ -466,13 +406,13 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * * @throws \InvalidArgumentException If the generated classname is invalid * - * @return string The container class + * @return string */ protected function getContainerClass() { $class = static::class; $class = str_contains($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class; - $class = $this->name.str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container'; + $class = str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container'; if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) { throw new \InvalidArgumentException(sprintf('The environment "%s" contains invalid characters, it can only contain characters allowed in PHP class names.', $this->environment)); @@ -496,21 +436,21 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * Initializes the service container. * - * The cached version of the service container is used when fresh, otherwise the + * The built version of the service container is used when fresh, otherwise the * container is built. */ protected function initializeContainer() { $class = $this->getContainerClass(); - $cacheDir = $this->warmupDir ?: $this->getCacheDir(); - $cache = new ConfigCache($cacheDir.'/'.$class.'.php', $this->debug); + $buildDir = $this->warmupDir ?: $this->getBuildDir(); + $cache = new ConfigCache($buildDir.'/'.$class.'.php', $this->debug); $cachePath = $cache->getPath(); // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors $errorLevel = error_reporting(\E_ALL ^ \E_WARNING); try { - if (file_exists($cachePath) && \is_object($this->container = include $cachePath) + if (is_file($cachePath) && \is_object($this->container = include $cachePath) && (!$this->debug || (self::$freshCache[$cachePath] ?? $cache->isFresh())) ) { self::$freshCache[$cachePath] = true; @@ -525,7 +465,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl $oldContainer = \is_object($this->container) ? new \ReflectionClass($this->container) : $this->container = null; try { - is_dir($cacheDir) ?: mkdir($cacheDir, 0777, true); + is_dir($buildDir) ?: mkdir($buildDir, 0777, true); if ($lock = fopen($cachePath.'.lock', 'w')) { if (!flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock) && !flock($lock, $wouldBlock ? \LOCK_SH : \LOCK_EX)) { @@ -567,6 +507,18 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl break; } } + for ($i = 0; isset($backtrace[$i]); ++$i) { + if (!isset($backtrace[$i]['file'], $backtrace[$i]['line'], $backtrace[$i]['function'])) { + continue; + } + if (!isset($backtrace[$i]['class']) && 'trigger_deprecation' === $backtrace[$i]['function']) { + $file = $backtrace[$i]['file']; + $line = $backtrace[$i]['line']; + $backtrace = \array_slice($backtrace, 1 + $i); + break; + } + } + // Remove frames added by DebugClassLoader. for ($i = \count($backtrace) - 2; 0 < $i; --$i) { if (\in_array($backtrace[$i]['class'] ?? null, [DebugClassLoader::class, LegacyDebugClassLoader::class], true)) { @@ -596,8 +548,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl if ($collectDeprecations) { restore_error_handler(); - @file_put_contents($cacheDir.'/'.$class.'Deprecations.log', serialize(array_values($collectedLogs))); - @file_put_contents($cacheDir.'/'.$class.'Compiler.log', null !== $container ? implode("\n", $container->getCompiler()->getLog()) : ''); + @file_put_contents($buildDir.'/'.$class.'Deprecations.log', serialize(array_values($collectedLogs))); + @file_put_contents($buildDir.'/'.$class.'Compiler.log', null !== $container ? implode("\n", $container->getCompiler()->getLog()) : ''); } } @@ -627,15 +579,21 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl touch($oldContainerDir.'.legacy'); } + $preload = $this instanceof WarmableInterface ? (array) $this->warmUp($this->container->getParameter('kernel.cache_dir')) : []; + if ($this->container->has('cache_warmer')) { - $this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir')); + $preload = array_merge($preload, (array) $this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'))); + } + + if ($preload && method_exists(Preloader::class, 'append') && file_exists($preloadFile = $buildDir.'/'.$class.'.preload.php')) { + Preloader::append($preloadFile, $preload); } } /** * Returns the kernel parameters. * - * @return array An array of kernel parameters + * @return array */ protected function getKernelParameters() { @@ -651,18 +609,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl } return [ - /* - * @deprecated since Symfony 4.2, use kernel.project_dir instead - */ - 'kernel.root_dir' => realpath($this->rootDir) ?: $this->rootDir, 'kernel.project_dir' => realpath($this->getProjectDir()) ?: $this->getProjectDir(), 'kernel.environment' => $this->environment, + 'kernel.runtime_environment' => '%env(default:kernel.environment:APP_RUNTIME_ENV)%', 'kernel.debug' => $this->debug, - /* - * @deprecated since Symfony 4.2 - */ - 'kernel.name' => $this->name, - 'kernel.cache_dir' => realpath($cacheDir = $this->warmupDir ?: $this->getCacheDir()) ?: $cacheDir, + 'kernel.build_dir' => realpath($buildDir = $this->warmupDir ?: $this->getBuildDir()) ?: $buildDir, + 'kernel.cache_dir' => realpath($cacheDir = ($this->getCacheDir() === $this->getBuildDir() ? ($this->warmupDir ?: $this->getCacheDir()) : $this->getCacheDir())) ?: $cacheDir, 'kernel.logs_dir' => realpath($this->getLogDir()) ?: $this->getLogDir(), 'kernel.bundles' => $bundles, 'kernel.bundles_metadata' => $bundlesMetadata, @@ -674,13 +626,13 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * Builds the service container. * - * @return ContainerBuilder The compiled service container + * @return ContainerBuilder * * @throws \RuntimeException */ protected function buildContainer() { - foreach (['cache' => $this->warmupDir ?: $this->getCacheDir(), 'logs' => $this->getLogDir()] as $name => $dir) { + foreach (['cache' => $this->getCacheDir(), 'build' => $this->warmupDir ?: $this->getBuildDir(), 'logs' => $this->getLogDir()] as $name => $dir) { if (!is_dir($dir)) { if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) { throw new \RuntimeException(sprintf('Unable to create the "%s" directory (%s).', $name, $dir)); @@ -695,6 +647,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl $this->prepareContainer($container); if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) { + trigger_deprecation('symfony/http-kernel', '5.3', 'Returning a ContainerBuilder from "%s::registerContainerConfiguration()" is deprecated.', get_debug_type($this)); $container->merge($cont); } @@ -743,6 +696,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl $container = new ContainerBuilder(); $container->getParameterBag()->add($this->getKernelParameters()); + if ($this instanceof ExtensionInterface) { + $container->registerExtension($this); + } if ($this instanceof CompilerPassInterface) { $container->addCompilerPass($this, PassConfig::TYPE_BEFORE_OPTIMIZATION, -10000); } @@ -759,7 +715,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl * @param string $class The name of the class to generate * @param string $baseClass The name of the container's base class */ - protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass) + protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, string $class, string $baseClass) { // cache the container $dumper = new PhpDumper($container); @@ -787,7 +743,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl @chmod($dir.$file, 0666 & ~umask()); } $legacyFile = \dirname($dir.key($content)).'.legacy'; - if (file_exists($legacyFile)) { + if (is_file($legacyFile)) { @unlink($legacyFile); } @@ -797,35 +753,61 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl /** * Returns a loader for the container. * - * @return DelegatingLoader The loader + * @return DelegatingLoader */ protected function getContainerLoader(ContainerInterface $container) { + $env = $this->getEnvironment(); $locator = new FileLocator($this); $resolver = new LoaderResolver([ - new XmlFileLoader($container, $locator), - new YamlFileLoader($container, $locator), - new IniFileLoader($container, $locator), - new PhpFileLoader($container, $locator), - new GlobFileLoader($container, $locator), - new DirectoryLoader($container, $locator), - new ClosureLoader($container), + new XmlFileLoader($container, $locator, $env), + new YamlFileLoader($container, $locator, $env), + new IniFileLoader($container, $locator, $env), + new PhpFileLoader($container, $locator, $env, class_exists(ConfigBuilderGenerator::class) ? new ConfigBuilderGenerator($this->getBuildDir()) : null), + new GlobFileLoader($container, $locator, $env), + new DirectoryLoader($container, $locator, $env), + new ClosureLoader($container, $env), ]); return new DelegatingLoader($resolver); } + private function preBoot(): ContainerInterface + { + if ($this->debug) { + $this->startTime = microtime(true); + } + if ($this->debug && !isset($_ENV['SHELL_VERBOSITY']) && !isset($_SERVER['SHELL_VERBOSITY'])) { + putenv('SHELL_VERBOSITY=3'); + $_ENV['SHELL_VERBOSITY'] = 3; + $_SERVER['SHELL_VERBOSITY'] = 3; + } + + $this->initializeBundles(); + $this->initializeContainer(); + + $container = $this->container; + + if ($container->hasParameter('kernel.trusted_hosts') && $trustedHosts = $container->getParameter('kernel.trusted_hosts')) { + Request::setTrustedHosts($trustedHosts); + } + + if ($container->hasParameter('kernel.trusted_proxies') && $container->hasParameter('kernel.trusted_headers') && $trustedProxies = $container->getParameter('kernel.trusted_proxies')) { + Request::setTrustedProxies(\is_array($trustedProxies) ? $trustedProxies : array_map('trim', explode(',', $trustedProxies)), $container->getParameter('kernel.trusted_headers')); + } + + return $container; + } + /** * Removes comments from a PHP source string. * * We don't use the PHP php_strip_whitespace() function * as we want the content to be readable and well-formatted. * - * @param string $source A PHP string - * - * @return string The PHP string with the comments removed + * @return string */ - public static function stripComments($source) + public static function stripComments(string $source) { if (!\function_exists('token_get_all')) { return $source; @@ -880,39 +862,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl return $output; } - /** - * @deprecated since Symfony 4.3 - */ - public function serialize() - { - @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED); - - return serialize([$this->environment, $this->debug]); - } - - /** - * @deprecated since Symfony 4.3 - */ - public function unserialize($data) - { - @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED); - [$environment, $debug] = unserialize($data, ['allowed_classes' => false]); - - $this->__construct($environment, $debug); - } - /** * @return array */ public function __sleep() { - if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) { - @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED); - $this->serialized = $this->serialize(); - - return ['serialized']; - } - return ['environment', 'debug']; } @@ -922,13 +876,6 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); } - if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) { - @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED); - $this->unserialize($this->serialized); - unset($this->serialized); - - return; - } $this->__construct($this->environment, $this->debug); } } diff --git a/vendor/symfony/http-kernel/KernelEvents.php b/vendor/symfony/http-kernel/KernelEvents.php index b16141c60..3d47f6080 100644 --- a/vendor/symfony/http-kernel/KernelEvents.php +++ b/vendor/symfony/http-kernel/KernelEvents.php @@ -11,6 +11,15 @@ namespace Symfony\Component\HttpKernel; +use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Event\TerminateEvent; +use Symfony\Component\HttpKernel\Event\ViewEvent; + /** * Contains all events thrown in the HttpKernel component. * @@ -39,17 +48,6 @@ final class KernelEvents */ public const EXCEPTION = 'kernel.exception'; - /** - * The VIEW event occurs when the return value of a controller - * is not a Response instance. - * - * This event allows you to create a response for the return value of the - * controller. - * - * @Event("Symfony\Component\HttpKernel\Event\ViewEvent") - */ - public const VIEW = 'kernel.view'; - /** * The CONTROLLER event occurs once a controller was found for * handling a request. @@ -71,6 +69,17 @@ final class KernelEvents */ public const CONTROLLER_ARGUMENTS = 'kernel.controller_arguments'; + /** + * The VIEW event occurs when the return value of a controller + * is not a Response instance. + * + * This event allows you to create a response for the return value of the + * controller. + * + * @Event("Symfony\Component\HttpKernel\Event\ViewEvent") + */ + public const VIEW = 'kernel.view'; + /** * The RESPONSE event occurs once a response was created for * replying to a request. @@ -82,6 +91,16 @@ final class KernelEvents */ public const RESPONSE = 'kernel.response'; + /** + * The FINISH_REQUEST event occurs when a response was generated for a request. + * + * This event allows you to reset the global and environmental state of + * the application, when it was changed during the request. + * + * @Event("Symfony\Component\HttpKernel\Event\FinishRequestEvent") + */ + public const FINISH_REQUEST = 'kernel.finish_request'; + /** * The TERMINATE event occurs once a response was sent. * @@ -92,12 +111,18 @@ final class KernelEvents public const TERMINATE = 'kernel.terminate'; /** - * The FINISH_REQUEST event occurs when a response was generated for a request. + * Event aliases. * - * This event allows you to reset the global and environmental state of - * the application, when it was changed during the request. - * - * @Event("Symfony\Component\HttpKernel\Event\FinishRequestEvent") + * These aliases can be consumed by RegisterListenersPass. */ - public const FINISH_REQUEST = 'kernel.finish_request'; + public const ALIASES = [ + ControllerArgumentsEvent::class => self::CONTROLLER_ARGUMENTS, + ControllerEvent::class => self::CONTROLLER, + ResponseEvent::class => self::RESPONSE, + FinishRequestEvent::class => self::FINISH_REQUEST, + RequestEvent::class => self::REQUEST, + ViewEvent::class => self::VIEW, + ExceptionEvent::class => self::EXCEPTION, + TerminateEvent::class => self::TERMINATE, + ]; } diff --git a/vendor/symfony/http-kernel/KernelInterface.php b/vendor/symfony/http-kernel/KernelInterface.php index d18e3b22f..41135a6d8 100644 --- a/vendor/symfony/http-kernel/KernelInterface.php +++ b/vendor/symfony/http-kernel/KernelInterface.php @@ -20,16 +20,18 @@ use Symfony\Component\HttpKernel\Bundle\BundleInterface; * * It manages an environment made of application kernel and bundles. * - * @author Fabien Potencier <fabien@symfony.com> + * @method string getBuildDir() Returns the build directory - not implementing it is deprecated since Symfony 5.2. + * This directory should be used to store build artifacts, and can be read-only at runtime. + * Caches written at runtime should be stored in the "cache directory" ({@see KernelInterface::getCacheDir()}). * - * @method string getProjectDir() Gets the project dir (path of the project's composer file) - not defining it is deprecated since Symfony 4.2 + * @author Fabien Potencier <fabien@symfony.com> */ interface KernelInterface extends HttpKernelInterface { /** * Returns an array of bundles to register. * - * @return iterable|BundleInterface[] An iterable of bundle instances + * @return iterable<mixed, BundleInterface> */ public function registerBundles(); @@ -53,20 +55,18 @@ interface KernelInterface extends HttpKernelInterface /** * Gets the registered bundle instances. * - * @return BundleInterface[] An array of registered bundle instances + * @return array<string, BundleInterface> */ public function getBundles(); /** * Returns a bundle. * - * @param string $name Bundle name - * - * @return BundleInterface A BundleInterface instance + * @return BundleInterface * * @throws \InvalidArgumentException when the bundle is not enabled */ - public function getBundle($name); + public function getBundle(string $name); /** * Returns the file path for a given bundle resource. @@ -80,46 +80,33 @@ interface KernelInterface extends HttpKernelInterface * where BundleName is the name of the bundle * and the remaining part is the relative path in the bundle. * - * @param string $name A resource name to locate - * - * @return string|array The absolute path of the resource or an array if $first is false (array return value is deprecated) + * @return string * * @throws \InvalidArgumentException if the file cannot be found or the name is not valid * @throws \RuntimeException if the name contains invalid/unsafe characters */ - public function locateResource($name/* , $dir = null, $first = true */); - - /** - * Gets the name of the kernel. - * - * @return string The kernel name - * - * @deprecated since Symfony 4.2 - */ - public function getName(); + public function locateResource(string $name); /** * Gets the environment. * - * @return string The current environment + * @return string */ public function getEnvironment(); /** * Checks if debug mode is enabled. * - * @return bool true if debug mode is enabled, false otherwise + * @return bool */ public function isDebug(); /** - * Gets the application root dir (path of the project's Kernel class). + * Gets the project dir (path of the project's composer file). * - * @return string The Kernel root dir - * - * @deprecated since Symfony 4.2 + * @return string */ - public function getRootDir(); + public function getProjectDir(); /** * Gets the current container. @@ -131,28 +118,32 @@ interface KernelInterface extends HttpKernelInterface /** * Gets the request start time (not available if debug is disabled). * - * @return float The request start timestamp + * @return float */ public function getStartTime(); /** * Gets the cache directory. * - * @return string The cache directory + * Since Symfony 5.2, the cache directory should be used for caches that are written at runtime. + * For caches and artifacts that can be warmed at compile-time and deployed as read-only, + * use the new "build directory" returned by the {@see getBuildDir()} method. + * + * @return string */ public function getCacheDir(); /** * Gets the log directory. * - * @return string The log directory + * @return string */ public function getLogDir(); /** * Gets the charset of the application. * - * @return string The charset + * @return string */ public function getCharset(); } diff --git a/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php b/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php index 2a27992e2..19ff0db18 100644 --- a/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php +++ b/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php @@ -27,20 +27,16 @@ interface DebugLoggerInterface * timestamp, message, priority, and priorityName. * It can also have an optional context key containing an array. * - * @param Request|null $request The request to get logs for - * - * @return array An array of logs + * @return array */ - public function getLogs(/* Request $request = null */); + public function getLogs(Request $request = null); /** * Returns the number of errors. * - * @param Request|null $request The request to count logs for - * - * @return int The number of errors + * @return int */ - public function countErrors(/* Request $request = null */); + public function countErrors(Request $request = null); /** * Removes all log records. diff --git a/vendor/symfony/http-kernel/Log/Logger.php b/vendor/symfony/http-kernel/Log/Logger.php index 1238517f6..c2a45bb95 100644 --- a/vendor/symfony/http-kernel/Log/Logger.php +++ b/vendor/symfony/http-kernel/Log/Logger.php @@ -35,8 +35,13 @@ class Logger extends AbstractLogger private $minLevelIndex; private $formatter; + + /** @var resource|null */ private $handle; + /** + * @param string|resource|null $output + */ public function __construct(string $minLevel = null, $output = null, callable $formatter = null) { if (null === $minLevel) { diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php index aa494691d..0b5a780ab 100644 --- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php +++ b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php @@ -47,7 +47,7 @@ class FileProfilerStorage implements ProfilerStorageInterface /** * {@inheritdoc} */ - public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null): array + public function find(?string $ip, ?string $url, ?int $limit, ?string $method, int $start = null, int $end = null, string $statusCode = null): array { $file = $this->getIndexFilename(); @@ -113,7 +113,7 @@ class FileProfilerStorage implements ProfilerStorageInterface /** * {@inheritdoc} */ - public function read($token): ?Profile + public function read(string $token): ?Profile { return $this->doRead($token); } @@ -191,11 +191,9 @@ class FileProfilerStorage implements ProfilerStorageInterface /** * Gets filename to store data, associated to the token. * - * @param string $token - * - * @return string The profile filename + * @return string */ - protected function getFilename($token) + protected function getFilename(string $token) { // Uses 4 last characters, because first are mostly the same. $folderA = substr($token, -2, 2); @@ -207,7 +205,7 @@ class FileProfilerStorage implements ProfilerStorageInterface /** * Gets the index filename. * - * @return string The index filename + * @return string */ protected function getIndexFilename() { @@ -221,7 +219,7 @@ class FileProfilerStorage implements ProfilerStorageInterface * * @param resource $file The file resource, with the pointer placed at the end of the line to read * - * @return mixed A string representing the line or null if beginning of file is reached + * @return mixed */ protected function readLineFromFile($file) { @@ -261,7 +259,7 @@ class FileProfilerStorage implements ProfilerStorageInterface return '' === $line ? null : $line; } - protected function createProfileFromData($token, $data, $parent = null) + protected function createProfileFromData(string $token, array $data, Profile $parent = null) { $profile = new Profile($token); $profile->setIp($data['ip']); diff --git a/vendor/symfony/http-kernel/Profiler/Profile.php b/vendor/symfony/http-kernel/Profiler/Profile.php index 88e82b4e2..a622403e1 100644 --- a/vendor/symfony/http-kernel/Profiler/Profile.php +++ b/vendor/symfony/http-kernel/Profiler/Profile.php @@ -48,12 +48,7 @@ class Profile $this->token = $token; } - /** - * Sets the token. - * - * @param string $token The token - */ - public function setToken($token) + public function setToken(string $token) { $this->token = $token; } @@ -61,7 +56,7 @@ class Profile /** * Gets the token. * - * @return string The token + * @return string */ public function getToken() { @@ -79,7 +74,7 @@ class Profile /** * Returns the parent profile. * - * @return self + * @return self|null */ public function getParent() { @@ -89,7 +84,7 @@ class Profile /** * Returns the parent token. * - * @return string|null The parent token + * @return string|null */ public function getParentToken() { @@ -99,19 +94,14 @@ class Profile /** * Returns the IP. * - * @return string|null The IP + * @return string|null */ public function getIp() { return $this->ip; } - /** - * Sets the IP. - * - * @param string $ip - */ - public function setIp($ip) + public function setIp(?string $ip) { $this->ip = $ip; } @@ -119,14 +109,14 @@ class Profile /** * Returns the request method. * - * @return string|null The request method + * @return string|null */ public function getMethod() { return $this->method; } - public function setMethod($method) + public function setMethod(string $method) { $this->method = $method; } @@ -134,43 +124,32 @@ class Profile /** * Returns the URL. * - * @return string|null The URL + * @return string|null */ public function getUrl() { return $this->url; } - /** - * @param string $url - */ - public function setUrl($url) + public function setUrl(?string $url) { $this->url = $url; } /** - * Returns the time. - * - * @return int The time + * @return int */ public function getTime() { return $this->time ?? 0; } - /** - * @param int $time The time - */ - public function setTime($time) + public function setTime(int $time) { $this->time = $time; } - /** - * @param int $statusCode - */ - public function setStatusCode($statusCode) + public function setStatusCode(int $statusCode) { $this->statusCode = $statusCode; } @@ -229,13 +208,11 @@ class Profile /** * Gets a Collector by name. * - * @param string $name A collector name - * - * @return DataCollectorInterface A DataCollectorInterface instance + * @return DataCollectorInterface * * @throws \InvalidArgumentException if the collector does not exist */ - public function getCollector($name) + public function getCollector(string $name) { if (!isset($this->collectors[$name])) { throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name)); @@ -276,13 +253,9 @@ class Profile } /** - * Returns true if a Collector for the given name exists. - * - * @param string $name A collector name - * * @return bool */ - public function hasCollector($name) + public function hasCollector(string $name) { return isset($this->collectors[$name]); } diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php index 32bde2bbc..25e126f73 100644 --- a/vendor/symfony/http-kernel/Profiler/Profiler.php +++ b/vendor/symfony/http-kernel/Profiler/Profiler.php @@ -12,7 +12,6 @@ namespace Symfony\Component\HttpKernel\Profiler; use Psr\Log\LoggerInterface; -use Symfony\Component\Debug\Exception\FatalThrowableError; use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -64,7 +63,7 @@ class Profiler implements ResetInterface /** * Loads the Profile for the given Response. * - * @return Profile|null A Profile instance + * @return Profile|null */ public function loadProfileFromResponse(Response $response) { @@ -78,11 +77,9 @@ class Profiler implements ResetInterface /** * Loads the Profile for the given token. * - * @param string $token A token - * - * @return Profile|null A Profile instance + * @return Profile|null */ - public function loadProfile($token) + public function loadProfile(string $token) { return $this->storage->read($token); } @@ -119,19 +116,15 @@ class Profiler implements ResetInterface /** * Finds profiler tokens for the given criteria. * - * @param string $ip The IP - * @param string $url The URL - * @param string $limit The maximum number of tokens to return - * @param string $method The request method - * @param string $start The start date to search from - * @param string $end The end date to search to - * @param string $statusCode The request status code + * @param string|null $limit The maximum number of tokens to return + * @param string|null $start The start date to search from + * @param string|null $end The end date to search to * - * @return array An array of tokens + * @return array * * @see https://php.net/datetime.formats for the supported date/time formats */ - public function find($ip, $url, $limit, $method, $start, $end, $statusCode = null) + public function find(?string $ip, ?string $url, ?string $limit, ?string $method, ?string $start, ?string $end, string $statusCode = null) { return $this->storage->find($ip, $url, $limit, $method, $this->getTimestamp($start), $this->getTimestamp($end), $statusCode); } @@ -139,14 +132,10 @@ class Profiler implements ResetInterface /** * Collects data for the given Response. * - * @param \Throwable|null $exception - * - * @return Profile|null A Profile instance or null if the profiler is disabled + * @return Profile|null */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { - $exception = 2 < \func_num_args() ? func_get_arg(2) : null; - if (false === $this->enabled) { return null; } @@ -168,14 +157,9 @@ class Profiler implements ResetInterface $response->headers->set('X-Debug-Token', $profile->getToken()); - $wrappedException = null; foreach ($this->collectors as $collector) { - if (($e = $exception) instanceof \Error) { - $r = new \ReflectionMethod($collector, 'collect'); - $e = 2 >= $r->getNumberOfParameters() || !($p = $r->getParameters()[2])->hasType() || \Exception::class !== $p->getType()->getName() ? $e : ($wrappedException ?? $wrappedException = new FatalThrowableError($e)); - } + $collector->collect($request, $response, $exception); - $collector->collect($request, $response, $e); // we need to clone for sub-requests $profile->addCollector(clone $collector); } @@ -194,7 +178,7 @@ class Profiler implements ResetInterface /** * Gets the Collectors associated with this profiler. * - * @return array An array of collectors + * @return array */ public function all() { @@ -229,7 +213,7 @@ class Profiler implements ResetInterface * * @return bool */ - public function has($name) + public function has(string $name) { return isset($this->collectors[$name]); } @@ -239,11 +223,11 @@ class Profiler implements ResetInterface * * @param string $name A collector name * - * @return DataCollectorInterface A DataCollectorInterface instance + * @return DataCollectorInterface * * @throws \InvalidArgumentException if the collector does not exist */ - public function get($name) + public function get(string $name) { if (!isset($this->collectors[$name])) { throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name)); diff --git a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php index d13ee2322..95d72f46b 100644 --- a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php +++ b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php @@ -20,7 +20,7 @@ namespace Symfony\Component\HttpKernel\Profiler; * As the profiler must only be used on non-production servers, the file storage * is more than enough and no other implementations will ever be supported. * - * @internal since 4.2 + * @internal * * @author Fabien Potencier <fabien@symfony.com> */ @@ -29,32 +29,21 @@ interface ProfilerStorageInterface /** * Finds profiler tokens for the given criteria. * - * @param string $ip The IP - * @param string $url The URL - * @param string $limit The maximum number of tokens to return - * @param string $method The request method - * @param int|null $start The start date to search from - * @param int|null $end The end date to search to - * - * @return array An array of tokens + * @param int|null $limit The maximum number of tokens to return + * @param int|null $start The start date to search from + * @param int|null $end The end date to search to */ - public function find($ip, $url, $limit, $method, $start = null, $end = null): array; + public function find(?string $ip, ?string $url, ?int $limit, ?string $method, int $start = null, int $end = null): array; /** * Reads data associated with the given token. * * The method returns false if the token does not exist in the storage. - * - * @param string $token A token - * - * @return Profile|null The profile associated with token */ - public function read($token): ?Profile; + public function read(string $token): ?Profile; /** * Saves a Profile. - * - * @return bool Write operation successful */ public function write(Profile $profile): bool; diff --git a/vendor/symfony/http-kernel/README.md b/vendor/symfony/http-kernel/README.md index 18d15f5ad..ca5041782 100644 --- a/vendor/symfony/http-kernel/README.md +++ b/vendor/symfony/http-kernel/README.md @@ -5,6 +5,18 @@ The HttpKernel component provides a structured process for converting a Request into a Response by making use of the EventDispatcher component. It's flexible enough to create full-stack frameworks, micro-frameworks or advanced CMS systems like Drupal. +Sponsor +------- + +The HttpKernel component for Symfony 5.4/6.0 is [backed][1] by [Les-Tilleuls.coop][2]. + +Les-Tilleuls.coop is a team of 50+ Symfony experts who can help you design, develop and +fix your projects. We provide a wide range of professional services including development, +consulting, coaching, training and audits. We also are highly skilled in JS, Go and DevOps. +We are a worker cooperative! + +Help Symfony by [sponsoring][3] its development! + Resources --------- @@ -13,3 +25,7 @@ Resources * [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls) in the [main Symfony repository](https://github.com/symfony/symfony) + +[1]: https://symfony.com/backers +[2]: https://les-tilleuls.coop +[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/http-kernel/RebootableInterface.php b/vendor/symfony/http-kernel/RebootableInterface.php index 58d9ef59e..e257237da 100644 --- a/vendor/symfony/http-kernel/RebootableInterface.php +++ b/vendor/symfony/http-kernel/RebootableInterface.php @@ -21,10 +21,10 @@ interface RebootableInterface /** * Reboots a kernel. * - * The getCacheDir() method of a rebootable kernel should not be called - * while building the container. Use the %kernel.cache_dir% parameter instead. + * The getBuildDir() method of a rebootable kernel should not be called + * while building the container. Use the %kernel.build_dir% parameter instead. * - * @param string|null $warmupDir pass null to reboot in the regular cache directory + * @param string|null $warmupDir pass null to reboot in the regular build directory */ - public function reboot($warmupDir); + public function reboot(?string $warmupDir); } diff --git a/vendor/symfony/http-kernel/UriSigner.php b/vendor/symfony/http-kernel/UriSigner.php index e4f988b26..38931ce17 100644 --- a/vendor/symfony/http-kernel/UriSigner.php +++ b/vendor/symfony/http-kernel/UriSigner.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel; +use Symfony\Component\HttpFoundation\Request; + /** * Signs URIs. * @@ -37,11 +39,9 @@ class UriSigner * The given URI is signed by adding the query string parameter * which value depends on the URI and the secret. * - * @param string $uri A URI to sign - * - * @return string The signed URI + * @return string */ - public function sign($uri) + public function sign(string $uri) { $url = parse_url($uri); if (isset($url['query'])) { @@ -59,11 +59,9 @@ class UriSigner /** * Checks that a URI contains the correct hash. * - * @param string $uri A signed URI - * - * @return bool True if the URI is signed correctly, false otherwise + * @return bool */ - public function check($uri) + public function check(string $uri) { $url = parse_url($uri); if (isset($url['query'])) { @@ -82,6 +80,14 @@ class UriSigner return hash_equals($this->computeHash($this->buildUrl($url, $params)), $hash); } + public function checkRequest(Request $request): bool + { + $qs = ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''; + + // we cannot use $request->getUri() here as we want to work with the original URI (no query string reordering) + return $this->check($request->getSchemeAndHttpHost().$request->getBaseUrl().$request->getPathInfo().$qs); + } + private function computeHash(string $uri): string { return base64_encode(hash_hmac('sha256', $uri, $this->secret, true)); diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json index c2758e45a..09682db49 100644 --- a/vendor/symfony/http-kernel/composer.json +++ b/vendor/symfony/http-kernel/composer.json @@ -16,44 +16,52 @@ } ], "require": { - "php": ">=7.1.3", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", "psr/log": "^1|^2" }, "require-dev": { - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "psr/cache": "^1.0|^2.0|^3.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "twig/twig": "^2.13|^3.0.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/form": "<5.0", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "suggest": { "symfony/browser-kit": "", diff --git a/vendor/symfony/polyfill-intl-grapheme/Grapheme.php b/vendor/symfony/polyfill-intl-grapheme/Grapheme.php new file mode 100644 index 000000000..5373f1685 --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/Grapheme.php @@ -0,0 +1,247 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Intl\Grapheme; + +\define('SYMFONY_GRAPHEME_CLUSTER_RX', ((float) \PCRE_VERSION < 10 ? (float) \PCRE_VERSION >= 8.32 : (float) \PCRE_VERSION >= 10.39) ? '\X' : Grapheme::GRAPHEME_CLUSTER_RX); + +/** + * Partial intl implementation in pure PHP. + * + * Implemented: + * - grapheme_extract - Extract a sequence of grapheme clusters from a text buffer, which must be encoded in UTF-8 + * - grapheme_stripos - Find position (in grapheme units) of first occurrence of a case-insensitive string + * - grapheme_stristr - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack + * - grapheme_strlen - Get string length in grapheme units + * - grapheme_strpos - Find position (in grapheme units) of first occurrence of a string + * - grapheme_strripos - Find position (in grapheme units) of last occurrence of a case-insensitive string + * - grapheme_strrpos - Find position (in grapheme units) of last occurrence of a string + * - grapheme_strstr - Returns part of haystack string from the first occurrence of needle to the end of haystack + * - grapheme_substr - Return part of a string + * + * @author Nicolas Grekas <p@tchwork.com> + * + * @internal + */ +final class Grapheme +{ + // (CRLF|([ZWNJ-ZWJ]|T+|L*(LV?V+|LV|LVT)T*|L+|[^Control])[Extend]*|[Control]) + // This regular expression is a work around for http://bugs.exim.org/1279 + public const GRAPHEME_CLUSTER_RX = '(?:\r\n|(?:[ -~\x{200C}\x{200D}]|[ᆨ-ᇹ]+|[ᄀ-ᅟ]*(?:[가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기까깨꺄꺠꺼께껴꼐꼬꽈꽤꾀꾜꾸꿔꿰뀌뀨끄끠끼나내냐냬너네녀녜노놔놰뇌뇨누눠눼뉘뉴느늬니다대댜댸더데뎌뎨도돠돼되됴두둬뒈뒤듀드듸디따때땨떄떠떼뗘뗴또똬뙈뙤뚀뚜뚸뛔뛰뜌뜨띄띠라래랴럐러레려례로롸뢔뢰료루뤄뤠뤼류르릐리마매먀먜머메며몌모뫄뫠뫼묘무뭐뭬뮈뮤므믜미바배뱌뱨버베벼볘보봐봬뵈뵤부붜붸뷔뷰브븨비빠빼뺘뺴뻐뻬뼈뼤뽀뽜뽸뾔뾰뿌뿨쀄쀠쀼쁘쁴삐사새샤섀서세셔셰소솨쇄쇠쇼수숴쉐쉬슈스싀시싸쌔쌰썌써쎄쎠쎼쏘쏴쐐쐬쑈쑤쒀쒜쒸쓔쓰씌씨아애야얘어에여예오와왜외요우워웨위유으의이자재쟈쟤저제져졔조좌좨죄죠주줘줴쥐쥬즈즤지짜째쨔쨰쩌쩨쪄쪠쪼쫘쫴쬐쬬쭈쭤쮀쮜쮸쯔쯰찌차채챠챼처체쳐쳬초촤쵀최쵸추춰췌취츄츠츼치카캐캬컈커케켜켸코콰쾌쾨쿄쿠쿼퀘퀴큐크킈키타태탸턔터테텨톄토톼퇘퇴툐투퉈퉤튀튜트틔티파패퍄퍠퍼페펴폐포퐈퐤푀표푸풔풰퓌퓨프픠피하해햐햬허헤혀혜호화홰회효후훠훼휘휴흐희히]?[ᅠ-ᆢ]+|[가-힣])[ᆨ-ᇹ]*|[ᄀ-ᅟ]+|[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}])[\p{Mn}\p{Me}\x{09BE}\x{09D7}\x{0B3E}\x{0B57}\x{0BBE}\x{0BD7}\x{0CC2}\x{0CD5}\x{0CD6}\x{0D3E}\x{0D57}\x{0DCF}\x{0DDF}\x{200C}\x{200D}\x{1D165}\x{1D16E}-\x{1D172}]*|[\p{Cc}\p{Cf}\p{Zl}\p{Zp}])'; + + private const CASE_FOLD = [ + ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], + ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], + ]; + + public static function grapheme_extract($s, $size, $type = \GRAPHEME_EXTR_COUNT, $start = 0, &$next = 0) + { + if (0 > $start) { + $start = \strlen($s) + $start; + } + + if (!\is_scalar($s)) { + $hasError = false; + set_error_handler(function () use (&$hasError) { $hasError = true; }); + $next = substr($s, $start); + restore_error_handler(); + if ($hasError) { + substr($s, $start); + $s = ''; + } else { + $s = $next; + } + } else { + $s = substr($s, $start); + } + $size = (int) $size; + $type = (int) $type; + $start = (int) $start; + + if (\GRAPHEME_EXTR_COUNT !== $type && \GRAPHEME_EXTR_MAXBYTES !== $type && \GRAPHEME_EXTR_MAXCHARS !== $type) { + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError('grapheme_extract(): Argument #3 ($type) must be one of GRAPHEME_EXTR_COUNT, GRAPHEME_EXTR_MAXBYTES, or GRAPHEME_EXTR_MAXCHARS'); + } + + if (!isset($s[0]) || 0 > $size || 0 > $start) { + return false; + } + if (0 === $size) { + return ''; + } + + $next = $start; + + $s = preg_split('/('.SYMFONY_GRAPHEME_CLUSTER_RX.')/u', "\r\n".$s, $size + 1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); + + if (!isset($s[1])) { + return false; + } + + $i = 1; + $ret = ''; + + do { + if (\GRAPHEME_EXTR_COUNT === $type) { + --$size; + } elseif (\GRAPHEME_EXTR_MAXBYTES === $type) { + $size -= \strlen($s[$i]); + } else { + $size -= iconv_strlen($s[$i], 'UTF-8//IGNORE'); + } + + if ($size >= 0) { + $ret .= $s[$i]; + } + } while (isset($s[++$i]) && $size > 0); + + $next += \strlen($ret); + + return $ret; + } + + public static function grapheme_strlen($s) + { + preg_replace('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', '', $s, -1, $len); + + return 0 === $len && '' !== $s ? null : $len; + } + + public static function grapheme_substr($s, $start, $len = null) + { + if (null === $len) { + $len = 2147483647; + } + + preg_match_all('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', $s, $s); + + $slen = \count($s[0]); + $start = (int) $start; + + if (0 > $start) { + $start += $slen; + } + if (0 > $start) { + if (\PHP_VERSION_ID < 80000) { + return false; + } + + $start = 0; + } + if ($start >= $slen) { + return \PHP_VERSION_ID >= 80000 ? '' : false; + } + + $rem = $slen - $start; + + if (0 > $len) { + $len += $rem; + } + if (0 === $len) { + return ''; + } + if (0 > $len) { + return \PHP_VERSION_ID >= 80000 ? '' : false; + } + if ($len > $rem) { + $len = $rem; + } + + return implode('', \array_slice($s[0], $start, $len)); + } + + public static function grapheme_strpos($s, $needle, $offset = 0) + { + return self::grapheme_position($s, $needle, $offset, 0); + } + + public static function grapheme_stripos($s, $needle, $offset = 0) + { + return self::grapheme_position($s, $needle, $offset, 1); + } + + public static function grapheme_strrpos($s, $needle, $offset = 0) + { + return self::grapheme_position($s, $needle, $offset, 2); + } + + public static function grapheme_strripos($s, $needle, $offset = 0) + { + return self::grapheme_position($s, $needle, $offset, 3); + } + + public static function grapheme_stristr($s, $needle, $beforeNeedle = false) + { + return mb_stristr($s, $needle, $beforeNeedle, 'UTF-8'); + } + + public static function grapheme_strstr($s, $needle, $beforeNeedle = false) + { + return mb_strstr($s, $needle, $beforeNeedle, 'UTF-8'); + } + + private static function grapheme_position($s, $needle, $offset, $mode) + { + $needle = (string) $needle; + if (80000 > \PHP_VERSION_ID && !preg_match('/./us', $needle)) { + return false; + } + $s = (string) $s; + if (!preg_match('/./us', $s)) { + return false; + } + if ($offset > 0) { + $s = self::grapheme_substr($s, $offset); + } elseif ($offset < 0) { + if (2 > $mode) { + $offset += self::grapheme_strlen($s); + $s = self::grapheme_substr($s, $offset); + if (0 > $offset) { + $offset = 0; + } + } elseif (0 > $offset += self::grapheme_strlen($needle)) { + $s = self::grapheme_substr($s, 0, $offset); + $offset = 0; + } else { + $offset = 0; + } + } + + // As UTF-8 is self-synchronizing, and we have ensured the strings are valid UTF-8, + // we can use normal binary string functions here. For case-insensitive searches, + // case fold the strings first. + $caseInsensitive = $mode & 1; + $reverse = $mode & 2; + if ($caseInsensitive) { + // Use the same case folding mode as mbstring does for mb_stripos(). + // Stick to SIMPLE case folding to avoid changing the length of the string, which + // might result in offsets being shifted. + $mode = \defined('MB_CASE_FOLD_SIMPLE') ? \MB_CASE_FOLD_SIMPLE : \MB_CASE_LOWER; + $s = mb_convert_case($s, $mode, 'UTF-8'); + $needle = mb_convert_case($needle, $mode, 'UTF-8'); + + if (!\defined('MB_CASE_FOLD_SIMPLE')) { + $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); + $needle = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $needle); + } + } + if ($reverse) { + $needlePos = strrpos($s, $needle); + } else { + $needlePos = strpos($s, $needle); + } + + return false !== $needlePos ? self::grapheme_strlen(substr($s, 0, $needlePos)) + $offset : false; + } +} diff --git a/vendor/symfony/polyfill-intl-grapheme/LICENSE b/vendor/symfony/polyfill-intl-grapheme/LICENSE new file mode 100644 index 000000000..4cd8bdd30 --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2019 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/symfony/polyfill-intl-grapheme/README.md b/vendor/symfony/polyfill-intl-grapheme/README.md new file mode 100644 index 000000000..f55d92c5c --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/README.md @@ -0,0 +1,31 @@ +Symfony Polyfill / Intl: Grapheme +================================= + +This component provides a partial, native PHP implementation of the +[Grapheme functions](https://php.net/intl.grapheme) from the +[Intl](https://php.net/intl) extension. + +- [`grapheme_extract`](https://php.net/grapheme_extract): Extract a sequence of grapheme + clusters from a text buffer, which must be encoded in UTF-8 +- [`grapheme_stripos`](https://php.net/grapheme_stripos): Find position (in grapheme units) + of first occurrence of a case-insensitive string +- [`grapheme_stristr`](https://php.net/grapheme_stristr): Returns part of haystack string + from the first occurrence of case-insensitive needle to the end of haystack +- [`grapheme_strlen`](https://php.net/grapheme_strlen): Get string length in grapheme units +- [`grapheme_strpos`](https://php.net/grapheme_strpos): Find position (in grapheme units) + of first occurrence of a string +- [`grapheme_strripos`](https://php.net/grapheme_strripos): Find position (in grapheme units) + of last occurrence of a case-insensitive string +- [`grapheme_strrpos`](https://php.net/grapheme_strrpos): Find position (in grapheme units) + of last occurrence of a string +- [`grapheme_strstr`](https://php.net/grapheme_strstr): Returns part of haystack string from + the first occurrence of needle to the end of haystack +- [`grapheme_substr`](https://php.net/grapheme_substr): Return part of a string + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-intl-grapheme/bootstrap.php b/vendor/symfony/polyfill-intl-grapheme/bootstrap.php new file mode 100644 index 000000000..a9ea03c7e --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/bootstrap.php @@ -0,0 +1,58 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Intl\Grapheme as p; + +if (extension_loaded('intl')) { + return; +} + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!defined('GRAPHEME_EXTR_COUNT')) { + define('GRAPHEME_EXTR_COUNT', 0); +} +if (!defined('GRAPHEME_EXTR_MAXBYTES')) { + define('GRAPHEME_EXTR_MAXBYTES', 1); +} +if (!defined('GRAPHEME_EXTR_MAXCHARS')) { + define('GRAPHEME_EXTR_MAXCHARS', 2); +} + +if (!function_exists('grapheme_extract')) { + function grapheme_extract($haystack, $size, $type = 0, $start = 0, &$next = 0) { return p\Grapheme::grapheme_extract($haystack, $size, $type, $start, $next); } +} +if (!function_exists('grapheme_stripos')) { + function grapheme_stripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_stripos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_stristr')) { + function grapheme_stristr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_stristr($haystack, $needle, $beforeNeedle); } +} +if (!function_exists('grapheme_strlen')) { + function grapheme_strlen($input) { return p\Grapheme::grapheme_strlen($input); } +} +if (!function_exists('grapheme_strpos')) { + function grapheme_strpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strpos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strripos')) { + function grapheme_strripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strripos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strrpos')) { + function grapheme_strrpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strrpos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strstr')) { + function grapheme_strstr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_strstr($haystack, $needle, $beforeNeedle); } +} +if (!function_exists('grapheme_substr')) { + function grapheme_substr($string, $offset, $length = null) { return p\Grapheme::grapheme_substr($string, $offset, $length); } +} diff --git a/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php b/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php new file mode 100644 index 000000000..b8c078677 --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php @@ -0,0 +1,50 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Intl\Grapheme as p; + +if (!defined('GRAPHEME_EXTR_COUNT')) { + define('GRAPHEME_EXTR_COUNT', 0); +} +if (!defined('GRAPHEME_EXTR_MAXBYTES')) { + define('GRAPHEME_EXTR_MAXBYTES', 1); +} +if (!defined('GRAPHEME_EXTR_MAXCHARS')) { + define('GRAPHEME_EXTR_MAXCHARS', 2); +} + +if (!function_exists('grapheme_extract')) { + function grapheme_extract(?string $haystack, ?int $size, ?int $type = GRAPHEME_EXTR_COUNT, ?int $offset = 0, &$next = null): string|false { return p\Grapheme::grapheme_extract((string) $haystack, (int) $size, (int) $type, (int) $offset, $next); } +} +if (!function_exists('grapheme_stripos')) { + function grapheme_stripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_stripos((string) $haystack, (string) $needle, (int) $offset); } +} +if (!function_exists('grapheme_stristr')) { + function grapheme_stristr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_stristr((string) $haystack, (string) $needle, (bool) $beforeNeedle); } +} +if (!function_exists('grapheme_strlen')) { + function grapheme_strlen(?string $string): int|false|null { return p\Grapheme::grapheme_strlen((string) $string); } +} +if (!function_exists('grapheme_strpos')) { + function grapheme_strpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strpos((string) $haystack, (string) $needle, (int) $offset); } +} +if (!function_exists('grapheme_strripos')) { + function grapheme_strripos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strripos((string) $haystack, (string) $needle, (int) $offset); } +} +if (!function_exists('grapheme_strrpos')) { + function grapheme_strrpos(?string $haystack, ?string $needle, ?int $offset = 0): int|false { return p\Grapheme::grapheme_strrpos((string) $haystack, (string) $needle, (int) $offset); } +} +if (!function_exists('grapheme_strstr')) { + function grapheme_strstr(?string $haystack, ?string $needle, ?bool $beforeNeedle = false): string|false { return p\Grapheme::grapheme_strstr((string) $haystack, (string) $needle, (bool) $beforeNeedle); } +} +if (!function_exists('grapheme_substr')) { + function grapheme_substr(?string $string, ?int $offset, ?int $length = null): string|false { return p\Grapheme::grapheme_substr((string) $string, (int) $offset, $length); } +} diff --git a/vendor/symfony/polyfill-intl-grapheme/composer.json b/vendor/symfony/polyfill-intl-grapheme/composer.json new file mode 100644 index 000000000..fde5537fc --- /dev/null +++ b/vendor/symfony/polyfill-intl-grapheme/composer.json @@ -0,0 +1,38 @@ +{ + "name": "symfony/polyfill-intl-grapheme", + "type": "library", + "description": "Symfony polyfill for intl's grapheme_* functions", + "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "grapheme"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-intl": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/symfony/polyfill-php81/LICENSE b/vendor/symfony/polyfill-php81/LICENSE new file mode 100644 index 000000000..efb17f98e --- /dev/null +++ b/vendor/symfony/polyfill-php81/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2021 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/symfony/polyfill-php81/Php81.php b/vendor/symfony/polyfill-php81/Php81.php new file mode 100644 index 000000000..f0507b765 --- /dev/null +++ b/vendor/symfony/polyfill-php81/Php81.php @@ -0,0 +1,37 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php81; + +/** + * @author Nicolas Grekas <p@tchwork.com> + * + * @internal + */ +final class Php81 +{ + public static function array_is_list(array $array): bool + { + if ([] === $array || $array === array_values($array)) { + return true; + } + + $nextKey = -1; + + foreach ($array as $k => $v) { + if ($k !== ++$nextKey) { + return false; + } + } + + return true; + } +} diff --git a/vendor/symfony/polyfill-php81/README.md b/vendor/symfony/polyfill-php81/README.md new file mode 100644 index 000000000..7d8dd1907 --- /dev/null +++ b/vendor/symfony/polyfill-php81/README.md @@ -0,0 +1,17 @@ +Symfony Polyfill / Php81 +======================== + +This component provides features added to PHP 8.1 core: + +- [`array_is_list`](https://php.net/array_is_list) +- [`enum_exists`](https://php.net/enum-exists) +- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant +- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types) + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php new file mode 100644 index 000000000..cb7720a8d --- /dev/null +++ b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php @@ -0,0 +1,20 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80100) { + #[Attribute(Attribute::TARGET_METHOD)] + final class ReturnTypeWillChange + { + public function __construct() + { + } + } +} diff --git a/vendor/symfony/polyfill-php81/bootstrap.php b/vendor/symfony/polyfill-php81/bootstrap.php new file mode 100644 index 000000000..9f872e02f --- /dev/null +++ b/vendor/symfony/polyfill-php81/bootstrap.php @@ -0,0 +1,28 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Php81 as p; + +if (\PHP_VERSION_ID >= 80100) { + return; +} + +if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { + define('MYSQLI_REFRESH_REPLICA', 64); +} + +if (!function_exists('array_is_list')) { + function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } +} + +if (!function_exists('enum_exists')) { + function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } +} diff --git a/vendor/symfony/polyfill-php81/composer.json b/vendor/symfony/polyfill-php81/composer.json new file mode 100644 index 000000000..149b59821 --- /dev/null +++ b/vendor/symfony/polyfill-php81/composer.json @@ -0,0 +1,36 @@ +{ + "name": "symfony/polyfill-php81", + "type": "library", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "keywords": ["polyfill", "shim", "compatibility", "portable"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Php81\\": "" }, + "files": [ "bootstrap.php" ], + "classmap": [ "Resources/stubs" ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/symfony/process/CHANGELOG.md b/vendor/symfony/process/CHANGELOG.md index 69d4cbd77..31b9ee6a2 100644 --- a/vendor/symfony/process/CHANGELOG.md +++ b/vendor/symfony/process/CHANGELOG.md @@ -1,6 +1,26 @@ CHANGELOG ========= +5.2.0 +----- + + * added `Process::setOptions()` to set `Process` specific options + * added option `create_new_console` to allow a subprocess to continue + to run after the main script exited, both on Linux and on Windows + +5.1.0 +----- + + * added `Process::getStartTime()` to retrieve the start time of the process as float + +5.0.0 +----- + + * removed `Process::inheritEnvironmentVariables()` + * removed `PhpProcess::setPhpBinary()` + * `Process` must be instantiated with a command array, use `Process::fromShellCommandline()` when the command should be parsed by the shell + * removed `Process::setCommandLine()` + 4.4.0 ----- diff --git a/vendor/symfony/process/ExecutableFinder.php b/vendor/symfony/process/ExecutableFinder.php index e2dd064d6..eb8f06292 100644 --- a/vendor/symfony/process/ExecutableFinder.php +++ b/vendor/symfony/process/ExecutableFinder.php @@ -31,10 +31,8 @@ class ExecutableFinder /** * Adds new possible suffix to check for executable. - * - * @param string $suffix */ - public function addSuffix($suffix) + public function addSuffix(string $suffix) { $this->suffixes[] = $suffix; } @@ -46,9 +44,9 @@ class ExecutableFinder * @param string|null $default The default to return if no executable is found * @param array $extraDirs Additional dirs to check into * - * @return string|null The executable path or default value + * @return string|null */ - public function find($name, $default = null, array $extraDirs = []) + public function find(string $name, string $default = null, array $extraDirs = []) { if (\ini_get('open_basedir')) { $searchPath = array_merge(explode(\PATH_SEPARATOR, \ini_get('open_basedir')), $extraDirs); diff --git a/vendor/symfony/process/InputStream.php b/vendor/symfony/process/InputStream.php index 4f8f71331..240665f32 100644 --- a/vendor/symfony/process/InputStream.php +++ b/vendor/symfony/process/InputStream.php @@ -17,6 +17,8 @@ use Symfony\Component\Process\Exception\RuntimeException; * Provides a way to continuously write to the input of a Process until the InputStream is closed. * * @author Nicolas Grekas <p@tchwork.com> + * + * @implements \IteratorAggregate<int, string> */ class InputStream implements \IteratorAggregate { @@ -67,7 +69,7 @@ class InputStream implements \IteratorAggregate } /** - * @return \Traversable + * @return \Traversable<int, string> */ #[\ReturnTypeWillChange] public function getIterator() diff --git a/vendor/symfony/process/PhpExecutableFinder.php b/vendor/symfony/process/PhpExecutableFinder.php index 92e0262ad..998808b66 100644 --- a/vendor/symfony/process/PhpExecutableFinder.php +++ b/vendor/symfony/process/PhpExecutableFinder.php @@ -29,11 +29,9 @@ class PhpExecutableFinder /** * Finds The PHP executable. * - * @param bool $includeArgs Whether or not include command arguments - * - * @return string|false The PHP executable path or false if it cannot be found + * @return string|false */ - public function find($includeArgs = true) + public function find(bool $includeArgs = true) { if ($php = getenv('PHP_BINARY')) { if (!is_executable($php)) { @@ -91,7 +89,7 @@ class PhpExecutableFinder /** * Finds the PHP executable arguments. * - * @return array The PHP executable arguments + * @return array */ public function findArguments() { diff --git a/vendor/symfony/process/PhpProcess.php b/vendor/symfony/process/PhpProcess.php index dc064e0b8..2bc338e5e 100644 --- a/vendor/symfony/process/PhpProcess.php +++ b/vendor/symfony/process/PhpProcess.php @@ -58,18 +58,6 @@ class PhpProcess extends Process throw new LogicException(sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); } - /** - * Sets the path to the PHP binary to use. - * - * @deprecated since Symfony 4.2, use the $php argument of the constructor instead. - */ - public function setPhpBinary($php) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use the $php argument of the constructor instead.', __METHOD__), \E_USER_DEPRECATED); - - $this->setCommandLine($php); - } - /** * {@inheritdoc} */ diff --git a/vendor/symfony/process/Pipes/AbstractPipes.php b/vendor/symfony/process/Pipes/AbstractPipes.php index 9532e3ef6..656dc0328 100644 --- a/vendor/symfony/process/Pipes/AbstractPipes.php +++ b/vendor/symfony/process/Pipes/AbstractPipes.php @@ -105,7 +105,7 @@ abstract class AbstractPipes implements PipesInterface } elseif (!isset($this->inputBuffer[0])) { if (!\is_string($input)) { if (!\is_scalar($input)) { - throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', \get_class($this->input), \gettype($input))); + throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', get_debug_type($this->input), get_debug_type($input))); } $input = (string) $input; } diff --git a/vendor/symfony/process/Pipes/UnixPipes.php b/vendor/symfony/process/Pipes/UnixPipes.php index 58a8da07c..5a0e9d47f 100644 --- a/vendor/symfony/process/Pipes/UnixPipes.php +++ b/vendor/symfony/process/Pipes/UnixPipes.php @@ -35,10 +35,7 @@ class UnixPipes extends AbstractPipes parent::__construct($input); } - /** - * @return array - */ - public function __sleep() + public function __sleep(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } diff --git a/vendor/symfony/process/Pipes/WindowsPipes.php b/vendor/symfony/process/Pipes/WindowsPipes.php index 69768f3d8..bca84f574 100644 --- a/vendor/symfony/process/Pipes/WindowsPipes.php +++ b/vendor/symfony/process/Pipes/WindowsPipes.php @@ -88,10 +88,7 @@ class WindowsPipes extends AbstractPipes parent::__construct($input); } - /** - * @return array - */ - public function __sleep() + public function __sleep(): array { throw new \BadMethodCallException('Cannot serialize '.__CLASS__); } diff --git a/vendor/symfony/process/Process.php b/vendor/symfony/process/Process.php index 09cd9602a..14e177746 100644 --- a/vendor/symfony/process/Process.php +++ b/vendor/symfony/process/Process.php @@ -27,6 +27,8 @@ use Symfony\Component\Process\Pipes\WindowsPipes; * * @author Fabien Potencier <fabien@symfony.com> * @author Romain Neutron <imprec@gmail.com> + * + * @implements \IteratorAggregate<string, string> */ class Process implements \IteratorAggregate { @@ -71,6 +73,7 @@ class Process implements \IteratorAggregate private $incrementalErrorOutputOffset = 0; private $tty = false; private $pty; + private $options = ['suppress_errors' => true, 'bypass_shell' => true]; private $useFileHandles = false; /** @var PipesInterface */ @@ -137,16 +140,12 @@ class Process implements \IteratorAggregate * * @throws LogicException When proc_open is not installed */ - public function __construct($command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) + public function __construct(array $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) { if (!\function_exists('proc_open')) { throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.'); } - if (!\is_array($command)) { - @trigger_error(sprintf('Passing a command as string when creating a "%s" instance is deprecated since Symfony 4.2, pass it as an array of its arguments instead, or use the "Process::fromShellCommandline()" constructor if you need features provided by the shell.', __CLASS__), \E_USER_DEPRECATED); - } - $this->commandline = $command; $this->cwd = $cwd; @@ -213,7 +212,11 @@ class Process implements \IteratorAggregate public function __destruct() { - $this->stop(0); + if ($this->options['create_new_console'] ?? false) { + $this->processPipes->close(); + } else { + $this->stop(0); + } } public function __clone() @@ -320,10 +323,7 @@ class Process implements \IteratorAggregate $commandline = $this->replacePlaceholders($commandline, $env); } - $options = ['suppress_errors' => true]; - if ('\\' === \DIRECTORY_SEPARATOR) { - $options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild @@ -349,7 +349,7 @@ class Process implements \IteratorAggregate throw new RuntimeException(sprintf('The provided cwd "%s" does not exist.', $this->cwd)); } - $this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $options); + $this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); if (!\is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); @@ -511,7 +511,7 @@ class Process implements \IteratorAggregate * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ - public function signal($signal) + public function signal(int $signal) { $this->doSignal($signal, true); @@ -532,7 +532,7 @@ class Process implements \IteratorAggregate throw new RuntimeException('Disabling output while the process is running is not possible.'); } if (null !== $this->idleTimeout) { - throw new LogicException('Output can not be disabled while an idle timeout is set.'); + throw new LogicException('Output cannot be disabled while an idle timeout is set.'); } $this->outputDisabled = true; @@ -571,7 +571,7 @@ class Process implements \IteratorAggregate /** * Returns the current output of the process (STDOUT). * - * @return string The process output + * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started @@ -593,7 +593,7 @@ class Process implements \IteratorAggregate * In comparison with the getOutput method which always return the whole * output, this one returns the new output since the last call. * - * @return string The process output since the last call + * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started @@ -620,10 +620,10 @@ class Process implements \IteratorAggregate * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started * - * @return \Generator + * @return \Generator<string, string> */ #[\ReturnTypeWillChange] - public function getIterator($flags = 0) + public function getIterator(int $flags = 0) { $this->readPipesForOutput(__FUNCTION__, false); @@ -687,7 +687,7 @@ class Process implements \IteratorAggregate /** * Returns the current error output of the process (STDERR). * - * @return string The process error output + * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started @@ -710,7 +710,7 @@ class Process implements \IteratorAggregate * whole error output, this one returns the new error output since the last * call. * - * @return string The process error output since the last call + * @return string * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started @@ -778,7 +778,7 @@ class Process implements \IteratorAggregate /** * Checks if the process ended successfully. * - * @return bool true if the process ended successfully, false otherwise + * @return bool */ public function isSuccessful() { @@ -816,7 +816,7 @@ class Process implements \IteratorAggregate $this->requireProcessIsTerminated(__FUNCTION__); if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) { - throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.'); + throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal cannot be retrieved.'); } return $this->processInformation['termsig']; @@ -857,7 +857,7 @@ class Process implements \IteratorAggregate /** * Checks if the process is currently running. * - * @return bool true if the process is currently running, false otherwise + * @return bool */ public function isRunning() { @@ -873,7 +873,7 @@ class Process implements \IteratorAggregate /** * Checks if the process has been started with no regard to the current state. * - * @return bool true if status is ready, false otherwise + * @return bool */ public function isStarted() { @@ -883,7 +883,7 @@ class Process implements \IteratorAggregate /** * Checks if the process is terminated. * - * @return bool true if process is terminated, false otherwise + * @return bool */ public function isTerminated() { @@ -897,7 +897,7 @@ class Process implements \IteratorAggregate * * The status is one of: ready, started, terminated. * - * @return string The current process status + * @return string */ public function getStatus() { @@ -914,7 +914,7 @@ class Process implements \IteratorAggregate * * @return int|null The exit-code of the process or null if it's not running */ - public function stop($timeout = 10, $signal = null) + public function stop(float $timeout = 10, int $signal = null) { $timeoutMicro = microtime(true) + $timeout; if ($this->isRunning()) { @@ -982,7 +982,7 @@ class Process implements \IteratorAggregate /** * Gets the command line to be executed. * - * @return string The command to execute + * @return string */ public function getCommandLine() { @@ -990,27 +990,9 @@ class Process implements \IteratorAggregate } /** - * Sets the command line to be executed. + * Gets the process timeout in seconds (max. runtime). * - * @param string|array $commandline The command to execute - * - * @return $this - * - * @deprecated since Symfony 4.2. - */ - public function setCommandLine($commandline) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - - $this->commandline = $commandline; - - return $this; - } - - /** - * Gets the process timeout (max. runtime). - * - * @return float|null The timeout in seconds or null if it's disabled + * @return float|null */ public function getTimeout() { @@ -1018,9 +1000,9 @@ class Process implements \IteratorAggregate } /** - * Gets the process idle timeout (max. time since last output). + * Gets the process idle timeout in seconds (max. time since last output). * - * @return float|null The timeout in seconds or null if it's disabled + * @return float|null */ public function getIdleTimeout() { @@ -1032,13 +1014,11 @@ class Process implements \IteratorAggregate * * To disable the timeout, set this value to null. * - * @param int|float|null $timeout The timeout in seconds - * * @return $this * * @throws InvalidArgumentException if the timeout is negative */ - public function setTimeout($timeout) + public function setTimeout(?float $timeout) { $this->timeout = $this->validateTimeout($timeout); @@ -1046,21 +1026,19 @@ class Process implements \IteratorAggregate } /** - * Sets the process idle timeout (max. time since last output). + * Sets the process idle timeout (max. time since last output) in seconds. * * To disable the timeout, set this value to null. * - * @param int|float|null $timeout The timeout in seconds - * * @return $this * * @throws LogicException if the output is disabled * @throws InvalidArgumentException if the timeout is negative */ - public function setIdleTimeout($timeout) + public function setIdleTimeout(?float $timeout) { if (null !== $timeout && $this->outputDisabled) { - throw new LogicException('Idle timeout can not be set while the output is disabled.'); + throw new LogicException('Idle timeout cannot be set while the output is disabled.'); } $this->idleTimeout = $this->validateTimeout($timeout); @@ -1071,13 +1049,11 @@ class Process implements \IteratorAggregate /** * Enables or disables the TTY mode. * - * @param bool $tty True to enabled and false to disable - * * @return $this * * @throws RuntimeException In case the TTY mode is not supported */ - public function setTty($tty) + public function setTty(bool $tty) { if ('\\' === \DIRECTORY_SEPARATOR && $tty) { throw new RuntimeException('TTY mode is not supported on Windows platform.'); @@ -1087,7 +1063,7 @@ class Process implements \IteratorAggregate throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); } - $this->tty = (bool) $tty; + $this->tty = $tty; return $this; } @@ -1095,7 +1071,7 @@ class Process implements \IteratorAggregate /** * Checks if the TTY mode is enabled. * - * @return bool true if the TTY mode is enabled, false otherwise + * @return bool */ public function isTty() { @@ -1105,13 +1081,11 @@ class Process implements \IteratorAggregate /** * Sets PTY mode. * - * @param bool $bool - * * @return $this */ - public function setPty($bool) + public function setPty(bool $bool) { - $this->pty = (bool) $bool; + $this->pty = $bool; return $this; } @@ -1129,7 +1103,7 @@ class Process implements \IteratorAggregate /** * Gets the working directory. * - * @return string|null The current working directory or null on failure + * @return string|null */ public function getWorkingDirectory() { @@ -1145,11 +1119,9 @@ class Process implements \IteratorAggregate /** * Sets the current working directory. * - * @param string $cwd The new working directory - * * @return $this */ - public function setWorkingDirectory($cwd) + public function setWorkingDirectory(string $cwd) { $this->cwd = $cwd; @@ -1159,7 +1131,7 @@ class Process implements \IteratorAggregate /** * Gets the environment variables. * - * @return array The current environment variables + * @return array */ public function getEnv() { @@ -1183,7 +1155,7 @@ class Process implements \IteratorAggregate /** * Gets the Process input. * - * @return resource|string|\Iterator|null The Process input + * @return resource|string|\Iterator|null */ public function getInput() { @@ -1204,7 +1176,7 @@ class Process implements \IteratorAggregate public function setInput($input) { if ($this->isRunning()) { - throw new LogicException('Input can not be set while the process is running.'); + throw new LogicException('Input cannot be set while the process is running.'); } $this->input = ProcessUtils::validateInput(__METHOD__, $input); @@ -1212,26 +1184,6 @@ class Process implements \IteratorAggregate return $this; } - /** - * Sets whether environment variables will be inherited or not. - * - * @param bool $inheritEnv - * - * @return $this - * - * @deprecated since Symfony 4.4, env variables are always inherited - */ - public function inheritEnvironmentVariables($inheritEnv = true) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, env variables are always inherited.', __METHOD__), \E_USER_DEPRECATED); - - if (!$inheritEnv) { - throw new InvalidArgumentException('Not inheriting environment variables is not supported.'); - } - - return $this; - } - /** * Performs a check between the timeout definition and the time the process started. * @@ -1259,6 +1211,44 @@ class Process implements \IteratorAggregate } } + /** + * @throws LogicException in case process is not started + */ + public function getStartTime(): float + { + if (!$this->isStarted()) { + throw new LogicException('Start time is only available after process start.'); + } + + return $this->starttime; + } + + /** + * Defines options to pass to the underlying proc_open(). + * + * @see https://php.net/proc_open for the options supported by PHP. + * + * Enabling the "create_new_console" option allows a subprocess to continue + * to run after the main process exited, on both Windows and *nix + */ + public function setOptions(array $options) + { + if ($this->isRunning()) { + throw new RuntimeException('Setting options while the process is running is not possible.'); + } + + $defaultOptions = $this->options; + $existingOptions = ['blocking_pipes', 'create_process_group', 'create_new_console']; + + foreach ($options as $key => $value) { + if (!\in_array($key, $existingOptions)) { + $this->options = $defaultOptions; + throw new LogicException(sprintf('Invalid option "%s" passed to "%s()". Supported options are "%s".', $key, __METHOD__, implode('", "', $existingOptions))); + } + $this->options[$key] = $value; + } + } + /** * Returns whether TTY is supported on the current operating system. */ @@ -1318,7 +1308,7 @@ class Process implements \IteratorAggregate * * @param callable|null $callback The user defined PHP callback * - * @return \Closure A PHP closure + * @return \Closure */ protected function buildCallback(callable $callback = null) { @@ -1346,7 +1336,7 @@ class Process implements \IteratorAggregate * * @param bool $blocking Whether to use a blocking read call */ - protected function updateStatus($blocking) + protected function updateStatus(bool $blocking) { if (self::STATUS_STARTED !== $this->status) { return; @@ -1509,7 +1499,7 @@ class Process implements \IteratorAggregate { if (null === $pid = $this->getPid()) { if ($throwException) { - throw new LogicException('Can not send signal on a non running process.'); + throw new LogicException('Cannot send signal on a non running process.'); } return false; diff --git a/vendor/symfony/process/ProcessUtils.php b/vendor/symfony/process/ProcessUtils.php index 121693baa..2a7aff71b 100644 --- a/vendor/symfony/process/ProcessUtils.php +++ b/vendor/symfony/process/ProcessUtils.php @@ -35,11 +35,11 @@ class ProcessUtils * @param string $caller The name of method call that validates the input * @param mixed $input The input to validate * - * @return mixed The validated input + * @return mixed * * @throws InvalidArgumentException In case the input is not valid */ - public static function validateInput($caller, $input) + public static function validateInput(string $caller, $input) { if (null !== $input) { if (\is_resource($input)) { diff --git a/vendor/symfony/process/README.md b/vendor/symfony/process/README.md index afce5e45e..8777de4a6 100644 --- a/vendor/symfony/process/README.md +++ b/vendor/symfony/process/README.md @@ -3,6 +3,17 @@ Process Component The Process component executes commands in sub-processes. +Sponsor +------- + +The Process component for Symfony 5.4/6.0 is [backed][1] by [SensioLabs][2]. + +As the creator of Symfony, SensioLabs supports companies using Symfony, with an +offering encompassing consultancy, expertise, services, training, and technical +assistance to ensure the success of web application development projects. + +Help Symfony by [sponsoring][3] its development! + Resources --------- @@ -11,3 +22,7 @@ Resources * [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls) in the [main Symfony repository](https://github.com/symfony/symfony) + +[1]: https://symfony.com/backers +[2]: https://sensiolabs.com +[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/process/composer.json b/vendor/symfony/process/composer.json index c0f7599f2..1669eba57 100644 --- a/vendor/symfony/process/composer.json +++ b/vendor/symfony/process/composer.json @@ -16,7 +16,7 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "autoload": { diff --git a/vendor/symfony/routing/Alias.php b/vendor/symfony/routing/Alias.php new file mode 100644 index 000000000..f3e1d5a85 --- /dev/null +++ b/vendor/symfony/routing/Alias.php @@ -0,0 +1,96 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing; + +use Symfony\Component\Routing\Exception\InvalidArgumentException; + +class Alias +{ + private $id; + private $deprecation = []; + + public function __construct(string $id) + { + $this->id = $id; + } + + /** + * @return static + */ + public function withId(string $id): self + { + $new = clone $this; + + $new->id = $id; + + return $new; + } + + /** + * Returns the target name of this alias. + * + * @return string The target name + */ + public function getId(): string + { + return $this->id; + } + + /** + * Whether this alias is deprecated, that means it should not be referenced anymore. + * + * @param string $package The name of the composer package that is triggering the deprecation + * @param string $version The version of the package that introduced the deprecation + * @param string $message The deprecation message to use + * + * @return $this + * + * @throws InvalidArgumentException when the message template is invalid + */ + public function setDeprecated(string $package, string $version, string $message): self + { + if ('' !== $message) { + if (preg_match('#[\r\n]|\*/#', $message)) { + throw new InvalidArgumentException('Invalid characters found in deprecation template.'); + } + + if (!str_contains($message, '%alias_id%')) { + throw new InvalidArgumentException('The deprecation template must contain the "%alias_id%" placeholder.'); + } + } + + $this->deprecation = [ + 'package' => $package, + 'version' => $version, + 'message' => $message ?: 'The "%alias_id%" route alias is deprecated. You should stop using it, as it will be removed in the future.', + ]; + + return $this; + } + + public function isDeprecated(): bool + { + return (bool) $this->deprecation; + } + + /** + * @param string $name Route name relying on this alias + */ + public function getDeprecation(string $name): array + { + return [ + 'package' => $this->deprecation['package'], + 'version' => $this->deprecation['version'], + 'message' => str_replace('%alias_id%', $name, $this->deprecation['message']), + ]; + } +} diff --git a/vendor/symfony/routing/Annotation/Route.php b/vendor/symfony/routing/Annotation/Route.php index dc1cee319..81563df20 100644 --- a/vendor/symfony/routing/Annotation/Route.php +++ b/vendor/symfony/routing/Annotation/Route.php @@ -15,10 +15,13 @@ namespace Symfony\Component\Routing\Annotation; * Annotation class for @Route(). * * @Annotation + * @NamedArgumentConstructor * @Target({"CLASS", "METHOD"}) * * @author Fabien Potencier <fabien@symfony.com> + * @author Alexander M. Turek <me@derrabus.de> */ +#[\Attribute(\Attribute::IS_REPEATABLE | \Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD)] class Route { private $path; @@ -31,14 +34,79 @@ class Route private $methods = []; private $schemes = []; private $condition; + private $priority; + private $env; /** - * @param array $data An array of key/value parameters + * @param array|string $data data array managed by the Doctrine Annotations library or the path + * @param array|string|null $path + * @param string[] $requirements + * @param string[]|string $methods + * @param string[]|string $schemes * * @throws \BadMethodCallException */ - public function __construct(array $data) - { + public function __construct( + $data = [], + $path = null, + string $name = null, + array $requirements = [], + array $options = [], + array $defaults = [], + string $host = null, + $methods = [], + $schemes = [], + string $condition = null, + int $priority = null, + string $locale = null, + string $format = null, + bool $utf8 = null, + bool $stateless = null, + string $env = null + ) { + if (\is_string($data)) { + $data = ['path' => $data]; + } elseif (!\is_array($data)) { + throw new \TypeError(sprintf('"%s": Argument $data is expected to be a string or array, got "%s".', __METHOD__, get_debug_type($data))); + } elseif ([] !== $data) { + $deprecation = false; + foreach ($data as $key => $val) { + if (\in_array($key, ['path', 'name', 'requirements', 'options', 'defaults', 'host', 'methods', 'schemes', 'condition', 'priority', 'locale', 'format', 'utf8', 'stateless', 'env', 'value'])) { + $deprecation = true; + } + } + + if ($deprecation) { + trigger_deprecation('symfony/routing', '5.3', 'Passing an array as first argument to "%s" is deprecated. Use named arguments instead.', __METHOD__); + } else { + $localizedPaths = $data; + $data = ['path' => $localizedPaths]; + } + } + if (null !== $path && !\is_string($path) && !\is_array($path)) { + throw new \TypeError(sprintf('"%s": Argument $path is expected to be a string, array or null, got "%s".', __METHOD__, get_debug_type($path))); + } + + $data['path'] = $data['path'] ?? $path; + $data['name'] = $data['name'] ?? $name; + $data['requirements'] = $data['requirements'] ?? $requirements; + $data['options'] = $data['options'] ?? $options; + $data['defaults'] = $data['defaults'] ?? $defaults; + $data['host'] = $data['host'] ?? $host; + $data['methods'] = $data['methods'] ?? $methods; + $data['schemes'] = $data['schemes'] ?? $schemes; + $data['condition'] = $data['condition'] ?? $condition; + $data['priority'] = $data['priority'] ?? $priority; + $data['locale'] = $data['locale'] ?? $locale; + $data['format'] = $data['format'] ?? $format; + $data['utf8'] = $data['utf8'] ?? $utf8; + $data['stateless'] = $data['stateless'] ?? $stateless; + $data['env'] = $data['env'] ?? $env; + + $data = array_filter($data, static function ($value): bool { + return null !== $value; + }); + if (isset($data['localized_paths'])) { throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', static::class)); } @@ -68,6 +136,11 @@ class Route unset($data['utf8']); } + if (isset($data['stateless'])) { + $data['defaults']['_stateless'] = filter_var($data['stateless'], \FILTER_VALIDATE_BOOLEAN) ?: false; + unset($data['stateless']); + } + foreach ($data as $key => $value) { $method = 'set'.str_replace('_', '', $key); if (!method_exists($this, $method)) { @@ -77,7 +150,7 @@ class Route } } - public function setPath($path) + public function setPath(string $path) { $this->path = $path; } @@ -97,7 +170,7 @@ class Route return $this->localizedPaths; } - public function setHost($pattern) + public function setHost(string $pattern) { $this->host = $pattern; } @@ -107,7 +180,7 @@ class Route return $this->host; } - public function setName($name) + public function setName(string $name) { $this->name = $name; } @@ -117,7 +190,7 @@ class Route return $this->name; } - public function setRequirements($requirements) + public function setRequirements(array $requirements) { $this->requirements = $requirements; } @@ -127,7 +200,7 @@ class Route return $this->requirements; } - public function setOptions($options) + public function setOptions(array $options) { $this->options = $options; } @@ -137,7 +210,7 @@ class Route return $this->options; } - public function setDefaults($defaults) + public function setDefaults(array $defaults) { $this->defaults = $defaults; } @@ -167,7 +240,7 @@ class Route return $this->methods; } - public function setCondition($condition) + public function setCondition(?string $condition) { $this->condition = $condition; } @@ -176,4 +249,24 @@ class Route { return $this->condition; } + + public function setPriority(int $priority): void + { + $this->priority = $priority; + } + + public function getPriority(): ?int + { + return $this->priority; + } + + public function setEnv(?string $env): void + { + $this->env = $env; + } + + public function getEnv(): ?string + { + return $this->env; + } } diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md index 5df451356..b96638987 100644 --- a/vendor/symfony/routing/CHANGELOG.md +++ b/vendor/symfony/routing/CHANGELOG.md @@ -1,6 +1,43 @@ CHANGELOG ========= +5.3 +--- + + * Already encoded slashes are not decoded nor double-encoded anymore when generating URLs + * Add support for per-env configuration in XML and Yaml loaders + * Deprecate creating instances of the `Route` annotation class by passing an array of parameters + * Add `RoutingConfigurator::env()` to get the current environment + +5.2.0 +----- + + * Added support for inline definition of requirements and defaults for host + * Added support for `\A` and `\z` as regex start and end for route requirement + * Added support for `#[Route]` attributes + +5.1.0 +----- + + * added the protected method `PhpFileLoader::callConfigurator()` as extension point to ease custom routing configuration + * deprecated `RouteCollectionBuilder` in favor of `RoutingConfigurator`. + * added "priority" option to annotated routes + * added argument `$priority` to `RouteCollection::add()` + * deprecated the `RouteCompiler::REGEX_DELIMITER` constant + * added `ExpressionLanguageProvider` to expose extra functions to route conditions + * added support for a `stateless` keyword for configuring route stateless in PHP, YAML and XML configurations. + * added the "hosts" option to be able to configure the host per locale. + * added `RequestContext::fromUri()` to ease building the default context + +5.0.0 +----- + + * removed `PhpGeneratorDumper` and `PhpMatcherDumper` + * removed `generator_base_class`, `generator_cache_class`, `matcher_base_class` and `matcher_cache_class` router options + * `Serializable` implementing methods for `Route` and `CompiledRoute` are final + * removed referencing service route loaders with a single colon + * Removed `ServiceRouterLoader` and `ObjectRouteLoader`. + 4.4.0 ----- diff --git a/vendor/symfony/routing/CompiledRoute.php b/vendor/symfony/routing/CompiledRoute.php index b6f31b2eb..1449cdb92 100644 --- a/vendor/symfony/routing/CompiledRoute.php +++ b/vendor/symfony/routing/CompiledRoute.php @@ -64,12 +64,9 @@ class CompiledRoute implements \Serializable } /** - * @return string - * - * @internal since Symfony 4.3 - * @final since Symfony 4.3 + * @internal */ - public function serialize() + final public function serialize(): string { return serialize($this->__serialize()); } @@ -87,10 +84,9 @@ class CompiledRoute implements \Serializable } /** - * @internal since Symfony 4.3 - * @final since Symfony 4.3 + * @internal */ - public function unserialize($serialized) + final public function unserialize($serialized) { $this->__unserialize(unserialize($serialized, ['allowed_classes' => false])); } @@ -98,7 +94,7 @@ class CompiledRoute implements \Serializable /** * Returns the static prefix. * - * @return string The static prefix + * @return string */ public function getStaticPrefix() { @@ -108,7 +104,7 @@ class CompiledRoute implements \Serializable /** * Returns the regex. * - * @return string The regex + * @return string */ public function getRegex() { @@ -118,7 +114,7 @@ class CompiledRoute implements \Serializable /** * Returns the host regex. * - * @return string|null The host regex or null + * @return string|null */ public function getHostRegex() { @@ -128,7 +124,7 @@ class CompiledRoute implements \Serializable /** * Returns the tokens. * - * @return array The tokens + * @return array */ public function getTokens() { @@ -138,7 +134,7 @@ class CompiledRoute implements \Serializable /** * Returns the host tokens. * - * @return array The tokens + * @return array */ public function getHostTokens() { @@ -148,7 +144,7 @@ class CompiledRoute implements \Serializable /** * Returns the variables. * - * @return array The variables + * @return array */ public function getVariables() { @@ -158,7 +154,7 @@ class CompiledRoute implements \Serializable /** * Returns the path variables. * - * @return array The variables + * @return array */ public function getPathVariables() { @@ -168,7 +164,7 @@ class CompiledRoute implements \Serializable /** * Returns the host variables. * - * @return array The variables + * @return array */ public function getHostVariables() { diff --git a/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php b/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php index 7068825fe..0e9b9c893 100644 --- a/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php +++ b/vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php @@ -30,6 +30,10 @@ class RoutingResolverPass implements CompilerPassInterface public function __construct(string $resolverServiceId = 'routing.resolver', string $loaderTag = 'routing.loader') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/routing', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->resolverServiceId = $resolverServiceId; $this->loaderTag = $loaderTag; } diff --git a/vendor/symfony/routing/Exception/InvalidArgumentException.php b/vendor/symfony/routing/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..950b9b15c --- /dev/null +++ b/vendor/symfony/routing/Exception/InvalidArgumentException.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Exception; + +class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface +{ +} diff --git a/vendor/symfony/routing/Exception/MethodNotAllowedException.php b/vendor/symfony/routing/Exception/MethodNotAllowedException.php index 8a4371403..27cf2125e 100644 --- a/vendor/symfony/routing/Exception/MethodNotAllowedException.php +++ b/vendor/symfony/routing/Exception/MethodNotAllowedException.php @@ -27,6 +27,12 @@ class MethodNotAllowedException extends \RuntimeException implements ExceptionIn */ public function __construct(array $allowedMethods, ?string $message = '', int $code = 0, \Throwable $previous = null) { + if (null === $message) { + trigger_deprecation('symfony/routing', '5.3', 'Passing null as $message to "%s()" is deprecated, pass an empty string instead.', __METHOD__); + + $message = ''; + } + $this->allowedMethods = array_map('strtoupper', $allowedMethods); parent::__construct($message, $code, $previous); diff --git a/vendor/symfony/routing/Exception/RouteCircularReferenceException.php b/vendor/symfony/routing/Exception/RouteCircularReferenceException.php new file mode 100644 index 000000000..841e35989 --- /dev/null +++ b/vendor/symfony/routing/Exception/RouteCircularReferenceException.php @@ -0,0 +1,20 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Exception; + +class RouteCircularReferenceException extends RuntimeException +{ + public function __construct(string $routeId, array $path) + { + parent::__construct(sprintf('Circular reference detected for route "%s", path: "%s".', $routeId, implode(' -> ', $path))); + } +} diff --git a/vendor/symfony/routing/Exception/RuntimeException.php b/vendor/symfony/routing/Exception/RuntimeException.php new file mode 100644 index 000000000..48da62ec8 --- /dev/null +++ b/vendor/symfony/routing/Exception/RuntimeException.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Exception; + +class RuntimeException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php index 05a01f287..8cbbf8f70 100644 --- a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php +++ b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php @@ -31,7 +31,7 @@ class CompiledUrlGenerator extends UrlGenerator $this->defaultLocale = $defaultLocale; } - public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH) + public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH) { $locale = $parameters['_locale'] ?? $this->context->getParameter('_locale') @@ -50,7 +50,11 @@ class CompiledUrlGenerator extends UrlGenerator throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); } - [$variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes] = $this->compiledRoutes[$name]; + [$variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes, $deprecations] = $this->compiledRoutes[$name] + [6 => []]; + + foreach ($deprecations as $deprecation) { + trigger_deprecation($deprecation['package'], $deprecation['version'], $deprecation['message']); + } if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) { if (!\in_array('_locale', $variables, true)) { diff --git a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php b/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php index 2e5dc5325..568f7f775 100644 --- a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php +++ b/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php @@ -40,10 +40,8 @@ interface ConfigurableRequirementsInterface /** * Enables or disables the exception on incorrect parameters. * Passing null will deactivate the requirements check completely. - * - * @param bool|null $enabled */ - public function setStrictRequirements($enabled); + public function setStrictRequirements(?bool $enabled); /** * Returns whether to throw an exception on incorrect parameters. diff --git a/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php index e90a40a26..9c6740b61 100644 --- a/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php +++ b/vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Routing\Generator\Dumper; +use Symfony\Component\Routing\Exception\RouteCircularReferenceException; +use Symfony\Component\Routing\Exception\RouteNotFoundException; use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper; /** @@ -35,12 +37,57 @@ class CompiledUrlGeneratorDumper extends GeneratorDumper $compiledRoute->getTokens(), $compiledRoute->getHostTokens(), $route->getSchemes(), + [], ]; } return $compiledRoutes; } + public function getCompiledAliases(): array + { + $routes = $this->getRoutes(); + $compiledAliases = []; + foreach ($routes->getAliases() as $name => $alias) { + $deprecations = $alias->isDeprecated() ? [$alias->getDeprecation($name)] : []; + $currentId = $alias->getId(); + $visited = []; + while (null !== $alias = $routes->getAlias($currentId) ?? null) { + if (false !== $searchKey = array_search($currentId, $visited)) { + $visited[] = $currentId; + + throw new RouteCircularReferenceException($currentId, \array_slice($visited, $searchKey)); + } + + if ($alias->isDeprecated()) { + $deprecations[] = $deprecation = $alias->getDeprecation($currentId); + trigger_deprecation($deprecation['package'], $deprecation['version'], $deprecation['message']); + } + + $visited[] = $currentId; + $currentId = $alias->getId(); + } + + if (null === $target = $routes->get($currentId)) { + throw new RouteNotFoundException(sprintf('Target route "%s" for alias "%s" does not exist.', $currentId, $name)); + } + + $compiledTarget = $target->compile(); + + $compiledAliases[$name] = [ + $compiledTarget->getVariables(), + $target->getDefaults(), + $target->getRequirements(), + $compiledTarget->getTokens(), + $compiledTarget->getHostTokens(), + $target->getSchemes(), + $deprecations, + ]; + } + + return $compiledAliases; + } + /** * {@inheritdoc} */ @@ -68,6 +115,10 @@ EOF; $routes .= sprintf("\n '%s' => %s,", $name, CompiledUrlMatcherDumper::export($properties)); } + foreach ($this->getCompiledAliases() as $alias => $properties) { + $routes .= sprintf("\n '%s' => %s,", $alias, CompiledUrlMatcherDumper::export($properties)); + } + return $routes; } } diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php index 26daefc63..d4a248a5b 100644 --- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php +++ b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php @@ -24,14 +24,14 @@ interface GeneratorDumperInterface * Dumps a set of routes to a string representation of executable code * that can then be used to generate a URL of such a route. * - * @return string Executable code + * @return string */ public function dump(array $options = []); /** * Gets the routes to dump. * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection */ public function getRoutes(); } diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php deleted file mode 100644 index 23081f917..000000000 --- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Generator\Dumper; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), \E_USER_DEPRECATED); - -use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper; - -/** - * PhpGeneratorDumper creates a PHP class able to generate URLs for a given set of routes. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Tobias Schultze <http://tobion.de> - * - * @deprecated since Symfony 4.3, use CompiledUrlGeneratorDumper instead. - */ -class PhpGeneratorDumper extends GeneratorDumper -{ - /** - * Dumps a set of routes to a PHP class. - * - * Available options: - * - * * class: The class name - * * base_class: The base class name - * - * @param array $options An array of options - * - * @return string A PHP class representing the generator class - */ - public function dump(array $options = []) - { - $options = array_merge([ - 'class' => 'ProjectUrlGenerator', - 'base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', - ], $options); - - return <<<EOF -<?php - -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\Routing\Exception\RouteNotFoundException; -use Psr\Log\LoggerInterface; - -/** - * This class has been auto-generated - * by the Symfony Routing Component. - */ -class {$options['class']} extends {$options['base_class']} -{ - private static \$declaredRoutes; - private \$defaultLocale; - - public function __construct(RequestContext \$context, LoggerInterface \$logger = null, string \$defaultLocale = null) - { - \$this->context = \$context; - \$this->logger = \$logger; - \$this->defaultLocale = \$defaultLocale; - if (null === self::\$declaredRoutes) { - self::\$declaredRoutes = {$this->generateDeclaredRoutes()}; - } - } - -{$this->generateGenerateMethod()} -} - -EOF; - } - - /** - * Generates PHP code representing an array of defined routes - * together with the routes properties (e.g. requirements). - */ - private function generateDeclaredRoutes(): string - { - $routes = "[\n"; - foreach ($this->getRoutes()->all() as $name => $route) { - $compiledRoute = $route->compile(); - - $properties = []; - $properties[] = $compiledRoute->getVariables(); - $properties[] = $route->getDefaults(); - $properties[] = $route->getRequirements(); - $properties[] = $compiledRoute->getTokens(); - $properties[] = $compiledRoute->getHostTokens(); - $properties[] = $route->getSchemes(); - - $routes .= sprintf(" '%s' => %s,\n", $name, CompiledUrlMatcherDumper::export($properties)); - } - $routes .= ' ]'; - - return $routes; - } - - /** - * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface. - */ - private function generateGenerateMethod(): string - { - return <<<'EOF' - public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH) - { - $locale = $parameters['_locale'] - ?? $this->context->getParameter('_locale') - ?: $this->defaultLocale; - - if (null !== $locale && null !== $name) { - do { - if ((self::$declaredRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) { - $name .= '.'.$locale; - break; - } - } while (false !== $locale = strstr($locale, '_', true)); - } - - if (!isset(self::$declaredRoutes[$name])) { - throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); - } - - list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name]; - - if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) { - if (!\in_array('_locale', $variables, true)) { - unset($parameters['_locale']); - } elseif (!isset($parameters['_locale'])) { - $parameters['_locale'] = $defaults['_locale']; - } - } - - return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes); - } -EOF; - } -} diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php index 4ed870479..acf3ead4f 100644 --- a/vendor/symfony/routing/Generator/UrlGenerator.php +++ b/vendor/symfony/routing/Generator/UrlGenerator.php @@ -66,6 +66,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt // some webservers don't allow the slash in encoded form in the path for security reasons anyway // see http://stackoverflow.com/questions/4069002/http-400-if-2f-part-of-get-url-in-jboss '%2F' => '/', + '%252F' => '%2F', // the following chars are general delimiters in the URI specification but have only special meaning in the authority component // so they can safely be used in the path in unencoded form '%40' => '@', @@ -108,9 +109,9 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt /** * {@inheritdoc} */ - public function setStrictRequirements($enabled) + public function setStrictRequirements(?bool $enabled) { - $this->strictRequirements = null === $enabled ? null : (bool) $enabled; + $this->strictRequirements = $enabled; } /** @@ -124,7 +125,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt /** * {@inheritdoc} */ - public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH) + public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH) { $route = null; $locale = $parameters['_locale'] @@ -167,7 +168,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt * * @return string */ - protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = []) + protected function doGenerate(array $variables, array $defaults, array $requirements, array $tokens, array $parameters, string $name, int $referenceType, array $hostTokens, array $requiredSchemes = []) { $variables = array_flip($variables); $mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters); @@ -294,6 +295,17 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt return $a == $b ? 0 : 1; }); + array_walk_recursive($extra, $caster = static function (&$v) use (&$caster) { + if (\is_object($v)) { + if ($vars = get_object_vars($v)) { + array_walk_recursive($vars, $caster); + $v = $vars; + } elseif (method_exists($v, '__toString')) { + $v = (string) $v; + } + } + }); + // extract fragment $fragment = $defaults['_fragment'] ?? ''; @@ -331,9 +343,9 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt * @param string $basePath The base path * @param string $targetPath The target path * - * @return string The relative target path + * @return string */ - public static function getRelativePath($basePath, $targetPath) + public static function getRelativePath(string $basePath, string $targetPath) { if ($basePath === $targetPath) { return ''; diff --git a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php index 2550619a1..c6d5005f9 100644 --- a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php +++ b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php @@ -71,16 +71,12 @@ interface UrlGeneratorInterface extends RequestContextAwareInterface * * The special parameter _fragment will be used as the document fragment suffixed to the final URL. * - * @param string $name The name of the route - * @param mixed[] $parameters An array of parameters - * @param int $referenceType The type of reference to be generated (one of the constants) - * - * @return string The generated URL + * @return string * * @throws RouteNotFoundException If the named route doesn't exist * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route * @throws InvalidParameterException When a parameter value for a placeholder is not correct because * it does not match the requirement */ - public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH); + public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH); } diff --git a/vendor/symfony/routing/Loader/AnnotationClassLoader.php b/vendor/symfony/routing/Loader/AnnotationClassLoader.php index ca7f46b16..ad5af5c94 100644 --- a/vendor/symfony/routing/Loader/AnnotationClassLoader.php +++ b/vendor/symfony/routing/Loader/AnnotationClassLoader.php @@ -18,7 +18,6 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Routing\Annotation\Route as RouteAnnotation; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RouteCompiler; /** * AnnotationClassLoader loads routing information from a PHP class and its methods. @@ -52,34 +51,50 @@ use Symfony\Component\Routing\RouteCompiler; * { * } * } + * + * On PHP 8, the annotation class can be used as an attribute as well: + * #[Route('/Blog')] + * class Blog + * { + * #[Route('/', name: 'blog_index')] + * public function index() + * { + * } + * #[Route('/{id}', name: 'blog_post', requirements: ["id" => '\d+'])] + * public function show() + * { + * } + * } + * * @author Fabien Potencier <fabien@symfony.com> + * @author Alexander M. Turek <me@derrabus.de> */ abstract class AnnotationClassLoader implements LoaderInterface { protected $reader; + protected $env; /** * @var string */ - protected $routeAnnotationClass = 'Symfony\\Component\\Routing\\Annotation\\Route'; + protected $routeAnnotationClass = RouteAnnotation::class; /** * @var int */ protected $defaultRouteIndex = 0; - public function __construct(Reader $reader) + public function __construct(Reader $reader = null, string $env = null) { $this->reader = $reader; + $this->env = $env; } /** * Sets the annotation class to read route properties from. - * - * @param string $class A fully-qualified class name */ - public function setRouteAnnotationClass($class) + public function setRouteAnnotationClass(string $class) { $this->routeAnnotationClass = $class; } @@ -87,14 +102,13 @@ abstract class AnnotationClassLoader implements LoaderInterface /** * Loads from annotations from a class. * - * @param string $class A class name - * @param string|null $type The resource type + * @param string $class A class name * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection * * @throws \InvalidArgumentException When route can't be parsed */ - public function load($class, $type = null) + public function load($class, string $type = null) { if (!class_exists($class)) { throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class)); @@ -110,21 +124,21 @@ abstract class AnnotationClassLoader implements LoaderInterface $collection = new RouteCollection(); $collection->addResource(new FileResource($class->getFileName())); + if ($globals['env'] && $this->env !== $globals['env']) { + return $collection; + } + foreach ($class->getMethods() as $method) { $this->defaultRouteIndex = 0; - foreach ($this->reader->getMethodAnnotations($method) as $annot) { - if ($annot instanceof $this->routeAnnotationClass) { - $this->addRoute($collection, $annot, $globals, $class, $method); - } + foreach ($this->getAnnotations($method) as $annot) { + $this->addRoute($collection, $annot, $globals, $class, $method); } } if (0 === $collection->count() && $class->hasMethod('__invoke')) { $globals = $this->resetGlobals(); - foreach ($this->reader->getClassAnnotations($class) as $annot) { - if ($annot instanceof $this->routeAnnotationClass) { - $this->addRoute($collection, $annot, $globals, $class, $class->getMethod('__invoke')); - } + foreach ($this->getAnnotations($class) as $annot) { + $this->addRoute($collection, $annot, $globals, $class, $class->getMethod('__invoke')); } } @@ -132,11 +146,14 @@ abstract class AnnotationClassLoader implements LoaderInterface } /** - * @param RouteAnnotation $annot or an object that exposes a similar interface - * @param array $globals + * @param RouteAnnotation $annot or an object that exposes a similar interface */ - protected function addRoute(RouteCollection $collection, $annot, $globals, \ReflectionClass $class, \ReflectionMethod $method) + protected function addRoute(RouteCollection $collection, object $annot, array $globals, \ReflectionClass $class, \ReflectionMethod $method) { + if ($annot->getEnv() && $annot->getEnv() !== $this->env) { + return; + } + $name = $annot->getName(); if (null === $name) { $name = $this->getDefaultRouteName($class, $method); @@ -147,7 +164,7 @@ abstract class AnnotationClassLoader implements LoaderInterface foreach ($requirements as $placeholder => $requirement) { if (\is_int($placeholder)) { - @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), \E_USER_DEPRECATED); + throw new \InvalidArgumentException(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName())); } } @@ -162,10 +179,8 @@ abstract class AnnotationClassLoader implements LoaderInterface $host = $globals['host']; } - $condition = $annot->getCondition(); - if (null === $condition) { - $condition = $globals['condition']; - } + $condition = $annot->getCondition() ?? $globals['condition']; + $priority = $annot->getPriority() ?? $globals['priority']; $path = $annot->getLocalizedPaths() ?: $annot->getPath(); $prefix = $globals['localized_paths'] ?: $globals['path']; @@ -212,11 +227,11 @@ abstract class AnnotationClassLoader implements LoaderInterface $this->configureRoute($route, $class, $method, $annot); if (0 !== $locale) { $route->setDefault('_locale', $locale); - $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); + $route->setRequirement('_locale', preg_quote($locale)); $route->setDefault('_canonical_route', $name); - $collection->add($name.'.'.$locale, $route); + $collection->add($name.'.'.$locale, $route, $priority); } else { - $collection->add($name, $route); + $collection->add($name, $route, $priority); } } } @@ -224,7 +239,7 @@ abstract class AnnotationClassLoader implements LoaderInterface /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return \is_string($resource) && preg_match('/^(?:\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+$/', $resource) && (!$type || 'annotation' === $type); } @@ -264,7 +279,15 @@ abstract class AnnotationClassLoader implements LoaderInterface { $globals = $this->resetGlobals(); - if ($annot = $this->reader->getClassAnnotation($class, $this->routeAnnotationClass)) { + $annot = null; + if (\PHP_VERSION_ID >= 80000 && ($attribute = $class->getAttributes($this->routeAnnotationClass, \ReflectionAttribute::IS_INSTANCEOF)[0] ?? null)) { + $annot = $attribute->newInstance(); + } + if (!$annot && $this->reader) { + $annot = $this->reader->getClassAnnotation($class, $this->routeAnnotationClass); + } + + if ($annot) { if (null !== $annot->getName()) { $globals['name'] = $annot->getName(); } @@ -303,9 +326,12 @@ abstract class AnnotationClassLoader implements LoaderInterface $globals['condition'] = $annot->getCondition(); } + $globals['priority'] = $annot->getPriority() ?? 0; + $globals['env'] = $annot->getEnv(); + foreach ($globals['requirements'] as $placeholder => $requirement) { if (\is_int($placeholder)) { - @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), \E_USER_DEPRECATED); + throw new \InvalidArgumentException(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName())); } } } @@ -313,7 +339,7 @@ abstract class AnnotationClassLoader implements LoaderInterface return $globals; } - private function resetGlobals() + private function resetGlobals(): array { return [ 'path' => null, @@ -326,13 +352,43 @@ abstract class AnnotationClassLoader implements LoaderInterface 'host' => '', 'condition' => '', 'name' => '', + 'priority' => 0, + 'env' => null, ]; } - protected function createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition) + protected function createRoute(string $path, array $defaults, array $requirements, array $options, ?string $host, array $schemes, array $methods, ?string $condition) { return new Route($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition); } - abstract protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot); + abstract protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, object $annot); + + /** + * @param \ReflectionClass|\ReflectionMethod $reflection + * + * @return iterable<int, RouteAnnotation> + */ + private function getAnnotations(object $reflection): iterable + { + if (\PHP_VERSION_ID >= 80000) { + foreach ($reflection->getAttributes($this->routeAnnotationClass, \ReflectionAttribute::IS_INSTANCEOF) as $attribute) { + yield $attribute->newInstance(); + } + } + + if (!$this->reader) { + return; + } + + $anntotations = $reflection instanceof \ReflectionClass + ? $this->reader->getClassAnnotations($reflection) + : $this->reader->getMethodAnnotations($reflection); + + foreach ($anntotations as $annotation) { + if ($annotation instanceof $this->routeAnnotationClass) { + yield $annotation; + } + } + } } diff --git a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php b/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php index 204bc19bd..ae825a39f 100644 --- a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php +++ b/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php @@ -28,11 +28,11 @@ class AnnotationDirectoryLoader extends AnnotationFileLoader * @param string $path A directory path * @param string|null $type The resource type * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection * * @throws \InvalidArgumentException When the directory does not exist or its routes cannot be parsed */ - public function load($path, $type = null) + public function load($path, string $type = null) { if (!is_dir($dir = $this->locator->locate($path))) { return parent::supports($path, $type) ? parent::load($path, $type) : new RouteCollection(); @@ -74,7 +74,7 @@ class AnnotationDirectoryLoader extends AnnotationFileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { if ('annotation' === $type) { return true; diff --git a/vendor/symfony/routing/Loader/AnnotationFileLoader.php b/vendor/symfony/routing/Loader/AnnotationFileLoader.php index 6db5a22f0..27af66ee6 100644 --- a/vendor/symfony/routing/Loader/AnnotationFileLoader.php +++ b/vendor/symfony/routing/Loader/AnnotationFileLoader.php @@ -43,11 +43,11 @@ class AnnotationFileLoader extends FileLoader * @param string $file A PHP file path * @param string|null $type The resource type * - * @return RouteCollection|null A RouteCollection instance + * @return RouteCollection|null * * @throws \InvalidArgumentException When the file does not exist or its routes cannot be parsed */ - public function load($file, $type = null) + public function load($file, string $type = null) { $path = $this->locator->locate($file); @@ -70,7 +70,7 @@ class AnnotationFileLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'annotation' === $type); } @@ -78,11 +78,9 @@ class AnnotationFileLoader extends FileLoader /** * Returns the full class name for the first class in the file. * - * @param string $file A PHP file path - * - * @return string|false Full class name if found, false otherwise + * @return string|false */ - protected function findClass($file) + protected function findClass(string $file) { $class = false; $namespace = false; diff --git a/vendor/symfony/routing/Loader/ClosureLoader.php b/vendor/symfony/routing/Loader/ClosureLoader.php index 5df9f6ae8..42f950f50 100644 --- a/vendor/symfony/routing/Loader/ClosureLoader.php +++ b/vendor/symfony/routing/Loader/ClosureLoader.php @@ -29,17 +29,17 @@ class ClosureLoader extends Loader * @param \Closure $closure A Closure * @param string|null $type The resource type * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection */ - public function load($closure, $type = null) + public function load($closure, string $type = null) { - return $closure(); + return $closure($this->env); } /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return $resource instanceof \Closure && (!$type || 'closure' === $type); } diff --git a/vendor/symfony/routing/Loader/Configurator/AliasConfigurator.php b/vendor/symfony/routing/Loader/Configurator/AliasConfigurator.php new file mode 100644 index 000000000..4b2206e68 --- /dev/null +++ b/vendor/symfony/routing/Loader/Configurator/AliasConfigurator.php @@ -0,0 +1,43 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Loader\Configurator; + +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\Routing\Alias; + +class AliasConfigurator +{ + private $alias; + + public function __construct(Alias $alias) + { + $this->alias = $alias; + } + + /** + * Whether this alias is deprecated, that means it should not be called anymore. + * + * @param string $package The name of the composer package that is triggering the deprecation + * @param string $version The version of the package that introduced the deprecation + * @param string $message The deprecation message to use + * + * @return $this + * + * @throws InvalidArgumentException when the message template is invalid + */ + public function deprecate(string $package, string $version, string $message): self + { + $this->alias->setDeprecated($package, $version, $message); + + return $this; + } +} diff --git a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php index 270e853e8..09274ccdc 100644 --- a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php +++ b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php @@ -20,11 +20,13 @@ use Symfony\Component\Routing\RouteCollection; class CollectionConfigurator { use Traits\AddTrait; + use Traits\HostTrait; use Traits\RouteTrait; private $parent; private $parentConfigurator; private $parentPrefixes; + private $host; public function __construct(RouteCollection $parent, string $name, self $parentConfigurator = null, array $parentPrefixes = null) { @@ -54,6 +56,9 @@ class CollectionConfigurator if (null === $this->prefixes) { $this->collection->addPrefix($this->route->getPath()); } + if (null !== $this->host) { + $this->addHost($this->collection, $this->host); + } $this->parent->addCollection($this->collection); } @@ -99,6 +104,20 @@ class CollectionConfigurator return $this; } + /** + * Sets the host to use for all child routes. + * + * @param string|array $host the host, or the localized hosts + * + * @return $this + */ + final public function host($host): self + { + $this->host = $host; + + return $this; + } + private function createRoute(string $path): Route { return (clone $this->route)->setPath($path); diff --git a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php index b4dfb88b3..32f3efe3a 100644 --- a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php +++ b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php @@ -11,15 +11,15 @@ namespace Symfony\Component\Routing\Loader\Configurator; -use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RouteCompiler; /** * @author Nicolas Grekas <p@tchwork.com> */ class ImportConfigurator { + use Traits\HostTrait; + use Traits\PrefixTrait; use Traits\RouteTrait; private $parent; @@ -57,39 +57,7 @@ class ImportConfigurator */ final public function prefix($prefix, bool $trailingSlashOnRoot = true): self { - if (!\is_array($prefix)) { - $this->route->addPrefix($prefix); - if (!$trailingSlashOnRoot) { - $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath(); - foreach ($this->route->all() as $route) { - if ($route->getPath() === $rootPath) { - $route->setPath(rtrim($rootPath, '/')); - } - } - } - } else { - foreach ($prefix as $locale => $localePrefix) { - $prefix[$locale] = trim(trim($localePrefix), '/'); - } - foreach ($this->route->all() as $name => $route) { - if (null === $locale = $route->getDefault('_locale')) { - $this->route->remove($name); - foreach ($prefix as $locale => $localePrefix) { - $localizedRoute = clone $route; - $localizedRoute->setDefault('_locale', $locale); - $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); - $localizedRoute->setDefault('_canonical_route', $name); - $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $this->route->add($name.'.'.$locale, $localizedRoute); - } - } elseif (!isset($prefix[$locale])) { - throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale)); - } else { - $route->setPath($prefix[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $this->route->add($name, $route); - } - } - } + $this->addPrefix($this->route, $prefix, $trailingSlashOnRoot); return $this; } @@ -105,4 +73,18 @@ class ImportConfigurator return $this; } + + /** + * Sets the host to use for all child routes. + * + * @param string|array $host the host, or the localized hosts + * + * @return $this + */ + final public function host($host): self + { + $this->addHost($this->route, $host); + + return $this; + } } diff --git a/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php index e700f8de7..bb6ce267a 100644 --- a/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php +++ b/vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php @@ -19,11 +19,12 @@ use Symfony\Component\Routing\RouteCollection; class RouteConfigurator { use Traits\AddTrait; + use Traits\HostTrait; use Traits\RouteTrait; - private $parentConfigurator; + protected $parentConfigurator; - public function __construct(RouteCollection $collection, $route, string $name = '', CollectionConfigurator $parentConfigurator = null, array $prefixes = null) + public function __construct(RouteCollection $collection, RouteCollection $route, string $name = '', CollectionConfigurator $parentConfigurator = null, array $prefixes = null) { $this->collection = $collection; $this->route = $route; @@ -31,4 +32,18 @@ class RouteConfigurator $this->parentConfigurator = $parentConfigurator; // for GC control $this->prefixes = $prefixes; } + + /** + * Sets the host to use for all child routes. + * + * @param string|array $host the host, or the localized hosts + * + * @return $this + */ + final public function host($host): self + { + $this->addHost($this->route, $host); + + return $this; + } } diff --git a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php index 8ed06f307..4687bf681 100644 --- a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php +++ b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php @@ -24,13 +24,15 @@ class RoutingConfigurator private $loader; private $path; private $file; + private $env; - public function __construct(RouteCollection $collection, PhpFileLoader $loader, string $path, string $file) + public function __construct(RouteCollection $collection, PhpFileLoader $loader, string $path, string $file, string $env = null) { $this->collection = $collection; $this->loader = $loader; $this->path = $path; $this->file = $file; + $this->env = $env; } /** @@ -57,4 +59,23 @@ class RoutingConfigurator { return new CollectionConfigurator($this->collection, $name); } + + /** + * Get the current environment to be able to write conditional configuration. + */ + final public function env(): ?string + { + return $this->env; + } + + /** + * @return static + */ + final public function withPath(string $path): self + { + $clone = clone $this; + $clone->path = $clone->file = $path; + + return $clone; + } } diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php index 84899aa2e..92b1bd0ea 100644 --- a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php +++ b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php @@ -11,68 +11,41 @@ namespace Symfony\Component\Routing\Loader\Configurator\Traits; +use Symfony\Component\Routing\Loader\Configurator\AliasConfigurator; use Symfony\Component\Routing\Loader\Configurator\CollectionConfigurator; use Symfony\Component\Routing\Loader\Configurator\RouteConfigurator; -use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RouteCompiler; +/** + * @author Nicolas Grekas <p@tchwork.com> + */ trait AddTrait { + use LocalizedRouteTrait; + /** * @var RouteCollection */ - private $collection; - - private $name = ''; - - private $prefixes; + protected $collection; + protected $name = ''; + protected $prefixes; /** * Adds a route. * * @param string|array $path the path, or the localized paths of the route */ - final public function add(string $name, $path): RouteConfigurator + public function add(string $name, $path): RouteConfigurator { - $paths = []; $parentConfigurator = $this instanceof CollectionConfigurator ? $this : ($this instanceof RouteConfigurator ? $this->parentConfigurator : null); + $route = $this->createLocalizedRoute($this->collection, $name, $path, $this->name, $this->prefixes); - if (\is_array($path)) { - if (null === $this->prefixes) { - $paths = $path; - } elseif ($missing = array_diff_key($this->prefixes, $path)) { - throw new \LogicException(sprintf('Route "%s" is missing routes for locale(s) "%s".', $name, implode('", "', array_keys($missing)))); - } else { - foreach ($path as $locale => $localePath) { - if (!isset($this->prefixes[$locale])) { - throw new \LogicException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale)); - } + return new RouteConfigurator($this->collection, $route, $this->name, $parentConfigurator, $this->prefixes); + } - $paths[$locale] = $this->prefixes[$locale].$localePath; - } - } - } elseif (null !== $this->prefixes) { - foreach ($this->prefixes as $locale => $prefix) { - $paths[$locale] = $prefix.$path; - } - } else { - $this->collection->add($this->name.$name, $route = $this->createRoute($path)); - - return new RouteConfigurator($this->collection, $route, $this->name, $parentConfigurator, $this->prefixes); - } - - $routes = new RouteCollection(); - - foreach ($paths as $locale => $path) { - $routes->add($name.'.'.$locale, $route = $this->createRoute($path)); - $this->collection->add($this->name.$name.'.'.$locale, $route); - $route->setDefault('_locale', $locale); - $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); - $route->setDefault('_canonical_route', $this->name.$name); - } - - return new RouteConfigurator($this->collection, $routes, $this->name, $parentConfigurator, $this->prefixes); + public function alias(string $name, string $alias): AliasConfigurator + { + return new AliasConfigurator($this->collection->addAlias($name, $alias)); } /** @@ -80,13 +53,8 @@ trait AddTrait * * @param string|array $path the path, or the localized paths of the route */ - final public function __invoke(string $name, $path): RouteConfigurator + public function __invoke(string $name, $path): RouteConfigurator { return $this->add($name, $path); } - - private function createRoute(string $path): Route - { - return new Route($path); - } } diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php new file mode 100644 index 000000000..54ae6566a --- /dev/null +++ b/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php @@ -0,0 +1,49 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Loader\Configurator\Traits; + +use Symfony\Component\Routing\RouteCollection; + +/** + * @internal + */ +trait HostTrait +{ + final protected function addHost(RouteCollection $routes, $hosts) + { + if (!$hosts || !\is_array($hosts)) { + $routes->setHost($hosts ?: ''); + + return; + } + + foreach ($routes->all() as $name => $route) { + if (null === $locale = $route->getDefault('_locale')) { + $routes->remove($name); + foreach ($hosts as $locale => $host) { + $localizedRoute = clone $route; + $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', preg_quote($locale)); + $localizedRoute->setDefault('_canonical_route', $name); + $localizedRoute->setHost($host); + $routes->add($name.'.'.$locale, $localizedRoute); + } + } elseif (!isset($hosts[$locale])) { + throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding host in its parent collection.', $name, $locale)); + } else { + $route->setHost($hosts[$locale]); + $route->setRequirement('_locale', preg_quote($locale)); + $routes->add($name, $route); + } + } + } +} diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php new file mode 100644 index 000000000..4734a4eac --- /dev/null +++ b/vendor/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php @@ -0,0 +1,76 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Loader\Configurator\Traits; + +use Symfony\Component\Routing\Route; +use Symfony\Component\Routing\RouteCollection; + +/** + * @internal + * + * @author Nicolas Grekas <p@tchwork.com> + * @author Jules Pietri <jules@heahprod.com> + */ +trait LocalizedRouteTrait +{ + /** + * Creates one or many routes. + * + * @param string|array $path the path, or the localized paths of the route + */ + final protected function createLocalizedRoute(RouteCollection $collection, string $name, $path, string $namePrefix = '', array $prefixes = null): RouteCollection + { + $paths = []; + + $routes = new RouteCollection(); + + if (\is_array($path)) { + if (null === $prefixes) { + $paths = $path; + } elseif ($missing = array_diff_key($prefixes, $path)) { + throw new \LogicException(sprintf('Route "%s" is missing routes for locale(s) "%s".', $name, implode('", "', array_keys($missing)))); + } else { + foreach ($path as $locale => $localePath) { + if (!isset($prefixes[$locale])) { + throw new \LogicException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale)); + } + + $paths[$locale] = $prefixes[$locale].$localePath; + } + } + } elseif (null !== $prefixes) { + foreach ($prefixes as $locale => $prefix) { + $paths[$locale] = $prefix.$path; + } + } else { + $routes->add($namePrefix.$name, $route = $this->createRoute($path)); + $collection->add($namePrefix.$name, $route); + + return $routes; + } + + foreach ($paths as $locale => $path) { + $routes->add($name.'.'.$locale, $route = $this->createRoute($path)); + $collection->add($namePrefix.$name.'.'.$locale, $route); + $route->setDefault('_locale', $locale); + $route->setRequirement('_locale', preg_quote($locale)); + $route->setDefault('_canonical_route', $namePrefix.$name); + } + + return $routes; + } + + private function createRoute(string $path): Route + { + return new Route($path); + } +} diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php new file mode 100644 index 000000000..27053bcaf --- /dev/null +++ b/vendor/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php @@ -0,0 +1,62 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Loader\Configurator\Traits; + +use Symfony\Component\Routing\Route; +use Symfony\Component\Routing\RouteCollection; + +/** + * @internal + * + * @author Nicolas Grekas <p@tchwork.com> + */ +trait PrefixTrait +{ + final protected function addPrefix(RouteCollection $routes, $prefix, bool $trailingSlashOnRoot) + { + if (\is_array($prefix)) { + foreach ($prefix as $locale => $localePrefix) { + $prefix[$locale] = trim(trim($localePrefix), '/'); + } + foreach ($routes->all() as $name => $route) { + if (null === $locale = $route->getDefault('_locale')) { + $routes->remove($name); + foreach ($prefix as $locale => $localePrefix) { + $localizedRoute = clone $route; + $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', preg_quote($locale)); + $localizedRoute->setDefault('_canonical_route', $name); + $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); + $routes->add($name.'.'.$locale, $localizedRoute); + } + } elseif (!isset($prefix[$locale])) { + throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix in its parent collection.', $name, $locale)); + } else { + $route->setPath($prefix[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); + $routes->add($name, $route); + } + } + + return; + } + + $routes->addPrefix($prefix); + if (!$trailingSlashOnRoot) { + $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath(); + foreach ($routes->all() as $route) { + if ($route->getPath() === $rootPath) { + $route->setPath(rtrim($rootPath, '/')); + } + } + } + } +} diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php index 22df1af05..ac05d10e5 100644 --- a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php +++ b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php @@ -19,7 +19,7 @@ trait RouteTrait /** * @var RouteCollection|Route */ - private $route; + protected $route; /** * Adds defaults. @@ -160,4 +160,16 @@ trait RouteTrait return $this; } + + /** + * Adds the "_stateless" entry to defaults. + * + * @return $this + */ + final public function stateless(bool $stateless = true): self + { + $this->route->addDefaults(['_stateless' => $stateless]); + + return $this; + } } diff --git a/vendor/symfony/routing/Loader/ContainerLoader.php b/vendor/symfony/routing/Loader/ContainerLoader.php index f248011ba..d8730aec6 100644 --- a/vendor/symfony/routing/Loader/ContainerLoader.php +++ b/vendor/symfony/routing/Loader/ContainerLoader.php @@ -22,15 +22,16 @@ class ContainerLoader extends ObjectLoader { private $container; - public function __construct(ContainerInterface $container) + public function __construct(ContainerInterface $container, string $env = null) { $this->container = $container; + parent::__construct($env); } /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return 'service' === $type && \is_string($resource); } diff --git a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php deleted file mode 100644 index ab2be1026..000000000 --- a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Loader\DependencyInjection; - -use Psr\Container\ContainerInterface; -use Symfony\Component\Routing\Loader\ContainerLoader; -use Symfony\Component\Routing\Loader\ObjectRouteLoader; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ServiceRouterLoader::class, ContainerLoader::class), \E_USER_DEPRECATED); - -/** - * A route loader that executes a service to load the routes. - * - * @author Ryan Weaver <ryan@knpuniversity.com> - * - * @deprecated since Symfony 4.4, use Symfony\Component\Routing\Loader\ContainerLoader instead. - */ -class ServiceRouterLoader extends ObjectRouteLoader -{ - /** - * @var ContainerInterface - */ - private $container; - - public function __construct(ContainerInterface $container) - { - $this->container = $container; - } - - protected function getServiceObject($id) - { - return $this->container->get($id); - } -} diff --git a/vendor/symfony/routing/Loader/DirectoryLoader.php b/vendor/symfony/routing/Loader/DirectoryLoader.php index 08e833e0a..c0f349177 100644 --- a/vendor/symfony/routing/Loader/DirectoryLoader.php +++ b/vendor/symfony/routing/Loader/DirectoryLoader.php @@ -20,7 +20,7 @@ class DirectoryLoader extends FileLoader /** * {@inheritdoc} */ - public function load($file, $type = null) + public function load($file, string $type = null) { $path = $this->locator->locate($file); @@ -49,7 +49,7 @@ class DirectoryLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { // only when type is forced to directory, not to conflict with AnnotationLoader diff --git a/vendor/symfony/routing/Loader/GlobFileLoader.php b/vendor/symfony/routing/Loader/GlobFileLoader.php index 03ee341b9..780fb15dc 100644 --- a/vendor/symfony/routing/Loader/GlobFileLoader.php +++ b/vendor/symfony/routing/Loader/GlobFileLoader.php @@ -24,7 +24,7 @@ class GlobFileLoader extends FileLoader /** * {@inheritdoc} */ - public function load($resource, $type = null) + public function load($resource, string $type = null) { $collection = new RouteCollection(); @@ -40,7 +40,7 @@ class GlobFileLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return 'glob' === $type; } diff --git a/vendor/symfony/routing/Loader/ObjectLoader.php b/vendor/symfony/routing/Loader/ObjectLoader.php index 344a79b70..062453908 100644 --- a/vendor/symfony/routing/Loader/ObjectLoader.php +++ b/vendor/symfony/routing/Loader/ObjectLoader.php @@ -40,36 +40,31 @@ abstract class ObjectLoader extends Loader * * @return RouteCollection */ - public function load($resource, $type = null) + public function load($resource, string $type = null) { - if (!preg_match('/^[^\:]+(?:::?(?:[^\:]+))?$/', $resource)) { + if (!preg_match('/^[^\:]+(?:::(?:[^\:]+))?$/', $resource)) { throw new \InvalidArgumentException(sprintf('Invalid resource "%s" passed to the %s route loader: use the format "object_id::method" or "object_id" if your object class has an "__invoke" method.', $resource, \is_string($type) ? '"'.$type.'"' : 'object')); } - if (1 === substr_count($resource, ':')) { - $resource = str_replace(':', '::', $resource); - @trigger_error(sprintf('Referencing object route loaders with a single colon is deprecated since Symfony 4.1. Use %s instead.', $resource), \E_USER_DEPRECATED); - } - $parts = explode('::', $resource); $method = $parts[1] ?? '__invoke'; $loaderObject = $this->getObject($parts[0]); if (!\is_object($loaderObject)) { - throw new \TypeError(sprintf('"%s:getObject()" must return an object: "%s" returned.', static::class, \gettype($loaderObject))); + throw new \TypeError(sprintf('"%s:getObject()" must return an object: "%s" returned.', static::class, get_debug_type($loaderObject))); } if (!\is_callable([$loaderObject, $method])) { - throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s".', $method, \get_class($loaderObject), $resource)); + throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s".', $method, get_debug_type($loaderObject), $resource)); } - $routeCollection = $loaderObject->$method($this); + $routeCollection = $loaderObject->$method($this, $this->env); if (!$routeCollection instanceof RouteCollection) { - $type = \is_object($routeCollection) ? \get_class($routeCollection) : \gettype($routeCollection); + $type = get_debug_type($routeCollection); - throw new \LogicException(sprintf('The "%s::%s()" method must return a RouteCollection: "%s" returned.', \get_class($loaderObject), $method, $type)); + throw new \LogicException(sprintf('The "%s::%s()" method must return a RouteCollection: "%s" returned.', get_debug_type($loaderObject), $method, $type)); } // make the object file tracked so that if it changes, the cache rebuilds diff --git a/vendor/symfony/routing/Loader/ObjectRouteLoader.php b/vendor/symfony/routing/Loader/ObjectRouteLoader.php deleted file mode 100644 index 44f28fb8a..000000000 --- a/vendor/symfony/routing/Loader/ObjectRouteLoader.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Loader; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ObjectRouteLoader::class, ObjectLoader::class), \E_USER_DEPRECATED); - -/** - * A route loader that calls a method on an object to load the routes. - * - * @author Ryan Weaver <ryan@knpuniversity.com> - * - * @deprecated since Symfony 4.4, use ObjectLoader instead. - */ -abstract class ObjectRouteLoader extends ObjectLoader -{ - /** - * Returns the object that the method will be called on to load routes. - * - * For example, if your application uses a service container, - * the $id may be a service id. - * - * @param string $id - * - * @return object - */ - abstract protected function getServiceObject($id); - - /** - * {@inheritdoc} - */ - public function supports($resource, $type = null) - { - return 'service' === $type; - } - - /** - * {@inheritdoc} - */ - protected function getObject(string $id) - { - return $this->getServiceObject($id); - } -} diff --git a/vendor/symfony/routing/Loader/PhpFileLoader.php b/vendor/symfony/routing/Loader/PhpFileLoader.php index 054290bff..39ac81273 100644 --- a/vendor/symfony/routing/Loader/PhpFileLoader.php +++ b/vendor/symfony/routing/Loader/PhpFileLoader.php @@ -22,6 +22,8 @@ use Symfony\Component\Routing\RouteCollection; * The file must return a RouteCollection instance. * * @author Fabien Potencier <fabien@symfony.com> + * @author Nicolas grekas <p@tchwork.com> + * @author Jules Pietri <jules@heahprod.com> */ class PhpFileLoader extends FileLoader { @@ -31,9 +33,9 @@ class PhpFileLoader extends FileLoader * @param string $file A PHP file path * @param string|null $type The resource type * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection */ - public function load($file, $type = null) + public function load($file, string $type = null) { $path = $this->locator->locate($file); $this->setCurrentDir(\dirname($path)); @@ -47,8 +49,7 @@ class PhpFileLoader extends FileLoader $result = $load($path); if (\is_object($result) && \is_callable($result)) { - $collection = new RouteCollection(); - $result(new RoutingConfigurator($collection, $this, $path, $file)); + $collection = $this->callConfigurator($result, $path, $file); } else { $collection = $result; } @@ -61,10 +62,19 @@ class PhpFileLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'php' === $type); } + + protected function callConfigurator(callable $result, string $path, string $file): RouteCollection + { + $collection = new RouteCollection(); + + $result(new RoutingConfigurator($collection, $this, $path, $file, $this->env)); + + return $collection; + } } /** diff --git a/vendor/symfony/routing/Loader/XmlFileLoader.php b/vendor/symfony/routing/Loader/XmlFileLoader.php index 2b115b10d..220153364 100644 --- a/vendor/symfony/routing/Loader/XmlFileLoader.php +++ b/vendor/symfony/routing/Loader/XmlFileLoader.php @@ -14,9 +14,10 @@ namespace Symfony\Component\Routing\Loader; use Symfony\Component\Config\Loader\FileLoader; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Util\XmlUtils; -use Symfony\Component\Routing\Route; +use Symfony\Component\Routing\Loader\Configurator\Traits\HostTrait; +use Symfony\Component\Routing\Loader\Configurator\Traits\LocalizedRouteTrait; +use Symfony\Component\Routing\Loader\Configurator\Traits\PrefixTrait; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RouteCompiler; /** * XmlFileLoader loads XML routing files. @@ -26,6 +27,10 @@ use Symfony\Component\Routing\RouteCompiler; */ class XmlFileLoader extends FileLoader { + use HostTrait; + use LocalizedRouteTrait; + use PrefixTrait; + public const NAMESPACE_URI = 'http://symfony.com/schema/routing'; public const SCHEME_PATH = '/schema/routing/routing-1.0.xsd'; @@ -35,12 +40,12 @@ class XmlFileLoader extends FileLoader * @param string $file An XML file path * @param string|null $type The resource type * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection * * @throws \InvalidArgumentException when the file cannot be loaded or when the XML cannot be * parsed because it does not validate against the scheme */ - public function load($file, $type = null) + public function load($file, string $type = null) { $path = $this->locator->locate($file); @@ -64,13 +69,9 @@ class XmlFileLoader extends FileLoader /** * Parses a node from a loaded XML file. * - * @param \DOMElement $node Element to parse - * @param string $path Full path of the XML file being processed - * @param string $file Loaded file name - * * @throws \InvalidArgumentException When the XML is invalid */ - protected function parseNode(RouteCollection $collection, \DOMElement $node, $path, $file) + protected function parseNode(RouteCollection $collection, \DOMElement $node, string $path, string $file) { if (self::NAMESPACE_URI !== $node->namespaceURI) { return; @@ -83,6 +84,16 @@ class XmlFileLoader extends FileLoader case 'import': $this->parseImport($collection, $node, $path, $file); break; + case 'when': + if (!$this->env || $node->getAttribute('env') !== $this->env) { + break; + } + foreach ($node->childNodes as $node) { + if ($node instanceof \DOMElement) { + $this->parseNode($collection, $node, $path, $file); + } + } + break; default: throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "route" or "import".', $node->localName, $path)); } @@ -91,7 +102,7 @@ class XmlFileLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return \is_string($resource) && 'xml' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'xml' === $type); } @@ -99,21 +110,28 @@ class XmlFileLoader extends FileLoader /** * Parses a route and adds it to the RouteCollection. * - * @param \DOMElement $node Element to parse that represents a Route - * @param string $path Full path of the XML file being processed - * * @throws \InvalidArgumentException When the XML is invalid */ - protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path) + protected function parseRoute(RouteCollection $collection, \DOMElement $node, string $path) { if ('' === $id = $node->getAttribute('id')) { throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" attribute.', $path)); } + if ('' !== $alias = $node->getAttribute('alias')) { + $alias = $collection->addAlias($id, $alias); + + if ($deprecationInfo = $this->parseDeprecation($node, $path)) { + $alias->setDeprecated($deprecationInfo['package'], $deprecationInfo['version'], $deprecationInfo['message']); + } + + return; + } + $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY); $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY); - [$defaults, $requirements, $options, $condition, $paths] = $this->parseConfigs($node, $path); + [$defaults, $requirements, $options, $condition, $paths, /* $prefixes */, $hosts] = $this->parseConfigs($node, $path); if (!$paths && '' === $node->getAttribute('path')) { throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have a "path" attribute or <path> child nodes.', $path)); @@ -123,30 +141,25 @@ class XmlFileLoader extends FileLoader throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "path" attribute and <path> child nodes.', $path)); } - if (!$paths) { - $route = new Route($node->getAttribute('path'), $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition); - $collection->add($id, $route); - } else { - foreach ($paths as $locale => $p) { - $defaults['_locale'] = $locale; - $defaults['_canonical_route'] = $id; - $requirements['_locale'] = preg_quote($locale, RouteCompiler::REGEX_DELIMITER); - $route = new Route($p, $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition); - $collection->add($id.'.'.$locale, $route); - } + $routes = $this->createLocalizedRoute($collection, $id, $paths ?: $node->getAttribute('path')); + $routes->addDefaults($defaults); + $routes->addRequirements($requirements); + $routes->addOptions($options); + $routes->setSchemes($schemes); + $routes->setMethods($methods); + $routes->setCondition($condition); + + if (null !== $hosts) { + $this->addHost($routes, $hosts); } } /** * Parses an import and adds the routes in the resource to the RouteCollection. * - * @param \DOMElement $node Element to parse that represents a Route - * @param string $path Full path of the XML file being processed - * @param string $file Loaded file name - * * @throws \InvalidArgumentException When the XML is invalid */ - protected function parseImport(RouteCollection $collection, \DOMElement $node, $path, $file) + protected function parseImport(RouteCollection $collection, \DOMElement $node, string $path, string $file) { if ('' === $resource = $node->getAttribute('resource')) { throw new \InvalidArgumentException(sprintf('The <import> element in file "%s" must have a "resource" attribute.', $path)); @@ -154,12 +167,12 @@ class XmlFileLoader extends FileLoader $type = $node->getAttribute('type'); $prefix = $node->getAttribute('prefix'); - $host = $node->hasAttribute('host') ? $node->getAttribute('host') : null; $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY) : null; $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY) : null; $trailingSlashOnRoot = $node->hasAttribute('trailing-slash-on-root') ? XmlUtils::phpize($node->getAttribute('trailing-slash-on-root')) : true; + $namePrefix = $node->getAttribute('name-prefix') ?: null; - [$defaults, $requirements, $options, $condition, /* $paths */, $prefixes] = $this->parseConfigs($node, $path); + [$defaults, $requirements, $options, $condition, /* $paths */, $prefixes, $hosts] = $this->parseConfigs($node, $path); if ('' !== $prefix && $prefixes) { throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "prefix" attribute and <prefix> child nodes.', $path)); @@ -189,44 +202,12 @@ class XmlFileLoader extends FileLoader } foreach ($imported as $subCollection) { - /* @var $subCollection RouteCollection */ - if ('' !== $prefix || !$prefixes) { - $subCollection->addPrefix($prefix); - if (!$trailingSlashOnRoot) { - $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath(); - foreach ($subCollection->all() as $route) { - if ($route->getPath() === $rootPath) { - $route->setPath(rtrim($rootPath, '/')); - } - } - } - } else { - foreach ($prefixes as $locale => $localePrefix) { - $prefixes[$locale] = trim(trim($localePrefix), '/'); - } - foreach ($subCollection->all() as $name => $route) { - if (null === $locale = $route->getDefault('_locale')) { - $subCollection->remove($name); - foreach ($prefixes as $locale => $localePrefix) { - $localizedRoute = clone $route; - $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $localizedRoute->setDefault('_locale', $locale); - $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); - $localizedRoute->setDefault('_canonical_route', $name); - $subCollection->add($name.'.'.$locale, $localizedRoute); - } - } elseif (!isset($prefixes[$locale])) { - throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix when imported in "%s".', $name, $locale, $path)); - } else { - $route->setPath($prefixes[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $subCollection->add($name, $route); - } - } + $this->addPrefix($subCollection, $prefixes ?: $prefix, $trailingSlashOnRoot); + + if (null !== $hosts) { + $this->addHost($subCollection, $hosts); } - if (null !== $host) { - $subCollection->setHost($host); - } if (null !== $condition) { $subCollection->setCondition($condition); } @@ -236,30 +217,25 @@ class XmlFileLoader extends FileLoader if (null !== $methods) { $subCollection->setMethods($methods); } + if (null !== $namePrefix) { + $subCollection->addNamePrefix($namePrefix); + } $subCollection->addDefaults($defaults); $subCollection->addRequirements($requirements); $subCollection->addOptions($options); - if ($namePrefix = $node->getAttribute('name-prefix')) { - $subCollection->addNamePrefix($namePrefix); - } - $collection->addCollection($subCollection); } } /** - * Loads an XML file. - * - * @param string $file An XML file path - * * @return \DOMDocument * * @throws \InvalidArgumentException When loading of XML file fails because of syntax errors * or when the XML structure is not as expected by the scheme - * see validate() */ - protected function loadFile($file) + protected function loadFile(string $file) { return XmlUtils::loadFile($file, __DIR__.static::SCHEME_PATH); } @@ -277,6 +253,7 @@ class XmlFileLoader extends FileLoader $condition = null; $prefixes = []; $paths = []; + $hosts = []; /** @var \DOMElement $n */ foreach ($node->getElementsByTagNameNS(self::NAMESPACE_URI, '*') as $n) { @@ -288,6 +265,9 @@ class XmlFileLoader extends FileLoader case 'path': $paths[$n->getAttribute('locale')] = trim($n->textContent); break; + case 'host': + $hosts[$n->getAttribute('locale')] = trim($n->textContent); + break; case 'prefix': $prefixes[$n->getAttribute('locale')] = trim($n->textContent); break; @@ -331,14 +311,27 @@ class XmlFileLoader extends FileLoader if ($node->hasAttribute('utf8')) { $options['utf8'] = XmlUtils::phpize($node->getAttribute('utf8')); } + if ($stateless = $node->getAttribute('stateless')) { + if (isset($defaults['_stateless'])) { + $name = $node->hasAttribute('id') ? sprintf('"%s".', $node->getAttribute('id')) : sprintf('the "%s" tag.', $node->tagName); - return [$defaults, $requirements, $options, $condition, $paths, $prefixes]; + throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "stateless" attribute and the defaults key "_stateless" for ', $path).$name); + } + + $defaults['_stateless'] = XmlUtils::phpize($stateless); + } + + if (!$hosts) { + $hosts = $node->hasAttribute('host') ? $node->getAttribute('host') : null; + } + + return [$defaults, $requirements, $options, $condition, $paths, $prefixes, $hosts]; } /** * Parses the "default" elements. * - * @return array|bool|float|int|string|null The parsed value of the "default" element + * @return array|bool|float|int|string|null */ private function parseDefaultsConfig(\DOMElement $element, string $path) { @@ -370,7 +363,7 @@ class XmlFileLoader extends FileLoader /** * Recursively parses the value of a "default" element. * - * @return array|bool|float|int|string|null The parsed value + * @return array|bool|float|int|string|null * * @throws \InvalidArgumentException when the XML is invalid */ @@ -436,4 +429,41 @@ class XmlFileLoader extends FileLoader return 'true' === $element->getAttributeNS($namespaceUri, 'nil') || '1' === $element->getAttributeNS($namespaceUri, 'nil'); } + + /** + * Parses the deprecation elements. + * + * @throws \InvalidArgumentException When the XML is invalid + */ + private function parseDeprecation(\DOMElement $node, string $path): array + { + $deprecatedNode = null; + foreach ($node->childNodes as $child) { + if (!$child instanceof \DOMElement || self::NAMESPACE_URI !== $child->namespaceURI) { + continue; + } + if ('deprecated' !== $child->localName) { + throw new \InvalidArgumentException(sprintf('Invalid child element "%s" defined for alias "%s" in "%s".', $child->localName, $node->getAttribute('id'), $path)); + } + + $deprecatedNode = $child; + } + + if (null === $deprecatedNode) { + return []; + } + + if (!$deprecatedNode->hasAttribute('package')) { + throw new \InvalidArgumentException(sprintf('The <deprecated> element in file "%s" must have a "package" attribute.', $path)); + } + if (!$deprecatedNode->hasAttribute('version')) { + throw new \InvalidArgumentException(sprintf('The <deprecated> element in file "%s" must have a "version" attribute.', $path)); + } + + return [ + 'package' => $deprecatedNode->getAttribute('package'), + 'version' => $deprecatedNode->getAttribute('version'), + 'message' => trim($deprecatedNode->nodeValue), + ]; + } } diff --git a/vendor/symfony/routing/Loader/YamlFileLoader.php b/vendor/symfony/routing/Loader/YamlFileLoader.php index a4edb8869..ae98a314e 100644 --- a/vendor/symfony/routing/Loader/YamlFileLoader.php +++ b/vendor/symfony/routing/Loader/YamlFileLoader.php @@ -13,9 +13,10 @@ namespace Symfony\Component\Routing\Loader; use Symfony\Component\Config\Loader\FileLoader; use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Routing\Route; +use Symfony\Component\Routing\Loader\Configurator\Traits\HostTrait; +use Symfony\Component\Routing\Loader\Configurator\Traits\LocalizedRouteTrait; +use Symfony\Component\Routing\Loader\Configurator\Traits\PrefixTrait; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RouteCompiler; use Symfony\Component\Yaml\Exception\ParseException; use Symfony\Component\Yaml\Parser as YamlParser; use Symfony\Component\Yaml\Yaml; @@ -28,8 +29,12 @@ use Symfony\Component\Yaml\Yaml; */ class YamlFileLoader extends FileLoader { + use HostTrait; + use LocalizedRouteTrait; + use PrefixTrait; + private const AVAILABLE_KEYS = [ - 'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8', 'exclude', + 'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8', 'exclude', 'stateless', ]; private $yamlParser; @@ -39,11 +44,11 @@ class YamlFileLoader extends FileLoader * @param string $file A Yaml file path * @param string|null $type The resource type * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection * * @throws \InvalidArgumentException When a route can't be parsed because YAML is invalid */ - public function load($file, $type = null) + public function load($file, string $type = null) { $path = $this->locator->locate($file); @@ -79,6 +84,24 @@ class YamlFileLoader extends FileLoader } foreach ($parsedConfig as $name => $config) { + if (0 === strpos($name, 'when@')) { + if (!$this->env || 'when@'.$this->env !== $name) { + continue; + } + + foreach ($config as $name => $config) { + $this->validate($config, $name.'" when "@'.$this->env, $path); + + if (isset($config['resource'])) { + $this->parseImport($collection, $config, $path, $file); + } else { + $this->parseRoute($collection, $name, $config, $path); + } + } + + continue; + } + $this->validate($config, $name, $path); if (isset($config['resource'])) { @@ -94,31 +117,37 @@ class YamlFileLoader extends FileLoader /** * {@inheritdoc} */ - public function supports($resource, $type = null) + public function supports($resource, string $type = null) { return \is_string($resource) && \in_array(pathinfo($resource, \PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type); } /** * Parses a route and adds it to the RouteCollection. - * - * @param string $name Route name - * @param array $config Route definition - * @param string $path Full path of the YAML file being processed */ - protected function parseRoute(RouteCollection $collection, $name, array $config, $path) + protected function parseRoute(RouteCollection $collection, string $name, array $config, string $path) { + if (isset($config['alias'])) { + $alias = $collection->addAlias($name, $config['alias']); + $deprecation = $config['deprecated'] ?? null; + if (null !== $deprecation) { + $alias->setDeprecated( + $deprecation['package'], + $deprecation['version'], + $deprecation['message'] ?? '' + ); + } + + return; + } + $defaults = $config['defaults'] ?? []; $requirements = $config['requirements'] ?? []; $options = $config['options'] ?? []; - $host = $config['host'] ?? ''; - $schemes = $config['schemes'] ?? []; - $methods = $config['methods'] ?? []; - $condition = $config['condition'] ?? null; foreach ($requirements as $placeholder => $requirement) { if (\is_int($placeholder)) { - @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), \E_USER_DEPRECATED); + throw new \InvalidArgumentException(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path)); } } @@ -134,32 +163,27 @@ class YamlFileLoader extends FileLoader if (isset($config['utf8'])) { $options['utf8'] = $config['utf8']; } + if (isset($config['stateless'])) { + $defaults['_stateless'] = $config['stateless']; + } - if (\is_array($config['path'])) { - $route = new Route('', $defaults, $requirements, $options, $host, $schemes, $methods, $condition); + $routes = $this->createLocalizedRoute($collection, $name, $config['path']); + $routes->addDefaults($defaults); + $routes->addRequirements($requirements); + $routes->addOptions($options); + $routes->setSchemes($config['schemes'] ?? []); + $routes->setMethods($config['methods'] ?? []); + $routes->setCondition($config['condition'] ?? null); - foreach ($config['path'] as $locale => $path) { - $localizedRoute = clone $route; - $localizedRoute->setDefault('_locale', $locale); - $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); - $localizedRoute->setDefault('_canonical_route', $name); - $localizedRoute->setPath($path); - $collection->add($name.'.'.$locale, $localizedRoute); - } - } else { - $route = new Route($config['path'], $defaults, $requirements, $options, $host, $schemes, $methods, $condition); - $collection->add($name, $route); + if (isset($config['host'])) { + $this->addHost($routes, $config['host']); } } /** * Parses an import and adds the routes in the resource to the RouteCollection. - * - * @param array $config Route definition - * @param string $path Full path of the YAML file being processed - * @param string $file Loaded file name */ - protected function parseImport(RouteCollection $collection, array $config, $path, $file) + protected function parseImport(RouteCollection $collection, array $config, string $path, string $file) { $type = $config['type'] ?? null; $prefix = $config['prefix'] ?? ''; @@ -171,6 +195,7 @@ class YamlFileLoader extends FileLoader $schemes = $config['schemes'] ?? null; $methods = $config['methods'] ?? null; $trailingSlashOnRoot = $config['trailing_slash_on_root'] ?? true; + $namePrefix = $config['name_prefix'] ?? null; $exclude = $config['exclude'] ?? null; if (isset($config['controller'])) { @@ -185,9 +210,13 @@ class YamlFileLoader extends FileLoader if (isset($config['utf8'])) { $options['utf8'] = $config['utf8']; } + if (isset($config['stateless'])) { + $defaults['_stateless'] = $config['stateless']; + } $this->setCurrentDir(\dirname($path)); + /** @var RouteCollection[] $imported */ $imported = $this->import($config['resource'], $type, false, $file, $exclude) ?: []; if (!\is_array($imported)) { @@ -195,43 +224,10 @@ class YamlFileLoader extends FileLoader } foreach ($imported as $subCollection) { - /* @var $subCollection RouteCollection */ - if (!\is_array($prefix)) { - $subCollection->addPrefix($prefix); - if (!$trailingSlashOnRoot) { - $rootPath = (new Route(trim(trim($prefix), '/').'/'))->getPath(); - foreach ($subCollection->all() as $route) { - if ($route->getPath() === $rootPath) { - $route->setPath(rtrim($rootPath, '/')); - } - } - } - } else { - foreach ($prefix as $locale => $localePrefix) { - $prefix[$locale] = trim(trim($localePrefix), '/'); - } - foreach ($subCollection->all() as $name => $route) { - if (null === $locale = $route->getDefault('_locale')) { - $subCollection->remove($name); - foreach ($prefix as $locale => $localePrefix) { - $localizedRoute = clone $route; - $localizedRoute->setDefault('_locale', $locale); - $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER)); - $localizedRoute->setDefault('_canonical_route', $name); - $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $subCollection->add($name.'.'.$locale, $localizedRoute); - } - } elseif (!isset($prefix[$locale])) { - throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding prefix when imported in "%s".', $name, $locale, $file)); - } else { - $route->setPath($prefix[$locale].(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath())); - $subCollection->add($name, $route); - } - } - } + $this->addPrefix($subCollection, $prefix, $trailingSlashOnRoot); if (null !== $host) { - $subCollection->setHost($host); + $this->addHost($subCollection, $host); } if (null !== $condition) { $subCollection->setCondition($condition); @@ -242,14 +238,13 @@ class YamlFileLoader extends FileLoader if (null !== $methods) { $subCollection->setMethods($methods); } + if (null !== $namePrefix) { + $subCollection->addNamePrefix($namePrefix); + } $subCollection->addDefaults($defaults); $subCollection->addRequirements($requirements); $subCollection->addOptions($options); - if (isset($config['name_prefix'])) { - $subCollection->addNamePrefix($config['name_prefix']); - } - $collection->addCollection($subCollection); } } @@ -264,11 +259,16 @@ class YamlFileLoader extends FileLoader * @throws \InvalidArgumentException If one of the provided config keys is not supported, * something is missing or the combination is nonsense */ - protected function validate($config, $name, $path) + protected function validate($config, string $name, string $path) { if (!\is_array($config)) { throw new \InvalidArgumentException(sprintf('The definition of "%s" in "%s" must be a YAML array.', $name, $path)); } + if (isset($config['alias'])) { + $this->validateAlias($config, $name, $path); + + return; + } if ($extraKeys = array_diff(array_keys($config), self::AVAILABLE_KEYS)) { throw new \InvalidArgumentException(sprintf('The routing file "%s" contains unsupported keys for "%s": "%s". Expected one of: "%s".', $path, $name, implode('", "', $extraKeys), implode('", "', self::AVAILABLE_KEYS))); } @@ -284,5 +284,31 @@ class YamlFileLoader extends FileLoader if (isset($config['controller']) && isset($config['defaults']['_controller'])) { throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" key and the defaults key "_controller" for "%s".', $path, $name)); } + if (isset($config['stateless']) && isset($config['defaults']['_stateless'])) { + throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "stateless" key and the defaults key "_stateless" for "%s".', $path, $name)); + } + } + + /** + * @throws \InvalidArgumentException If one of the provided config keys is not supported, + * something is missing or the combination is nonsense + */ + private function validateAlias(array $config, string $name, string $path): void + { + foreach ($config as $key => $value) { + if (!\in_array($key, ['alias', 'deprecated'], true)) { + throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify other keys than "alias" and "deprecated" for "%s".', $path, $name)); + } + + if ('deprecated' === $key) { + if (!isset($value['package'])) { + throw new \InvalidArgumentException(sprintf('The routing file "%s" must specify the attribute "package" of the "deprecated" option for "%s".', $path, $name)); + } + + if (!isset($value['version'])) { + throw new \InvalidArgumentException(sprintf('The routing file "%s" must specify the attribute "version" of the "deprecated" option for "%s".', $path, $name)); + } + } + } } } diff --git a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd index 8e61d03e9..66c40a0d8 100644 --- a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd +++ b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd @@ -21,9 +21,18 @@ <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="import" type="import" /> <xsd:element name="route" type="route" /> + <xsd:element name="when" type="when" /> </xsd:choice> </xsd:complexType> + <xsd:complexType name="when"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="import" type="import" /> + <xsd:element name="route" type="route" /> + </xsd:choice> + <xsd:attribute name="env" type="xsd:string" use="required" /> + </xsd:complexType> + <xsd:complexType name="localized-path"> <xsd:simpleContent> <xsd:extension base="xsd:string"> @@ -45,6 +54,8 @@ <xsd:sequence> <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="path" type="localized-path" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="host" type="localized-path" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="deprecated" type="deprecated" minOccurs="0" maxOccurs="1" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="required" /> <xsd:attribute name="path" type="xsd:string" /> @@ -55,6 +66,8 @@ <xsd:attribute name="locale" type="xsd:string" /> <xsd:attribute name="format" type="xsd:string" /> <xsd:attribute name="utf8" type="xsd:boolean" /> + <xsd:attribute name="stateless" type="xsd:boolean" /> + <xsd:attribute name="alias" type="xsd:string" /> </xsd:complexType> <xsd:complexType name="import"> @@ -62,6 +75,7 @@ <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="prefix" type="localized-path" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="exclude" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="host" type="localized-path" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="resource" type="xsd:string" use="required" /> <xsd:attribute name="type" type="xsd:string" /> @@ -76,6 +90,7 @@ <xsd:attribute name="format" type="xsd:string" /> <xsd:attribute name="trailing-slash-on-root" type="xsd:boolean" /> <xsd:attribute name="utf8" type="xsd:boolean" /> + <xsd:attribute name="stateless" type="xsd:boolean" /> </xsd:complexType> <xsd:complexType name="default" mixed="true"> @@ -167,4 +182,13 @@ </xsd:extension> </xsd:complexContent> </xsd:complexType> + + <xsd:complexType name="deprecated"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="package" type="xsd:string" use="required" /> + <xsd:attribute name="version" type="xsd:string" use="required" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> </xsd:schema> diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php index f78a6cb72..bdb7ba3d0 100644 --- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php +++ b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php @@ -30,9 +30,13 @@ trait CompiledUrlMatcherTrait private $staticRoutes = []; private $regexpList = []; private $dynamicRoutes = []; + + /** + * @var callable|null + */ private $checkCondition; - public function match($pathinfo): array + public function match(string $pathinfo): array { $allow = $allowSchemes = []; if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { @@ -93,10 +97,10 @@ trait CompiledUrlMatcherTrait } if ($requiredHost) { - if ('#' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) { + if ('{' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) { continue; } - if ('#' === $requiredHost[0] && $hostMatches) { + if ('{' === $requiredHost[0] && $hostMatches) { $hostMatches['_route'] = $ret['_route']; $ret = $this->mergeDefaults($hostMatches, $ret); } diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php index 34aad9274..8e33802d3 100644 --- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php +++ b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php @@ -24,14 +24,14 @@ interface MatcherDumperInterface * Dumps a set of routes to a string representation of executable code * that can then be used to match a request against these routes. * - * @return string Executable code + * @return string */ public function dump(array $options = []); /** * Gets the routes to dump. * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection */ public function getRoutes(); } diff --git a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php deleted file mode 100644 index 09404efaa..000000000 --- a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Routing\Matcher\Dumper; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), \E_USER_DEPRECATED); - -/** - * PhpMatcherDumper creates a PHP class able to match URLs for a given set of routes. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Tobias Schultze <http://tobion.de> - * @author Arnaud Le Blanc <arnaud.lb@gmail.com> - * @author Nicolas Grekas <p@tchwork.com> - * - * @deprecated since Symfony 4.3, use CompiledUrlMatcherDumper instead. - */ -class PhpMatcherDumper extends CompiledUrlMatcherDumper -{ - /** - * Dumps a set of routes to a PHP class. - * - * Available options: - * - * * class: The class name - * * base_class: The base class name - * - * @param array $options An array of options - * - * @return string A PHP class representing the matcher class - */ - public function dump(array $options = []) - { - $options = array_replace([ - 'class' => 'ProjectUrlMatcher', - 'base_class' => 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher', - ], $options); - - $code = parent::dump(); - $code = preg_replace('#\n ([^ ].*?) // \$(\w++)$#m', "\n \$this->$2 = $1", $code); - $code = str_replace(",\n $", ";\n $", $code); - $code = substr($code, strpos($code, '$this') - 4, -5).";\n"; - $code = preg_replace('/^ \$this->\w++ = (?:null|false|\[\n \]);\n/m', '', $code); - $code = str_replace("\n ", "\n ", "\n".$code); - - return <<<EOF -<?php - -use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait; -use Symfony\Component\Routing\RequestContext; - -/** - * This class has been auto-generated - * by the Symfony Routing Component. - */ -class {$options['class']} extends {$options['base_class']} -{ - use CompiledUrlMatcherTrait; - - public function __construct(RequestContext \$context) - { - \$this->context = \$context;{$code} } -} - -EOF; - } -} diff --git a/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php b/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php index d61282bd3..97bd692a5 100644 --- a/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php +++ b/vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php @@ -151,40 +151,43 @@ class StaticPrefixCollection $staticLength = null; set_error_handler([__CLASS__, 'handleError']); - for ($i = $baseLength; $i < $end && $prefix[$i] === $anotherPrefix[$i]; ++$i) { - if ('(' === $prefix[$i]) { - $staticLength = $staticLength ?? $i; - for ($j = 1 + $i, $n = 1; $j < $end && 0 < $n; ++$j) { - if ($prefix[$j] !== $anotherPrefix[$j]) { - break 2; + try { + for ($i = $baseLength; $i < $end && $prefix[$i] === $anotherPrefix[$i]; ++$i) { + if ('(' === $prefix[$i]) { + $staticLength = $staticLength ?? $i; + for ($j = 1 + $i, $n = 1; $j < $end && 0 < $n; ++$j) { + if ($prefix[$j] !== $anotherPrefix[$j]) { + break 2; + } + if ('(' === $prefix[$j]) { + ++$n; + } elseif (')' === $prefix[$j]) { + --$n; + } elseif ('\\' === $prefix[$j] && (++$j === $end || $prefix[$j] !== $anotherPrefix[$j])) { + --$j; + break; + } } - if ('(' === $prefix[$j]) { - ++$n; - } elseif (')' === $prefix[$j]) { - --$n; - } elseif ('\\' === $prefix[$j] && (++$j === $end || $prefix[$j] !== $anotherPrefix[$j])) { - --$j; + if (0 < $n) { break; } - } - if (0 < $n) { + if (('?' === ($prefix[$j] ?? '') || '?' === ($anotherPrefix[$j] ?? '')) && ($prefix[$j] ?? '') !== ($anotherPrefix[$j] ?? '')) { + break; + } + $subPattern = substr($prefix, $i, $j - $i); + if ($prefix !== $anotherPrefix && !preg_match('/^\(\[[^\]]++\]\+\+\)$/', $subPattern) && !preg_match('{(?<!'.$subPattern.')}', '')) { + // sub-patterns of variable length are not considered as common prefixes because their greediness would break in-order matching + break; + } + $i = $j - 1; + } elseif ('\\' === $prefix[$i] && (++$i === $end || $prefix[$i] !== $anotherPrefix[$i])) { + --$i; break; } - if (('?' === ($prefix[$j] ?? '') || '?' === ($anotherPrefix[$j] ?? '')) && ($prefix[$j] ?? '') !== ($anotherPrefix[$j] ?? '')) { - break; - } - $subPattern = substr($prefix, $i, $j - $i); - if ($prefix !== $anotherPrefix && !preg_match('/^\(\[[^\]]++\]\+\+\)$/', $subPattern) && !preg_match('{(?<!'.$subPattern.')}', '')) { - // sub-patterns of variable length are not considered as common prefixes because their greediness would break in-order matching - break; - } - $i = $j - 1; - } elseif ('\\' === $prefix[$i] && (++$i === $end || $prefix[$i] !== $anotherPrefix[$i])) { - --$i; - break; } + } finally { + restore_error_handler(); } - restore_error_handler(); if ($i < $end && 0b10 === (\ord($prefix[$i]) >> 6) && preg_match('//u', $prefix.' '.$anotherPrefix)) { do { // Prevent cutting in the middle of an UTF-8 characters diff --git a/vendor/symfony/routing/Matcher/ExpressionLanguageProvider.php b/vendor/symfony/routing/Matcher/ExpressionLanguageProvider.php new file mode 100644 index 000000000..96bb7babf --- /dev/null +++ b/vendor/symfony/routing/Matcher/ExpressionLanguageProvider.php @@ -0,0 +1,58 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Matcher; + +use Symfony\Component\ExpressionLanguage\ExpressionFunction; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +use Symfony\Contracts\Service\ServiceProviderInterface; + +/** + * Exposes functions defined in the request context to route conditions. + * + * @author Ahmed TAILOULOUTE <ahmed.tailouloute@gmail.com> + */ +class ExpressionLanguageProvider implements ExpressionFunctionProviderInterface +{ + private $functions; + + public function __construct(ServiceProviderInterface $functions) + { + $this->functions = $functions; + } + + /** + * {@inheritdoc} + */ + public function getFunctions() + { + $functions = []; + + foreach ($this->functions->getProvidedServices() as $function => $type) { + $functions[] = new ExpressionFunction( + $function, + static function (...$args) use ($function) { + return sprintf('($context->getParameter(\'_functions\')->get(%s)(%s))', var_export($function, true), implode(', ', $args)); + }, + function ($values, ...$args) use ($function) { + return $values['context']->getParameter('_functions')->get($function)(...$args); + } + ); + } + + return $functions; + } + + public function get(string $function): callable + { + return $this->functions->get($function); + } +} diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php index eb7bec7f3..3cd7c81a6 100644 --- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php +++ b/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php @@ -22,7 +22,7 @@ abstract class RedirectableUrlMatcher extends UrlMatcher implements Redirectable /** * {@inheritdoc} */ - public function match($pathinfo) + public function match(string $pathinfo) { try { return parent::match($pathinfo); diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php index 7c27bc879..d07f42093 100644 --- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php +++ b/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php @@ -19,13 +19,13 @@ namespace Symfony\Component\Routing\Matcher; interface RedirectableUrlMatcherInterface { /** - * Redirects the user to another URL. + * Redirects the user to another URL and returns the parameters for the redirection. * * @param string $path The path info to redirect to * @param string $route The route name that matched * @param string|null $scheme The URL scheme (null to keep the current one) * - * @return array An array of parameters + * @return array */ - public function redirect($path, $route, $scheme = null); + public function redirect(string $path, string $route, string $scheme = null); } diff --git a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php b/vendor/symfony/routing/Matcher/RequestMatcherInterface.php index 0c193ff2d..c05016e82 100644 --- a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php +++ b/vendor/symfony/routing/Matcher/RequestMatcherInterface.php @@ -26,10 +26,10 @@ interface RequestMatcherInterface /** * Tries to match a request with a set of routes. * - * If the matcher can not find information, it must throw one of the exceptions documented + * If the matcher cannot find information, it must throw one of the exceptions documented * below. * - * @return array An array of parameters + * @return array * * @throws NoConfigurationException If no routing configuration could be found * @throws ResourceNotFoundException If no matching resource could be found diff --git a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php index f113eb03b..9e8c4c42d 100644 --- a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php +++ b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php @@ -29,7 +29,7 @@ class TraceableUrlMatcher extends UrlMatcher protected $traces; - public function getTraces($pathinfo) + public function getTraces(string $pathinfo) { $this->traces = []; @@ -50,7 +50,7 @@ class TraceableUrlMatcher extends UrlMatcher return $traces; } - protected function matchCollection($pathinfo, RouteCollection $routes) + protected function matchCollection(string $pathinfo, RouteCollection $routes) { // HEAD and GET are equivalent as per RFC if ('HEAD' === $method = $this->context->getMethod()) { diff --git a/vendor/symfony/routing/Matcher/UrlMatcher.php b/vendor/symfony/routing/Matcher/UrlMatcher.php index a14b04faa..f076a2f5e 100644 --- a/vendor/symfony/routing/Matcher/UrlMatcher.php +++ b/vendor/symfony/routing/Matcher/UrlMatcher.php @@ -81,7 +81,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface /** * {@inheritdoc} */ - public function match($pathinfo) + public function match(string $pathinfo) { $this->allow = $this->allowSchemes = []; @@ -120,13 +120,13 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface * * @param string $pathinfo The path info to be parsed * - * @return array An array of parameters + * @return array * * @throws NoConfigurationException If no routing configuration could be found * @throws ResourceNotFoundException If the resource could not be found * @throws MethodNotAllowedException If the resource was found but the request method is not allowed */ - protected function matchCollection($pathinfo, RouteCollection $routes) + protected function matchCollection(string $pathinfo, RouteCollection $routes) { // HEAD and GET are equivalent as per RFC if ('HEAD' === $method = $this->context->getMethod()) { @@ -205,12 +205,9 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface * in matchers that do not have access to the matched Route instance * (like the PHP and Apache matcher dumpers). * - * @param string $name The name of the route - * @param array $attributes An array of attributes from the matcher - * - * @return array An array of parameters + * @return array */ - protected function getAttributes(Route $route, $name, array $attributes) + protected function getAttributes(Route $route, string $name, array $attributes) { $defaults = $route->getDefaults(); if (isset($defaults['_canonical_route'])) { @@ -225,12 +222,9 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface /** * Handles specific route requirements. * - * @param string $pathinfo The path - * @param string $name The route name - * * @return array The first element represents the status, the second contains additional information */ - protected function handleRouteRequirements($pathinfo, $name, Route $route) + protected function handleRouteRequirements(string $pathinfo, string $name, Route $route) { // expression condition if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), ['context' => $this->context, 'request' => $this->request ?: $this->createRequest($pathinfo)])) { @@ -243,12 +237,9 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface /** * Get merged default parameters. * - * @param array $params The parameters - * @param array $defaults The defaults - * - * @return array Merged default parameters + * @return array */ - protected function mergeDefaults($params, $defaults) + protected function mergeDefaults(array $params, array $defaults) { foreach ($params as $key => $value) { if (!\is_int($key) && null !== $value) { diff --git a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php b/vendor/symfony/routing/Matcher/UrlMatcherInterface.php index 17f1f97b3..0a5be9744 100644 --- a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php +++ b/vendor/symfony/routing/Matcher/UrlMatcherInterface.php @@ -26,16 +26,16 @@ interface UrlMatcherInterface extends RequestContextAwareInterface /** * Tries to match a URL path with a set of routes. * - * If the matcher can not find information, it must throw one of the exceptions documented + * If the matcher cannot find information, it must throw one of the exceptions documented * below. * * @param string $pathinfo The path info to be parsed (raw format, i.e. not urldecoded) * - * @return array An array of parameters + * @return array * * @throws NoConfigurationException If no routing configuration could be found * @throws ResourceNotFoundException If the resource could not be found * @throws MethodNotAllowedException If the resource was found but the request method is not allowed */ - public function match($pathinfo); + public function match(string $pathinfo); } diff --git a/vendor/symfony/routing/RequestContext.php b/vendor/symfony/routing/RequestContext.php index b1982a63f..f54c430ee 100644 --- a/vendor/symfony/routing/RequestContext.php +++ b/vendor/symfony/routing/RequestContext.php @@ -45,6 +45,23 @@ class RequestContext $this->setQueryString($queryString); } + public static function fromUri(string $uri, string $host = 'localhost', string $scheme = 'http', int $httpPort = 80, int $httpsPort = 443): self + { + $uri = parse_url($uri); + $scheme = $uri['scheme'] ?? $scheme; + $host = $uri['host'] ?? $host; + + if (isset($uri['port'])) { + if ('http' === $scheme) { + $httpPort = $uri['port']; + } elseif ('https' === $scheme) { + $httpsPort = $uri['port']; + } + } + + return new self($uri['path'] ?? '', 'GET', $host, $scheme, $httpPort, $httpsPort); + } + /** * Updates the RequestContext information based on a HttpFoundation Request. * @@ -67,7 +84,7 @@ class RequestContext /** * Gets the base URL. * - * @return string The base URL + * @return string */ public function getBaseUrl() { @@ -77,13 +94,11 @@ class RequestContext /** * Sets the base URL. * - * @param string $baseUrl The base URL - * * @return $this */ - public function setBaseUrl($baseUrl) + public function setBaseUrl(string $baseUrl) { - $this->baseUrl = $baseUrl; + $this->baseUrl = rtrim($baseUrl, '/'); return $this; } @@ -91,7 +106,7 @@ class RequestContext /** * Gets the path info. * - * @return string The path info + * @return string */ public function getPathInfo() { @@ -101,11 +116,9 @@ class RequestContext /** * Sets the path info. * - * @param string $pathInfo The path info - * * @return $this */ - public function setPathInfo($pathInfo) + public function setPathInfo(string $pathInfo) { $this->pathInfo = $pathInfo; @@ -117,7 +130,7 @@ class RequestContext * * The method is always an uppercased string. * - * @return string The HTTP method + * @return string */ public function getMethod() { @@ -127,11 +140,9 @@ class RequestContext /** * Sets the HTTP method. * - * @param string $method The HTTP method - * * @return $this */ - public function setMethod($method) + public function setMethod(string $method) { $this->method = strtoupper($method); @@ -143,7 +154,7 @@ class RequestContext * * The host is always lowercased because it must be treated case-insensitive. * - * @return string The HTTP host + * @return string */ public function getHost() { @@ -153,11 +164,9 @@ class RequestContext /** * Sets the HTTP host. * - * @param string $host The HTTP host - * * @return $this */ - public function setHost($host) + public function setHost(string $host) { $this->host = strtolower($host); @@ -167,7 +176,7 @@ class RequestContext /** * Gets the HTTP scheme. * - * @return string The HTTP scheme + * @return string */ public function getScheme() { @@ -177,11 +186,9 @@ class RequestContext /** * Sets the HTTP scheme. * - * @param string $scheme The HTTP scheme - * * @return $this */ - public function setScheme($scheme) + public function setScheme(string $scheme) { $this->scheme = strtolower($scheme); @@ -191,7 +198,7 @@ class RequestContext /** * Gets the HTTP port. * - * @return int The HTTP port + * @return int */ public function getHttpPort() { @@ -201,13 +208,11 @@ class RequestContext /** * Sets the HTTP port. * - * @param int $httpPort The HTTP port - * * @return $this */ - public function setHttpPort($httpPort) + public function setHttpPort(int $httpPort) { - $this->httpPort = (int) $httpPort; + $this->httpPort = $httpPort; return $this; } @@ -215,7 +220,7 @@ class RequestContext /** * Gets the HTTPS port. * - * @return int The HTTPS port + * @return int */ public function getHttpsPort() { @@ -225,21 +230,19 @@ class RequestContext /** * Sets the HTTPS port. * - * @param int $httpsPort The HTTPS port - * * @return $this */ - public function setHttpsPort($httpsPort) + public function setHttpsPort(int $httpsPort) { - $this->httpsPort = (int) $httpsPort; + $this->httpsPort = $httpsPort; return $this; } /** - * Gets the query string. + * Gets the query string without the "?". * - * @return string The query string without the "?" + * @return string */ public function getQueryString() { @@ -249,11 +252,9 @@ class RequestContext /** * Sets the query string. * - * @param string $queryString The query string (after "?") - * * @return $this */ - public function setQueryString($queryString) + public function setQueryString(?string $queryString) { // string cast to be fault-tolerant, accepting null $this->queryString = (string) $queryString; @@ -264,7 +265,7 @@ class RequestContext /** * Returns the parameters. * - * @return array The parameters + * @return array */ public function getParameters() { @@ -288,11 +289,9 @@ class RequestContext /** * Gets a parameter value. * - * @param string $name A parameter name - * - * @return mixed The parameter value or null if nonexistent + * @return mixed */ - public function getParameter($name) + public function getParameter(string $name) { return $this->parameters[$name] ?? null; } @@ -300,11 +299,9 @@ class RequestContext /** * Checks if a parameter value is set for the given parameter. * - * @param string $name A parameter name - * - * @return bool True if the parameter value is set, false otherwise + * @return bool */ - public function hasParameter($name) + public function hasParameter(string $name) { return \array_key_exists($name, $this->parameters); } @@ -312,15 +309,19 @@ class RequestContext /** * Sets a parameter value. * - * @param string $name A parameter name - * @param mixed $parameter The parameter value + * @param mixed $parameter The parameter value * * @return $this */ - public function setParameter($name, $parameter) + public function setParameter(string $name, $parameter) { $this->parameters[$name] = $parameter; return $this; } + + public function isSecure(): bool + { + return 'https' === $this->scheme; + } } diff --git a/vendor/symfony/routing/RequestContextAwareInterface.php b/vendor/symfony/routing/RequestContextAwareInterface.php index df5b9fcd4..270a2b084 100644 --- a/vendor/symfony/routing/RequestContextAwareInterface.php +++ b/vendor/symfony/routing/RequestContextAwareInterface.php @@ -21,7 +21,7 @@ interface RequestContextAwareInterface /** * Gets the request context. * - * @return RequestContext The context + * @return RequestContext */ public function getContext(); } diff --git a/vendor/symfony/routing/Route.php b/vendor/symfony/routing/Route.php index baabe0d02..c67bd2de5 100644 --- a/vendor/symfony/routing/Route.php +++ b/vendor/symfony/routing/Route.php @@ -78,12 +78,9 @@ class Route implements \Serializable } /** - * @return string - * - * @internal since Symfony 4.3 - * @final since Symfony 4.3 + * @internal */ - public function serialize() + final public function serialize(): string { return serialize($this->__serialize()); } @@ -107,16 +104,15 @@ class Route implements \Serializable } /** - * @internal since Symfony 4.3 - * @final since Symfony 4.3 + * @internal */ - public function unserialize($serialized) + final public function unserialize($serialized) { $this->__unserialize(unserialize($serialized)); } /** - * @return string The path pattern + * @return string */ public function getPath() { @@ -124,26 +120,11 @@ class Route implements \Serializable } /** - * Sets the pattern for the path. - * - * @param string $pattern The path pattern - * * @return $this */ - public function setPath($pattern) + public function setPath(string $pattern) { - if (false !== strpbrk($pattern, '?<')) { - $pattern = preg_replace_callback('#\{(!?)(\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) { - if (isset($m[4][0])) { - $this->setDefault($m[2], '?' !== $m[4] ? substr($m[4], 1) : null); - } - if (isset($m[3][0])) { - $this->setRequirement($m[2], substr($m[3], 1, -1)); - } - - return '{'.$m[1].$m[2].'}'; - }, $pattern); - } + $pattern = $this->extractInlineDefaultsAndRequirements($pattern); // A pattern must start with a slash and must not have multiple slashes at the beginning because the // generated path for this route would be confused with a network path, e.g. '//domain.com/path'. @@ -154,7 +135,7 @@ class Route implements \Serializable } /** - * @return string The host pattern + * @return string */ public function getHost() { @@ -162,15 +143,11 @@ class Route implements \Serializable } /** - * Sets the pattern for the host. - * - * @param string $pattern The host pattern - * * @return $this */ - public function setHost($pattern) + public function setHost(?string $pattern) { - $this->host = (string) $pattern; + $this->host = $this->extractInlineDefaultsAndRequirements((string) $pattern); $this->compiled = null; return $this; @@ -180,7 +157,7 @@ class Route implements \Serializable * Returns the lowercased schemes this route is restricted to. * So an empty array means that any scheme is allowed. * - * @return string[] The schemes + * @return string[] */ public function getSchemes() { @@ -206,11 +183,9 @@ class Route implements \Serializable /** * Checks if a scheme requirement has been set. * - * @param string $scheme - * - * @return bool true if the scheme requirement exists, otherwise false + * @return bool */ - public function hasScheme($scheme) + public function hasScheme(string $scheme) { return \in_array(strtolower($scheme), $this->schemes, true); } @@ -219,7 +194,7 @@ class Route implements \Serializable * Returns the uppercased HTTP methods this route is restricted to. * So an empty array means that any method is allowed. * - * @return string[] The methods + * @return string[] */ public function getMethods() { @@ -243,7 +218,7 @@ class Route implements \Serializable } /** - * @return array The options + * @return array */ public function getOptions() { @@ -278,12 +253,11 @@ class Route implements \Serializable /** * Sets an option value. * - * @param string $name An option name - * @param mixed $value The option value + * @param mixed $value The option value * * @return $this */ - public function setOption($name, $value) + public function setOption(string $name, $value) { $this->options[$name] = $value; $this->compiled = null; @@ -292,31 +266,25 @@ class Route implements \Serializable } /** - * Get an option value. + * Returns the option value or null when not found. * - * @param string $name An option name - * - * @return mixed The option value or null when not given + * @return mixed */ - public function getOption($name) + public function getOption(string $name) { return $this->options[$name] ?? null; } /** - * Checks if an option has been set. - * - * @param string $name An option name - * - * @return bool true if the option is set, false otherwise + * @return bool */ - public function hasOption($name) + public function hasOption(string $name) { return \array_key_exists($name, $this->options); } /** - * @return array The defaults + * @return array */ public function getDefaults() { @@ -351,25 +319,17 @@ class Route implements \Serializable } /** - * Gets a default value. - * - * @param string $name A variable name - * - * @return mixed The default value or null when not given + * @return mixed */ - public function getDefault($name) + public function getDefault(string $name) { return $this->defaults[$name] ?? null; } /** - * Checks if a default value is set for the given variable. - * - * @param string $name A variable name - * - * @return bool true if the default value is set, false otherwise + * @return bool */ - public function hasDefault($name) + public function hasDefault(string $name) { return \array_key_exists($name, $this->defaults); } @@ -377,12 +337,11 @@ class Route implements \Serializable /** * Sets a default value. * - * @param string $name A variable name - * @param mixed $default The default value + * @param mixed $default The default value * * @return $this */ - public function setDefault($name, $default) + public function setDefault(string $name, $default) { if ('_locale' === $name && $this->isLocalized()) { return $this; @@ -395,7 +354,7 @@ class Route implements \Serializable } /** - * @return array The requirements + * @return array */ public function getRequirements() { @@ -430,38 +389,25 @@ class Route implements \Serializable } /** - * Returns the requirement for the given key. - * - * @param string $key The key - * - * @return string|null The regex or null when not given + * @return string|null */ - public function getRequirement($key) + public function getRequirement(string $key) { return $this->requirements[$key] ?? null; } /** - * Checks if a requirement is set for the given key. - * - * @param string $key A variable name - * - * @return bool true if a requirement is specified, false otherwise + * @return bool */ - public function hasRequirement($key) + public function hasRequirement(string $key) { return \array_key_exists($key, $this->requirements); } /** - * Sets a requirement for the given key. - * - * @param string $key The key - * @param string $regex The regex - * * @return $this */ - public function setRequirement($key, $regex) + public function setRequirement(string $key, string $regex) { if ('_locale' === $key && $this->isLocalized()) { return $this; @@ -474,7 +420,7 @@ class Route implements \Serializable } /** - * @return string The condition + * @return string */ public function getCondition() { @@ -482,13 +428,9 @@ class Route implements \Serializable } /** - * Sets the condition. - * - * @param string $condition The condition - * * @return $this */ - public function setCondition($condition) + public function setCondition(?string $condition) { $this->condition = (string) $condition; $this->compiled = null; @@ -499,7 +441,7 @@ class Route implements \Serializable /** * Compiles the route. * - * @return CompiledRoute A CompiledRoute instance + * @return CompiledRoute * * @throws \LogicException If the Route cannot be compiled because the * path or host pattern is invalid @@ -517,18 +459,38 @@ class Route implements \Serializable return $this->compiled = $class::compile($this); } - private function sanitizeRequirement(string $key, $regex) + private function extractInlineDefaultsAndRequirements(string $pattern): string { - if (!\is_string($regex)) { - throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" must be a string.', $key)); + if (false === strpbrk($pattern, '?<')) { + return $pattern; } - if ('' !== $regex && '^' === $regex[0]) { - $regex = (string) substr($regex, 1); // returns false for a single character + return preg_replace_callback('#\{(!?)(\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) { + if (isset($m[4][0])) { + $this->setDefault($m[2], '?' !== $m[4] ? substr($m[4], 1) : null); + } + if (isset($m[3][0])) { + $this->setRequirement($m[2], substr($m[3], 1, -1)); + } + + return '{'.$m[1].$m[2].'}'; + }, $pattern); + } + + private function sanitizeRequirement(string $key, string $regex) + { + if ('' !== $regex) { + if ('^' === $regex[0]) { + $regex = substr($regex, 1); + } elseif (0 === strpos($regex, '\\A')) { + $regex = substr($regex, 2); + } } if (str_ends_with($regex, '$')) { $regex = substr($regex, 0, -1); + } elseif (\strlen($regex) - 2 === strpos($regex, '\\z')) { + $regex = substr($regex, 0, -2); } if ('' === $regex) { @@ -540,6 +502,6 @@ class Route implements \Serializable private function isLocalized(): bool { - return isset($this->defaults['_locale']) && isset($this->defaults['_canonical_route']) && ($this->requirements['_locale'] ?? null) === preg_quote($this->defaults['_locale'], RouteCompiler::REGEX_DELIMITER); + return isset($this->defaults['_locale']) && isset($this->defaults['_canonical_route']) && ($this->requirements['_locale'] ?? null) === preg_quote($this->defaults['_locale']); } } diff --git a/vendor/symfony/routing/RouteCollection.php b/vendor/symfony/routing/RouteCollection.php index 56e925cac..a0700bba3 100644 --- a/vendor/symfony/routing/RouteCollection.php +++ b/vendor/symfony/routing/RouteCollection.php @@ -12,6 +12,8 @@ namespace Symfony\Component\Routing; use Symfony\Component\Config\Resource\ResourceInterface; +use Symfony\Component\Routing\Exception\InvalidArgumentException; +use Symfony\Component\Routing\Exception\RouteCircularReferenceException; /** * A RouteCollection represents a set of Route instances. @@ -22,24 +24,40 @@ use Symfony\Component\Config\Resource\ResourceInterface; * * @author Fabien Potencier <fabien@symfony.com> * @author Tobias Schultze <http://tobion.de> + * + * @implements \IteratorAggregate<string, Route> */ class RouteCollection implements \IteratorAggregate, \Countable { /** - * @var Route[] + * @var array<string, Route> */ private $routes = []; /** - * @var array + * @var array<string, Alias> + */ + private $aliases = []; + + /** + * @var array<string, ResourceInterface> */ private $resources = []; + /** + * @var array<string, int> + */ + private $priorities = []; + public function __clone() { foreach ($this->routes as $name => $route) { $this->routes[$name] = clone $route; } + + foreach ($this->aliases as $name => $alias) { + $this->aliases[$name] = clone $alias; + } } /** @@ -49,18 +67,18 @@ class RouteCollection implements \IteratorAggregate, \Countable * * @see all() * - * @return \ArrayIterator|Route[] An \ArrayIterator object for iterating over routes + * @return \ArrayIterator<string, Route> */ #[\ReturnTypeWillChange] public function getIterator() { - return new \ArrayIterator($this->routes); + return new \ArrayIterator($this->all()); } /** * Gets the number of Routes in this collection. * - * @return int The number of routes + * @return int */ #[\ReturnTypeWillChange] public function count() @@ -69,36 +87,66 @@ class RouteCollection implements \IteratorAggregate, \Countable } /** - * Adds a route. - * - * @param string $name The route name + * @param int $priority */ - public function add($name, Route $route) + public function add(string $name, Route $route/* , int $priority = 0 */) { - unset($this->routes[$name]); + if (\func_num_args() < 3 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { + trigger_deprecation('symfony/routing', '5.1', 'The "%s()" method will have a new "int $priority = 0" argument in version 6.0, not defining it is deprecated.', __METHOD__); + } + + unset($this->routes[$name], $this->priorities[$name], $this->aliases[$name]); $this->routes[$name] = $route; + + if ($priority = 3 <= \func_num_args() ? func_get_arg(2) : 0) { + $this->priorities[$name] = $priority; + } } /** * Returns all routes in this collection. * - * @return Route[] An array of routes + * @return array<string, Route> */ public function all() { + if ($this->priorities) { + $priorities = $this->priorities; + $keysOrder = array_flip(array_keys($this->routes)); + uksort($this->routes, static function ($n1, $n2) use ($priorities, $keysOrder) { + return (($priorities[$n2] ?? 0) <=> ($priorities[$n1] ?? 0)) ?: ($keysOrder[$n1] <=> $keysOrder[$n2]); + }); + } + return $this->routes; } /** * Gets a route by name. * - * @param string $name The route name - * - * @return Route|null A Route instance or null when not found + * @return Route|null */ - public function get($name) + public function get(string $name) { + $visited = []; + while (null !== $alias = $this->aliases[$name] ?? null) { + if (false !== $searchKey = array_search($name, $visited)) { + $visited[] = $name; + + throw new RouteCircularReferenceException($name, \array_slice($visited, $searchKey)); + } + + if ($alias->isDeprecated()) { + $deprecation = $alias->getDeprecation($name); + + trigger_deprecation($deprecation['package'], $deprecation['version'], $deprecation['message']); + } + + $visited[] = $name; + $name = $alias->getId(); + } + return $this->routes[$name] ?? null; } @@ -110,7 +158,7 @@ class RouteCollection implements \IteratorAggregate, \Countable public function remove($name) { foreach ((array) $name as $n) { - unset($this->routes[$n]); + unset($this->routes[$n], $this->priorities[$n], $this->aliases[$n]); } } @@ -123,8 +171,18 @@ class RouteCollection implements \IteratorAggregate, \Countable // we need to remove all routes with the same names first because just replacing them // would not place the new route at the end of the merged array foreach ($collection->all() as $name => $route) { - unset($this->routes[$name]); + unset($this->routes[$name], $this->priorities[$name], $this->aliases[$name]); $this->routes[$name] = $route; + + if (isset($collection->priorities[$name])) { + $this->priorities[$name] = $collection->priorities[$name]; + } + } + + foreach ($collection->getAliases() as $name => $alias) { + unset($this->routes[$name], $this->priorities[$name], $this->aliases[$name]); + + $this->aliases[$name] = $alias; } foreach ($collection->getResources() as $resource) { @@ -134,17 +192,9 @@ class RouteCollection implements \IteratorAggregate, \Countable /** * Adds a prefix to the path of all child routes. - * - * @param string $prefix An optional prefix to add before each pattern of the route collection - * @param array $defaults An array of default values - * @param array $requirements An array of requirements */ - public function addPrefix($prefix, array $defaults = [], array $requirements = []) + public function addPrefix(string $prefix, array $defaults = [], array $requirements = []) { - if (null === $prefix) { - @trigger_error(sprintf('Passing null as $prefix to %s is deprecated in Symfony 4.4 and will trigger a TypeError in 5.0.', __METHOD__), \E_USER_DEPRECATED); - } - $prefix = trim(trim($prefix), '/'); if ('' === $prefix) { @@ -164,25 +214,32 @@ class RouteCollection implements \IteratorAggregate, \Countable public function addNamePrefix(string $prefix) { $prefixedRoutes = []; + $prefixedPriorities = []; + $prefixedAliases = []; foreach ($this->routes as $name => $route) { $prefixedRoutes[$prefix.$name] = $route; - if (null !== $name = $route->getDefault('_canonical_route')) { - $route->setDefault('_canonical_route', $prefix.$name); + if (null !== $canonicalName = $route->getDefault('_canonical_route')) { + $route->setDefault('_canonical_route', $prefix.$canonicalName); + } + if (isset($this->priorities[$name])) { + $prefixedPriorities[$prefix.$name] = $this->priorities[$name]; } } + foreach ($this->aliases as $name => $alias) { + $prefixedAliases[$prefix.$name] = $alias->withId($prefix.$alias->getId()); + } + $this->routes = $prefixedRoutes; + $this->priorities = $prefixedPriorities; + $this->aliases = $prefixedAliases; } /** * Sets the host pattern on all routes. - * - * @param string $pattern The pattern - * @param array $defaults An array of default values - * @param array $requirements An array of requirements */ - public function setHost($pattern, array $defaults = [], array $requirements = []) + public function setHost(?string $pattern, array $defaults = [], array $requirements = []) { foreach ($this->routes as $route) { $route->setHost($pattern); @@ -195,10 +252,8 @@ class RouteCollection implements \IteratorAggregate, \Countable * Sets a condition on all routes. * * Existing conditions will be overridden. - * - * @param string $condition The condition */ - public function setCondition($condition) + public function setCondition(?string $condition) { foreach ($this->routes as $route) { $route->setCondition($condition); @@ -209,8 +264,6 @@ class RouteCollection implements \IteratorAggregate, \Countable * Adds defaults to all routes. * * An existing default value under the same name in a route will be overridden. - * - * @param array $defaults An array of default values */ public function addDefaults(array $defaults) { @@ -225,8 +278,6 @@ class RouteCollection implements \IteratorAggregate, \Countable * Adds requirements to all routes. * * An existing requirement under the same name in a route will be overridden. - * - * @param array $requirements An array of requirements */ public function addRequirements(array $requirements) { @@ -278,7 +329,7 @@ class RouteCollection implements \IteratorAggregate, \Countable /** * Returns an array of resources loaded to build this collection. * - * @return ResourceInterface[] An array of resources + * @return ResourceInterface[] */ public function getResources() { @@ -297,4 +348,36 @@ class RouteCollection implements \IteratorAggregate, \Countable $this->resources[$key] = $resource; } } + + /** + * Sets an alias for an existing route. + * + * @param string $name The alias to create + * @param string $alias The route to alias + * + * @throws InvalidArgumentException if the alias is for itself + */ + public function addAlias(string $name, string $alias): Alias + { + if ($name === $alias) { + throw new InvalidArgumentException(sprintf('Route alias "%s" can not reference itself.', $name)); + } + + unset($this->routes[$name], $this->priorities[$name]); + + return $this->aliases[$name] = new Alias($alias); + } + + /** + * @return array<string, Alias> + */ + public function getAliases(): array + { + return $this->aliases; + } + + public function getAlias(string $name): ?Alias + { + return $this->aliases[$name] ?? null; + } } diff --git a/vendor/symfony/routing/RouteCollectionBuilder.php b/vendor/symfony/routing/RouteCollectionBuilder.php index 02740262b..d7eed31eb 100644 --- a/vendor/symfony/routing/RouteCollectionBuilder.php +++ b/vendor/symfony/routing/RouteCollectionBuilder.php @@ -14,11 +14,16 @@ namespace Symfony\Component\Routing; use Symfony\Component\Config\Exception\LoaderLoadException; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\Config\Resource\ResourceInterface; +use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; + +trigger_deprecation('symfony/routing', '5.1', 'The "%s" class is deprecated, use "%s" instead.', RouteCollectionBuilder::class, RoutingConfigurator::class); /** * Helps add and import routes into a RouteCollection. * * @author Ryan Weaver <ryan@knpuniversity.com> + * + * @deprecated since Symfony 5.1, use RoutingConfigurator instead */ class RouteCollectionBuilder { @@ -48,15 +53,13 @@ class RouteCollectionBuilder * * $routes->import('blog.yml', '/blog'); * - * @param mixed $resource - * @param string|null $prefix - * @param string $type + * @param mixed $resource * * @return self * * @throws LoaderLoadException */ - public function import($resource, $prefix = '/', $type = null) + public function import($resource, string $prefix = '/', string $type = null) { /** @var RouteCollection[] $collections */ $collections = $this->load($resource, $type); @@ -87,13 +90,9 @@ class RouteCollectionBuilder /** * Adds a route and returns it for future modification. * - * @param string $path The route path - * @param string $controller The route's controller - * @param string|null $name The name to give this route - * * @return Route */ - public function add($path, $controller, $name = null) + public function add(string $path, string $controller, string $name = null) { $route = new Route($path); $route->setDefault('_controller', $controller); @@ -114,10 +113,8 @@ class RouteCollectionBuilder /** * Add a RouteCollectionBuilder. - * - * @param string $prefix */ - public function mount($prefix, self $builder) + public function mount(string $prefix, self $builder) { $builder->prefix = trim(trim($prefix), '/'); $this->routes[] = $builder; @@ -126,11 +123,9 @@ class RouteCollectionBuilder /** * Adds a Route object to the builder. * - * @param string|null $name - * * @return $this */ - public function addRoute(Route $route, $name = null) + public function addRoute(Route $route, string $name = null) { if (null === $name) { // used as a flag to know which routes will need a name later @@ -145,11 +140,9 @@ class RouteCollectionBuilder /** * Sets the host on all embedded routes (unless already set). * - * @param string $pattern - * * @return $this */ - public function setHost($pattern) + public function setHost(?string $pattern) { $this->host = $pattern; @@ -159,11 +152,9 @@ class RouteCollectionBuilder /** * Sets a condition on all embedded routes (unless already set). * - * @param string $condition - * * @return $this */ - public function setCondition($condition) + public function setCondition(?string $condition) { $this->condition = $condition; @@ -174,12 +165,11 @@ class RouteCollectionBuilder * Sets a default value that will be added to all embedded routes (unless that * default value is already set). * - * @param string $key - * @param mixed $value + * @param mixed $value * * @return $this */ - public function setDefault($key, $value) + public function setDefault(string $key, $value) { $this->defaults[$key] = $value; @@ -190,12 +180,11 @@ class RouteCollectionBuilder * Sets a requirement that will be added to all embedded routes (unless that * requirement is already set). * - * @param string $key - * @param mixed $regex + * @param mixed $regex * * @return $this */ - public function setRequirement($key, $regex) + public function setRequirement(string $key, $regex) { $this->requirements[$key] = $regex; @@ -206,12 +195,11 @@ class RouteCollectionBuilder * Sets an option that will be added to all embedded routes (unless that * option is already set). * - * @param string $key - * @param mixed $value + * @param mixed $value * * @return $this */ - public function setOption($key, $value) + public function setOption(string $key, $value) { $this->options[$key] = $value; diff --git a/vendor/symfony/routing/RouteCompiler.php b/vendor/symfony/routing/RouteCompiler.php index 4c28c0dbf..7e78c2931 100644 --- a/vendor/symfony/routing/RouteCompiler.php +++ b/vendor/symfony/routing/RouteCompiler.php @@ -19,6 +19,9 @@ namespace Symfony\Component\Routing; */ class RouteCompiler implements RouteCompilerInterface { + /** + * @deprecated since Symfony 5.1, to be removed in 6.0 + */ public const REGEX_DELIMITER = '#'; /** @@ -62,7 +65,7 @@ class RouteCompiler implements RouteCompilerInterface } $locale = $route->getDefault('_locale'); - if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale, self::REGEX_DELIMITER) === $route->getRequirement('_locale')) { + if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale) === $route->getRequirement('_locale')) { $requirements = $route->getRequirements(); unset($requirements['_locale']); $route->setRequirements($requirements); @@ -169,8 +172,8 @@ class RouteCompiler implements RouteCompilerInterface $nextSeparator = self::findNextSeparator($followingPattern, $useUtf8); $regexp = sprintf( '[^%s%s]+', - preg_quote($defaultSeparator, self::REGEX_DELIMITER), - $defaultSeparator !== $nextSeparator && '' !== $nextSeparator ? preg_quote($nextSeparator, self::REGEX_DELIMITER) : '' + preg_quote($defaultSeparator), + $defaultSeparator !== $nextSeparator && '' !== $nextSeparator ? preg_quote($nextSeparator) : '' ); if (('' !== $nextSeparator && !preg_match('#^\{\w+\}#', $followingPattern)) || '' === $followingPattern) { // When we have a separator, which is disallowed for the variable, we can optimize the regex with a possessive @@ -225,7 +228,7 @@ class RouteCompiler implements RouteCompilerInterface for ($i = 0, $nbToken = \count($tokens); $i < $nbToken; ++$i) { $regexp .= self::computeRegexp($tokens, $i, $firstOptional); } - $regexp = self::REGEX_DELIMITER.'^'.$regexp.'$'.self::REGEX_DELIMITER.'sD'.($isHost ? 'i' : ''); + $regexp = '{^'.$regexp.'$}sD'.($isHost ? 'i' : ''); // enable Utf8 matching if really required if ($needsUtf8) { @@ -289,22 +292,20 @@ class RouteCompiler implements RouteCompilerInterface * @param array $tokens The route tokens * @param int $index The index of the current token * @param int $firstOptional The index of the first optional token - * - * @return string The regexp pattern for a single token */ private static function computeRegexp(array $tokens, int $index, int $firstOptional): string { $token = $tokens[$index]; if ('text' === $token[0]) { // Text tokens - return preg_quote($token[1], self::REGEX_DELIMITER); + return preg_quote($token[1]); } else { // Variable tokens if (0 === $index && 0 === $firstOptional) { // When the only token is an optional variable token, the separator is required - return sprintf('%s(?P<%s>%s)?', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]); + return sprintf('%s(?P<%s>%s)?', preg_quote($token[1]), $token[3], $token[2]); } else { - $regexp = sprintf('%s(?P<%s>%s)', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]); + $regexp = sprintf('%s(?P<%s>%s)', preg_quote($token[1]), $token[3], $token[2]); if ($index >= $firstOptional) { // Enclose each optional token in a subpattern to make it optional. // "?:" means it is non-capturing, i.e. the portion of the subject string that diff --git a/vendor/symfony/routing/RouteCompilerInterface.php b/vendor/symfony/routing/RouteCompilerInterface.php index ddfa7ca49..9bae33a91 100644 --- a/vendor/symfony/routing/RouteCompilerInterface.php +++ b/vendor/symfony/routing/RouteCompilerInterface.php @@ -21,7 +21,7 @@ interface RouteCompilerInterface /** * Compiles the current route instance. * - * @return CompiledRoute A CompiledRoute instance + * @return CompiledRoute * * @throws \LogicException If the Route cannot be compiled because the * path or host pattern is invalid diff --git a/vendor/symfony/routing/Router.php b/vendor/symfony/routing/Router.php index e4f167b1e..25b9456af 100644 --- a/vendor/symfony/routing/Router.php +++ b/vendor/symfony/routing/Router.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Routing; use Psr\Log\LoggerInterface; -use Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher; use Symfony\Component\Config\ConfigCacheFactory; use Symfony\Component\Config\ConfigCacheFactoryInterface; use Symfony\Component\Config\ConfigCacheInterface; @@ -23,15 +22,11 @@ use Symfony\Component\Routing\Generator\CompiledUrlGenerator; use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface; use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper; use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface; -use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper; -use Symfony\Component\Routing\Generator\UrlGenerator; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\Matcher\CompiledUrlMatcher; use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper; use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface; -use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper; use Symfony\Component\Routing\Matcher\RequestMatcherInterface; -use Symfony\Component\Routing\Matcher\UrlMatcher; use Symfony\Component\Routing\Matcher\UrlMatcherInterface; /** @@ -135,13 +130,9 @@ class Router implements RouterInterface, RequestMatcherInterface 'cache_dir' => null, 'debug' => false, 'generator_class' => CompiledUrlGenerator::class, - 'generator_base_class' => UrlGenerator::class, // deprecated 'generator_dumper_class' => CompiledUrlGeneratorDumper::class, - 'generator_cache_class' => 'UrlGenerator', // deprecated 'matcher_class' => CompiledUrlMatcher::class, - 'matcher_base_class' => UrlMatcher::class, // deprecated 'matcher_dumper_class' => CompiledUrlMatcherDumper::class, - 'matcher_cache_class' => 'UrlMatcher', // deprecated 'resource_type' => null, 'strict_requirements' => true, ]; @@ -149,7 +140,6 @@ class Router implements RouterInterface, RequestMatcherInterface // check option names and live merge, if errors are encountered Exception will be thrown $invalid = []; foreach ($options as $key => $value) { - $this->checkDeprecatedOption($key); if (\array_key_exists($key, $this->options)) { $this->options[$key] = $value; } else { @@ -165,39 +155,32 @@ class Router implements RouterInterface, RequestMatcherInterface /** * Sets an option. * - * @param string $key The key - * @param mixed $value The value + * @param mixed $value The value * * @throws \InvalidArgumentException */ - public function setOption($key, $value) + public function setOption(string $key, $value) { if (!\array_key_exists($key, $this->options)) { throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); } - $this->checkDeprecatedOption($key); - $this->options[$key] = $value; } /** * Gets an option value. * - * @param string $key The key - * - * @return mixed The value + * @return mixed * * @throws \InvalidArgumentException */ - public function getOption($key) + public function getOption(string $key) { if (!\array_key_exists($key, $this->options)) { throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); } - $this->checkDeprecatedOption($key); - return $this->options[$key]; } @@ -247,7 +230,7 @@ class Router implements RouterInterface, RequestMatcherInterface /** * {@inheritdoc} */ - public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH) + public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH) { return $this->getGenerator()->generate($name, $parameters, $referenceType); } @@ -255,7 +238,7 @@ class Router implements RouterInterface, RequestMatcherInterface /** * {@inheritdoc} */ - public function match($pathinfo) + public function match(string $pathinfo) { return $this->getMatcher()->match($pathinfo); } @@ -285,10 +268,9 @@ class Router implements RouterInterface, RequestMatcherInterface return $this->matcher; } - $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true); - - if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) { + if (null === $this->options['cache_dir']) { $routes = $this->getRouteCollection(); + $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true); if ($compiled) { $routes = (new CompiledUrlMatcherDumper($routes))->getCompiledRoutes(); } @@ -302,7 +284,7 @@ class Router implements RouterInterface, RequestMatcherInterface return $this->matcher; } - $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['matcher_cache_class'].'.php', + $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/url_matching_routes.php', function (ConfigCacheInterface $cache) { $dumper = $this->getMatcherDumperInstance(); if (method_exists($dumper, 'addExpressionLanguageProvider')) { @@ -311,30 +293,17 @@ class Router implements RouterInterface, RequestMatcherInterface } } - $options = [ - 'class' => $this->options['matcher_cache_class'], - 'base_class' => $this->options['matcher_base_class'], - ]; - - $cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); + $cache->write($dumper->dump(), $this->getRouteCollection()->getResources()); } ); - if ($compiled) { - return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context); - } - - if (!class_exists($this->options['matcher_cache_class'], false)) { - require_once $cache->getPath(); - } - - return $this->matcher = new $this->options['matcher_cache_class']($this->context); + return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context); } /** * Gets the UrlGenerator instance associated with this Router. * - * @return UrlGeneratorInterface A UrlGeneratorInterface instance + * @return UrlGeneratorInterface */ public function getGenerator() { @@ -342,37 +311,24 @@ class Router implements RouterInterface, RequestMatcherInterface return $this->generator; } - $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'] && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true); - - if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) { + if (null === $this->options['cache_dir']) { $routes = $this->getRouteCollection(); + $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true); if ($compiled) { - $routes = (new CompiledUrlGeneratorDumper($routes))->getCompiledRoutes(); + $generatorDumper = new CompiledUrlGeneratorDumper($routes); + $routes = array_merge($generatorDumper->getCompiledRoutes(), $generatorDumper->getCompiledAliases()); } $this->generator = new $this->options['generator_class']($routes, $this->context, $this->logger, $this->defaultLocale); } else { - $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['generator_cache_class'].'.php', + $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/url_generating_routes.php', function (ConfigCacheInterface $cache) { $dumper = $this->getGeneratorDumperInstance(); - $options = [ - 'class' => $this->options['generator_cache_class'], - 'base_class' => $this->options['generator_base_class'], - ]; - - $cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); + $cache->write($dumper->dump(), $this->getRouteCollection()->getResources()); } ); - if ($compiled) { - $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale); - } else { - if (!class_exists($this->options['generator_cache_class'], false)) { - require_once $cache->getPath(); - } - - $this->generator = new $this->options['generator_cache_class']($this->context, $this->logger, $this->defaultLocale); - } + $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale); } if ($this->generator instanceof ConfigurableRequirementsInterface) { @@ -392,11 +348,6 @@ class Router implements RouterInterface, RequestMatcherInterface */ protected function getGeneratorDumperInstance() { - // For BC, fallback to PhpGeneratorDumper (which is the old default value) if the old UrlGenerator is used with the new default CompiledUrlGeneratorDumper - if (!is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) { - return new PhpGeneratorDumper($this->getRouteCollection()); - } - return new $this->options['generator_dumper_class']($this->getRouteCollection()); } @@ -405,11 +356,6 @@ class Router implements RouterInterface, RequestMatcherInterface */ protected function getMatcherDumperInstance() { - // For BC, fallback to PhpMatcherDumper (which is the old default value) if the old UrlMatcher is used with the new default CompiledUrlMatcherDumper - if (!is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) { - return new PhpMatcherDumper($this->getRouteCollection()); - } - return new $this->options['matcher_dumper_class']($this->getRouteCollection()); } @@ -426,17 +372,6 @@ class Router implements RouterInterface, RequestMatcherInterface return $this->configCacheFactory; } - private function checkDeprecatedOption(string $key) - { - switch ($key) { - case 'generator_base_class': - case 'generator_cache_class': - case 'matcher_base_class': - case 'matcher_cache_class': - @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), \E_USER_DEPRECATED); - } - } - private static function getCompiledRoutes(string $path): array { if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(\ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) { diff --git a/vendor/symfony/routing/RouterInterface.php b/vendor/symfony/routing/RouterInterface.php index 8a3e33dc2..6912f8a15 100644 --- a/vendor/symfony/routing/RouterInterface.php +++ b/vendor/symfony/routing/RouterInterface.php @@ -29,7 +29,7 @@ interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface * WARNING: This method should never be used at runtime as it is SLOW. * You might use it in a cache warmer though. * - * @return RouteCollection A RouteCollection instance + * @return RouteCollection */ public function getRouteCollection(); } diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json index c6ef01bcb..b21ad5f29 100644 --- a/vendor/symfony/routing/composer.json +++ b/vendor/symfony/routing/composer.json @@ -16,29 +16,30 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/config": "^4.2|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "doctrine/annotations": "^1.10.4", + "symfony/config": "^5.3|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "suggest": { "symfony/http-foundation": "For using a Symfony Request object", "symfony/config": "For using the all-in-one router or any loader", "symfony/yaml": "For using the YAML loader", - "symfony/expression-language": "For using expression matching", - "doctrine/annotations": "For using the annotation loader" + "symfony/expression-language": "For using expression matching" }, "autoload": { "psr-4": { "Symfony\\Component\\Routing\\": "" }, diff --git a/vendor/symfony/string/AbstractString.php b/vendor/symfony/string/AbstractString.php new file mode 100644 index 000000000..13567c7b0 --- /dev/null +++ b/vendor/symfony/string/AbstractString.php @@ -0,0 +1,795 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +use Symfony\Component\String\Exception\ExceptionInterface; +use Symfony\Component\String\Exception\InvalidArgumentException; +use Symfony\Component\String\Exception\RuntimeException; + +/** + * Represents a string of abstract characters. + * + * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). + * This class is the abstract type to use as a type-hint when the logic you want to + * implement doesn't care about the exact variant it deals with. + * + * @author Nicolas Grekas <p@tchwork.com> + * @author Hugo Hamon <hugohamon@neuf.fr> + * + * @throws ExceptionInterface + */ +abstract class AbstractString implements \Stringable, \JsonSerializable +{ + public const PREG_PATTERN_ORDER = \PREG_PATTERN_ORDER; + public const PREG_SET_ORDER = \PREG_SET_ORDER; + public const PREG_OFFSET_CAPTURE = \PREG_OFFSET_CAPTURE; + public const PREG_UNMATCHED_AS_NULL = \PREG_UNMATCHED_AS_NULL; + + public const PREG_SPLIT = 0; + public const PREG_SPLIT_NO_EMPTY = \PREG_SPLIT_NO_EMPTY; + public const PREG_SPLIT_DELIM_CAPTURE = \PREG_SPLIT_DELIM_CAPTURE; + public const PREG_SPLIT_OFFSET_CAPTURE = \PREG_SPLIT_OFFSET_CAPTURE; + + protected $string = ''; + protected $ignoreCase = false; + + abstract public function __construct(string $string = ''); + + /** + * Unwraps instances of AbstractString back to strings. + * + * @return string[]|array + */ + public static function unwrap(array $values): array + { + foreach ($values as $k => $v) { + if ($v instanceof self) { + $values[$k] = $v->__toString(); + } elseif (\is_array($v) && $values[$k] !== $v = static::unwrap($v)) { + $values[$k] = $v; + } + } + + return $values; + } + + /** + * Wraps (and normalizes) strings in instances of AbstractString. + * + * @return static[]|array + */ + public static function wrap(array $values): array + { + $i = 0; + $keys = null; + + foreach ($values as $k => $v) { + if (\is_string($k) && '' !== $k && $k !== $j = (string) new static($k)) { + $keys = $keys ?? array_keys($values); + $keys[$i] = $j; + } + + if (\is_string($v)) { + $values[$k] = new static($v); + } elseif (\is_array($v) && $values[$k] !== $v = static::wrap($v)) { + $values[$k] = $v; + } + + ++$i; + } + + return null !== $keys ? array_combine($keys, $values) : $values; + } + + /** + * @param string|string[] $needle + * + * @return static + */ + public function after($needle, bool $includeNeedle = false, int $offset = 0): self + { + $str = clone $this; + $i = \PHP_INT_MAX; + + foreach ((array) $needle as $n) { + $n = (string) $n; + $j = $this->indexOf($n, $offset); + + if (null !== $j && $j < $i) { + $i = $j; + $str->string = $n; + } + } + + if (\PHP_INT_MAX === $i) { + return $str; + } + + if (!$includeNeedle) { + $i += $str->length(); + } + + return $this->slice($i); + } + + /** + * @param string|string[] $needle + * + * @return static + */ + public function afterLast($needle, bool $includeNeedle = false, int $offset = 0): self + { + $str = clone $this; + $i = null; + + foreach ((array) $needle as $n) { + $n = (string) $n; + $j = $this->indexOfLast($n, $offset); + + if (null !== $j && $j >= $i) { + $i = $offset = $j; + $str->string = $n; + } + } + + if (null === $i) { + return $str; + } + + if (!$includeNeedle) { + $i += $str->length(); + } + + return $this->slice($i); + } + + /** + * @return static + */ + abstract public function append(string ...$suffix): self; + + /** + * @param string|string[] $needle + * + * @return static + */ + public function before($needle, bool $includeNeedle = false, int $offset = 0): self + { + $str = clone $this; + $i = \PHP_INT_MAX; + + foreach ((array) $needle as $n) { + $n = (string) $n; + $j = $this->indexOf($n, $offset); + + if (null !== $j && $j < $i) { + $i = $j; + $str->string = $n; + } + } + + if (\PHP_INT_MAX === $i) { + return $str; + } + + if ($includeNeedle) { + $i += $str->length(); + } + + return $this->slice(0, $i); + } + + /** + * @param string|string[] $needle + * + * @return static + */ + public function beforeLast($needle, bool $includeNeedle = false, int $offset = 0): self + { + $str = clone $this; + $i = null; + + foreach ((array) $needle as $n) { + $n = (string) $n; + $j = $this->indexOfLast($n, $offset); + + if (null !== $j && $j >= $i) { + $i = $offset = $j; + $str->string = $n; + } + } + + if (null === $i) { + return $str; + } + + if ($includeNeedle) { + $i += $str->length(); + } + + return $this->slice(0, $i); + } + + /** + * @return int[] + */ + public function bytesAt(int $offset): array + { + $str = $this->slice($offset, 1); + + return '' === $str->string ? [] : array_values(unpack('C*', $str->string)); + } + + /** + * @return static + */ + abstract public function camel(): self; + + /** + * @return static[] + */ + abstract public function chunk(int $length = 1): array; + + /** + * @return static + */ + public function collapseWhitespace(): self + { + $str = clone $this; + $str->string = trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $str->string), " \n\r\t\x0C"); + + return $str; + } + + /** + * @param string|string[] $needle + */ + public function containsAny($needle): bool + { + return null !== $this->indexOf($needle); + } + + /** + * @param string|string[] $suffix + */ + public function endsWith($suffix): bool + { + if (!\is_array($suffix) && !$suffix instanceof \Traversable) { + throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); + } + + foreach ($suffix as $s) { + if ($this->endsWith((string) $s)) { + return true; + } + } + + return false; + } + + /** + * @return static + */ + public function ensureEnd(string $suffix): self + { + if (!$this->endsWith($suffix)) { + return $this->append($suffix); + } + + $suffix = preg_quote($suffix); + $regex = '{('.$suffix.')(?:'.$suffix.')++$}D'; + + return $this->replaceMatches($regex.($this->ignoreCase ? 'i' : ''), '$1'); + } + + /** + * @return static + */ + public function ensureStart(string $prefix): self + { + $prefix = new static($prefix); + + if (!$this->startsWith($prefix)) { + return $this->prepend($prefix); + } + + $str = clone $this; + $i = $prefixLen = $prefix->length(); + + while ($this->indexOf($prefix, $i) === $i) { + $str = $str->slice($prefixLen); + $i += $prefixLen; + } + + return $str; + } + + /** + * @param string|string[] $string + */ + public function equalsTo($string): bool + { + if (!\is_array($string) && !$string instanceof \Traversable) { + throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); + } + + foreach ($string as $s) { + if ($this->equalsTo((string) $s)) { + return true; + } + } + + return false; + } + + /** + * @return static + */ + abstract public function folded(): self; + + /** + * @return static + */ + public function ignoreCase(): self + { + $str = clone $this; + $str->ignoreCase = true; + + return $str; + } + + /** + * @param string|string[] $needle + */ + public function indexOf($needle, int $offset = 0): ?int + { + if (!\is_array($needle) && !$needle instanceof \Traversable) { + throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); + } + + $i = \PHP_INT_MAX; + + foreach ($needle as $n) { + $j = $this->indexOf((string) $n, $offset); + + if (null !== $j && $j < $i) { + $i = $j; + } + } + + return \PHP_INT_MAX === $i ? null : $i; + } + + /** + * @param string|string[] $needle + */ + public function indexOfLast($needle, int $offset = 0): ?int + { + if (!\is_array($needle) && !$needle instanceof \Traversable) { + throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); + } + + $i = null; + + foreach ($needle as $n) { + $j = $this->indexOfLast((string) $n, $offset); + + if (null !== $j && $j >= $i) { + $i = $offset = $j; + } + } + + return $i; + } + + public function isEmpty(): bool + { + return '' === $this->string; + } + + /** + * @return static + */ + abstract public function join(array $strings, string $lastGlue = null): self; + + public function jsonSerialize(): string + { + return $this->string; + } + + abstract public function length(): int; + + /** + * @return static + */ + abstract public function lower(): self; + + /** + * Matches the string using a regular expression. + * + * Pass PREG_PATTERN_ORDER or PREG_SET_ORDER as $flags to get all occurrences matching the regular expression. + * + * @return array All matches in a multi-dimensional array ordered according to flags + */ + abstract public function match(string $regexp, int $flags = 0, int $offset = 0): array; + + /** + * @return static + */ + abstract public function padBoth(int $length, string $padStr = ' '): self; + + /** + * @return static + */ + abstract public function padEnd(int $length, string $padStr = ' '): self; + + /** + * @return static + */ + abstract public function padStart(int $length, string $padStr = ' '): self; + + /** + * @return static + */ + abstract public function prepend(string ...$prefix): self; + + /** + * @return static + */ + public function repeat(int $multiplier): self + { + if (0 > $multiplier) { + throw new InvalidArgumentException(sprintf('Multiplier must be positive, %d given.', $multiplier)); + } + + $str = clone $this; + $str->string = str_repeat($str->string, $multiplier); + + return $str; + } + + /** + * @return static + */ + abstract public function replace(string $from, string $to): self; + + /** + * @param string|callable $to + * + * @return static + */ + abstract public function replaceMatches(string $fromRegexp, $to): self; + + /** + * @return static + */ + abstract public function reverse(): self; + + /** + * @return static + */ + abstract public function slice(int $start = 0, int $length = null): self; + + /** + * @return static + */ + abstract public function snake(): self; + + /** + * @return static + */ + abstract public function splice(string $replacement, int $start = 0, int $length = null): self; + + /** + * @return static[] + */ + public function split(string $delimiter, int $limit = null, int $flags = null): array + { + if (null === $flags) { + throw new \TypeError('Split behavior when $flags is null must be implemented by child classes.'); + } + + if ($this->ignoreCase) { + $delimiter .= 'i'; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + if (false === $chunks = preg_split($delimiter, $this->string, $limit, $flags)) { + $lastError = preg_last_error(); + + foreach (get_defined_constants(true)['pcre'] as $k => $v) { + if ($lastError === $v && '_ERROR' === substr($k, -6)) { + throw new RuntimeException('Splitting failed with '.$k.'.'); + } + } + + throw new RuntimeException('Splitting failed with unknown error code.'); + } + } finally { + restore_error_handler(); + } + + $str = clone $this; + + if (self::PREG_SPLIT_OFFSET_CAPTURE & $flags) { + foreach ($chunks as &$chunk) { + $str->string = $chunk[0]; + $chunk[0] = clone $str; + } + } else { + foreach ($chunks as &$chunk) { + $str->string = $chunk; + $chunk = clone $str; + } + } + + return $chunks; + } + + /** + * @param string|string[] $prefix + */ + public function startsWith($prefix): bool + { + if (!\is_array($prefix) && !$prefix instanceof \Traversable) { + throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); + } + + foreach ($prefix as $prefix) { + if ($this->startsWith((string) $prefix)) { + return true; + } + } + + return false; + } + + /** + * @return static + */ + abstract public function title(bool $allWords = false): self; + + public function toByteString(string $toEncoding = null): ByteString + { + $b = new ByteString(); + + $toEncoding = \in_array($toEncoding, ['utf8', 'utf-8', 'UTF8'], true) ? 'UTF-8' : $toEncoding; + + if (null === $toEncoding || $toEncoding === $fromEncoding = $this instanceof AbstractUnicodeString || preg_match('//u', $b->string) ? 'UTF-8' : 'Windows-1252') { + $b->string = $this->string; + + return $b; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + try { + $b->string = mb_convert_encoding($this->string, $toEncoding, 'UTF-8'); + } catch (InvalidArgumentException $e) { + if (!\function_exists('iconv')) { + throw $e; + } + + $b->string = iconv('UTF-8', $toEncoding, $this->string); + } + } finally { + restore_error_handler(); + } + + return $b; + } + + public function toCodePointString(): CodePointString + { + return new CodePointString($this->string); + } + + public function toString(): string + { + return $this->string; + } + + public function toUnicodeString(): UnicodeString + { + return new UnicodeString($this->string); + } + + /** + * @return static + */ + abstract public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + /** + * @return static + */ + abstract public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + /** + * @param string|string[] $prefix + * + * @return static + */ + public function trimPrefix($prefix): self + { + if (\is_array($prefix) || $prefix instanceof \Traversable) { + foreach ($prefix as $s) { + $t = $this->trimPrefix($s); + + if ($t->string !== $this->string) { + return $t; + } + } + + return clone $this; + } + + $str = clone $this; + + if ($prefix instanceof self) { + $prefix = $prefix->string; + } else { + $prefix = (string) $prefix; + } + + if ('' !== $prefix && \strlen($this->string) >= \strlen($prefix) && 0 === substr_compare($this->string, $prefix, 0, \strlen($prefix), $this->ignoreCase)) { + $str->string = substr($this->string, \strlen($prefix)); + } + + return $str; + } + + /** + * @return static + */ + abstract public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + /** + * @param string|string[] $suffix + * + * @return static + */ + public function trimSuffix($suffix): self + { + if (\is_array($suffix) || $suffix instanceof \Traversable) { + foreach ($suffix as $s) { + $t = $this->trimSuffix($s); + + if ($t->string !== $this->string) { + return $t; + } + } + + return clone $this; + } + + $str = clone $this; + + if ($suffix instanceof self) { + $suffix = $suffix->string; + } else { + $suffix = (string) $suffix; + } + + if ('' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase)) { + $str->string = substr($this->string, 0, -\strlen($suffix)); + } + + return $str; + } + + /** + * @return static + */ + public function truncate(int $length, string $ellipsis = '', bool $cut = true): self + { + $stringLength = $this->length(); + + if ($stringLength <= $length) { + return clone $this; + } + + $ellipsisLength = '' !== $ellipsis ? (new static($ellipsis))->length() : 0; + + if ($length < $ellipsisLength) { + $ellipsisLength = 0; + } + + if (!$cut) { + if (null === $length = $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1)) { + return clone $this; + } + + $length += $ellipsisLength; + } + + $str = $this->slice(0, $length - $ellipsisLength); + + return $ellipsisLength ? $str->trimEnd()->append($ellipsis) : $str; + } + + /** + * @return static + */ + abstract public function upper(): self; + + /** + * Returns the printable length on a terminal. + */ + abstract public function width(bool $ignoreAnsiDecoration = true): int; + + /** + * @return static + */ + public function wordwrap(int $width = 75, string $break = "\n", bool $cut = false): self + { + $lines = '' !== $break ? $this->split($break) : [clone $this]; + $chars = []; + $mask = ''; + + if (1 === \count($lines) && '' === $lines[0]->string) { + return $lines[0]; + } + + foreach ($lines as $i => $line) { + if ($i) { + $chars[] = $break; + $mask .= '#'; + } + + foreach ($line->chunk() as $char) { + $chars[] = $char->string; + $mask .= ' ' === $char->string ? ' ' : '?'; + } + } + + $string = ''; + $j = 0; + $b = $i = -1; + $mask = wordwrap($mask, $width, '#', $cut); + + while (false !== $b = strpos($mask, '#', $b + 1)) { + for (++$i; $i < $b; ++$i) { + $string .= $chars[$j]; + unset($chars[$j++]); + } + + if ($break === $chars[$j] || ' ' === $chars[$j]) { + unset($chars[$j++]); + } + + $string .= $break; + } + + $str = clone $this; + $str->string = $string.implode('', $chars); + + return $str; + } + + public function __sleep(): array + { + return ['string']; + } + + public function __clone() + { + $this->ignoreCase = false; + } + + public function __toString(): string + { + return $this->string; + } +} diff --git a/vendor/symfony/string/AbstractUnicodeString.php b/vendor/symfony/string/AbstractUnicodeString.php new file mode 100644 index 000000000..1bc6f88fd --- /dev/null +++ b/vendor/symfony/string/AbstractUnicodeString.php @@ -0,0 +1,623 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +use Symfony\Component\String\Exception\ExceptionInterface; +use Symfony\Component\String\Exception\InvalidArgumentException; +use Symfony\Component\String\Exception\RuntimeException; + +/** + * Represents a string of abstract Unicode characters. + * + * Unicode defines 3 types of "characters" (bytes, code points and grapheme clusters). + * This class is the abstract type to use as a type-hint when the logic you want to + * implement is Unicode-aware but doesn't care about code points vs grapheme clusters. + * + * @author Nicolas Grekas <p@tchwork.com> + * + * @throws ExceptionInterface + */ +abstract class AbstractUnicodeString extends AbstractString +{ + public const NFC = \Normalizer::NFC; + public const NFD = \Normalizer::NFD; + public const NFKC = \Normalizer::NFKC; + public const NFKD = \Normalizer::NFKD; + + // all ASCII letters sorted by typical frequency of occurrence + private const ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"; + + // the subset of folded case mappings that is not in lower case mappings + private const FOLD_FROM = ['İ', 'µ', 'ſ', "\xCD\x85", 'ς', 'ϐ', 'ϑ', 'ϕ', 'ϖ', 'ϰ', 'ϱ', 'ϵ', 'ẛ', "\xE1\xBE\xBE", 'ß', 'İ', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'և', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ẞ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ', 'ᾐ', 'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'ᾼ', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'ῌ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', 'ῼ', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ']; + private const FOLD_TO = ['i̇', 'μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', 'ṡ', 'ι', 'ss', 'i̇', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'եւ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'aʾ', 'ss', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὰι', 'αι', 'άι', 'ᾶ', 'ᾶι', 'αι', 'ὴι', 'ηι', 'ήι', 'ῆ', 'ῆι', 'ηι', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ὼι', 'ωι', 'ώι', 'ῶ', 'ῶι', 'ωι', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', 'մն', 'մե', 'մի', 'վն', 'մխ']; + + // the subset of upper case mappings that map one code point to many code points + private const UPPER_FROM = ['ß', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'և', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ', 'ʼn', 'ΐ', 'ΰ', 'ǰ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾶ', 'ῆ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῶ']; + private const UPPER_TO = ['SS', 'FF', 'FI', 'FL', 'FFI', 'FFL', 'ST', 'ST', 'ԵՒ', 'ՄՆ', 'ՄԵ', 'ՄԻ', 'ՎՆ', 'ՄԽ', 'ʼN', 'Ϊ́', 'Ϋ́', 'J̌', 'H̱', 'T̈', 'W̊', 'Y̊', 'Aʾ', 'Υ̓', 'Υ̓̀', 'Υ̓́', 'Υ̓͂', 'Α͂', 'Η͂', 'Ϊ̀', 'Ϊ́', 'Ι͂', 'Ϊ͂', 'Ϋ̀', 'Ϋ́', 'Ρ̓', 'Υ͂', 'Ϋ͂', 'Ω͂']; + + // the subset of https://github.com/unicode-org/cldr/blob/master/common/transforms/Latin-ASCII.xml that is not in NFKD + private const TRANSLIT_FROM = ['Æ', 'Ð', 'Ø', 'Þ', 'ß', 'æ', 'ð', 'ø', 'þ', 'Đ', 'đ', 'Ħ', 'ħ', 'ı', 'ĸ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'ʼn', 'Ŋ', 'ŋ', 'Œ', 'œ', 'Ŧ', 'ŧ', 'ƀ', 'Ɓ', 'Ƃ', 'ƃ', 'Ƈ', 'ƈ', 'Ɖ', 'Ɗ', 'Ƌ', 'ƌ', 'Ɛ', 'Ƒ', 'ƒ', 'Ɠ', 'ƕ', 'Ɩ', 'Ɨ', 'Ƙ', 'ƙ', 'ƚ', 'Ɲ', 'ƞ', 'Ƣ', 'ƣ', 'Ƥ', 'ƥ', 'ƫ', 'Ƭ', 'ƭ', 'Ʈ', 'Ʋ', 'Ƴ', 'ƴ', 'Ƶ', 'ƶ', 'DŽ', 'Dž', 'dž', 'Ǥ', 'ǥ', 'ȡ', 'Ȥ', 'ȥ', 'ȴ', 'ȵ', 'ȶ', 'ȷ', 'ȸ', 'ȹ', 'Ⱥ', 'Ȼ', 'ȼ', 'Ƚ', 'Ⱦ', 'ȿ', 'ɀ', 'Ƀ', 'Ʉ', 'Ɇ', 'ɇ', 'Ɉ', 'ɉ', 'Ɍ', 'ɍ', 'Ɏ', 'ɏ', 'ɓ', 'ɕ', 'ɖ', 'ɗ', 'ɛ', 'ɟ', 'ɠ', 'ɡ', 'ɢ', 'ɦ', 'ɧ', 'ɨ', 'ɪ', 'ɫ', 'ɬ', 'ɭ', 'ɱ', 'ɲ', 'ɳ', 'ɴ', 'ɶ', 'ɼ', 'ɽ', 'ɾ', 'ʀ', 'ʂ', 'ʈ', 'ʉ', 'ʋ', 'ʏ', 'ʐ', 'ʑ', 'ʙ', 'ʛ', 'ʜ', 'ʝ', 'ʟ', 'ʠ', 'ʣ', 'ʥ', 'ʦ', 'ʪ', 'ʫ', 'ᴀ', 'ᴁ', 'ᴃ', 'ᴄ', 'ᴅ', 'ᴆ', 'ᴇ', 'ᴊ', 'ᴋ', 'ᴌ', 'ᴍ', 'ᴏ', 'ᴘ', 'ᴛ', 'ᴜ', 'ᴠ', 'ᴡ', 'ᴢ', 'ᵫ', 'ᵬ', 'ᵭ', 'ᵮ', 'ᵯ', 'ᵰ', 'ᵱ', 'ᵲ', 'ᵳ', 'ᵴ', 'ᵵ', 'ᵶ', 'ᵺ', 'ᵻ', 'ᵽ', 'ᵾ', 'ᶀ', 'ᶁ', 'ᶂ', 'ᶃ', 'ᶄ', 'ᶅ', 'ᶆ', 'ᶇ', 'ᶈ', 'ᶉ', 'ᶊ', 'ᶌ', 'ᶍ', 'ᶎ', 'ᶏ', 'ᶑ', 'ᶒ', 'ᶓ', 'ᶖ', 'ᶙ', 'ẚ', 'ẜ', 'ẝ', 'ẞ', 'Ỻ', 'ỻ', 'Ỽ', 'ỽ', 'Ỿ', 'ỿ', '©', '®', '₠', '₢', '₣', '₤', '₧', '₺', '₹', 'ℌ', '℞', '㎧', '㎮', '㏆', '㏗', '㏞', '㏟', '¼', '½', '¾', '⅓', '⅔', '⅕', '⅖', '⅗', '⅘', '⅙', '⅚', '⅛', '⅜', '⅝', '⅞', '⅟', '〇', '‘', '’', '‚', '‛', '“', '”', '„', '‟', '′', '″', '〝', '〞', '«', '»', '‹', '›', '‐', '‑', '‒', '–', '—', '―', '︱', '︲', '﹘', '‖', '⁄', '⁅', '⁆', '⁎', '、', '。', '〈', '〉', '《', '》', '〔', '〕', '〘', '〙', '〚', '〛', '︑', '︒', '︹', '︺', '︽', '︾', '︿', '﹀', '﹑', '﹝', '﹞', '⦅', '⦆', '。', '、', '×', '÷', '−', '∕', '∖', '∣', '∥', '≪', '≫', '⦅', '⦆']; + private const TRANSLIT_TO = ['AE', 'D', 'O', 'TH', 'ss', 'ae', 'd', 'o', 'th', 'D', 'd', 'H', 'h', 'i', 'q', 'L', 'l', 'L', 'l', '\'n', 'N', 'n', 'OE', 'oe', 'T', 't', 'b', 'B', 'B', 'b', 'C', 'c', 'D', 'D', 'D', 'd', 'E', 'F', 'f', 'G', 'hv', 'I', 'I', 'K', 'k', 'l', 'N', 'n', 'OI', 'oi', 'P', 'p', 't', 'T', 't', 'T', 'V', 'Y', 'y', 'Z', 'z', 'DZ', 'Dz', 'dz', 'G', 'g', 'd', 'Z', 'z', 'l', 'n', 't', 'j', 'db', 'qp', 'A', 'C', 'c', 'L', 'T', 's', 'z', 'B', 'U', 'E', 'e', 'J', 'j', 'R', 'r', 'Y', 'y', 'b', 'c', 'd', 'd', 'e', 'j', 'g', 'g', 'G', 'h', 'h', 'i', 'I', 'l', 'l', 'l', 'm', 'n', 'n', 'N', 'OE', 'r', 'r', 'r', 'R', 's', 't', 'u', 'v', 'Y', 'z', 'z', 'B', 'G', 'H', 'j', 'L', 'q', 'dz', 'dz', 'ts', 'ls', 'lz', 'A', 'AE', 'B', 'C', 'D', 'D', 'E', 'J', 'K', 'L', 'M', 'O', 'P', 'T', 'U', 'V', 'W', 'Z', 'ue', 'b', 'd', 'f', 'm', 'n', 'p', 'r', 'r', 's', 't', 'z', 'th', 'I', 'p', 'U', 'b', 'd', 'f', 'g', 'k', 'l', 'm', 'n', 'p', 'r', 's', 'v', 'x', 'z', 'a', 'd', 'e', 'e', 'i', 'u', 'a', 's', 's', 'SS', 'LL', 'll', 'V', 'v', 'Y', 'y', '(C)', '(R)', 'CE', 'Cr', 'Fr.', 'L.', 'Pts', 'TL', 'Rs', 'x', 'Rx', 'm/s', 'rad/s', 'C/kg', 'pH', 'V/m', 'A/m', ' 1/4', ' 1/2', ' 3/4', ' 1/3', ' 2/3', ' 1/5', ' 2/5', ' 3/5', ' 4/5', ' 1/6', ' 5/6', ' 1/8', ' 3/8', ' 5/8', ' 7/8', ' 1/', '0', '\'', '\'', ',', '\'', '"', '"', ',,', '"', '\'', '"', '"', '"', '<<', '>>', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; + + private static $transliterators = []; + private static $tableZero; + private static $tableWide; + + /** + * @return static + */ + public static function fromCodePoints(int ...$codes): self + { + $string = ''; + + foreach ($codes as $code) { + if (0x80 > $code %= 0x200000) { + $string .= \chr($code); + } elseif (0x800 > $code) { + $string .= \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); + } elseif (0x10000 > $code) { + $string .= \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } else { + $string .= \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } + } + + return new static($string); + } + + /** + * Generic UTF-8 to ASCII transliteration. + * + * Install the intl extension for best results. + * + * @param string[]|\Transliterator[]|\Closure[] $rules See "*-Latin" rules from Transliterator::listIDs() + */ + public function ascii(array $rules = []): self + { + $str = clone $this; + $s = $str->string; + $str->string = ''; + + array_unshift($rules, 'nfd'); + $rules[] = 'latin-ascii'; + + if (\function_exists('transliterator_transliterate')) { + $rules[] = 'any-latin/bgn'; + } + + $rules[] = 'nfkd'; + $rules[] = '[:nonspacing mark:] remove'; + + while (\strlen($s) - 1 > $i = strspn($s, self::ASCII)) { + if (0 < --$i) { + $str->string .= substr($s, 0, $i); + $s = substr($s, $i); + } + + if (!$rule = array_shift($rules)) { + $rules = []; // An empty rule interrupts the next ones + } + + if ($rule instanceof \Transliterator) { + $s = $rule->transliterate($s); + } elseif ($rule instanceof \Closure) { + $s = $rule($s); + } elseif ($rule) { + if ('nfd' === $rule = strtolower($rule)) { + normalizer_is_normalized($s, self::NFD) ?: $s = normalizer_normalize($s, self::NFD); + } elseif ('nfkd' === $rule) { + normalizer_is_normalized($s, self::NFKD) ?: $s = normalizer_normalize($s, self::NFKD); + } elseif ('[:nonspacing mark:] remove' === $rule) { + $s = preg_replace('/\p{Mn}++/u', '', $s); + } elseif ('latin-ascii' === $rule) { + $s = str_replace(self::TRANSLIT_FROM, self::TRANSLIT_TO, $s); + } elseif ('de-ascii' === $rule) { + $s = preg_replace("/([AUO])\u{0308}(?=\p{Ll})/u", '$1e', $s); + $s = str_replace(["a\u{0308}", "o\u{0308}", "u\u{0308}", "A\u{0308}", "O\u{0308}", "U\u{0308}"], ['ae', 'oe', 'ue', 'AE', 'OE', 'UE'], $s); + } elseif (\function_exists('transliterator_transliterate')) { + if (null === $transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule)) { + if ('any-latin/bgn' === $rule) { + $rule = 'any-latin'; + $transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule); + } + + if (null === $transliterator) { + throw new InvalidArgumentException(sprintf('Unknown transliteration rule "%s".', $rule)); + } + + self::$transliterators['any-latin/bgn'] = $transliterator; + } + + $s = $transliterator->transliterate($s); + } + } elseif (!\function_exists('iconv')) { + $s = preg_replace('/[^\x00-\x7F]/u', '?', $s); + } else { + $s = @preg_replace_callback('/[^\x00-\x7F]/u', static function ($c) { + $c = (string) iconv('UTF-8', 'ASCII//TRANSLIT', $c[0]); + + if ('' === $c && '' === iconv('UTF-8', 'ASCII//TRANSLIT', '²')) { + throw new \LogicException(sprintf('"%s" requires a translit-able iconv implementation, try installing "gnu-libiconv" if you\'re using Alpine Linux.', static::class)); + } + + return 1 < \strlen($c) ? ltrim($c, '\'`"^~') : ('' !== $c ? $c : '?'); + }, $s); + } + } + + $str->string .= $s; + + return $str; + } + + public function camel(): parent + { + $str = clone $this; + $str->string = str_replace(' ', '', preg_replace_callback('/\b.(?![A-Z]{2,})/u', static function ($m) use (&$i) { + return 1 === ++$i ? ('İ' === $m[0] ? 'i̇' : mb_strtolower($m[0], 'UTF-8')) : mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); + }, preg_replace('/[^\pL0-9]++/u', ' ', $this->string))); + + return $str; + } + + /** + * @return int[] + */ + public function codePointsAt(int $offset): array + { + $str = $this->slice($offset, 1); + + if ('' === $str->string) { + return []; + } + + $codePoints = []; + + foreach (preg_split('//u', $str->string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { + $codePoints[] = mb_ord($c, 'UTF-8'); + } + + return $codePoints; + } + + public function folded(bool $compat = true): parent + { + $str = clone $this; + + if (!$compat || \PHP_VERSION_ID < 70300 || !\defined('Normalizer::NFKC_CF')) { + $str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); + $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $this->string), 'UTF-8'); + } else { + $str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); + } + + return $str; + } + + public function join(array $strings, string $lastGlue = null): parent + { + $str = clone $this; + + $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; + $str->string = implode($this->string, $strings).$tail; + + if (!preg_match('//u', $str->string)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function lower(): parent + { + $str = clone $this; + $str->string = mb_strtolower(str_replace('İ', 'i̇', $str->string), 'UTF-8'); + + return $str; + } + + public function match(string $regexp, int $flags = 0, int $offset = 0): array + { + $match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; + + if ($this->ignoreCase) { + $regexp .= 'i'; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + if (false === $match($regexp.'u', $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { + $lastError = preg_last_error(); + + foreach (get_defined_constants(true)['pcre'] as $k => $v) { + if ($lastError === $v && '_ERROR' === substr($k, -6)) { + throw new RuntimeException('Matching failed with '.$k.'.'); + } + } + + throw new RuntimeException('Matching failed with unknown error code.'); + } + } finally { + restore_error_handler(); + } + + return $matches; + } + + /** + * @return static + */ + public function normalize(int $form = self::NFC): self + { + if (!\in_array($form, [self::NFC, self::NFD, self::NFKC, self::NFKD])) { + throw new InvalidArgumentException('Unsupported normalization form.'); + } + + $str = clone $this; + normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); + + return $str; + } + + public function padBoth(int $length, string $padStr = ' '): parent + { + if ('' === $padStr || !preg_match('//u', $padStr)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + $pad = clone $this; + $pad->string = $padStr; + + return $this->pad($length, $pad, \STR_PAD_BOTH); + } + + public function padEnd(int $length, string $padStr = ' '): parent + { + if ('' === $padStr || !preg_match('//u', $padStr)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + $pad = clone $this; + $pad->string = $padStr; + + return $this->pad($length, $pad, \STR_PAD_RIGHT); + } + + public function padStart(int $length, string $padStr = ' '): parent + { + if ('' === $padStr || !preg_match('//u', $padStr)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + $pad = clone $this; + $pad->string = $padStr; + + return $this->pad($length, $pad, \STR_PAD_LEFT); + } + + public function replaceMatches(string $fromRegexp, $to): parent + { + if ($this->ignoreCase) { + $fromRegexp .= 'i'; + } + + if (\is_array($to) || $to instanceof \Closure) { + if (!\is_callable($to)) { + throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); + } + + $replace = 'preg_replace_callback'; + $to = static function (array $m) use ($to): string { + $to = $to($m); + + if ('' !== $to && (!\is_string($to) || !preg_match('//u', $to))) { + throw new InvalidArgumentException('Replace callback must return a valid UTF-8 string.'); + } + + return $to; + }; + } elseif ('' !== $to && !preg_match('//u', $to)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } else { + $replace = 'preg_replace'; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + if (null === $string = $replace($fromRegexp.'u', $to, $this->string)) { + $lastError = preg_last_error(); + + foreach (get_defined_constants(true)['pcre'] as $k => $v) { + if ($lastError === $v && '_ERROR' === substr($k, -6)) { + throw new RuntimeException('Matching failed with '.$k.'.'); + } + } + + throw new RuntimeException('Matching failed with unknown error code.'); + } + } finally { + restore_error_handler(); + } + + $str = clone $this; + $str->string = $string; + + return $str; + } + + public function reverse(): parent + { + $str = clone $this; + $str->string = implode('', array_reverse(preg_split('/(\X)/u', $str->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY))); + + return $str; + } + + public function snake(): parent + { + $str = $this->camel(); + $str->string = mb_strtolower(preg_replace(['/(\p{Lu}+)(\p{Lu}\p{Ll})/u', '/([\p{Ll}0-9])(\p{Lu})/u'], '\1_\2', $str->string), 'UTF-8'); + + return $str; + } + + public function title(bool $allWords = false): parent + { + $str = clone $this; + + $limit = $allWords ? -1 : 1; + + $str->string = preg_replace_callback('/\b./u', static function (array $m): string { + return mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); + }, $str->string, $limit); + + return $str; + } + + public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent + { + if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { + throw new InvalidArgumentException('Invalid UTF-8 chars.'); + } + $chars = preg_quote($chars); + + $str = clone $this; + $str->string = preg_replace("{^[$chars]++|[$chars]++$}uD", '', $str->string); + + return $str; + } + + public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent + { + if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { + throw new InvalidArgumentException('Invalid UTF-8 chars.'); + } + $chars = preg_quote($chars); + + $str = clone $this; + $str->string = preg_replace("{[$chars]++$}uD", '', $str->string); + + return $str; + } + + public function trimPrefix($prefix): parent + { + if (!$this->ignoreCase) { + return parent::trimPrefix($prefix); + } + + $str = clone $this; + + if ($prefix instanceof \Traversable) { + $prefix = iterator_to_array($prefix, false); + } elseif ($prefix instanceof parent) { + $prefix = $prefix->string; + } + + $prefix = implode('|', array_map('preg_quote', (array) $prefix)); + $str->string = preg_replace("{^(?:$prefix)}iuD", '', $this->string); + + return $str; + } + + public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent + { + if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { + throw new InvalidArgumentException('Invalid UTF-8 chars.'); + } + $chars = preg_quote($chars); + + $str = clone $this; + $str->string = preg_replace("{^[$chars]++}uD", '', $str->string); + + return $str; + } + + public function trimSuffix($suffix): parent + { + if (!$this->ignoreCase) { + return parent::trimSuffix($suffix); + } + + $str = clone $this; + + if ($suffix instanceof \Traversable) { + $suffix = iterator_to_array($suffix, false); + } elseif ($suffix instanceof parent) { + $suffix = $suffix->string; + } + + $suffix = implode('|', array_map('preg_quote', (array) $suffix)); + $str->string = preg_replace("{(?:$suffix)$}iuD", '', $this->string); + + return $str; + } + + public function upper(): parent + { + $str = clone $this; + $str->string = mb_strtoupper($str->string, 'UTF-8'); + + if (\PHP_VERSION_ID < 70300) { + $str->string = str_replace(self::UPPER_FROM, self::UPPER_TO, $str->string); + } + + return $str; + } + + public function width(bool $ignoreAnsiDecoration = true): int + { + $width = 0; + $s = str_replace(["\x00", "\x05", "\x07"], '', $this->string); + + if (false !== strpos($s, "\r")) { + $s = str_replace(["\r\n", "\r"], "\n", $s); + } + + if (!$ignoreAnsiDecoration) { + $s = preg_replace('/[\p{Cc}\x7F]++/u', '', $s); + } + + foreach (explode("\n", $s) as $s) { + if ($ignoreAnsiDecoration) { + $s = preg_replace('/(?:\x1B(?: + \[ [\x30-\x3F]*+ [\x20-\x2F]*+ [\x40-\x7E] + | [P\]X^_] .*? \x1B\\\\ + | [\x41-\x7E] + )|[\p{Cc}\x7F]++)/xu', '', $s); + } + + $lineWidth = $this->wcswidth($s); + + if ($lineWidth > $width) { + $width = $lineWidth; + } + } + + return $width; + } + + /** + * @return static + */ + private function pad(int $len, self $pad, int $type): parent + { + $sLen = $this->length(); + + if ($len <= $sLen) { + return clone $this; + } + + $padLen = $pad->length(); + $freeLen = $len - $sLen; + $len = $freeLen % $padLen; + + switch ($type) { + case \STR_PAD_RIGHT: + return $this->append(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + + case \STR_PAD_LEFT: + return $this->prepend(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + + case \STR_PAD_BOTH: + $freeLen /= 2; + + $rightLen = ceil($freeLen); + $len = $rightLen % $padLen; + $str = $this->append(str_repeat($pad->string, intdiv($rightLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + + $leftLen = floor($freeLen); + $len = $leftLen % $padLen; + + return $str->prepend(str_repeat($pad->string, intdiv($leftLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + + default: + throw new InvalidArgumentException('Invalid padding type.'); + } + } + + /** + * Based on https://github.com/jquast/wcwidth, a Python implementation of https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c. + */ + private function wcswidth(string $string): int + { + $width = 0; + + foreach (preg_split('//u', $string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { + $codePoint = mb_ord($c, 'UTF-8'); + + if (0 === $codePoint // NULL + || 0x034F === $codePoint // COMBINING GRAPHEME JOINER + || (0x200B <= $codePoint && 0x200F >= $codePoint) // ZERO WIDTH SPACE to RIGHT-TO-LEFT MARK + || 0x2028 === $codePoint // LINE SEPARATOR + || 0x2029 === $codePoint // PARAGRAPH SEPARATOR + || (0x202A <= $codePoint && 0x202E >= $codePoint) // LEFT-TO-RIGHT EMBEDDING to RIGHT-TO-LEFT OVERRIDE + || (0x2060 <= $codePoint && 0x2063 >= $codePoint) // WORD JOINER to INVISIBLE SEPARATOR + ) { + continue; + } + + // Non printable characters + if (32 > $codePoint // C0 control characters + || (0x07F <= $codePoint && 0x0A0 > $codePoint) // C1 control characters and DEL + ) { + return -1; + } + + if (null === self::$tableZero) { + self::$tableZero = require __DIR__.'/Resources/data/wcswidth_table_zero.php'; + } + + if ($codePoint >= self::$tableZero[0][0] && $codePoint <= self::$tableZero[$ubound = \count(self::$tableZero) - 1][1]) { + $lbound = 0; + while ($ubound >= $lbound) { + $mid = floor(($lbound + $ubound) / 2); + + if ($codePoint > self::$tableZero[$mid][1]) { + $lbound = $mid + 1; + } elseif ($codePoint < self::$tableZero[$mid][0]) { + $ubound = $mid - 1; + } else { + continue 2; + } + } + } + + if (null === self::$tableWide) { + self::$tableWide = require __DIR__.'/Resources/data/wcswidth_table_wide.php'; + } + + if ($codePoint >= self::$tableWide[0][0] && $codePoint <= self::$tableWide[$ubound = \count(self::$tableWide) - 1][1]) { + $lbound = 0; + while ($ubound >= $lbound) { + $mid = floor(($lbound + $ubound) / 2); + + if ($codePoint > self::$tableWide[$mid][1]) { + $lbound = $mid + 1; + } elseif ($codePoint < self::$tableWide[$mid][0]) { + $ubound = $mid - 1; + } else { + $width += 2; + + continue 2; + } + } + } + + ++$width; + } + + return $width; + } +} diff --git a/vendor/symfony/string/ByteString.php b/vendor/symfony/string/ByteString.php new file mode 100644 index 000000000..626d8c1bb --- /dev/null +++ b/vendor/symfony/string/ByteString.php @@ -0,0 +1,509 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +use Symfony\Component\String\Exception\ExceptionInterface; +use Symfony\Component\String\Exception\InvalidArgumentException; +use Symfony\Component\String\Exception\RuntimeException; + +/** + * Represents a binary-safe string of bytes. + * + * @author Nicolas Grekas <p@tchwork.com> + * @author Hugo Hamon <hugohamon@neuf.fr> + * + * @throws ExceptionInterface + */ +class ByteString extends AbstractString +{ + private const ALPHABET_ALPHANUMERIC = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; + + public function __construct(string $string = '') + { + $this->string = $string; + } + + /* + * The following method was derived from code of the Hack Standard Library (v4.40 - 2020-05-03) + * + * https://github.com/hhvm/hsl/blob/80a42c02f036f72a42f0415e80d6b847f4bf62d5/src/random/private.php#L16 + * + * Code subject to the MIT license (https://github.com/hhvm/hsl/blob/master/LICENSE). + * + * Copyright (c) 2004-2020, Facebook, Inc. (https://www.facebook.com/) + */ + + public static function fromRandom(int $length = 16, string $alphabet = null): self + { + if ($length <= 0) { + throw new InvalidArgumentException(sprintf('A strictly positive length is expected, "%d" given.', $length)); + } + + $alphabet = $alphabet ?? self::ALPHABET_ALPHANUMERIC; + $alphabetSize = \strlen($alphabet); + $bits = (int) ceil(log($alphabetSize, 2.0)); + if ($bits <= 0 || $bits > 56) { + throw new InvalidArgumentException('The length of the alphabet must in the [2^1, 2^56] range.'); + } + + $ret = ''; + while ($length > 0) { + $urandomLength = (int) ceil(2 * $length * $bits / 8.0); + $data = random_bytes($urandomLength); + $unpackedData = 0; + $unpackedBits = 0; + for ($i = 0; $i < $urandomLength && $length > 0; ++$i) { + // Unpack 8 bits + $unpackedData = ($unpackedData << 8) | \ord($data[$i]); + $unpackedBits += 8; + + // While we have enough bits to select a character from the alphabet, keep + // consuming the random data + for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { + $index = ($unpackedData & ((1 << $bits) - 1)); + $unpackedData >>= $bits; + // Unfortunately, the alphabet size is not necessarily a power of two. + // Worst case, it is 2^k + 1, which means we need (k+1) bits and we + // have around a 50% chance of missing as k gets larger + if ($index < $alphabetSize) { + $ret .= $alphabet[$index]; + --$length; + } + } + } + } + + return new static($ret); + } + + public function bytesAt(int $offset): array + { + $str = $this->string[$offset] ?? ''; + + return '' === $str ? [] : [\ord($str)]; + } + + public function append(string ...$suffix): parent + { + $str = clone $this; + $str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); + + return $str; + } + + public function camel(): parent + { + $str = clone $this; + + $parts = explode(' ', trim(ucwords(preg_replace('/[^a-zA-Z0-9\x7f-\xff]++/', ' ', $this->string)))); + $parts[0] = 1 !== \strlen($parts[0]) && ctype_upper($parts[0]) ? $parts[0] : lcfirst($parts[0]); + $str->string = implode('', $parts); + + return $str; + } + + public function chunk(int $length = 1): array + { + if (1 > $length) { + throw new InvalidArgumentException('The chunk length must be greater than zero.'); + } + + if ('' === $this->string) { + return []; + } + + $str = clone $this; + $chunks = []; + + foreach (str_split($this->string, $length) as $chunk) { + $str->string = $chunk; + $chunks[] = clone $str; + } + + return $chunks; + } + + public function endsWith($suffix): bool + { + if ($suffix instanceof parent) { + $suffix = $suffix->string; + } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { + return parent::endsWith($suffix); + } else { + $suffix = (string) $suffix; + } + + return '' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase); + } + + public function equalsTo($string): bool + { + if ($string instanceof parent) { + $string = $string->string; + } elseif (\is_array($string) || $string instanceof \Traversable) { + return parent::equalsTo($string); + } else { + $string = (string) $string; + } + + if ('' !== $string && $this->ignoreCase) { + return 0 === strcasecmp($string, $this->string); + } + + return $string === $this->string; + } + + public function folded(): parent + { + $str = clone $this; + $str->string = strtolower($str->string); + + return $str; + } + + public function indexOf($needle, int $offset = 0): ?int + { + if ($needle instanceof parent) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOf($needle, $offset); + } else { + $needle = (string) $needle; + } + + if ('' === $needle) { + return null; + } + + $i = $this->ignoreCase ? stripos($this->string, $needle, $offset) : strpos($this->string, $needle, $offset); + + return false === $i ? null : $i; + } + + public function indexOfLast($needle, int $offset = 0): ?int + { + if ($needle instanceof parent) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOfLast($needle, $offset); + } else { + $needle = (string) $needle; + } + + if ('' === $needle) { + return null; + } + + $i = $this->ignoreCase ? strripos($this->string, $needle, $offset) : strrpos($this->string, $needle, $offset); + + return false === $i ? null : $i; + } + + public function isUtf8(): bool + { + return '' === $this->string || preg_match('//u', $this->string); + } + + public function join(array $strings, string $lastGlue = null): parent + { + $str = clone $this; + + $tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; + $str->string = implode($this->string, $strings).$tail; + + return $str; + } + + public function length(): int + { + return \strlen($this->string); + } + + public function lower(): parent + { + $str = clone $this; + $str->string = strtolower($str->string); + + return $str; + } + + public function match(string $regexp, int $flags = 0, int $offset = 0): array + { + $match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; + + if ($this->ignoreCase) { + $regexp .= 'i'; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + if (false === $match($regexp, $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { + $lastError = preg_last_error(); + + foreach (get_defined_constants(true)['pcre'] as $k => $v) { + if ($lastError === $v && '_ERROR' === substr($k, -6)) { + throw new RuntimeException('Matching failed with '.$k.'.'); + } + } + + throw new RuntimeException('Matching failed with unknown error code.'); + } + } finally { + restore_error_handler(); + } + + return $matches; + } + + public function padBoth(int $length, string $padStr = ' '): parent + { + $str = clone $this; + $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_BOTH); + + return $str; + } + + public function padEnd(int $length, string $padStr = ' '): parent + { + $str = clone $this; + $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_RIGHT); + + return $str; + } + + public function padStart(int $length, string $padStr = ' '): parent + { + $str = clone $this; + $str->string = str_pad($this->string, $length, $padStr, \STR_PAD_LEFT); + + return $str; + } + + public function prepend(string ...$prefix): parent + { + $str = clone $this; + $str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$str->string; + + return $str; + } + + public function replace(string $from, string $to): parent + { + $str = clone $this; + + if ('' !== $from) { + $str->string = $this->ignoreCase ? str_ireplace($from, $to, $this->string) : str_replace($from, $to, $this->string); + } + + return $str; + } + + public function replaceMatches(string $fromRegexp, $to): parent + { + if ($this->ignoreCase) { + $fromRegexp .= 'i'; + } + + if (\is_array($to)) { + if (!\is_callable($to)) { + throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); + } + + $replace = 'preg_replace_callback'; + } else { + $replace = $to instanceof \Closure ? 'preg_replace_callback' : 'preg_replace'; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + if (null === $string = $replace($fromRegexp, $to, $this->string)) { + $lastError = preg_last_error(); + + foreach (get_defined_constants(true)['pcre'] as $k => $v) { + if ($lastError === $v && '_ERROR' === substr($k, -6)) { + throw new RuntimeException('Matching failed with '.$k.'.'); + } + } + + throw new RuntimeException('Matching failed with unknown error code.'); + } + } finally { + restore_error_handler(); + } + + $str = clone $this; + $str->string = $string; + + return $str; + } + + public function reverse(): parent + { + $str = clone $this; + $str->string = strrev($str->string); + + return $str; + } + + public function slice(int $start = 0, int $length = null): parent + { + $str = clone $this; + $str->string = (string) substr($this->string, $start, $length ?? \PHP_INT_MAX); + + return $str; + } + + public function snake(): parent + { + $str = $this->camel(); + $str->string = strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], '\1_\2', $str->string)); + + return $str; + } + + public function splice(string $replacement, int $start = 0, int $length = null): parent + { + $str = clone $this; + $str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); + + return $str; + } + + public function split(string $delimiter, int $limit = null, int $flags = null): array + { + if (1 > $limit = $limit ?? \PHP_INT_MAX) { + throw new InvalidArgumentException('Split limit must be a positive integer.'); + } + + if ('' === $delimiter) { + throw new InvalidArgumentException('Split delimiter is empty.'); + } + + if (null !== $flags) { + return parent::split($delimiter, $limit, $flags); + } + + $str = clone $this; + $chunks = $this->ignoreCase + ? preg_split('{'.preg_quote($delimiter).'}iD', $this->string, $limit) + : explode($delimiter, $this->string, $limit); + + foreach ($chunks as &$chunk) { + $str->string = $chunk; + $chunk = clone $str; + } + + return $chunks; + } + + public function startsWith($prefix): bool + { + if ($prefix instanceof parent) { + $prefix = $prefix->string; + } elseif (!\is_string($prefix)) { + return parent::startsWith($prefix); + } + + return '' !== $prefix && 0 === ($this->ignoreCase ? strncasecmp($this->string, $prefix, \strlen($prefix)) : strncmp($this->string, $prefix, \strlen($prefix))); + } + + public function title(bool $allWords = false): parent + { + $str = clone $this; + $str->string = $allWords ? ucwords($str->string) : ucfirst($str->string); + + return $str; + } + + public function toUnicodeString(string $fromEncoding = null): UnicodeString + { + return new UnicodeString($this->toCodePointString($fromEncoding)->string); + } + + public function toCodePointString(string $fromEncoding = null): CodePointString + { + $u = new CodePointString(); + + if (\in_array($fromEncoding, [null, 'utf8', 'utf-8', 'UTF8', 'UTF-8'], true) && preg_match('//u', $this->string)) { + $u->string = $this->string; + + return $u; + } + + set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + + try { + try { + $validEncoding = false !== mb_detect_encoding($this->string, $fromEncoding ?? 'Windows-1252', true); + } catch (InvalidArgumentException $e) { + if (!\function_exists('iconv')) { + throw $e; + } + + $u->string = iconv($fromEncoding ?? 'Windows-1252', 'UTF-8', $this->string); + + return $u; + } + } finally { + restore_error_handler(); + } + + if (!$validEncoding) { + throw new InvalidArgumentException(sprintf('Invalid "%s" string.', $fromEncoding ?? 'Windows-1252')); + } + + $u->string = mb_convert_encoding($this->string, 'UTF-8', $fromEncoding ?? 'Windows-1252'); + + return $u; + } + + public function trim(string $chars = " \t\n\r\0\x0B\x0C"): parent + { + $str = clone $this; + $str->string = trim($str->string, $chars); + + return $str; + } + + public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C"): parent + { + $str = clone $this; + $str->string = rtrim($str->string, $chars); + + return $str; + } + + public function trimStart(string $chars = " \t\n\r\0\x0B\x0C"): parent + { + $str = clone $this; + $str->string = ltrim($str->string, $chars); + + return $str; + } + + public function upper(): parent + { + $str = clone $this; + $str->string = strtoupper($str->string); + + return $str; + } + + public function width(bool $ignoreAnsiDecoration = true): int + { + $string = preg_match('//u', $this->string) ? $this->string : preg_replace('/[\x80-\xFF]/', '?', $this->string); + + return (new CodePointString($string))->width($ignoreAnsiDecoration); + } +} diff --git a/vendor/symfony/string/CHANGELOG.md b/vendor/symfony/string/CHANGELOG.md new file mode 100644 index 000000000..53af36400 --- /dev/null +++ b/vendor/symfony/string/CHANGELOG.md @@ -0,0 +1,35 @@ +CHANGELOG +========= + +5.4 +--- + + * Add `trimSuffix()` and `trimPrefix()` methods + +5.3 +--- + + * Made `AsciiSlugger` fallback to parent locale's symbolsMap + +5.2.0 +----- + + * added a `FrenchInflector` class + +5.1.0 +----- + + * added the `AbstractString::reverse()` method + * made `AbstractString::width()` follow POSIX.1-2001 + * added `LazyString` which provides memoizing stringable objects + * The component is not marked as `@experimental` anymore + * added the `s()` helper method to get either an `UnicodeString` or `ByteString` instance, + depending of the input string UTF-8 compliancy + * added `$cut` parameter to `Symfony\Component\String\AbstractString::truncate()` + * added `AbstractString::containsAny()` + * allow passing a string of custom characters to `ByteString::fromRandom()` + +5.0.0 +----- + + * added the component as experimental diff --git a/vendor/symfony/string/CodePointString.php b/vendor/symfony/string/CodePointString.php new file mode 100644 index 000000000..8ab920941 --- /dev/null +++ b/vendor/symfony/string/CodePointString.php @@ -0,0 +1,270 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +use Symfony\Component\String\Exception\ExceptionInterface; +use Symfony\Component\String\Exception\InvalidArgumentException; + +/** + * Represents a string of Unicode code points encoded as UTF-8. + * + * @author Nicolas Grekas <p@tchwork.com> + * @author Hugo Hamon <hugohamon@neuf.fr> + * + * @throws ExceptionInterface + */ +class CodePointString extends AbstractUnicodeString +{ + public function __construct(string $string = '') + { + if ('' !== $string && !preg_match('//u', $string)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + $this->string = $string; + } + + public function append(string ...$suffix): AbstractString + { + $str = clone $this; + $str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); + + if (!preg_match('//u', $str->string)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function chunk(int $length = 1): array + { + if (1 > $length) { + throw new InvalidArgumentException('The chunk length must be greater than zero.'); + } + + if ('' === $this->string) { + return []; + } + + $rx = '/('; + while (65535 < $length) { + $rx .= '.{65535}'; + $length -= 65535; + } + $rx .= '.{'.$length.'})/us'; + + $str = clone $this; + $chunks = []; + + foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { + $str->string = $chunk; + $chunks[] = clone $str; + } + + return $chunks; + } + + public function codePointsAt(int $offset): array + { + $str = $offset ? $this->slice($offset, 1) : $this; + + return '' === $str->string ? [] : [mb_ord($str->string, 'UTF-8')]; + } + + public function endsWith($suffix): bool + { + if ($suffix instanceof AbstractString) { + $suffix = $suffix->string; + } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { + return parent::endsWith($suffix); + } else { + $suffix = (string) $suffix; + } + + if ('' === $suffix || !preg_match('//u', $suffix)) { + return false; + } + + if ($this->ignoreCase) { + return preg_match('{'.preg_quote($suffix).'$}iuD', $this->string); + } + + return \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix)); + } + + public function equalsTo($string): bool + { + if ($string instanceof AbstractString) { + $string = $string->string; + } elseif (\is_array($string) || $string instanceof \Traversable) { + return parent::equalsTo($string); + } else { + $string = (string) $string; + } + + if ('' !== $string && $this->ignoreCase) { + return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); + } + + return $string === $this->string; + } + + public function indexOf($needle, int $offset = 0): ?int + { + if ($needle instanceof AbstractString) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOf($needle, $offset); + } else { + $needle = (string) $needle; + } + + if ('' === $needle) { + return null; + } + + $i = $this->ignoreCase ? mb_stripos($this->string, $needle, $offset, 'UTF-8') : mb_strpos($this->string, $needle, $offset, 'UTF-8'); + + return false === $i ? null : $i; + } + + public function indexOfLast($needle, int $offset = 0): ?int + { + if ($needle instanceof AbstractString) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOfLast($needle, $offset); + } else { + $needle = (string) $needle; + } + + if ('' === $needle) { + return null; + } + + $i = $this->ignoreCase ? mb_strripos($this->string, $needle, $offset, 'UTF-8') : mb_strrpos($this->string, $needle, $offset, 'UTF-8'); + + return false === $i ? null : $i; + } + + public function length(): int + { + return mb_strlen($this->string, 'UTF-8'); + } + + public function prepend(string ...$prefix): AbstractString + { + $str = clone $this; + $str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; + + if (!preg_match('//u', $str->string)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function replace(string $from, string $to): AbstractString + { + $str = clone $this; + + if ('' === $from || !preg_match('//u', $from)) { + return $str; + } + + if ('' !== $to && !preg_match('//u', $to)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + if ($this->ignoreCase) { + $str->string = implode($to, preg_split('{'.preg_quote($from).'}iuD', $this->string)); + } else { + $str->string = str_replace($from, $to, $this->string); + } + + return $str; + } + + public function slice(int $start = 0, int $length = null): AbstractString + { + $str = clone $this; + $str->string = mb_substr($this->string, $start, $length, 'UTF-8'); + + return $str; + } + + public function splice(string $replacement, int $start = 0, int $length = null): AbstractString + { + if (!preg_match('//u', $replacement)) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + $str = clone $this; + $start = $start ? \strlen(mb_substr($this->string, 0, $start, 'UTF-8')) : 0; + $length = $length ? \strlen(mb_substr($this->string, $start, $length, 'UTF-8')) : $length; + $str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); + + return $str; + } + + public function split(string $delimiter, int $limit = null, int $flags = null): array + { + if (1 > $limit = $limit ?? \PHP_INT_MAX) { + throw new InvalidArgumentException('Split limit must be a positive integer.'); + } + + if ('' === $delimiter) { + throw new InvalidArgumentException('Split delimiter is empty.'); + } + + if (null !== $flags) { + return parent::split($delimiter.'u', $limit, $flags); + } + + if (!preg_match('//u', $delimiter)) { + throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); + } + + $str = clone $this; + $chunks = $this->ignoreCase + ? preg_split('{'.preg_quote($delimiter).'}iuD', $this->string, $limit) + : explode($delimiter, $this->string, $limit); + + foreach ($chunks as &$chunk) { + $str->string = $chunk; + $chunk = clone $str; + } + + return $chunks; + } + + public function startsWith($prefix): bool + { + if ($prefix instanceof AbstractString) { + $prefix = $prefix->string; + } elseif (\is_array($prefix) || $prefix instanceof \Traversable) { + return parent::startsWith($prefix); + } else { + $prefix = (string) $prefix; + } + + if ('' === $prefix || !preg_match('//u', $prefix)) { + return false; + } + + if ($this->ignoreCase) { + return 0 === mb_stripos($this->string, $prefix, 0, 'UTF-8'); + } + + return 0 === strncmp($this->string, $prefix, \strlen($prefix)); + } +} diff --git a/vendor/symfony/string/Exception/ExceptionInterface.php b/vendor/symfony/string/Exception/ExceptionInterface.php new file mode 100644 index 000000000..361978656 --- /dev/null +++ b/vendor/symfony/string/Exception/ExceptionInterface.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Exception; + +interface ExceptionInterface extends \Throwable +{ +} diff --git a/vendor/symfony/string/Exception/InvalidArgumentException.php b/vendor/symfony/string/Exception/InvalidArgumentException.php new file mode 100644 index 000000000..6aa586bcf --- /dev/null +++ b/vendor/symfony/string/Exception/InvalidArgumentException.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Exception; + +class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface +{ +} diff --git a/vendor/symfony/string/Exception/RuntimeException.php b/vendor/symfony/string/Exception/RuntimeException.php new file mode 100644 index 000000000..77cb091f9 --- /dev/null +++ b/vendor/symfony/string/Exception/RuntimeException.php @@ -0,0 +1,16 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Exception; + +class RuntimeException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/vendor/symfony/string/Inflector/EnglishInflector.php b/vendor/symfony/string/Inflector/EnglishInflector.php new file mode 100644 index 000000000..9f2fac675 --- /dev/null +++ b/vendor/symfony/string/Inflector/EnglishInflector.php @@ -0,0 +1,511 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Inflector; + +final class EnglishInflector implements InflectorInterface +{ + /** + * Map English plural to singular suffixes. + * + * @see http://english-zone.com/spelling/plurals.html + */ + private const PLURAL_MAP = [ + // First entry: plural suffix, reversed + // Second entry: length of plural suffix + // Third entry: Whether the suffix may succeed a vocal + // Fourth entry: Whether the suffix may succeed a consonant + // Fifth entry: singular suffix, normal + + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) + ['a', 1, true, true, ['on', 'um']], + + // nebulae (nebula) + ['ea', 2, true, true, 'a'], + + // services (service) + ['secivres', 8, true, true, 'service'], + + // mice (mouse), lice (louse) + ['eci', 3, false, true, 'ouse'], + + // geese (goose) + ['esee', 4, false, true, 'oose'], + + // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) + ['i', 1, true, true, 'us'], + + // men (man), women (woman) + ['nem', 3, true, true, 'man'], + + // children (child) + ['nerdlihc', 8, true, true, 'child'], + + // oxen (ox) + ['nexo', 4, false, false, 'ox'], + + // indices (index), appendices (appendix), prices (price) + ['seci', 4, false, true, ['ex', 'ix', 'ice']], + + // selfies (selfie) + ['seifles', 7, true, true, 'selfie'], + + // zombies (zombie) + ['seibmoz', 7, true, true, 'zombie'], + + // movies (movie) + ['seivom', 6, true, true, 'movie'], + + // conspectuses (conspectus), prospectuses (prospectus) + ['sesutcep', 8, true, true, 'pectus'], + + // feet (foot) + ['teef', 4, true, true, 'foot'], + + // geese (goose) + ['eseeg', 5, true, true, 'goose'], + + // teeth (tooth) + ['hteet', 5, true, true, 'tooth'], + + // news (news) + ['swen', 4, true, true, 'news'], + + // series (series) + ['seires', 6, true, true, 'series'], + + // babies (baby) + ['sei', 3, false, true, 'y'], + + // accesses (access), addresses (address), kisses (kiss) + ['sess', 4, true, false, 'ss'], + + // analyses (analysis), ellipses (ellipsis), fungi (fungus), + // neuroses (neurosis), theses (thesis), emphases (emphasis), + // oases (oasis), crises (crisis), houses (house), bases (base), + // atlases (atlas) + ['ses', 3, true, true, ['s', 'se', 'sis']], + + // objectives (objective), alternative (alternatives) + ['sevit', 5, true, true, 'tive'], + + // drives (drive) + ['sevird', 6, false, true, 'drive'], + + // lives (life), wives (wife) + ['sevi', 4, false, true, 'ife'], + + // moves (move) + ['sevom', 5, true, true, 'move'], + + // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf), caves (cave), staves (staff) + ['sev', 3, true, true, ['f', 've', 'ff']], + + // axes (axis), axes (ax), axes (axe) + ['sexa', 4, false, false, ['ax', 'axe', 'axis']], + + // indexes (index), matrixes (matrix) + ['sex', 3, true, false, 'x'], + + // quizzes (quiz) + ['sezz', 4, true, false, 'z'], + + // bureaus (bureau) + ['suae', 4, false, true, 'eau'], + + // fees (fee), trees (tree), employees (employee) + ['see', 3, true, true, 'ee'], + + // edges (edge) + ['segd', 4, true, true, 'dge'], + + // roses (rose), garages (garage), cassettes (cassette), + // waltzes (waltz), heroes (hero), bushes (bush), arches (arch), + // shoes (shoe) + ['se', 2, true, true, ['', 'e']], + + // tags (tag) + ['s', 1, true, true, ''], + + // chateaux (chateau) + ['xuae', 4, false, true, 'eau'], + + // people (person) + ['elpoep', 6, true, true, 'person'], + ]; + + /** + * Map English singular to plural suffixes. + * + * @see http://english-zone.com/spelling/plurals.html + */ + private const SINGULAR_MAP = [ + // First entry: singular suffix, reversed + // Second entry: length of singular suffix + // Third entry: Whether the suffix may succeed a vocal + // Fourth entry: Whether the suffix may succeed a consonant + // Fifth entry: plural suffix, normal + + // criterion (criteria) + ['airetirc', 8, false, false, 'criterion'], + + // nebulae (nebula) + ['aluben', 6, false, false, 'nebulae'], + + // children (child) + ['dlihc', 5, true, true, 'children'], + + // prices (price) + ['eci', 3, false, true, 'ices'], + + // services (service) + ['ecivres', 7, true, true, 'services'], + + // lives (life), wives (wife) + ['efi', 3, false, true, 'ives'], + + // selfies (selfie) + ['eifles', 6, true, true, 'selfies'], + + // movies (movie) + ['eivom', 5, true, true, 'movies'], + + // lice (louse) + ['esuol', 5, false, true, 'lice'], + + // mice (mouse) + ['esuom', 5, false, true, 'mice'], + + // geese (goose) + ['esoo', 4, false, true, 'eese'], + + // houses (house), bases (base) + ['es', 2, true, true, 'ses'], + + // geese (goose) + ['esoog', 5, true, true, 'geese'], + + // caves (cave) + ['ev', 2, true, true, 'ves'], + + // drives (drive) + ['evird', 5, false, true, 'drives'], + + // objectives (objective), alternative (alternatives) + ['evit', 4, true, true, 'tives'], + + // moves (move) + ['evom', 4, true, true, 'moves'], + + // staves (staff) + ['ffats', 5, true, true, 'staves'], + + // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) + ['ff', 2, true, true, 'ffs'], + + // hooves (hoof), dwarves (dwarf), elves (elf), leaves (leaf) + ['f', 1, true, true, ['fs', 'ves']], + + // arches (arch) + ['hc', 2, true, true, 'ches'], + + // bushes (bush) + ['hs', 2, true, true, 'shes'], + + // teeth (tooth) + ['htoot', 5, true, true, 'teeth'], + + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) + ['mu', 2, true, true, 'a'], + + // men (man), women (woman) + ['nam', 3, true, true, 'men'], + + // people (person) + ['nosrep', 6, true, true, ['persons', 'people']], + + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) + ['noi', 3, true, true, 'ions'], + + // coupon (coupons) + ['nop', 3, true, true, 'pons'], + + // seasons (season), treasons (treason), poisons (poison), lessons (lesson) + ['nos', 3, true, true, 'sons'], + + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) + ['no', 2, true, true, 'a'], + + // echoes (echo) + ['ohce', 4, true, true, 'echoes'], + + // heroes (hero) + ['oreh', 4, true, true, 'heroes'], + + // atlases (atlas) + ['salta', 5, true, true, 'atlases'], + + // irises (iris) + ['siri', 4, true, true, 'irises'], + + // analyses (analysis), ellipses (ellipsis), neuroses (neurosis) + // theses (thesis), emphases (emphasis), oases (oasis), + // crises (crisis) + ['sis', 3, true, true, 'ses'], + + // accesses (access), addresses (address), kisses (kiss) + ['ss', 2, true, false, 'sses'], + + // syllabi (syllabus) + ['suballys', 8, true, true, 'syllabi'], + + // buses (bus) + ['sub', 3, true, true, 'buses'], + + // circuses (circus) + ['suc', 3, true, true, 'cuses'], + + // conspectuses (conspectus), prospectuses (prospectus) + ['sutcep', 6, true, true, 'pectuses'], + + // fungi (fungus), alumni (alumnus), syllabi (syllabus), radii (radius) + ['su', 2, true, true, 'i'], + + // news (news) + ['swen', 4, true, true, 'news'], + + // feet (foot) + ['toof', 4, true, true, 'feet'], + + // chateaux (chateau), bureaus (bureau) + ['uae', 3, false, true, ['eaus', 'eaux']], + + // oxen (ox) + ['xo', 2, false, false, 'oxen'], + + // hoaxes (hoax) + ['xaoh', 4, true, false, 'hoaxes'], + + // indices (index) + ['xedni', 5, false, true, ['indicies', 'indexes']], + + // boxes (box) + ['xo', 2, false, true, 'oxes'], + + // indexes (index), matrixes (matrix) + ['x', 1, true, false, ['cies', 'xes']], + + // appendices (appendix) + ['xi', 2, false, true, 'ices'], + + // babies (baby) + ['y', 1, false, true, 'ies'], + + // quizzes (quiz) + ['ziuq', 4, true, false, 'quizzes'], + + // waltzes (waltz) + ['z', 1, true, true, 'zes'], + ]; + + /** + * A list of words which should not be inflected, reversed. + */ + private const UNINFLECTED = [ + '', + + // data + 'atad', + + // deer + 'reed', + + // feedback + 'kcabdeef', + + // fish + 'hsif', + + // info + 'ofni', + + // moose + 'esoom', + + // series + 'seires', + + // sheep + 'peehs', + + // species + 'seiceps', + ]; + + /** + * {@inheritdoc} + */ + public function singularize(string $plural): array + { + $pluralRev = strrev($plural); + $lowerPluralRev = strtolower($pluralRev); + $pluralLength = \strlen($lowerPluralRev); + + // Check if the word is one which is not inflected, return early if so + if (\in_array($lowerPluralRev, self::UNINFLECTED, true)) { + return [$plural]; + } + + // The outer loop iterates over the entries of the plural table + // The inner loop $j iterates over the characters of the plural suffix + // in the plural table to compare them with the characters of the actual + // given plural suffix + foreach (self::PLURAL_MAP as $map) { + $suffix = $map[0]; + $suffixLength = $map[1]; + $j = 0; + + // Compare characters in the plural table and of the suffix of the + // given plural one by one + while ($suffix[$j] === $lowerPluralRev[$j]) { + // Let $j point to the next character + ++$j; + + // Successfully compared the last character + // Add an entry with the singular suffix to the singular array + if ($j === $suffixLength) { + // Is there any character preceding the suffix in the plural string? + if ($j < $pluralLength) { + $nextIsVocal = false !== strpos('aeiou', $lowerPluralRev[$j]); + + if (!$map[2] && $nextIsVocal) { + // suffix may not succeed a vocal but next char is one + break; + } + + if (!$map[3] && !$nextIsVocal) { + // suffix may not succeed a consonant but next char is one + break; + } + } + + $newBase = substr($plural, 0, $pluralLength - $suffixLength); + $newSuffix = $map[4]; + + // Check whether the first character in the plural suffix + // is uppercased. If yes, uppercase the first character in + // the singular suffix too + $firstUpper = ctype_upper($pluralRev[$j - 1]); + + if (\is_array($newSuffix)) { + $singulars = []; + + foreach ($newSuffix as $newSuffixEntry) { + $singulars[] = $newBase.($firstUpper ? ucfirst($newSuffixEntry) : $newSuffixEntry); + } + + return $singulars; + } + + return [$newBase.($firstUpper ? ucfirst($newSuffix) : $newSuffix)]; + } + + // Suffix is longer than word + if ($j === $pluralLength) { + break; + } + } + } + + // Assume that plural and singular is identical + return [$plural]; + } + + /** + * {@inheritdoc} + */ + public function pluralize(string $singular): array + { + $singularRev = strrev($singular); + $lowerSingularRev = strtolower($singularRev); + $singularLength = \strlen($lowerSingularRev); + + // Check if the word is one which is not inflected, return early if so + if (\in_array($lowerSingularRev, self::UNINFLECTED, true)) { + return [$singular]; + } + + // The outer loop iterates over the entries of the singular table + // The inner loop $j iterates over the characters of the singular suffix + // in the singular table to compare them with the characters of the actual + // given singular suffix + foreach (self::SINGULAR_MAP as $map) { + $suffix = $map[0]; + $suffixLength = $map[1]; + $j = 0; + + // Compare characters in the singular table and of the suffix of the + // given plural one by one + + while ($suffix[$j] === $lowerSingularRev[$j]) { + // Let $j point to the next character + ++$j; + + // Successfully compared the last character + // Add an entry with the plural suffix to the plural array + if ($j === $suffixLength) { + // Is there any character preceding the suffix in the plural string? + if ($j < $singularLength) { + $nextIsVocal = false !== strpos('aeiou', $lowerSingularRev[$j]); + + if (!$map[2] && $nextIsVocal) { + // suffix may not succeed a vocal but next char is one + break; + } + + if (!$map[3] && !$nextIsVocal) { + // suffix may not succeed a consonant but next char is one + break; + } + } + + $newBase = substr($singular, 0, $singularLength - $suffixLength); + $newSuffix = $map[4]; + + // Check whether the first character in the singular suffix + // is uppercased. If yes, uppercase the first character in + // the singular suffix too + $firstUpper = ctype_upper($singularRev[$j - 1]); + + if (\is_array($newSuffix)) { + $plurals = []; + + foreach ($newSuffix as $newSuffixEntry) { + $plurals[] = $newBase.($firstUpper ? ucfirst($newSuffixEntry) : $newSuffixEntry); + } + + return $plurals; + } + + return [$newBase.($firstUpper ? ucfirst($newSuffix) : $newSuffix)]; + } + + // Suffix is longer than word + if ($j === $singularLength) { + break; + } + } + } + + // Assume that plural is singular with a trailing `s` + return [$singular.'s']; + } +} diff --git a/vendor/symfony/string/Inflector/FrenchInflector.php b/vendor/symfony/string/Inflector/FrenchInflector.php new file mode 100644 index 000000000..612c8f2e0 --- /dev/null +++ b/vendor/symfony/string/Inflector/FrenchInflector.php @@ -0,0 +1,157 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Inflector; + +/** + * French inflector. + * + * This class does only inflect nouns; not adjectives nor composed words like "soixante-dix". + */ +final class FrenchInflector implements InflectorInterface +{ + /** + * A list of all rules for pluralise. + * + * @see https://la-conjugaison.nouvelobs.com/regles/grammaire/le-pluriel-des-noms-121.php + */ + private const PLURALIZE_REGEXP = [ + // First entry: regexp + // Second entry: replacement + + // Words finishing with "s", "x" or "z" are invariables + // Les mots finissant par "s", "x" ou "z" sont invariables + ['/(s|x|z)$/i', '\1'], + + // Words finishing with "eau" are pluralized with a "x" + // Les mots finissant par "eau" prennent tous un "x" au pluriel + ['/(eau)$/i', '\1x'], + + // Words finishing with "au" are pluralized with a "x" excepted "landau" + // Les mots finissant par "au" prennent un "x" au pluriel sauf "landau" + ['/^(landau)$/i', '\1s'], + ['/(au)$/i', '\1x'], + + // Words finishing with "eu" are pluralized with a "x" excepted "pneu", "bleu", "émeu" + // Les mots finissant en "eu" prennent un "x" au pluriel sauf "pneu", "bleu", "émeu" + ['/^(pneu|bleu|émeu)$/i', '\1s'], + ['/(eu)$/i', '\1x'], + + // Words finishing with "al" are pluralized with a "aux" excepted + // Les mots finissant en "al" se terminent en "aux" sauf + ['/^(bal|carnaval|caracal|chacal|choral|corral|étal|festival|récital|val)$/i', '\1s'], + ['/al$/i', '\1aux'], + + // Aspirail, bail, corail, émail, fermail, soupirail, travail, vantail et vitrail font leur pluriel en -aux + ['/^(aspir|b|cor|ém|ferm|soupir|trav|vant|vitr)ail$/i', '\1aux'], + + // Bijou, caillou, chou, genou, hibou, joujou et pou qui prennent un x au pluriel + ['/^(bij|caill|ch|gen|hib|jouj|p)ou$/i', '\1oux'], + + // Invariable words + ['/^(cinquante|soixante|mille)$/i', '\1'], + + // French titles + ['/^(mon|ma)(sieur|dame|demoiselle|seigneur)$/', 'mes\2s'], + ['/^(Mon|Ma)(sieur|dame|demoiselle|seigneur)$/', 'Mes\2s'], + ]; + + /** + * A list of all rules for singularize. + */ + private const SINGULARIZE_REGEXP = [ + // First entry: regexp + // Second entry: replacement + + // Aspirail, bail, corail, émail, fermail, soupirail, travail, vantail et vitrail font leur pluriel en -aux + ['/((aspir|b|cor|ém|ferm|soupir|trav|vant|vitr))aux$/i', '\1ail'], + + // Words finishing with "eau" are pluralized with a "x" + // Les mots finissant par "eau" prennent tous un "x" au pluriel + ['/(eau)x$/i', '\1'], + + // Words finishing with "al" are pluralized with a "aux" expected + // Les mots finissant en "al" se terminent en "aux" sauf + ['/(amir|anim|arsen|boc|can|capit|capor|chev|crist|génér|hopit|hôpit|idé|journ|littor|loc|m|mét|minér|princip|radic|termin)aux$/i', '\1al'], + + // Words finishing with "au" are pluralized with a "x" excepted "landau" + // Les mots finissant par "au" prennent un "x" au pluriel sauf "landau" + ['/(au)x$/i', '\1'], + + // Words finishing with "eu" are pluralized with a "x" excepted "pneu", "bleu", "émeu" + // Les mots finissant en "eu" prennent un "x" au pluriel sauf "pneu", "bleu", "émeu" + ['/(eu)x$/i', '\1'], + + // Words finishing with "ou" are pluralized with a "s" excepted bijou, caillou, chou, genou, hibou, joujou, pou + // Les mots finissant par "ou" prennent un "s" sauf bijou, caillou, chou, genou, hibou, joujou, pou + ['/(bij|caill|ch|gen|hib|jouj|p)oux$/i', '\1ou'], + + // French titles + ['/^mes(dame|demoiselle)s$/', 'ma\1'], + ['/^Mes(dame|demoiselle)s$/', 'Ma\1'], + ['/^mes(sieur|seigneur)s$/', 'mon\1'], + ['/^Mes(sieur|seigneur)s$/', 'Mon\1'], + + // Default rule + ['/s$/i', ''], + ]; + + /** + * A list of words which should not be inflected. + * This list is only used by singularize. + */ + private const UNINFLECTED = '/^(abcès|accès|abus|albatros|anchois|anglais|autobus|bois|brebis|carquois|cas|chas|colis|concours|corps|cours|cyprès|décès|devis|discours|dos|embarras|engrais|entrelacs|excès|fils|fois|gâchis|gars|glas|héros|intrus|jars|jus|kermès|lacis|legs|lilas|marais|mars|matelas|mépris|mets|mois|mors|obus|os|palais|paradis|parcours|pardessus|pays|plusieurs|poids|pois|pouls|printemps|processus|progrès|puits|pus|rabais|radis|recors|recours|refus|relais|remords|remous|rictus|rhinocéros|repas|rubis|sans|sas|secours|sens|souris|succès|talus|tapis|tas|taudis|temps|tiers|univers|velours|verglas|vernis|virus)$/i'; + + /** + * {@inheritdoc} + */ + public function singularize(string $plural): array + { + if ($this->isInflectedWord($plural)) { + return [$plural]; + } + + foreach (self::SINGULARIZE_REGEXP as $rule) { + [$regexp, $replace] = $rule; + + if (1 === preg_match($regexp, $plural)) { + return [preg_replace($regexp, $replace, $plural)]; + } + } + + return [$plural]; + } + + /** + * {@inheritdoc} + */ + public function pluralize(string $singular): array + { + if ($this->isInflectedWord($singular)) { + return [$singular]; + } + + foreach (self::PLURALIZE_REGEXP as $rule) { + [$regexp, $replace] = $rule; + + if (1 === preg_match($regexp, $singular)) { + return [preg_replace($regexp, $replace, $singular)]; + } + } + + return [$singular.'s']; + } + + private function isInflectedWord(string $word): bool + { + return 1 === preg_match(self::UNINFLECTED, $word); + } +} diff --git a/vendor/symfony/string/Inflector/InflectorInterface.php b/vendor/symfony/string/Inflector/InflectorInterface.php new file mode 100644 index 000000000..67f283404 --- /dev/null +++ b/vendor/symfony/string/Inflector/InflectorInterface.php @@ -0,0 +1,33 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Inflector; + +interface InflectorInterface +{ + /** + * Returns the singular forms of a string. + * + * If the method can't determine the form with certainty, several possible singulars are returned. + * + * @return string[] + */ + public function singularize(string $plural): array; + + /** + * Returns the plural forms of a string. + * + * If the method can't determine the form with certainty, several possible plurals are returned. + * + * @return string[] + */ + public function pluralize(string $singular): array; +} diff --git a/vendor/symfony/string/LICENSE b/vendor/symfony/string/LICENSE new file mode 100644 index 000000000..9c907a46a --- /dev/null +++ b/vendor/symfony/string/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019-2022 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/symfony/string/LazyString.php b/vendor/symfony/string/LazyString.php new file mode 100644 index 000000000..9c7a9c58b --- /dev/null +++ b/vendor/symfony/string/LazyString.php @@ -0,0 +1,164 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +/** + * A string whose value is computed lazily by a callback. + * + * @author Nicolas Grekas <p@tchwork.com> + */ +class LazyString implements \Stringable, \JsonSerializable +{ + private $value; + + /** + * @param callable|array $callback A callable or a [Closure, method] lazy-callable + * + * @return static + */ + public static function fromCallable($callback, ...$arguments): self + { + if (!\is_callable($callback) && !(\is_array($callback) && isset($callback[0]) && $callback[0] instanceof \Closure && 2 >= \count($callback))) { + throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a callable or a [Closure, method] lazy-callable, "%s" given.', __METHOD__, get_debug_type($callback))); + } + + $lazyString = new static(); + $lazyString->value = static function () use (&$callback, &$arguments, &$value): string { + if (null !== $arguments) { + if (!\is_callable($callback)) { + $callback[0] = $callback[0](); + $callback[1] = $callback[1] ?? '__invoke'; + } + $value = $callback(...$arguments); + $callback = self::getPrettyName($callback); + $arguments = null; + } + + return $value ?? ''; + }; + + return $lazyString; + } + + /** + * @param string|int|float|bool|\Stringable $value + * + * @return static + */ + public static function fromStringable($value): self + { + if (!self::isStringable($value)) { + throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a scalar or a stringable object, "%s" given.', __METHOD__, get_debug_type($value))); + } + + if (\is_object($value)) { + return static::fromCallable([$value, '__toString']); + } + + $lazyString = new static(); + $lazyString->value = (string) $value; + + return $lazyString; + } + + /** + * Tells whether the provided value can be cast to string. + */ + final public static function isStringable($value): bool + { + return \is_string($value) || $value instanceof self || (\is_object($value) ? method_exists($value, '__toString') : \is_scalar($value)); + } + + /** + * Casts scalars and stringable objects to strings. + * + * @param object|string|int|float|bool $value + * + * @throws \TypeError When the provided value is not stringable + */ + final public static function resolve($value): string + { + return $value; + } + + /** + * @return string + */ + public function __toString() + { + if (\is_string($this->value)) { + return $this->value; + } + + try { + return $this->value = ($this->value)(); + } catch (\Throwable $e) { + if (\TypeError::class === \get_class($e) && __FILE__ === $e->getFile()) { + $type = explode(', ', $e->getMessage()); + $type = substr(array_pop($type), 0, -\strlen(' returned')); + $r = new \ReflectionFunction($this->value); + $callback = $r->getStaticVariables()['callback']; + + $e = new \TypeError(sprintf('Return value of %s() passed to %s::fromCallable() must be of the type string, %s returned.', $callback, static::class, $type)); + } + + if (\PHP_VERSION_ID < 70400) { + // leverage the ErrorHandler component with graceful fallback when it's not available + return trigger_error($e, \E_USER_ERROR); + } + + throw $e; + } + } + + public function __sleep(): array + { + $this->__toString(); + + return ['value']; + } + + public function jsonSerialize(): string + { + return $this->__toString(); + } + + private function __construct() + { + } + + private static function getPrettyName(callable $callback): string + { + if (\is_string($callback)) { + return $callback; + } + + if (\is_array($callback)) { + $class = \is_object($callback[0]) ? get_debug_type($callback[0]) : $callback[0]; + $method = $callback[1]; + } elseif ($callback instanceof \Closure) { + $r = new \ReflectionFunction($callback); + + if (false !== strpos($r->name, '{closure}') || !$class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { + return $r->name; + } + + $class = $class->name; + $method = $r->name; + } else { + $class = get_debug_type($callback); + $method = '__invoke'; + } + + return $class.'::'.$method; + } +} diff --git a/vendor/symfony/string/README.md b/vendor/symfony/string/README.md new file mode 100644 index 000000000..9c7e1e190 --- /dev/null +++ b/vendor/symfony/string/README.md @@ -0,0 +1,14 @@ +String Component +================ + +The String component provides an object-oriented API to strings and deals +with bytes, UTF-8 code points and grapheme clusters in a unified way. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/string.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/vendor/symfony/string/Resources/data/wcswidth_table_wide.php b/vendor/symfony/string/Resources/data/wcswidth_table_wide.php new file mode 100644 index 000000000..5a647e67b --- /dev/null +++ b/vendor/symfony/string/Resources/data/wcswidth_table_wide.php @@ -0,0 +1,1143 @@ +<?php + +/* + * This file has been auto-generated by the Symfony String Component for internal use. + * + * Unicode version: 15.0.0 + * Date: 2022-10-05T17:16:36+02:00 + */ + +return [ + [ + 4352, + 4447, + ], + [ + 8986, + 8987, + ], + [ + 9001, + 9001, + ], + [ + 9002, + 9002, + ], + [ + 9193, + 9196, + ], + [ + 9200, + 9200, + ], + [ + 9203, + 9203, + ], + [ + 9725, + 9726, + ], + [ + 9748, + 9749, + ], + [ + 9800, + 9811, + ], + [ + 9855, + 9855, + ], + [ + 9875, + 9875, + ], + [ + 9889, + 9889, + ], + [ + 9898, + 9899, + ], + [ + 9917, + 9918, + ], + [ + 9924, + 9925, + ], + [ + 9934, + 9934, + ], + [ + 9940, + 9940, + ], + [ + 9962, + 9962, + ], + [ + 9970, + 9971, + ], + [ + 9973, + 9973, + ], + [ + 9978, + 9978, + ], + [ + 9981, + 9981, + ], + [ + 9989, + 9989, + ], + [ + 9994, + 9995, + ], + [ + 10024, + 10024, + ], + [ + 10060, + 10060, + ], + [ + 10062, + 10062, + ], + [ + 10067, + 10069, + ], + [ + 10071, + 10071, + ], + [ + 10133, + 10135, + ], + [ + 10160, + 10160, + ], + [ + 10175, + 10175, + ], + [ + 11035, + 11036, + ], + [ + 11088, + 11088, + ], + [ + 11093, + 11093, + ], + [ + 11904, + 11929, + ], + [ + 11931, + 12019, + ], + [ + 12032, + 12245, + ], + [ + 12272, + 12283, + ], + [ + 12288, + 12288, + ], + [ + 12289, + 12291, + ], + [ + 12292, + 12292, + ], + [ + 12293, + 12293, + ], + [ + 12294, + 12294, + ], + [ + 12295, + 12295, + ], + [ + 12296, + 12296, + ], + [ + 12297, + 12297, + ], + [ + 12298, + 12298, + ], + [ + 12299, + 12299, + ], + [ + 12300, + 12300, + ], + [ + 12301, + 12301, + ], + [ + 12302, + 12302, + ], + [ + 12303, + 12303, + ], + [ + 12304, + 12304, + ], + [ + 12305, + 12305, + ], + [ + 12306, + 12307, + ], + [ + 12308, + 12308, + ], + [ + 12309, + 12309, + ], + [ + 12310, + 12310, + ], + [ + 12311, + 12311, + ], + [ + 12312, + 12312, + ], + [ + 12313, + 12313, + ], + [ + 12314, + 12314, + ], + [ + 12315, + 12315, + ], + [ + 12316, + 12316, + ], + [ + 12317, + 12317, + ], + [ + 12318, + 12319, + ], + [ + 12320, + 12320, + ], + [ + 12321, + 12329, + ], + [ + 12330, + 12333, + ], + [ + 12334, + 12335, + ], + [ + 12336, + 12336, + ], + [ + 12337, + 12341, + ], + [ + 12342, + 12343, + ], + [ + 12344, + 12346, + ], + [ + 12347, + 12347, + ], + [ + 12348, + 12348, + ], + [ + 12349, + 12349, + ], + [ + 12350, + 12350, + ], + [ + 12353, + 12438, + ], + [ + 12441, + 12442, + ], + [ + 12443, + 12444, + ], + [ + 12445, + 12446, + ], + [ + 12447, + 12447, + ], + [ + 12448, + 12448, + ], + [ + 12449, + 12538, + ], + [ + 12539, + 12539, + ], + [ + 12540, + 12542, + ], + [ + 12543, + 12543, + ], + [ + 12549, + 12591, + ], + [ + 12593, + 12686, + ], + [ + 12688, + 12689, + ], + [ + 12690, + 12693, + ], + [ + 12694, + 12703, + ], + [ + 12704, + 12735, + ], + [ + 12736, + 12771, + ], + [ + 12784, + 12799, + ], + [ + 12800, + 12830, + ], + [ + 12832, + 12841, + ], + [ + 12842, + 12871, + ], + [ + 12880, + 12880, + ], + [ + 12881, + 12895, + ], + [ + 12896, + 12927, + ], + [ + 12928, + 12937, + ], + [ + 12938, + 12976, + ], + [ + 12977, + 12991, + ], + [ + 12992, + 13055, + ], + [ + 13056, + 13311, + ], + [ + 13312, + 19903, + ], + [ + 19968, + 40959, + ], + [ + 40960, + 40980, + ], + [ + 40981, + 40981, + ], + [ + 40982, + 42124, + ], + [ + 42128, + 42182, + ], + [ + 43360, + 43388, + ], + [ + 44032, + 55203, + ], + [ + 63744, + 64109, + ], + [ + 64110, + 64111, + ], + [ + 64112, + 64217, + ], + [ + 64218, + 64255, + ], + [ + 65040, + 65046, + ], + [ + 65047, + 65047, + ], + [ + 65048, + 65048, + ], + [ + 65049, + 65049, + ], + [ + 65072, + 65072, + ], + [ + 65073, + 65074, + ], + [ + 65075, + 65076, + ], + [ + 65077, + 65077, + ], + [ + 65078, + 65078, + ], + [ + 65079, + 65079, + ], + [ + 65080, + 65080, + ], + [ + 65081, + 65081, + ], + [ + 65082, + 65082, + ], + [ + 65083, + 65083, + ], + [ + 65084, + 65084, + ], + [ + 65085, + 65085, + ], + [ + 65086, + 65086, + ], + [ + 65087, + 65087, + ], + [ + 65088, + 65088, + ], + [ + 65089, + 65089, + ], + [ + 65090, + 65090, + ], + [ + 65091, + 65091, + ], + [ + 65092, + 65092, + ], + [ + 65093, + 65094, + ], + [ + 65095, + 65095, + ], + [ + 65096, + 65096, + ], + [ + 65097, + 65100, + ], + [ + 65101, + 65103, + ], + [ + 65104, + 65106, + ], + [ + 65108, + 65111, + ], + [ + 65112, + 65112, + ], + [ + 65113, + 65113, + ], + [ + 65114, + 65114, + ], + [ + 65115, + 65115, + ], + [ + 65116, + 65116, + ], + [ + 65117, + 65117, + ], + [ + 65118, + 65118, + ], + [ + 65119, + 65121, + ], + [ + 65122, + 65122, + ], + [ + 65123, + 65123, + ], + [ + 65124, + 65126, + ], + [ + 65128, + 65128, + ], + [ + 65129, + 65129, + ], + [ + 65130, + 65131, + ], + [ + 65281, + 65283, + ], + [ + 65284, + 65284, + ], + [ + 65285, + 65287, + ], + [ + 65288, + 65288, + ], + [ + 65289, + 65289, + ], + [ + 65290, + 65290, + ], + [ + 65291, + 65291, + ], + [ + 65292, + 65292, + ], + [ + 65293, + 65293, + ], + [ + 65294, + 65295, + ], + [ + 65296, + 65305, + ], + [ + 65306, + 65307, + ], + [ + 65308, + 65310, + ], + [ + 65311, + 65312, + ], + [ + 65313, + 65338, + ], + [ + 65339, + 65339, + ], + [ + 65340, + 65340, + ], + [ + 65341, + 65341, + ], + [ + 65342, + 65342, + ], + [ + 65343, + 65343, + ], + [ + 65344, + 65344, + ], + [ + 65345, + 65370, + ], + [ + 65371, + 65371, + ], + [ + 65372, + 65372, + ], + [ + 65373, + 65373, + ], + [ + 65374, + 65374, + ], + [ + 65375, + 65375, + ], + [ + 65376, + 65376, + ], + [ + 65504, + 65505, + ], + [ + 65506, + 65506, + ], + [ + 65507, + 65507, + ], + [ + 65508, + 65508, + ], + [ + 65509, + 65510, + ], + [ + 94176, + 94177, + ], + [ + 94178, + 94178, + ], + [ + 94179, + 94179, + ], + [ + 94180, + 94180, + ], + [ + 94192, + 94193, + ], + [ + 94208, + 100343, + ], + [ + 100352, + 101119, + ], + [ + 101120, + 101589, + ], + [ + 101632, + 101640, + ], + [ + 110576, + 110579, + ], + [ + 110581, + 110587, + ], + [ + 110589, + 110590, + ], + [ + 110592, + 110847, + ], + [ + 110848, + 110882, + ], + [ + 110898, + 110898, + ], + [ + 110928, + 110930, + ], + [ + 110933, + 110933, + ], + [ + 110948, + 110951, + ], + [ + 110960, + 111355, + ], + [ + 126980, + 126980, + ], + [ + 127183, + 127183, + ], + [ + 127374, + 127374, + ], + [ + 127377, + 127386, + ], + [ + 127488, + 127490, + ], + [ + 127504, + 127547, + ], + [ + 127552, + 127560, + ], + [ + 127568, + 127569, + ], + [ + 127584, + 127589, + ], + [ + 127744, + 127776, + ], + [ + 127789, + 127797, + ], + [ + 127799, + 127868, + ], + [ + 127870, + 127891, + ], + [ + 127904, + 127946, + ], + [ + 127951, + 127955, + ], + [ + 127968, + 127984, + ], + [ + 127988, + 127988, + ], + [ + 127992, + 127994, + ], + [ + 127995, + 127999, + ], + [ + 128000, + 128062, + ], + [ + 128064, + 128064, + ], + [ + 128066, + 128252, + ], + [ + 128255, + 128317, + ], + [ + 128331, + 128334, + ], + [ + 128336, + 128359, + ], + [ + 128378, + 128378, + ], + [ + 128405, + 128406, + ], + [ + 128420, + 128420, + ], + [ + 128507, + 128511, + ], + [ + 128512, + 128591, + ], + [ + 128640, + 128709, + ], + [ + 128716, + 128716, + ], + [ + 128720, + 128722, + ], + [ + 128725, + 128727, + ], + [ + 128732, + 128735, + ], + [ + 128747, + 128748, + ], + [ + 128756, + 128764, + ], + [ + 128992, + 129003, + ], + [ + 129008, + 129008, + ], + [ + 129292, + 129338, + ], + [ + 129340, + 129349, + ], + [ + 129351, + 129535, + ], + [ + 129648, + 129660, + ], + [ + 129664, + 129672, + ], + [ + 129680, + 129725, + ], + [ + 129727, + 129733, + ], + [ + 129742, + 129755, + ], + [ + 129760, + 129768, + ], + [ + 129776, + 129784, + ], + [ + 131072, + 173791, + ], + [ + 173792, + 173823, + ], + [ + 173824, + 177977, + ], + [ + 177978, + 177983, + ], + [ + 177984, + 178205, + ], + [ + 178206, + 178207, + ], + [ + 178208, + 183969, + ], + [ + 183970, + 183983, + ], + [ + 183984, + 191456, + ], + [ + 191457, + 194559, + ], + [ + 194560, + 195101, + ], + [ + 195102, + 195103, + ], + [ + 195104, + 196605, + ], + [ + 196608, + 201546, + ], + [ + 201547, + 201551, + ], + [ + 201552, + 205743, + ], + [ + 205744, + 262141, + ], +]; diff --git a/vendor/symfony/string/Resources/data/wcswidth_table_zero.php b/vendor/symfony/string/Resources/data/wcswidth_table_zero.php new file mode 100644 index 000000000..9ae733032 --- /dev/null +++ b/vendor/symfony/string/Resources/data/wcswidth_table_zero.php @@ -0,0 +1,1415 @@ +<?php + +/* + * This file has been auto-generated by the Symfony String Component for internal use. + * + * Unicode version: 15.0.0 + * Date: 2022-10-05T17:16:37+02:00 + */ + +return [ + [ + 768, + 879, + ], + [ + 1155, + 1159, + ], + [ + 1160, + 1161, + ], + [ + 1425, + 1469, + ], + [ + 1471, + 1471, + ], + [ + 1473, + 1474, + ], + [ + 1476, + 1477, + ], + [ + 1479, + 1479, + ], + [ + 1552, + 1562, + ], + [ + 1611, + 1631, + ], + [ + 1648, + 1648, + ], + [ + 1750, + 1756, + ], + [ + 1759, + 1764, + ], + [ + 1767, + 1768, + ], + [ + 1770, + 1773, + ], + [ + 1809, + 1809, + ], + [ + 1840, + 1866, + ], + [ + 1958, + 1968, + ], + [ + 2027, + 2035, + ], + [ + 2045, + 2045, + ], + [ + 2070, + 2073, + ], + [ + 2075, + 2083, + ], + [ + 2085, + 2087, + ], + [ + 2089, + 2093, + ], + [ + 2137, + 2139, + ], + [ + 2200, + 2207, + ], + [ + 2250, + 2273, + ], + [ + 2275, + 2306, + ], + [ + 2362, + 2362, + ], + [ + 2364, + 2364, + ], + [ + 2369, + 2376, + ], + [ + 2381, + 2381, + ], + [ + 2385, + 2391, + ], + [ + 2402, + 2403, + ], + [ + 2433, + 2433, + ], + [ + 2492, + 2492, + ], + [ + 2497, + 2500, + ], + [ + 2509, + 2509, + ], + [ + 2530, + 2531, + ], + [ + 2558, + 2558, + ], + [ + 2561, + 2562, + ], + [ + 2620, + 2620, + ], + [ + 2625, + 2626, + ], + [ + 2631, + 2632, + ], + [ + 2635, + 2637, + ], + [ + 2641, + 2641, + ], + [ + 2672, + 2673, + ], + [ + 2677, + 2677, + ], + [ + 2689, + 2690, + ], + [ + 2748, + 2748, + ], + [ + 2753, + 2757, + ], + [ + 2759, + 2760, + ], + [ + 2765, + 2765, + ], + [ + 2786, + 2787, + ], + [ + 2810, + 2815, + ], + [ + 2817, + 2817, + ], + [ + 2876, + 2876, + ], + [ + 2879, + 2879, + ], + [ + 2881, + 2884, + ], + [ + 2893, + 2893, + ], + [ + 2901, + 2902, + ], + [ + 2914, + 2915, + ], + [ + 2946, + 2946, + ], + [ + 3008, + 3008, + ], + [ + 3021, + 3021, + ], + [ + 3072, + 3072, + ], + [ + 3076, + 3076, + ], + [ + 3132, + 3132, + ], + [ + 3134, + 3136, + ], + [ + 3142, + 3144, + ], + [ + 3146, + 3149, + ], + [ + 3157, + 3158, + ], + [ + 3170, + 3171, + ], + [ + 3201, + 3201, + ], + [ + 3260, + 3260, + ], + [ + 3263, + 3263, + ], + [ + 3270, + 3270, + ], + [ + 3276, + 3277, + ], + [ + 3298, + 3299, + ], + [ + 3328, + 3329, + ], + [ + 3387, + 3388, + ], + [ + 3393, + 3396, + ], + [ + 3405, + 3405, + ], + [ + 3426, + 3427, + ], + [ + 3457, + 3457, + ], + [ + 3530, + 3530, + ], + [ + 3538, + 3540, + ], + [ + 3542, + 3542, + ], + [ + 3633, + 3633, + ], + [ + 3636, + 3642, + ], + [ + 3655, + 3662, + ], + [ + 3761, + 3761, + ], + [ + 3764, + 3772, + ], + [ + 3784, + 3790, + ], + [ + 3864, + 3865, + ], + [ + 3893, + 3893, + ], + [ + 3895, + 3895, + ], + [ + 3897, + 3897, + ], + [ + 3953, + 3966, + ], + [ + 3968, + 3972, + ], + [ + 3974, + 3975, + ], + [ + 3981, + 3991, + ], + [ + 3993, + 4028, + ], + [ + 4038, + 4038, + ], + [ + 4141, + 4144, + ], + [ + 4146, + 4151, + ], + [ + 4153, + 4154, + ], + [ + 4157, + 4158, + ], + [ + 4184, + 4185, + ], + [ + 4190, + 4192, + ], + [ + 4209, + 4212, + ], + [ + 4226, + 4226, + ], + [ + 4229, + 4230, + ], + [ + 4237, + 4237, + ], + [ + 4253, + 4253, + ], + [ + 4957, + 4959, + ], + [ + 5906, + 5908, + ], + [ + 5938, + 5939, + ], + [ + 5970, + 5971, + ], + [ + 6002, + 6003, + ], + [ + 6068, + 6069, + ], + [ + 6071, + 6077, + ], + [ + 6086, + 6086, + ], + [ + 6089, + 6099, + ], + [ + 6109, + 6109, + ], + [ + 6155, + 6157, + ], + [ + 6159, + 6159, + ], + [ + 6277, + 6278, + ], + [ + 6313, + 6313, + ], + [ + 6432, + 6434, + ], + [ + 6439, + 6440, + ], + [ + 6450, + 6450, + ], + [ + 6457, + 6459, + ], + [ + 6679, + 6680, + ], + [ + 6683, + 6683, + ], + [ + 6742, + 6742, + ], + [ + 6744, + 6750, + ], + [ + 6752, + 6752, + ], + [ + 6754, + 6754, + ], + [ + 6757, + 6764, + ], + [ + 6771, + 6780, + ], + [ + 6783, + 6783, + ], + [ + 6832, + 6845, + ], + [ + 6846, + 6846, + ], + [ + 6847, + 6862, + ], + [ + 6912, + 6915, + ], + [ + 6964, + 6964, + ], + [ + 6966, + 6970, + ], + [ + 6972, + 6972, + ], + [ + 6978, + 6978, + ], + [ + 7019, + 7027, + ], + [ + 7040, + 7041, + ], + [ + 7074, + 7077, + ], + [ + 7080, + 7081, + ], + [ + 7083, + 7085, + ], + [ + 7142, + 7142, + ], + [ + 7144, + 7145, + ], + [ + 7149, + 7149, + ], + [ + 7151, + 7153, + ], + [ + 7212, + 7219, + ], + [ + 7222, + 7223, + ], + [ + 7376, + 7378, + ], + [ + 7380, + 7392, + ], + [ + 7394, + 7400, + ], + [ + 7405, + 7405, + ], + [ + 7412, + 7412, + ], + [ + 7416, + 7417, + ], + [ + 7616, + 7679, + ], + [ + 8400, + 8412, + ], + [ + 8413, + 8416, + ], + [ + 8417, + 8417, + ], + [ + 8418, + 8420, + ], + [ + 8421, + 8432, + ], + [ + 11503, + 11505, + ], + [ + 11647, + 11647, + ], + [ + 11744, + 11775, + ], + [ + 12330, + 12333, + ], + [ + 12441, + 12442, + ], + [ + 42607, + 42607, + ], + [ + 42608, + 42610, + ], + [ + 42612, + 42621, + ], + [ + 42654, + 42655, + ], + [ + 42736, + 42737, + ], + [ + 43010, + 43010, + ], + [ + 43014, + 43014, + ], + [ + 43019, + 43019, + ], + [ + 43045, + 43046, + ], + [ + 43052, + 43052, + ], + [ + 43204, + 43205, + ], + [ + 43232, + 43249, + ], + [ + 43263, + 43263, + ], + [ + 43302, + 43309, + ], + [ + 43335, + 43345, + ], + [ + 43392, + 43394, + ], + [ + 43443, + 43443, + ], + [ + 43446, + 43449, + ], + [ + 43452, + 43453, + ], + [ + 43493, + 43493, + ], + [ + 43561, + 43566, + ], + [ + 43569, + 43570, + ], + [ + 43573, + 43574, + ], + [ + 43587, + 43587, + ], + [ + 43596, + 43596, + ], + [ + 43644, + 43644, + ], + [ + 43696, + 43696, + ], + [ + 43698, + 43700, + ], + [ + 43703, + 43704, + ], + [ + 43710, + 43711, + ], + [ + 43713, + 43713, + ], + [ + 43756, + 43757, + ], + [ + 43766, + 43766, + ], + [ + 44005, + 44005, + ], + [ + 44008, + 44008, + ], + [ + 44013, + 44013, + ], + [ + 64286, + 64286, + ], + [ + 65024, + 65039, + ], + [ + 65056, + 65071, + ], + [ + 66045, + 66045, + ], + [ + 66272, + 66272, + ], + [ + 66422, + 66426, + ], + [ + 68097, + 68099, + ], + [ + 68101, + 68102, + ], + [ + 68108, + 68111, + ], + [ + 68152, + 68154, + ], + [ + 68159, + 68159, + ], + [ + 68325, + 68326, + ], + [ + 68900, + 68903, + ], + [ + 69291, + 69292, + ], + [ + 69373, + 69375, + ], + [ + 69446, + 69456, + ], + [ + 69506, + 69509, + ], + [ + 69633, + 69633, + ], + [ + 69688, + 69702, + ], + [ + 69744, + 69744, + ], + [ + 69747, + 69748, + ], + [ + 69759, + 69761, + ], + [ + 69811, + 69814, + ], + [ + 69817, + 69818, + ], + [ + 69826, + 69826, + ], + [ + 69888, + 69890, + ], + [ + 69927, + 69931, + ], + [ + 69933, + 69940, + ], + [ + 70003, + 70003, + ], + [ + 70016, + 70017, + ], + [ + 70070, + 70078, + ], + [ + 70089, + 70092, + ], + [ + 70095, + 70095, + ], + [ + 70191, + 70193, + ], + [ + 70196, + 70196, + ], + [ + 70198, + 70199, + ], + [ + 70206, + 70206, + ], + [ + 70209, + 70209, + ], + [ + 70367, + 70367, + ], + [ + 70371, + 70378, + ], + [ + 70400, + 70401, + ], + [ + 70459, + 70460, + ], + [ + 70464, + 70464, + ], + [ + 70502, + 70508, + ], + [ + 70512, + 70516, + ], + [ + 70712, + 70719, + ], + [ + 70722, + 70724, + ], + [ + 70726, + 70726, + ], + [ + 70750, + 70750, + ], + [ + 70835, + 70840, + ], + [ + 70842, + 70842, + ], + [ + 70847, + 70848, + ], + [ + 70850, + 70851, + ], + [ + 71090, + 71093, + ], + [ + 71100, + 71101, + ], + [ + 71103, + 71104, + ], + [ + 71132, + 71133, + ], + [ + 71219, + 71226, + ], + [ + 71229, + 71229, + ], + [ + 71231, + 71232, + ], + [ + 71339, + 71339, + ], + [ + 71341, + 71341, + ], + [ + 71344, + 71349, + ], + [ + 71351, + 71351, + ], + [ + 71453, + 71455, + ], + [ + 71458, + 71461, + ], + [ + 71463, + 71467, + ], + [ + 71727, + 71735, + ], + [ + 71737, + 71738, + ], + [ + 71995, + 71996, + ], + [ + 71998, + 71998, + ], + [ + 72003, + 72003, + ], + [ + 72148, + 72151, + ], + [ + 72154, + 72155, + ], + [ + 72160, + 72160, + ], + [ + 72193, + 72202, + ], + [ + 72243, + 72248, + ], + [ + 72251, + 72254, + ], + [ + 72263, + 72263, + ], + [ + 72273, + 72278, + ], + [ + 72281, + 72283, + ], + [ + 72330, + 72342, + ], + [ + 72344, + 72345, + ], + [ + 72752, + 72758, + ], + [ + 72760, + 72765, + ], + [ + 72767, + 72767, + ], + [ + 72850, + 72871, + ], + [ + 72874, + 72880, + ], + [ + 72882, + 72883, + ], + [ + 72885, + 72886, + ], + [ + 73009, + 73014, + ], + [ + 73018, + 73018, + ], + [ + 73020, + 73021, + ], + [ + 73023, + 73029, + ], + [ + 73031, + 73031, + ], + [ + 73104, + 73105, + ], + [ + 73109, + 73109, + ], + [ + 73111, + 73111, + ], + [ + 73459, + 73460, + ], + [ + 73472, + 73473, + ], + [ + 73526, + 73530, + ], + [ + 73536, + 73536, + ], + [ + 73538, + 73538, + ], + [ + 78912, + 78912, + ], + [ + 78919, + 78933, + ], + [ + 92912, + 92916, + ], + [ + 92976, + 92982, + ], + [ + 94031, + 94031, + ], + [ + 94095, + 94098, + ], + [ + 94180, + 94180, + ], + [ + 113821, + 113822, + ], + [ + 118528, + 118573, + ], + [ + 118576, + 118598, + ], + [ + 119143, + 119145, + ], + [ + 119163, + 119170, + ], + [ + 119173, + 119179, + ], + [ + 119210, + 119213, + ], + [ + 119362, + 119364, + ], + [ + 121344, + 121398, + ], + [ + 121403, + 121452, + ], + [ + 121461, + 121461, + ], + [ + 121476, + 121476, + ], + [ + 121499, + 121503, + ], + [ + 121505, + 121519, + ], + [ + 122880, + 122886, + ], + [ + 122888, + 122904, + ], + [ + 122907, + 122913, + ], + [ + 122915, + 122916, + ], + [ + 122918, + 122922, + ], + [ + 123023, + 123023, + ], + [ + 123184, + 123190, + ], + [ + 123566, + 123566, + ], + [ + 123628, + 123631, + ], + [ + 124140, + 124143, + ], + [ + 125136, + 125142, + ], + [ + 125252, + 125258, + ], + [ + 917760, + 917999, + ], +]; diff --git a/vendor/symfony/string/Resources/functions.php b/vendor/symfony/string/Resources/functions.php new file mode 100644 index 000000000..c950894f3 --- /dev/null +++ b/vendor/symfony/string/Resources/functions.php @@ -0,0 +1,38 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +if (!\function_exists(u::class)) { + function u(?string $string = ''): UnicodeString + { + return new UnicodeString($string ?? ''); + } +} + +if (!\function_exists(b::class)) { + function b(?string $string = ''): ByteString + { + return new ByteString($string ?? ''); + } +} + +if (!\function_exists(s::class)) { + /** + * @return UnicodeString|ByteString + */ + function s(?string $string = ''): AbstractString + { + $string = $string ?? ''; + + return preg_match('//u', $string) ? new UnicodeString($string) : new ByteString($string); + } +} diff --git a/vendor/symfony/string/Slugger/AsciiSlugger.php b/vendor/symfony/string/Slugger/AsciiSlugger.php new file mode 100644 index 000000000..5aecfeb5f --- /dev/null +++ b/vendor/symfony/string/Slugger/AsciiSlugger.php @@ -0,0 +1,183 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Slugger; + +use Symfony\Component\String\AbstractUnicodeString; +use Symfony\Component\String\UnicodeString; +use Symfony\Contracts\Translation\LocaleAwareInterface; + +if (!interface_exists(LocaleAwareInterface::class)) { + throw new \LogicException('You cannot use the "Symfony\Component\String\Slugger\AsciiSlugger" as the "symfony/translation-contracts" package is not installed. Try running "composer require symfony/translation-contracts".'); +} + +/** + * @author Titouan Galopin <galopintitouan@gmail.com> + */ +class AsciiSlugger implements SluggerInterface, LocaleAwareInterface +{ + private const LOCALE_TO_TRANSLITERATOR_ID = [ + 'am' => 'Amharic-Latin', + 'ar' => 'Arabic-Latin', + 'az' => 'Azerbaijani-Latin', + 'be' => 'Belarusian-Latin', + 'bg' => 'Bulgarian-Latin', + 'bn' => 'Bengali-Latin', + 'de' => 'de-ASCII', + 'el' => 'Greek-Latin', + 'fa' => 'Persian-Latin', + 'he' => 'Hebrew-Latin', + 'hy' => 'Armenian-Latin', + 'ka' => 'Georgian-Latin', + 'kk' => 'Kazakh-Latin', + 'ky' => 'Kirghiz-Latin', + 'ko' => 'Korean-Latin', + 'mk' => 'Macedonian-Latin', + 'mn' => 'Mongolian-Latin', + 'or' => 'Oriya-Latin', + 'ps' => 'Pashto-Latin', + 'ru' => 'Russian-Latin', + 'sr' => 'Serbian-Latin', + 'sr_Cyrl' => 'Serbian-Latin', + 'th' => 'Thai-Latin', + 'tk' => 'Turkmen-Latin', + 'uk' => 'Ukrainian-Latin', + 'uz' => 'Uzbek-Latin', + 'zh' => 'Han-Latin', + ]; + + private $defaultLocale; + private $symbolsMap = [ + 'en' => ['@' => 'at', '&' => 'and'], + ]; + + /** + * Cache of transliterators per locale. + * + * @var \Transliterator[] + */ + private $transliterators = []; + + /** + * @param array|\Closure|null $symbolsMap + */ + public function __construct(string $defaultLocale = null, $symbolsMap = null) + { + if (null !== $symbolsMap && !\is_array($symbolsMap) && !$symbolsMap instanceof \Closure) { + throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be array, Closure or null, "%s" given.', __METHOD__, \gettype($symbolsMap))); + } + + $this->defaultLocale = $defaultLocale; + $this->symbolsMap = $symbolsMap ?? $this->symbolsMap; + } + + /** + * {@inheritdoc} + */ + public function setLocale($locale) + { + $this->defaultLocale = $locale; + } + + /** + * {@inheritdoc} + */ + public function getLocale() + { + return $this->defaultLocale; + } + + /** + * {@inheritdoc} + */ + public function slug(string $string, string $separator = '-', string $locale = null): AbstractUnicodeString + { + $locale = $locale ?? $this->defaultLocale; + + $transliterator = []; + if ($locale && ('de' === $locale || 0 === strpos($locale, 'de_'))) { + // Use the shortcut for German in UnicodeString::ascii() if possible (faster and no requirement on intl) + $transliterator = ['de-ASCII']; + } elseif (\function_exists('transliterator_transliterate') && $locale) { + $transliterator = (array) $this->createTransliterator($locale); + } + + if ($this->symbolsMap instanceof \Closure) { + // If the symbols map is passed as a closure, there is no need to fallback to the parent locale + // as the closure can just provide substitutions for all locales of interest. + $symbolsMap = $this->symbolsMap; + array_unshift($transliterator, static function ($s) use ($symbolsMap, $locale) { + return $symbolsMap($s, $locale); + }); + } + + $unicodeString = (new UnicodeString($string))->ascii($transliterator); + + if (\is_array($this->symbolsMap)) { + $map = null; + if (isset($this->symbolsMap[$locale])) { + $map = $this->symbolsMap[$locale]; + } else { + $parent = self::getParentLocale($locale); + if ($parent && isset($this->symbolsMap[$parent])) { + $map = $this->symbolsMap[$parent]; + } + } + if ($map) { + foreach ($map as $char => $replace) { + $unicodeString = $unicodeString->replace($char, ' '.$replace.' '); + } + } + } + + return $unicodeString + ->replaceMatches('/[^A-Za-z0-9]++/', $separator) + ->trim($separator) + ; + } + + private function createTransliterator(string $locale): ?\Transliterator + { + if (\array_key_exists($locale, $this->transliterators)) { + return $this->transliterators[$locale]; + } + + // Exact locale supported, cache and return + if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$locale] ?? null) { + return $this->transliterators[$locale] = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); + } + + // Locale not supported and no parent, fallback to any-latin + if (!$parent = self::getParentLocale($locale)) { + return $this->transliterators[$locale] = null; + } + + // Try to use the parent locale (ie. try "de" for "de_AT") and cache both locales + if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$parent] ?? null) { + $transliterator = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); + } + + return $this->transliterators[$locale] = $this->transliterators[$parent] = $transliterator ?? null; + } + + private static function getParentLocale(?string $locale): ?string + { + if (!$locale) { + return null; + } + if (false === $str = strrchr($locale, '_')) { + // no parent locale + return null; + } + + return substr($locale, 0, -\strlen($str)); + } +} diff --git a/vendor/symfony/string/Slugger/SluggerInterface.php b/vendor/symfony/string/Slugger/SluggerInterface.php new file mode 100644 index 000000000..c679ed933 --- /dev/null +++ b/vendor/symfony/string/Slugger/SluggerInterface.php @@ -0,0 +1,27 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String\Slugger; + +use Symfony\Component\String\AbstractUnicodeString; + +/** + * Creates a URL-friendly slug from a given string. + * + * @author Titouan Galopin <galopintitouan@gmail.com> + */ +interface SluggerInterface +{ + /** + * Creates a slug for the given string and locale, using appropriate transliteration when needed. + */ + public function slug(string $string, string $separator = '-', string $locale = null): AbstractUnicodeString; +} diff --git a/vendor/symfony/string/UnicodeString.php b/vendor/symfony/string/UnicodeString.php new file mode 100644 index 000000000..9b906c6fc --- /dev/null +++ b/vendor/symfony/string/UnicodeString.php @@ -0,0 +1,377 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\String; + +use Symfony\Component\String\Exception\ExceptionInterface; +use Symfony\Component\String\Exception\InvalidArgumentException; + +/** + * Represents a string of Unicode grapheme clusters encoded as UTF-8. + * + * A letter followed by combining characters (accents typically) form what Unicode defines + * as a grapheme cluster: a character as humans mean it in written texts. This class knows + * about the concept and won't split a letter apart from its combining accents. It also + * ensures all string comparisons happen on their canonically-composed representation, + * ignoring e.g. the order in which accents are listed when a letter has many of them. + * + * @see https://unicode.org/reports/tr15/ + * + * @author Nicolas Grekas <p@tchwork.com> + * @author Hugo Hamon <hugohamon@neuf.fr> + * + * @throws ExceptionInterface + */ +class UnicodeString extends AbstractUnicodeString +{ + public function __construct(string $string = '') + { + $this->string = normalizer_is_normalized($string) ? $string : normalizer_normalize($string); + + if (false === $this->string) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + } + + public function append(string ...$suffix): AbstractString + { + $str = clone $this; + $str->string = $this->string.(1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix)); + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + if (false === $str->string) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function chunk(int $length = 1): array + { + if (1 > $length) { + throw new InvalidArgumentException('The chunk length must be greater than zero.'); + } + + if ('' === $this->string) { + return []; + } + + $rx = '/('; + while (65535 < $length) { + $rx .= '\X{65535}'; + $length -= 65535; + } + $rx .= '\X{'.$length.'})/u'; + + $str = clone $this; + $chunks = []; + + foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { + $str->string = $chunk; + $chunks[] = clone $str; + } + + return $chunks; + } + + public function endsWith($suffix): bool + { + if ($suffix instanceof AbstractString) { + $suffix = $suffix->string; + } elseif (\is_array($suffix) || $suffix instanceof \Traversable) { + return parent::endsWith($suffix); + } else { + $suffix = (string) $suffix; + } + + $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; + normalizer_is_normalized($suffix, $form) ?: $suffix = normalizer_normalize($suffix, $form); + + if ('' === $suffix || false === $suffix) { + return false; + } + + if ($this->ignoreCase) { + return 0 === mb_stripos(grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)), $suffix, 0, 'UTF-8'); + } + + return $suffix === grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)); + } + + public function equalsTo($string): bool + { + if ($string instanceof AbstractString) { + $string = $string->string; + } elseif (\is_array($string) || $string instanceof \Traversable) { + return parent::equalsTo($string); + } else { + $string = (string) $string; + } + + $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; + normalizer_is_normalized($string, $form) ?: $string = normalizer_normalize($string, $form); + + if ('' !== $string && false !== $string && $this->ignoreCase) { + return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); + } + + return $string === $this->string; + } + + public function indexOf($needle, int $offset = 0): ?int + { + if ($needle instanceof AbstractString) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOf($needle, $offset); + } else { + $needle = (string) $needle; + } + + $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; + normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); + + if ('' === $needle || false === $needle) { + return null; + } + + try { + $i = $this->ignoreCase ? grapheme_stripos($this->string, $needle, $offset) : grapheme_strpos($this->string, $needle, $offset); + } catch (\ValueError $e) { + return null; + } + + return false === $i ? null : $i; + } + + public function indexOfLast($needle, int $offset = 0): ?int + { + if ($needle instanceof AbstractString) { + $needle = $needle->string; + } elseif (\is_array($needle) || $needle instanceof \Traversable) { + return parent::indexOfLast($needle, $offset); + } else { + $needle = (string) $needle; + } + + $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; + normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); + + if ('' === $needle || false === $needle) { + return null; + } + + $string = $this->string; + + if (0 > $offset) { + // workaround https://bugs.php.net/74264 + if (0 > $offset += grapheme_strlen($needle)) { + $string = grapheme_substr($string, 0, $offset); + } + $offset = 0; + } + + $i = $this->ignoreCase ? grapheme_strripos($string, $needle, $offset) : grapheme_strrpos($string, $needle, $offset); + + return false === $i ? null : $i; + } + + public function join(array $strings, string $lastGlue = null): AbstractString + { + $str = parent::join($strings, $lastGlue); + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + return $str; + } + + public function length(): int + { + return grapheme_strlen($this->string); + } + + /** + * @return static + */ + public function normalize(int $form = self::NFC): parent + { + $str = clone $this; + + if (\in_array($form, [self::NFC, self::NFKC], true)) { + normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); + } elseif (!\in_array($form, [self::NFD, self::NFKD], true)) { + throw new InvalidArgumentException('Unsupported normalization form.'); + } elseif (!normalizer_is_normalized($str->string, $form)) { + $str->string = normalizer_normalize($str->string, $form); + $str->ignoreCase = null; + } + + return $str; + } + + public function prepend(string ...$prefix): AbstractString + { + $str = clone $this; + $str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + if (false === $str->string) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function replace(string $from, string $to): AbstractString + { + $str = clone $this; + normalizer_is_normalized($from) ?: $from = normalizer_normalize($from); + + if ('' !== $from && false !== $from) { + $tail = $str->string; + $result = ''; + $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; + + while ('' !== $tail && false !== $i = $indexOf($tail, $from)) { + $slice = grapheme_substr($tail, 0, $i); + $result .= $slice.$to; + $tail = substr($tail, \strlen($slice) + \strlen($from)); + } + + $str->string = $result.$tail; + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + if (false === $str->string) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + } + + return $str; + } + + public function replaceMatches(string $fromRegexp, $to): AbstractString + { + $str = parent::replaceMatches($fromRegexp, $to); + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + return $str; + } + + public function slice(int $start = 0, int $length = null): AbstractString + { + $str = clone $this; + + if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { + $start = 0; + } + $str->string = (string) grapheme_substr($this->string, $start, $length ?? 2147483647); + + return $str; + } + + public function splice(string $replacement, int $start = 0, int $length = null): AbstractString + { + $str = clone $this; + + if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { + $start = 0; + } + $start = $start ? \strlen(grapheme_substr($this->string, 0, $start)) : 0; + $length = $length ? \strlen(grapheme_substr($this->string, $start, $length ?? 2147483647)) : $length; + $str->string = substr_replace($this->string, $replacement, $start, $length ?? 2147483647); + normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + + if (false === $str->string) { + throw new InvalidArgumentException('Invalid UTF-8 string.'); + } + + return $str; + } + + public function split(string $delimiter, int $limit = null, int $flags = null): array + { + if (1 > $limit = $limit ?? 2147483647) { + throw new InvalidArgumentException('Split limit must be a positive integer.'); + } + + if ('' === $delimiter) { + throw new InvalidArgumentException('Split delimiter is empty.'); + } + + if (null !== $flags) { + return parent::split($delimiter.'u', $limit, $flags); + } + + normalizer_is_normalized($delimiter) ?: $delimiter = normalizer_normalize($delimiter); + + if (false === $delimiter) { + throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); + } + + $str = clone $this; + $tail = $this->string; + $chunks = []; + $indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; + + while (1 < $limit && false !== $i = $indexOf($tail, $delimiter)) { + $str->string = grapheme_substr($tail, 0, $i); + $chunks[] = clone $str; + $tail = substr($tail, \strlen($str->string) + \strlen($delimiter)); + --$limit; + } + + $str->string = $tail; + $chunks[] = clone $str; + + return $chunks; + } + + public function startsWith($prefix): bool + { + if ($prefix instanceof AbstractString) { + $prefix = $prefix->string; + } elseif (\is_array($prefix) || $prefix instanceof \Traversable) { + return parent::startsWith($prefix); + } else { + $prefix = (string) $prefix; + } + + $form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; + normalizer_is_normalized($prefix, $form) ?: $prefix = normalizer_normalize($prefix, $form); + + if ('' === $prefix || false === $prefix) { + return false; + } + + if ($this->ignoreCase) { + return 0 === mb_stripos(grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES), $prefix, 0, 'UTF-8'); + } + + return $prefix === grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES); + } + + public function __wakeup() + { + if (!\is_string($this->string)) { + throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); + } + + normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); + } + + public function __clone() + { + if (null === $this->ignoreCase) { + normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); + } + + $this->ignoreCase = false; + } +} diff --git a/vendor/symfony/string/composer.json b/vendor/symfony/string/composer.json new file mode 100644 index 000000000..2b88fd529 --- /dev/null +++ b/vendor/symfony/string/composer.json @@ -0,0 +1,43 @@ +{ + "name": "symfony/string", + "type": "library", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "keywords": ["string", "utf8", "utf-8", "grapheme", "i18n", "unicode"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "autoload": { + "psr-4": { "Symfony\\Component\\String\\": "" }, + "files": [ "Resources/functions.php" ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "minimum-stability": "dev" +} diff --git a/vendor/symfony/translation/CHANGELOG.md b/vendor/symfony/translation/CHANGELOG.md index 97845322e..160b5e694 100644 --- a/vendor/symfony/translation/CHANGELOG.md +++ b/vendor/symfony/translation/CHANGELOG.md @@ -1,6 +1,49 @@ CHANGELOG ========= +5.4 +--- + + * Add `github` format & autodetection to render errors as annotations when + running the XLIFF linter command in a Github Actions environment. + * Translation providers are not experimental anymore + +5.3 +--- + + * Add `translation:pull` and `translation:push` commands to manage translations with third-party providers + * Add `TranslatorBagInterface::getCatalogues` method + * Add support to load XLIFF string in `XliffFileLoader` + +5.2.0 +----- + + * added support for calling `trans` with ICU formatted messages + * added `PseudoLocalizationTranslator` + * added `TranslatableMessage` objects that represent a message that can be translated + * added the `t()` function to easily create `TranslatableMessage` objects + * Added support for extracting messages from `TranslatableMessage` objects + +5.1.0 +----- + + * added support for `name` attribute on `unit` element from xliff2 to be used as a translation key instead of always the `source` element + +5.0.0 +----- + + * removed support for using `null` as the locale in `Translator` + * removed `TranslatorInterface` + * removed `MessageSelector` + * removed `ChoiceMessageFormatterInterface` + * removed `PluralizationRule` + * removed `Interval` + * removed `transChoice()` methods, use the trans() method instead with a %count% parameter + * removed `FileDumper::setBackup()` and `TranslationWriter::disableBackup()` + * removed `MessageFormatter::choiceFormat()` + * added argument `$filename` to `PhpExtractor::parseTokens()` + * removed support for implicit STDIN usage in the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit. + 4.4.0 ----- diff --git a/vendor/symfony/translation/Catalogue/AbstractOperation.php b/vendor/symfony/translation/Catalogue/AbstractOperation.php index 4953563db..98d42e5b6 100644 --- a/vendor/symfony/translation/Catalogue/AbstractOperation.php +++ b/vendor/symfony/translation/Catalogue/AbstractOperation.php @@ -26,6 +26,10 @@ use Symfony\Component\Translation\MessageCatalogueInterface; */ abstract class AbstractOperation implements OperationInterface { + public const OBSOLETE_BATCH = 'obsolete'; + public const NEW_BATCH = 'new'; + public const ALL_BATCH = 'all'; + protected $source; protected $target; protected $result; @@ -79,7 +83,18 @@ abstract class AbstractOperation implements OperationInterface public function getDomains() { if (null === $this->domains) { - $this->domains = array_values(array_unique(array_merge($this->source->getDomains(), $this->target->getDomains()))); + $domains = []; + foreach ([$this->source, $this->target] as $catalogue) { + foreach ($catalogue->getDomains() as $domain) { + $domains[$domain] = $domain; + + if ($catalogue->all($domainIcu = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX)) { + $domains[$domainIcu] = $domainIcu; + } + } + } + + $this->domains = array_values($domains); } return $this->domains; @@ -88,49 +103,49 @@ abstract class AbstractOperation implements OperationInterface /** * {@inheritdoc} */ - public function getMessages($domain) + public function getMessages(string $domain) { if (!\in_array($domain, $this->getDomains())) { throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain)); } - if (!isset($this->messages[$domain]['all'])) { + if (!isset($this->messages[$domain][self::ALL_BATCH])) { $this->processDomain($domain); } - return $this->messages[$domain]['all']; + return $this->messages[$domain][self::ALL_BATCH]; } /** * {@inheritdoc} */ - public function getNewMessages($domain) + public function getNewMessages(string $domain) { if (!\in_array($domain, $this->getDomains())) { throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain)); } - if (!isset($this->messages[$domain]['new'])) { + if (!isset($this->messages[$domain][self::NEW_BATCH])) { $this->processDomain($domain); } - return $this->messages[$domain]['new']; + return $this->messages[$domain][self::NEW_BATCH]; } /** * {@inheritdoc} */ - public function getObsoleteMessages($domain) + public function getObsoleteMessages(string $domain) { if (!\in_array($domain, $this->getDomains())) { throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain)); } - if (!isset($this->messages[$domain]['obsolete'])) { + if (!isset($this->messages[$domain][self::OBSOLETE_BATCH])) { $this->processDomain($domain); } - return $this->messages[$domain]['obsolete']; + return $this->messages[$domain][self::OBSOLETE_BATCH]; } /** @@ -147,11 +162,42 @@ abstract class AbstractOperation implements OperationInterface return $this->result; } + /** + * @param self::*_BATCH $batch + */ + public function moveMessagesToIntlDomainsIfPossible(string $batch = self::ALL_BATCH): void + { + // If MessageFormatter class does not exists, intl domains are not supported. + if (!class_exists(\MessageFormatter::class)) { + return; + } + + foreach ($this->getDomains() as $domain) { + $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX; + switch ($batch) { + case self::OBSOLETE_BATCH: $messages = $this->getObsoleteMessages($domain); break; + case self::NEW_BATCH: $messages = $this->getNewMessages($domain); break; + case self::ALL_BATCH: $messages = $this->getMessages($domain); break; + default: throw new \InvalidArgumentException(sprintf('$batch argument must be one of ["%s", "%s", "%s"].', self::ALL_BATCH, self::NEW_BATCH, self::OBSOLETE_BATCH)); + } + + if (!$messages || (!$this->source->all($intlDomain) && $this->source->all($domain))) { + continue; + } + + $result = $this->getResult(); + $allIntlMessages = $result->all($intlDomain); + $currentMessages = array_diff_key($messages, $result->all($domain)); + $result->replace($currentMessages, $domain); + $result->replace($allIntlMessages + $messages, $intlDomain); + } + } + /** * Performs operation on source and target catalogues for the given domain and * stores the results. * * @param string $domain The domain which the operation will be performed for */ - abstract protected function processDomain($domain); + abstract protected function processDomain(string $domain); } diff --git a/vendor/symfony/translation/Catalogue/MergeOperation.php b/vendor/symfony/translation/Catalogue/MergeOperation.php index d55542c0c..87db2fb03 100644 --- a/vendor/symfony/translation/Catalogue/MergeOperation.php +++ b/vendor/symfony/translation/Catalogue/MergeOperation.php @@ -27,7 +27,7 @@ class MergeOperation extends AbstractOperation /** * {@inheritdoc} */ - protected function processDomain($domain) + protected function processDomain(string $domain) { $this->messages[$domain] = [ 'all' => [], diff --git a/vendor/symfony/translation/Catalogue/OperationInterface.php b/vendor/symfony/translation/Catalogue/OperationInterface.php index 87d888efb..9ffac88d2 100644 --- a/vendor/symfony/translation/Catalogue/OperationInterface.php +++ b/vendor/symfony/translation/Catalogue/OperationInterface.php @@ -44,29 +44,23 @@ interface OperationInterface /** * Returns all valid messages ('all') after operation. * - * @param string $domain - * * @return array */ - public function getMessages($domain); + public function getMessages(string $domain); /** * Returns new messages ('new') after operation. * - * @param string $domain - * * @return array */ - public function getNewMessages($domain); + public function getNewMessages(string $domain); /** * Returns obsolete messages ('obsolete') after operation. * - * @param string $domain - * * @return array */ - public function getObsoleteMessages($domain); + public function getObsoleteMessages(string $domain); /** * Returns resulting catalogue ('result'). diff --git a/vendor/symfony/translation/Catalogue/TargetOperation.php b/vendor/symfony/translation/Catalogue/TargetOperation.php index c8b065512..682b5752f 100644 --- a/vendor/symfony/translation/Catalogue/TargetOperation.php +++ b/vendor/symfony/translation/Catalogue/TargetOperation.php @@ -28,7 +28,7 @@ class TargetOperation extends AbstractOperation /** * {@inheritdoc} */ - protected function processDomain($domain) + protected function processDomain(string $domain) { $this->messages[$domain] = [ 'all' => [], diff --git a/vendor/symfony/translation/Command/TranslationPullCommand.php b/vendor/symfony/translation/Command/TranslationPullCommand.php new file mode 100644 index 000000000..e2e7c00dc --- /dev/null +++ b/vendor/symfony/translation/Command/TranslationPullCommand.php @@ -0,0 +1,188 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Command; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; +use Symfony\Component\Translation\Catalogue\TargetOperation; +use Symfony\Component\Translation\MessageCatalogue; +use Symfony\Component\Translation\Provider\TranslationProviderCollection; +use Symfony\Component\Translation\Reader\TranslationReaderInterface; +use Symfony\Component\Translation\Writer\TranslationWriterInterface; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +final class TranslationPullCommand extends Command +{ + use TranslationTrait; + + protected static $defaultName = 'translation:pull'; + protected static $defaultDescription = 'Pull translations from a given provider.'; + + private $providerCollection; + private $writer; + private $reader; + private $defaultLocale; + private $transPaths; + private $enabledLocales; + + public function __construct(TranslationProviderCollection $providerCollection, TranslationWriterInterface $writer, TranslationReaderInterface $reader, string $defaultLocale, array $transPaths = [], array $enabledLocales = []) + { + $this->providerCollection = $providerCollection; + $this->writer = $writer; + $this->reader = $reader; + $this->defaultLocale = $defaultLocale; + $this->transPaths = $transPaths; + $this->enabledLocales = $enabledLocales; + + parent::__construct(); + } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestArgumentValuesFor('provider')) { + $suggestions->suggestValues($this->providerCollection->keys()); + + return; + } + + if ($input->mustSuggestOptionValuesFor('domains')) { + $provider = $this->providerCollection->get($input->getArgument('provider')); + + if ($provider && method_exists($provider, 'getDomains')) { + $domains = $provider->getDomains(); + $suggestions->suggestValues($domains); + } + + return; + } + + if ($input->mustSuggestOptionValuesFor('locales')) { + $suggestions->suggestValues($this->enabledLocales); + + return; + } + + if ($input->mustSuggestOptionValuesFor('format')) { + $suggestions->suggestValues(['php', 'xlf', 'xlf12', 'xlf20', 'po', 'mo', 'yml', 'yaml', 'ts', 'csv', 'json', 'ini', 'res']); + } + } + + /** + * {@inheritdoc} + */ + protected function configure() + { + $keys = $this->providerCollection->keys(); + $defaultProvider = 1 === \count($keys) ? $keys[0] : null; + + $this + ->setDefinition([ + new InputArgument('provider', null !== $defaultProvider ? InputArgument::OPTIONAL : InputArgument::REQUIRED, 'The provider to pull translations from.', $defaultProvider), + new InputOption('force', null, InputOption::VALUE_NONE, 'Override existing translations with provider ones (it will delete not synchronized messages).'), + new InputOption('intl-icu', null, InputOption::VALUE_NONE, 'Associated to --force option, it will write messages in "%domain%+intl-icu.%locale%.xlf" files.'), + new InputOption('domains', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the domains to pull.'), + new InputOption('locales', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the locales to pull.'), + new InputOption('format', null, InputOption::VALUE_OPTIONAL, 'Override the default output format.', 'xlf12'), + ]) + ->setHelp(<<<'EOF' +The <info>%command.name%</> command pulls translations from the given provider. Only +new translations are pulled, existing ones are not overwritten. + +You can overwrite existing translations (and remove the missing ones on local side) by using the <comment>--force</> flag: + + <info>php %command.full_name% --force provider</> + +Full example: + + <info>php %command.full_name% provider --force --domains=messages --domains=validators --locales=en</> + +This command pulls all translations associated with the <comment>messages</> and <comment>validators</> domains for the <comment>en</> locale. +Local translations for the specified domains and locale are deleted if they're not present on the provider and overwritten if it's the case. +Local translations for others domains and locales are ignored. +EOF + ) + ; + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + + $provider = $this->providerCollection->get($input->getArgument('provider')); + $force = $input->getOption('force'); + $intlIcu = $input->getOption('intl-icu'); + $locales = $input->getOption('locales') ?: $this->enabledLocales; + $domains = $input->getOption('domains'); + $format = $input->getOption('format'); + $xliffVersion = '1.2'; + + if ($intlIcu && !$force) { + $io->note('--intl-icu option only has an effect when used with --force. Here, it will be ignored.'); + } + + switch ($format) { + case 'xlf20': $xliffVersion = '2.0'; + // no break + case 'xlf12': $format = 'xlf'; + } + + $writeOptions = [ + 'path' => end($this->transPaths), + 'xliff_version' => $xliffVersion, + 'default_locale' => $this->defaultLocale, + ]; + + if (!$domains) { + $domains = $provider->getDomains(); + } + + $providerTranslations = $provider->read($domains, $locales); + + if ($force) { + foreach ($providerTranslations->getCatalogues() as $catalogue) { + $operation = new TargetOperation(new MessageCatalogue($catalogue->getLocale()), $catalogue); + if ($intlIcu) { + $operation->moveMessagesToIntlDomainsIfPossible(); + } + $this->writer->write($operation->getResult(), $format, $writeOptions); + } + + $io->success(sprintf('Local translations has been updated from "%s" (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains))); + + return 0; + } + + $localTranslations = $this->readLocalTranslations($locales, $domains, $this->transPaths); + + // Append pulled translations to local ones. + $localTranslations->addBag($providerTranslations->diff($localTranslations)); + + foreach ($localTranslations->getCatalogues() as $catalogue) { + $this->writer->write($catalogue, $format, $writeOptions); + } + + $io->success(sprintf('New translations from "%s" has been written locally (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains))); + + return 0; + } +} diff --git a/vendor/symfony/translation/Command/TranslationPushCommand.php b/vendor/symfony/translation/Command/TranslationPushCommand.php new file mode 100644 index 000000000..bf6e8c948 --- /dev/null +++ b/vendor/symfony/translation/Command/TranslationPushCommand.php @@ -0,0 +1,189 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Command; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; +use Symfony\Component\Console\Exception\InvalidArgumentException; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; +use Symfony\Component\Translation\Provider\FilteringProvider; +use Symfony\Component\Translation\Provider\TranslationProviderCollection; +use Symfony\Component\Translation\Reader\TranslationReaderInterface; +use Symfony\Component\Translation\TranslatorBag; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +final class TranslationPushCommand extends Command +{ + use TranslationTrait; + + protected static $defaultName = 'translation:push'; + protected static $defaultDescription = 'Push translations to a given provider.'; + + private $providers; + private $reader; + private $transPaths; + private $enabledLocales; + + public function __construct(TranslationProviderCollection $providers, TranslationReaderInterface $reader, array $transPaths = [], array $enabledLocales = []) + { + $this->providers = $providers; + $this->reader = $reader; + $this->transPaths = $transPaths; + $this->enabledLocales = $enabledLocales; + + parent::__construct(); + } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestArgumentValuesFor('provider')) { + $suggestions->suggestValues($this->providers->keys()); + + return; + } + + if ($input->mustSuggestOptionValuesFor('domains')) { + $provider = $this->providers->get($input->getArgument('provider')); + + if ($provider && method_exists($provider, 'getDomains')) { + $domains = $provider->getDomains(); + $suggestions->suggestValues($domains); + } + + return; + } + + if ($input->mustSuggestOptionValuesFor('locales')) { + $suggestions->suggestValues($this->enabledLocales); + } + } + + /** + * {@inheritdoc} + */ + protected function configure() + { + $keys = $this->providers->keys(); + $defaultProvider = 1 === \count($keys) ? $keys[0] : null; + + $this + ->setDefinition([ + new InputArgument('provider', null !== $defaultProvider ? InputArgument::OPTIONAL : InputArgument::REQUIRED, 'The provider to push translations to.', $defaultProvider), + new InputOption('force', null, InputOption::VALUE_NONE, 'Override existing translations with local ones (it will delete not synchronized messages).'), + new InputOption('delete-missing', null, InputOption::VALUE_NONE, 'Delete translations available on provider but not locally.'), + new InputOption('domains', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the domains to push.'), + new InputOption('locales', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the locales to push.', $this->enabledLocales), + ]) + ->setHelp(<<<'EOF' +The <info>%command.name%</> command pushes translations to the given provider. Only new +translations are pushed, existing ones are not overwritten. + +You can overwrite existing translations by using the <comment>--force</> flag: + + <info>php %command.full_name% --force provider</> + +You can delete provider translations which are not present locally by using the <comment>--delete-missing</> flag: + + <info>php %command.full_name% --delete-missing provider</> + +Full example: + + <info>php %command.full_name% provider --force --delete-missing --domains=messages --domains=validators --locales=en</> + +This command pushes all translations associated with the <comment>messages</> and <comment>validators</> domains for the <comment>en</> locale. +Provider translations for the specified domains and locale are deleted if they're not present locally and overwritten if it's the case. +Provider translations for others domains and locales are ignored. +EOF + ) + ; + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output): int + { + $provider = $this->providers->get($input->getArgument('provider')); + + if (!$this->enabledLocales) { + throw new InvalidArgumentException(sprintf('You must define "framework.translator.enabled_locales" or "framework.translator.providers.%s.locales" config key in order to work with translation providers.', parse_url($provider, \PHP_URL_SCHEME))); + } + + $io = new SymfonyStyle($input, $output); + $domains = $input->getOption('domains'); + $locales = $input->getOption('locales'); + $force = $input->getOption('force'); + $deleteMissing = $input->getOption('delete-missing'); + + if (!$domains && $provider instanceof FilteringProvider) { + $domains = $provider->getDomains(); + } + + // Reading local translations must be done after retrieving the domains from the provider + // in order to manage only translations from configured domains + $localTranslations = $this->readLocalTranslations($locales, $domains, $this->transPaths); + + if (!$domains) { + $domains = $this->getDomainsFromTranslatorBag($localTranslations); + } + + if (!$deleteMissing && $force) { + $provider->write($localTranslations); + + $io->success(sprintf('All local translations has been sent to "%s" (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains))); + + return 0; + } + + $providerTranslations = $provider->read($domains, $locales); + + if ($deleteMissing) { + $provider->delete($providerTranslations->diff($localTranslations)); + + $io->success(sprintf('Missing translations on "%s" has been deleted (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains))); + + // Read provider translations again, after missing translations deletion, + // to avoid push freshly deleted translations. + $providerTranslations = $provider->read($domains, $locales); + } + + $translationsToWrite = $localTranslations->diff($providerTranslations); + + if ($force) { + $translationsToWrite->addBag($localTranslations->intersect($providerTranslations)); + } + + $provider->write($translationsToWrite); + + $io->success(sprintf('%s local translations has been sent to "%s" (for "%s" locale(s), and "%s" domain(s)).', $force ? 'All' : 'New', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains))); + + return 0; + } + + private function getDomainsFromTranslatorBag(TranslatorBag $translatorBag): array + { + $domains = []; + + foreach ($translatorBag->getCatalogues() as $catalogue) { + $domains += $catalogue->getDomains(); + } + + return array_unique($domains); + } +} diff --git a/vendor/symfony/translation/Command/TranslationTrait.php b/vendor/symfony/translation/Command/TranslationTrait.php new file mode 100644 index 000000000..eafaffd3f --- /dev/null +++ b/vendor/symfony/translation/Command/TranslationTrait.php @@ -0,0 +1,77 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Command; + +use Symfony\Component\Translation\MessageCatalogue; +use Symfony\Component\Translation\MessageCatalogueInterface; +use Symfony\Component\Translation\TranslatorBag; + +/** + * @internal + */ +trait TranslationTrait +{ + private function readLocalTranslations(array $locales, array $domains, array $transPaths): TranslatorBag + { + $bag = new TranslatorBag(); + + foreach ($locales as $locale) { + $catalogue = new MessageCatalogue($locale); + foreach ($transPaths as $path) { + $this->reader->read($path, $catalogue); + } + + if ($domains) { + foreach ($domains as $domain) { + $bag->addCatalogue($this->filterCatalogue($catalogue, $domain)); + } + } else { + $bag->addCatalogue($catalogue); + } + } + + return $bag; + } + + private function filterCatalogue(MessageCatalogue $catalogue, string $domain): MessageCatalogue + { + $filteredCatalogue = new MessageCatalogue($catalogue->getLocale()); + + // extract intl-icu messages only + $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX; + if ($intlMessages = $catalogue->all($intlDomain)) { + $filteredCatalogue->add($intlMessages, $intlDomain); + } + + // extract all messages and subtract intl-icu messages + if ($messages = array_diff($catalogue->all($domain), $intlMessages)) { + $filteredCatalogue->add($messages, $domain); + } + foreach ($catalogue->getResources() as $resource) { + $filteredCatalogue->addResource($resource); + } + + if ($metadata = $catalogue->getMetadata('', $intlDomain)) { + foreach ($metadata as $k => $v) { + $filteredCatalogue->setMetadata($k, $v, $intlDomain); + } + } + + if ($metadata = $catalogue->getMetadata('', $domain)) { + foreach ($metadata as $k => $v) { + $filteredCatalogue->setMetadata($k, $v, $domain); + } + } + + return $filteredCatalogue; + } +} diff --git a/vendor/symfony/translation/Command/XliffLintCommand.php b/vendor/symfony/translation/Command/XliffLintCommand.php index 80d45bf53..fb2b5f31c 100644 --- a/vendor/symfony/translation/Command/XliffLintCommand.php +++ b/vendor/symfony/translation/Command/XliffLintCommand.php @@ -11,7 +11,10 @@ namespace Symfony\Component\Translation\Command; +use Symfony\Component\Console\CI\GithubActionReporter; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -31,6 +34,7 @@ use Symfony\Component\Translation\Util\XliffUtils; class XliffLintCommand extends Command { protected static $defaultName = 'lint:xliff'; + protected static $defaultDescription = 'Lint an XLIFF file and outputs encountered errors'; private $format; private $displayCorrectFiles; @@ -53,9 +57,9 @@ class XliffLintCommand extends Command protected function configure() { $this - ->setDescription('Lint an XLIFF file and outputs encountered errors') + ->setDescription(self::$defaultDescription) ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') - ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt') + ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format') ->setHelp(<<<EOF The <info>%command.name%</info> command lints an XLIFF file and outputs to STDOUT the first encountered syntax error. @@ -82,22 +86,15 @@ EOF { $io = new SymfonyStyle($input, $output); $filenames = (array) $input->getArgument('filename'); - $this->format = $input->getOption('format'); + $this->format = $input->getOption('format') ?? (GithubActionReporter::isGithubActionEnvironment() ? 'github' : 'txt'); $this->displayCorrectFiles = $output->isVerbose(); if (['-'] === $filenames) { return $this->display($io, [$this->validate(file_get_contents('php://stdin'))]); } - // @deprecated to be removed in 5.0 if (!$filenames) { - if (0 !== ftell(\STDIN)) { - throw new RuntimeException('Please provide a filename or pipe file content to STDIN.'); - } - - @trigger_error('Piping content from STDIN to the "lint:xliff" command without passing the dash symbol "-" as argument is deprecated since Symfony 4.4.', \E_USER_DEPRECATED); - - return $this->display($io, [$this->validate(file_get_contents('php://stdin'))]); + throw new RuntimeException('Please provide a filename or pipe file content to STDIN.'); } $filesInfo = []; @@ -166,15 +163,18 @@ EOF return $this->displayTxt($io, $files); case 'json': return $this->displayJson($io, $files); + case 'github': + return $this->displayTxt($io, $files, true); default: throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $this->format)); } } - private function displayTxt(SymfonyStyle $io, array $filesInfo) + private function displayTxt(SymfonyStyle $io, array $filesInfo, bool $errorAsGithubAnnotations = false) { $countFiles = \count($filesInfo); $erroredFiles = 0; + $githubReporter = $errorAsGithubAnnotations ? new GithubActionReporter($io) : null; foreach ($filesInfo as $info) { if ($info['valid'] && $this->displayCorrectFiles) { @@ -182,9 +182,15 @@ EOF } elseif (!$info['valid']) { ++$erroredFiles; $io->text('<error> ERROR </error>'.($info['file'] ? sprintf(' in %s', $info['file']) : '')); - $io->listing(array_map(function ($error) { + $io->listing(array_map(function ($error) use ($info, $githubReporter) { // general document errors have a '-1' line number - return -1 === $error['line'] ? $error['message'] : sprintf('Line %d, Column %d: %s', $error['line'], $error['column'], $error['message']); + $line = -1 === $error['line'] ? null : $error['line']; + + if ($githubReporter) { + $githubReporter->error($error['message'], $info['file'], $line, null !== $line ? $error['column'] : null); + } + + return null === $line ? $error['message'] : sprintf('Line %d, Column %d: %s', $line, $error['column'], $error['message']); }, $info['messages'])); } } @@ -270,4 +276,11 @@ EOF return null; } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestOptionValuesFor('format')) { + $suggestions->suggestValues(['txt', 'json', 'github']); + } + } } diff --git a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php b/vendor/symfony/translation/DataCollector/TranslationDataCollector.php index 88894ec01..379130a44 100644 --- a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php +++ b/vendor/symfony/translation/DataCollector/TranslationDataCollector.php @@ -21,7 +21,7 @@ use Symfony\Component\VarDumper\Cloner\Data; /** * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> * - * @final since Symfony 4.4 + * @final */ class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface { @@ -47,10 +47,8 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto /** * {@inheritdoc} - * - * @param \Throwable|null $exception */ - public function collect(Request $request, Response $response/* , \Throwable $exception = null */) + public function collect(Request $request, Response $response, \Throwable $exception = null) { $this->data['locale'] = $this->translator->getLocale(); $this->data['fallback_locales'] = $this->translator->getFallbackLocales(); @@ -72,26 +70,17 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto return $this->data['messages'] ?? []; } - /** - * @return int - */ - public function getCountMissings() + public function getCountMissings(): int { return $this->data[DataCollectorTranslator::MESSAGE_MISSING] ?? 0; } - /** - * @return int - */ - public function getCountFallbacks() + public function getCountFallbacks(): int { return $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] ?? 0; } - /** - * @return int - */ - public function getCountDefines() + public function getCountDefines(): int { return $this->data[DataCollectorTranslator::MESSAGE_DEFINED] ?? 0; } @@ -102,7 +91,7 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto } /** - * @internal since Symfony 4.2 + * @internal */ public function getFallbackLocales() { @@ -112,7 +101,7 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'translation'; } diff --git a/vendor/symfony/translation/DataCollectorTranslator.php b/vendor/symfony/translation/DataCollectorTranslator.php index 68acf1561..ea5a2dd5e 100644 --- a/vendor/symfony/translation/DataCollectorTranslator.php +++ b/vendor/symfony/translation/DataCollectorTranslator.php @@ -13,36 +13,28 @@ namespace Symfony\Component\Translation; use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; use Symfony\Component\Translation\Exception\InvalidArgumentException; -use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface; use Symfony\Contracts\Translation\LocaleAwareInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> */ -class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorInterface, TranslatorBagInterface, WarmableInterface +class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface, WarmableInterface { public const MESSAGE_DEFINED = 0; public const MESSAGE_MISSING = 1; public const MESSAGE_EQUALS_FALLBACK = 2; - /** - * @var TranslatorInterface|TranslatorBagInterface - */ private $translator; - private $messages = []; /** - * @param TranslatorInterface $translator The translator must implement TranslatorBagInterface + * @param TranslatorInterface&TranslatorBagInterface&LocaleAwareInterface $translator */ - public function __construct($translator) + public function __construct(TranslatorInterface $translator) { - if (!$translator instanceof LegacyTranslatorInterface && !$translator instanceof TranslatorInterface) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, TranslatorInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator))); - } if (!$translator instanceof TranslatorBagInterface || !$translator instanceof LocaleAwareInterface) { - throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', \get_class($translator))); + throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', get_debug_type($translator))); } $this->translator = $translator; @@ -51,9 +43,9 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn /** * {@inheritdoc} */ - public function trans($id, array $parameters = [], $domain = null, $locale = null) + public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null) { - $trans = $this->translator->trans($id, $parameters, $domain, $locale); + $trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale); $this->collectMessage($locale, $domain, $id, $trans, $parameters); return $trans; @@ -61,26 +53,8 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn /** * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use the trans() method instead with a %count% parameter */ - public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null) - { - if ($this->translator instanceof TranslatorInterface) { - $trans = $this->translator->trans($id, ['%count%' => $number] + $parameters, $domain, $locale); - } else { - $trans = $this->translator->transChoice($id, $number, $parameters, $domain, $locale); - } - - $this->collectMessage($locale, $domain, $id, $trans, ['%count%' => $number] + $parameters); - - return $trans; - } - - /** - * {@inheritdoc} - */ - public function setLocale($locale) + public function setLocale(string $locale) { $this->translator->setLocale($locale); } @@ -96,7 +70,7 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn /** * {@inheritdoc} */ - public function getCatalogue($locale = null) + public function getCatalogue(string $locale = null) { return $this->translator->getCatalogue($locale); } @@ -104,17 +78,29 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn /** * {@inheritdoc} */ - public function warmUp($cacheDir) + public function getCatalogues(): array + { + return $this->translator->getCatalogues(); + } + + /** + * {@inheritdoc} + * + * @return string[] + */ + public function warmUp(string $cacheDir) { if ($this->translator instanceof WarmableInterface) { - $this->translator->warmUp($cacheDir); + return (array) $this->translator->warmUp($cacheDir); } + + return []; } /** * Gets the fallback locales. * - * @return array The fallback locales + * @return array */ public function getFallbackLocales() { @@ -128,7 +114,7 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn /** * Passes through all unknown calls onto the translator object. */ - public function __call($method, $args) + public function __call(string $method, array $args) { return $this->translator->{$method}(...$args); } @@ -141,13 +127,12 @@ class DataCollectorTranslator implements LegacyTranslatorInterface, TranslatorIn return $this->messages; } - private function collectMessage(?string $locale, ?string $domain, ?string $id, string $translation, ?array $parameters = []) + private function collectMessage(?string $locale, ?string $domain, string $id, string $translation, ?array $parameters = []) { if (null === $domain) { $domain = 'messages'; } - $id = (string) $id; $catalogue = $this->translator->getCatalogue($locale); $locale = $catalogue->getLocale(); $fallbackLocale = null; diff --git a/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php b/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php index 930f36d72..6d78342bc 100644 --- a/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php +++ b/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php @@ -25,6 +25,10 @@ class TranslationDumperPass implements CompilerPassInterface public function __construct(string $writerServiceId = 'translation.writer', string $dumperTag = 'translation.dumper') { + if (1 < \func_num_args()) { + trigger_deprecation('symfony/translation', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->writerServiceId = $writerServiceId; $this->dumperTag = $dumperTag; } diff --git a/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php b/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php index d08b2ba5f..fab6b20ae 100644 --- a/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php +++ b/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php @@ -26,6 +26,10 @@ class TranslationExtractorPass implements CompilerPassInterface public function __construct(string $extractorServiceId = 'translation.extractor', string $extractorTag = 'translation.extractor') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/translation', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->extractorServiceId = $extractorServiceId; $this->extractorTag = $extractorTag; } diff --git a/vendor/symfony/translation/DependencyInjection/TranslatorPass.php b/vendor/symfony/translation/DependencyInjection/TranslatorPass.php index ed4a840d8..e6a4b362f 100644 --- a/vendor/symfony/translation/DependencyInjection/TranslatorPass.php +++ b/vendor/symfony/translation/DependencyInjection/TranslatorPass.php @@ -24,8 +24,12 @@ class TranslatorPass implements CompilerPassInterface private $debugCommandServiceId; private $updateCommandServiceId; - public function __construct(string $translatorServiceId = 'translator.default', string $readerServiceId = 'translation.reader', string $loaderTag = 'translation.loader', string $debugCommandServiceId = 'console.command.translation_debug', string $updateCommandServiceId = 'console.command.translation_update') + public function __construct(string $translatorServiceId = 'translator.default', string $readerServiceId = 'translation.reader', string $loaderTag = 'translation.loader', string $debugCommandServiceId = 'console.command.translation_debug', string $updateCommandServiceId = 'console.command.translation_extract') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/translation', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->translatorServiceId = $translatorServiceId; $this->readerServiceId = $readerServiceId; $this->loaderTag = $loaderTag; @@ -68,7 +72,7 @@ class TranslatorPass implements CompilerPassInterface return; } - $paths = array_keys($container->getDefinition('twig.template_iterator')->getArgument(2)); + $paths = array_keys($container->getDefinition('twig.template_iterator')->getArgument(1)); if ($container->hasDefinition($this->debugCommandServiceId)) { $definition = $container->getDefinition($this->debugCommandServiceId); $definition->replaceArgument(4, $container->getParameter('twig.default_path')); diff --git a/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php b/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php index 37c8c5719..18a71c45a 100644 --- a/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php +++ b/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php @@ -27,12 +27,28 @@ class TranslatorPathsPass extends AbstractRecursivePass private $updateCommandServiceId; private $resolverServiceId; private $level = 0; + + /** + * @var array<string, bool> + */ private $paths = []; + + /** + * @var array<int, Definition> + */ private $definitions = []; + + /** + * @var array<string, array<string, bool>> + */ private $controllers = []; - public function __construct(string $translatorServiceId = 'translator', string $debugCommandServiceId = 'console.command.translation_debug', string $updateCommandServiceId = 'console.command.translation_update', string $resolverServiceId = 'argument_resolver.service') + public function __construct(string $translatorServiceId = 'translator', string $debugCommandServiceId = 'console.command.translation_debug', string $updateCommandServiceId = 'console.command.translation_extract', string $resolverServiceId = 'argument_resolver.service') { + if (0 < \func_num_args()) { + trigger_deprecation('symfony/translation', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); + } + $this->translatorServiceId = $translatorServiceId; $this->debugCommandServiceId = $debugCommandServiceId; $this->updateCommandServiceId = $updateCommandServiceId; @@ -82,7 +98,7 @@ class TranslatorPathsPass extends AbstractRecursivePass } } - protected function processValue($value, $isRoot = false) + protected function processValue($value, bool $isRoot = false) { if ($value instanceof Reference) { if ((string) $value === $this->translatorServiceId) { diff --git a/vendor/symfony/translation/Dumper/CsvFileDumper.php b/vendor/symfony/translation/Dumper/CsvFileDumper.php index 8f7b032fa..0c8589af8 100644 --- a/vendor/symfony/translation/Dumper/CsvFileDumper.php +++ b/vendor/symfony/translation/Dumper/CsvFileDumper.php @@ -26,7 +26,7 @@ class CsvFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $handle = fopen('php://memory', 'r+'); @@ -43,11 +43,8 @@ class CsvFileDumper extends FileDumper /** * Sets the delimiter and escape character for CSV. - * - * @param string $delimiter Delimiter character - * @param string $enclosure Enclosure character */ - public function setCsvControl($delimiter = ';', $enclosure = '"') + public function setCsvControl(string $delimiter = ';', string $enclosure = '"') { $this->delimiter = $delimiter; $this->enclosure = $enclosure; diff --git a/vendor/symfony/translation/Dumper/DumperInterface.php b/vendor/symfony/translation/Dumper/DumperInterface.php index 445b70189..7cdaef515 100644 --- a/vendor/symfony/translation/Dumper/DumperInterface.php +++ b/vendor/symfony/translation/Dumper/DumperInterface.php @@ -26,5 +26,5 @@ interface DumperInterface * * @param array $options Options that are used by the dumper */ - public function dump(MessageCatalogue $messages, $options = []); + public function dump(MessageCatalogue $messages, array $options = []); } diff --git a/vendor/symfony/translation/Dumper/FileDumper.php b/vendor/symfony/translation/Dumper/FileDumper.php index 87d0c69d7..0e1084519 100644 --- a/vendor/symfony/translation/Dumper/FileDumper.php +++ b/vendor/symfony/translation/Dumper/FileDumper.php @@ -37,31 +37,15 @@ abstract class FileDumper implements DumperInterface * * @param string $relativePathTemplate A template for the relative paths to files */ - public function setRelativePathTemplate($relativePathTemplate) + public function setRelativePathTemplate(string $relativePathTemplate) { $this->relativePathTemplate = $relativePathTemplate; } - /** - * Sets backup flag. - * - * @param bool $backup - * - * @deprecated since Symfony 4.1 - */ - public function setBackup($backup) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1.', __METHOD__), \E_USER_DEPRECATED); - - if (false !== $backup) { - throw new \LogicException('The backup feature is no longer supported.'); - } - } - /** * {@inheritdoc} */ - public function dump(MessageCatalogue $messages, $options = []) + public function dump(MessageCatalogue $messages, array $options = []) { if (!\array_key_exists('path', $options)) { throw new InvalidArgumentException('The file dumper needs a path option.'); @@ -103,16 +87,14 @@ abstract class FileDumper implements DumperInterface /** * Transforms a domain of a message catalogue to its string representation. * - * @param string $domain - * - * @return string representation + * @return string */ - abstract public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []); + abstract public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []); /** * Gets the file extension of the dumper. * - * @return string file extension + * @return string */ abstract protected function getExtension(); diff --git a/vendor/symfony/translation/Dumper/IcuResFileDumper.php b/vendor/symfony/translation/Dumper/IcuResFileDumper.php index 44104eb60..12a7a8cfc 100644 --- a/vendor/symfony/translation/Dumper/IcuResFileDumper.php +++ b/vendor/symfony/translation/Dumper/IcuResFileDumper.php @@ -28,7 +28,7 @@ class IcuResFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $data = $indexes = $resources = ''; diff --git a/vendor/symfony/translation/Dumper/IniFileDumper.php b/vendor/symfony/translation/Dumper/IniFileDumper.php index 45ff9614b..93c900a4a 100644 --- a/vendor/symfony/translation/Dumper/IniFileDumper.php +++ b/vendor/symfony/translation/Dumper/IniFileDumper.php @@ -23,7 +23,7 @@ class IniFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $output = ''; diff --git a/vendor/symfony/translation/Dumper/JsonFileDumper.php b/vendor/symfony/translation/Dumper/JsonFileDumper.php index c6c3163b2..34c0b5694 100644 --- a/vendor/symfony/translation/Dumper/JsonFileDumper.php +++ b/vendor/symfony/translation/Dumper/JsonFileDumper.php @@ -23,7 +23,7 @@ class JsonFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $flags = $options['json_encoding'] ?? \JSON_PRETTY_PRINT; diff --git a/vendor/symfony/translation/Dumper/MoFileDumper.php b/vendor/symfony/translation/Dumper/MoFileDumper.php index 9bed418f2..f52206ee3 100644 --- a/vendor/symfony/translation/Dumper/MoFileDumper.php +++ b/vendor/symfony/translation/Dumper/MoFileDumper.php @@ -24,7 +24,7 @@ class MoFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $sources = $targets = $sourceOffsets = $targetOffsets = ''; $offsets = []; diff --git a/vendor/symfony/translation/Dumper/PhpFileDumper.php b/vendor/symfony/translation/Dumper/PhpFileDumper.php index e77afc2fb..6163b5297 100644 --- a/vendor/symfony/translation/Dumper/PhpFileDumper.php +++ b/vendor/symfony/translation/Dumper/PhpFileDumper.php @@ -23,7 +23,7 @@ class PhpFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { return "<?php\n\nreturn ".var_export($messages->all($domain), true).";\n"; } diff --git a/vendor/symfony/translation/Dumper/PoFileDumper.php b/vendor/symfony/translation/Dumper/PoFileDumper.php index 1a723f2d0..0d822818c 100644 --- a/vendor/symfony/translation/Dumper/PoFileDumper.php +++ b/vendor/symfony/translation/Dumper/PoFileDumper.php @@ -23,7 +23,7 @@ class PoFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $output = 'msgid ""'."\n"; $output .= 'msgstr ""'."\n"; diff --git a/vendor/symfony/translation/Dumper/QtFileDumper.php b/vendor/symfony/translation/Dumper/QtFileDumper.php index 79a64b243..406e9f006 100644 --- a/vendor/symfony/translation/Dumper/QtFileDumper.php +++ b/vendor/symfony/translation/Dumper/QtFileDumper.php @@ -23,7 +23,7 @@ class QtFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $dom = new \DOMDocument('1.0', 'utf-8'); $dom->formatOutput = true; diff --git a/vendor/symfony/translation/Dumper/XliffFileDumper.php b/vendor/symfony/translation/Dumper/XliffFileDumper.php index 37e162aa9..f7dbdcddf 100644 --- a/vendor/symfony/translation/Dumper/XliffFileDumper.php +++ b/vendor/symfony/translation/Dumper/XliffFileDumper.php @@ -24,7 +24,7 @@ class XliffFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { $xliffVersion = '1.2'; if (\array_key_exists('xliff_version', $options)) { diff --git a/vendor/symfony/translation/Dumper/YamlFileDumper.php b/vendor/symfony/translation/Dumper/YamlFileDumper.php index 520ae3340..0b21e8c83 100644 --- a/vendor/symfony/translation/Dumper/YamlFileDumper.php +++ b/vendor/symfony/translation/Dumper/YamlFileDumper.php @@ -33,7 +33,7 @@ class YamlFileDumper extends FileDumper /** * {@inheritdoc} */ - public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []) + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) { if (!class_exists(Yaml::class)) { throw new LogicException('Dumping translations in the YAML format requires the Symfony Yaml component.'); diff --git a/vendor/symfony/translation/Exception/IncompleteDsnException.php b/vendor/symfony/translation/Exception/IncompleteDsnException.php new file mode 100644 index 000000000..cb0ce027e --- /dev/null +++ b/vendor/symfony/translation/Exception/IncompleteDsnException.php @@ -0,0 +1,24 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Exception; + +class IncompleteDsnException extends InvalidArgumentException +{ + public function __construct(string $message, string $dsn = null, \Throwable $previous = null) + { + if ($dsn) { + $message = sprintf('Invalid "%s" provider DSN: ', $dsn).$message; + } + + parent::__construct($message, 0, $previous); + } +} diff --git a/vendor/symfony/translation/Exception/MissingRequiredOptionException.php b/vendor/symfony/translation/Exception/MissingRequiredOptionException.php new file mode 100644 index 000000000..2b5f80806 --- /dev/null +++ b/vendor/symfony/translation/Exception/MissingRequiredOptionException.php @@ -0,0 +1,25 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Exception; + +/** + * @author Oskar Stark <oskarstark@googlemail.com> + */ +class MissingRequiredOptionException extends IncompleteDsnException +{ + public function __construct(string $option, string $dsn = null, \Throwable $previous = null) + { + $message = sprintf('The option "%s" is required but missing.', $option); + + parent::__construct($message, $dsn, $previous); + } +} diff --git a/vendor/symfony/translation/Exception/ProviderException.php b/vendor/symfony/translation/Exception/ProviderException.php new file mode 100644 index 000000000..571920da3 --- /dev/null +++ b/vendor/symfony/translation/Exception/ProviderException.php @@ -0,0 +1,41 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Exception; + +use Symfony\Contracts\HttpClient\ResponseInterface; + +/** + * @author Fabien Potencier <fabien@symfony.com> + */ +class ProviderException extends RuntimeException implements ProviderExceptionInterface +{ + private $response; + private $debug; + + public function __construct(string $message, ResponseInterface $response, int $code = 0, \Exception $previous = null) + { + $this->response = $response; + $this->debug = $response->getInfo('debug') ?? ''; + + parent::__construct($message, $code, $previous); + } + + public function getResponse(): ResponseInterface + { + return $this->response; + } + + public function getDebug(): string + { + return $this->debug; + } +} diff --git a/vendor/symfony/translation/Exception/ProviderExceptionInterface.php b/vendor/symfony/translation/Exception/ProviderExceptionInterface.php new file mode 100644 index 000000000..922e82726 --- /dev/null +++ b/vendor/symfony/translation/Exception/ProviderExceptionInterface.php @@ -0,0 +1,23 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Exception; + +/** + * @author Fabien Potencier <fabien@symfony.com> + */ +interface ProviderExceptionInterface extends ExceptionInterface +{ + /* + * Returns debug info coming from the Symfony\Contracts\HttpClient\ResponseInterface + */ + public function getDebug(): string; +} diff --git a/vendor/symfony/translation/Exception/UnsupportedSchemeException.php b/vendor/symfony/translation/Exception/UnsupportedSchemeException.php new file mode 100644 index 000000000..7fbaa8f04 --- /dev/null +++ b/vendor/symfony/translation/Exception/UnsupportedSchemeException.php @@ -0,0 +1,54 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Exception; + +use Symfony\Component\Translation\Bridge; +use Symfony\Component\Translation\Provider\Dsn; + +class UnsupportedSchemeException extends LogicException +{ + private const SCHEME_TO_PACKAGE_MAP = [ + 'crowdin' => [ + 'class' => Bridge\Crowdin\CrowdinProviderFactory::class, + 'package' => 'symfony/crowdin-translation-provider', + ], + 'loco' => [ + 'class' => Bridge\Loco\LocoProviderFactory::class, + 'package' => 'symfony/loco-translation-provider', + ], + 'lokalise' => [ + 'class' => Bridge\Lokalise\LokaliseProviderFactory::class, + 'package' => 'symfony/lokalise-translation-provider', + ], + ]; + + public function __construct(Dsn $dsn, string $name = null, array $supported = []) + { + $provider = $dsn->getScheme(); + if (false !== $pos = strpos($provider, '+')) { + $provider = substr($provider, 0, $pos); + } + $package = self::SCHEME_TO_PACKAGE_MAP[$provider] ?? null; + if ($package && !class_exists($package['class'])) { + parent::__construct(sprintf('Unable to synchronize translations via "%s" as the provider is not installed; try running "composer require %s".', $provider, $package['package'])); + + return; + } + + $message = sprintf('The "%s" scheme is not supported', $dsn->getScheme()); + if ($name && $supported) { + $message .= sprintf('; supported schemes for translation provider "%s" are: "%s"', $name, implode('", "', $supported)); + } + + parent::__construct($message.'.'); + } +} diff --git a/vendor/symfony/translation/Extractor/AbstractFileExtractor.php b/vendor/symfony/translation/Extractor/AbstractFileExtractor.php index 618df7324..3bc878348 100644 --- a/vendor/symfony/translation/Extractor/AbstractFileExtractor.php +++ b/vendor/symfony/translation/Extractor/AbstractFileExtractor.php @@ -49,13 +49,11 @@ abstract class AbstractFileExtractor } /** - * @param string $file - * * @return bool * * @throws InvalidArgumentException */ - protected function isFile($file) + protected function isFile(string $file) { if (!is_file($file)) { throw new InvalidArgumentException(sprintf('The "%s" file does not exist.', $file)); @@ -65,16 +63,14 @@ abstract class AbstractFileExtractor } /** - * @param string $file - * * @return bool */ - abstract protected function canBeExtracted($file); + abstract protected function canBeExtracted(string $file); /** * @param string|array $resource Files, a file or a directory * - * @return iterable files to be extracted + * @return iterable */ abstract protected function extractFromDirectory($resource); } diff --git a/vendor/symfony/translation/Extractor/ChainExtractor.php b/vendor/symfony/translation/Extractor/ChainExtractor.php index 2683f5d24..95dcf157c 100644 --- a/vendor/symfony/translation/Extractor/ChainExtractor.php +++ b/vendor/symfony/translation/Extractor/ChainExtractor.php @@ -29,10 +29,8 @@ class ChainExtractor implements ExtractorInterface /** * Adds a loader to the translation extractor. - * - * @param string $format The format of the loader */ - public function addExtractor($format, ExtractorInterface $extractor) + public function addExtractor(string $format, ExtractorInterface $extractor) { $this->extractors[$format] = $extractor; } @@ -40,7 +38,7 @@ class ChainExtractor implements ExtractorInterface /** * {@inheritdoc} */ - public function setPrefix($prefix) + public function setPrefix(string $prefix) { foreach ($this->extractors as $extractor) { $extractor->setPrefix($prefix); diff --git a/vendor/symfony/translation/Extractor/ExtractorInterface.php b/vendor/symfony/translation/Extractor/ExtractorInterface.php index 34e6b2d6e..e1db8a9c8 100644 --- a/vendor/symfony/translation/Extractor/ExtractorInterface.php +++ b/vendor/symfony/translation/Extractor/ExtractorInterface.php @@ -30,8 +30,6 @@ interface ExtractorInterface /** * Sets the prefix that should be used for new found messages. - * - * @param string $prefix The prefix */ - public function setPrefix($prefix); + public function setPrefix(string $prefix); } diff --git a/vendor/symfony/translation/Extractor/PhpExtractor.php b/vendor/symfony/translation/Extractor/PhpExtractor.php index e0622e6a8..38c08d548 100644 --- a/vendor/symfony/translation/Extractor/PhpExtractor.php +++ b/vendor/symfony/translation/Extractor/PhpExtractor.php @@ -27,15 +27,11 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface /** * Prefix for new found message. - * - * @var string */ private $prefix = ''; /** * The sequence that captures translation messages. - * - * @var array */ protected $sequences = [ [ @@ -50,25 +46,83 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface ], [ '->', - 'transChoice', + 'trans', + '(', + self::MESSAGE_TOKEN, + ], + [ + 'new', + 'TranslatableMessage', '(', self::MESSAGE_TOKEN, - ',', - self::METHOD_ARGUMENTS_TOKEN, ',', self::METHOD_ARGUMENTS_TOKEN, ',', self::DOMAIN_TOKEN, ], [ - '->', - 'trans', + 'new', + 'TranslatableMessage', '(', self::MESSAGE_TOKEN, ], [ - '->', - 'transChoice', + 'new', + '\\', + 'Symfony', + '\\', + 'Component', + '\\', + 'Translation', + '\\', + 'TranslatableMessage', + '(', + self::MESSAGE_TOKEN, + ',', + self::METHOD_ARGUMENTS_TOKEN, + ',', + self::DOMAIN_TOKEN, + ], + [ + 'new', + '\Symfony\Component\Translation\TranslatableMessage', + '(', + self::MESSAGE_TOKEN, + ',', + self::METHOD_ARGUMENTS_TOKEN, + ',', + self::DOMAIN_TOKEN, + ], + [ + 'new', + '\\', + 'Symfony', + '\\', + 'Component', + '\\', + 'Translation', + '\\', + 'TranslatableMessage', + '(', + self::MESSAGE_TOKEN, + ], + [ + 'new', + '\Symfony\Component\Translation\TranslatableMessage', + '(', + self::MESSAGE_TOKEN, + ], + [ + 't', + '(', + self::MESSAGE_TOKEN, + ',', + self::METHOD_ARGUMENTS_TOKEN, + ',', + self::DOMAIN_TOKEN, + ], + [ + 't', '(', self::MESSAGE_TOKEN, ], @@ -90,7 +144,7 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface /** * {@inheritdoc} */ - public function setPrefix($prefix) + public function setPrefix(string $prefix) { $this->prefix = $prefix; } @@ -207,17 +261,9 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface /** * Extracts trans message from PHP tokens. - * - * @param array $tokens - * @param string $filename */ - protected function parseTokens($tokens, MessageCatalogue $catalog/* , string $filename */) + protected function parseTokens(array $tokens, MessageCatalogue $catalog, string $filename) { - if (\func_num_args() < 3 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { - @trigger_error(sprintf('The "%s()" method will have a new "string $filename" argument in version 5.0, not defining it is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED); - } - $filename = 2 < \func_num_args() ? func_get_arg(2) : ''; - $tokenIterator = new \ArrayIterator($tokens); for ($key = 0; $key < $tokenIterator->count(); ++$key) { @@ -265,13 +311,11 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface } /** - * @param string $file - * * @return bool * * @throws \InvalidArgumentException */ - protected function canBeExtracted($file) + protected function canBeExtracted(string $file) { return $this->isFile($file) && 'php' === pathinfo($file, \PATHINFO_EXTENSION); } @@ -281,6 +325,10 @@ class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface */ protected function extractFromDirectory($directory) { + if (!class_exists(Finder::class)) { + throw new \LogicException(sprintf('You cannot use "%s" as the "symfony/finder" package is not installed. Try running "composer require symfony/finder".', static::class)); + } + $finder = new Finder(); return $finder->files()->name('*.php')->in($directory); diff --git a/vendor/symfony/translation/Extractor/PhpStringTokenParser.php b/vendor/symfony/translation/Extractor/PhpStringTokenParser.php index f468fe5ea..d114cc738 100644 --- a/vendor/symfony/translation/Extractor/PhpStringTokenParser.php +++ b/vendor/symfony/translation/Extractor/PhpStringTokenParser.php @@ -65,9 +65,9 @@ class PhpStringTokenParser * * @param string $str String token content * - * @return string The parsed string + * @return string */ - public static function parse($str) + public static function parse(string $str) { $bLength = 0; if ('b' === $str[0]) { @@ -91,9 +91,9 @@ class PhpStringTokenParser * @param string $str String without quotes * @param string|null $quote Quote type * - * @return string String with escape sequences parsed + * @return string */ - public static function parseEscapeSequences($str, $quote) + public static function parseEscapeSequences(string $str, string $quote = null) { if (null !== $quote) { $str = str_replace('\\'.$quote, $quote, $str); @@ -125,9 +125,9 @@ class PhpStringTokenParser * @param string $startToken Doc string start token content (<<<SMTHG) * @param string $str String token content * - * @return string Parsed string + * @return string */ - public static function parseDocString($startToken, $str) + public static function parseDocString(string $startToken, string $str) { // strip last newline (thanks tokenizer for sticking it into the string!) $str = preg_replace('~(\r\n|\n|\r)$~', '', $str); diff --git a/vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php b/vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php deleted file mode 100644 index 621dbb292..000000000 --- a/vendor/symfony/translation/Formatter/ChoiceMessageFormatterInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Formatter; - -/** - * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> - * - * @deprecated since Symfony 4.2, use MessageFormatterInterface::format() with a %count% parameter instead - */ -interface ChoiceMessageFormatterInterface -{ - /** - * Formats a localized message pattern with given arguments. - * - * @param string $message The message (may also be an object that can be cast to string) - * @param int $number The number to use to find the indice of the message - * @param string $locale The message locale - * @param array $parameters An array of parameters for the message - * - * @return string - */ - public function choiceFormat($message, $number, $locale, array $parameters = []); -} diff --git a/vendor/symfony/translation/Formatter/MessageFormatter.php b/vendor/symfony/translation/Formatter/MessageFormatter.php index 785d6f226..040796483 100644 --- a/vendor/symfony/translation/Formatter/MessageFormatter.php +++ b/vendor/symfony/translation/Formatter/MessageFormatter.php @@ -12,8 +12,6 @@ namespace Symfony\Component\Translation\Formatter; use Symfony\Component\Translation\IdentityTranslator; -use Symfony\Component\Translation\MessageSelector; -use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface; // Help opcache.preload discover always-needed symbols @@ -22,7 +20,7 @@ class_exists(IntlFormatter::class); /** * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> */ -class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterface, ChoiceMessageFormatterInterface +class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterface { private $translator; private $intlFormatter; @@ -30,14 +28,8 @@ class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterf /** * @param TranslatorInterface|null $translator An identity translator to use as selector for pluralization */ - public function __construct($translator = null, IntlFormatterInterface $intlFormatter = null) + public function __construct(TranslatorInterface $translator = null, IntlFormatterInterface $intlFormatter = null) { - if ($translator instanceof MessageSelector) { - $translator = new IdentityTranslator($translator); - } elseif (null !== $translator && !$translator instanceof TranslatorInterface && !$translator instanceof LegacyTranslatorInterface) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, TranslatorInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator))); - } - $this->translator = $translator ?? new IdentityTranslator(); $this->intlFormatter = $intlFormatter ?? new IntlFormatter(); } @@ -45,7 +37,7 @@ class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterf /** * {@inheritdoc} */ - public function format($message, $locale, array $parameters = []) + public function format(string $message, string $locale, array $parameters = []) { if ($this->translator instanceof TranslatorInterface) { return $this->translator->trans($message, $parameters, null, $locale); @@ -61,22 +53,4 @@ class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterf { return $this->intlFormatter->formatIntl($message, $locale, $parameters); } - - /** - * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use format() with a %count% parameter instead - */ - public function choiceFormat($message, $number, $locale, array $parameters = []) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use the format() one instead with a %%count%% parameter.', __METHOD__), \E_USER_DEPRECATED); - - $parameters = ['%count%' => $number] + $parameters; - - if ($this->translator instanceof TranslatorInterface) { - return $this->format($message, $locale, $parameters); - } - - return $this->format($this->translator->transChoice($message, $number, [], null, $locale), $locale, $parameters); - } } diff --git a/vendor/symfony/translation/Formatter/MessageFormatterInterface.php b/vendor/symfony/translation/Formatter/MessageFormatterInterface.php index 370c05586..b85dbfd11 100644 --- a/vendor/symfony/translation/Formatter/MessageFormatterInterface.php +++ b/vendor/symfony/translation/Formatter/MessageFormatterInterface.php @@ -26,5 +26,5 @@ interface MessageFormatterInterface * * @return string */ - public function format($message, $locale, array $parameters = []); + public function format(string $message, string $locale, array $parameters = []); } diff --git a/vendor/symfony/translation/IdentityTranslator.php b/vendor/symfony/translation/IdentityTranslator.php index 864339615..46875edf2 100644 --- a/vendor/symfony/translation/IdentityTranslator.php +++ b/vendor/symfony/translation/IdentityTranslator.php @@ -11,7 +11,7 @@ namespace Symfony\Component\Translation; -use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface; +use Symfony\Contracts\Translation\LocaleAwareInterface; use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorTrait; @@ -20,58 +20,7 @@ use Symfony\Contracts\Translation\TranslatorTrait; * * @author Fabien Potencier <fabien@symfony.com> */ -class IdentityTranslator implements LegacyTranslatorInterface, TranslatorInterface +class IdentityTranslator implements TranslatorInterface, LocaleAwareInterface { - use TranslatorTrait { - trans as private doTrans; - setLocale as private doSetLocale; - } - - private $selector; - - public function __construct(MessageSelector $selector = null) - { - $this->selector = $selector; - - if (__CLASS__ !== static::class) { - @trigger_error(sprintf('Calling "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); - } - } - - /** - * {@inheritdoc} - */ - public function trans($id, array $parameters = [], $domain = null, $locale = null) - { - return $this->doTrans($id, $parameters, $domain, $locale); - } - - /** - * {@inheritdoc} - */ - public function setLocale($locale) - { - $this->doSetLocale($locale); - } - - /** - * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use the trans() method instead with a %count% parameter - */ - public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use the trans() one instead with a "%%count%%" parameter.', __METHOD__), \E_USER_DEPRECATED); - - if ($this->selector) { - return strtr($this->selector->choose((string) $id, $number, $locale ?: $this->getLocale()), $parameters); - } - - return $this->trans($id, ['%count%' => $number] + $parameters, $domain, $locale); - } - - private function getPluralizationRule(float $number, string $locale): int - { - return PluralizationRules::get($number, $locale, false); - } + use TranslatorTrait; } diff --git a/vendor/symfony/translation/Interval.php b/vendor/symfony/translation/Interval.php deleted file mode 100644 index bb6b164e8..000000000 --- a/vendor/symfony/translation/Interval.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.2, use IdentityTranslator instead.', Interval::class), \E_USER_DEPRECATED); - -use Symfony\Component\Translation\Exception\InvalidArgumentException; - -/** - * Tests if a given number belongs to a given math interval. - * - * An interval can represent a finite set of numbers: - * - * {1,2,3,4} - * - * An interval can represent numbers between two numbers: - * - * [1, +Inf] - * ]-1,2[ - * - * The left delimiter can be [ (inclusive) or ] (exclusive). - * The right delimiter can be [ (exclusive) or ] (inclusive). - * Beside numbers, you can use -Inf and +Inf for the infinite. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @see http://en.wikipedia.org/wiki/Interval_%28mathematics%29#The_ISO_notation - * @deprecated since Symfony 4.2, use IdentityTranslator instead - */ -class Interval -{ - /** - * Tests if the given number is in the math interval. - * - * @param int $number A number - * @param string $interval An interval - * - * @return bool - * - * @throws InvalidArgumentException - */ - public static function test($number, $interval) - { - $interval = trim($interval); - - if (!preg_match('/^'.self::getIntervalRegexp().'$/x', $interval, $matches)) { - throw new InvalidArgumentException(sprintf('"%s" is not a valid interval.', $interval)); - } - - if ($matches[1]) { - foreach (explode(',', $matches[2]) as $n) { - if ($number == $n) { - return true; - } - } - } else { - $leftNumber = self::convertNumber($matches['left']); - $rightNumber = self::convertNumber($matches['right']); - - return - ('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber) - && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber) - ; - } - - return false; - } - - /** - * Returns a Regexp that matches valid intervals. - * - * @return string A Regexp (without the delimiters) - */ - public static function getIntervalRegexp() - { - return <<<EOF - ({\s* - (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*) - \s*}) - - | - - (?P<left_delimiter>[\[\]]) - \s* - (?P<left>-Inf|\-?\d+(\.\d+)?) - \s*,\s* - (?P<right>\+?Inf|\-?\d+(\.\d+)?) - \s* - (?P<right_delimiter>[\[\]]) -EOF; - } - - private static function convertNumber(string $number): float - { - if ('-Inf' === $number) { - return log(0); - } elseif ('+Inf' === $number || 'Inf' === $number) { - return -log(0); - } - - return (float) $number; - } -} diff --git a/vendor/symfony/translation/Loader/ArrayLoader.php b/vendor/symfony/translation/Loader/ArrayLoader.php index 2e9a4285e..0758da8b5 100644 --- a/vendor/symfony/translation/Loader/ArrayLoader.php +++ b/vendor/symfony/translation/Loader/ArrayLoader.php @@ -23,7 +23,7 @@ class ArrayLoader implements LoaderInterface /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { $resource = $this->flatten($resource); $catalogue = new MessageCatalogue($locale); diff --git a/vendor/symfony/translation/Loader/CsvFileLoader.php b/vendor/symfony/translation/Loader/CsvFileLoader.php index db17bd563..8d5d4db9a 100644 --- a/vendor/symfony/translation/Loader/CsvFileLoader.php +++ b/vendor/symfony/translation/Loader/CsvFileLoader.php @@ -27,7 +27,7 @@ class CsvFileLoader extends FileLoader /** * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { $messages = []; @@ -55,12 +55,8 @@ class CsvFileLoader extends FileLoader /** * Sets the delimiter, enclosure, and escape character for CSV. - * - * @param string $delimiter Delimiter character - * @param string $enclosure Enclosure character - * @param string $escape Escape character */ - public function setCsvControl($delimiter = ';', $enclosure = '"', $escape = '\\') + public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '\\') { $this->delimiter = $delimiter; $this->enclosure = $enclosure; diff --git a/vendor/symfony/translation/Loader/FileLoader.php b/vendor/symfony/translation/Loader/FileLoader.php index 42c687d22..4725ea6d6 100644 --- a/vendor/symfony/translation/Loader/FileLoader.php +++ b/vendor/symfony/translation/Loader/FileLoader.php @@ -23,7 +23,7 @@ abstract class FileLoader extends ArrayLoader /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { if (!stream_is_local($resource)) { throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); @@ -55,11 +55,9 @@ abstract class FileLoader extends ArrayLoader } /** - * @param string $resource - * * @return array * * @throws InvalidResourceException if stream content has an invalid format */ - abstract protected function loadResource($resource); + abstract protected function loadResource(string $resource); } diff --git a/vendor/symfony/translation/Loader/IcuDatFileLoader.php b/vendor/symfony/translation/Loader/IcuDatFileLoader.php index dfdabc9d4..2a1aecc60 100644 --- a/vendor/symfony/translation/Loader/IcuDatFileLoader.php +++ b/vendor/symfony/translation/Loader/IcuDatFileLoader.php @@ -26,7 +26,7 @@ class IcuDatFileLoader extends IcuResFileLoader /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { if (!stream_is_local($resource.'.dat')) { throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); diff --git a/vendor/symfony/translation/Loader/IcuResFileLoader.php b/vendor/symfony/translation/Loader/IcuResFileLoader.php index 126556fee..7e3391ecb 100644 --- a/vendor/symfony/translation/Loader/IcuResFileLoader.php +++ b/vendor/symfony/translation/Loader/IcuResFileLoader.php @@ -26,7 +26,7 @@ class IcuResFileLoader implements LoaderInterface /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { if (!stream_is_local($resource)) { throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); @@ -73,9 +73,9 @@ class IcuResFileLoader implements LoaderInterface * @param array $messages Used internally for recursive calls * @param string $path Current path being parsed, used internally for recursive calls * - * @return array the flattened ResourceBundle + * @return array */ - protected function flatten(\ResourceBundle $rb, array &$messages = [], $path = null) + protected function flatten(\ResourceBundle $rb, array &$messages = [], string $path = null) { foreach ($rb as $key => $value) { $nodePath = $path ? $path.'.'.$key : $key; diff --git a/vendor/symfony/translation/Loader/IniFileLoader.php b/vendor/symfony/translation/Loader/IniFileLoader.php index 11d9b272e..7398f7778 100644 --- a/vendor/symfony/translation/Loader/IniFileLoader.php +++ b/vendor/symfony/translation/Loader/IniFileLoader.php @@ -21,7 +21,7 @@ class IniFileLoader extends FileLoader /** * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { return parse_ini_file($resource, true); } diff --git a/vendor/symfony/translation/Loader/JsonFileLoader.php b/vendor/symfony/translation/Loader/JsonFileLoader.php index 8a8996b0d..5aefba072 100644 --- a/vendor/symfony/translation/Loader/JsonFileLoader.php +++ b/vendor/symfony/translation/Loader/JsonFileLoader.php @@ -23,7 +23,7 @@ class JsonFileLoader extends FileLoader /** * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { $messages = []; if ($data = file_get_contents($resource)) { diff --git a/vendor/symfony/translation/Loader/LoaderInterface.php b/vendor/symfony/translation/Loader/LoaderInterface.php index 1785402d9..96b0c0d85 100644 --- a/vendor/symfony/translation/Loader/LoaderInterface.php +++ b/vendor/symfony/translation/Loader/LoaderInterface.php @@ -29,10 +29,10 @@ interface LoaderInterface * @param string $locale A locale * @param string $domain The domain * - * @return MessageCatalogue A MessageCatalogue instance + * @return MessageCatalogue * * @throws NotFoundResourceException when the resource cannot be found * @throws InvalidResourceException when the resource cannot be loaded */ - public function load($resource, $locale, $domain = 'messages'); + public function load($resource, string $locale, string $domain = 'messages'); } diff --git a/vendor/symfony/translation/Loader/MoFileLoader.php b/vendor/symfony/translation/Loader/MoFileLoader.php index ce8611cdf..7fa2f2dcb 100644 --- a/vendor/symfony/translation/Loader/MoFileLoader.php +++ b/vendor/symfony/translation/Loader/MoFileLoader.php @@ -41,7 +41,7 @@ class MoFileLoader extends FileLoader * * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { $stream = fopen($resource, 'r'); diff --git a/vendor/symfony/translation/Loader/PhpFileLoader.php b/vendor/symfony/translation/Loader/PhpFileLoader.php index 2310740bd..40f64db27 100644 --- a/vendor/symfony/translation/Loader/PhpFileLoader.php +++ b/vendor/symfony/translation/Loader/PhpFileLoader.php @@ -23,7 +23,7 @@ class PhpFileLoader extends FileLoader /** * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(\ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) { self::$cache = null; diff --git a/vendor/symfony/translation/Loader/PoFileLoader.php b/vendor/symfony/translation/Loader/PoFileLoader.php index 5e460fbfb..ee143e203 100644 --- a/vendor/symfony/translation/Loader/PoFileLoader.php +++ b/vendor/symfony/translation/Loader/PoFileLoader.php @@ -60,7 +60,7 @@ class PoFileLoader extends FileLoader * * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { $stream = fopen($resource, 'r'); diff --git a/vendor/symfony/translation/Loader/QtFileLoader.php b/vendor/symfony/translation/Loader/QtFileLoader.php index 29567789e..9cf2fe976 100644 --- a/vendor/symfony/translation/Loader/QtFileLoader.php +++ b/vendor/symfony/translation/Loader/QtFileLoader.php @@ -15,6 +15,7 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\Translation\Exception\InvalidResourceException; use Symfony\Component\Translation\Exception\NotFoundResourceException; +use Symfony\Component\Translation\Exception\RuntimeException; use Symfony\Component\Translation\MessageCatalogue; /** @@ -27,8 +28,12 @@ class QtFileLoader implements LoaderInterface /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { + if (!class_exists(XmlUtils::class)) { + throw new RuntimeException('Loading translations from the QT format requires the Symfony Config component.'); + } + if (!stream_is_local($resource)) { throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); } diff --git a/vendor/symfony/translation/Loader/XliffFileLoader.php b/vendor/symfony/translation/Loader/XliffFileLoader.php index 35e2d9c10..5c9794a54 100644 --- a/vendor/symfony/translation/Loader/XliffFileLoader.php +++ b/vendor/symfony/translation/Loader/XliffFileLoader.php @@ -12,9 +12,12 @@ namespace Symfony\Component\Translation\Loader; use Symfony\Component\Config\Resource\FileResource; +use Symfony\Component\Config\Util\Exception\InvalidXmlException; +use Symfony\Component\Config\Util\Exception\XmlParsingException; use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\Translation\Exception\InvalidResourceException; use Symfony\Component\Translation\Exception\NotFoundResourceException; +use Symfony\Component\Translation\Exception\RuntimeException; use Symfony\Component\Translation\MessageCatalogue; use Symfony\Component\Translation\Util\XliffUtils; @@ -28,38 +31,53 @@ class XliffFileLoader implements LoaderInterface /** * {@inheritdoc} */ - public function load($resource, $locale, $domain = 'messages') + public function load($resource, string $locale, string $domain = 'messages') { - if (!stream_is_local($resource)) { - throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); + if (!class_exists(XmlUtils::class)) { + throw new RuntimeException('Loading translations from the Xliff format requires the Symfony Config component.'); } - if (!file_exists($resource)) { - throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource)); + if (!$this->isXmlString($resource)) { + if (!stream_is_local($resource)) { + throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource)); + } + + if (!file_exists($resource)) { + throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource)); + } + + if (!is_file($resource)) { + throw new InvalidResourceException(sprintf('This is neither a file nor an XLIFF string "%s".', $resource)); + } + } + + try { + if ($this->isXmlString($resource)) { + $dom = XmlUtils::parse($resource); + } else { + $dom = XmlUtils::loadFile($resource); + } + } catch (\InvalidArgumentException|XmlParsingException|InvalidXmlException $e) { + throw new InvalidResourceException(sprintf('Unable to load "%s": ', $resource).$e->getMessage(), $e->getCode(), $e); + } + + if ($errors = XliffUtils::validateSchema($dom)) { + throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: ', $resource).XliffUtils::getErrorsAsString($errors)); } $catalogue = new MessageCatalogue($locale); - $this->extract($resource, $catalogue, $domain); + $this->extract($dom, $catalogue, $domain); - if (class_exists(FileResource::class)) { + if (is_file($resource) && class_exists(FileResource::class)) { $catalogue->addResource(new FileResource($resource)); } return $catalogue; } - private function extract($resource, MessageCatalogue $catalogue, string $domain) + private function extract(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain) { - try { - $dom = XmlUtils::loadFile($resource); - } catch (\InvalidArgumentException $e) { - throw new InvalidResourceException(sprintf('Unable to load "%s": ', $resource).$e->getMessage(), $e->getCode(), $e); - } - $xliffVersion = XliffUtils::getVersionNumber($dom); - if ($errors = XliffUtils::validateSchema($dom)) { - throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: ', $resource).XliffUtils::getErrorsAsString($errors)); - } if ('1.2' === $xliffVersion) { $this->extractXliff1($dom, $catalogue, $domain); @@ -135,11 +153,12 @@ class XliffFileLoader implements LoaderInterface foreach ($xml->xpath('//xliff:unit') as $unit) { foreach ($unit->segment as $segment) { - $source = $segment->source; + $attributes = $unit->attributes(); + $source = $attributes['name'] ?? $segment->source; // If the xlf file has another encoding specified, try to convert it because // simple_xml will always return utf-8 encoded values - $target = $this->utf8ToCharset((string) ($segment->target ?? $source), $encoding); + $target = $this->utf8ToCharset((string) ($segment->target ?? $segment->source), $encoding); $catalogue->set((string) $source, $target, $domain); @@ -205,4 +224,9 @@ class XliffFileLoader implements LoaderInterface return $notes; } + + private function isXmlString(string $resource): bool + { + return 0 === strpos($resource, '<?xml'); + } } diff --git a/vendor/symfony/translation/Loader/YamlFileLoader.php b/vendor/symfony/translation/Loader/YamlFileLoader.php index b03c7b77d..8588e186a 100644 --- a/vendor/symfony/translation/Loader/YamlFileLoader.php +++ b/vendor/symfony/translation/Loader/YamlFileLoader.php @@ -29,7 +29,7 @@ class YamlFileLoader extends FileLoader /** * {@inheritdoc} */ - protected function loadResource($resource) + protected function loadResource(string $resource) { if (null === $this->yamlParser) { if (!class_exists(\Symfony\Component\Yaml\Parser::class)) { diff --git a/vendor/symfony/translation/LoggingTranslator.php b/vendor/symfony/translation/LoggingTranslator.php index d7b6fc4b3..6ccd48289 100644 --- a/vendor/symfony/translation/LoggingTranslator.php +++ b/vendor/symfony/translation/LoggingTranslator.php @@ -13,32 +13,24 @@ namespace Symfony\Component\Translation; use Psr\Log\LoggerInterface; use Symfony\Component\Translation\Exception\InvalidArgumentException; -use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface; use Symfony\Contracts\Translation\LocaleAwareInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> */ -class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterface, TranslatorBagInterface +class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface { - /** - * @var TranslatorInterface|TranslatorBagInterface - */ private $translator; - private $logger; /** - * @param TranslatorInterface $translator The translator must implement TranslatorBagInterface + * @param TranslatorInterface&TranslatorBagInterface&LocaleAwareInterface $translator The translator must implement TranslatorBagInterface */ - public function __construct($translator, LoggerInterface $logger) + public function __construct(TranslatorInterface $translator, LoggerInterface $logger) { - if (!$translator instanceof LegacyTranslatorInterface && !$translator instanceof TranslatorInterface) { - throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, TranslatorInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator))); - } if (!$translator instanceof TranslatorBagInterface || !$translator instanceof LocaleAwareInterface) { - throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', \get_class($translator))); + throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', get_debug_type($translator))); } $this->translator = $translator; @@ -48,29 +40,9 @@ class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterfac /** * {@inheritdoc} */ - public function trans($id, array $parameters = [], $domain = null, $locale = null) + public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null) { - $trans = $this->translator->trans($id, $parameters, $domain, $locale); - $this->log($id, $domain, $locale); - - return $trans; - } - - /** - * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use the trans() method instead with a %count% parameter - */ - public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use the trans() one instead with a "%%count%%" parameter.', __METHOD__), \E_USER_DEPRECATED); - - if ($this->translator instanceof TranslatorInterface) { - $trans = $this->translator->trans($id, ['%count%' => $number] + $parameters, $domain, $locale); - } else { - $trans = $this->translator->transChoice($id, $number, $parameters, $domain, $locale); - } - + $trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale); $this->log($id, $domain, $locale); return $trans; @@ -79,7 +51,7 @@ class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterfac /** * {@inheritdoc} */ - public function setLocale($locale) + public function setLocale(string $locale) { $prev = $this->translator->getLocale(); $this->translator->setLocale($locale); @@ -101,15 +73,23 @@ class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterfac /** * {@inheritdoc} */ - public function getCatalogue($locale = null) + public function getCatalogue(string $locale = null) { return $this->translator->getCatalogue($locale); } + /** + * {@inheritdoc} + */ + public function getCatalogues(): array + { + return $this->translator->getCatalogues(); + } + /** * Gets the fallback locales. * - * @return array The fallback locales + * @return array */ public function getFallbackLocales() { @@ -123,7 +103,7 @@ class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterfac /** * Passes through all unknown calls onto the translator object. */ - public function __call($method, $args) + public function __call(string $method, array $args) { return $this->translator->{$method}(...$args); } @@ -131,13 +111,12 @@ class LoggingTranslator implements TranslatorInterface, LegacyTranslatorInterfac /** * Logs for missing translations. */ - private function log(?string $id, ?string $domain, ?string $locale) + private function log(string $id, ?string $domain, ?string $locale) { if (null === $domain) { $domain = 'messages'; } - $id = (string) $id; $catalogue = $this->translator->getCatalogue($locale); if ($catalogue->defines($id, $domain)) { return; diff --git a/vendor/symfony/translation/MessageCatalogue.php b/vendor/symfony/translation/MessageCatalogue.php index b43b22d63..9da3b7f00 100644 --- a/vendor/symfony/translation/MessageCatalogue.php +++ b/vendor/symfony/translation/MessageCatalogue.php @@ -29,12 +29,8 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * @param array $messages An array of messages classified by domain */ - public function __construct(?string $locale, array $messages = []) + public function __construct(string $locale, array $messages = []) { - if (null === $locale) { - @trigger_error(sprintf('Passing "null" to the first argument of the "%s" method has been deprecated since Symfony 4.4 and will throw an error in 5.0.', __METHOD__), \E_USER_DEPRECATED); - } - $this->locale = $locale; $this->messages = $messages; } @@ -67,7 +63,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function all($domain = null) + public function all(string $domain = null) { if (null !== $domain) { // skip messages merge if intl-icu requested explicitly @@ -95,7 +91,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function set($id, $translation, $domain = 'messages') + public function set(string $id, string $translation, string $domain = 'messages') { $this->add([$id => $translation], $domain); } @@ -103,7 +99,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function has($id, $domain = 'messages') + public function has(string $id, string $domain = 'messages') { if (isset($this->messages[$domain][$id]) || isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id])) { return true; @@ -119,7 +115,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function defines($id, $domain = 'messages') + public function defines(string $id, string $domain = 'messages') { return isset($this->messages[$domain][$id]) || isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id]); } @@ -127,7 +123,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function get($id, $domain = 'messages') + public function get(string $id, string $domain = 'messages') { if (isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id])) { return $this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id]; @@ -147,7 +143,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function replace($messages, $domain = 'messages') + public function replace(array $messages, string $domain = 'messages') { unset($this->messages[$domain], $this->messages[$domain.self::INTL_DOMAIN_SUFFIX]); @@ -157,7 +153,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function add($messages, $domain = 'messages') + public function add(array $messages, string $domain = 'messages') { $altDomain = str_ends_with($domain, self::INTL_DOMAIN_SUFFIX) ? substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX)) : $domain.self::INTL_DOMAIN_SUFFIX; foreach ($messages as $id => $message) { @@ -256,7 +252,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function getMetadata($key = '', $domain = 'messages') + public function getMetadata(string $key = '', string $domain = 'messages') { if ('' == $domain) { return $this->metadata; @@ -278,7 +274,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function setMetadata($key, $value, $domain = 'messages') + public function setMetadata(string $key, $value, string $domain = 'messages') { $this->metadata[$domain][$key] = $value; } @@ -286,7 +282,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf /** * {@inheritdoc} */ - public function deleteMetadata($key = '', $domain = 'messages') + public function deleteMetadata(string $key = '', string $domain = 'messages') { if ('' == $domain) { $this->metadata = []; diff --git a/vendor/symfony/translation/MessageCatalogueInterface.php b/vendor/symfony/translation/MessageCatalogueInterface.php index 853ce7031..cf7746c23 100644 --- a/vendor/symfony/translation/MessageCatalogueInterface.php +++ b/vendor/symfony/translation/MessageCatalogueInterface.php @@ -25,14 +25,14 @@ interface MessageCatalogueInterface /** * Gets the catalogue locale. * - * @return string The locale + * @return string */ public function getLocale(); /** * Gets the domains. * - * @return array An array of domains + * @return array */ public function getDomains(); @@ -43,9 +43,9 @@ interface MessageCatalogueInterface * * @param string $domain The domain name * - * @return array An array of messages + * @return array */ - public function all($domain = null); + public function all(string $domain = null); /** * Sets a message translation. @@ -54,7 +54,7 @@ interface MessageCatalogueInterface * @param string $translation The messages translation * @param string $domain The domain name */ - public function set($id, $translation, $domain = 'messages'); + public function set(string $id, string $translation, string $domain = 'messages'); /** * Checks if a message has a translation. @@ -62,9 +62,9 @@ interface MessageCatalogueInterface * @param string $id The message id * @param string $domain The domain name * - * @return bool true if the message has a translation, false otherwise + * @return bool */ - public function has($id, $domain = 'messages'); + public function has(string $id, string $domain = 'messages'); /** * Checks if a message has a translation (it does not take into account the fallback mechanism). @@ -72,9 +72,9 @@ interface MessageCatalogueInterface * @param string $id The message id * @param string $domain The domain name * - * @return bool true if the message has a translation, false otherwise + * @return bool */ - public function defines($id, $domain = 'messages'); + public function defines(string $id, string $domain = 'messages'); /** * Gets a message translation. @@ -82,9 +82,9 @@ interface MessageCatalogueInterface * @param string $id The message id * @param string $domain The domain name * - * @return string The message translation + * @return string */ - public function get($id, $domain = 'messages'); + public function get(string $id, string $domain = 'messages'); /** * Sets translations for a given domain. @@ -92,7 +92,7 @@ interface MessageCatalogueInterface * @param array $messages An array of translations * @param string $domain The domain name */ - public function replace($messages, $domain = 'messages'); + public function replace(array $messages, string $domain = 'messages'); /** * Adds translations for a given domain. @@ -100,7 +100,7 @@ interface MessageCatalogueInterface * @param array $messages An array of translations * @param string $domain The domain name */ - public function add($messages, $domain = 'messages'); + public function add(array $messages, string $domain = 'messages'); /** * Merges translations from the given Catalogue into the current one. @@ -120,14 +120,14 @@ interface MessageCatalogueInterface /** * Gets the fallback catalogue. * - * @return self|null A MessageCatalogueInterface instance or null when no fallback has been set + * @return self|null */ public function getFallbackCatalogue(); /** * Returns an array of resources loaded to build this collection. * - * @return ResourceInterface[] An array of resources + * @return ResourceInterface[] */ public function getResources(); diff --git a/vendor/symfony/translation/MessageSelector.php b/vendor/symfony/translation/MessageSelector.php deleted file mode 100644 index 38de357a5..000000000 --- a/vendor/symfony/translation/MessageSelector.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation; - -@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.2, use IdentityTranslator instead.', MessageSelector::class), \E_USER_DEPRECATED); - -use Symfony\Component\Translation\Exception\InvalidArgumentException; - -/** - * MessageSelector. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Bernhard Schussek <bschussek@gmail.com> - * - * @deprecated since Symfony 4.2, use IdentityTranslator instead. - */ -class MessageSelector -{ - /** - * Given a message with different plural translations separated by a - * pipe (|), this method returns the correct portion of the message based - * on the given number, locale and the pluralization rules in the message - * itself. - * - * The message supports two different types of pluralization rules: - * - * interval: {0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples - * indexed: There is one apple|There are %count% apples - * - * The indexed solution can also contain labels (e.g. one: There is one apple). - * This is purely for making the translations more clear - it does not - * affect the functionality. - * - * The two methods can also be mixed: - * {0} There are no apples|one: There is one apple|more: There are %count% apples - * - * @param string $message The message being translated - * @param int|float $number The number of items represented for the message - * @param string $locale The locale to use for choosing - * - * @return string - * - * @throws InvalidArgumentException - */ - public function choose($message, $number, $locale) - { - $parts = []; - if (preg_match('/^\|++$/', $message)) { - $parts = explode('|', $message); - } elseif (preg_match_all('/(?:\|\||[^\|])++/', $message, $matches)) { - $parts = $matches[0]; - } - - $explicitRules = []; - $standardRules = []; - foreach ($parts as $part) { - $part = trim(str_replace('||', '|', $part)); - - if (preg_match('/^(?P<interval>'.Interval::getIntervalRegexp().')\s*(?P<message>.*?)$/xs', $part, $matches)) { - $explicitRules[$matches['interval']] = $matches['message']; - } elseif (preg_match('/^\w+\:\s*(.*?)$/', $part, $matches)) { - $standardRules[] = $matches[1]; - } else { - $standardRules[] = $part; - } - } - - // try to match an explicit rule, then fallback to the standard ones - foreach ($explicitRules as $interval => $m) { - if (Interval::test($number, $interval)) { - return $m; - } - } - - $position = PluralizationRules::get($number, $locale); - - if (!isset($standardRules[$position])) { - // when there's exactly one rule given, and that rule is a standard - // rule, use this rule - if (1 === \count($parts) && isset($standardRules[0])) { - return $standardRules[0]; - } - - throw new InvalidArgumentException(sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $message, $locale, $number)); - } - - return $standardRules[$position]; - } -} diff --git a/vendor/symfony/translation/MetadataAwareInterface.php b/vendor/symfony/translation/MetadataAwareInterface.php index e93c6fbc7..2216eed94 100644 --- a/vendor/symfony/translation/MetadataAwareInterface.php +++ b/vendor/symfony/translation/MetadataAwareInterface.php @@ -25,30 +25,22 @@ interface MetadataAwareInterface * domain and then by key. Passing an empty key will return an array with all * metadata for the given domain. * - * @param string $key The key - * @param string $domain The domain name - * * @return mixed The value that was set or an array with the domains/keys or null */ - public function getMetadata($key = '', $domain = 'messages'); + public function getMetadata(string $key = '', string $domain = 'messages'); /** * Adds metadata to a message domain. * - * @param string $key The key - * @param mixed $value The value - * @param string $domain The domain name + * @param mixed $value */ - public function setMetadata($key, $value, $domain = 'messages'); + public function setMetadata(string $key, $value, string $domain = 'messages'); /** * Deletes metadata for the given key and domain. * * Passing an empty domain will delete all metadata. Passing an empty key will * delete all metadata for the given domain. - * - * @param string $key The key - * @param string $domain The domain name */ - public function deleteMetadata($key = '', $domain = 'messages'); + public function deleteMetadata(string $key = '', string $domain = 'messages'); } diff --git a/vendor/symfony/translation/PluralizationRules.php b/vendor/symfony/translation/PluralizationRules.php deleted file mode 100644 index 84513a245..000000000 --- a/vendor/symfony/translation/PluralizationRules.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation; - -/** - * Returns the plural rules for a given locale. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.2, use IdentityTranslator instead - */ -class PluralizationRules -{ - private static $rules = []; - - /** - * Returns the plural position to use for the given locale and number. - * - * @param float $number The number - * @param string $locale The locale - * - * @return int The plural position - */ - public static function get($number, $locale/* , bool $triggerDeprecation = true */) - { - $number = abs($number); - - if (3 > \func_num_args() || func_get_arg(2)) { - @trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.2.', __CLASS__), \E_USER_DEPRECATED); - } - - if ('pt_BR' === $locale) { - // temporary set a locale for brazilian - $locale = 'xbr'; - } - - if ('en_US_POSIX' !== $locale && \strlen($locale) > 3) { - $locale = substr($locale, 0, -\strlen(strrchr($locale, '_'))); - } - - if (isset(self::$rules[$locale])) { - $return = self::$rules[$locale]($number); - - if (!\is_int($return) || $return < 0) { - return 0; - } - - return $return; - } - - /* - * The plural rules are derived from code of the Zend Framework (2010-09-25), - * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd). - * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) - */ - switch ($locale) { - case 'az': - case 'bo': - case 'dz': - case 'id': - case 'ja': - case 'jv': - case 'ka': - case 'km': - case 'kn': - case 'ko': - case 'ms': - case 'th': - case 'tr': - case 'vi': - case 'zh': - return 0; - - case 'af': - case 'bn': - case 'bg': - case 'ca': - case 'da': - case 'de': - case 'el': - case 'en': - case 'en_US_POSIX': - case 'eo': - case 'es': - case 'et': - case 'eu': - case 'fa': - case 'fi': - case 'fo': - case 'fur': - case 'fy': - case 'gl': - case 'gu': - case 'ha': - case 'he': - case 'hu': - case 'is': - case 'it': - case 'ku': - case 'lb': - case 'ml': - case 'mn': - case 'mr': - case 'nah': - case 'nb': - case 'ne': - case 'nl': - case 'nn': - case 'no': - case 'oc': - case 'om': - case 'or': - case 'pa': - case 'pap': - case 'ps': - case 'pt': - case 'so': - case 'sq': - case 'sv': - case 'sw': - case 'ta': - case 'te': - case 'tk': - case 'ur': - case 'zu': - return (1 == $number) ? 0 : 1; - - case 'am': - case 'bh': - case 'fil': - case 'fr': - case 'gun': - case 'hi': - case 'hy': - case 'ln': - case 'mg': - case 'nso': - case 'xbr': - case 'ti': - case 'wa': - return ($number < 2) ? 0 : 1; - - case 'be': - case 'bs': - case 'hr': - case 'ru': - case 'sh': - case 'sr': - case 'uk': - return ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); - - case 'cs': - case 'sk': - return (1 == $number) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2); - - case 'ga': - return (1 == $number) ? 0 : ((2 == $number) ? 1 : 2); - - case 'lt': - return ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); - - case 'sl': - return (1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 : (((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3)); - - case 'mk': - return (1 == $number % 10) ? 0 : 1; - - case 'mt': - return (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3)); - - case 'lv': - return (0 == $number) ? 0 : (((1 == $number % 10) && (11 != $number % 100)) ? 1 : 2); - - case 'pl': - return (1 == $number) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 1 : 2); - - case 'cy': - return (1 == $number) ? 0 : ((2 == $number) ? 1 : (((8 == $number) || (11 == $number)) ? 2 : 3)); - - case 'ro': - return (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2); - - case 'ar': - return (0 == $number) ? 0 : ((1 == $number) ? 1 : ((2 == $number) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : 5)))); - - default: - return 0; - } - } - - /** - * Overrides the default plural rule for a given locale. - * - * @param callable $rule A PHP callable - * @param string $locale The locale - */ - public static function set(callable $rule, $locale) - { - @trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.2.', __CLASS__), \E_USER_DEPRECATED); - - if ('pt_BR' === $locale) { - // temporary set a locale for brazilian - $locale = 'xbr'; - } - - if (\strlen($locale) > 3) { - $locale = substr($locale, 0, -\strlen(strrchr($locale, '_'))); - } - - self::$rules[$locale] = $rule; - } -} diff --git a/vendor/symfony/translation/Provider/AbstractProviderFactory.php b/vendor/symfony/translation/Provider/AbstractProviderFactory.php new file mode 100644 index 000000000..17442fde8 --- /dev/null +++ b/vendor/symfony/translation/Provider/AbstractProviderFactory.php @@ -0,0 +1,45 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\IncompleteDsnException; + +abstract class AbstractProviderFactory implements ProviderFactoryInterface +{ + public function supports(Dsn $dsn): bool + { + return \in_array($dsn->getScheme(), $this->getSupportedSchemes(), true); + } + + /** + * @return string[] + */ + abstract protected function getSupportedSchemes(): array; + + protected function getUser(Dsn $dsn): string + { + if (null === $user = $dsn->getUser()) { + throw new IncompleteDsnException('User is not set.', $dsn->getOriginalDsn()); + } + + return $user; + } + + protected function getPassword(Dsn $dsn): string + { + if (null === $password = $dsn->getPassword()) { + throw new IncompleteDsnException('Password is not set.', $dsn->getOriginalDsn()); + } + + return $password; + } +} diff --git a/vendor/symfony/translation/Provider/Dsn.php b/vendor/symfony/translation/Provider/Dsn.php new file mode 100644 index 000000000..820cabfb3 --- /dev/null +++ b/vendor/symfony/translation/Provider/Dsn.php @@ -0,0 +1,110 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\InvalidArgumentException; +use Symfony\Component\Translation\Exception\MissingRequiredOptionException; + +/** + * @author Fabien Potencier <fabien@symfony.com> + * @author Oskar Stark <oskarstark@googlemail.com> + */ +final class Dsn +{ + private $scheme; + private $host; + private $user; + private $password; + private $port; + private $path; + private $options; + private $originalDsn; + + public function __construct(string $dsn) + { + $this->originalDsn = $dsn; + + if (false === $parsedDsn = parse_url($dsn)) { + throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN is invalid.', $dsn)); + } + + if (!isset($parsedDsn['scheme'])) { + throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a scheme.', $dsn)); + } + $this->scheme = $parsedDsn['scheme']; + + if (!isset($parsedDsn['host'])) { + throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a host (use "default" by default).', $dsn)); + } + $this->host = $parsedDsn['host']; + + $this->user = '' !== ($parsedDsn['user'] ?? '') ? urldecode($parsedDsn['user']) : null; + $this->password = '' !== ($parsedDsn['pass'] ?? '') ? urldecode($parsedDsn['pass']) : null; + $this->port = $parsedDsn['port'] ?? null; + $this->path = $parsedDsn['path'] ?? null; + parse_str($parsedDsn['query'] ?? '', $this->options); + } + + public function getScheme(): string + { + return $this->scheme; + } + + public function getHost(): string + { + return $this->host; + } + + public function getUser(): ?string + { + return $this->user; + } + + public function getPassword(): ?string + { + return $this->password; + } + + public function getPort(int $default = null): ?int + { + return $this->port ?? $default; + } + + public function getOption(string $key, $default = null) + { + return $this->options[$key] ?? $default; + } + + public function getRequiredOption(string $key) + { + if (!\array_key_exists($key, $this->options) || '' === trim($this->options[$key])) { + throw new MissingRequiredOptionException($key); + } + + return $this->options[$key]; + } + + public function getOptions(): array + { + return $this->options; + } + + public function getPath(): ?string + { + return $this->path; + } + + public function getOriginalDsn(): string + { + return $this->originalDsn; + } +} diff --git a/vendor/symfony/translation/Provider/FilteringProvider.php b/vendor/symfony/translation/Provider/FilteringProvider.php new file mode 100644 index 000000000..5f970a2e5 --- /dev/null +++ b/vendor/symfony/translation/Provider/FilteringProvider.php @@ -0,0 +1,65 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\TranslatorBag; +use Symfony\Component\Translation\TranslatorBagInterface; + +/** + * Filters domains and locales between the Translator config values and those specific to each provider. + * + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +class FilteringProvider implements ProviderInterface +{ + private $provider; + private $locales; + private $domains; + + public function __construct(ProviderInterface $provider, array $locales, array $domains = []) + { + $this->provider = $provider; + $this->locales = $locales; + $this->domains = $domains; + } + + public function __toString(): string + { + return (string) $this->provider; + } + + /** + * {@inheritdoc} + */ + public function write(TranslatorBagInterface $translatorBag): void + { + $this->provider->write($translatorBag); + } + + public function read(array $domains, array $locales): TranslatorBag + { + $domains = !$this->domains ? $domains : array_intersect($this->domains, $domains); + $locales = array_intersect($this->locales, $locales); + + return $this->provider->read($domains, $locales); + } + + public function delete(TranslatorBagInterface $translatorBag): void + { + $this->provider->delete($translatorBag); + } + + public function getDomains(): array + { + return $this->domains; + } +} diff --git a/vendor/symfony/translation/Provider/NullProvider.php b/vendor/symfony/translation/Provider/NullProvider.php new file mode 100644 index 000000000..f00392ea0 --- /dev/null +++ b/vendor/symfony/translation/Provider/NullProvider.php @@ -0,0 +1,39 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\TranslatorBag; +use Symfony\Component\Translation\TranslatorBagInterface; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +class NullProvider implements ProviderInterface +{ + public function __toString(): string + { + return 'null'; + } + + public function write(TranslatorBagInterface $translatorBag, bool $override = false): void + { + } + + public function read(array $domains, array $locales): TranslatorBag + { + return new TranslatorBag(); + } + + public function delete(TranslatorBagInterface $translatorBag): void + { + } +} diff --git a/vendor/symfony/translation/Provider/NullProviderFactory.php b/vendor/symfony/translation/Provider/NullProviderFactory.php new file mode 100644 index 000000000..f350f1602 --- /dev/null +++ b/vendor/symfony/translation/Provider/NullProviderFactory.php @@ -0,0 +1,34 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\UnsupportedSchemeException; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +final class NullProviderFactory extends AbstractProviderFactory +{ + public function create(Dsn $dsn): ProviderInterface + { + if ('null' === $dsn->getScheme()) { + return new NullProvider(); + } + + throw new UnsupportedSchemeException($dsn, 'null', $this->getSupportedSchemes()); + } + + protected function getSupportedSchemes(): array + { + return ['null']; + } +} diff --git a/vendor/symfony/translation/Provider/ProviderFactoryInterface.php b/vendor/symfony/translation/Provider/ProviderFactoryInterface.php new file mode 100644 index 000000000..3fd4494b4 --- /dev/null +++ b/vendor/symfony/translation/Provider/ProviderFactoryInterface.php @@ -0,0 +1,26 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\IncompleteDsnException; +use Symfony\Component\Translation\Exception\UnsupportedSchemeException; + +interface ProviderFactoryInterface +{ + /** + * @throws UnsupportedSchemeException + * @throws IncompleteDsnException + */ + public function create(Dsn $dsn): ProviderInterface; + + public function supports(Dsn $dsn): bool; +} diff --git a/vendor/symfony/translation/Provider/ProviderInterface.php b/vendor/symfony/translation/Provider/ProviderInterface.php new file mode 100644 index 000000000..a32193f29 --- /dev/null +++ b/vendor/symfony/translation/Provider/ProviderInterface.php @@ -0,0 +1,32 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\TranslatorBag; +use Symfony\Component\Translation\TranslatorBagInterface; + +interface ProviderInterface +{ + public function __toString(): string; + + /** + * Translations available in the TranslatorBag only must be created. + * Translations available in both the TranslatorBag and on the provider + * must be overwritten. + * Translations available on the provider only must be kept. + */ + public function write(TranslatorBagInterface $translatorBag): void; + + public function read(array $domains, array $locales): TranslatorBag; + + public function delete(TranslatorBagInterface $translatorBag): void; +} diff --git a/vendor/symfony/translation/Provider/TranslationProviderCollection.php b/vendor/symfony/translation/Provider/TranslationProviderCollection.php new file mode 100644 index 000000000..61ac641cd --- /dev/null +++ b/vendor/symfony/translation/Provider/TranslationProviderCollection.php @@ -0,0 +1,57 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\InvalidArgumentException; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +final class TranslationProviderCollection +{ + /** + * @var array<string, ProviderInterface> + */ + private $providers; + + /** + * @param array<string, ProviderInterface> $providers + */ + public function __construct(iterable $providers) + { + $this->providers = \is_array($providers) ? $providers : iterator_to_array($providers); + } + + public function __toString(): string + { + return '['.implode(',', array_keys($this->providers)).']'; + } + + public function has(string $name): bool + { + return isset($this->providers[$name]); + } + + public function get(string $name): ProviderInterface + { + if (!$this->has($name)) { + throw new InvalidArgumentException(sprintf('Provider "%s" not found. Available: "%s".', $name, (string) $this)); + } + + return $this->providers[$name]; + } + + public function keys(): array + { + return array_keys($this->providers); + } +} diff --git a/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php b/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php new file mode 100644 index 000000000..81db3a5f1 --- /dev/null +++ b/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php @@ -0,0 +1,57 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Provider; + +use Symfony\Component\Translation\Exception\UnsupportedSchemeException; + +/** + * @author Mathieu Santostefano <msantostefano@protonmail.com> + */ +class TranslationProviderCollectionFactory +{ + private $factories; + private $enabledLocales; + + /** + * @param iterable<mixed, ProviderFactoryInterface> $factories + */ + public function __construct(iterable $factories, array $enabledLocales) + { + $this->factories = $factories; + $this->enabledLocales = $enabledLocales; + } + + public function fromConfig(array $config): TranslationProviderCollection + { + $providers = []; + foreach ($config as $name => $currentConfig) { + $providers[$name] = $this->fromDsnObject( + new Dsn($currentConfig['dsn']), + !$currentConfig['locales'] ? $this->enabledLocales : $currentConfig['locales'], + !$currentConfig['domains'] ? [] : $currentConfig['domains'] + ); + } + + return new TranslationProviderCollection($providers); + } + + public function fromDsnObject(Dsn $dsn, array $locales, array $domains = []): ProviderInterface + { + foreach ($this->factories as $factory) { + if ($factory->supports($dsn)) { + return new FilteringProvider($factory->create($dsn), $locales, $domains); + } + } + + throw new UnsupportedSchemeException($dsn); + } +} diff --git a/vendor/symfony/translation/PseudoLocalizationTranslator.php b/vendor/symfony/translation/PseudoLocalizationTranslator.php new file mode 100644 index 000000000..c769bdad0 --- /dev/null +++ b/vendor/symfony/translation/PseudoLocalizationTranslator.php @@ -0,0 +1,368 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation; + +use Symfony\Contracts\Translation\TranslatorInterface; + +/** + * This translator should only be used in a development environment. + */ +final class PseudoLocalizationTranslator implements TranslatorInterface +{ + private const EXPANSION_CHARACTER = '~'; + + private $translator; + private $accents; + private $expansionFactor; + private $brackets; + private $parseHTML; + + /** + * @var string[] + */ + private $localizableHTMLAttributes; + + /** + * Available options: + * * accents: + * type: boolean + * default: true + * description: replace ASCII characters of the translated string with accented versions or similar characters + * example: if true, "foo" => "ƒöö". + * + * * expansion_factor: + * type: float + * default: 1 + * validation: it must be greater than or equal to 1 + * description: expand the translated string by the given factor with spaces and tildes + * example: if 2, "foo" => "~foo ~" + * + * * brackets: + * type: boolean + * default: true + * description: wrap the translated string with brackets + * example: if true, "foo" => "[foo]" + * + * * parse_html: + * type: boolean + * default: false + * description: parse the translated string as HTML - looking for HTML tags has a performance impact but allows to preserve them from alterations - it also allows to compute the visible translated string length which is useful to correctly expand ot when it contains HTML + * warning: unclosed tags are unsupported, they will be fixed (closed) by the parser - eg, "foo <div>bar" => "foo <div>bar</div>" + * + * * localizable_html_attributes: + * type: string[] + * default: [] + * description: the list of HTML attributes whose values can be altered - it is only useful when the "parse_html" option is set to true + * example: if ["title"], and with the "accents" option set to true, "<a href="#" title="Go to your profile">Profile</a>" => "<a href="#" title="Ĝö ţö ýöûŕ þŕöƒîļé">Þŕöƒîļé</a>" - if "title" was not in the "localizable_html_attributes" list, the title attribute data would be left unchanged. + */ + public function __construct(TranslatorInterface $translator, array $options = []) + { + $this->translator = $translator; + $this->accents = $options['accents'] ?? true; + + if (1.0 > ($this->expansionFactor = $options['expansion_factor'] ?? 1.0)) { + throw new \InvalidArgumentException('The expansion factor must be greater than or equal to 1.'); + } + + $this->brackets = $options['brackets'] ?? true; + + $this->parseHTML = $options['parse_html'] ?? false; + if ($this->parseHTML && !$this->accents && 1.0 === $this->expansionFactor) { + $this->parseHTML = false; + } + + $this->localizableHTMLAttributes = $options['localizable_html_attributes'] ?? []; + } + + /** + * {@inheritdoc} + */ + public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string + { + $trans = ''; + $visibleText = ''; + + foreach ($this->getParts($this->translator->trans($id, $parameters, $domain, $locale)) as [$visible, $localizable, $text]) { + if ($visible) { + $visibleText .= $text; + } + + if (!$localizable) { + $trans .= $text; + + continue; + } + + $this->addAccents($trans, $text); + } + + $this->expand($trans, $visibleText); + + $this->addBrackets($trans); + + return $trans; + } + + public function getLocale(): string + { + return $this->translator->getLocale(); + } + + private function getParts(string $originalTrans): array + { + if (!$this->parseHTML) { + return [[true, true, $originalTrans]]; + } + + $html = mb_encode_numericentity($originalTrans, [0x80, 0xFFFF, 0, 0xFFFF], mb_detect_encoding($originalTrans, null, true) ?: 'UTF-8'); + + $useInternalErrors = libxml_use_internal_errors(true); + + $dom = new \DOMDocument(); + $dom->loadHTML('<trans>'.$html.'</trans>'); + + libxml_clear_errors(); + libxml_use_internal_errors($useInternalErrors); + + return $this->parseNode($dom->childNodes->item(1)->childNodes->item(0)->childNodes->item(0)); + } + + private function parseNode(\DOMNode $node): array + { + $parts = []; + + foreach ($node->childNodes as $childNode) { + if (!$childNode instanceof \DOMElement) { + $parts[] = [true, true, $childNode->nodeValue]; + + continue; + } + + $parts[] = [false, false, '<'.$childNode->tagName]; + + /** @var \DOMAttr $attribute */ + foreach ($childNode->attributes as $attribute) { + $parts[] = [false, false, ' '.$attribute->nodeName.'="']; + + $localizableAttribute = \in_array($attribute->nodeName, $this->localizableHTMLAttributes, true); + foreach (preg_split('/(&(?:amp|quot|#039|lt|gt);+)/', htmlspecialchars($attribute->nodeValue, \ENT_QUOTES, 'UTF-8'), -1, \PREG_SPLIT_DELIM_CAPTURE) as $i => $match) { + if ('' === $match) { + continue; + } + + $parts[] = [false, $localizableAttribute && 0 === $i % 2, $match]; + } + + $parts[] = [false, false, '"']; + } + + $parts[] = [false, false, '>']; + + $parts = array_merge($parts, $this->parseNode($childNode, $parts)); + + $parts[] = [false, false, '</'.$childNode->tagName.'>']; + } + + return $parts; + } + + private function addAccents(string &$trans, string $text): void + { + $trans .= $this->accents ? strtr($text, [ + ' ' => ' ', + '!' => '¡', + '"' => '″', + '#' => '♯', + '$' => '€', + '%' => '‰', + '&' => '⅋', + '\'' => '´', + '(' => '{', + ')' => '}', + '*' => '⁎', + '+' => '⁺', + ',' => '،', + '-' => '‐', + '.' => '·', + '/' => '⁄', + '0' => '⓪', + '1' => '①', + '2' => '②', + '3' => '③', + '4' => '④', + '5' => '⑤', + '6' => '⑥', + '7' => '⑦', + '8' => '⑧', + '9' => '⑨', + ':' => '∶', + ';' => '⁏', + '<' => '≤', + '=' => '≂', + '>' => '≥', + '?' => '¿', + '@' => '՞', + 'A' => 'Å', + 'B' => 'Ɓ', + 'C' => 'Ç', + 'D' => 'Ð', + 'E' => 'É', + 'F' => 'Ƒ', + 'G' => 'Ĝ', + 'H' => 'Ĥ', + 'I' => 'Î', + 'J' => 'Ĵ', + 'K' => 'Ķ', + 'L' => 'Ļ', + 'M' => 'Ṁ', + 'N' => 'Ñ', + 'O' => 'Ö', + 'P' => 'Þ', + 'Q' => 'Ǫ', + 'R' => 'Ŕ', + 'S' => 'Š', + 'T' => 'Ţ', + 'U' => 'Û', + 'V' => 'Ṽ', + 'W' => 'Ŵ', + 'X' => 'Ẋ', + 'Y' => 'Ý', + 'Z' => 'Ž', + '[' => '⁅', + '\\' => '∖', + ']' => '⁆', + '^' => '˄', + '_' => '‿', + '`' => '‵', + 'a' => 'å', + 'b' => 'ƀ', + 'c' => 'ç', + 'd' => 'ð', + 'e' => 'é', + 'f' => 'ƒ', + 'g' => 'ĝ', + 'h' => 'ĥ', + 'i' => 'î', + 'j' => 'ĵ', + 'k' => 'ķ', + 'l' => 'ļ', + 'm' => 'ɱ', + 'n' => 'ñ', + 'o' => 'ö', + 'p' => 'þ', + 'q' => 'ǫ', + 'r' => 'ŕ', + 's' => 'š', + 't' => 'ţ', + 'u' => 'û', + 'v' => 'ṽ', + 'w' => 'ŵ', + 'x' => 'ẋ', + 'y' => 'ý', + 'z' => 'ž', + '{' => '(', + '|' => '¦', + '}' => ')', + '~' => '˞', + ]) : $text; + } + + private function expand(string &$trans, string $visibleText): void + { + if (1.0 >= $this->expansionFactor) { + return; + } + + $visibleLength = $this->strlen($visibleText); + $missingLength = (int) ceil($visibleLength * $this->expansionFactor) - $visibleLength; + if ($this->brackets) { + $missingLength -= 2; + } + + if (0 >= $missingLength) { + return; + } + + $words = []; + $wordsCount = 0; + foreach (preg_split('/ +/', $visibleText, -1, \PREG_SPLIT_NO_EMPTY) as $word) { + $wordLength = $this->strlen($word); + + if ($wordLength >= $missingLength) { + continue; + } + + if (!isset($words[$wordLength])) { + $words[$wordLength] = 0; + } + + ++$words[$wordLength]; + ++$wordsCount; + } + + if (!$words) { + $trans .= 1 === $missingLength ? self::EXPANSION_CHARACTER : ' '.str_repeat(self::EXPANSION_CHARACTER, $missingLength - 1); + + return; + } + + arsort($words, \SORT_NUMERIC); + + $longestWordLength = max(array_keys($words)); + + while (true) { + $r = mt_rand(1, $wordsCount); + + foreach ($words as $length => $count) { + $r -= $count; + if ($r <= 0) { + break; + } + } + + $trans .= ' '.str_repeat(self::EXPANSION_CHARACTER, $length); + + $missingLength -= $length + 1; + + if (0 === $missingLength) { + return; + } + + while ($longestWordLength >= $missingLength) { + $wordsCount -= $words[$longestWordLength]; + unset($words[$longestWordLength]); + + if (!$words) { + $trans .= 1 === $missingLength ? self::EXPANSION_CHARACTER : ' '.str_repeat(self::EXPANSION_CHARACTER, $missingLength - 1); + + return; + } + + $longestWordLength = max(array_keys($words)); + } + } + } + + private function addBrackets(string &$trans): void + { + if (!$this->brackets) { + return; + } + + $trans = '['.$trans.']'; + } + + private function strlen(string $s): int + { + return false === ($encoding = mb_detect_encoding($s, null, true)) ? \strlen($s) : mb_strlen($s, $encoding); + } +} diff --git a/vendor/symfony/translation/README.md b/vendor/symfony/translation/README.md index 720bee3b8..adda9a5b2 100644 --- a/vendor/symfony/translation/README.md +++ b/vendor/symfony/translation/README.md @@ -23,6 +23,16 @@ $translator->addResource('array', [ echo $translator->trans('Hello World!'); // outputs « Bonjour ! » ``` +Sponsor +------- + +The Translation component for Symfony 5.4/6.0 is [backed][1] by: + + * [Crowdin][2], a cloud-based localization management software helping teams to go global and stay agile. + * [Lokalise][3], a continuous localization and translation management platform that integrates into your development workflow so you can ship localized products, faster. + +Help Symfony by [sponsoring][4] its development! + Resources --------- @@ -31,3 +41,8 @@ Resources * [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls) in the [main Symfony repository](https://github.com/symfony/symfony) + +[1]: https://symfony.com/backers +[2]: https://crowdin.com +[3]: https://lokalise.com +[4]: https://symfony.com/sponsor diff --git a/vendor/symfony/translation/Reader/TranslationReader.php b/vendor/symfony/translation/Reader/TranslationReader.php index 2b9834521..e8e8638a0 100644 --- a/vendor/symfony/translation/Reader/TranslationReader.php +++ b/vendor/symfony/translation/Reader/TranslationReader.php @@ -25,7 +25,7 @@ class TranslationReader implements TranslationReaderInterface /** * Loaders used for import. * - * @var array + * @var array<string, LoaderInterface> */ private $loaders = []; @@ -34,7 +34,7 @@ class TranslationReader implements TranslationReaderInterface * * @param string $format The format of the loader */ - public function addLoader($format, LoaderInterface $loader) + public function addLoader(string $format, LoaderInterface $loader) { $this->loaders[$format] = $loader; } @@ -42,7 +42,7 @@ class TranslationReader implements TranslationReaderInterface /** * {@inheritdoc} */ - public function read($directory, MessageCatalogue $catalogue) + public function read(string $directory, MessageCatalogue $catalogue) { if (!is_dir($directory)) { return; diff --git a/vendor/symfony/translation/Reader/TranslationReaderInterface.php b/vendor/symfony/translation/Reader/TranslationReaderInterface.php index 0b2ad332a..bc37204f9 100644 --- a/vendor/symfony/translation/Reader/TranslationReaderInterface.php +++ b/vendor/symfony/translation/Reader/TranslationReaderInterface.php @@ -22,8 +22,6 @@ interface TranslationReaderInterface { /** * Reads translation messages from a directory to the catalogue. - * - * @param string $directory */ - public function read($directory, MessageCatalogue $catalogue); + public function read(string $directory, MessageCatalogue $catalogue); } diff --git a/vendor/symfony/translation/Resources/functions.php b/vendor/symfony/translation/Resources/functions.php new file mode 100644 index 000000000..901d2f87e --- /dev/null +++ b/vendor/symfony/translation/Resources/functions.php @@ -0,0 +1,22 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation; + +if (!\function_exists(t::class)) { + /** + * @author Nate Wiebe <nate@northern.co> + */ + function t(string $message, array $parameters = [], string $domain = null): TranslatableMessage + { + return new TranslatableMessage($message, $parameters, $domain); + } +} diff --git a/vendor/symfony/translation/Test/ProviderFactoryTestCase.php b/vendor/symfony/translation/Test/ProviderFactoryTestCase.php new file mode 100644 index 000000000..6d5f4b7bf --- /dev/null +++ b/vendor/symfony/translation/Test/ProviderFactoryTestCase.php @@ -0,0 +1,147 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Test; + +use PHPUnit\Framework\TestCase; +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpClient\MockHttpClient; +use Symfony\Component\Translation\Dumper\XliffFileDumper; +use Symfony\Component\Translation\Exception\IncompleteDsnException; +use Symfony\Component\Translation\Exception\UnsupportedSchemeException; +use Symfony\Component\Translation\Loader\LoaderInterface; +use Symfony\Component\Translation\Provider\Dsn; +use Symfony\Component\Translation\Provider\ProviderFactoryInterface; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +/** + * A test case to ease testing a translation provider factory. + * + * @author Mathieu Santostefano <msantostefano@protonmail.com> + * + * @internal + */ +abstract class ProviderFactoryTestCase extends TestCase +{ + protected $client; + protected $logger; + protected $defaultLocale; + protected $loader; + protected $xliffFileDumper; + + abstract public function createFactory(): ProviderFactoryInterface; + + /** + * @return iterable<array{0: bool, 1: string}> + */ + abstract public function supportsProvider(): iterable; + + /** + * @return iterable<array{0: string, 1: string, 2: TransportInterface}> + */ + abstract public function createProvider(): iterable; + + /** + * @return iterable<array{0: string, 1: string|null}> + */ + public function unsupportedSchemeProvider(): iterable + { + return []; + } + + /** + * @return iterable<array{0: string, 1: string|null}> + */ + public function incompleteDsnProvider(): iterable + { + return []; + } + + /** + * @dataProvider supportsProvider + */ + public function testSupports(bool $expected, string $dsn) + { + $factory = $this->createFactory(); + + $this->assertSame($expected, $factory->supports(new Dsn($dsn))); + } + + /** + * @dataProvider createProvider + */ + public function testCreate(string $expected, string $dsn) + { + $factory = $this->createFactory(); + $provider = $factory->create(new Dsn($dsn)); + + $this->assertSame($expected, (string) $provider); + } + + /** + * @dataProvider unsupportedSchemeProvider + */ + public function testUnsupportedSchemeException(string $dsn, string $message = null) + { + $factory = $this->createFactory(); + + $dsn = new Dsn($dsn); + + $this->expectException(UnsupportedSchemeException::class); + if (null !== $message) { + $this->expectExceptionMessage($message); + } + + $factory->create($dsn); + } + + /** + * @dataProvider incompleteDsnProvider + */ + public function testIncompleteDsnException(string $dsn, string $message = null) + { + $factory = $this->createFactory(); + + $dsn = new Dsn($dsn); + + $this->expectException(IncompleteDsnException::class); + if (null !== $message) { + $this->expectExceptionMessage($message); + } + + $factory->create($dsn); + } + + protected function getClient(): HttpClientInterface + { + return $this->client ?? $this->client = new MockHttpClient(); + } + + protected function getLogger(): LoggerInterface + { + return $this->logger ?? $this->logger = $this->createMock(LoggerInterface::class); + } + + protected function getDefaultLocale(): string + { + return $this->defaultLocale ?? $this->defaultLocale = 'en'; + } + + protected function getLoader(): LoaderInterface + { + return $this->loader ?? $this->loader = $this->createMock(LoaderInterface::class); + } + + protected function getXliffFileDumper(): XliffFileDumper + { + return $this->xliffFileDumper ?? $this->xliffFileDumper = $this->createMock(XliffFileDumper::class); + } +} diff --git a/vendor/symfony/translation/Test/ProviderTestCase.php b/vendor/symfony/translation/Test/ProviderTestCase.php new file mode 100644 index 000000000..4eb08604b --- /dev/null +++ b/vendor/symfony/translation/Test/ProviderTestCase.php @@ -0,0 +1,76 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation\Test; + +use PHPUnit\Framework\TestCase; +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpClient\MockHttpClient; +use Symfony\Component\Translation\Dumper\XliffFileDumper; +use Symfony\Component\Translation\Loader\LoaderInterface; +use Symfony\Component\Translation\Provider\ProviderInterface; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +/** + * A test case to ease testing a translation provider. + * + * @author Mathieu Santostefano <msantostefano@protonmail.com> + * + * @internal + */ +abstract class ProviderTestCase extends TestCase +{ + protected $client; + protected $logger; + protected $defaultLocale; + protected $loader; + protected $xliffFileDumper; + + abstract public function createProvider(HttpClientInterface $client, LoaderInterface $loader, LoggerInterface $logger, string $defaultLocale, string $endpoint): ProviderInterface; + + /** + * @return iterable<array{0: string, 1: ProviderInterface}> + */ + abstract public function toStringProvider(): iterable; + + /** + * @dataProvider toStringProvider + */ + public function testToString(ProviderInterface $provider, string $expected) + { + $this->assertSame($expected, (string) $provider); + } + + protected function getClient(): MockHttpClient + { + return $this->client ?? $this->client = new MockHttpClient(); + } + + protected function getLoader(): LoaderInterface + { + return $this->loader ?? $this->loader = $this->createMock(LoaderInterface::class); + } + + protected function getLogger(): LoggerInterface + { + return $this->logger ?? $this->logger = $this->createMock(LoggerInterface::class); + } + + protected function getDefaultLocale(): string + { + return $this->defaultLocale ?? $this->defaultLocale = 'en'; + } + + protected function getXliffFileDumper(): XliffFileDumper + { + return $this->xliffFileDumper ?? $this->xliffFileDumper = $this->createMock(XliffFileDumper::class); + } +} diff --git a/vendor/symfony/translation/TranslatableMessage.php b/vendor/symfony/translation/TranslatableMessage.php new file mode 100644 index 000000000..282d289c0 --- /dev/null +++ b/vendor/symfony/translation/TranslatableMessage.php @@ -0,0 +1,62 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation; + +use Symfony\Contracts\Translation\TranslatableInterface; +use Symfony\Contracts\Translation\TranslatorInterface; + +/** + * @author Nate Wiebe <nate@northern.co> + */ +class TranslatableMessage implements TranslatableInterface +{ + private $message; + private $parameters; + private $domain; + + public function __construct(string $message, array $parameters = [], string $domain = null) + { + $this->message = $message; + $this->parameters = $parameters; + $this->domain = $domain; + } + + public function __toString(): string + { + return $this->getMessage(); + } + + public function getMessage(): string + { + return $this->message; + } + + public function getParameters(): array + { + return $this->parameters; + } + + public function getDomain(): ?string + { + return $this->domain; + } + + public function trans(TranslatorInterface $translator, string $locale = null): string + { + return $translator->trans($this->getMessage(), array_map( + static function ($parameter) use ($translator, $locale) { + return $parameter instanceof TranslatableInterface ? $parameter->trans($translator, $locale) : $parameter; + }, + $this->getParameters() + ), $this->getDomain(), $locale); + } +} diff --git a/vendor/symfony/translation/Translator.php b/vendor/symfony/translation/Translator.php index 5eb0183cb..dc0626093 100644 --- a/vendor/symfony/translation/Translator.php +++ b/vendor/symfony/translation/Translator.php @@ -15,21 +15,22 @@ use Symfony\Component\Config\ConfigCacheFactory; use Symfony\Component\Config\ConfigCacheFactoryInterface; use Symfony\Component\Config\ConfigCacheInterface; use Symfony\Component\Translation\Exception\InvalidArgumentException; -use Symfony\Component\Translation\Exception\LogicException; use Symfony\Component\Translation\Exception\NotFoundResourceException; use Symfony\Component\Translation\Exception\RuntimeException; -use Symfony\Component\Translation\Formatter\ChoiceMessageFormatterInterface; use Symfony\Component\Translation\Formatter\IntlFormatterInterface; use Symfony\Component\Translation\Formatter\MessageFormatter; use Symfony\Component\Translation\Formatter\MessageFormatterInterface; use Symfony\Component\Translation\Loader\LoaderInterface; -use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface; +use Symfony\Contracts\Translation\LocaleAwareInterface; use Symfony\Contracts\Translation\TranslatorInterface; +// Help opcache.preload discover always-needed symbols +class_exists(MessageCatalogue::class); + /** * @author Fabien Potencier <fabien@symfony.com> */ -class Translator implements LegacyTranslatorInterface, TranslatorInterface, TranslatorBagInterface +class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface { /** * @var MessageCatalogueInterface[] @@ -42,7 +43,7 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran private $locale; /** - * @var array + * @var string[] */ private $fallbackLocales = []; @@ -88,13 +89,9 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * @throws InvalidArgumentException If a locale contains invalid characters */ - public function __construct(?string $locale, MessageFormatterInterface $formatter = null, string $cacheDir = null, bool $debug = false, array $cacheVary = []) + public function __construct(string $locale, MessageFormatterInterface $formatter = null, string $cacheDir = null, bool $debug = false, array $cacheVary = []) { - if (null === $locale) { - @trigger_error(sprintf('Passing "null" as the $locale argument to %s() is deprecated since Symfony 4.4.', __METHOD__), \E_USER_DEPRECATED); - } - - $this->setLocale($locale, false); + $this->setLocale($locale); if (null === $formatter) { $formatter = new MessageFormatter(); @@ -117,7 +114,7 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran * * @param string $format The name of the loader (@see addResource()) */ - public function addLoader($format, LoaderInterface $loader) + public function addLoader(string $format, LoaderInterface $loader) { $this->loaders[$format] = $loader; } @@ -127,21 +124,15 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran * * @param string $format The name of the loader (@see addLoader()) * @param mixed $resource The resource name - * @param string $locale The locale - * @param string $domain The domain * * @throws InvalidArgumentException If the locale contains invalid characters */ - public function addResource($format, $resource, $locale, $domain = null) + public function addResource(string $format, $resource, string $locale, string $domain = null) { if (null === $domain) { $domain = 'messages'; } - if (null === $locale) { - @trigger_error(sprintf('Passing "null" to the third argument of the "%s" method has been deprecated since Symfony 4.4 and will throw an error in 5.0.', __METHOD__), \E_USER_DEPRECATED); - } - $this->assertValidLocale($locale); $locale ?: $locale = class_exists(\Locale::class) ? \Locale::getDefault() : 'en'; @@ -157,12 +148,8 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * {@inheritdoc} */ - public function setLocale($locale) + public function setLocale(string $locale) { - if (null === $locale && (2 > \func_num_args() || func_get_arg(1))) { - @trigger_error(sprintf('Passing "null" as the $locale argument to %s() is deprecated since Symfony 4.4.', __METHOD__), \E_USER_DEPRECATED); - } - $this->assertValidLocale($locale); $this->locale = $locale; } @@ -178,6 +165,8 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * Sets the fallback locales. * + * @param string[] $locales + * * @throws InvalidArgumentException If a locale contains invalid characters */ public function setFallbackLocales(array $locales) @@ -186,9 +175,6 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran $this->catalogues = []; foreach ($locales as $locale) { - if (null === $locale) { - @trigger_error(sprintf('Passing "null" as the $locale argument to %s() is deprecated since Symfony 4.4.', __METHOD__), \E_USER_DEPRECATED); - } $this->assertValidLocale($locale); } @@ -198,11 +184,9 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * Gets the fallback locales. * - * @internal since Symfony 4.2 - * - * @return array The fallback locales + * @internal */ - public function getFallbackLocales() + public function getFallbackLocales(): array { return $this->fallbackLocales; } @@ -210,9 +194,9 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * {@inheritdoc} */ - public function trans($id, array $parameters = [], $domain = null, $locale = null) + public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null) { - if ('' === $id = (string) $id) { + if (null === $id || '' === $id) { return ''; } @@ -231,7 +215,11 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran } } - if ($this->hasIntlFormatter && $catalogue->defines($id, $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX)) { + $len = \strlen(MessageCatalogue::INTL_DOMAIN_SUFFIX); + if ($this->hasIntlFormatter + && ($catalogue->defines($id, $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX) + || (\strlen($domain) > $len && 0 === substr_compare($domain, MessageCatalogue::INTL_DOMAIN_SUFFIX, -$len, $len))) + ) { return $this->formatter->formatIntl($catalogue->get($id, $domain), $locale, $parameters); } @@ -240,47 +228,8 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran /** * {@inheritdoc} - * - * @deprecated since Symfony 4.2, use the trans() method instead with a %count% parameter */ - public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null) - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use the trans() one instead with a "%%count%%" parameter.', __METHOD__), \E_USER_DEPRECATED); - - if ('' === $id = (string) $id) { - return ''; - } - - if (!$this->formatter instanceof ChoiceMessageFormatterInterface) { - throw new LogicException(sprintf('The formatter "%s" does not support plural translations.', \get_class($this->formatter))); - } - - if (null === $domain) { - $domain = 'messages'; - } - - $catalogue = $this->getCatalogue($locale); - $locale = $catalogue->getLocale(); - while (!$catalogue->defines($id, $domain)) { - if ($cat = $catalogue->getFallbackCatalogue()) { - $catalogue = $cat; - $locale = $catalogue->getLocale(); - } else { - break; - } - } - - if ($this->hasIntlFormatter && $catalogue->defines($id, $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX)) { - return $this->formatter->formatIntl($catalogue->get($id, $domain), $locale, ['%count%' => $number] + $parameters); - } - - return $this->formatter->choiceFormat($catalogue->get($id, $domain), $number, $locale, $parameters); - } - - /** - * {@inheritdoc} - */ - public function getCatalogue($locale = null) + public function getCatalogue(string $locale = null) { if (!$locale) { $locale = $this->getLocale(); @@ -295,20 +244,25 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran return $this->catalogues[$locale]; } + /** + * {@inheritdoc} + */ + public function getCatalogues(): array + { + return array_values($this->catalogues); + } + /** * Gets the loaders. * - * @return array LoaderInterface[] + * @return LoaderInterface[] */ protected function getLoaders() { return $this->loaders; } - /** - * @param string $locale - */ - protected function loadCatalogue($locale) + protected function loadCatalogue(string $locale) { if (null === $this->cacheDir) { $this->initializeCatalogue($locale); @@ -317,10 +271,7 @@ class Translator implements LegacyTranslatorInterface, TranslatorInterface, Tran } } - /** - * @param string $locale - */ - protected function initializeCatalogue($locale) + protected function initializeCatalogue(string $locale) { $this->assertValidLocale($locale); @@ -456,7 +407,7 @@ EOF } } - protected function computeFallbackLocales($locale) + protected function computeFallbackLocales(string $locale) { if (null === $this->parentLocales) { $this->parentLocales = json_decode(file_get_contents(__DIR__.'/Resources/data/parents.json'), true); @@ -502,13 +453,11 @@ EOF /** * Asserts that the locale is valid, throws an Exception if not. * - * @param string $locale Locale to tests - * * @throws InvalidArgumentException If the locale contains invalid characters */ - protected function assertValidLocale($locale) + protected function assertValidLocale(string $locale) { - if (!preg_match('/^[a-z0-9@_\\.\\-]*$/i', (string) $locale)) { + if (!preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) { throw new InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale)); } } diff --git a/vendor/symfony/translation/TranslatorBag.php b/vendor/symfony/translation/TranslatorBag.php new file mode 100644 index 000000000..555a9e814 --- /dev/null +++ b/vendor/symfony/translation/TranslatorBag.php @@ -0,0 +1,108 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Translation; + +use Symfony\Component\Translation\Catalogue\AbstractOperation; +use Symfony\Component\Translation\Catalogue\TargetOperation; + +final class TranslatorBag implements TranslatorBagInterface +{ + /** @var MessageCatalogue[] */ + private $catalogues = []; + + public function addCatalogue(MessageCatalogue $catalogue): void + { + if (null !== $existingCatalogue = $this->getCatalogue($catalogue->getLocale())) { + $catalogue->addCatalogue($existingCatalogue); + } + + $this->catalogues[$catalogue->getLocale()] = $catalogue; + } + + public function addBag(TranslatorBagInterface $bag): void + { + foreach ($bag->getCatalogues() as $catalogue) { + $this->addCatalogue($catalogue); + } + } + + /** + * {@inheritdoc} + */ + public function getCatalogue(string $locale = null): MessageCatalogueInterface + { + if (null === $locale || !isset($this->catalogues[$locale])) { + $this->catalogues[$locale] = new MessageCatalogue($locale); + } + + return $this->catalogues[$locale]; + } + + /** + * {@inheritdoc} + */ + public function getCatalogues(): array + { + return array_values($this->catalogues); + } + + public function diff(TranslatorBagInterface $diffBag): self + { + $diff = new self(); + + foreach ($this->catalogues as $locale => $catalogue) { + if (null === $diffCatalogue = $diffBag->getCatalogue($locale)) { + $diff->addCatalogue($catalogue); + + continue; + } + + $operation = new TargetOperation($diffCatalogue, $catalogue); + $operation->moveMessagesToIntlDomainsIfPossible(AbstractOperation::NEW_BATCH); + $newCatalogue = new MessageCatalogue($locale); + + foreach ($operation->getDomains() as $domain) { + $newCatalogue->add($operation->getNewMessages($domain), $domain); + } + + $diff->addCatalogue($newCatalogue); + } + + return $diff; + } + + public function intersect(TranslatorBagInterface $intersectBag): self + { + $diff = new self(); + + foreach ($this->catalogues as $locale => $catalogue) { + if (null === $intersectCatalogue = $intersectBag->getCatalogue($locale)) { + continue; + } + + $operation = new TargetOperation($catalogue, $intersectCatalogue); + $operation->moveMessagesToIntlDomainsIfPossible(AbstractOperation::OBSOLETE_BATCH); + $obsoleteCatalogue = new MessageCatalogue($locale); + + foreach ($operation->getDomains() as $domain) { + $obsoleteCatalogue->add( + array_diff($operation->getMessages($domain), $operation->getNewMessages($domain)), + $domain + ); + } + + $diff->addCatalogue($obsoleteCatalogue); + } + + return $diff; + } +} diff --git a/vendor/symfony/translation/TranslatorBagInterface.php b/vendor/symfony/translation/TranslatorBagInterface.php index 5e49e2ddc..422897735 100644 --- a/vendor/symfony/translation/TranslatorBagInterface.php +++ b/vendor/symfony/translation/TranslatorBagInterface.php @@ -16,6 +16,8 @@ use Symfony\Component\Translation\Exception\InvalidArgumentException; /** * TranslatorBagInterface. * + * @method MessageCatalogueInterface[] getCatalogues() Returns all catalogues of the instance + * * @author Abdellatif Ait boudad <a.aitboudad@gmail.com> */ interface TranslatorBagInterface @@ -29,5 +31,5 @@ interface TranslatorBagInterface * * @throws InvalidArgumentException If the locale contains invalid characters */ - public function getCatalogue($locale = null); + public function getCatalogue(string $locale = null); } diff --git a/vendor/symfony/translation/TranslatorInterface.php b/vendor/symfony/translation/TranslatorInterface.php deleted file mode 100644 index f677d2455..000000000 --- a/vendor/symfony/translation/TranslatorInterface.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation; - -use Symfony\Component\Translation\Exception\InvalidArgumentException; -use Symfony\Contracts\Translation\LocaleAwareInterface; - -/** - * TranslatorInterface. - * - * @author Fabien Potencier <fabien@symfony.com> - * - * @deprecated since Symfony 4.2, use Symfony\Contracts\Translation\TranslatorInterface instead - */ -interface TranslatorInterface extends LocaleAwareInterface -{ - /** - * Translates the given message. - * - * @param string $id The message id (may also be an object that can be cast to string) - * @param array $parameters An array of parameters for the message - * @param string|null $domain The domain for the message or null to use the default - * @param string|null $locale The locale or null to use the default - * - * @return string The translated string - * - * @throws InvalidArgumentException If the locale contains invalid characters - */ - public function trans($id, array $parameters = [], $domain = null, $locale = null); - - /** - * Translates the given choice message by choosing a translation according to a number. - * - * @param string $id The message id (may also be an object that can be cast to string) - * @param int $number The number to use to find the index of the message - * @param array $parameters An array of parameters for the message - * @param string|null $domain The domain for the message or null to use the default - * @param string|null $locale The locale or null to use the default - * - * @return string The translated string - * - * @throws InvalidArgumentException If the locale contains invalid characters - */ - public function transChoice($id, $number, array $parameters = [], $domain = null, $locale = null); - - /** - * Sets the current locale. - * - * @param string $locale The locale - * - * @throws InvalidArgumentException If the locale contains invalid characters - */ - public function setLocale($locale); - - /** - * Returns the current locale. - * - * @return string The locale - */ - public function getLocale(); -} diff --git a/vendor/symfony/translation/Util/ArrayConverter.php b/vendor/symfony/translation/Util/ArrayConverter.php index 22c602e71..f69c2e3c6 100644 --- a/vendor/symfony/translation/Util/ArrayConverter.php +++ b/vendor/symfony/translation/Util/ArrayConverter.php @@ -31,7 +31,7 @@ class ArrayConverter * * @param array $messages Linear messages array * - * @return array Tree-like messages array + * @return array */ public static function expandToTree(array $messages) { @@ -84,7 +84,7 @@ class ArrayConverter return $elem; } - private static function cancelExpand(array &$tree, $prefix, array $node) + private static function cancelExpand(array &$tree, string $prefix, array $node) { $prefix .= '.'; diff --git a/vendor/symfony/translation/Writer/TranslationWriter.php b/vendor/symfony/translation/Writer/TranslationWriter.php index 83f6fd615..96d608f07 100644 --- a/vendor/symfony/translation/Writer/TranslationWriter.php +++ b/vendor/symfony/translation/Writer/TranslationWriter.php @@ -23,34 +23,19 @@ use Symfony\Component\Translation\MessageCatalogue; */ class TranslationWriter implements TranslationWriterInterface { + /** + * @var array<string, DumperInterface> + */ private $dumpers = []; /** * Adds a dumper to the writer. - * - * @param string $format The format of the dumper */ - public function addDumper($format, DumperInterface $dumper) + public function addDumper(string $format, DumperInterface $dumper) { $this->dumpers[$format] = $dumper; } - /** - * Disables dumper backup. - * - * @deprecated since Symfony 4.1 - */ - public function disableBackup() - { - @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1.', __METHOD__), \E_USER_DEPRECATED); - - foreach ($this->dumpers as $dumper) { - if (method_exists($dumper, 'setBackup')) { - $dumper->setBackup(false); - } - } - } - /** * Obtains the list of supported formats. * @@ -69,7 +54,7 @@ class TranslationWriter implements TranslationWriterInterface * * @throws InvalidArgumentException */ - public function write(MessageCatalogue $catalogue, $format, $options = []) + public function write(MessageCatalogue $catalogue, string $format, array $options = []) { if (!isset($this->dumpers[$format])) { throw new InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format)); diff --git a/vendor/symfony/translation/Writer/TranslationWriterInterface.php b/vendor/symfony/translation/Writer/TranslationWriterInterface.php index f7c56bed0..43213097e 100644 --- a/vendor/symfony/translation/Writer/TranslationWriterInterface.php +++ b/vendor/symfony/translation/Writer/TranslationWriterInterface.php @@ -29,5 +29,5 @@ interface TranslationWriterInterface * * @throws InvalidArgumentException */ - public function write(MessageCatalogue $catalogue, $format, $options = []); + public function write(MessageCatalogue $catalogue, string $format, array $options = []); } diff --git a/vendor/symfony/translation/composer.json b/vendor/symfony/translation/composer.json index 9eafc1b14..5c9266b7e 100644 --- a/vendor/symfony/translation/composer.json +++ b/vendor/symfony/translation/composer.json @@ -16,30 +16,35 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/translation-contracts": "^2.3" }, "require-dev": { - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4", + "symfony/console": "<5.3" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3" }, "suggest": { "symfony/config": "", @@ -47,6 +52,7 @@ "psr/log-implementation": "To use logging capability in translator" }, "autoload": { + "files": [ "Resources/functions.php" ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ "/Tests/" diff --git a/vendor/symfony/var-dumper/CHANGELOG.md b/vendor/symfony/var-dumper/CHANGELOG.md index 94b1c17d1..f58ed3170 100644 --- a/vendor/symfony/var-dumper/CHANGELOG.md +++ b/vendor/symfony/var-dumper/CHANGELOG.md @@ -1,6 +1,25 @@ CHANGELOG ========= +5.4 +--- + + * Add ability to style integer and double values independently + * Add casters for Symfony's UUIDs and ULIDs + * Add support for `Fiber` + +5.2.0 +----- + + * added support for PHPUnit `--colors` option + * added `VAR_DUMPER_FORMAT=server` env var value support + * prevent replacing the handler when the `VAR_DUMPER_FORMAT` env var is set + +5.1.0 +----- + + * added `RdKafka` support + 4.4.0 ----- diff --git a/vendor/symfony/var-dumper/Caster/AmqpCaster.php b/vendor/symfony/var-dumper/Caster/AmqpCaster.php index 60045ff7b..dc3b62198 100644 --- a/vendor/symfony/var-dumper/Caster/AmqpCaster.php +++ b/vendor/symfony/var-dumper/Caster/AmqpCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Grégoire Pineau <lyrixx@lyrixx.info> * - * @final since Symfony 4.4 + * @final */ class AmqpCaster { @@ -46,7 +46,7 @@ class AmqpCaster \AMQP_EX_TYPE_HEADERS => 'AMQP_EX_TYPE_HEADERS', ]; - public static function castConnection(\AMQPConnection $c, array $a, Stub $stub, $isNested) + public static function castConnection(\AMQPConnection $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -79,7 +79,7 @@ class AmqpCaster return $a; } - public static function castChannel(\AMQPChannel $c, array $a, Stub $stub, $isNested) + public static function castChannel(\AMQPChannel $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -102,7 +102,7 @@ class AmqpCaster return $a; } - public static function castQueue(\AMQPQueue $c, array $a, Stub $stub, $isNested) + public static function castQueue(\AMQPQueue $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -125,7 +125,7 @@ class AmqpCaster return $a; } - public static function castExchange(\AMQPExchange $c, array $a, Stub $stub, $isNested) + public static function castExchange(\AMQPExchange $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -153,7 +153,7 @@ class AmqpCaster return $a; } - public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $prefix = Caster::PREFIX_VIRTUAL; diff --git a/vendor/symfony/var-dumper/Caster/Caster.php b/vendor/symfony/var-dumper/Caster/Caster.php index d35f3230b..890f53106 100644 --- a/vendor/symfony/var-dumper/Caster/Caster.php +++ b/vendor/symfony/var-dumper/Caster/Caster.php @@ -40,17 +40,14 @@ class Caster /** * Casts objects to arrays and adds the dynamic property prefix. * - * @param object $obj The object to cast - * @param bool $hasDebugInfo Whether the __debugInfo method exists on $obj or not - * - * @return array The array-cast of the object, with prefixed dynamic properties + * @param bool $hasDebugInfo Whether the __debugInfo method exists on $obj or not */ - public static function castObject($obj, string $class, bool $hasDebugInfo = false, string $debugClass = null): array + public static function castObject(object $obj, string $class, bool $hasDebugInfo = false, string $debugClass = null): array { if ($hasDebugInfo) { try { $debugInfo = $obj->__debugInfo(); - } catch (\Exception $e) { + } catch (\Throwable $e) { // ignore failing __debugInfo() $hasDebugInfo = false; } @@ -69,7 +66,7 @@ class Caster $i = 0; $prefixedKeys = []; foreach ($a as $k => $v) { - if (isset($k[0]) ? "\0" !== $k[0] : \PHP_VERSION_ID >= 70200) { + if ("\0" !== ($k[0] ?? '')) { if (!isset($publicProperties[$class])) { foreach ((new \ReflectionClass($class))->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) { $publicProperties[$class][$prop->name] = true; @@ -119,8 +116,6 @@ class Caster * @param int $filter A bit field of Caster::EXCLUDE_* constants specifying which properties to filter out * @param string[] $listedProperties List of properties to exclude when Caster::EXCLUDE_VERBOSE is set, and to preserve when Caster::EXCLUDE_NOT_IMPORTANT is set * @param int &$count Set to the number of removed properties - * - * @return array The filtered array */ public static function filter(array $a, int $filter, array $listedProperties = [], ?int &$count = 0): array { diff --git a/vendor/symfony/var-dumper/Caster/DOMCaster.php b/vendor/symfony/var-dumper/Caster/DOMCaster.php index 5f2b9cd11..4dd16e0ee 100644 --- a/vendor/symfony/var-dumper/Caster/DOMCaster.php +++ b/vendor/symfony/var-dumper/Caster/DOMCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class DOMCaster { @@ -63,7 +63,7 @@ class DOMCaster \XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE', ]; - public static function castException(\DOMException $e, array $a, Stub $stub, $isNested) + public static function castException(\DOMException $e, array $a, Stub $stub, bool $isNested) { $k = Caster::PREFIX_PROTECTED.'code'; if (isset($a[$k], self::ERROR_CODES[$a[$k]])) { @@ -73,7 +73,7 @@ class DOMCaster return $a; } - public static function castLength($dom, array $a, Stub $stub, $isNested) + public static function castLength($dom, array $a, Stub $stub, bool $isNested) { $a += [ 'length' => $dom->length, @@ -82,7 +82,7 @@ class DOMCaster return $a; } - public static function castImplementation($dom, array $a, Stub $stub, $isNested) + public static function castImplementation(\DOMImplementation $dom, array $a, Stub $stub, bool $isNested) { $a += [ Caster::PREFIX_VIRTUAL.'Core' => '1.0', @@ -92,7 +92,7 @@ class DOMCaster return $a; } - public static function castNode(\DOMNode $dom, array $a, Stub $stub, $isNested) + public static function castNode(\DOMNode $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'nodeName' => $dom->nodeName, @@ -116,7 +116,7 @@ class DOMCaster return $a; } - public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, $isNested) + public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'nodeName' => $dom->nodeName, @@ -132,7 +132,7 @@ class DOMCaster return $a; } - public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, $isNested, $filter = 0) + public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, bool $isNested, int $filter = 0) { $a += [ 'doctype' => $dom->doctype, @@ -166,7 +166,7 @@ class DOMCaster return $a; } - public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, $isNested) + public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'data' => $dom->data, @@ -176,7 +176,7 @@ class DOMCaster return $a; } - public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, $isNested) + public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'name' => $dom->name, @@ -189,7 +189,7 @@ class DOMCaster return $a; } - public static function castElement(\DOMElement $dom, array $a, Stub $stub, $isNested) + public static function castElement(\DOMElement $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'tagName' => $dom->tagName, @@ -199,7 +199,7 @@ class DOMCaster return $a; } - public static function castText(\DOMText $dom, array $a, Stub $stub, $isNested) + public static function castText(\DOMText $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'wholeText' => $dom->wholeText, @@ -208,7 +208,7 @@ class DOMCaster return $a; } - public static function castTypeinfo(\DOMTypeinfo $dom, array $a, Stub $stub, $isNested) + public static function castTypeinfo(\DOMTypeinfo $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'typeName' => $dom->typeName, @@ -218,7 +218,7 @@ class DOMCaster return $a; } - public static function castDomError(\DOMDomError $dom, array $a, Stub $stub, $isNested) + public static function castDomError(\DOMDomError $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'severity' => $dom->severity, @@ -232,7 +232,7 @@ class DOMCaster return $a; } - public static function castLocator(\DOMLocator $dom, array $a, Stub $stub, $isNested) + public static function castLocator(\DOMLocator $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'lineNumber' => $dom->lineNumber, @@ -245,7 +245,7 @@ class DOMCaster return $a; } - public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, $isNested) + public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'name' => $dom->name, @@ -259,7 +259,7 @@ class DOMCaster return $a; } - public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, $isNested) + public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'publicId' => $dom->publicId, @@ -269,7 +269,7 @@ class DOMCaster return $a; } - public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, $isNested) + public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'publicId' => $dom->publicId, @@ -283,7 +283,7 @@ class DOMCaster return $a; } - public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, $isNested) + public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'target' => $dom->target, @@ -293,7 +293,7 @@ class DOMCaster return $a; } - public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, $isNested) + public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, bool $isNested) { $a += [ 'document' => $dom->document, diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php index e0309bc62..18641fbc1 100644 --- a/vendor/symfony/var-dumper/Caster/DateCaster.php +++ b/vendor/symfony/var-dumper/Caster/DateCaster.php @@ -18,13 +18,13 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Dany Maillard <danymaillard93b@gmail.com> * - * @final since Symfony 4.4 + * @final */ class DateCaster { private const PERIOD_LIMIT = 3; - public static function castDateTime(\DateTimeInterface $d, array $a, Stub $stub, $isNested, $filter) + public static function castDateTime(\DateTimeInterface $d, array $a, Stub $stub, bool $isNested, int $filter) { $prefix = Caster::PREFIX_VIRTUAL; $location = $d->getTimezone()->getLocation(); @@ -47,7 +47,7 @@ class DateCaster return $a; } - public static function castInterval(\DateInterval $interval, array $a, Stub $stub, $isNested, $filter) + public static function castInterval(\DateInterval $interval, array $a, Stub $stub, bool $isNested, int $filter) { $now = new \DateTimeImmutable('@0', new \DateTimeZone('UTC')); $numberOfSeconds = $now->add($interval)->getTimestamp() - $now->getTimestamp(); @@ -76,7 +76,7 @@ class DateCaster return $i->format(rtrim($format)); } - public static function castTimeZone(\DateTimeZone $timeZone, array $a, Stub $stub, $isNested, $filter) + public static function castTimeZone(\DateTimeZone $timeZone, array $a, Stub $stub, bool $isNested, int $filter) { $location = $timeZone->getLocation(); $formatted = (new \DateTime('now', $timeZone))->format($location ? 'e (P)' : 'P'); @@ -87,21 +87,19 @@ class DateCaster return $filter & Caster::EXCLUDE_VERBOSE ? $z : $z + $a; } - public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, $isNested, $filter) + public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, bool $isNested, int $filter) { $dates = []; - if (\PHP_VERSION_ID >= 70107) { // see https://bugs.php.net/74639 - foreach (clone $p as $i => $d) { - if (self::PERIOD_LIMIT === $i) { - $now = new \DateTimeImmutable('now', new \DateTimeZone('UTC')); - $dates[] = sprintf('%s more', ($end = $p->getEndDate()) - ? ceil(($end->format('U.u') - $d->format('U.u')) / ((int) $now->add($p->getDateInterval())->format('U.u') - (int) $now->format('U.u'))) - : $p->recurrences - $i - ); - break; - } - $dates[] = sprintf('%s) %s', $i + 1, self::formatDateTime($d)); + foreach (clone $p as $i => $d) { + if (self::PERIOD_LIMIT === $i) { + $now = new \DateTimeImmutable('now', new \DateTimeZone('UTC')); + $dates[] = sprintf('%s more', ($end = $p->getEndDate()) + ? ceil(($end->format('U.u') - $d->format('U.u')) / ((int) $now->add($p->getDateInterval())->format('U.u') - (int) $now->format('U.u'))) + : $p->recurrences - $i + ); + break; } + $dates[] = sprintf('%s) %s', $i + 1, self::formatDateTime($d)); } $period = sprintf( diff --git a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php b/vendor/symfony/var-dumper/Caster/DoctrineCaster.php index 7409508b0..129b2cb47 100644 --- a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php +++ b/vendor/symfony/var-dumper/Caster/DoctrineCaster.php @@ -21,11 +21,11 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class DoctrineCaster { - public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub, $isNested) + public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub, bool $isNested) { foreach (['__cloner__', '__initializer__'] as $k) { if (\array_key_exists($k, $a)) { @@ -37,7 +37,7 @@ class DoctrineCaster return $a; } - public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, $isNested) + public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, bool $isNested) { foreach (['_entityPersister', '_identifier'] as $k) { if (\array_key_exists($k = "\0Doctrine\\ORM\\Proxy\\Proxy\0".$k, $a)) { @@ -49,7 +49,7 @@ class DoctrineCaster return $a; } - public static function castPersistentCollection(PersistentCollection $coll, array $a, Stub $stub, $isNested) + public static function castPersistentCollection(PersistentCollection $coll, array $a, Stub $stub, bool $isNested) { foreach (['snapshot', 'association', 'typeClass'] as $k) { if (\array_key_exists($k = "\0Doctrine\\ORM\\PersistentCollection\0".$k, $a)) { diff --git a/vendor/symfony/var-dumper/Caster/DsCaster.php b/vendor/symfony/var-dumper/Caster/DsCaster.php index 11423c9b2..b34b67004 100644 --- a/vendor/symfony/var-dumper/Caster/DsCaster.php +++ b/vendor/symfony/var-dumper/Caster/DsCaster.php @@ -21,7 +21,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Jáchym Toušek <enumag@gmail.com> * - * @final since Symfony 4.4 + * @final */ class DsCaster { diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php index f2c0f9687..7f5cb65eb 100644 --- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php @@ -20,7 +20,7 @@ use Symfony\Component\VarDumper\Exception\ThrowingCasterException; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class ExceptionCaster { @@ -46,17 +46,17 @@ class ExceptionCaster private static $framesCache = []; - public static function castError(\Error $e, array $a, Stub $stub, $isNested, $filter = 0) + public static function castError(\Error $e, array $a, Stub $stub, bool $isNested, int $filter = 0) { return self::filterExceptionArray($stub->class, $a, "\0Error\0", $filter); } - public static function castException(\Exception $e, array $a, Stub $stub, $isNested, $filter = 0) + public static function castException(\Exception $e, array $a, Stub $stub, bool $isNested, int $filter = 0) { return self::filterExceptionArray($stub->class, $a, "\0Exception\0", $filter); } - public static function castErrorException(\ErrorException $e, array $a, Stub $stub, $isNested) + public static function castErrorException(\ErrorException $e, array $a, Stub $stub, bool $isNested) { if (isset($a[$s = Caster::PREFIX_PROTECTED.'severity'], self::$errorTypes[$a[$s]])) { $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]); @@ -65,7 +65,7 @@ class ExceptionCaster return $a; } - public static function castThrowingCasterException(ThrowingCasterException $e, array $a, Stub $stub, $isNested) + public static function castThrowingCasterException(ThrowingCasterException $e, array $a, Stub $stub, bool $isNested) { $trace = Caster::PREFIX_VIRTUAL.'trace'; $prefix = Caster::PREFIX_PROTECTED; @@ -83,7 +83,7 @@ class ExceptionCaster return $a; } - public static function castSilencedErrorContext(SilencedErrorContext $e, array $a, Stub $stub, $isNested) + public static function castSilencedErrorContext(SilencedErrorContext $e, array $a, Stub $stub, bool $isNested) { $sPrefix = "\0".SilencedErrorContext::class."\0"; @@ -110,7 +110,7 @@ class ExceptionCaster return $a; } - public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, $isNested) + public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, bool $isNested) { if (!$isNested) { return $a; @@ -184,7 +184,7 @@ class ExceptionCaster return $a; } - public static function castFrameStub(FrameStub $frame, array $a, Stub $stub, $isNested) + public static function castFrameStub(FrameStub $frame, array $a, Stub $stub, bool $isNested) { if (!$isNested) { return $a; @@ -212,7 +212,7 @@ class ExceptionCaster $ellipsisTail = $ellipsis->attr['ellipsis-tail'] ?? 0; $ellipsis = $ellipsis->attr['ellipsis'] ?? 0; - if (file_exists($f['file']) && 0 <= self::$srcContext) { + if (is_file($f['file']) && 0 <= self::$srcContext) { if (!empty($f['class']) && (is_subclass_of($f['class'], 'Twig\Template') || is_subclass_of($f['class'], 'Twig_Template')) && method_exists($f['class'], 'getDebugInfo')) { $template = null; if (isset($f['object'])) { @@ -225,7 +225,7 @@ class ExceptionCaster $templateSrc = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : ''); $templateInfo = $template->getDebugInfo(); if (isset($templateInfo[$f['line']])) { - if (!method_exists($template, 'getSourceContext') || !file_exists($templatePath = $template->getSourceContext()->getPath())) { + if (!method_exists($template, 'getSourceContext') || !is_file($templatePath = $template->getSourceContext()->getPath())) { $templatePath = null; } if ($templateSrc) { diff --git a/vendor/symfony/var-dumper/Caster/FiberCaster.php b/vendor/symfony/var-dumper/Caster/FiberCaster.php new file mode 100644 index 000000000..c74a9e59c --- /dev/null +++ b/vendor/symfony/var-dumper/Caster/FiberCaster.php @@ -0,0 +1,43 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\VarDumper\Caster; + +use Symfony\Component\VarDumper\Cloner\Stub; + +/** + * Casts Fiber related classes to array representation. + * + * @author Grégoire Pineau <lyrixx@lyrixx.info> + */ +final class FiberCaster +{ + public static function castFiber(\Fiber $fiber, array $a, Stub $stub, bool $isNested, int $filter = 0) + { + $prefix = Caster::PREFIX_VIRTUAL; + + if ($fiber->isTerminated()) { + $status = 'terminated'; + } elseif ($fiber->isRunning()) { + $status = 'running'; + } elseif ($fiber->isSuspended()) { + $status = 'suspended'; + } elseif ($fiber->isStarted()) { + $status = 'started'; + } else { + $status = 'not started'; + } + + $a[$prefix.'status'] = $status; + + return $a; + } +} diff --git a/vendor/symfony/var-dumper/Caster/GmpCaster.php b/vendor/symfony/var-dumper/Caster/GmpCaster.php index 2b20e15dc..b018cc7f8 100644 --- a/vendor/symfony/var-dumper/Caster/GmpCaster.php +++ b/vendor/symfony/var-dumper/Caster/GmpCaster.php @@ -19,11 +19,11 @@ use Symfony\Component\VarDumper\Cloner\Stub; * @author Hamza Amrouche <hamza.simperfit@gmail.com> * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class GmpCaster { - public static function castGmp(\GMP $gmp, array $a, Stub $stub, $isNested, $filter): array + public static function castGmp(\GMP $gmp, array $a, Stub $stub, bool $isNested, int $filter): array { $a[Caster::PREFIX_VIRTUAL.'value'] = new ConstStub(gmp_strval($gmp), gmp_strval($gmp)); diff --git a/vendor/symfony/var-dumper/Caster/ImgStub.php b/vendor/symfony/var-dumper/Caster/ImgStub.php index 05789fe33..a16681f73 100644 --- a/vendor/symfony/var-dumper/Caster/ImgStub.php +++ b/vendor/symfony/var-dumper/Caster/ImgStub.php @@ -16,7 +16,7 @@ namespace Symfony\Component\VarDumper\Caster; */ class ImgStub extends ConstStub { - public function __construct(string $data, string $contentType, string $size) + public function __construct(string $data, string $contentType, string $size = '') { $this->value = ''; $this->attr['img-data'] = $data; diff --git a/vendor/symfony/var-dumper/Caster/IntlCaster.php b/vendor/symfony/var-dumper/Caster/IntlCaster.php index 581324d10..1ed91d4d6 100644 --- a/vendor/symfony/var-dumper/Caster/IntlCaster.php +++ b/vendor/symfony/var-dumper/Caster/IntlCaster.php @@ -17,11 +17,11 @@ use Symfony\Component\VarDumper\Cloner\Stub; * @author Nicolas Grekas <p@tchwork.com> * @author Jan Schädlich <jan.schaedlich@sensiolabs.de> * - * @final since Symfony 4.4 + * @final */ class IntlCaster { - public static function castMessageFormatter(\MessageFormatter $c, array $a, Stub $stub, $isNested) + public static function castMessageFormatter(\MessageFormatter $c, array $a, Stub $stub, bool $isNested) { $a += [ Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(), @@ -31,7 +31,7 @@ class IntlCaster return self::castError($c, $a); } - public static function castNumberFormatter(\NumberFormatter $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castNumberFormatter(\NumberFormatter $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $a += [ Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(), @@ -108,7 +108,7 @@ class IntlCaster return self::castError($c, $a); } - public static function castIntlTimeZone(\IntlTimeZone $c, array $a, Stub $stub, $isNested) + public static function castIntlTimeZone(\IntlTimeZone $c, array $a, Stub $stub, bool $isNested) { $a += [ Caster::PREFIX_VIRTUAL.'display_name' => $c->getDisplayName(), @@ -125,7 +125,7 @@ class IntlCaster return self::castError($c, $a); } - public static function castIntlCalendar(\IntlCalendar $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castIntlCalendar(\IntlCalendar $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $a += [ Caster::PREFIX_VIRTUAL.'type' => $c->getType(), @@ -142,7 +142,7 @@ class IntlCaster return self::castError($c, $a); } - public static function castIntlDateFormatter(\IntlDateFormatter $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castIntlDateFormatter(\IntlDateFormatter $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $a += [ Caster::PREFIX_VIRTUAL.'locale' => $c->getLocale(), @@ -158,7 +158,7 @@ class IntlCaster return self::castError($c, $a); } - private static function castError($c, array $a): array + private static function castError(object $c, array $a): array { if ($errorCode = $c->getErrorCode()) { $a += [ diff --git a/vendor/symfony/var-dumper/Caster/LinkStub.php b/vendor/symfony/var-dumper/Caster/LinkStub.php index c619d9dcb..7e0780339 100644 --- a/vendor/symfony/var-dumper/Caster/LinkStub.php +++ b/vendor/symfony/var-dumper/Caster/LinkStub.php @@ -43,7 +43,7 @@ class LinkStub extends ConstStub return; } - if (!file_exists($href)) { + if (!is_file($href)) { return; } if ($line) { @@ -72,7 +72,7 @@ class LinkStub extends ConstStub if ('C' === $class[0] && str_starts_with($class, 'ComposerAutoloaderInit')) { $r = new \ReflectionClass($class); $v = \dirname($r->getFileName(), 2); - if (file_exists($v.'/composer/installed.json')) { + if (is_file($v.'/composer/installed.json')) { self::$vendorRoots[] = $v.\DIRECTORY_SEPARATOR; } } @@ -91,7 +91,7 @@ class LinkStub extends ConstStub } $parent = $dir; - while (!@file_exists($parent.'/composer.json')) { + while (!@is_file($parent.'/composer.json')) { if (!@file_exists($parent)) { // open_basedir restriction in effect break; diff --git a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php b/vendor/symfony/var-dumper/Caster/MemcachedCaster.php index 696cef18e..cfef19acc 100644 --- a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +++ b/vendor/symfony/var-dumper/Caster/MemcachedCaster.php @@ -16,14 +16,14 @@ use Symfony\Component\VarDumper\Cloner\Stub; /** * @author Jan Schädlich <jan.schaedlich@sensiolabs.de> * - * @final since Symfony 4.4 + * @final */ class MemcachedCaster { private static $optionConstants; private static $defaultOptions; - public static function castMemcached(\Memcached $c, array $a, Stub $stub, $isNested) + public static function castMemcached(\Memcached $c, array $a, Stub $stub, bool $isNested) { $a += [ Caster::PREFIX_VIRTUAL.'servers' => $c->getServerList(), diff --git a/vendor/symfony/var-dumper/Caster/PdoCaster.php b/vendor/symfony/var-dumper/Caster/PdoCaster.php index 47b0a62b7..140473b53 100644 --- a/vendor/symfony/var-dumper/Caster/PdoCaster.php +++ b/vendor/symfony/var-dumper/Caster/PdoCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class PdoCaster { @@ -59,7 +59,7 @@ class PdoCaster ], ]; - public static function castPdo(\PDO $c, array $a, Stub $stub, $isNested) + public static function castPdo(\PDO $c, array $a, Stub $stub, bool $isNested) { $attr = []; $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE); @@ -108,7 +108,7 @@ class PdoCaster return $a; } - public static function castPdoStatement(\PDOStatement $c, array $a, Stub $stub, $isNested) + public static function castPdoStatement(\PDOStatement $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; $a[$prefix.'errorInfo'] = $c->errorInfo(); diff --git a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php index 3097c5184..d8e5b5253 100644 --- a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php +++ b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class PgSqlCaster { @@ -69,14 +69,14 @@ class PgSqlCaster 'function' => \PGSQL_DIAG_SOURCE_FUNCTION, ]; - public static function castLargeObject($lo, array $a, Stub $stub, $isNested) + public static function castLargeObject($lo, array $a, Stub $stub, bool $isNested) { $a['seek position'] = pg_lo_tell($lo); return $a; } - public static function castLink($link, array $a, Stub $stub, $isNested) + public static function castLink($link, array $a, Stub $stub, bool $isNested) { $a['status'] = pg_connection_status($link); $a['status'] = new ConstStub(\PGSQL_CONNECTION_OK === $a['status'] ? 'PGSQL_CONNECTION_OK' : 'PGSQL_CONNECTION_BAD', $a['status']); @@ -108,7 +108,7 @@ class PgSqlCaster return $a; } - public static function castResult($result, array $a, Stub $stub, $isNested) + public static function castResult($result, array $a, Stub $stub, bool $isNested) { $a['num rows'] = pg_num_rows($result); $a['status'] = pg_result_status($result); diff --git a/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php b/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php index ec02f8137..e7120191f 100644 --- a/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php +++ b/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php @@ -17,11 +17,11 @@ use Symfony\Component\VarDumper\Cloner\Stub; /** * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class ProxyManagerCaster { - public static function castProxy(ProxyInterface $c, array $a, Stub $stub, $isNested) + public static function castProxy(ProxyInterface $c, array $a, Stub $stub, bool $isNested) { if ($parent = get_parent_class($c)) { $stub->class .= ' - '.$parent; diff --git a/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php b/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php new file mode 100644 index 000000000..db4bba8d3 --- /dev/null +++ b/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php @@ -0,0 +1,186 @@ +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\VarDumper\Caster; + +use RdKafka\Conf; +use RdKafka\Exception as RdKafkaException; +use RdKafka\KafkaConsumer; +use RdKafka\Message; +use RdKafka\Metadata\Broker as BrokerMetadata; +use RdKafka\Metadata\Collection as CollectionMetadata; +use RdKafka\Metadata\Partition as PartitionMetadata; +use RdKafka\Metadata\Topic as TopicMetadata; +use RdKafka\Topic; +use RdKafka\TopicConf; +use RdKafka\TopicPartition; +use Symfony\Component\VarDumper\Cloner\Stub; + +/** + * Casts RdKafka related classes to array representation. + * + * @author Romain Neutron <imprec@gmail.com> + */ +class RdKafkaCaster +{ + public static function castKafkaConsumer(KafkaConsumer $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + try { + $assignment = $c->getAssignment(); + } catch (RdKafkaException $e) { + $assignment = []; + } + + $a += [ + $prefix.'subscription' => $c->getSubscription(), + $prefix.'assignment' => $assignment, + ]; + + $a += self::extractMetadata($c); + + return $a; + } + + public static function castTopic(Topic $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'name' => $c->getName(), + ]; + + return $a; + } + + public static function castTopicPartition(TopicPartition $c, array $a) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'offset' => $c->getOffset(), + $prefix.'partition' => $c->getPartition(), + $prefix.'topic' => $c->getTopic(), + ]; + + return $a; + } + + public static function castMessage(Message $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'errstr' => $c->errstr(), + ]; + + return $a; + } + + public static function castConf(Conf $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + foreach ($c->dump() as $key => $value) { + $a[$prefix.$key] = $value; + } + + return $a; + } + + public static function castTopicConf(TopicConf $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + foreach ($c->dump() as $key => $value) { + $a[$prefix.$key] = $value; + } + + return $a; + } + + public static function castRdKafka(\RdKafka $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'out_q_len' => $c->getOutQLen(), + ]; + + $a += self::extractMetadata($c); + + return $a; + } + + public static function castCollectionMetadata(CollectionMetadata $c, array $a, Stub $stub, bool $isNested) + { + $a += iterator_to_array($c); + + return $a; + } + + public static function castTopicMetadata(TopicMetadata $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'name' => $c->getTopic(), + $prefix.'partitions' => $c->getPartitions(), + ]; + + return $a; + } + + public static function castPartitionMetadata(PartitionMetadata $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'id' => $c->getId(), + $prefix.'err' => $c->getErr(), + $prefix.'leader' => $c->getLeader(), + ]; + + return $a; + } + + public static function castBrokerMetadata(BrokerMetadata $c, array $a, Stub $stub, bool $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + + $a += [ + $prefix.'id' => $c->getId(), + $prefix.'host' => $c->getHost(), + $prefix.'port' => $c->getPort(), + ]; + + return $a; + } + + private static function extractMetadata($c) + { + $prefix = Caster::PREFIX_VIRTUAL; + + try { + $m = $c->getMetadata(true, null, 500); + } catch (RdKafkaException $e) { + return []; + } + + return [ + $prefix.'orig_broker_id' => $m->getOrigBrokerId(), + $prefix.'orig_broker_name' => $m->getOrigBrokerName(), + $prefix.'brokers' => $m->getBrokers(), + $prefix.'topics' => $m->getTopics(), + ]; + } +} diff --git a/vendor/symfony/var-dumper/Caster/RedisCaster.php b/vendor/symfony/var-dumper/Caster/RedisCaster.php index bd877cb3e..8f97eaad3 100644 --- a/vendor/symfony/var-dumper/Caster/RedisCaster.php +++ b/vendor/symfony/var-dumper/Caster/RedisCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class RedisCaster { @@ -46,7 +46,7 @@ class RedisCaster \RedisCluster::FAILOVER_DISTRIBUTE_SLAVES => 'DISTRIBUTE_SLAVES', ]; - public static function castRedis(\Redis $c, array $a, Stub $stub, $isNested) + public static function castRedis(\Redis $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -72,7 +72,7 @@ class RedisCaster ]; } - public static function castRedisArray(\RedisArray $c, array $a, Stub $stub, $isNested) + public static function castRedisArray(\RedisArray $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -84,7 +84,7 @@ class RedisCaster ]; } - public static function castRedisCluster(\RedisCluster $c, array $a, Stub $stub, $isNested) + public static function castRedisCluster(\RedisCluster $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; $failover = $c->getOption(\RedisCluster::OPT_SLAVE_FAILOVER); diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php index 2a74b25f2..5c644053a 100644 --- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class ReflectionCaster { @@ -35,7 +35,7 @@ class ReflectionCaster 'isVariadic' => 'isVariadic', ]; - public static function castClosure(\Closure $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castClosure(\Closure $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $prefix = Caster::PREFIX_VIRTUAL; $c = new \ReflectionFunction($c); @@ -78,7 +78,7 @@ class ReflectionCaster return $a; } - public static function castGenerator(\Generator $c, array $a, Stub $stub, $isNested) + public static function castGenerator(\Generator $c, array $a, Stub $stub, bool $isNested) { // Cannot create ReflectionGenerator based on a terminated Generator try { @@ -92,7 +92,7 @@ class ReflectionCaster return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); } - public static function castType(\ReflectionType $c, array $a, Stub $stub, $isNested) + public static function castType(\ReflectionType $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -114,7 +114,17 @@ class ReflectionCaster return $a; } - public static function castReflectionGenerator(\ReflectionGenerator $c, array $a, Stub $stub, $isNested) + public static function castAttribute(\ReflectionAttribute $c, array $a, Stub $stub, bool $isNested) + { + self::addMap($a, $c, [ + 'name' => 'getName', + 'arguments' => 'getArguments', + ]); + + return $a; + } + + public static function castReflectionGenerator(\ReflectionGenerator $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -149,7 +159,7 @@ class ReflectionCaster return $a; } - public static function castClass(\ReflectionClass $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castClass(\ReflectionClass $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $prefix = Caster::PREFIX_VIRTUAL; @@ -160,7 +170,7 @@ class ReflectionCaster self::addMap($a, $c, [ 'extends' => 'getParentClass', 'implements' => 'getInterfaceNames', - 'constants' => 'getConstants', + 'constants' => 'getReflectionConstants', ]); foreach ($c->getProperties() as $n) { @@ -171,6 +181,8 @@ class ReflectionCaster $a[$prefix.'methods'][$n->name] = $n; } + self::addAttributes($a, $c, $prefix); + if (!($filter & Caster::EXCLUDE_VERBOSE) && !$isNested) { self::addExtra($a, $c); } @@ -178,14 +190,14 @@ class ReflectionCaster return $a; } - public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, array $a, Stub $stub, $isNested, $filter = 0) + public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, array $a, Stub $stub, bool $isNested, int $filter = 0) { $prefix = Caster::PREFIX_VIRTUAL; self::addMap($a, $c, [ 'returnsReference' => 'returnsReference', 'returnType' => 'getReturnType', - 'class' => 'getClosureScopeClass', + 'class' => \PHP_VERSION_ID >= 80111 ? 'getClosureCalledClass' : 'getClosureScopeClass', 'this' => 'getClosureThis', ]); @@ -215,6 +227,8 @@ class ReflectionCaster $a[$prefix.'parameters'] = new EnumStub($a[$prefix.'parameters']); } + self::addAttributes($a, $c, $prefix); + if (!($filter & Caster::EXCLUDE_VERBOSE) && $v = $c->getStaticVariables()) { foreach ($v as $k => &$v) { if (\is_object($v)) { @@ -234,14 +248,24 @@ class ReflectionCaster return $a; } - public static function castMethod(\ReflectionMethod $c, array $a, Stub $stub, $isNested) + public static function castClassConstant(\ReflectionClassConstant $c, array $a, Stub $stub, bool $isNested) + { + $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); + $a[Caster::PREFIX_VIRTUAL.'value'] = $c->getValue(); + + self::addAttributes($a, $c); + + return $a; + } + + public static function castMethod(\ReflectionMethod $c, array $a, Stub $stub, bool $isNested) { $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); return $a; } - public static function castParameter(\ReflectionParameter $c, array $a, Stub $stub, $isNested) + public static function castParameter(\ReflectionParameter $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; @@ -252,6 +276,8 @@ class ReflectionCaster 'allowsNull' => 'allowsNull', ]); + self::addAttributes($a, $c, $prefix); + if ($v = $c->getType()) { $a[$prefix.'typeHint'] = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v; } @@ -279,22 +305,24 @@ class ReflectionCaster return $a; } - public static function castProperty(\ReflectionProperty $c, array $a, Stub $stub, $isNested) + public static function castProperty(\ReflectionProperty $c, array $a, Stub $stub, bool $isNested) { $a[Caster::PREFIX_VIRTUAL.'modifiers'] = implode(' ', \Reflection::getModifierNames($c->getModifiers())); + + self::addAttributes($a, $c); self::addExtra($a, $c); return $a; } - public static function castReference(\ReflectionReference $c, array $a, Stub $stub, $isNested) + public static function castReference(\ReflectionReference $c, array $a, Stub $stub, bool $isNested) { $a[Caster::PREFIX_VIRTUAL.'id'] = $c->getId(); return $a; } - public static function castExtension(\ReflectionExtension $c, array $a, Stub $stub, $isNested) + public static function castExtension(\ReflectionExtension $c, array $a, Stub $stub, bool $isNested) { self::addMap($a, $c, [ 'version' => 'getVersion', @@ -310,7 +338,7 @@ class ReflectionCaster return $a; } - public static function castZendExtension(\ReflectionZendExtension $c, array $a, Stub $stub, $isNested) + public static function castZendExtension(\ReflectionZendExtension $c, array $a, Stub $stub, bool $isNested) { self::addMap($a, $c, [ 'version' => 'getVersion', @@ -390,7 +418,7 @@ class ReflectionCaster } } - private static function addMap(array &$a, $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL) + private static function addMap(array &$a, object $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL) { foreach ($map as $k => $m) { if (\PHP_VERSION_ID >= 80000 && 'isDisabled' === $k) { @@ -402,4 +430,13 @@ class ReflectionCaster } } } + + private static function addAttributes(array &$a, \Reflector $c, string $prefix = Caster::PREFIX_VIRTUAL): void + { + if (\PHP_VERSION_ID >= 80000) { + foreach ($c->getAttributes() as $n) { + $a[$prefix.'attributes'][] = $n; + } + } + } } diff --git a/vendor/symfony/var-dumper/Caster/ResourceCaster.php b/vendor/symfony/var-dumper/Caster/ResourceCaster.php index a3278a886..2c34ca917 100644 --- a/vendor/symfony/var-dumper/Caster/ResourceCaster.php +++ b/vendor/symfony/var-dumper/Caster/ResourceCaster.php @@ -18,21 +18,19 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class ResourceCaster { /** * @param \CurlHandle|resource $h - * - * @return array */ - public static function castCurl($h, array $a, Stub $stub, $isNested) + public static function castCurl($h, array $a, Stub $stub, bool $isNested): array { return curl_getinfo($h); } - public static function castDba($dba, array $a, Stub $stub, $isNested) + public static function castDba($dba, array $a, Stub $stub, bool $isNested) { $list = dba_list(); $a['file'] = $list[(int) $dba]; @@ -40,12 +38,12 @@ class ResourceCaster return $a; } - public static function castProcess($process, array $a, Stub $stub, $isNested) + public static function castProcess($process, array $a, Stub $stub, bool $isNested) { return proc_get_status($process); } - public static function castStream($stream, array $a, Stub $stub, $isNested) + public static function castStream($stream, array $a, Stub $stub, bool $isNested) { $a = stream_get_meta_data($stream) + static::castStreamContext($stream, $a, $stub, $isNested); if ($a['uri'] ?? false) { @@ -55,12 +53,12 @@ class ResourceCaster return $a; } - public static function castStreamContext($stream, array $a, Stub $stub, $isNested) + public static function castStreamContext($stream, array $a, Stub $stub, bool $isNested) { return @stream_context_get_params($stream) ?: $a; } - public static function castGd($gd, array $a, Stub $stub, $isNested) + public static function castGd($gd, array $a, Stub $stub, bool $isNested) { $a['size'] = imagesx($gd).'x'.imagesy($gd); $a['trueColor'] = imageistruecolor($gd); @@ -68,7 +66,7 @@ class ResourceCaster return $a; } - public static function castMysqlLink($h, array $a, Stub $stub, $isNested) + public static function castMysqlLink($h, array $a, Stub $stub, bool $isNested) { $a['host'] = mysql_get_host_info($h); $a['protocol'] = mysql_get_proto_info($h); @@ -77,7 +75,7 @@ class ResourceCaster return $a; } - public static function castOpensslX509($h, array $a, Stub $stub, $isNested) + public static function castOpensslX509($h, array $a, Stub $stub, bool $isNested) { $stub->cut = -1; $info = openssl_x509_parse($h, false); diff --git a/vendor/symfony/var-dumper/Caster/SplCaster.php b/vendor/symfony/var-dumper/Caster/SplCaster.php index be9d66bdd..07f445116 100644 --- a/vendor/symfony/var-dumper/Caster/SplCaster.php +++ b/vendor/symfony/var-dumper/Caster/SplCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class SplCaster { @@ -29,17 +29,17 @@ class SplCaster \SplFileObject::READ_CSV => 'READ_CSV', ]; - public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, $isNested) + public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, bool $isNested) { return self::castSplArray($c, $a, $stub, $isNested); } - public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub, $isNested) + public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub, bool $isNested) { return self::castSplArray($c, $a, $stub, $isNested); } - public static function castHeap(\Iterator $c, array $a, Stub $stub, $isNested) + public static function castHeap(\Iterator $c, array $a, Stub $stub, bool $isNested) { $a += [ Caster::PREFIX_VIRTUAL.'heap' => iterator_to_array(clone $c), @@ -48,7 +48,7 @@ class SplCaster return $a; } - public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, Stub $stub, $isNested) + public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, Stub $stub, bool $isNested) { $prefix = Caster::PREFIX_VIRTUAL; $mode = $c->getIteratorMode(); @@ -63,7 +63,7 @@ class SplCaster return $a; } - public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNested) + public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, bool $isNested) { static $map = [ 'path' => 'getPath', @@ -147,7 +147,7 @@ class SplCaster return $a; } - public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $isNested) + public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, bool $isNested) { static $map = [ 'csvControl' => 'getCsvControl', @@ -184,7 +184,7 @@ class SplCaster return $a; } - public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $stub, $isNested) + public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $stub, bool $isNested) { $storage = []; unset($a[Caster::PREFIX_DYNAMIC."\0gcdata"]); // Don't hit https://bugs.php.net/65967 @@ -205,14 +205,14 @@ class SplCaster return $a; } - public static function castOuterIterator(\OuterIterator $c, array $a, Stub $stub, $isNested) + public static function castOuterIterator(\OuterIterator $c, array $a, Stub $stub, bool $isNested) { $a[Caster::PREFIX_VIRTUAL.'innerIterator'] = $c->getInnerIterator(); return $a; } - public static function castWeakReference(\WeakReference $c, array $a, Stub $stub, $isNested) + public static function castWeakReference(\WeakReference $c, array $a, Stub $stub, bool $isNested) { $a[Caster::PREFIX_VIRTUAL.'object'] = $c->get(); diff --git a/vendor/symfony/var-dumper/Caster/StubCaster.php b/vendor/symfony/var-dumper/Caster/StubCaster.php index b6332fb74..32ead7c27 100644 --- a/vendor/symfony/var-dumper/Caster/StubCaster.php +++ b/vendor/symfony/var-dumper/Caster/StubCaster.php @@ -18,11 +18,11 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class StubCaster { - public static function castStub(Stub $c, array $a, Stub $stub, $isNested) + public static function castStub(Stub $c, array $a, Stub $stub, bool $isNested) { if ($isNested) { $stub->type = $c->type; @@ -43,12 +43,12 @@ class StubCaster return $a; } - public static function castCutArray(CutArrayStub $c, array $a, Stub $stub, $isNested) + public static function castCutArray(CutArrayStub $c, array $a, Stub $stub, bool $isNested) { return $isNested ? $c->preservedSubset : $a; } - public static function cutInternals($obj, array $a, Stub $stub, $isNested) + public static function cutInternals($obj, array $a, Stub $stub, bool $isNested) { if ($isNested) { $stub->cut += \count($a); @@ -59,7 +59,7 @@ class StubCaster return $a; } - public static function castEnum(EnumStub $c, array $a, Stub $stub, $isNested) + public static function castEnum(EnumStub $c, array $a, Stub $stub, bool $isNested) { if ($isNested) { $stub->class = $c->dumpKeys ? '' : null; diff --git a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php b/vendor/symfony/var-dumper/Caster/SymfonyCaster.php index 06f213ef0..08428b927 100644 --- a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php +++ b/vendor/symfony/var-dumper/Caster/SymfonyCaster.php @@ -12,10 +12,12 @@ namespace Symfony\Component\VarDumper\Caster; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Uid\Ulid; +use Symfony\Component\Uid\Uuid; use Symfony\Component\VarDumper\Cloner\Stub; /** - * @final since Symfony 4.4 + * @final */ class SymfonyCaster { @@ -28,7 +30,7 @@ class SymfonyCaster 'format' => 'getRequestFormat', ]; - public static function castRequest(Request $request, array $a, Stub $stub, $isNested) + public static function castRequest(Request $request, array $a, Stub $stub, bool $isNested) { $clone = null; @@ -45,7 +47,7 @@ class SymfonyCaster return $a; } - public static function castHttpClient($client, array $a, Stub $stub, $isNested) + public static function castHttpClient($client, array $a, Stub $stub, bool $isNested) { $multiKey = sprintf("\0%s\0multi", \get_class($client)); if (isset($a[$multiKey])) { @@ -55,7 +57,7 @@ class SymfonyCaster return $a; } - public static function castHttpClientResponse($response, array $a, Stub $stub, $isNested) + public static function castHttpClientResponse($response, array $a, Stub $stub, bool $isNested) { $stub->cut += \count($a); $a = []; @@ -66,4 +68,30 @@ class SymfonyCaster return $a; } + + public static function castUuid(Uuid $uuid, array $a, Stub $stub, bool $isNested) + { + $a[Caster::PREFIX_VIRTUAL.'toBase58'] = $uuid->toBase58(); + $a[Caster::PREFIX_VIRTUAL.'toBase32'] = $uuid->toBase32(); + + // symfony/uid >= 5.3 + if (method_exists($uuid, 'getDateTime')) { + $a[Caster::PREFIX_VIRTUAL.'time'] = $uuid->getDateTime()->format('Y-m-d H:i:s.u \U\T\C'); + } + + return $a; + } + + public static function castUlid(Ulid $ulid, array $a, Stub $stub, bool $isNested) + { + $a[Caster::PREFIX_VIRTUAL.'toBase58'] = $ulid->toBase58(); + $a[Caster::PREFIX_VIRTUAL.'toRfc4122'] = $ulid->toRfc4122(); + + // symfony/uid >= 5.3 + if (method_exists($ulid, 'getDateTime')) { + $a[Caster::PREFIX_VIRTUAL.'time'] = $ulid->getDateTime()->format('Y-m-d H:i:s.v \U\T\C'); + } + + return $a; + } } diff --git a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php index 9f5a375b4..5b455651b 100644 --- a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +++ b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Baptiste Clavié <clavie.b@gmail.com> * - * @final since Symfony 4.4 + * @final */ class XmlReaderCaster { @@ -43,7 +43,7 @@ class XmlReaderCaster \XMLReader::XML_DECLARATION => 'XML_DECLARATION', ]; - public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, $isNested) + public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, bool $isNested) { try { $properties = [ diff --git a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php index 455fc065b..ba55fcedd 100644 --- a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php +++ b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php @@ -18,7 +18,7 @@ use Symfony\Component\VarDumper\Cloner\Stub; * * @author Nicolas Grekas <p@tchwork.com> * - * @final since Symfony 4.4 + * @final */ class XmlResourceCaster { @@ -47,7 +47,7 @@ class XmlResourceCaster \XML_ERROR_EXTERNAL_ENTITY_HANDLING => 'XML_ERROR_EXTERNAL_ENTITY_HANDLING', ]; - public static function castXml($h, array $a, Stub $stub, $isNested) + public static function castXml($h, array $a, Stub $stub, bool $isNested) { $a['current_byte_index'] = xml_get_current_byte_index($h); $a['current_column_number'] = xml_get_current_column_number($h); diff --git a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php index d2e5039b8..f74a61d7a 100644 --- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +++ b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php @@ -29,11 +29,15 @@ abstract class AbstractCloner implements ClonerInterface 'Symfony\Component\VarDumper\Caster\ConstStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'], 'Symfony\Component\VarDumper\Caster\EnumStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castEnum'], + 'Fiber' => ['Symfony\Component\VarDumper\Caster\FiberCaster', 'castFiber'], + 'Closure' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClosure'], 'Generator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castGenerator'], 'ReflectionType' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castType'], + 'ReflectionAttribute' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castAttribute'], 'ReflectionGenerator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castReflectionGenerator'], 'ReflectionClass' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClass'], + 'ReflectionClassConstant' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClassConstant'], 'ReflectionFunctionAbstract' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castFunctionAbstract'], 'ReflectionMethod' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castMethod'], 'ReflectionParameter' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castParameter'], @@ -76,13 +80,18 @@ abstract class AbstractCloner implements ClonerInterface 'ErrorException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castErrorException'], 'Exception' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castException'], 'Error' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castError'], + 'Symfony\Bridge\Monolog\Logger' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'], 'Symfony\Component\DependencyInjection\ContainerInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'], 'Symfony\Component\EventDispatcher\EventDispatcherInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'], + 'Symfony\Component\HttpClient\AmpHttpClient' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClient'], 'Symfony\Component\HttpClient\CurlHttpClient' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClient'], 'Symfony\Component\HttpClient\NativeHttpClient' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClient'], + 'Symfony\Component\HttpClient\Response\AmpResponse' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClientResponse'], 'Symfony\Component\HttpClient\Response\CurlResponse' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClientResponse'], 'Symfony\Component\HttpClient\Response\NativeResponse' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castHttpClientResponse'], 'Symfony\Component\HttpFoundation\Request' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castRequest'], + 'Symfony\Component\Uid\Ulid' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castUlid'], + 'Symfony\Component\Uid\Uuid' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castUuid'], 'Symfony\Component\VarDumper\Exception\ThrowingCasterException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castThrowingCasterException'], 'Symfony\Component\VarDumper\Caster\TraceStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castTraceStub'], 'Symfony\Component\VarDumper\Caster\FrameStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castFrameStub'], @@ -171,14 +180,34 @@ abstract class AbstractCloner implements ClonerInterface 'XmlParser' => ['Symfony\Component\VarDumper\Caster\XmlResourceCaster', 'castXml'], ':xml' => ['Symfony\Component\VarDumper\Caster\XmlResourceCaster', 'castXml'], + + 'RdKafka' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castRdKafka'], + 'RdKafka\Conf' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castConf'], + 'RdKafka\KafkaConsumer' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castKafkaConsumer'], + 'RdKafka\Metadata\Broker' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castBrokerMetadata'], + 'RdKafka\Metadata\Collection' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castCollectionMetadata'], + 'RdKafka\Metadata\Partition' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castPartitionMetadata'], + 'RdKafka\Metadata\Topic' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicMetadata'], + 'RdKafka\Message' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castMessage'], + 'RdKafka\Topic' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopic'], + 'RdKafka\TopicPartition' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicPartition'], + 'RdKafka\TopicConf' => ['Symfony\Component\VarDumper\Caster\RdKafkaCaster', 'castTopicConf'], ]; protected $maxItems = 2500; protected $maxString = -1; protected $minDepth = 1; + /** + * @var array<string, list<callable>> + */ private $casters = []; + + /** + * @var callable|null + */ private $prevErrorHandler; + private $classInfo = []; private $filter = 0; @@ -214,33 +243,27 @@ abstract class AbstractCloner implements ClonerInterface /** * Sets the maximum number of items to clone past the minimum depth in nested structures. - * - * @param int $maxItems */ - public function setMaxItems($maxItems) + public function setMaxItems(int $maxItems) { - $this->maxItems = (int) $maxItems; + $this->maxItems = $maxItems; } /** * Sets the maximum cloned length for strings. - * - * @param int $maxString */ - public function setMaxString($maxString) + public function setMaxString(int $maxString) { - $this->maxString = (int) $maxString; + $this->maxString = $maxString; } /** * Sets the minimum tree depth where we are guaranteed to clone all the items. After this * depth is reached, only setMaxItems items will be cloned. - * - * @param int $minDepth */ - public function setMinDepth($minDepth) + public function setMinDepth(int $minDepth) { - $this->minDepth = (int) $minDepth; + $this->minDepth = $minDepth; } /** @@ -249,9 +272,9 @@ abstract class AbstractCloner implements ClonerInterface * @param mixed $var Any PHP variable * @param int $filter A bit field of Caster::EXCLUDE_* constants * - * @return Data The cloned variable represented by a Data object + * @return Data */ - public function cloneVar($var, $filter = 0) + public function cloneVar($var, int $filter = 0) { $this->prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) { if (\E_RECOVERABLE_ERROR === $type || \E_USER_ERROR === $type) { @@ -286,7 +309,7 @@ abstract class AbstractCloner implements ClonerInterface * * @param mixed $var Any PHP variable * - * @return array The cloned variable represented in an array + * @return array */ abstract protected function doClone($var); @@ -295,9 +318,9 @@ abstract class AbstractCloner implements ClonerInterface * * @param bool $isNested True if the object is nested in the dumped structure * - * @return array The object casted as array + * @return array */ - protected function castObject(Stub $stub, $isNested) + protected function castObject(Stub $stub, bool $isNested) { $obj = $stub->value; $class = $stub->class; @@ -354,9 +377,9 @@ abstract class AbstractCloner implements ClonerInterface * * @param bool $isNested True if the object is nested in the dumped structure * - * @return array The resource casted as array + * @return array */ - protected function castResource(Stub $stub, $isNested) + protected function castResource(Stub $stub, bool $isNested) { $a = []; $res = $stub->value; diff --git a/vendor/symfony/var-dumper/Cloner/ClonerInterface.php b/vendor/symfony/var-dumper/Cloner/ClonerInterface.php index 7ed287a2d..90b149532 100644 --- a/vendor/symfony/var-dumper/Cloner/ClonerInterface.php +++ b/vendor/symfony/var-dumper/Cloner/ClonerInterface.php @@ -21,7 +21,7 @@ interface ClonerInterface * * @param mixed $var Any PHP variable * - * @return Data The cloned variable represented by a Data object + * @return Data */ public function cloneVar($var); } diff --git a/vendor/symfony/var-dumper/Cloner/Data.php b/vendor/symfony/var-dumper/Cloner/Data.php index 8f621b12a..ea8f0f33a 100644 --- a/vendor/symfony/var-dumper/Cloner/Data.php +++ b/vendor/symfony/var-dumper/Cloner/Data.php @@ -36,7 +36,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate } /** - * @return string|null The type of the value + * @return string|null */ public function getType() { @@ -65,9 +65,11 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate } /** + * Returns a native representation of the original value. + * * @param array|bool $recursive Whether values should be resolved recursively or not * - * @return string|int|float|bool|array|Data[]|null A native representation of the original value + * @return string|int|float|bool|array|Data[]|null */ public function getValue($recursive = false) { @@ -124,13 +126,13 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate public function getIterator() { if (!\is_array($value = $this->getValue())) { - throw new \LogicException(sprintf('"%s" object holds non-iterable type "%s".', self::class, \gettype($value))); + throw new \LogicException(sprintf('"%s" object holds non-iterable type "%s".', self::class, get_debug_type($value))); } yield from $value; } - public function __get($key) + public function __get(string $key) { if (null !== $data = $this->seek($key)) { $item = $this->getStub($data->data[$data->position][$data->key]); @@ -144,7 +146,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * @return bool */ - public function __isset($key) + public function __isset(string $key) { return null !== $this->seek($key); } @@ -202,14 +204,12 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * Returns a depth limited clone of $this. * - * @param int $maxDepth The max dumped depth level - * * @return static */ - public function withMaxDepth($maxDepth) + public function withMaxDepth(int $maxDepth) { $data = clone $this; - $data->maxDepth = (int) $maxDepth; + $data->maxDepth = $maxDepth; return $data; } @@ -217,14 +217,12 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * Limits the number of elements per depth level. * - * @param int $maxItemsPerDepth The max number of items dumped per depth level - * * @return static */ - public function withMaxItemsPerDepth($maxItemsPerDepth) + public function withMaxItemsPerDepth(int $maxItemsPerDepth) { $data = clone $this; - $data->maxItemsPerDepth = (int) $maxItemsPerDepth; + $data->maxItemsPerDepth = $maxItemsPerDepth; return $data; } @@ -236,7 +234,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate * * @return static */ - public function withRefHandles($useRefHandles) + public function withRefHandles(bool $useRefHandles) { $data = clone $this; $data->useRefHandles = $useRefHandles ? -1 : 0; @@ -260,7 +258,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate * * @param string|int $key The key to seek to * - * @return static|null Null if the key is not set + * @return static|null */ public function seek($key) { diff --git a/vendor/symfony/var-dumper/Cloner/DumperInterface.php b/vendor/symfony/var-dumper/Cloner/DumperInterface.php index ec8ef2727..6d60b723c 100644 --- a/vendor/symfony/var-dumper/Cloner/DumperInterface.php +++ b/vendor/symfony/var-dumper/Cloner/DumperInterface.php @@ -24,7 +24,7 @@ interface DumperInterface * @param string $type The PHP type of the value being dumped * @param string|int|float|bool $value The scalar value being dumped */ - public function dumpScalar(Cursor $cursor, $type, $value); + public function dumpScalar(Cursor $cursor, string $type, $value); /** * Dumps a string. @@ -33,7 +33,7 @@ interface DumperInterface * @param bool $bin Whether $str is UTF-8 or binary encoded * @param int $cut The number of characters $str has been cut by */ - public function dumpString(Cursor $cursor, $str, $bin, $cut); + public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut); /** * Dumps while entering an hash. @@ -42,7 +42,7 @@ interface DumperInterface * @param string|int $class The object class, resource type or array count * @param bool $hasChild When the dump of the hash has child item */ - public function enterHash(Cursor $cursor, $type, $class, $hasChild); + public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild); /** * Dumps while leaving an hash. @@ -52,5 +52,5 @@ interface DumperInterface * @param bool $hasChild When the dump of the hash has child item * @param int $cut The number of items the hash has been cut by */ - public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut); + public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut); } diff --git a/vendor/symfony/var-dumper/Cloner/VarCloner.php b/vendor/symfony/var-dumper/Cloner/VarCloner.php index cd6e7dcab..80c4a2f83 100644 --- a/vendor/symfony/var-dumper/Cloner/VarCloner.php +++ b/vendor/symfony/var-dumper/Cloner/VarCloner.php @@ -27,13 +27,12 @@ class VarCloner extends AbstractCloner $len = 1; // Length of $queue $pos = 0; // Number of cloned items past the minimum depth $refsCounter = 0; // Hard references counter - $queue = [[$var]]; // This breadth-first queue is the return value - $indexedArrays = []; // Map of queue indexes that hold numerically indexed arrays - $hardRefs = []; // Map of original zval ids to stub objects - $objRefs = []; // Map of original object handles to their stub object counterpart - $objects = []; // Keep a ref to objects to ensure their handle cannot be reused while cloning - $resRefs = []; // Map of original resource handles to their stub object counterpart - $values = []; // Map of stub objects' ids to original values + $queue = [[$var]]; // This breadth-first queue is the return value + $hardRefs = []; // Map of original zval ids to stub objects + $objRefs = []; // Map of original object handles to their stub object counterpart + $objects = []; // Keep a ref to objects to ensure their handle cannot be reused while cloning + $resRefs = []; // Map of original resource handles to their stub object counterpart + $values = []; // Map of stub objects' ids to original values $maxItems = $this->maxItems; $maxString = $this->maxString; $minDepth = $this->minDepth; @@ -63,21 +62,6 @@ class VarCloner extends AbstractCloner } $refs = $vals = $queue[$i]; - if (\PHP_VERSION_ID < 70200 && empty($indexedArrays[$i])) { - // see https://wiki.php.net/rfc/convert_numeric_keys_in_object_array_casts - foreach ($vals as $k => $v) { - if (\is_int($k)) { - continue; - } - foreach ([$k => true] as $gk => $gv) { - } - if ($gk !== $k) { - $fromObjCast = true; - $refs = $vals = array_values($queue[$i]); - break; - } - } - } foreach ($vals as $k => $v) { // $v is the original value or a stub object in case of hard references @@ -116,7 +100,7 @@ class VarCloner extends AbstractCloner $values[$h] = $v; } } - // Create $stub when the original value $v can not be used directly + // Create $stub when the original value $v cannot be used directly // If $v is a nested structure, put that structure in array $a switch (true) { case null === $v: @@ -155,51 +139,54 @@ class VarCloner extends AbstractCloner continue 2; } $stub = $arrayStub; + + if (\PHP_VERSION_ID >= 80100) { + $stub->class = array_is_list($v) ? Stub::ARRAY_INDEXED : Stub::ARRAY_ASSOC; + $a = $v; + break; + } + $stub->class = Stub::ARRAY_INDEXED; $j = -1; foreach ($v as $gk => $gv) { if ($gk !== ++$j) { $stub->class = Stub::ARRAY_ASSOC; + $a = $v; + $a[$gid] = true; break; } } - $a = $v; - if (Stub::ARRAY_ASSOC === $stub->class) { - // Copies of $GLOBALS have very strange behavior, - // let's detect them with some black magic - if (\PHP_VERSION_ID < 80100 && ($a[$gid] = true) && isset($v[$gid])) { - unset($v[$gid]); - $a = []; - foreach ($v as $gk => &$gv) { - if ($v === $gv && (\PHP_VERSION_ID < 70400 || !isset($hardRefs[\ReflectionReference::fromArrayElement($v, $gk)->getId()]))) { - unset($v); - $v = new Stub(); - $v->value = [$v->cut = \count($gv), Stub::TYPE_ARRAY => 0]; - $v->handle = -1; - if (\PHP_VERSION_ID >= 70400) { - $gv = &$a[$gk]; - $hardRefs[\ReflectionReference::fromArrayElement($a, $gk)->getId()] = &$gv; - } else { - $gv = &$hardRefs[spl_object_id($v)]; - } - $gv = $v; + // Copies of $GLOBALS have very strange behavior, + // let's detect them with some black magic + if (isset($v[$gid])) { + unset($v[$gid]); + $a = []; + foreach ($v as $gk => &$gv) { + if ($v === $gv && (\PHP_VERSION_ID < 70400 || !isset($hardRefs[\ReflectionReference::fromArrayElement($v, $gk)->getId()]))) { + unset($v); + $v = new Stub(); + $v->value = [$v->cut = \count($gv), Stub::TYPE_ARRAY => 0]; + $v->handle = -1; + if (\PHP_VERSION_ID >= 70400) { + $gv = &$a[$gk]; + $hardRefs[\ReflectionReference::fromArrayElement($a, $gk)->getId()] = &$gv; + } else { + $gv = &$hardRefs[spl_object_id($v)]; } - - $a[$gk] = &$gv; + $gv = $v; } - unset($gv); - } else { - $a = $v; + + $a[$gk] = &$gv; } - } elseif (\PHP_VERSION_ID < 70200) { - $indexedArrays[$len] = true; + unset($gv); + } else { + $a = $v; } break; case \is_object($v): - case $v instanceof \__PHP_Incomplete_Class: if (empty($objRefs[$h = spl_object_id($v)])) { $stub = new Stub(); $stub->type = Stub::TYPE_OBJECT; diff --git a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php b/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php index 7d9ec0e7e..2afaa7bf3 100644 --- a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +++ b/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php @@ -11,7 +11,6 @@ namespace Symfony\Component\VarDumper\Command\Descriptor; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; @@ -29,12 +28,10 @@ class CliDescriptor implements DumpDescriptorInterface { private $dumper; private $lastIdentifier; - private $supportsHref; public function __construct(CliDumper $dumper) { $this->dumper = $dumper; - $this->supportsHref = method_exists(OutputFormatterStyle::class, 'setHref'); } public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void @@ -66,8 +63,7 @@ class CliDescriptor implements DumpDescriptorInterface if (isset($context['source'])) { $source = $context['source']; $sourceInfo = sprintf('%s on line %d', $source['name'], $source['line']); - $fileLink = $source['file_link'] ?? null; - if ($this->supportsHref && $fileLink) { + if ($fileLink = $source['file_link'] ?? null) { $sourceInfo = sprintf('<href=%s>%s</>', $fileLink, $sourceInfo); } $rows[] = ['source', $sourceInfo]; @@ -77,11 +73,6 @@ class CliDescriptor implements DumpDescriptorInterface $io->table([], $rows); - if (!$this->supportsHref && isset($fileLink)) { - $io->writeln(['<info>Open source in your IDE/browser:</info>', $fileLink]); - $io->newLine(); - } - $this->dumper->dump($data); $io->newLine(); } diff --git a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php b/vendor/symfony/var-dumper/Command/ServerDumpCommand.php index b66301b52..3a6959522 100644 --- a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +++ b/vendor/symfony/var-dumper/Command/ServerDumpCommand.php @@ -12,6 +12,8 @@ namespace Symfony\Component\VarDumper\Command; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; @@ -35,6 +37,7 @@ use Symfony\Component\VarDumper\Server\DumpServer; class ServerDumpCommand extends Command { protected static $defaultName = 'server:dump'; + protected static $defaultDescription = 'Start a dump server that collects and displays dumps in a single place'; private $server; @@ -54,11 +57,9 @@ class ServerDumpCommand extends Command protected function configure() { - $availableFormats = implode(', ', array_keys($this->descriptors)); - $this - ->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format (%s)', $availableFormats), 'cli') - ->setDescription('Start a dump server that collects and displays dumps in a single place') + ->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format (%s)', implode(', ', $this->getAvailableFormats())), 'cli') + ->setDescription(self::$defaultDescription) ->setHelp(<<<'EOF' <info>%command.name%</info> starts a dump server that collects and displays dumps in a single place for debugging you application: @@ -98,4 +99,16 @@ EOF return 0; } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestOptionValuesFor('format')) { + $suggestions->suggestValues($this->getAvailableFormats()); + } + } + + private function getAvailableFormats(): array + { + return array_keys($this->descriptors); + } } diff --git a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php index 4185329a0..ae19faf61 100644 --- a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +++ b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php @@ -81,11 +81,9 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface /** * Sets the default character encoding to use for non-UTF8 strings. * - * @param string $charset The default character encoding to use for non-UTF8 strings - * * @return string The previous charset */ - public function setCharset($charset) + public function setCharset(string $charset) { $prev = $this->charset; @@ -104,7 +102,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface * * @return string The previous indent pad */ - public function setIndentPad($pad) + public function setIndentPad(string $pad) { $prev = $this->indentPad; $this->indentPad = $pad; @@ -161,7 +159,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface * @param int $depth The recursive depth in the dumped structure for the line being dumped, * or -1 to signal the end-of-dump to the line dumper callable */ - protected function dumpLine($depth) + protected function dumpLine(int $depth) { ($this->lineDumper)($this->line, $depth, $this->indentPad); $this->line = ''; @@ -169,12 +167,8 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface /** * Generic line dumper callback. - * - * @param string $line The line to write - * @param int $depth The recursive depth in the dumped structure - * @param string $indentPad The line indent pad */ - protected function echoLine($line, $depth, $indentPad) + protected function echoLine(string $line, int $depth, string $indentPad) { if (-1 !== $depth) { fwrite($this->outputStream, str_repeat($indentPad, $depth).$line."\n"); @@ -184,11 +178,9 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface /** * Converts a non-UTF-8 string to UTF-8. * - * @param string|null $s The non-UTF-8 string to convert - * - * @return string|null The string converted to UTF-8 + * @return string|null */ - protected function utf8Encode($s) + protected function utf8Encode(?string $s) { if (null === $s || preg_match('//u', $s)) { return $s; diff --git a/vendor/symfony/var-dumper/Dumper/CliDumper.php b/vendor/symfony/var-dumper/Dumper/CliDumper.php index e3861cdaf..94dc8ee97 100644 --- a/vendor/symfony/var-dumper/Dumper/CliDumper.php +++ b/vendor/symfony/var-dumper/Dumper/CliDumper.php @@ -88,22 +88,18 @@ class CliDumper extends AbstractDumper /** * Enables/disables colored output. - * - * @param bool $colors */ - public function setColors($colors) + public function setColors(bool $colors) { - $this->colors = (bool) $colors; + $this->colors = $colors; } /** * Sets the maximum number of characters per line for dumped strings. - * - * @param int $maxStringWidth */ - public function setMaxStringWidth($maxStringWidth) + public function setMaxStringWidth(int $maxStringWidth) { - $this->maxStringWidth = (int) $maxStringWidth; + $this->maxStringWidth = $maxStringWidth; } /** @@ -129,7 +125,7 @@ class CliDumper extends AbstractDumper /** * {@inheritdoc} */ - public function dumpScalar(Cursor $cursor, $type, $value) + public function dumpScalar(Cursor $cursor, string $type, $value) { $this->dumpKey($cursor); @@ -143,11 +139,20 @@ class CliDumper extends AbstractDumper case 'integer': $style = 'num'; + + if (isset($this->styles['integer'])) { + $style = 'integer'; + } + break; case 'double': $style = 'num'; + if (isset($this->styles['float'])) { + $style = 'float'; + } + switch (true) { case \INF === $value: $value = 'INF'; break; case -\INF === $value: $value = '-INF'; break; @@ -183,7 +188,7 @@ class CliDumper extends AbstractDumper /** * {@inheritdoc} */ - public function dumpString(Cursor $cursor, $str, $bin, $cut) + public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut) { $this->dumpKey($cursor); $attr = $cursor->attr; @@ -199,7 +204,7 @@ class CliDumper extends AbstractDumper 'length' => 0 <= $cut ? mb_strlen($str, 'UTF-8') + $cut : 0, 'binary' => $bin, ]; - $str = explode("\n", $str); + $str = $bin && false !== strpos($str, "\0") ? [$str] : explode("\n", $str); if (isset($str[1]) && !isset($str[2]) && !isset($str[1][0])) { unset($str[1]); $str[0] .= "\n"; @@ -271,7 +276,7 @@ class CliDumper extends AbstractDumper /** * {@inheritdoc} */ - public function enterHash(Cursor $cursor, $type, $class, $hasChild) + public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild) { if (null === $this->colors) { $this->colors = $this->supportsColors(); @@ -312,7 +317,7 @@ class CliDumper extends AbstractDumper /** * {@inheritdoc} */ - public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut) + public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut) { if (empty($cursor->attr['cut_hash'])) { $this->dumpEllipsis($cursor, $hasChild, $cut); @@ -328,7 +333,7 @@ class CliDumper extends AbstractDumper * @param bool $hasChild When the dump of the hash has child item * @param int $cut The number of items the hash has been cut by */ - protected function dumpEllipsis(Cursor $cursor, $hasChild, $cut) + protected function dumpEllipsis(Cursor $cursor, bool $hasChild, int $cut) { if ($cut) { $this->line .= ' …'; @@ -430,9 +435,9 @@ class CliDumper extends AbstractDumper * @param string $value The value being styled * @param array $attr Optional context information * - * @return string The value with style decoration + * @return string */ - protected function style($style, $value, $attr = []) + protected function style(string $style, string $value, array $attr = []) { if (null === $this->colors) { $this->colors = $this->supportsColors(); @@ -506,7 +511,7 @@ class CliDumper extends AbstractDumper } /** - * @return bool Tells if the current output stream supports ANSI colors or not + * @return bool */ protected function supportsColors() { @@ -527,12 +532,14 @@ class CliDumper extends AbstractDumper case '--color=yes': case '--color=force': case '--color=always': + case '--colors=always': return static::$defaultColors = true; case '--no-ansi': case '--color=no': case '--color=none': case '--color=never': + case '--colors=never': return static::$defaultColors = false; } } @@ -548,7 +555,7 @@ class CliDumper extends AbstractDumper /** * {@inheritdoc} */ - protected function dumpLine($depth, $endOfValue = false) + protected function dumpLine(int $depth, bool $endOfValue = false) { if ($this->colors) { $this->line = sprintf("\033[%sm%s\033[m", $this->styles['default'], $this->line); @@ -604,17 +611,7 @@ class CliDumper extends AbstractDumper || 'xterm' === getenv('TERM'); } - if (\function_exists('stream_isatty')) { - return @stream_isatty($stream); - } - - if (\function_exists('posix_isatty')) { - return @posix_isatty($stream); - } - - $stat = @fstat($stream); - // Check if formatted mode is S_IFCHR - return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; + return stream_isatty($stream); } /** @@ -631,7 +628,7 @@ class CliDumper extends AbstractDumper || 'xterm' === getenv('TERM') || 'Hyper' === getenv('TERM_PROGRAM'); - if (!$result && \PHP_VERSION_ID >= 70200) { + if (!$result) { $version = sprintf( '%s.%s.%s', PHP_WINDOWS_VERSION_MAJOR, diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php index 38ef3b0f1..532aa0f96 100644 --- a/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php +++ b/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php @@ -18,8 +18,5 @@ namespace Symfony\Component\VarDumper\Dumper\ContextProvider; */ interface ContextProviderInterface { - /** - * @return array|null Context data or null if unable to provide any context - */ public function getContext(): ?array; } diff --git a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php index 9b57f900e..af4de9613 100644 --- a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +++ b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php @@ -116,21 +116,16 @@ class HtmlDumper extends CliDumper /** * Sets an HTML header that will be dumped once in the output stream. - * - * @param string $header An HTML string */ - public function setDumpHeader($header) + public function setDumpHeader(?string $header) { $this->dumpHeader = $header; } /** * Sets an HTML prefix and suffix that will encapse every single dump. - * - * @param string $prefix The prepended HTML string - * @param string $suffix The appended HTML string */ - public function setDumpBoundaries($prefix, $suffix) + public function setDumpBoundaries(string $prefix, string $suffix) { $this->dumpPrefix = $prefix; $this->dumpSuffix = $suffix; @@ -171,6 +166,9 @@ var refStyle = doc.createElement('style'), e.addEventListener(n, cb, false); }; +refStyle.innerHTML = 'pre.sf-dump .sf-dump-compact, .sf-dump-str-collapse .sf-dump-str-collapse, .sf-dump-str-expand .sf-dump-str-expand { display: none; }'; +(doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle); +refStyle = doc.createElement('style'); (doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle); if (!doc.addEventListener) { @@ -424,19 +422,13 @@ return function (root, x) { a.innerHTML += ' '; } a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click] Expand all children'; - a.innerHTML += '<span>▼</span>'; + a.innerHTML += elt.className == 'sf-dump-compact' ? '<span>▶</span>' : '<span>▼</span>'; a.className += ' sf-dump-toggle'; x = 1; if ('sf-dump' != elt.parentNode.className) { x += elt.parentNode.getAttribute('data-depth')/1; } - elt.setAttribute('data-depth', x); - var className = elt.className; - elt.className = 'sf-dump-expanded'; - if (className ? 'sf-dump-expanded' !== className : (x > options.maxDepth)) { - toggle(a); - } } else if (/\bsf-dump-ref\b/.test(elt.className) && (a = elt.getAttribute('href'))) { a = a.slice(1); elt.className += ' '+a; @@ -671,9 +663,6 @@ pre.sf-dump:after { pre.sf-dump span { display: inline; } -pre.sf-dump .sf-dump-compact { - display: none; -} pre.sf-dump a { text-decoration: none; cursor: pointer; @@ -705,12 +694,6 @@ pre.sf-dump code { padding:0; background:none; } -.sf-dump-str-collapse .sf-dump-str-collapse { - display: none; -} -.sf-dump-str-expand .sf-dump-str-expand { - display: none; -} .sf-dump-public.sf-dump-highlight, .sf-dump-protected.sf-dump-highlight, .sf-dump-private.sf-dump-highlight, @@ -802,11 +785,12 @@ EOHTML /** * {@inheritdoc} */ - public function dumpString(Cursor $cursor, $str, $bin, $cut) + public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut) { if ('' === $str && isset($cursor->attr['img-data'], $cursor->attr['content-type'])) { $this->dumpKey($cursor); - $this->line .= $this->style('default', $cursor->attr['img-size'] ?? '', []).' <samp>'; + $this->line .= $this->style('default', $cursor->attr['img-size'] ?? '', []); + $this->line .= $cursor->depth >= $this->displayOptions['maxDepth'] ? ' <samp class=sf-dump-compact>' : ' <samp class=sf-dump-expanded>'; $this->endValue($cursor); $this->line .= $this->indentPad; $this->line .= sprintf('<img src="data:%s;base64,%s" /></samp>', $cursor->attr['content-type'], base64_encode($cursor->attr['img-data'])); @@ -819,25 +803,23 @@ EOHTML /** * {@inheritdoc} */ - public function enterHash(Cursor $cursor, $type, $class, $hasChild) + public function enterHash(Cursor $cursor, int $type, $class, bool $hasChild) { if (Cursor::HASH_OBJECT === $type) { $cursor->attr['depth'] = $cursor->depth; } parent::enterHash($cursor, $type, $class, false); - if ($cursor->skipChildren) { + if ($cursor->skipChildren || $cursor->depth >= $this->displayOptions['maxDepth']) { $cursor->skipChildren = false; $eol = ' class=sf-dump-compact>'; - } elseif ($this->expandNextHash) { + } else { $this->expandNextHash = false; $eol = ' class=sf-dump-expanded>'; - } else { - $eol = '>'; } if ($hasChild) { - $this->line .= '<samp'; + $this->line .= '<samp data-depth='.($cursor->depth + 1); if ($cursor->refIndex) { $r = Cursor::HASH_OBJECT !== $type ? 1 - (Cursor::HASH_RESOURCE !== $type) : 2; $r .= $r && 0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->refIndex; @@ -852,7 +834,7 @@ EOHTML /** * {@inheritdoc} */ - public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut) + public function leaveHash(Cursor $cursor, int $type, $class, bool $hasChild, int $cut) { $this->dumpEllipsis($cursor, $hasChild, $cut); if ($hasChild) { @@ -864,7 +846,7 @@ EOHTML /** * {@inheritdoc} */ - protected function style($style, $value, $attr = []) + protected function style(string $style, string $value, array $attr = []) { if ('' === $value) { return ''; @@ -959,7 +941,7 @@ EOHTML /** * {@inheritdoc} */ - protected function dumpLine($depth, $endOfValue = false) + protected function dumpLine(int $depth, bool $endOfValue = false) { if (-1 === $this->lastDepth) { $this->line = sprintf($this->dumpPrefix, $this->dumpId, $this->indentPad).$this->line; diff --git a/vendor/symfony/var-dumper/Resources/functions/dump.php b/vendor/symfony/var-dumper/Resources/functions/dump.php index a485d573a..f26aad5bd 100644 --- a/vendor/symfony/var-dumper/Resources/functions/dump.php +++ b/vendor/symfony/var-dumper/Resources/functions/dump.php @@ -32,8 +32,15 @@ if (!function_exists('dump')) { } if (!function_exists('dd')) { + /** + * @return never + */ function dd(...$vars) { + if (!in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + foreach ($vars as $v) { VarDumper::dump($v); } diff --git a/vendor/symfony/var-dumper/Server/Connection.php b/vendor/symfony/var-dumper/Server/Connection.php index 55d9214d0..d0611a1f6 100644 --- a/vendor/symfony/var-dumper/Server/Connection.php +++ b/vendor/symfony/var-dumper/Server/Connection.php @@ -23,6 +23,10 @@ class Connection { private $host; private $contextProviders; + + /** + * @var resource|null + */ private $socket; /** diff --git a/vendor/symfony/var-dumper/Server/DumpServer.php b/vendor/symfony/var-dumper/Server/DumpServer.php index 1c2c34812..f9735db78 100644 --- a/vendor/symfony/var-dumper/Server/DumpServer.php +++ b/vendor/symfony/var-dumper/Server/DumpServer.php @@ -25,9 +25,13 @@ use Symfony\Component\VarDumper\Cloner\Stub; class DumpServer { private $host; - private $socket; private $logger; + /** + * @var resource|null + */ + private $socket; + public function __construct(string $host, LoggerInterface $logger = null) { if (!str_contains($host, '://')) { @@ -52,6 +56,10 @@ class DumpServer } foreach ($this->getMessages() as $clientId => $message) { + if ($this->logger) { + $this->logger->info('Received a payload from client {clientId}', ['clientId' => $clientId]); + } + $payload = @unserialize(base64_decode($message), ['allowed_classes' => [Data::class, Stub::class]]); // Impossible to decode the message, give up. diff --git a/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php b/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php index 3d3d18eeb..33d60c020 100644 --- a/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php +++ b/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php @@ -42,20 +42,17 @@ trait VarDumperTestTrait $this->varDumperConfig['flags'] = null; } - public function assertDumpEquals($expected, $data, $filter = 0, $message = '') + public function assertDumpEquals($expected, $data, int $filter = 0, string $message = '') { $this->assertSame($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message); } - public function assertDumpMatchesFormat($expected, $data, $filter = 0, $message = '') + public function assertDumpMatchesFormat($expected, $data, int $filter = 0, string $message = '') { $this->assertStringMatchesFormat($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message); } - /** - * @return string|null - */ - protected function getDump($data, $key = null, $filter = 0) + protected function getDump($data, $key = null, int $filter = 0): ?string { if (null === $flags = $this->varDumperConfig['flags']) { $flags = getenv('DUMP_LIGHT_ARRAY') ? CliDumper::DUMP_LIGHT_ARRAY : 0; diff --git a/vendor/symfony/var-dumper/VarDumper.php b/vendor/symfony/var-dumper/VarDumper.php index febc1e0d1..20429ac78 100644 --- a/vendor/symfony/var-dumper/VarDumper.php +++ b/vendor/symfony/var-dumper/VarDumper.php @@ -11,12 +11,18 @@ namespace Symfony\Component\VarDumper; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpKernel\Debug\FileLinkFormatter; use Symfony\Component\VarDumper\Caster\ReflectionCaster; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\CliDumper; +use Symfony\Component\VarDumper\Dumper\ContextProvider\CliContextProvider; +use Symfony\Component\VarDumper\Dumper\ContextProvider\RequestContextProvider; use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider; use Symfony\Component\VarDumper\Dumper\ContextualizedDumper; use Symfony\Component\VarDumper\Dumper\HtmlDumper; +use Symfony\Component\VarDumper\Dumper\ServerDumper; // Load the global dump() function require_once __DIR__.'/Resources/functions/dump.php'; @@ -26,30 +32,23 @@ require_once __DIR__.'/Resources/functions/dump.php'; */ class VarDumper { + /** + * @var callable|null + */ private static $handler; public static function dump($var) { if (null === self::$handler) { - $cloner = new VarCloner(); - $cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO); - - if (isset($_SERVER['VAR_DUMPER_FORMAT'])) { - $dumper = 'html' === $_SERVER['VAR_DUMPER_FORMAT'] ? new HtmlDumper() : new CliDumper(); - } else { - $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper() : new HtmlDumper(); - } - - $dumper = new ContextualizedDumper($dumper, [new SourceContextProvider()]); - - self::$handler = function ($var) use ($cloner, $dumper) { - $dumper->dump($cloner->cloneVar($var)); - }; + self::register(); } return (self::$handler)($var); } + /** + * @return callable|null + */ public static function setHandler(callable $callable = null) { $prevHandler = self::$handler; @@ -63,4 +62,54 @@ class VarDumper return $prevHandler; } + + private static function register(): void + { + $cloner = new VarCloner(); + $cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO); + + $format = $_SERVER['VAR_DUMPER_FORMAT'] ?? null; + switch (true) { + case 'html' === $format: + $dumper = new HtmlDumper(); + break; + case 'cli' === $format: + $dumper = new CliDumper(); + break; + case 'server' === $format: + case $format && 'tcp' === parse_url($format, \PHP_URL_SCHEME): + $host = 'server' === $format ? $_SERVER['VAR_DUMPER_SERVER'] ?? '127.0.0.1:9912' : $format; + $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) ? new CliDumper() : new HtmlDumper(); + $dumper = new ServerDumper($host, $dumper, self::getDefaultContextProviders()); + break; + default: + $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) ? new CliDumper() : new HtmlDumper(); + } + + if (!$dumper instanceof ServerDumper) { + $dumper = new ContextualizedDumper($dumper, [new SourceContextProvider()]); + } + + self::$handler = function ($var) use ($cloner, $dumper) { + $dumper->dump($cloner->cloneVar($var)); + }; + } + + private static function getDefaultContextProviders(): array + { + $contextProviders = []; + + if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && class_exists(Request::class)) { + $requestStack = new RequestStack(); + $requestStack->push(Request::createFromGlobals()); + $contextProviders['request'] = new RequestContextProvider($requestStack); + } + + $fileLinkFormatter = class_exists(FileLinkFormatter::class) ? new FileLinkFormatter(null, $requestStack ?? null) : null; + + return $contextProviders + [ + 'cli' => new CliContextProvider(), + 'source' => new SourceContextProvider(null, null, $fileLinkFormatter), + ]; + } } diff --git a/vendor/symfony/var-dumper/composer.json b/vendor/symfony/var-dumper/composer.json index d4e64cc9f..dc46f58d9 100644 --- a/vendor/symfony/var-dumper/composer.json +++ b/vendor/symfony/var-dumper/composer.json @@ -16,20 +16,20 @@ } ], "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md index ff78af2fe..b9561b2af 100644 --- a/vendor/symfony/yaml/CHANGELOG.md +++ b/vendor/symfony/yaml/CHANGELOG.md @@ -1,6 +1,47 @@ CHANGELOG ========= +5.4 +--- + + * Add new `lint:yaml dirname --exclude=/dirname/foo.yaml --exclude=/dirname/bar.yaml` + option to exclude one or more specific files from multiple file list + * Allow negatable for the parse tags option with `--no-parse-tags` + +5.3 +--- + + * Added `github` format support & autodetection to render errors as annotations + when running the YAML linter command in a Github Action environment. + +5.1.0 +----- + + * Added support for parsing numbers prefixed with `0o` as octal numbers. + * Deprecated support for parsing numbers starting with `0` as octal numbers. They will be parsed as strings as of Symfony 6.0. Prefix numbers with `0o` + so that they are parsed as octal numbers. + + Before: + + ```yaml + Yaml::parse('072'); + ``` + + After: + + ```yaml + Yaml::parse('0o72'); + ``` + + * Added `yaml-lint` binary. + * Deprecated using the `!php/object` and `!php/const` tags without a value. + +5.0.0 +----- + + * Removed support for mappings inside multi-line strings. + * removed support for implicit STDIN usage in the `lint:yaml` command, use `lint:yaml -` (append a dash) instead to make it explicit. + 4.4.0 ----- diff --git a/vendor/symfony/yaml/Command/LintCommand.php b/vendor/symfony/yaml/Command/LintCommand.php index 98eb8e15c..3ebd570e7 100644 --- a/vendor/symfony/yaml/Command/LintCommand.php +++ b/vendor/symfony/yaml/Command/LintCommand.php @@ -11,7 +11,10 @@ namespace Symfony\Component\Yaml\Command; +use Symfony\Component\Console\CI\GithubActionReporter; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Completion\CompletionInput; +use Symfony\Component\Console\Completion\CompletionSuggestions; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Input\InputArgument; @@ -32,6 +35,7 @@ use Symfony\Component\Yaml\Yaml; class LintCommand extends Command { protected static $defaultName = 'lint:yaml'; + protected static $defaultDescription = 'Lint a YAML file and outputs encountered errors'; private $parser; private $format; @@ -53,10 +57,11 @@ class LintCommand extends Command protected function configure() { $this - ->setDescription('Lint a file and outputs encountered errors') + ->setDescription(self::$defaultDescription) ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') - ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt') - ->addOption('parse-tags', null, InputOption::VALUE_NONE, 'Parse custom tags') + ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format') + ->addOption('exclude', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Path(s) to exclude') + ->addOption('parse-tags', null, InputOption::VALUE_NEGATABLE, 'Parse custom tags', null) ->setHelp(<<<EOF The <info>%command.name%</info> command lints a YAML file and outputs to STDOUT the first encountered syntax error. @@ -74,6 +79,10 @@ Or of a whole directory: <info>php %command.full_name% dirname</info> <info>php %command.full_name% dirname --format=json</info> +You can also exclude one or more specific files: + + <info>php %command.full_name% dirname --exclude="dirname/foo.yaml" --exclude="dirname/bar.yaml"</info> + EOF ) ; @@ -83,22 +92,28 @@ EOF { $io = new SymfonyStyle($input, $output); $filenames = (array) $input->getArgument('filename'); + $excludes = $input->getOption('exclude'); $this->format = $input->getOption('format'); + $flags = $input->getOption('parse-tags'); + + if ('github' === $this->format && !class_exists(GithubActionReporter::class)) { + throw new \InvalidArgumentException('The "github" format is only available since "symfony/console" >= 5.3.'); + } + + if (null === $this->format) { + // Autodetect format according to CI environment + $this->format = class_exists(GithubActionReporter::class) && GithubActionReporter::isGithubActionEnvironment() ? 'github' : 'txt'; + } + + $flags = $flags ? Yaml::PARSE_CUSTOM_TAGS : 0; + $this->displayCorrectFiles = $output->isVerbose(); - $flags = $input->getOption('parse-tags') ? Yaml::PARSE_CUSTOM_TAGS : 0; if (['-'] === $filenames) { return $this->display($io, [$this->validate(file_get_contents('php://stdin'), $flags)]); } - // @deprecated to be removed in 5.0 if (!$filenames) { - if (0 === ftell(\STDIN)) { - @trigger_error('Piping content from STDIN to the "lint:yaml" command without passing the dash symbol "-" as argument is deprecated since Symfony 4.4.', \E_USER_DEPRECATED); - - return $this->display($io, [$this->validate(file_get_contents('php://stdin'), $flags)]); - } - throw new RuntimeException('Please provide a filename or pipe file content to STDIN.'); } @@ -109,7 +124,9 @@ EOF } foreach ($this->getFiles($filename) as $file) { - $filesInfo[] = $this->validate(file_get_contents($file), $flags, $file); + if (!\in_array($file->getPathname(), $excludes, true)) { + $filesInfo[] = $this->validate(file_get_contents($file), $flags, $file); + } } } @@ -144,17 +161,23 @@ EOF return $this->displayTxt($io, $files); case 'json': return $this->displayJson($io, $files); + case 'github': + return $this->displayTxt($io, $files, true); default: throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $this->format)); } } - private function displayTxt(SymfonyStyle $io, array $filesInfo): int + private function displayTxt(SymfonyStyle $io, array $filesInfo, bool $errorAsGithubAnnotations = false): int { $countFiles = \count($filesInfo); $erroredFiles = 0; $suggestTagOption = false; + if ($errorAsGithubAnnotations) { + $githubReporter = new GithubActionReporter($io); + } + foreach ($filesInfo as $info) { if ($info['valid'] && $this->displayCorrectFiles) { $io->comment('<info>OK</info>'.($info['file'] ? sprintf(' in %s', $info['file']) : '')); @@ -166,6 +189,10 @@ EOF if (false !== strpos($info['message'], 'PARSE_CUSTOM_TAGS')) { $suggestTagOption = true; } + + if ($errorAsGithubAnnotations) { + $githubReporter->error($info['message'], $info['file'] ?? 'php://stdin', $info['line']); + } } } @@ -252,4 +279,11 @@ EOF return $default($fileOrDirectory); } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestOptionValuesFor('format')) { + $suggestions->suggestValues(['txt', 'json', 'github']); + } + } } diff --git a/vendor/symfony/yaml/Dumper.php b/vendor/symfony/yaml/Dumper.php index 52db38c3b..679d533cb 100644 --- a/vendor/symfony/yaml/Dumper.php +++ b/vendor/symfony/yaml/Dumper.php @@ -45,8 +45,6 @@ class Dumper * @param int $inline The level where you switch to inline YAML * @param int $indent The level of indentation (used internally) * @param int $flags A bit field of Yaml::DUMP_* constants to customize the dumped YAML string - * - * @return string The YAML representation of the PHP value */ public function dump($input, int $inline = 0, int $indent = 0, int $flags = 0): string { @@ -60,6 +58,8 @@ class Dumper if ($inline <= 0 || (!\is_array($input) && !$input instanceof TaggedValue && $dumpObjectAsInlineMap) || empty($input)) { $output .= $prefix.Inline::dump($input, $flags); + } elseif ($input instanceof TaggedValue) { + $output .= $this->dumpTaggedValue($input, $inline, $indent, $flags, $prefix); } else { $dumpAsMap = Inline::isHash($input); @@ -139,4 +139,28 @@ class Dumper return $output; } + + private function dumpTaggedValue(TaggedValue $value, int $inline, int $indent, int $flags, string $prefix): string + { + $output = sprintf('%s!%s', $prefix ? $prefix.' ' : '', $value->getTag()); + + if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value->getValue()) && false !== strpos($value->getValue(), "\n") && false === strpos($value->getValue(), "\r\n")) { + // If the first line starts with a space character, the spec requires a blockIndicationIndicator + // http://www.yaml.org/spec/1.2/spec.html#id2793979 + $blockIndentationIndicator = (' ' === substr($value->getValue(), 0, 1)) ? (string) $this->indentation : ''; + $output .= sprintf(' |%s', $blockIndentationIndicator); + + foreach (explode("\n", $value->getValue()) as $row) { + $output .= sprintf("\n%s%s%s", $prefix, str_repeat(' ', $this->indentation), $row); + } + + return $output; + } + + if ($inline - 1 <= 0 || null === $value->getValue() || \is_scalar($value->getValue())) { + return $output.' '.$this->dump($value->getValue(), $inline - 1, 0, $flags)."\n"; + } + + return $output."\n".$this->dump($value->getValue(), $inline - 1, $indent, $flags); + } } diff --git a/vendor/symfony/yaml/Escaper.php b/vendor/symfony/yaml/Escaper.php index 9b809df87..e8090d8c6 100644 --- a/vendor/symfony/yaml/Escaper.php +++ b/vendor/symfony/yaml/Escaper.php @@ -49,8 +49,6 @@ class Escaper * Determines if a PHP value would require double quoting in YAML. * * @param string $value A PHP value - * - * @return bool True if the value would require double quotes */ public static function requiresDoubleQuoting(string $value): bool { @@ -61,8 +59,6 @@ class Escaper * Escapes and surrounds a PHP value with double quotes. * * @param string $value A PHP value - * - * @return string The quoted, escaped string */ public static function escapeWithDoubleQuotes(string $value): string { @@ -73,8 +69,6 @@ class Escaper * Determines if a PHP value would require single quoting in YAML. * * @param string $value A PHP value - * - * @return bool True if the value would require single quotes */ public static function requiresSingleQuoting(string $value): bool { @@ -93,8 +87,6 @@ class Escaper * Escapes and surrounds a PHP value with single quotes. * * @param string $value A PHP value - * - * @return string The quoted, escaped string */ public static function escapeWithSingleQuotes(string $value): string { diff --git a/vendor/symfony/yaml/Exception/ParseException.php b/vendor/symfony/yaml/Exception/ParseException.php index 82c05a714..8748d2b22 100644 --- a/vendor/symfony/yaml/Exception/ParseException.php +++ b/vendor/symfony/yaml/Exception/ParseException.php @@ -44,7 +44,7 @@ class ParseException extends RuntimeException /** * Gets the snippet of code near the error. * - * @return string The snippet of code + * @return string */ public function getSnippet() { @@ -53,10 +53,8 @@ class ParseException extends RuntimeException /** * Sets the snippet of code near the error. - * - * @param string $snippet The code snippet */ - public function setSnippet($snippet) + public function setSnippet(string $snippet) { $this->snippet = $snippet; @@ -68,7 +66,7 @@ class ParseException extends RuntimeException * * This method returns null if a string is parsed. * - * @return string The filename + * @return string */ public function getParsedFile() { @@ -77,10 +75,8 @@ class ParseException extends RuntimeException /** * Sets the filename where the error occurred. - * - * @param string $parsedFile The filename */ - public function setParsedFile($parsedFile) + public function setParsedFile(string $parsedFile) { $this->parsedFile = $parsedFile; @@ -90,7 +86,7 @@ class ParseException extends RuntimeException /** * Gets the line where the error occurred. * - * @return int The file line + * @return int */ public function getParsedLine() { @@ -99,10 +95,8 @@ class ParseException extends RuntimeException /** * Sets the line where the error occurred. - * - * @param int $parsedLine The file line */ - public function setParsedLine($parsedLine) + public function setParsedLine(int $parsedLine) { $this->parsedLine = $parsedLine; diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php index 1d4bbda69..f93f59676 100644 --- a/vendor/symfony/yaml/Inline.php +++ b/vendor/symfony/yaml/Inline.php @@ -54,7 +54,7 @@ class Inline * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * @param array $references Mapping of variable names to values * - * @return mixed A PHP value + * @return mixed * * @throws ParseException */ @@ -86,7 +86,7 @@ class Inline ++$i; break; default: - $result = self::parseScalar($value, $flags, null, $i, null === $tag, $references); + $result = self::parseScalar($value, $flags, null, $i, true, $references); } // some comments are allowed at the end @@ -112,8 +112,6 @@ class Inline * @param mixed $value The PHP variable to convert * @param int $flags A bit field of Yaml::DUMP_* constants to customize the dumped YAML string * - * @return string The YAML string representing the PHP value - * * @throws DumpException When trying to dump PHP resource */ public static function dump($value, int $flags = 0): string @@ -174,7 +172,9 @@ class Inline $repr = str_ireplace('INF', '.Inf', $repr); } elseif (floor($value) == $value && $repr == $value) { // Preserve float data type since storing a whole number will result in integer value. - $repr = '!!float '.$repr; + if (false === strpos($repr, 'E')) { + $repr = $repr.'.0'; + } } } else { $repr = \is_string($value) ? "'$value'" : (string) $value; @@ -204,8 +204,6 @@ class Inline * Check if given array is hash or just normal indexed array. * * @param array|\ArrayObject|\stdClass $value The PHP array or array-like object to check - * - * @return bool true if value is hash array, false otherwise */ public static function isHash($value): bool { @@ -229,8 +227,6 @@ class Inline * * @param array $value The PHP array to dump * @param int $flags A bit field of Yaml::DUMP_* constants to customize the dumped YAML string - * - * @return string The YAML string representing the PHP array */ private static function dumpArray(array $value, int $flags): string { @@ -271,7 +267,7 @@ class Inline */ public static function parseScalar(string $scalar, int $flags = 0, array $delimiters = null, int &$i = 0, bool $evaluate = true, array &$references = [], bool &$isQuoted = null) { - if (\in_array($scalar[$i], ['"', "'"])) { + if (\in_array($scalar[$i], ['"', "'"], true)) { // quoted scalar $isQuoted = true; $output = self::parseQuotedScalar($scalar, $i); @@ -329,7 +325,7 @@ class Inline throw new ParseException(sprintf('Malformed inline YAML string: "%s".', substr($scalar, $i)), self::$parsedLineNumber + 1, $scalar, self::$parsedFilename); } - $output = substr($match[0], 1, \strlen($match[0]) - 2); + $output = substr($match[0], 1, -1); $unescaper = new Unescaper(); if ('"' == $scalar[$i]) { @@ -558,7 +554,7 @@ class Inline /** * Evaluates scalars and replaces magic values. * - * @return mixed The evaluated YAML string + * @return mixed * * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved */ @@ -566,7 +562,6 @@ class Inline { $isQuotedString = false; $scalar = trim($scalar); - $scalarLower = strtolower($scalar); if (0 === strpos($scalar, '*')) { if (false !== $pos = strpos($scalar, '#')) { @@ -587,6 +582,8 @@ class Inline return $references[$value]; } + $scalarLower = strtolower($scalar); + switch (true) { case 'null' === $scalarLower: case '' === $scalar: @@ -612,6 +609,8 @@ class Inline case 0 === strpos($scalar, '!php/object'): if (self::$objectSupport) { if (!isset($scalar[12])) { + trigger_deprecation('symfony/yaml', '5.1', 'Using the !php/object tag without a value is deprecated.'); + return false; } @@ -626,6 +625,8 @@ class Inline case 0 === strpos($scalar, '!php/const'): if (self::$constantSupport) { if (!isset($scalar[11])) { + trigger_deprecation('symfony/yaml', '5.1', 'Using the !php/const tag without a value is deprecated.'); + return ''; } @@ -645,13 +646,18 @@ class Inline return (float) substr($scalar, 8); case 0 === strpos($scalar, '!!binary '): return self::evaluateBinaryScalar(substr($scalar, 9)); - default: - throw new ParseException(sprintf('The string "%s" could not be parsed as it uses an unsupported built-in tag.', $scalar), self::$parsedLineNumber, $scalar, self::$parsedFilename); } - // Optimize for returning strings. - // no break - case '+' === $scalar[0] || '-' === $scalar[0] || '.' === $scalar[0] || is_numeric($scalar[0]): + throw new ParseException(sprintf('The string "%s" could not be parsed as it uses an unsupported built-in tag.', $scalar), self::$parsedLineNumber, $scalar, self::$parsedFilename); + case preg_match('/^(?:\+|-)?0o(?P<value>[0-7_]++)$/', $scalar, $matches): + $value = str_replace('_', '', $matches['value']); + + if ('-' === $scalar[0]) { + return -octdec($value); + } + + return octdec($value); + case \in_array($scalar[0], ['+', '-', '.'], true) || is_numeric($scalar[0]): if (Parser::preg_match('{^[+-]?[0-9][0-9_]*$}', $scalar)) { $scalar = str_replace('_', '', $scalar); } @@ -659,6 +665,8 @@ class Inline switch (true) { case ctype_digit($scalar): if (preg_match('/^0[0-7]+$/', $scalar)) { + trigger_deprecation('symfony/yaml', '5.1', 'Support for parsing numbers prefixed with 0 as octal numbers. They will be parsed as strings as of 6.0. Use "%s" to represent the octal number.', '0o'.substr($scalar, 1)); + return octdec($scalar); } @@ -667,6 +675,8 @@ class Inline return ($scalar === (string) $cast) ? $cast : $scalar; case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)): if (preg_match('/^-0[0-7]+$/', $scalar)) { + trigger_deprecation('symfony/yaml', '5.1', 'Support for parsing numbers prefixed with 0 as octal numbers. They will be parsed as strings as of 6.0. Use "%s" to represent the octal number.', '-0o'.substr($scalar, 2)); + return -octdec(substr($scalar, 1)); } @@ -763,7 +773,7 @@ class Inline return base64_decode($parsedBinaryData, true); } - private static function isBinaryString(string $value) + private static function isBinaryString(string $value): bool { return !preg_match('//u', $value) || preg_match('/[^\x00\x07-\x0d\x1B\x20-\xff]/', $value); } @@ -771,8 +781,6 @@ class Inline /** * Gets a regex that matches a YAML date. * - * @return string The regular expression - * * @see http://www.yaml.org/spec/1.2/spec.html#id2761573 */ private static function getTimestampRegex(): string diff --git a/vendor/symfony/yaml/Parser.php b/vendor/symfony/yaml/Parser.php index 5c385f4fa..6b4c790ba 100644 --- a/vendor/symfony/yaml/Parser.php +++ b/vendor/symfony/yaml/Parser.php @@ -29,6 +29,7 @@ class Parser private $filename; private $offset = 0; + private $numberOfParsedLines = 0; private $totalNumberOfLines; private $lines = []; private $currentLineNb = -1; @@ -44,7 +45,7 @@ class Parser * @param string $filename The path to the YAML file to be parsed * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * - * @return mixed The YAML converted to a PHP value + * @return mixed * * @throws ParseException If the file could not be read or the YAML is not valid */ @@ -73,7 +74,7 @@ class Parser * @param string $value A YAML string * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * - * @return mixed A PHP value + * @return mixed * * @throws ParseException If the YAML is not valid */ @@ -102,6 +103,7 @@ class Parser $this->offset = 0; $this->lines = []; $this->currentLine = ''; + $this->numberOfParsedLines = 0; $this->refs = []; $this->skippedLineNumbers = []; $this->locallySkippedLineNumbers = []; @@ -117,10 +119,11 @@ class Parser $this->currentLine = ''; $value = $this->cleanup($value); $this->lines = explode("\n", $value); + $this->numberOfParsedLines = \count($this->lines); $this->locallySkippedLineNumbers = []; if (null === $this->totalNumberOfLines) { - $this->totalNumberOfLines = \count($this->lines); + $this->totalNumberOfLines = $this->numberOfParsedLines; } if (!$this->moveToNextLine()) { @@ -447,7 +450,8 @@ class Parser $value = ''; foreach ($this->lines as $line) { - if ('' !== ltrim($line) && '#' === ltrim($line)[0]) { + $trimmedLine = trim($line); + if ('#' === ($trimmedLine[0] ?? '')) { continue; } // If the indentation is not consistent at offset 0, it is to be considered as a ParseError @@ -456,22 +460,22 @@ class Parser } if (false !== strpos($line, ': ')) { - @trigger_error('Support for mapping keys in multi-line blocks is deprecated since Symfony 4.3 and will throw a ParseException in 5.0.', \E_USER_DEPRECATED); + throw new ParseException('Mapping values are not allowed in multi-line blocks.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } - if ('' === trim($line)) { + if ('' === $trimmedLine) { $value .= "\n"; } elseif (!$previousLineWasNewline && !$previousLineWasTerminatedWithBackslash) { $value .= ' '; } - if ('' !== trim($line) && '\\' === substr($line, -1)) { + if ('' !== $trimmedLine && '\\' === substr($line, -1)) { $value .= ltrim(substr($line, 0, -1)); - } elseif ('' !== trim($line)) { - $value .= trim($line); + } elseif ('' !== $trimmedLine) { + $value .= $trimmedLine; } - if ('' === trim($line)) { + if ('' === $trimmedLine) { $previousLineWasNewline = true; $previousLineWasTerminatedWithBackslash = false; } elseif ('\\' === substr($line, -1)) { @@ -498,7 +502,7 @@ class Parser $data = new TaggedValue($tag, $data); } - if (Yaml::PARSE_OBJECT_FOR_MAP & $flags && !\is_object($data) && 'mapping' === $context) { + if (Yaml::PARSE_OBJECT_FOR_MAP & $flags && 'mapping' === $context && !\is_object($data)) { $object = new \stdClass(); foreach ($data as $key => $value) { @@ -537,8 +541,6 @@ class Parser * Returns the current line number (takes the offset into account). * * @internal - * - * @return int The current line number */ public function getRealCurrentLineNb(): int { @@ -557,11 +559,13 @@ class Parser /** * Returns the current line indentation. - * - * @return int The current line indentation */ private function getCurrentLineIndentation(): int { + if (' ' !== ($this->currentLine[0] ?? '')) { + return 0; + } + return \strlen($this->currentLine) - \strlen(ltrim($this->currentLine, ' ')); } @@ -571,8 +575,6 @@ class Parser * @param int|null $indentation The indent level at which the block is to be read, or null for default * @param bool $inSequence True if the enclosing data structure is a sequence * - * @return string A YAML string - * * @throws ParseException When indentation problem are detected */ private function getNextEmbedBlock(int $indentation = null, bool $inSequence = false): string @@ -682,7 +684,7 @@ class Parser */ private function moveToNextLine(): bool { - if ($this->currentLineNb >= \count($this->lines) - 1) { + if ($this->currentLineNb >= $this->numberOfParsedLines - 1) { return false; } @@ -712,7 +714,7 @@ class Parser * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * @param string $context The parser context (either sequence or mapping) * - * @return mixed A PHP value + * @return mixed * * @throws ParseException When reference does not exist */ @@ -932,8 +934,6 @@ class Parser /** * Returns true if the next line is indented. - * - * @return bool Returns true if the next line is indented, false otherwise */ private function isNextLineIndented(): bool { @@ -963,8 +963,6 @@ class Parser /** * Returns true if the current line is blank or if it is a comment line. - * - * @return bool Returns true if the current line is empty or if it is a comment line, false otherwise */ private function isCurrentLineEmpty(): bool { @@ -973,23 +971,19 @@ class Parser /** * Returns true if the current line is blank. - * - * @return bool Returns true if the current line is blank, false otherwise */ private function isCurrentLineBlank(): bool { - return '' == trim($this->currentLine, ' '); + return '' === $this->currentLine || '' === trim($this->currentLine, ' '); } /** * Returns true if the current line is a comment line. - * - * @return bool Returns true if the current line is a comment line, false otherwise */ private function isCurrentLineComment(): bool { // checking explicitly the first char of the trim is faster than loops or strpos - $ltrimmedLine = ltrim($this->currentLine, ' '); + $ltrimmedLine = '' !== $this->currentLine && ' ' === $this->currentLine[0] ? ltrim($this->currentLine, ' ') : $this->currentLine; return '' !== $ltrimmedLine && '#' === $ltrimmedLine[0]; } @@ -1003,8 +997,6 @@ class Parser * Cleanups a YAML string to be parsed. * * @param string $value The input YAML string - * - * @return string A cleaned up YAML string */ private function cleanup(string $value): string { @@ -1039,8 +1031,6 @@ class Parser /** * Returns true if the next line starts unindented collection. - * - * @return bool Returns true if the next line starts unindented collection, false otherwise */ private function isNextLineUnIndentedCollection(): bool { @@ -1070,8 +1060,6 @@ class Parser /** * Returns true if the string is un-indented collection item. - * - * @return bool Returns true if the string is un-indented collection item, false otherwise */ private function isStringUnIndentedCollectionItem(): bool { diff --git a/vendor/symfony/yaml/Resources/bin/yaml-lint b/vendor/symfony/yaml/Resources/bin/yaml-lint new file mode 100755 index 000000000..143869e01 --- /dev/null +++ b/vendor/symfony/yaml/Resources/bin/yaml-lint @@ -0,0 +1,49 @@ +#!/usr/bin/env php +<?php + +/* + * This file is part of the Symfony package. + * + * (c) Fabien Potencier <fabien@symfony.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if ('cli' !== \PHP_SAPI) { + throw new Exception('This script must be run from the command line.'); +} + +/** + * Runs the Yaml lint command. + * + * @author Jan Schädlich <jan.schaedlich@sensiolabs.de> + */ + +use Symfony\Component\Console\Application; +use Symfony\Component\Yaml\Command\LintCommand; + +function includeIfExists(string $file): bool +{ + return file_exists($file) && include $file; +} + +if ( + !includeIfExists(__DIR__ . '/../../../../autoload.php') && + !includeIfExists(__DIR__ . '/../../vendor/autoload.php') && + !includeIfExists(__DIR__ . '/../../../../../../vendor/autoload.php') +) { + fwrite(STDERR, 'Install dependencies using Composer.'.PHP_EOL); + exit(1); +} + +if (!class_exists(Application::class)) { + fwrite(STDERR, 'You need the "symfony/console" component in order to run the Yaml linter.'.PHP_EOL); + exit(1); +} + +(new Application())->add($command = new LintCommand()) + ->getApplication() + ->setDefaultCommand($command->getName(), true) + ->run() +; diff --git a/vendor/symfony/yaml/Unescaper.php b/vendor/symfony/yaml/Unescaper.php index 6bdf216ae..d1ef04123 100644 --- a/vendor/symfony/yaml/Unescaper.php +++ b/vendor/symfony/yaml/Unescaper.php @@ -32,8 +32,6 @@ class Unescaper * Unescapes a single quoted string. * * @param string $value A single quoted string - * - * @return string The unescaped string */ public function unescapeSingleQuotedString(string $value): string { @@ -44,8 +42,6 @@ class Unescaper * Unescapes a double quoted string. * * @param string $value A double quoted string - * - * @return string The unescaped string */ public function unescapeDoubleQuotedString(string $value): string { @@ -61,8 +57,6 @@ class Unescaper * Unescapes a character that was found in a double-quoted string. * * @param string $value An escaped character - * - * @return string The unescaped character */ private function unescapeCharacter(string $value): string { diff --git a/vendor/symfony/yaml/Yaml.php b/vendor/symfony/yaml/Yaml.php index 4fea47f9a..ea1304528 100644 --- a/vendor/symfony/yaml/Yaml.php +++ b/vendor/symfony/yaml/Yaml.php @@ -46,7 +46,7 @@ class Yaml * @param string $filename The path to the YAML file to be parsed * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * - * @return mixed The YAML converted to a PHP value + * @return mixed * * @throws ParseException If the file could not be read or the YAML is not valid */ @@ -69,7 +69,7 @@ class Yaml * @param string $input A string containing YAML * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior * - * @return mixed The YAML converted to a PHP value + * @return mixed * * @throws ParseException If the YAML is not valid */ @@ -90,8 +90,6 @@ class Yaml * @param int $inline The level where you switch to inline YAML * @param int $indent The amount of spaces to use for indentation of nested nodes * @param int $flags A bit field of DUMP_* constants to customize the dumped YAML string - * - * @return string A YAML string representing the original PHP value */ public static function dump($input, int $inline = 2, int $indent = 4, int $flags = 0): string { diff --git a/vendor/symfony/yaml/composer.json b/vendor/symfony/yaml/composer.json index 10120348a..7fa6e2cc5 100644 --- a/vendor/symfony/yaml/composer.json +++ b/vendor/symfony/yaml/composer.json @@ -16,14 +16,15 @@ } ], "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -34,5 +35,8 @@ "/Tests/" ] }, + "bin": [ + "Resources/bin/yaml-lint" + ], "minimum-stability": "dev" } diff --git a/vendor/unisharp/laravel-ckeditor/.github/ISSUE_TEMPLATE b/vendor/unisharp/laravel-ckeditor/.github/ISSUE_TEMPLATE deleted file mode 100644 index 89dce13b5..000000000 --- a/vendor/unisharp/laravel-ckeditor/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -Please do not report issues in CKEditor. The correct location of CKEditor issue tracker is: http://dev.ckeditor.com/ diff --git a/vendor/unisharp/laravel-ckeditor/CHANGES.md b/vendor/unisharp/laravel-ckeditor/CHANGES.md deleted file mode 100644 index 19c099e4c..000000000 --- a/vendor/unisharp/laravel-ckeditor/CHANGES.md +++ /dev/null @@ -1,1332 +0,0 @@ -CKEditor 4 Changelog -==================== - -## CKEditor 4.7.2 - -New Features: - -* [#455](https://github.com/ckeditor/ckeditor-dev/issues/455): Added [Advanced Content Filter](https://docs.ckeditor.com/#!/guide/dev_acf) integration with the [Justify](http://ckeditor.com/addon/justify) plugin. - -Fixed Issues: - -* [#663](https://github.com/ckeditor/ckeditor-dev/issues/663): [Chrome] Fixed: Clicking the scrollbar throws an `Uncaught TypeError: element.is is not a function` error. -* [#520](https://github.com/ckeditor/ckeditor-dev/issues/520): Fixed: Widgets cannot be properly pasted into a table cell. -* [#579](https://github.com/ckeditor/ckeditor-dev/issues/579): Fixed: Internal `cke_table-faked-selection-table` class is visible in the Stylesheet Classes field of the [Table Properties](http://ckeditor.com/addon/table) dialog. -* [#545](https://github.com/ckeditor/ckeditor-dev/issues/545): [Edge] Fixed: Error thrown when pressing the [Select All](https://ckeditor.com/addon/selectall) button in [Source Mode](http://ckeditor.com/addon/sourcearea). -* [#582](https://github.com/ckeditor/ckeditor-dev/issues/582): Fixed: Double slash in the path to stylesheet needed by the [Table Selection](http://ckeditor.com/addon/tableselection) plugin. Thanks to [Marius Dumitru Florea](https://github.com/mflorea)! -* [#491](https://github.com/ckeditor/ckeditor-dev/issues/491): Fixed: Unnecessary dependency on the [Editor Toolbar](http://ckeditor.com/addon/toolbar) plugin inside the [Notification](http://ckeditor.com/addon/notification) plugin. -* [#646](https://github.com/ckeditor/ckeditor-dev/issues/646): Fixed: Error thrown into the browser console after opening the [Styles Combo](http://ckeditor.com/addon/stylescombo) plugin menu in the editor without any selection. -* [#501](https://github.com/ckeditor/ckeditor-dev/issues/501): Fixed: Double click does not open the dialog for modifying anchors inserted via the [Link](http://ckeditor.com/addon/link) plugin. -* [#9780](https://dev.ckeditor.com/ticket/9780): [IE8-9] Fixed: Clicking inside an empty [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) editor throws an error. -* [#16820](https://dev.ckeditor.com/ticket/16820): [IE10] Fixed: Clicking below a single horizontal rule throws an error. -* [#426](https://github.com/ckeditor/ckeditor-dev/issues/426): Fixed: The [`range.cloneContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) method selects the whole element when the selection starts at the beginning of that element. -* [#644](https://github.com/ckeditor/ckeditor-dev/issues/644): Fixed: The [`range.extractContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) method returns an incorrect result when multiple nodes are selected. -* [#684](https://github.com/ckeditor/ckeditor-dev/issues/684): Fixed: The [`elementPath.contains`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.elementPath-method-contains) method incorrectly excludes the last element instead of root when the `fromTop` parameter is set to `true`. - -Other Changes: - -* Updated the [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) plugin: - * [#148](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/148): Fixed: SCAYT leaves underlined word after the CKEditor Replace dialog corrects it. -* [#751](https://github.com/ckeditor/ckeditor-dev/issues/751): Added the [`CKEDITOR.dom.nodeList.toArray`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList-method-toArray) method which returns an array representation of a [node list](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList). - -## CKEditor 4.7.1 - -New Features: - -* Added a new Mexican Spanish localization. Thanks to [David Alexandro Rodriguez](https://www.transifex.com/user/profile/darsco16/)! -* [#413](https://github.com/ckeditor/ckeditor-dev/issues/413): Added Paste as Plain Text keyboard shortcut to the [Accessibility Help](http://ckeditor.com/addon/a11yhelp) instructions. - -Fixed Issues: - -* [#515](https://github.com/ckeditor/ckeditor-dev/issues/515): [Chrome] Fixed: Mouse actions on CKEditor scrollbar throw an exception when the [Table Selection](http://ckeditor.com/addon/tableselection) plugin is loaded. -* [#493](https://github.com/ckeditor/ckeditor-dev/issues/493): Fixed: Selection started from a nested table causes an error in the browser while scrolling down. -* [#415](https://github.com/ckeditor/ckeditor-dev/issues/415): [Firefox] Fixed: <kbd>Enter</kbd> key breaks the table structure when pressed in a table selection. -* [#457](https://github.com/ckeditor/ckeditor-dev/issues/457): Fixed: Error thrown when deleting content from the editor with no selection. -* [#478](https://github.com/ckeditor/ckeditor-dev/issues/478): [Chrome] Fixed: Error thrown by the [Enter Key](http://ckeditor.com/addon/enterkey) plugin when pressing <kbd>Enter</kbd> with no selection. -* [#424](https://github.com/ckeditor/ckeditor-dev/issues/424): Fixed: Error thrown by [Tab Key Handling](http://ckeditor.com/addon/tab) and [Indent List](http://ckeditor.com/addon/indentlist) plugins when pressing <kbd>Tab</kbd> with no selection in inline editor. -* [#476](https://github.com/ckeditor/ckeditor-dev/issues/476): Fixed: Anchors inserted with the [Link](http://ckeditor.com/addon/link) plugin on collapsed selection cannot be edited. -* [#417](https://github.com/ckeditor/ckeditor-dev/issues/417): Fixed: The [Table Resize](http://ckeditor.com/addon/tableresize) plugin throws an error when used with a table with only header or footer rows. -* [#523](https://github.com/ckeditor/ckeditor-dev/issues/523): Fixed: The [`editor.getCommandKeystroke`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getCommandKeystroke) method does not obtain the correct keystroke. -* [#534](https://github.com/ckeditor/ckeditor-dev/issues/534): [IE] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not work in Quirks Mode. -* [#450](https://github.com/ckeditor/ckeditor-dev/issues/450): Fixed: [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) incorrectly transforms the `margin` CSS property. - -## CKEditor 4.7 - -**Important Notes:** - -* [#13793](http://dev.ckeditor.com/ticket/13793): The [`embed_provider`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-embed_provider) configuration option for the [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins is no longer preset by default. -* The [UI Color](http://ckeditor.com/addon/uicolor) plugin now uses a custom color picker instead of the `YUI 2.7.0` library which has some known vulnerabilities (it's a security precaution, there was no security issue in CKEditor due to the way it was used). - -New Features: - -* [#16755](http://dev.ckeditor.com/ticket/16755): Added the [Table Selection](http://ckeditor.com/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column). -* [#16961](http://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel. -* [#13381](http://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](http://docs.ckeditor.com/#!/api/CKEDITOR.template) removed. CKEditor can now be used with the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)! -* [#16971](http://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](http://ckeditor.com/addon/tabletools) plugin. -* [#16847](http://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. -* [#16818](http://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. -* [#16850](http://dev.ckeditor.com/ticket/16850): Added a new [`config.enableContextMenu`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enableContextMenu) configuration option for enabling and disabling the [context menu](http://ckeditor.com/addon/contextmenu). -* [#16937](http://dev.ckeditor.com/ticket/16937): The `command` parameter in [CKEDITOR.editor.getCommandKeystroke](http://docs.ckeditor.dev/#!/api/CKEDITOR.editor-method-getCommandKeystroke) now also accepts a command name as an argument. -* [#17010](http://dev.ckeditor.com/ticket/17010): The [`CKEDITOR.dom.range.shrink`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-shrink) method now allows for skipping bogus `<br>` elements. - -Fixed Issues: - -* [#16935](http://dev.ckeditor.com/ticket/16935): [Chrome] Fixed: Blurring the editor in [Source Mode](http://ckeditor.com/addon/sourcearea) throws an error. -* [#16825](http://dev.ckeditor.com/ticket/16825): [Chrome] Fixed: Error thrown when destroying a focused inline editor. -* [#16857](http://dev.ckeditor.com/ticket/16857): Fixed: <kbd>Ctrl+Shift+V</kbd> blocked by [Copy Formatting](http://ckeditor.com/addon/copyformatting). -* [#16845](https://dev.ckeditor.com/ticket/16845): [IE] Fixed: Cursor jumps to the top of the scrolled editor after focusing it when the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin is enabled. -* [#16786](http://dev.ckeditor.com/ticket/16786): Fixed: Added missing translations for the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin. -* [#14714](http://dev.ckeditor.com/ticket/14714): [WebKit/Blink] Fixed: Exception thrown on refocusing a blurred inline editor. -* [#16913](http://dev.ckeditor.com/ticket/16913): [Firefox, IE] Fixed: [Paste as Plain Text](http://ckeditor.com/addon/pastetext) keystroke does not work. -* [#16968](http://dev.ckeditor.com/ticket/16968): Fixed: [Safari] [Paste as Plain Text](http://ckeditor.com/addon/pastetext) is not handled by the editor. -* [#16912](http://dev.ckeditor.com/ticket/16912): Fixed: Exception thrown when a single image is pasted using [Paste from Word](http://ckeditor.com/addon/pastefromword). -* [#16821](http://dev.ckeditor.com/ticket/16821): Fixed: Extraneous `<span>` elements with `height` style stacked when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#16866](http://dev.ckeditor.com/ticket/16866): [IE, Edge] Fixed: Whitespaces not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#16860](http://dev.ckeditor.com/ticket/16860): Fixed: Paragraphs which only look like lists incorrectly transformed into them when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#16817](http://dev.ckeditor.com/ticket/16817): Fixed: When [pasting from Word](http://ckeditor.com/addon/pastefromword), paragraphs are transformed into lists with some corrupted data. -* [#16833](http://dev.ckeditor.com/ticket/16833): [IE11] Fixed: Malformed list with headers [pasted from Word](http://ckeditor.com/addon/pastefromword). -* [#16826](http://dev.ckeditor.com/ticket/16826): [IE] Fixed: Superfluous paragraphs within lists [pasted from Word](http://ckeditor.com/addon/pastefromword). -* [#12465](http://dev.ckeditor.com/ticket/12465): Fixed: Cannot change the state of checkboxes or radio buttons if the properties dialog was invoked with a double-click. -* [#13062](http://dev.ckeditor.com/ticket/13062): Fixed: Impossible to unlink when the caret is at the edge of the link. -* [#13585](http://dev.ckeditor.com/ticket/13585): Fixed: Error when wrapping two adjacent `<div>` elements with a `<div>`. -* [#16811](http://dev.ckeditor.com/ticket/16811): Fixed: Table alignment is not preserved by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. -* [#16810](http://dev.ckeditor.com/ticket/16810): Fixed: Vertical align in tables is not supported by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. -* [#11956](http://dev.ckeditor.com/ticket/11956): [Blink, IE] Fixed: [Link](http://ckeditor.com/addon/link) dialog does not open on a double click on the second word of the link with a background color or other styles. -* [#10472](http://dev.ckeditor.com/ticket/10472): Fixed: Unable to use [Table Resize](http://ckeditor.com/addon/tableresize) on table header and footer. -* [#14762](http://dev.ckeditor.com/ticket/14762): Fixed: Hovering over an empty table (without rows or cells) throws an error when the [Table Resize](http://ckeditor.com/addon/tableresize) plugin is active. -* [#16777](https://dev.ckeditor.com/ticket/16777): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin does not allow to drop widgets into the editor. -* [#14894](https://dev.ckeditor.com/ticket/14894): [Chrome] Fixed: The editor scrolls to the top after focusing or when a dialog is opened. -* [#14769](https://dev.ckeditor.com/ticket/14769): Fixed: URLs with '-' in host are not detected by the [Auto Link](http://ckeditor.com/addon/autolink) plugin. -* [#16804](https://dev.ckeditor.com/ticket/16804): Fixed: Focus is not on the first menu item when the user opens a context menu or a drop-down list from the editor toolbar. -* [#14407](https://dev.ckeditor.com/ticket/14407): [IE] Fixed: Non-editable widgets can be edited. -* [#16927](https://dev.ckeditor.com/ticket/16927): Fixed: An error thrown if a bundle containing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin is run in ES5 strict mode. Thanks to [Igor Rubinovich](https://github.com/IgorRubinovich)! -* [#16920](http://dev.ckeditor.com/ticket/16920): Fixed: Several plugins not using the [Dialog](http://ckeditor.com/addon/dialog) plugin as a direct dependency. -* [PR#336](https://github.com/ckeditor/ckeditor-dev/pull/336): Fixed: Typo in [`CKEDITOR.getCss`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getCss) API documentation. Thanks to [knusperpixel](https://github.com/knusperpixel)! -* [#17027](http://dev.ckeditor.com/ticket/17027): Fixed: Command event data should be initialized as an empty object. -* Fixed the behavior of HTML parser when parsing `src`/`srcdoc` attributes of the `<iframe>` element in a CKEditor setup with ACF turned off and without the [Iframe Dialog](http://ckeditor.com/addon/iframe) plugin. The issue was originally reported as a security issue by [Sriramk21](https://twitter.com/sriramk21) from Pegasystems and was later downgraded by the security team into a normal issue due to the requirement of having ACF turned off. Disabling [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) is against [security best practices](http://docs.ckeditor.com/#!/guide/dev_best_practices-section-security), so the problem described above has not been considered a security issue as such. - -Other Changes: - -* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins: - * Fixed: DOM Exception after clicking "Remove Language" on a selected word with enabled [Language](http://ckeditor.com/addon/language) plugin in SCAYT. -* [#16958](http://dev.ckeditor.com/ticket/16958): Switched the default MathJax CDN provider for the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin from `cdn.mathjax.org` to [cdnjs](https://cdnjs.com/), due to closing of `cdn.mathjax.org` scheduled for April 30, 2017. -* [#16954](http://dev.ckeditor.com/ticket/16954): Removed the paste dialog. -* [#16982](http://dev.ckeditor.com/ticket/16982): Latest Safari now supports enhanced Clipboard API introduced in CKEditor 4.5.0. -* [#17025](http://dev.ckeditor.com/ticket/17025): Updated [Bender.js](https://github.com/benderjs/benderjs) to 0.4.2. - -## CKEditor 4.6.2 - -New Features: - -* [#16733](http://dev.ckeditor.com/ticket/16733): Added a new pastel color palette for the [Color Button](http://ckeditor.com/addon/colorbutton) plugin and a new [`config.colorButton_colorsPerRow`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_colorsPerRow) configuration option for setting the number of rows in the color selector. -* [#16752](http://dev.ckeditor.com/ticket/16752): Added a new Azerbaijani localization. Thanks to the [Azerbaijani language team](https://www.transifex.com/ckeditor/teams/11143/az/)! -* [#13818](http://dev.ckeditor.com/ticket/13818): It is now possible to group [Widget](http://ckeditor.com/addon/widget) [style definitions](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles), so applying one style disables the other. - -Fixed Issues: - -* [#13446](http://dev.ckeditor.com/ticket/13446): [Chrome] Fixed: It is possible to type in an unfocused inline editor. -* [#14856](http://dev.ckeditor.com/ticket/14856): Fixed: [Font size and font family](http://ckeditor.com/addon/font) reset each other when modified at certain positions. -* [#16745](http://dev.ckeditor.com/ticket/16745): [Edge] Fixed: List items are lost when [pasted from Word](http://ckeditor.com/addon/pastefromword). -* [#16682](http://dev.ckeditor.com/ticket/16682): [Edge] Fixed: A list gets [pasted from Word](http://ckeditor.com/addon/pastefromword) as a set of paragraphs. Added the [`config.pasteFromWord_heuristicsEdgeList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWord_heuristicsEdgeList) configuration option. -* [#10373](http://dev.ckeditor.com/ticket/10373): Fixed: Context menu items can be dragged into the editor. -* [#16728](http://dev.ckeditor.com/ticket/16728): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Quirks Mode. -* [#16795](http://dev.ckeditor.com/ticket/16795): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Compatibility Mode. -* [#16675](http://dev.ckeditor.com/ticket/16675): Fixed: Styles applied with [Copy Formatting](http://ckeditor.com/addon/copyformatting) to a single table cell are applied to the whole table. -* [#16753](http://dev.ckeditor.com/ticket/16753): Fixed: [`element.setSize`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setSize) sets incorrect editor dimensions if the border width is represented as a fraction of pixels. -* [#16705](http://dev.ckeditor.com/ticket/16705): [Firefox] Fixed: Unable to paste images as Base64 strings when using [Clipboard](http://ckeditor.com/addon/clipboard). -* [#14869](http://dev.ckeditor.com/ticket/14869): Fixed: JavaScript error is thrown when trying to use [Find](http://ckeditor.com/addon/find) in a [`<div>`-based editor](http://ckeditor.com/addon/divarea). - -## CKEditor 4.6.1 - -New Features: - -* [#16639](http://dev.ckeditor.com/ticket/16639): The `callback` parameter in the [CKEDITOR.ajax.post](http://docs.ckeditor.com/#!/api/CKEDITOR.ajax-method-post) method became optional. - -Fixed Issues: - -* [#11064](http://dev.ckeditor.com/ticket/11064): [Blink, WebKit] Fixed: Cannot select all editor content when a widget or a non-editable element is the first or last element of the content. Also fixes this issue in the [Select All](http://ckeditor.com/addon/selectall) plugin. -* [#14755](http://dev.ckeditor.com/ticket/14755): [Blink, WebKit, IE8] Fixed: Browser hangs when a table is inserted in the place of a selected list with an empty last item. -* [#16624](http://dev.ckeditor.com/ticket/16624): Fixed: Improved the [Color Button](http://ckeditor.com/addon/colorbutton) plugin which will now normalize the CSS `background` property if it only contains a color value. This fixes missing background colors when using [Paste from Word](http://ckeditor.com/addon/pastefromword). -* [#16600](http://dev.ckeditor.com/ticket/16600): [Blink, WebKit] Fixed: Error thrown occasionally by an uninitialized editable for multiple CKEditor instances on the same page. - -## CKEditor 4.6 - -New Features: - -* [#14569](http://dev.ckeditor.com/ticket/14569): Added a new, flat, default CKEditor skin called [Moono-Lisa](http://ckeditor.com/addon/moono-lisa). Refreshed default colors available in the [Color Button](http://ckeditor.com/addon/colorbutton) plugin ([Text Color and Background Color](http://docs.ckeditor.com/#!/guide/dev_colorbutton) feature). -* [#14707](http://dev.ckeditor.com/ticket/14707): Added a new [Copy Formatting](http://ckeditor.com/addon/copyformatting) feature to enable easy copying of styles between your document parts. -* Introduced the completely rewritten [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin: - * Backward incompatibility: The [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) option now defaults to `false`. This option will be deprecated in the future. Use [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf) to replicate the effect of setting it to `true`. - * Backward incompatibility: The [`config.pasteFromWordNumberedHeadingToList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordNumberedHeadingToList) and [`config.pasteFromWordRemoveStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveStyles) options were dropped and no longer have any effect on pasted content. - * Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels). - * Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste. -* Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)! -* [#10015](http://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus. -* [#13794](http://dev.ckeditor.com/ticket/13794): The [Upload Image](http://ckeditor.com/addon/uploadimage) feature now uses `uploaded.width/height` if set. -* [#12541](http://dev.ckeditor.com/ticket/12541): Added the [Upload File](http://ckeditor.com/addon/uploadfile) plugin that lets you upload a file by drag&dropping it into the editor content. -* [#14449](http://dev.ckeditor.com/ticket/14449): Introduced the [Balloon Panel](http://ckeditor.com/addon/balloonpanel) plugin that lets you create stylish floating UI elements for the editor. -* [#12077](https://dev.ckeditor.com/ticket/12077): Added support for the HTML5 `download` attribute in link (`<a>`) elements. Selecting the "Force Download" checkbox in the [Link](http://ckeditor.com/addon/link) dialog will cause the linked file to be downloaded automatically. Thanks to [sbusse](https://github.com/sbusse)! -* [#13518](http://dev.ckeditor.com/ticket/13518): Introduced the [`additionalRequestParameters`](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition-property-additionalRequestParameters) property for file uploads to make it possible to send additional information about the uploaded file to the server. -* [#14889](http://dev.ckeditor.com/ticket/14889): Added the [`config.image2_altRequired`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_altRequired) option for the [Enhanced Image](http://ckeditor.com/addon/image2) plugin to allow making alternative text a mandatory field. Thanks to [Andrey Fedoseev](https://github.com/andreyfedoseev)! - -Fixed Issues: - -* [#9991](http://dev.ckeditor.com/ticket/9991): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) should only normalize input data. -* [#7209](http://dev.ckeditor.com/ticket/7209): Fixed: Lists with 3 levels not [pasted from Word](http://ckeditor.com/addon/pastefromword) correctly. -* [#14335](http://dev.ckeditor.com/ticket/14335): Fixed: Pasting a numbered list starting with a value different from "1" from Microsoft Word does not work correctly. -* [#14542](http://dev.ckeditor.com/ticket/14542): Fixed: Copying a numbered list from Microsoft Word does not preserve list formatting. -* [#14544](http://dev.ckeditor.com/ticket/14544): Fixed: Copying a nested list from Microsoft Word results in an empty list. -* [#14660](http://dev.ckeditor.com/ticket/14660): Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) breaks the styling in some cases. -* [#14867](http://dev.ckeditor.com/ticket/14867): [Firefox] Fixed: Text gets stripped when [pasting content from Word](http://ckeditor.com/addon/pastefromword). -* [#2507](http://dev.ckeditor.com/ticket/2507): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not detect pasting a part of a paragraph. -* [#3336](http://dev.ckeditor.com/ticket/3336): Fixed: Extra blank row added on top of the content [pasted from Word](http://ckeditor.com/addon/pastefromword). -* [#6115](http://dev.ckeditor.com/ticket/6115): Fixed: When Right-to-Left text direction is applied to a table [pasted from Word](http://ckeditor.com/addon/pastefromword), borders are missing on one side. -* [#6342](http://dev.ckeditor.com/ticket/6342): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) filters out a basic text style when it is [configured to use attributes](http://docs.ckeditor.com/#!/guide/dev_basicstyles-section-custom-basic-text-style-definition). -* [#6457](http://dev.ckeditor.com/ticket/6457): [IE] Fixed: [Pasting from Word](http://ckeditor.com/addon/pastefromword) is extremely slow. -* [#6789](http://dev.ckeditor.com/ticket/6789): Fixed: The `mso-list: ignore` style is not handled properly when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#7262](http://dev.ckeditor.com/ticket/7262): Fixed: Lists in preformatted body disappear when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#7662](http://dev.ckeditor.com/ticket/7662): [Opera] Fixed: Extra empty number/bullet shown in the editor body when editing a multi-level list [pasted from Word](http://ckeditor.com/addon/pastefromword). -* [#7807](http://dev.ckeditor.com/ticket/7807): Fixed: Last item in a list not converted to a `<li>` element after [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#7950](http://dev.ckeditor.com/ticket/7950): [IE] Fixed: Content [from Word pasted](http://ckeditor.com/addon/pastefromword) differently than in other browsers. -* [#7982](http://dev.ckeditor.com/ticket/7982): Fixed: Multi-level lists get split into smaller ones when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#8231](http://dev.ckeditor.com/ticket/8231): [WebKit, Opera] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts empty paragraphs. -* [#8266](http://dev.ckeditor.com/ticket/8266): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts a blank line at the top. -* [#8341](http://dev.ckeditor.com/ticket/8341), [#7646](http://dev.ckeditor.com/ticket/7646): Fixed: Faulty removal of empty `<span>` elements in [Paste from Word](http://ckeditor.com/addon/pastefromword) content cleanup breaking content formatting. -* [#8754](http://dev.ckeditor.com/ticket/8754): [Firefox] Fixed: Incorrect pasting of multiple nested lists in [Paste from Word](http://ckeditor.com/addon/pastefromword). -* [#8983](http://dev.ckeditor.com/ticket/8983): Fixed: Alignment lost when [pasting from Word](http://ckeditor.com/addon/pastefromword) with [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) set to [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR). -* [#9331](http://dev.ckeditor.com/ticket/9331): [IE] Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) creates a simple Caesar cipher. -* [#9422](http://dev.ckeditor.com/ticket/9422): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) leaves an unwanted `color:windowtext` style. -* [#10011](http://dev.ckeditor.com/ticket/10011): [IE9-10] Fixed: [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) is ignored under certain conditions. -* [#10643](http://dev.ckeditor.com/ticket/10643): Fixed: Differences between using <kbd>Ctrl+V</kbd> and pasting from the [Paste from Word](http://ckeditor.com/addon/pastefromword) dialog. -* [#10784](http://dev.ckeditor.com/ticket/10784): Fixed: Lines missing when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#11294](http://dev.ckeditor.com/ticket/11294): [IE10] Fixed: Font size is not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#11627](http://dev.ckeditor.com/ticket/11627): Fixed: Missing words when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#12784](http://dev.ckeditor.com/ticket/12784): Fixed: Bulleted list with custom bullets gets changed to a numbered list when [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#13174](http://dev.ckeditor.com/ticket/13174): Fixed: Data loss after [pasting from Word](http://ckeditor.com/addon/pastefromword). -* [#13828](http://dev.ckeditor.com/ticket/13828): Fixed: Widget classes should be added to the wrapper rather than the widget element. -* [#13829](http://dev.ckeditor.com/ticket/13829): Fixed: No class in [Widget](http://ckeditor.com/addon/widget) wrapper to identify the widget type. -* [#13519](http://dev.ckeditor.com/ticket/13519): Server response received when uploading files should be more flexible. - -Other Changes: - -* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins: - * Support for the new default Moono-Lisa skin. - * [#121](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/121): Fixed: [Basic Styles](http://ckeditor.com/addon/basicstyles) do not work when SCAYT is enabled. - * [#125](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/125): Fixed: Inline styles are not continued when writing multiple lines of styled text with SCAYT enabled. - * [#127](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/127): Fixed: Uncaught TypeError after enabling SCAYT in the CKEditor `<div>` element. - * [#128](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/128): Fixed: Error thrown after enabling SCAYT caused by conflicts with RequireJS. - -## CKEditor 4.5.11 - -**Security Updates:** - -* [Severity: minor] Fixed the `target="_blank"` vulnerability reported by James Gaskell. - - Issue summary: If a victim had access to a spoofed version of ckeditor.com via HTTP (e.g. due to DNS spoofing, using a hacked public network or mailicious hotspot), then when using a link to the ckeditor.com website it was possible for the attacker to change the current URL of the opening page, even if the opening page was protected with SSL. - - An upgrade is recommended. - -New Features: - -* [#14747](http://dev.ckeditor.com/ticket/14747): The [Enhanced Image](http://ckeditor.com/addon/image2) caption now supports the link `target` attribute. -* [#7154](http://dev.ckeditor.com/ticket/7154): Added support for the "Display Text" field to the [Link](http://ckeditor.com/addon/link) dialog. Thanks to [Ryan Guill](https://github.com/ryanguill)! - -Fixed Issues: - -* [#13362](http://dev.ckeditor.com/ticket/13362): [Blink, WebKit] Fixed: Active widget element is not cached when it is losing focus and it is inside an editable element. -* [#13755](http://dev.ckeditor.com/ticket/13755): [Edge] Fixed: Pasting images does not work. -* [#13548](http://dev.ckeditor.com/ticket/13548): [IE] Fixed: Clicking the [elements path](http://ckeditor.com/addon/elementspath) disables Cut and Copy icons. -* [#13812](http://dev.ckeditor.com/ticket/13812): Fixed: When aborting file upload the placeholder for image is left. -* [#14659](http://dev.ckeditor.com/ticket/14659): [Blink] Fixed: Content scrolled to the top after closing the dialog in a [`<div>`-based editor](http://ckeditor.com/addon/divarea). -* [#14825](http://dev.ckeditor.com/ticket/14825): [Edge] Fixed: Focusing the editor causes unwanted scrolling due to dropped support for the `setActive` method. - -## CKEditor 4.5.10 - -Fixed Issues: - -* [#10750](http://dev.ckeditor.com/ticket/10750): Fixed: The editor does not escape the `font-style` family property correctly, removing quotes and whitespace from font names. -* [#14413](http://dev.ckeditor.com/ticket/14413): Fixed: The [Auto Grow](http://ckeditor.com/addon/autogrow) plugin with the [`config.autoGrow_onStartup`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoGrow_onStartup) option set to `true` does not work properly for an editor that is not visible. -* [#14451](http://dev.ckeditor.com/ticket/14451): Fixed: Numeric element ID not escaped properly. Thanks to [Jakub Chalupa](https://github.com/chaluja7)! -* [#14590](http://dev.ckeditor.com/ticket/14590): Fixed: Additional line break appearing after inline elements when switching modes. Thanks to [dpidcock](https://github.com/dpidcock)! -* [#14539](https://dev.ckeditor.com/ticket/14539): Fixed: JAWS reads "selected Blank" instead of "selected <widget name>" when selecting a widget. -* [#14701](http://dev.ckeditor.com/ticket/14701): Fixed: More precise labels for [Enhanced Image](http://ckeditor.com/addon/image2) and [Placeholder](http://ckeditor.com/addon/placeholder) widgets. -* [#14667](http://dev.ckeditor.com/ticket/14667): [IE] Fixed: Removing background color from selected text removes background color from the whole paragraph. -* [#14252](http://dev.ckeditor.com/ticket/14252): [IE] Fixed: Styles drop-down list does not always reflect the current style of the text line. -* [#14275](http://dev.ckeditor.com/ticket/14275): [IE9+] Fixed: `onerror` and `onload` events are not used in browsers it could have been used when loading scripts dynamically. - -## CKEditor 4.5.9 - -Fixed Issues: - -* [#10685](http://dev.ckeditor.com/ticket/10685): Fixed: Unreadable toolbar icons after updating to the new editor version. Fixed with [6876179](https://github.com/ckeditor/ckeditor-dev/commit/6876179db4ee97e786b07b8fd72e6b4120732185) in [ckeditor-dev](https://github.com/ckeditor/ckeditor-dev) and [6c9189f4](https://github.com/ckeditor/ckeditor-presets/commit/6c9189f46392d2c126854fe8889b820b8c76d291) in [ckeditor-presets](https://github.com/ckeditor/ckeditor-presets). -* [#14573](https://dev.ckeditor.com/ticket/14573): Fixed: Missing [Widget](http://ckeditor.com/addon/widget) drag handler CSS when there are multiple editor instances. -* [#14620](https://dev.ckeditor.com/ticket/14620): Fixed: Setting both the `min-height` style for the `<body>` element and the `height` style for the `<html>` element breaks the [Auto Grow](http://ckeditor.com/addon/autogrow) plugin. -* [#14538](http://dev.ckeditor.com/ticket/14538): Fixed: Keyboard focus goes into an embedded `<iframe>` element. -* [#14602](http://dev.ckeditor.com/ticket/14602): Fixed: The [`dom.element.removeAttribute()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeAttribute) method does not remove all attributes if no parameter is given. -* [#8679](http://dev.ckeditor.com/ticket/8679): Fixed: Better focus indication and ability to style the selected color in the [color picker dialog](http://ckeditor.com/addon/colordialog). -* [#11697](http://dev.ckeditor.com/ticket/11697): Fixed: Content is replaced ignoring the letter case setting in the [Find and Replace](http://ckeditor.com/addon/find) dialog window. -* [#13886](http://dev.ckeditor.com/ticket/13886): Fixed: Invalid handling of the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) instance with the `styles` property by [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter). -* [#14535](http://dev.ckeditor.com/ticket/14535): Fixed: CSS syntax corrections. Thanks to [mdjdenormandie](https://github.com/mdjdenormandie)! - -## CKEditor 4.5.8 - -New Features: - -* [#12440](http://dev.ckeditor.com/ticket/12440): Added the [`config.colorButton_enableAutomatic`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_enableAutomatic) option to allow hiding the "Automatic" option in the [color picker](http://ckeditor.com/addon/colorbutton). - -Fixed Issues: - -* [#10448](http://dev.ckeditor.com/ticket/10448): Fixed: Lack of scrollbar in the [right-to-left text direction](http://ckeditor.com/addon/bidi). -* [#12707](http://dev.ckeditor.com/ticket/12707): Fixed: The order of table elements does not comply with the HTML specification. -* [#13756](http://dev.ckeditor.com/ticket/13756): [Edge] Fixed: Context menus are cut-off. - -## CKEditor 4.5.7 - -New Features: - -* [#14327](http://dev.ckeditor.com/ticket/14327): Added Swiss German localization. Thanks to [Miro Grenda](https://twitter.com/mirogrenda)! - -Fixed Issues: - -* [#13816](http://dev.ckeditor.com/ticket/13816): Introduced a new strategy for Filling Character handling to avoid changes in DOM. This fixes the following issues: - * [#12727](http://dev.ckeditor.com/ticket/12727): [Blink] `IndexSizeError` when using the [Div Editing Area](http://ckeditor.com/addon/divarea) and [Content Templates](http://ckeditor.com/addon/templates) plugins. - * [#13377](http://dev.ckeditor.com/ticket/13377): [Widget](http://ckeditor.com/addon/widget) plugin issue when typing in Korean. - * [#13389](http://dev.ckeditor.com/ticket/13389): [Blink] [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) fails when the cursor is next to an `<hr>` tag. - * [#13513](http://dev.ckeditor.com/ticket/13513): [Blink, WebKit] [Div Editing Area](http://ckeditor.com/addon/divarea) and [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) throw an error when an image is the only data in the editor. -* [#13884](http://dev.ckeditor.com/ticket/13884): [Firefox] Fixed: Copying and pasting a table results in just the first cell being pasted. -* [#14234](http://dev.ckeditor.com/ticket/14234): Fixed: URL input field is not marked as required in the [Media Embed](http://ckeditor.com/addon/embed) dialog. - -## CKEditor 4.5.6 - -New Features: - -* Introduced the [`CKEDITOR.tools.getCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCookie) and [`CKEDITOR.tools.setCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-setCookie) methods for accessing cookies. -* Introduced the [`CKEDITOR.tools.getCsrfToken()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCsrfToken) method. The CSRF token is now automatically sent by the [File Browser](http://ckeditor.com/addon/filebrowser) and [File Tools](http://ckeditor.com/addon/filetools) plugins during file uploads. The server-side upload handlers may check it and use it to additionally secure the communication. - -Other Changes: - -* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type): - - New features: - - CKEditor [Language](http://ckeditor.com/addon/language) plugin support. - - CKEditor [Placeholder](http://ckeditor.com/addon/placeholder) plugin support. - - [Drag&Drop](http://sdk.ckeditor.com/samples/fileupload.html) support. - - **Experimental** [GRAYT](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-grayt_autoStartup) (Grammar As You Type) functionality. - - Fixed issues: - * [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98): SCAYT affects dialog double-click. Fixed in SCAYT core. - * [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102): SCAYT core performance enhancements. - * [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104): SCAYT's spans leak into the clipboard and after pasting. - * [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105): A JavaScript error fired in case of multiple instances of CKEditor on one page. - * [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107): SCAYT should not check non-editable parts of content. - * [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108): Latest SCAYT copies the ID of the editor element to the iframe. - * SCAYT stops working when CKEditor [Undo plugin](http://ckeditor.com/addon/undo) not enabled. - * Issue with pasting SCAYT markup in CKEditor. - * SCAYT stops working after pressing the *Cancel* button in the WSC dialog. - -## CKEditor 4.5.5 - -Fixed Issues: - -* [#13887](https://dev.ckeditor.com/ticket/13887): Fixed: [Link](http://ckeditor.com/addon/link) plugin alters the `target` attribute value. Thanks to [SamZiemer](https://github.com/SamZiemer)! -* [#12189](http://dev.ckeditor.com/ticket/12189): Fixed: The [Link](http://ckeditor.com/addon/link) plugin dialog does not display the subject of email links if the subject parameter is not lowercase. -* [#9192](http://dev.ckeditor.com/ticket/9192): Fixed: An `undefined` string is appended to an email address added with the [Link](http://ckeditor.com/addon/link) plugin if subject and email body are empty and [`config.emailProtection`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-emailProtection) is set to `encode`. -* [#13790](https://dev.ckeditor.com/ticket/13790): Fixed: It is not possible to destroy the editor `<iframe>` after the editor was detached from DOM. Thanks to [Stefan Rijnhart](https://github.com/StefanRijnhart)! -* [#13803](https://dev.ckeditor.com/ticket/13803): Fixed: The editor cannot be destroyed before being fully initialized. Thanks to [Cyril Fluck](https://github.com/cyril-sf)! -* [#13867](http://dev.ckeditor.com/ticket/13867): Fixed: CKEditor does not work when the `classList` polyfill is used. -* [#13885](http://dev.ckeditor.com/ticket/13885): Fixed: [Enhanced Image](http://ckeditor.com/addon/image2) requires the [Link](http://ckeditor.com/addon/link) plugin to link an image. -* [#13883](http://dev.ckeditor.com/ticket/13883): Fixed: Copying a table using the context menu strips off styles. -* [#13872](http://dev.ckeditor.com/ticket/13872): Fixed: Cutting is possible in the [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode. -* [#12848](http://dev.ckeditor.com/ticket/12848): [Blink] Fixed: Opening the [Find and Replace](http://ckeditor.com/addon/find) dialog window in the [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode throws an exception. -* [#13879](http://dev.ckeditor.com/ticket/13879): Fixed: It is not possible to prevent the [`editor.drop`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-drop) event. -* [#13361](http://dev.ckeditor.com/ticket/13361): Fixed: Skin images fail when the site path includes parentheses because the `background-image` path needs single quotes around the URL value. -* [#13771](http://dev.ckeditor.com/ticket/13771): Fixed: The `contents.css` style is not used if the [IFrame Editing Area](http://ckeditor.com/addon/wysiwygarea) plugin is missing. -* [#13782](http://dev.ckeditor.com/ticket/13782): Fixed: Unclear log messages. -* [#13919](http://dev.ckeditor.com/ticket/13919): [Edge] Fixed: Browser window crashes when accessing the `isContentEditable` property of an `<input>` DOM element. - -Other Changes: - -* [#13859](http://dev.ckeditor.com/ticket/13859): Test cases created with `bender.tools.createTestsForEditors` will also receive editor bot as a second parameter. - -## CKEditor 4.5.4 - -New Features: - -* [#13632](http://dev.ckeditor.com/ticket/13632): Introduce error logging mechanism. -* [#13730](http://dev.ckeditor.com/ticket/13730): Switch to the new error logging mechanism. - -Fixed Issues: - -* [#9856](http://dev.ckeditor.com/ticket/9856): Fixed: Cannot use the native context menu together with the [Div Editing Area](http://ckeditor.com/addon/divarea) plugin. Thanks to [Mark Wade](https://github.com/mark-wade)! -* [#12733](http://dev.ckeditor.com/ticket/12733): [IE9+] Fixed: Radio button `onChange` does not work. Thanks to [Iliya Kostadinov](https://github.com/iliyakostadinov)! -* [#13142](http://dev.ckeditor.com/ticket/13142): [Edge] Fixed: *Ctrl+A* and then *Backspace* result in an empty `<div>` element. -* [#13599](http://dev.ckeditor.com/ticket/13599): Fixed: Cross-editor drag and drop of an inline widget results in error/artifacts. -* [#13640](http://dev.ckeditor.com/ticket/13640): [IE] Fixed: Dropping a widget outside the `<body>` element is not handled correctly. -* [#13533](http://dev.ckeditor.com/ticket/13533): Fixed: No progress during upload. -* [#13680](http://dev.ckeditor.com/ticket/13680): Fixed: The parser should allow the `<h1-6>` element to be a child of the `<summary>` element. -* [#11724](http://dev.ckeditor.com/ticket/11724): [Touch devices] Fixed: Drop-downs often hide right after opening them. -* [#13690](http://dev.ckeditor.com/ticket/13690): Fixed: Copying content from IE to Chrome adds an extra paragraph. -* [#13284](http://dev.ckeditor.com/ticket/13284): Fixed: Cannot drag and drop a widget if the text caret is placed just after the widget instance. -* [#13516](http://dev.ckeditor.com/ticket/13516): Fixed: CKEditor removes empty HTML5 anchors without the `name` attribute. -* [#13765](http://dev.ckeditor.com/ticket/13765): [Safari 9] Fixed: Problems with rendering samples. - -Other Changes: - -* [#11725](http://dev.ckeditor.com/ticket/11725): Marked [`CKEDITOR.env.mobile`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-mobile) as deprecated. The reason is that it is no longer clear what "mobile" means. -* [#13737](http://dev.ckeditor.com/ticket/13737): Upgraded [Bender.js](https://github.com/benderjs/benderjs) to 0.4.1. - -## CKEditor 4.5.3 - -New Features: - -* [#13501](http://dev.ckeditor.com/ticket/13501): Added the [`config.fileTools_defaultFileName`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fileTools_defaultFileName) option to allow setting a default file name for paste uploads. -* [#13603](http://dev.ckeditor.com/ticket/13603): Added support for uploading dropped BMP images. - -Fixed Issues: - -* [#13590](http://dev.ckeditor.com/ticket/13590): Fixed: Various issues related to the [Paste from Word](http://ckeditor.com/addon/pastefromword) feature. Fixes also: - * [#11215](http://dev.ckeditor.com/ticket/11215), - * [#8780](http://dev.ckeditor.com/ticket/8780), - * [#12762](http://dev.ckeditor.com/ticket/12762). -* [#13386](http://dev.ckeditor.com/ticket/13386): [Edge] Fixed: Issues with selecting and editing images. -* [#13568](http://dev.ckeditor.com/ticket/13568): Fixed: The [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) method returns invalid results for entire content selection. -* [#13453](http://dev.ckeditor.com/ticket/13453): Fixed: Drag&drop of entire editor content throws an error. -* [#13465](http://dev.ckeditor.com/ticket/13465): Fixed: Error is thrown and the widget is lost on drag&drop if it is the only content of the editor. -* [#13414](http://dev.ckeditor.com/ticket/13414): Fixed: Content auto paragraphing in a nested editable despite editor configuration. -* [#13429](http://dev.ckeditor.com/ticket/13429): Fixed: Incorrect selection after content insertion by the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin. -* [#13388](http://dev.ckeditor.com/ticket/13388): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) integration with [Undo](http://ckeditor.com/addon/undo) is broken. - -Other Changes: - -* [#13637](https://dev.ckeditor.com/ticket/13637): Several icons were refactored. -* Updated [Bender.js](https://github.com/benderjs/benderjs) to 0.3.0 and introduced the ability to run tests via HTTPs ([#13265](https://dev.ckeditor.com/ticket/13265)). - -## CKEditor 4.5.2 - -Fixed Issues: - -* [#13609](http://dev.ckeditor.com/ticket/13609): [Edge] Fixed: The browser crashes when switching to the source mode. Thanks to [Andrew Williams and Mark Smeed](http://webxsolution.com/)! -* [PR#201](https://github.com/ckeditor/ckeditor-dev/pull/201): Fixed: Buttons in the toolbar configurator cause form submission. Thanks to [colemanw](https://github.com/colemanw)! -* [#13422](http://dev.ckeditor.com/ticket/13422): Fixed: A monospaced font should be used in the `<textarea>` element storing editor configuration in the toolbar configurator. -* [#13494](http://dev.ckeditor.com/ticket/13494): Fixed: Error thrown in the toolbar configurator if plugin requirements are not met. -* [#13409](http://dev.ckeditor.com/ticket/13409): Fixed: List elements incorrectly merged when pressing *Backspace* or *Delete*. -* [#13434](http://dev.ckeditor.com/ticket/13434): Fixed: Dialog state indicator broken in Right–To–Left environments. -* [#13460](http://dev.ckeditor.com/ticket/13460): [IE8] Fixed: Copying inline widgets is broken when [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf) is disabled. -* [#13495](http://dev.ckeditor.com/ticket/13495): [Firefox, IE] Fixed: Text is not word-wrapped in the Paste dialog window. -* [#13528](http://dev.ckeditor.com/ticket/13528): [Firefox@Windows] Fixed: Content copied from Microsoft Word and other external applications is pasted as a plain text. Removed the `CKEDITOR.plugins.clipboard.isHtmlInExternalDataTransfer` property as the check must be dynamic. -* [#13583](http://dev.ckeditor.com/ticket/13583): Fixed: [`DataTransfer.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer-method-getData) should work consistently in all browsers and should not strip valuable content. Fixed pasting tables from Microsoft Excel on Chrome. -* [#13468](http://dev.ckeditor.com/ticket/13468): [IE] Fixed: Binding drag&drop `dataTransfer` does not work if `text` data was set in the meantime. -* [#13451](http://dev.ckeditor.com/ticket/13451): [IE8-9] Fixed: One drag&drop operation may affect following ones. -* [#13184](http://dev.ckeditor.com/ticket/13184): Fixed: Web page reloaded after a drop on editor UI. -* [#13129](http://dev.ckeditor.com/ticket/13129) Fixed: Block widget blurred after a drop followed by an undo. -* [#13397](http://dev.ckeditor.com/ticket/13397): Fixed: Drag&drop of a widget inside its nested widget crashes the editor. -* [#13385](http://dev.ckeditor.com/ticket/13385): Fixed: [`editor.getSnapshot()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSnapshot) may return a non-string value. -* [#13419](http://dev.ckeditor.com/ticket/13419): Fixed: The [Auto Link](http://ckeditor.com/addon/autolink) plugin does not encode double quotes in URLs. -* [#13420](http://dev.ckeditor.com/ticket/13420): Fixed: The [Auto Embed](http://ckeditor.com/addon/autoembed) plugin ignores encoded characters in URL parameters. -* [#13410](http://dev.ckeditor.com/ticket/13410): Fixed: Error thrown in the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin when undoing right after pasting a link. -* [#13566](http://dev.ckeditor.com/ticket/13566): Fixed: Suppressed notifications in the [Media Embed Base](http://ckeditor.com/addon/embedbase) plugin. -* [#11616](http://dev.ckeditor.com/ticket/11616): [Chrome] Fixed: Resizing the editor while it is not displayed breaks the editable. Fixes also [#9160](http://dev.ckeditor.com/ticket/9160) and [#9715](http://dev.ckeditor.com/ticket/9715). -* [#11376](http://dev.ckeditor.com/ticket/11376): [IE11] Fixed: Loss of text when pasting bulleted lists from Microsoft Word. -* [#13143](http://dev.ckeditor.com/ticket/13143): [Edge] Fixed: Focus lost when opening the panel. -* [#13387](http://dev.ckeditor.com/ticket/13387): [Edge] Fixed: "Permission denied" error thrown when loading the editor with developer tools open. -* [#13574](http://dev.ckeditor.com/ticket/13574): [Edge] Fixed: "Permission denied" error thrown when opening editor dialog windows. -* [#13441](http://dev.ckeditor.com/ticket/13441): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin breaks the state of [Undo](http://ckeditor.com/addon/undo) commands after a paste. -* [#13554](http://dev.ckeditor.com/ticket/13554): [Edge] Fixed: Paste dialog's iframe does not receive focus on show. -* [#13440](http://dev.ckeditor.com/ticket/13440): [Edge] Fixed: Unable to paste a widget. - -Other Changes: - -* [#13421](http://dev.ckeditor.com/ticket/13421): UX improvements to notifications in the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin. - -## CKEditor 4.5.1 - -Fixed Issues: - -* [#13486](http://dev.ckeditor.com/ticket/13486): Fixed: The [Upload Image](http://ckeditor.com/addon/uploadimage) plugin should log an error, not throw an error when upload URL is not set. - -## CKEditor 4.5 - -New Features: - -* [#13304](http://dev.ckeditor.com/ticket/13304): Added support for passing DOM elements to [`config.sharedSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-sharedSpaces). Thanks to [Undergrounder](https://github.com/Undergrounder)! -* [#13215](http://dev.ckeditor.com/ticket/13215): Added ability to cancel fetching a resource by the Embed plugins. -* [#13213](http://dev.ckeditor.com/ticket/13213): Added the [`dialog#setState()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog-method-setState) method and used it in the [Embed](http://ckeditor.com/addon/embed) dialog to indicate that a resource is being loaded. -* [#13337](http://dev.ckeditor.com/ticket/13337): Added the [`repository.onWidget()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-onWidget) method — a convenient way to listen to [widget](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) events through the [repository](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository). -* [#13214](http://dev.ckeditor.com/ticket/13214): Added support for pasting links that convert into embeddable resources on the fly. - -Fixed Issues: - -* [#13334](http://dev.ckeditor.com/ticket/13334): Fixed: Error after nesting widgets and playing with undo/redo. -* [#13118](http://dev.ckeditor.com/ticket/13118): Fixed: The [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) method throws an error when called in the source mode. -* [#13158](http://dev.ckeditor.com/ticket/13158): Fixed: Error after canceling a dialog when creating a widget. -* [#13197](http://dev.ckeditor.com/ticket/13197): Fixed: Linked inline [Enhanced Image](http://ckeditor.com/addon/image2) alignment class is not transferred to the widget wrapper. -* [#13199](http://dev.ckeditor.com/ticket/13199): Fixed: [Semantic Embed](http://ckeditor.com/addon/embedsemantic) does not support widget classes. -* [#13003](http://dev.ckeditor.com/ticket/13003): Fixed: Anchors are uploaded when moving them by drag and drop. -* [#13032](http://dev.ckeditor.com/ticket/13032): Fixed: When upload is done, notification update should be marked as important. -* [#13300](http://dev.ckeditor.com/ticket/13300): Fixed: The `internalCommit` argument in the [Image](http://ckeditor.com/addon/image) dialog seems to be never used. -* [#13036](http://dev.ckeditor.com/ticket/13036): Fixed: Notifications are moved 10px to the right. -* [#13280](http://dev.ckeditor.com/ticket/13280): [IE8] Fixed: Undo after inline widget drag&drop throws an error. -* [#13186](http://dev.ckeditor.com/ticket/13186): Fixed: Content dropped into a nested editable is not filtered by [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf). -* [#13140](http://dev.ckeditor.com/ticket/13140): Fixed: Error thrown when dropping a block widget right after itself. -* [#13176](http://dev.ckeditor.com/ticket/13176): [IE8] Fixed: Errors on drag&drop of embed widgets. -* [#13015](http://dev.ckeditor.com/ticket/13015): Fixed: Dropping an image file on [Enhanced Image](http://ckeditor.com/addon/image2) causes a page reload. -* [#13080](http://dev.ckeditor.com/ticket/13080): Fixed: Ugly notification shown when the response contains HTML content. -* [#13011](http://dev.ckeditor.com/ticket/13011): [IE8] Fixed: Anchors are duplicated on drag&drop in specific locations. -* [#13105](http://dev.ckeditor.com/ticket/13105): Fixed: Various issues related to [`CKEDITOR.tools.htmlEncode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlEncode) and [`CKEDITOR.tools.htmlDecode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlDecode) methods. -* [#11976](http://dev.ckeditor.com/ticket/11976): [Chrome] Fixed: Copy&paste and drag&drop lists from Microsoft Word. -* [#13128](http://dev.ckeditor.com/ticket/13128): Fixed: Various issues with cloning element IDs: - * Fixed the default behavior of [`range.cloneContents()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) and [`range.extractContents()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) methods which now clone IDs similarly to their native counterparts. - * Added `cloneId` arguments to the above methods, [`range.splitBlock()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-splitBlock) and [`element.breakParent()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-breakParent). Mind the default values and special behavior in the `extractContents()` method! - * Fixed issues where IDs were lost on copy&paste and drag&drop. -* Toolbar configurators: - * [#13185](http://dev.ckeditor.com/ticket/13185): Fixed: Wrong position of the suggestion box if there is not enough space below the caret. - * [#13138](http://dev.ckeditor.com/ticket/13138): Fixed: The "Toggle empty elements" button label is unclear. - * [#13136](http://dev.ckeditor.com/ticket/13136): Fixed: Autocompleter is far too intrusive. - * [#13133](http://dev.ckeditor.com/ticket/13133): Fixed: Tab leaves the editor. - * [#13173](http://dev.ckeditor.com/ticket/13173): Fixed: [`config.removeButtons`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-removeButtons) is ignored by the advanced toolbar configurator. - -Other Changes: - -* [#13119](http://dev.ckeditor.com/ticket/13119): Improved compatibility of editor skins ([Moono](http://ckeditor.com/addon/moono) and [Kama](http://ckeditor.com/addon/kama)) with external web page style sheets. -* Toolbar configurators: - * [#13147](http://dev.ckeditor.com/ticket/13147): Added buttons to the sticky toolbar. - * [#13207](http://dev.ckeditor.com/ticket/13207): Used modal window to display toolbar configurator help. -* [#13316](http://dev.ckeditor.com/ticket/13316): Made [`CKEDITOR.env.isCompatible`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-isCompatible) a blacklist rather than a whitelist. More about the change in the [Browser Compatibility](http://docs.ckeditor.com/#!/guide/dev_browsers) guide. -* [#13398](http://dev.ckeditor.com/ticket/13398): Renamed `CKEDITOR.fileTools.UploadsRepository` to [`CKEDITOR.fileTools.UploadRepository`](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadRepository) and changed all related properties. -* [#13279](http://dev.ckeditor.com/ticket/13279): Reviewed CSS vendor prefixes. -* [#13454](http://dev.ckeditor.com/ticket/13454): Removed unused `lang.image.alertUrl` token from the [Image](http://ckeditor.com/addon/image) plugin. - -## CKEditor 4.5 Beta - -New Features: - -* Clipboard (copy&paste, drag&drop) and file uploading features and improvements ([#11437](http://dev.ckeditor.com/ticket/11437)). - - * Major features: - * Support for dropping and pasting files into the editor was introduced. Through a set of new facades for native APIs it is now possible to easily intercept and process inserted files. - * [File upload tools](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools) were introduced in order to simplify controlling the loading, uploading and handling server response, properly handle [new upload configuration](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-uploadUrl) options, etc. - * [Upload Image](http://ckeditor.com/addon/uploadimage) widget was introduced to upload dropped images. A base class for the [upload widget](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition) was exposed, too, to make it simple to create new types of upload widgets which can handle any type of dropped file, show the upload progress and update the content when the process is done. It also handles editing and undo/redo operations when a file is being uploaded and integrates with the [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) to show progress and success or error. - * All drag and drop operations were integrated with the editor. All dropped content is passed through the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event and a set of new editor events was introduced — [`dragstart`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-dragstart), [`drop`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-drop), [`dragend`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-dragend). - * The [Data Transfer](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer) facade was introduced to unify access to data in various types and files. [Data Transfer](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer) is now always available in the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event. - * Switched from the pastebin to using the native clipboard access whenever possible. This solved many issues related to pastebin such as unnecessary scrolling or data loss. Additionally, on copy and cut from the editor the clipboard data is set. Therefore, on paste the editor has access to clean data, undisturbed by the browsers. - * Drag and drop of inline and block widgets was integrated with the standard clipboard APIs. By listening to drag events you will thus be notified about widgets, too. This opens a possibility to filter pasted and dropped widgets. - * The [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event can have the `range` parameter so it is possible to change the paste position in the listener or paste in the not selectable position. Also the [`editor.insertHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml) method now accepts `range` as an additional parameter. - * [#11621](http://dev.ckeditor.com/ticket/11621): A configurable [paste filter](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFilter) was introduced. The filter is by default turned to `'semantic-content'` on Webkit and Blink for all pasted content coming from external sources because of the low quality of HTML that these engines put into the clipboard. Internal and cross-editor paste is safe due to the change explained in the previous point. - - * Other changes and related fixes: - * [#12095](http://dev.ckeditor.com/ticket/12095): On drag and copy of widgets [the same method](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) is used to get selected HTML as in the normal case. Thanks to that styles applied to inline widgets are not lost. - * [#11219](http://dev.ckeditor.com/ticket/11219): Fixed: Dragging a [captioned image](http://ckeditor.com/addon/image2) does not fire the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event. - * [#9554](http://dev.ckeditor.com/ticket/9554): [Webkit Mac] Fixed: Editor scrolls on paste. - * [#9898](http://dev.ckeditor.com/ticket/9898): [Webkit&Divarea] Fixed: Pasting causes undesirable scrolling. - * [#11993](http://dev.ckeditor.com/ticket/11993): [Chrome] Fixed: Pasting content scrolls the document. - * [#12613](http://dev.ckeditor.com/ticket/12613): Show the user that they can not drop on editor UI (toolbar, bottom bar). - * [#12851](http://dev.ckeditor.com/ticket/12851): [Blink/Webkit] Fixed: Formatting disappears when pasting content into cells. - * [#12914](http://dev.ckeditor.com/ticket/12914): Fixed: Copy/Paste of table broken in `div`-based editor. - - * Browser support.<br>Browser support for related features varies significantly (see http://caniuse.com/clipboard). - * File APIs needed to operate and file upload is not supported in Internet Explorer 9 and below. - * Only Chrome and Safari on Mac OS support setting custom data items in the clipboard, so currently it is possible to recognize the origin of the copied content in these browsers only. All drag and drop operations can be identified thanks to the new Data Transfer facade. - * No Internet Explorer browser supports the standard clipboard API which results in small glitches like where only plain text can be dropped from outside the editor. Thanks to the new Data Transfer facade, internal and cross-editor drag and drop supports the full range of data. - * Direct access to clipboard could only be implemented in Chrome, Safari on Mac OS, Opera and Firefox. In other browsers the pastebin must still be used. - -* [#12875](http://dev.ckeditor.com/ticket/12875): Samples and toolbar configuration tools. - * The old set of samples shipped with every CKEditor package was replaced with a shiny new single-page sample. This change concluded a long term plan which started from introducing the [CKEditor SDK](http://sdk.ckeditor.com/) and [CKEditor Functionality Overview](http://docs.ckeditor.com/#!/guide/dev_features) section in the documentation which essentially redefined the old samples. - * Toolbar configurators with live previews were introduced. They will be shipped with every CKEditor package and are meant to help in configuring toolbar layouts. - -* [#10925](http://dev.ckeditor.com/ticket/10925): The [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins were introduced. Read more about the new features in the [Embedding Content](http://docs.ckeditor.com/#!/guide/dev_media_embed) article. -* [#10931](http://dev.ckeditor.com/ticket/10931): Added support for nesting widgets. It is now possible to insert one widget into another widget's nested editable. Note that unless nested editable's [allowed content](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.nestedEditable.definition-property-allowedContent) is defined precisely, starting from CKEditor 4.5 some widget buttons may become enabled. This feature is not supported in IE8. Included issues: - * [#12018](http://dev.ckeditor.com/ticket/12018): Fixed and reviewed: Nested widgets garbage collection. - * [#12024](http://dev.ckeditor.com/ticket/12024): [Firefox] Fixed: Outline is extended to the left by unpositioned drag handlers. - * [#12006](http://dev.ckeditor.com/ticket/12006): Fixed: Drag and drop of nested block widgets. - * [#12008](http://dev.ckeditor.com/ticket/12008): Fixed various cases of inserting a single non-editable element using the [`editor.insertHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml) method. Fixes pasting a widget with a nested editable inside another widget's nested editable. - -* Notification system: - * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification). - * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks. -* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it — [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.extractSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-extractSelectedHtml). -* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author. -* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute. -* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data. -* [#12126](http://dev.ckeditor.com/ticket/12126): Introduced [`config.image_prefillDimensions`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image_prefillDimensions) and [`config.image2_prefillDimensions`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_prefillDimensions) to make pre-filling `width` and `height` configurable for the [Enhanced Image](http://ckeditor.com/addon/image2). -* [#12746](http://dev.ckeditor.com/ticket/12746): Added a new configuration option to hide the [Enhanced Image](http://ckeditor.com/addon/image2) resizer. -* [#12150](http://dev.ckeditor.com/ticket/12150): Exposed the [`getNestedEditable()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-static-method-getNestedEditable) and `is*` [widget helper](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) functions (see the static methods). -* [#12448](http://dev.ckeditor.com/ticket/12448): Introduced the [`editable.insertHtmlIntoRange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertHtmlIntoRange) method. -* [#12143](http://dev.ckeditor.com/ticket/12143): Added the [`config.floatSpacePreferRight`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-floatSpacePreferRight) configuration option that switches the alignment of the floating toolbar. Thanks to [InvisibleBacon](http://github.com/InvisibleBacon)! -* [#10986](http://dev.ckeditor.com/ticket/10986): Added support for changing dialog input and textarea text directions by using the *Shift+Alt+Home/End* keystrokes. The direction is stored in the value of the input by prepending the [`\u202A`](http://unicode.org/cldr/utility/character.jsp?a=202A) or [`\u202B`](http://unicode.org/cldr/utility/character.jsp?a=202B) marker to it. Read more in the [documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog.definition.textInput-property-bidi). Thanks to [edithkk](https://github.com/edithkk)! -* [#12770](http://dev.ckeditor.com/ticket/12770): Added support for passing [widget](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget)'s startup data as a widget command's argument. Thanks to [Rebrov Boris](https://github.com/zipp3r) and [Tieme van Veen](https://github.com/tiemevanveen)! -* [#11583](http://dev.ckeditor.com/ticket/11583): Added support for the HTML5 `required` attribute in various form elements. Thanks to [Steven Busse](https://github.com/sbusse)! - -Changes: - -* [#12858](http://dev.ckeditor.com/ticket/12858): Basic [Spartan](http://blogs.windows.com/bloggingwindows/2015/03/30/introducing-project-spartan-the-new-browser-built-for-windows-10/) browser compatibility. Full compatibility will be introduced later, because at the moment Spartan is still too unstable to be used for tests and we see many changes from version to version. -* [#12948](http://dev.ckeditor.com/ticket/12948): The [`config.mathJaxLibrary`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-mathJaxLib) option does not default to the MathJax CDN any more. It needs to be configured to enable the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin now. -* [#13069](http://dev.ckeditor.com/ticket/13069): Fixed inconsistencies between [`editable.insertHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElement) and [`editable.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElement) when the `range` parameter is used. Now, the `editor.insertElement()` method works on a higher level, which means that it saves undo snapshots and sets the selection after insertion. Use the [`editable.insertElementIntoRange()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElementIntoRange) method directly for the pre 4.5 behavior of `editable.insertElement()`. -* [#12870](http://dev.ckeditor.com/ticket/12870): Use [`editor.showNotification()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-showNotification) instead of `alert()` directly whenever possible. When the [Notification plugin](http://ckeditor.com/addon/notification) is loaded, the notification system is used automatically. Otherwise, the native `alert()` is displayed. -* [#8024](http://dev.ckeditor.com/ticket/8024): Swapped behavior of the Split Cell Vertically and Horizontally features of the [Table Tools](http://ckeditor.com/addon/tabletools) plugin to be more intuitive. Thanks to [kevinisagit](https://github.com/kevinisagit)! -* [#10903](http://dev.ckeditor.com/ticket/10903): Performance improvements for the [`dom.element.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-addClass), [`dom.element.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeClass) and [`dom.element.hasClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-hasClass) methods. Note: The previous implementation allowed passing multiple classes to `addClass()` although it was only a side effect of that implementation. The new implementation does not allow this. -* [#11856](http://dev.ckeditor.com/ticket/11856): The jQuery adapter throws a meaningful error if CKEditor or jQuery are not loaded. - -Fixed issues: - -* [#11586](http://dev.ckeditor.com/ticket/11586): Fixed: [`range.cloneContents()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) should not change the DOM in order not to affect selection. -* [#12148](http://dev.ckeditor.com/ticket/12148): Fixed: [`dom.element.getChild()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-getChild) should not modify a passed array. -* [#12503](http://dev.ckeditor.com/ticket/12503): [Blink/Webkit] Fixed: Incorrect result of Select All and *Backspace* or *Delete*. -* [#13001](http://dev.ckeditor.com/ticket/13001): [Firefox] Fixed: The `<br />` filler is placed in the wrong position by the [`range.fixBlock()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-fixBlock) method due to quirky Firefox behavior. -* [#13101](http://dev.ckeditor.com/ticket/13101): [IE8] Fixed: Colons are prepended to HTML5 element names when cloning them. - -## CKEditor 4.4.8 - -**Security Updates:** - -* Fixed XSS vulnerability in the HTML parser reported by [Dheeraj Joshi](https://twitter.com/dheerajhere) and [Prem Kumar](https://twitter.com/iAmPr3m). - - Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode. - -**An upgrade is highly recommended!** - -Fixed Issues: - -* [#12899](http://dev.ckeditor.com/ticket/12899): Fixed: Corrected wrong tag ending for horizontal box definition in the [Dialog User Interface](http://ckeditor.com/addon/dialogui) plugin. Thanks to [mizafish](https://github.com/mizafish)! -* [#13254](http://dev.ckeditor.com/ticket/13254): Fixed: Cannot outdent block after indent when using the [Div Editing Area](http://ckeditor.com/addon/divarea) plugin. Thanks to [Jonathan Cottrill](https://github.com/jcttrll)! -* [#13268](http://dev.ckeditor.com/ticket/13268): Fixed: Documentation for [`CKEDITOR.dom.text`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.text) is incorrect. Thanks to [Ben Kiefer](https://github.com/benkiefer)! -* [#12739](http://dev.ckeditor.com/ticket/12739): Fixed: Link loses inline styles when edited without the [Advanced Tab for Dialogs](http://ckeditor.com/addon/dialogadvtab) plugin. Thanks to [Віталій Крутько](https://github.com/asmforce)! -* [#13292](http://dev.ckeditor.com/ticket/13292): Fixed: Protection pattern does not work in attribute in self-closing elements with no space before `/>`. Thanks to [Віталій Крутько](https://github.com/asmforce)! -* [PR#192](https://github.com/ckeditor/ckeditor-dev/pull/192): Fixed: Variable name typo in the [Dialog User Interface](http://ckeditor.com/addon/dialogui) plugin which caused [`CKEDITOR.ui.dialog.radio`](http://docs.ckeditor.com/#!/api/CKEDITOR.ui.dialog.radio) validation to not work. Thanks to [Florian Ludwig](https://github.com/FlorianLudwig)! -* [#13232](http://dev.ckeditor.com/ticket/13232): [Safari] Fixed: The [`element.appendText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-appendText) method does not work properly for empty elements. -* [#13233](http://dev.ckeditor.com/ticket/13233): Fixed: [HTMLDataProcessor](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor) can process `foo:href` attributes. -* [#12796](http://dev.ckeditor.com/ticket/12796): Fixed: The [Indent List](http://ckeditor.com/addon/indentlist) plugin unwraps parent `<li>` elements. Thanks to [Andrew Stucki](https://github.com/andrewstucki)! -* [#12885](http://dev.ckeditor.com/ticket/12885): Added missing [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) parameter documentation. -* [#11982](http://dev.ckeditor.com/ticket/11982): Fixed: Bullet added in a wrong position after the *Enter* key is pressed in a nested list. -* [#13027](http://dev.ckeditor.com/ticket/13027): Fixed: Keyboard navigation in dialog windows with multiple tabs not following IBM CI 162 instructions or [ARIA Authoring Practices](http://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel). -* [#12256](http://dev.ckeditor.com/ticket/12256): Fixed: Basic styles classes are lost when pasting from Microsoft Word if [basic styles](http://ckeditor.com/addon/basicstyles) were configured to use classes. -* [#12729](http://dev.ckeditor.com/ticket/12729): Fixed: Incorrect structure created when merging a block into a list item on *Backspace* and *Delete*. -* [#13031](http://dev.ckeditor.com/ticket/13031): [Firefox] Fixed: No more line breaks in source view since Firefox 36. -* [#13131](http://dev.ckeditor.com/ticket/13131): Fixed: The [Code Snippet](http://ckeditor.com/addon/codesnippet) plugin cannot be used without the [IFrame Editing Area](http://ckeditor.com/addon/wysiwygarea) plugin. -* [#9086](http://dev.ckeditor.com/ticket/9086): Fixed: Invalid ARIA property used on paste area `<iframe>`. -* [#13164](http://dev.ckeditor.com/ticket/13164): Fixed: Error when inserting a hidden field. -* [#13155](http://dev.ckeditor.com/ticket/13155): Fixed: Incorrect [Line Utilities](http://ckeditor.com/addon/lineutils) positioning when `<body>` has a margin. -* [#13351](http://dev.ckeditor.com/ticket/13351): Fixed: Link lost when editing a linked image with the Link tab disabled. This also fixed a bug when inserting an image into a fully selected link would throw an error ([#12847](https://dev.ckeditor.com/ticket/12847)). -* [#13344](http://dev.ckeditor.com/ticket/13344): [WebKit/Blink] Fixed: It is possible to remove or change editor content in [read-only mode](http://docs.ckeditor.com/#!/guide/dev_readonly). - -Other Changes: - -* [#12844](http://dev.ckeditor.com/ticket/12844) and [#13103](http://dev.ckeditor.com/ticket/13103): Upgraded the [testing environment](http://docs.ckeditor.com/#!/guide/dev_tests) to [Bender.js](https://github.com/benderjs/benderjs) `0.2.3`. -* [#12930](http://dev.ckeditor.com/ticket/12930): Because of licensing issues, `truncated-mathjax/` is now removed from the `tests/` directory. Now `bender.config.mathJaxLibPath` must be configured manually in order to run [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin tests. -* [#13266](http://dev.ckeditor.com/ticket/13266): Added more shades of gray in the [Color Dialog](http://ckeditor.com/addon/colordialog) window. Thanks to [mizafish](https://github.com/mizafish)! - - -## CKEditor 4.4.7 - -Fixed Issues: - -* [#12825](http://dev.ckeditor.com/ticket/12825): Fixed: Preventing the [Table Resize](http://ckeditor.com/addon/tableresize) plugin from operating on elements outside the editor. Thanks to [Paul Martin](https://github.com/Paul-Martin)! -* [#12157](http://dev.ckeditor.com/ticket/12157): Fixed: Lost text formatting on pressing *Tab* when the [`config.tabSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-tabSpaces) configuration option value was greater than zero. -* [#12777](http://dev.ckeditor.com/ticket/12777): Fixed: The `table-layout` CSS property should be reset by skins. Thanks to [vita10gy](https://github.com/vita10gy)! -* [#12812](http://dev.ckeditor.com/ticket/12812): Fixed: An uncaught security exception is thrown when [Line Utilities](http://ckeditor.com/addon/lineutils) are used in an inline editor loaded in a cross-domain `iframe`. Thanks to [Vitaliy Zurian](https://github.com/thecatontheflat)! -* [#12735](http://dev.ckeditor.com/ticket/12735): Fixed: [`config.fillEmptyBlocks`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fillEmptyBlocks) should only apply when outputting data. -* [#10032](http://dev.ckeditor.com/ticket/10032): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) filter is executed for every paste after using the button. -* [#12597](http://dev.ckeditor.com/ticket/12597): [Blink/WebKit] Fixed: Multi-byte Japanese characters entry not working properly after *Shift+Enter*. -* [#12387](http://dev.ckeditor.com/ticket/12387): Fixed: An error is thrown if a skin does not have the [`chameleon`](http://docs.ckeditor.com/#!/api/CKEDITOR.skin-method-chameleon) property defined and [`config.uiColor`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-uiColor) is defined. -* [#12747](http://dev.ckeditor.com/ticket/12747): [IE8-10] Fixed: Opening a drop-down for a specific selection when the editor is maximized results in incorrect drop-down panel position. -* [#12850](http://dev.ckeditor.com/ticket/12850): [IEQM] Fixed: An error is thrown after focusing the editor. - -## CKEditor 4.4.6 - -**Security Updates:** - -* Fixed XSS vulnerability in the HTML parser reported by [Maco Cortes](https://www.facebook.com/Maaacoooo). - - Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode. - -**An upgrade is highly recommended!** - -New Features: - -* [#12501](http://dev.ckeditor.com/ticket/12501): Allowed dashes in element names in the [string format of allowed content rules](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules-section-string-format). -* [#12550](http://dev.ckeditor.com/ticket/12550): Added the `<main>` element to the [`CKEDITOR.dtd`](http://docs.ckeditor.com/#!/api/CKEDITOR.dtd). - -Fixed Issues: - -* [#12506](http://dev.ckeditor.com/ticket/12506): [Safari] Fixed: Cannot paste into inline editor if the page has `user-select: none` style. Thanks to [shaohua](https://github.com/shaohua)! -* [#12683](http://dev.ckeditor.com/ticket/12683): Fixed: [Filter](http://docs.ckeditor.com/#!/guide/dev_acf) fails to remove custom tags. Thanks to [timselier](https://github.com/timselier)! -* [#12489](http://dev.ckeditor.com/ticket/12489) and [#12491](http://dev.ckeditor.com/ticket/12491): Fixed: Various issues related to restoring the selection after performing operations on filler character. See the [fixed cases](http://dev.ckeditor.com/ticket/12491#comment:4). -* [#12621](http://dev.ckeditor.com/ticket/12621): Fixed: Cannot remove inline styles (bold, italic, etc.) in empty lines. -* [#12630](http://dev.ckeditor.com/ticket/12630): [Chrome] Fixed: Selection is placed outside the paragraph when the [New Page](http://ckeditor.com/addon/newpage) button is clicked. This patch significantly simplified the way how the initial selection (a selection after the content of the editable is overwritten) is being fixed. That might have fixed many related scenarios in all browsers. -* [#11647](http://dev.ckeditor.com/ticket/11647): Fixed: The [`editor.blur`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-blur) event is not fired on first blur after initializing the inline editor on an already focused element. -* [#12601](http://dev.ckeditor.com/ticket/12601): Fixed: [Strikethrough](http://ckeditor.com/addon/basicstyles) button tooltip spelling. -* [#12546](http://dev.ckeditor.com/ticket/12546): Fixed: The Preview tab in the [Document Properties](http://ckeditor.com/addon/docprops) dialog window is always disabled. -* [#12300](http://dev.ckeditor.com/ticket/12300): Fixed: The [`editor.change`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event fired on first navigation key press after typing. -* [#12141](http://dev.ckeditor.com/ticket/12141): Fixed: List items are lost when indenting a list item with content wrapped with a block element. -* [#12515](http://dev.ckeditor.com/ticket/12515): Fixed: Cursor is in the wrong position when undoing after adding an image and typing some text. -* [#12484](http://dev.ckeditor.com/ticket/12484): [Blink/WebKit] Fixed: DOM is changed outside the editor area in a certain case. -* [#12688](http://dev.ckeditor.com/ticket/12688): Improved the tests of the [styles system](http://docs.ckeditor.com/#!/api/CKEDITOR.style) and fixed two minor issues. -* [#12403](http://dev.ckeditor.com/ticket/12403): Fixed: Changing the [font](http://ckeditor.com/addon/font) style should not lead to nesting it in the previous style element. -* [#12609](http://dev.ckeditor.com/ticket/12609): Fixed: Incorrect `config.magicline_putEverywhere` name used for a [Magic Line](http://ckeditor.com/addon/magicline) all-encompassing [`config.magicline_everywhere`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-magicline_everywhere) configuration option. - - -## CKEditor 4.4.5 - -New Features: - -* [#12279](http://dev.ckeditor.com/ticket/12279): Added a possibility to pass a custom evaluator to [`node.getAscendant()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.node-method-getAscendant). - -Fixed Issues: - -* [#12423](http://dev.ckeditor.com/ticket/12423): [Safari7.1+] Fixed: *Enter* key moved cursor to a strange position. -* [#12381](http://dev.ckeditor.com/ticket/12381): [iOS] Fixed: Selection issue. Thanks to [Remiremi](https://github.com/Remiremi)! -* [#10804](http://dev.ckeditor.com/ticket/10804): Fixed: `CKEDITOR_GETURL` is not used with some plugins where it should be used. Thanks to [Thomas Andraschko](https://github.com/tandraschko)! -* [#9137](http://dev.ckeditor.com/ticket/9137): Fixed: The `<base>` tag is not created when `<head>` has an attribute. Thanks to [naoki.fujikawa](https://github.com/naoki-fujikawa)! -* [#12377](http://dev.ckeditor.com/ticket/12377): Fixed: Errors thrown in the [Image](http://ckeditor.com/addon/image) plugin when removing preview from the dialog window definition. Thanks to [Axinet](https://github.com/Axinet)! -* [#12162](http://dev.ckeditor.com/ticket/12162): Fixed: Auto paragraphing and *Enter* key in nested editables. -* [#12315](http://dev.ckeditor.com/ticket/12315): Fixed: Marked [`config.autoParagraph`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoParagraph) as deprecated. -* [#12113](http://dev.ckeditor.com/ticket/12113): Fixed: A [code snippet](http://ckeditor.com/addon/codesnippet) should be presented in the [elements path](http://ckeditor.com/addon/elementspath) as "code snippet" (translatable). -* [#12311](http://dev.ckeditor.com/ticket/12311): Fixed: [Remove Format](http://ckeditor.com/addon/removeformat) should also remove `<cite>` elements. -* [#12261](http://dev.ckeditor.com/ticket/12261): Fixed: Filter has to be destroyed and removed from [`CKEDITOR.filter.instances`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-static-property-instances) on editor destroy. -* [#12398](http://dev.ckeditor.com/ticket/12398): Fixed: [Maximize](http://ckeditor.com/addon/maximize) does not work on an instance without a [title](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-title). -* [#12097](http://dev.ckeditor.com/ticket/12097): Fixed: JAWS not reading the number of options correctly in the [Text Color and Background Color](http://ckeditor.com/addon/colorbutton) button menu. -* [#12411](http://dev.ckeditor.com/ticket/12411): Fixed: [Page Break](http://ckeditor.com/addon/pagebreak) used directly in the editable breaks the editor. -* [#12354](http://dev.ckeditor.com/ticket/12354): Fixed: Various issues in undo manager when holding keys. -* [#12324](http://dev.ckeditor.com/ticket/12324): [IE8] Fixed: Undo steps are not recorded when changing the caret position by clicking below the body. -* [#12332](http://dev.ckeditor.com/ticket/12332): Fixed: Lowered DOM events listeners' priorities in undo manager in order to avoid ambiguity. -* [#12402](http://dev.ckeditor.com/ticket/12402): [Blink] Fixed: Workaround for Blink bug with `document.title` which breaks updating title in the full HTML mode. -* [#12338](http://dev.ckeditor.com/ticket/12338): Fixed: The CKEditor package contains unoptimized images. - - -## CKEditor 4.4.4 - -Fixed Issues: - -* [#12268](http://dev.ckeditor.com/ticket/12268): Cleanup of [UI Color](http://ckeditor.com/addon/uicolor) YUI styles. Thanks to [CasherWest](https://github.com/CasherWest)! -* [#12263](http://dev.ckeditor.com/ticket/12263): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) filter does not properly normalize semicolons style text. Thanks to [Alin Purcaru](https://github.com/mesmerizero)! -* [#12243](http://dev.ckeditor.com/ticket/12243): Fixed: Text formatting lost when pasting from Word. Thanks to [Alin Purcaru](https://github.com/mesmerizero)! -* [#111739](http://dev.ckeditor.com/ticket/11739): Fixed: `keypress` listeners should not be used in the undo manager. A complete rewrite of keyboard handling in the undo manager was made. Numerous smaller issues were fixed, among others: - * [#10926](http://dev.ckeditor.com/ticket/10926): [Chrome@Android] Fixed: Typing does not record snapshots and does not fire the [`editor.change`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event. - * [#11611](http://dev.ckeditor.com/ticket/11611): [Firefox] Fixed: The [`editor.change`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event is fired when pressing Arrow keys. - * [#12219](http://dev.ckeditor.com/ticket/12219): [Safari] Fixed: Some modifications of the [`UndoManager.locked`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager-property-locked) property violate strict mode in the [Undo](http://ckeditor.com/addon/undo) plugin. -* [#10916](http://dev.ckeditor.com/ticket/10916): Fixed: [Magic Line](http://ckeditor.com/addon/magicline) icon in Right-To-Left environments. -* [#11970](http://dev.ckeditor.com/ticket/11970): [IE] Fixed: CKEditor `paste` event is not fired when pasting with *Shift+Ins*. -* [#12111](http://dev.ckeditor.com/ticket/12111): Fixed: Linked image attributes are not read when opening the image dialog window by doubleclicking. -* [#10030](http://dev.ckeditor.com/ticket/10030): [IE] Fixed: Prevented "Unspecified Error" thrown in various cases when IE8-9 does not allow access to `document.activeElement`. -* [#12273](http://dev.ckeditor.com/ticket/12273): Fixed: Applying block style in a description list breaks it. -* [#12218](http://dev.ckeditor.com/ticket/12218): Fixed: Minor syntax issue in CSS files. -* [#12178](http://dev.ckeditor.com/ticket/12178): [Blink/WebKit] Fixed: Iterator does not return the block if the selection is located at the end of it. -* [#12185](http://dev.ckeditor.com/ticket/12185): [IE9QM] Fixed: Error thrown when moving the mouse over focused editor's scrollbar. -* [#12215](http://dev.ckeditor.com/ticket/12215): Fixed: Basepath resolution does not recognize semicolon as a query separator. -* [#12135](http://dev.ckeditor.com/ticket/12135): Fixed: [Remove Format](http://ckeditor.com/addon/removeformat) does not work on widgets. -* [#12298](http://dev.ckeditor.com/ticket/12298): [IE11] Fixed: Clicking below `<body>` in Compatibility Mode will no longer reset selection to the first line. -* [#12204](http://dev.ckeditor.com/ticket/12204): Fixed: Editor's voice label is not affected by [`config.title`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-title). -* [#11915](http://dev.ckeditor.com/ticket/11915): Fixed: With [SCAYT](http://ckeditor.com/addon/scayt) enabled, cursor moves to the beginning of the first highlighted, misspelled word after typing or pasting into the editor. -* [SCAYT](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/69): Fixed: Error thrown in the console after enabling [SCAYT](http://ckeditor.com/addon/scayt) and trying to add a new image. - - -Other Changes: - -* [#12296](http://dev.ckeditor.com/ticket/12296): Merged `benderjs-ckeditor` into the main CKEditor repository. - -## CKEditor 4.4.3 - -**Security Updates:** - -* Fixed XSS vulnerability in the Preview plugin reported by Mario Heiderich of [Cure53](https://cure53.de/). - -**An upgrade is highly recommended!** - -New Features: - -* [#12164](http://dev.ckeditor.com/ticket/12164): Added the "Justify" option to the "Horizontal Alignment" drop-down in the Table Cell Properties dialog window. - -Fixed Issues: - -* [#12110](http://dev.ckeditor.com/ticket/12110): Fixed: Editor crash after deleting a table. Thanks to [Alin Purcaru](https://github.com/mesmerizero)! -* [#11897](http://dev.ckeditor.com/ticket/11897): Fixed: *Enter* key used in an empty list item creates a new line instead of breaking the list. Thanks to [noam-si](https://github.com/noam-si)! -* [#12140](http://dev.ckeditor.com/ticket/12140): Fixed: Double-clicking linked widgets opens two dialog windows. -* [#12132](http://dev.ckeditor.com/ticket/12132): Fixed: Image is inserted with `width` and `height` styles even when they are not allowed. -* [#9317](http://dev.ckeditor.com/ticket/9317): [IE] Fixed: [`config.disableObjectResizing`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-disableObjectResizing) does not work on IE. **Note**: We were not able to fix this issue on IE11+ because necessary events stopped working. See a [last resort workaround](http://dev.ckeditor.com/ticket/9317#comment:16) and make sure to [support our complaint to Microsoft](https://connect.microsoft.com/IE/feedback/details/742593/please-respect-execcommand-enableobjectresizing-in-contenteditable-elements). -* [#9638](http://dev.ckeditor.com/ticket/9638): Fixed: There should be no information about accessibility help available under the *Alt+0* keyboard shortcut if the [Accessibility Help](http://ckeditor.com/addon/a11yhelp) plugin is not available. -* [#8117](http://dev.ckeditor.com/ticket/8117) and [#9186](http://dev.ckeditor.com/ticket/9186): Fixed: In HTML5 `<meta>` tags should be allowed everywhere, including inside the `<body>` element. -* [#10422](http://dev.ckeditor.com/ticket/10422): Fixed: [`config.fillEmptyBlocks`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fillEmptyBlocks) not working properly if a function is specified. - -## CKEditor 4.4.2 - -Important Notes: - -* The CKEditor testing environment is now publicly available. Read more about how to set up the environment and execute tests in the [CKEditor Testing Environment](http://docs.ckeditor.com/#!/guide/dev_tests) guide. - Please note that the [`tests/`](https://github.com/ckeditor/ckeditor-dev/tree/master/tests) directory which contains editor tests is not available in release packages. It can only be found in the development version of CKEditor on [GitHub](https://github.com/ckeditor/ckeditor-dev/). - -New Features: - -* [#11909](http://dev.ckeditor.com/ticket/11909): Introduced a parameter to prevent the [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) method from recording undo snapshots. - -Fixed Issues: - -* [#11757](http://dev.ckeditor.com/ticket/11757): Fixed: Imperfections in the [Moono](http://ckeditor.com/addon/moono) skin. Thanks to [danyaPostfactum](https://github.com/danyaPostfactum)! -* [#10091](http://dev.ckeditor.com/ticket/10091): Blockquote should be treated like an object by the styles system. Thanks to [dan-james-deeson](https://github.com/dan-james-deeson)! -* [#11478](http://dev.ckeditor.com/ticket/11478): Fixed: Issue with passing jQuery objects to [adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) configuration. -* [#10867](http://dev.ckeditor.com/ticket/10867): Fixed: Issue with setting encoded URI as image link. -* [#11983](http://dev.ckeditor.com/ticket/11983): Fixed: Clicking a nested widget does not focus it. Additionally, performance of the [`widget.repository.getByElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-getByElement) method was improved. -* [#12000](http://dev.ckeditor.com/ticket/12000): Fixed: Nested widgets should be initialized on [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) and [`nestedEditable.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.nestedEditable-method-setData). -* [#12022](http://dev.ckeditor.com/ticket/12022): Fixed: Outer widget's drag handler is not created at all if it has any nested widgets inside. -* [#11960](http://dev.ckeditor.com/ticket/11960): [Blink/WebKit] Fixed: The caret should be scrolled into view on *Backspace* and *Delete* (covers only the merging blocks case). -* [#11306](http://dev.ckeditor.com/ticket/11306): [OSX][Blink/WebKit] Fixed: No widget entries in the context menu on widget right-click. -* [#11957](http://dev.ckeditor.com/ticket/11957): Fixed: Alignment labels in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window are not translated. -* [#11980](http://dev.ckeditor.com/ticket/11980): [Blink/WebKit] Fixed: `<span>` elements created when joining adjacent elements (non-collapsed selection). -* [#12009](http://dev.ckeditor.com/ticket/12009): [Nested widgets] Integration with the [Magic Line](http://ckeditor.com/addon/magicline) plugin. -* [#11387](http://dev.ckeditor.com/ticket/11387): Fixed: `role="radiogroup"` should be applied only to radio inputs' container. -* [#7975](http://dev.ckeditor.com/ticket/7975): [IE8] Fixed: Errors when trying to select an empty table cell. -* [#11947](http://dev.ckeditor.com/ticket/11947): [Firefox+IE11] Fixed: *Shift+Enter* in lists produces two line breaks. -* [#11972](http://dev.ckeditor.com/ticket/11972): Fixed: Feature detection in the [`element.setText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setText) method should not trigger the layout engine. -* [#7634](http://dev.ckeditor.com/ticket/7634): Fixed: The [Flash Dialog](http://ckeditor.com/addon/flash) plugin omits the `allowFullScreen` parameter in the editor data if set to `true`. -* [#11910](http://dev.ckeditor.com/ticket/11910): Fixed: [Enhanced Image](http://ckeditor.com/addon/image2) does not take [`config.baseHref`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-baseHref) into account when updating image dimensions. -* [#11753](http://dev.ckeditor.com/ticket/11753): Fixed: Wrong [`checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) method value after focusing or blurring a widget. -* [#11830](http://dev.ckeditor.com/ticket/11830): Fixed: Impossible to pass some arguments to [CKBuilder](https://github.com/ckeditor/ckbuilder) when using the `/dev/builder/build.sh` script. -* [#11945](http://dev.ckeditor.com/ticket/11945): Fixed: [Form Elements](http://ckeditor.com/addon/forms) plugin should not change a core method. -* [#11384](http://dev.ckeditor.com/ticket/11384): [IE9+] Fixed: `IndexSizeError` thrown when pasting into a non-empty selection anchored in one text node. - -## CKEditor 4.4.1 - -New Features: - -* [#9661](http://dev.ckeditor.com/ticket/9661): Added the option to [configure](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-linkJavaScriptLinksAllowed) anchor tags with JavaScript code in the `href` attribute. - -Fixed Issues: - -* [#11861](http://dev.ckeditor.com/ticket/11861): [WebKit/Blink] Fixed: Span elements created while joining adjacent elements. **Note:** This patch only covers cases when *Backspace* or *Delete* is pressed on a collapsed (empty) selection. The remaining case, with a non-empty selection, will be fixed in the next release. -* [#10714](http://dev.ckeditor.com/ticket/10714): [iOS] Fixed: Selection and drop-downs are broken if a touch event listener is used due to a [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=128924). Thanks to [Arty Gus](https://github.com/artygus)! -* [#11911](http://dev.ckeditor.com/ticket/11911): Fixed setting the `dir` attribute for a preloaded language in [CKEDITOR.lang](http://docs.ckeditor.com/#!/api/CKEDITOR.lang). Thanks to [Akash Mohapatra](https://github.com/akashmohapatra)! -* [#11926](http://dev.ckeditor.com/ticket/11926): Fixed: [Code Snippet](http://ckeditor.com/addon/codesnippet) does not decode HTML entities when loading code from the `<code>` element. -* [#11223](http://dev.ckeditor.com/ticket/11223): Fixed: Issue when [Protected Source](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-protectedSource) was not working in the `<title>` element. -* [#11859](http://dev.ckeditor.com/ticket/11859): Fixed: Removed the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin dependency from the [Code Snippet](http://ckeditor.com/addon/codesnippet) sample. -* [#11754](http://dev.ckeditor.com/ticket/11754): [Chrome] Fixed: Infinite loop when content includes not closed attributes. -* [#11848](http://dev.ckeditor.com/ticket/11848): [IE] Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) throwing an exception when there was no selection in the editor. -* [#11801](http://dev.ckeditor.com/ticket/11801): Fixed: Editor anchors unavailable when linking the [Enhanced Image](http://ckeditor.com/addon/image2) widget. -* [#11626](http://dev.ckeditor.com/ticket/11626): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) sets invalid column width. -* [#11872](http://dev.ckeditor.com/ticket/11872): Made [`element.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-addClass) chainable symmetrically to [`element.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeClass). -* [#11813](http://dev.ckeditor.com/ticket/11813): Fixed: Link lost while pasting a captioned image and restoring an undo snapshot ([Enhanced Image](http://ckeditor.com/addon/image2)). -* [#11814](http://dev.ckeditor.com/ticket/11814): Fixed: _Link_ and _Unlink_ entries persistently displayed in the [Enhanced Image](http://ckeditor.com/addon/image2) context menu. -* [#11839](http://dev.ckeditor.com/ticket/11839): [IE9] Fixed: The caret jumps out of the editable area when resizing the editor in the source mode. -* [#11822](http://dev.ckeditor.com/ticket/11822): [WebKit] Fixed: Editing anchors by double-click is broken in some cases. -* [#11823](http://dev.ckeditor.com/ticket/11823): [IE8] Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) throws an error over scrollbar. -* [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: It is not possible to change the language back to _Not set_ in the [Code Snippet](http://ckeditor.com/addon/codesnippet) dialog window. -* [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: [Filter](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied inside elements with the `contenteditable` attribute set to `true`. -* [#11798](http://dev.ckeditor.com/ticket/11798): Fixed: Inserting a non-editable element inside a table cell breaks the table. -* [#11793](http://dev.ckeditor.com/ticket/11793): Fixed: Drop-down is not "on" when clicking it while the editor is blurred. -* [#11850](http://dev.ckeditor.com/ticket/11850): Fixed: Fake objects with the `contenteditable` attribute set to `false` are not downcasted properly. -* [#11811](http://dev.ckeditor.com/ticket/11811): Fixed: Widget's data is not encoded correctly when passed to an attribute. -* [#11777](http://dev.ckeditor.com/ticket/11777): Fixed encoding ampersand in the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin. -* [#11880](http://dev.ckeditor.com/ticket/11880): [IE8-9] Fixed: Linked image has a default thick border. - -Other Changes: - -* [#11807](http://dev.ckeditor.com/ticket/11807): Updated jQuery version used in the sample to 1.11.0 and tested CKEditor jQuery Adapter with version 1.11.0 and 2.1.0. -* [#9504](http://dev.ckeditor.com/ticket/9504): Stopped using deprecated `attribute.specified` in all browsers except Internet Explorer. -* [#11809](http://dev.ckeditor.com/ticket/11809): Changed tab size in `<pre>` to 4 spaces. - -## CKEditor 4.4 - -**Important Notes:** - -* Marked the [`editor.beforePaste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-beforePaste) event as deprecated. -* The default class of captioned images has changed to `image` (was: `caption`). Please note that once edited in CKEditor 4.4+, all existing images of the `caption` class (`<figure class="caption">`) will be [filtered out](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) unless the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option is set to `caption`. For backward compatibility (i.e. when upgrading), it is highly recommended to use this setting, which also helps prevent CSS conflicts, etc. This does not apply to new CKEditor integrations. -* Widgets without defined buttons are no longer registered automatically to the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter). Before CKEditor 4.4 widgets were registered to the ACF which was an incorrect behavior ([#11567](http://dev.ckeditor.com/ticket/11567)). This change should not have any impact on standard scenarios, but if your button does not execute the widget command, you need to set [`allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-allowedContent) and [`requiredContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-requiredContent) properties for it manually, because the editor will not be able to find them. -* The [Show Borders](http://ckeditor.com/addon/showborders) plugin was added to the Standard installation package in order to ensure that unstyled tables are still visible for the user ([#11665](http://dev.ckeditor.com/ticket/11665)). -* Since CKEditor 4.4 the editor instance should be passed to [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) methods to ensure full compatibility with other features (e.g. applying styles to widgets requires that). We ensured backward compatibility though, so the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) will work even when the editor instance is not provided. - -New Features: - -* [#11297](http://dev.ckeditor.com/ticket/11297): Styles can now be applied to widgets. The definition of a style which can be applied to a specific widget must contain two additional properties — `type` and `widget`. Read more in the [Widget Styles](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles) section of the "Syles Drop-down" guide. Note that by default, widgets support only classes and no other attributes or styles. Related changes and features: - * Introduced the [`CKEDITOR.style.addCustomHandler()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-static-method-addCustomHandler) method for registering custom style handlers. - * The [`CKEDITOR.style.apply()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-apply) and [`CKEDITOR.style.remove()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-remove) methods are now called with an editor instance instead of the document so they can be reused by the [`CKEDITOR.editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) and [`CKEDITOR.editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) methods. Backward compatibility was preserved, but from CKEditor 4.4 it is highly recommended to pass an editor instead of a document to these methods. - * Many new methods and properties were introduced in the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) to make the handling of styles by widgets fully customizable. See: [`widget.definition.styleableElements`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleableElements), [`widget.definition.styleToAllowedContentRule`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleToAllowedContentRules), [`widget.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-addClass), [`widget.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeClass), [`widget.getClasses()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-getClasses), [`widget.hasClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-hasClass), [`widget.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-applyStyle), [`widget.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeStyle), [`widget.checkStyleActive()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-checkStyleActive). - * Integration with the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) required an introduction of the [`CKEDITOR.style.toAllowedContent()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-toAllowedContentRules) method which can be implemented by the custom style handler and if exists, it is used by the [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) to translate a style to [allowed content rules](http://docs.ckeditor.com/#!/api/CKEDITOR.filter.allowedContentRules). -* [#11300](http://dev.ckeditor.com/ticket/11300): Various changes in the [Enhanced Image](http://ckeditor.com/addon/image2) plugin: - * Introduced the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option to configure the class of captioned images. - * Introduced the [`config.image2_alignClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_alignClasses) option to configure the way images are aligned with CSS classes. - If this setting is defined, the editor produces classes instead of inline styles for aligned images. - * Default image caption can be translated (customized) with the `editor.lang.image2.captionPlaceholder` string. -* [#11341](http://dev.ckeditor.com/ticket/11341): [Enhanced Image](http://ckeditor.com/addon/image2) plugin: It is now possible to add a link to any image type. -* [#10202](http://dev.ckeditor.com/ticket/10202): Introduced wildcard support in the [Allowed Content Rules](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) format. -* [#10276](http://dev.ckeditor.com/ticket/10276): Introduced blacklisting in the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter). -* [#10480](http://dev.ckeditor.com/ticket/10480): Introduced code snippets with code highlighting. There are two versions available so far — the default [Code Snippet](http://ckeditor.com/addon/codesnippet) which uses the [highlight.js](http://highlightjs.org) library and the [Code Snippet GeSHi](http://ckeditor.com/addon/codesnippetgeshi) which uses the [GeSHi](http://qbnz.com/highlighter/) library. -* [#11737](http://dev.ckeditor.com/ticket/11737): Introduced an option to prevent [filtering](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) of an element that matches custom criteria (see [`filter.addElementCallback()`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-method-addElementCallback)). -* [#11532](http://dev.ckeditor.com/ticket/11532): Introduced the [`editor.addContentsCss()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addContentsCss) method that can be used for [adding custom CSS files](http://docs.ckeditor.com/#!/guide/plugin_sdk_styles). -* [#11536](http://dev.ckeditor.com/ticket/11536): Added the [`CKEDITOR.tools.htmlDecode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlDecode) method for decoding HTML entities. -* [#11225](http://dev.ckeditor.com/ticket/11225): Introduced the [`CKEDITOR.tools.transparentImageData`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-property-transparentImageData) property which contains transparent image data to be used in CSS or as image source. - -Other Changes: - -* [#11377](http://dev.ckeditor.com/ticket/11377): Unified internal representation of empty anchors using the [fake objects](http://ckeditor.com/addon/fakeobjects). -* [#11422](http://dev.ckeditor.com/ticket/11422): Removed Firefox 3.x, Internet Explorer 6 and Opera 12.x leftovers in code. -* [#5217](http://dev.ckeditor.com/ticket/5217): Setting data (including switching between modes) creates a new undo snapshot. Besides that: - * Introduced the [`editable.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-property-status) property. - * Introduced a new `forceUpdate` option for the [`editor.lockSnapshot`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-lockSnapshot) event. - * Fixed: Selection not being unlocked in inline editor after setting data ([#11500](http://dev.ckeditor.com/ticket/11500)). -* The [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin was updated to the latest version. - -Fixed Issues: - -* [#10190](http://dev.ckeditor.com/ticket/10190): Fixed: Removing block style with [`editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) should result in a paragraph and not a div. -* [#11727](http://dev.ckeditor.com/ticket/11727): Fixed: The editor tries to select a non-editable image which was clicked. - -## CKEditor 4.3.5 - -New Features: - -* Added new translation: Tatar. - -Fixed Issues: - -* [#11677](http://dev.ckeditor.com/ticket/11677): Fixed: Undo/Redo keystrokes are blocked in the source mode. -* [#11717](http://dev.ckeditor.com/ticket/11717): [Document Properties](http://ckeditor.com/addon/docprops) plugin requires the [Color Dialog](http://ckeditor.com/addon/colordialog) plugin to work. - -## CKEditor 4.3.4 - -Fixed Issues: - -* [#11597](http://dev.ckeditor.com/ticket/11597): [IE11] Fixed: Error thrown when trying to open the [preview](http://ckeditor.com/addon/preview) using the keyboard. -* [#11544](http://dev.ckeditor.com/ticket/11544): [Placeholders](http://ckeditor.com/addon/placeholder) will no longer be upcasted in parents not accepting `<span>` elements. -* [#8663](http://dev.ckeditor.com/ticket/8663): Fixed [`element.renameNode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-renameNode) not clearing the [`element.getName()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-getName) cache. -* [#11574](http://dev.ckeditor.com/ticket/11574): Fixed: *Backspace* destroying the DOM structure if an inline editable is placed in a list item. -* [#11603](http://dev.ckeditor.com/ticket/11603): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) attaches to tables outside the editable. -* [#9205](http://dev.ckeditor.com/ticket/9205), [#7805](http://dev.ckeditor.com/ticket/7805), [#8216](http://dev.ckeditor.com/ticket/8216): Fixed: `{cke_protected_1}` appearing in data in various cases where HTML comments are placed next to `"` or `'`. -* [#11635](http://dev.ckeditor.com/ticket/11635): Fixed: Some attributes are not protected before the content is passed through the fix bin. -* [#11660](http://dev.ckeditor.com/ticket/11660): [IE] Fixed: Table content is lost when some extra markup is inside the table. -* [#11641](http://dev.ckeditor.com/ticket/11641): Fixed: Switching between modes in the classic editor removes content styles for the inline editor. -* [#11568](http://dev.ckeditor.com/ticket/11568): Fixed: [Styles](http://ckeditor.com/addon/stylescombo) drop-down list is not enabled on selection change. - -## CKEditor 4.3.3 - -Fixed Issues: - -* [#11500](http://dev.ckeditor.com/ticket/11500): [WebKit/Blink] Fixed: Selection lost when setting data in another inline editor. Additionally, [`selection.removeAllRanges()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-removeAllRanges) is now scoped to selection's [root](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-property-root). -* [#11104](http://dev.ckeditor.com/ticket/11104): [IE] Fixed: Various issues with scrolling and selection when focusing widgets. -* [#11487](http://dev.ckeditor.com/ticket/11487): Moving mouse over the [Enhanced Image](http://ckeditor.com/addon/image2) widget will no longer change the value returned by the [`editor.checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) method. -* [#8673](http://dev.ckeditor.com/ticket/8673): [WebKit] Fixed: Cannot select and remove the [Page Break](http://ckeditor.com/addon/pagebreak). -* [#11413](http://dev.ckeditor.com/ticket/11413): Fixed: Incorrect [`editor.execCommand()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-execCommand) behavior. -* [#11438](http://dev.ckeditor.com/ticket/11438): Splitting table cells vertically is no longer changing table structure. -* [#8899](http://dev.ckeditor.com/ticket/8899): Fixed: Links in the [About CKEditor](http://ckeditor.com/addon/about) dialog window now open in a new browser window or tab. -* [#11490](http://dev.ckeditor.com/ticket/11490): Fixed: [Menu button](http://ckeditor.com/addon/menubutton) panel not showing in the source mode. -* [#11417](http://dev.ckeditor.com/ticket/11417): The [`widget.doubleclick`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-event-doubleclick) event is not canceled anymore after editing was triggered. -* [#11253](http://dev.ckeditor.com/ticket/11253): [IE] Fixed: Clipped upload button in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window. -* [#11359](http://dev.ckeditor.com/ticket/11359): Standardized the way anchors are discovered by the [Link](http://ckeditor.com/addon/link) plugin. -* [#11058](http://dev.ckeditor.com/ticket/11058): [IE8] Fixed: Error when deleting a table row. -* [#11508](http://dev.ckeditor.com/ticket/11508): Fixed: [`htmlDataProcessor`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor) discovering protected attributes within other attributes' values. -* [#11533](http://dev.ckeditor.com/ticket/11533): Widgets: Avoid recurring upcasts if the DOM structure was modified during an upcast. -* [#11400](http://dev.ckeditor.com/ticket/11400): Fixed: The [`domObject.removeAllListeners()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.domObject-method-removeAllListeners) method does not remove custom listeners completely. -* [#11493](http://dev.ckeditor.com/ticket/11493): Fixed: The [`selection.getRanges()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-getRanges) method does not override cached ranges when used with the `onlyEditables` argument. -* [#11390](http://dev.ckeditor.com/ticket/11390): [IE] All [XML](http://ckeditor.com/addon/xml) plugin [methods](http://docs.ckeditor.com/#!/api/CKEDITOR.xml) now work in IE10+. -* [#11542](http://dev.ckeditor.com/ticket/11542): [IE11] Fixed: Blurry toolbar icons when Right-to-Left UI language is set. -* [#11504](http://dev.ckeditor.com/ticket/11504): Fixed: When [`config.fullPage`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fullPage) is set to `true`, entities are not encoded in editor output. -* [#11004](http://dev.ckeditor.com/ticket/11004): Integrated [Enhanced Image](http://ckeditor.com/addon/image2) dialog window with [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter). -* [#11439](http://dev.ckeditor.com/ticket/11439): Fixed: Properties get cloned in the Cell Properties dialog window if multiple cells are selected. - -## CKEditor 4.3.2 - -Fixed Issues: - -* [#11331](http://dev.ckeditor.com/ticket/11331): A menu button will have a changed label when selected instead of using the `aria-pressed` attribute. -* [#11177](http://dev.ckeditor.com/ticket/11177): Widget drag handler improvements: - * [#11176](http://dev.ckeditor.com/ticket/11176): Fixed: Initial position is not updated when the widget data object is empty. - * [#11001](http://dev.ckeditor.com/ticket/11001): Fixed: Multiple synchronous layout recalculations are caused by initial drag handler positioning causing performance issues. - * [#11161](http://dev.ckeditor.com/ticket/11161): Fixed: Drag handler is not repositioned in various situations. - * [#11281](http://dev.ckeditor.com/ticket/11281): Fixed: Drag handler and mask are duplicated after widget reinitialization. -* [#11207](http://dev.ckeditor.com/ticket/11207): [Firefox] Fixed: Misplaced [Enhanced Image](http://ckeditor.com/addon/image2) resizer in the inline editor. -* [#11102](http://dev.ckeditor.com/ticket/11102): `CKEDITOR.template` improvements: - * [#11102](http://dev.ckeditor.com/ticket/11102): Added newline character support. - * [#11216](http://dev.ckeditor.com/ticket/11216): Added "\\'" substring support. -* [#11121](http://dev.ckeditor.com/ticket/11121): [Firefox] Fixed: High Contrast mode is enabled when the editor is loaded in a hidden iframe. -* [#11350](http://dev.ckeditor.com/ticket/11350): The default value of [`config.contentsCss`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-contentsCss) is affected by [`CKEDITOR.getUrl()`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl). -* [#11097](http://dev.ckeditor.com/ticket/11097): Improved the [Autogrow](http://ckeditor.com/addon/autogrow) plugin performance when dealing with very big tables. -* [#11290](http://dev.ckeditor.com/ticket/11290): Removed redundant code in the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin. -* [#11133](http://dev.ckeditor.com/ticket/11133): [Page Break](http://ckeditor.com/addon/pagebreak) becomes editable if pasted. -* [#11126](http://dev.ckeditor.com/ticket/11126): Fixed: Native Undo executed once the bottom of the snapshot stack is reached. -* [#11131](http://dev.ckeditor.com/ticket/11131): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Error thrown when switching to source mode if the selection was in widget's nested editable. -* [#11139](http://dev.ckeditor.com/ticket/11139): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Elements Path is not cleared after switching to source mode. -* [#10778](http://dev.ckeditor.com/ticket/10778): Fixed a bug with range enlargement. The range no longer expands to visible whitespace. -* [#11146](http://dev.ckeditor.com/ticket/11146): [IE] Fixed: Preview window switches Internet Explorer to Quirks Mode. -* [#10762](http://dev.ckeditor.com/ticket/10762): [IE] Fixed: JavaScript code displayed in preview window's URL bar. -* [#11186](http://dev.ckeditor.com/ticket/11186): Introduced the [`widgets.repository.addUpcastCallback()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-addUpcastCallback) method that allows to block upcasting given element to a widget. -* [#11307](http://dev.ckeditor.com/ticket/11307): Fixed: Paste as Plain Text conflict with the [MooTools](http://mootools.net) library. -* [#11140](http://dev.ckeditor.com/ticket/11140): [IE11] Fixed: Anchors are not draggable. -* [#11379](http://dev.ckeditor.com/ticket/11379): Changed default contents `line-height` to unitless values to avoid huge text overlapping (like in [#9696](http://dev.ckeditor.com/ticket/9696)). -* [#10787](http://dev.ckeditor.com/ticket/10787): [Firefox] Fixed: Broken replacement of text while pasting into `div`-based editor. -* [#10884](http://dev.ckeditor.com/ticket/10884): Widgets integration with the [Show Blocks](http://ckeditor.com/addon/showblocks) plugin. -* [#11021](http://dev.ckeditor.com/ticket/11021): Fixed: An error thrown when selecting entire editable contents while fake selection is on. -* [#11086](http://dev.ckeditor.com/ticket/11086): [IE8] Re-enable inline widgets drag&drop in Internet Explorer 8. -* [#11372](http://dev.ckeditor.com/ticket/11372): Widgets: Special characters encoded twice in nested editables. -* [#10068](http://dev.ckeditor.com/ticket/10068): Fixed: Support for protocol-relative URLs. -* [#11283](http://dev.ckeditor.com/ticket/11283): [Enhanced Image](http://ckeditor.com/addon/image2): A `<div>` element with `text-align: center` and an image inside is not recognised correctly. -* [#11196](http://dev.ckeditor.com/ticket/11196): [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp): Allowed additional keyboard button labels to be translated in the dialog window. - -## CKEditor 4.3.1 - -**Important Notes:** - -* To match the naming convention, the `language` button is now `Language` ([#11201](http://dev.ckeditor.com/ticket/11201)). -* [Enhanced Image](http://ckeditor.com/addon/image2) button, context menu, command, and icon names match those of the [Image](http://ckeditor.com/addon/image) plugin ([#11222](http://dev.ckeditor.com/ticket/11222)). - -Fixed Issues: - -* [#11244](http://dev.ckeditor.com/ticket/11244): Changed: The [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method now fires the [`widget.repository.checkWidgets`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-event-checkWidgets) event, so from CKEditor 4.3.1 it is preferred to use the method rather than fire the event. -* [#11171](http://dev.ckeditor.com/ticket/11171): Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) and [`editor.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertText) methods do not call the [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method. -* [#11085](http://dev.ckeditor.com/ticket/11085): [IE8] Replaced preview generated by the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget with a placeholder. -* [#11044](http://dev.ckeditor.com/ticket/11044): Enhanced WAI-ARIA support for the [Language](http://ckeditor.com/addon/language) plugin drop-down menu. -* [#11075](http://dev.ckeditor.com/ticket/11075): With drop-down menu button focused, pressing the *Down Arrow* key will now open the menu and focus its first option. -* [#11165](http://dev.ckeditor.com/ticket/11165): Fixed: The [File Browser](http://ckeditor.com/addon/filebrowser) plugin cannot be removed from the editor. -* [#11159](http://dev.ckeditor.com/ticket/11159): [IE9-10] [Enhanced Image](http://ckeditor.com/addon/image2): Fixed buggy discovery of image dimensions. -* [#11101](http://dev.ckeditor.com/ticket/11101): Drop-down lists no longer break when given double quotes. -* [#11077](http://dev.ckeditor.com/ticket/11077): [Enhanced Image](http://ckeditor.com/addon/image2): Empty undo step recorded when resizing the image. -* [#10853](http://dev.ckeditor.com/ticket/10853): [Enhanced Image](http://ckeditor.com/addon/image2): Widget has paragraph wrapper when de-captioning unaligned image. -* [#11198](http://dev.ckeditor.com/ticket/11198): Widgets: Drag handler is not fully visible when an inline widget is in a heading. -* [#11132](http://dev.ckeditor.com/ticket/11132): [Firefox] Fixed: Caret is lost after drag and drop of an inline widget. -* [#11182](http://dev.ckeditor.com/ticket/11182): [IE10-11] Fixed: Editor crashes (IE11) or works with minor issues (IE10) if a page is loaded in Quirks Mode. See [`env.quirks`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-quirks) for more details. -* [#11204](http://dev.ckeditor.com/ticket/11204): Added `figure` and `figcaption` styles to the `contents.css` file so [Enhanced Image](http://ckeditor.com/addon/image2) looks nicer. -* [#11202](http://dev.ckeditor.com/ticket/11202): Fixed: No newline in [BBCode](http://ckeditor.com/addon/bbcode) mode. -* [#10890](http://dev.ckeditor.com/ticket/10890): Fixed: Error thrown when pressing the *Delete* key in a list item. -* [#10055](http://dev.ckeditor.com/ticket/10055): [IE8-10] Fixed: *Delete* pressed on a selected image causes the browser to go back. -* [#11183](http://dev.ckeditor.com/ticket/11183): Fixed: Inserting a horizontal rule or a table in multiple row selection causes a browser crash. Additionally, the [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) method does not insert the element into every range of a selection any more. -* [#11042](http://dev.ckeditor.com/ticket/11042): Fixed: Selection made on an element containing a non-editable element was not auto faked. -* [#11125](http://dev.ckeditor.com/ticket/11125): Fixed: Keyboard navigation through menu and drop-down items will now cycle. -* [#11011](http://dev.ckeditor.com/ticket/11011): Fixed: The [`editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) method removes attributes from nested elements. -* [#11179](http://dev.ckeditor.com/ticket/11179): Fixed: [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy) does not cleanup content generated by the [Table Resize](http://ckeditor.com/addon/tableresize) plugin for inline editors. -* [#11237](http://dev.ckeditor.com/ticket/11237): Fixed: Table border attribute value is deleted when pasting content from Microsoft Word. -* [#11250](http://dev.ckeditor.com/ticket/11250): Fixed: HTML entities inside the `<textarea>` element are not encoded. -* [#11260](http://dev.ckeditor.com/ticket/11260): Fixed: Initially disabled buttons are not read by JAWS as disabled. -* [#11200](http://dev.ckeditor.com/ticket/11200): Added [Clipboard](http://ckeditor.com/addon/clipboard) plugin as a dependency for [Widget](http://ckeditor.com/addon/widget) to fix drag and drop. - -## CKEditor 4.3 - -New Features: - -* [#10612](http://dev.ckeditor.com/ticket/10612): Internet Explorer 11 support. -* [#10869](http://dev.ckeditor.com/ticket/10869): Widgets: Added better integration with the [Elements Path](http://ckeditor.com/addon/elementspath) plugin. -* [#10886](http://dev.ckeditor.com/ticket/10886): Widgets: Added tooltip to the drag handle. -* [#10933](http://dev.ckeditor.com/ticket/10933): Widgets: Introduced drag and drop of block widgets with the [Line Utilities](http://ckeditor.com/addon/lineutils) plugin. -* [#10936](http://dev.ckeditor.com/ticket/10936): Widget System changes for easier integration with other dialog systems. -* [#10895](http://dev.ckeditor.com/ticket/10895): [Enhanced Image](http://ckeditor.com/addon/image2): Added file browser integration. -* [#11002](http://dev.ckeditor.com/ticket/11002): Added the [`draggable`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-draggable) option to disable drag and drop support for widgets. -* [#10937](http://dev.ckeditor.com/ticket/10937): [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget improvements: - * loading indicator ([#10948](http://dev.ckeditor.com/ticket/10948)), - * applying paragraph changes (like font color change) to iframe ([#10841](http://dev.ckeditor.com/ticket/10841)), - * Firefox and IE9 clipboard fixes ([#10857](http://dev.ckeditor.com/ticket/10857)), - * fixing same origin policy issue ([#10840](http://dev.ckeditor.com/ticket/10840)), - * fixing undo bugs ([#10842](http://dev.ckeditor.com/ticket/10842), [#10930](http://dev.ckeditor.com/ticket/10930)), - * fixing other minor bugs. -* [#10862](http://dev.ckeditor.com/ticket/10862): [Placeholder](http://ckeditor.com/addon/placeholder) plugin was rewritten as a widget. -* [#10822](http://dev.ckeditor.com/ticket/10822): Added styles system integration with non-editable elements (for example widgets) and their nested editables. Styles cannot change non-editable content and are applied in nested editable only if allowed by its type and content filter. -* [#10856](http://dev.ckeditor.com/ticket/10856): Menu buttons will now toggle the visibility of their panels when clicked multiple times. [Language](http://ckeditor.com/addon/language) plugin fixes: Added active language highlighting, added an option to remove the language. -* [#10028](http://dev.ckeditor.com/ticket/10028): New [`config.dialog_noConfirmCancel`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-dialog_noConfirmCancel) configuration option that eliminates the need to confirm closing of a dialog window when the user changed any of its fields. -* [#10848](http://dev.ckeditor.com/ticket/10848): Integrate remaining plugins ([Styles](http://ckeditor.com/addon/stylescombo), [Format](http://ckeditor.com/addon/format), [Font](http://ckeditor.com/addon/font), [Color Button](http://ckeditor.com/addon/colorbutton), [Language](http://ckeditor.com/addon/language) and [Indent](http://ckeditor.com/addon/indent)) with [active filter](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter). -* [#10855](http://dev.ckeditor.com/ticket/10855): Change the extension of emoticons in the [BBCode](http://ckeditor.com/addon/bbcode) sample from GIF to PNG. - -Fixed Issues: - -* [#10831](http://dev.ckeditor.com/ticket/10831): [Enhanced Image](http://ckeditor.com/addon/image2): Merged `image2inline` and `image2block` into one `image2` widget. -* [#10835](http://dev.ckeditor.com/ticket/10835): [Enhanced Image](http://ckeditor.com/addon/image2): Improved visibility of the resize handle. -* [#10836](http://dev.ckeditor.com/ticket/10836): [Enhanced Image](http://ckeditor.com/addon/image2): Preserve custom mouse cursor while resizing the image. -* [#10939](http://dev.ckeditor.com/ticket/10939): [Firefox] [Enhanced Image](http://ckeditor.com/addon/image2): hovering the image causes it to change. -* [#10866](http://dev.ckeditor.com/ticket/10866): Fixed: Broken *Tab* key navigation in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window. -* [#10833](http://dev.ckeditor.com/ticket/10833): Fixed: *Lock ratio* option should be on by default in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window. -* [#10881](http://dev.ckeditor.com/ticket/10881): Various improvements to *Enter* key behavior in nested editables. -* [#10879](http://dev.ckeditor.com/ticket/10879): [Remove Format](http://ckeditor.com/addon/removeformat) should not leak from a nested editable. -* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [WebSpellChecker](http://ckeditor.com/addon/wsc) fails to apply changes if a nested editable was focused. -* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [SCAYT](http://ckeditor.com/addon/wsc) blocks typing in nested editables. -* [#11079](http://dev.ckeditor.com/ticket/11079): Add button icons to the [Placeholder](http://ckeditor.com/addon/placeholder) sample. -* [#10870](http://dev.ckeditor.com/ticket/10870): The `paste` command is no longer being disabled when the clipboard is empty. -* [#10854](http://dev.ckeditor.com/ticket/10854): Fixed: Firefox prepends `<br>` to `<body>`, so it is stripped by the HTML data processor. -* [#10823](http://dev.ckeditor.com/ticket/10823): Fixed: [Link](http://ckeditor.com/addon/link) plugin does not work with non-editable content. -* [#10828](http://dev.ckeditor.com/ticket/10828): [Magic Line](http://ckeditor.com/addon/magicline) integration with the Widget System. -* [#10865](http://dev.ckeditor.com/ticket/10865): Improved hiding copybin, so copying widgets works smoothly. -* [#11066](http://dev.ckeditor.com/ticket/11066): Widget's private parts use CSS reset. -* [#11027](http://dev.ckeditor.com/ticket/11027): Fixed: Block commands break on widgets; added the [`contentDomInvalidated`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDomInvalidated) event. -* [#10430](http://dev.ckeditor.com/ticket/10430): Resolve dependence of the [Image](http://ckeditor.com/addon/image) plugin on the [Form Elements](http://ckeditor.com/addon/forms) plugin. -* [#10911](http://dev.ckeditor.com/ticket/10911): Fixed: Browser *Alt* hotkeys will no longer be blocked while a widget is focused. -* [#11082](http://dev.ckeditor.com/ticket/11082): Fixed: Selected widget is not copied or cut when using toolbar buttons or context menu. -* [#11083](http://dev.ckeditor.com/ticket/11083): Fixed list and div element application to block widgets. -* [#10887](http://dev.ckeditor.com/ticket/10887): Internet Explorer 8 compatibility issues related to the Widget System. -* [#11074](http://dev.ckeditor.com/ticket/11074): Temporarily disabled inline widget drag and drop, because of seriously buggy native `range#moveToPoint` method. -* [#11098](http://dev.ckeditor.com/ticket/11098): Fixed: Wrong selection position after undoing widget drag and drop. -* [#11110](http://dev.ckeditor.com/ticket/11110): Fixed: IFrame and Flash objects are being incorrectly pasted in certain conditions. -* [#11129](http://dev.ckeditor.com/ticket/11129): Page break is lost when loading data. -* [#11123](http://dev.ckeditor.com/ticket/11123): [Firefox] Widget is destroyed after being dragged outside of `<body>`. -* [#11124](http://dev.ckeditor.com/ticket/11124): Fixed the [Elements Path](http://ckeditor.com/addon/elementspath) in an editor using the [Div Editing Area](http://ckeditor.com/addon/divarea). - -## CKEditor 4.3 Beta - -New Features: - -* [#9764](http://dev.ckeditor.com/ticket/9764): Widget System. - * [Widget plugin](http://ckeditor.com/addon/widget) introducing the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget). - * New [`editor.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) and [`editor.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-shiftEnterMode) properties – normalized versions of [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) and [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode). - * Dynamic editor settings. Starting from CKEditor 4.3 Beta, *Enter* mode values and [content filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) instances may be changed dynamically (for example when the caret was placed in an element in which editor features should be adjusted). When you are implementing a new editor feature, you should base its behavior on [dynamic](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) or [static](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) *Enter* mode values depending on whether this feature works in selection context or globally on editor content. - * Dynamic *Enter* mode values – [`editor.setActiveEnterMode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveEnterMode) method, [`editor.activeEnterModeChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeEnterModeChange) event, and two properties: [`editor.activeEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) and [`editor.activeShiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeShiftEnterMode). - * Dynamic content filter instances – [`editor.setActiveFilter()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveFilter) method, [`editor.activeFilterChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeFilterChange) event, and [`editor.activeFilter`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter) property. - * "Fake" selection was introduced. It makes it possible to virtually select any element when the real selection remains hidden. See the [`selection.fake()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-fake) method. - * Default [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied to non-editable elements (elements with `contenteditable` attribute set to `false` and their descendants) anymore. To add a rule which will be applied to all elements you need to pass an additional argument to the [`filter.addRules()`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter-method-addRules) method. - * Dozens of new methods were introduced – most interesting ones: - * [`document.find()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-find), - * [`document.findOne()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-findOne), - * [`editable.insertElementIntoRange()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElementIntoRange), - * [`range.moveToClosestEditablePosition()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-moveToClosestEditablePosition), - * New methods for [`htmlParser.node`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.node) and [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element). -* [#10659](http://dev.ckeditor.com/ticket/10659): New [Enhanced Image](http://ckeditor.com/addon/image2) plugin that introduces a widget with integrated image captions, an option to center images, and dynamic "click and drag" resizing. -* [#10664](http://dev.ckeditor.com/ticket/10664): New [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin that introduces the MathJax widget. -* [#7987](https://dev.ckeditor.com/ticket/7987): New [Language](http://ckeditor.com/addon/language) plugin that implements Language toolbar button to support [WCAG 3.1.2 Language of Parts](http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html). -* [#10708](http://dev.ckeditor.com/ticket/10708): New [smileys](http://ckeditor.com/addon/smiley). - -## CKEditor 4.2.3 - -Fixed Issues: - -* [#10994](http://dev.ckeditor.com/ticket/10994): Fixed: Loading external jQuery library when opening the [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) sample directly from file. -* [#10975](http://dev.ckeditor.com/ticket/10975): [IE] Fixed: Error thrown while opening the color palette. -* [#9929](http://dev.ckeditor.com/ticket/9929): [Blink/WebKit] Fixed: A non-breaking space is created once a character is deleted and a regular space is typed. -* [#10963](http://dev.ckeditor.com/ticket/10963): Fixed: JAWS issue with the keyboard shortcut for [Magic Line](http://ckeditor.com/addon/magicline). -* [#11096](http://dev.ckeditor.com/ticket/11096): Fixed: TypeError: Object has no method 'is'. - -## CKEditor 4.2.2 - -Fixed Issues: - -* [#9314](http://dev.ckeditor.com/ticket/9314): Fixed: Incorrect error message on closing a dialog window without saving changs. -* [#10308](http://dev.ckeditor.com/ticket/10308): [IE10] Fixed: Unspecified error when deleting a row. -* [#10945](http://dev.ckeditor.com/ticket/10945): [Chrome] Fixed: Clicking with a mouse inside the editor does not show the caret. -* [#10912](http://dev.ckeditor.com/ticket/10912): Prevent default action when content of a non-editable link is clicked. -* [#10913](http://dev.ckeditor.com/ticket/10913): Fixed [`CKEDITOR.plugins.addExternal()`](http://docs.ckeditor.com/#!/api/CKEDITOR.resourceManager-method-addExternal) not handling paths including file name specified. -* [#10666](http://dev.ckeditor.com/ticket/10666): Fixed [`CKEDITOR.tools.isArray()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-isArray) not working cross frame. -* [#10910](http://dev.ckeditor.com/ticket/10910): [IE9] Fixed JavaScript error thrown in Compatibility Mode when clicking and/or typing in the editing area. -* [#10868](http://dev.ckeditor.com/ticket/10868): [IE8] Prevent the browser from crashing when applying the Inline Quotation style. -* [#10915](http://dev.ckeditor.com/ticket/10915): Fixed: Invalid CSS filter in the Kama skin. -* [#10914](http://dev.ckeditor.com/ticket/10914): Plugins [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock) are now included in the build configuration. -* [#10812](http://dev.ckeditor.com/ticket/10812): Fixed [`range.createBookmark2()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-createBookmark2) incorrectly normalizing offsets. This bug was causing many issues: [#10850](http://dev.ckeditor.com/ticket/10850), [#10842](http://dev.ckeditor.com/ticket/10842). -* [#10951](http://dev.ckeditor.com/ticket/10951): Reviewed and optimized focus handling on panels (combo, menu buttons, color buttons, and context menu) to enhance accessibility. Fixed [#10705](http://dev.ckeditor.com/ticket/10705), [#10706](http://dev.ckeditor.com/ticket/10706) and [#10707](http://dev.ckeditor.com/ticket/10707). -* [#10704](http://dev.ckeditor.com/ticket/10704): Fixed a JAWS issue with the Select Color dialog window title not being announced. -* [#10753](http://dev.ckeditor.com/ticket/10753): The floating toolbar in inline instances now has a dedicated accessibility label. - -## CKEditor 4.2.1 - -Fixed Issues: - -* [#10301](http://dev.ckeditor.com/ticket/10301): [IE9-10] Undo fails after 3+ consecutive paste actions with a JavaScript error. -* [#10689](http://dev.ckeditor.com/ticket/10689): Save toolbar button saves only the first editor instance. -* [#10368](http://dev.ckeditor.com/ticket/10368): Move language reading direction definition (`dir`) from main language file to core. -* [#9330](http://dev.ckeditor.com/ticket/9330): Fixed pasting anchors from MS Word. -* [#8103](http://dev.ckeditor.com/ticket/8103): Fixed pasting nested lists from MS Word. -* [#9958](http://dev.ckeditor.com/ticket/9958): [IE9] Pressing the "OK" button will trigger the `onbeforeunload` event in the popup dialog. -* [#10662](http://dev.ckeditor.com/ticket/10662): Fixed styles from the Styles drop-down list not registering to the ACF in case when the [Shared Spaces plugin](http://ckeditor.com/addon/sharedspace) is used. -* [#9654](http://dev.ckeditor.com/ticket/9654): Problems with Internet Explorer 10 Quirks Mode. -* [#9816](http://dev.ckeditor.com/ticket/9816): Floating toolbar does not reposition vertically in several cases. -* [#10646](http://dev.ckeditor.com/ticket/10646): Removing a selected sublist or nested table with *Backspace/Delete* removes the parent element. -* [#10623](http://dev.ckeditor.com/ticket/10623): [WebKit] Page is scrolled when opening a drop-down list. -* [#10004](http://dev.ckeditor.com/ticket/10004): [ChromeVox] Button names are not announced. -* [#10731](http://dev.ckeditor.com/ticket/10731): [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin breaks cloning of editor configuration. -* It is now possible to set per instance [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin configuration instead of setting the configuration globally. - -## CKEditor 4.2 - -**Important Notes:** - -* Dropped compatibility support for Internet Explorer 7 and Firefox 3.6. - -* Both the Basic and the Standard distribution packages will not contain the new [Indent Block](http://ckeditor.com/addon/indentblock) plugin. Because of this the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) might remove block indentations from existing contents. If you want to prevent this, either [add an appropriate ACF rule to your filter](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) or create a custom build based on the Basic/Standard package and add the Indent Block plugin in [CKBuilder](http://ckeditor.com/builder). - -New Features: - -* [#10027](http://dev.ckeditor.com/ticket/10027): Separated list and block indentation into two plugins: [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock). -* [#8244](http://dev.ckeditor.com/ticket/8244): Use *(Shift+)Tab* to indent and outdent lists. -* [#10281](http://dev.ckeditor.com/ticket/10281): The [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) is now available. Several jQuery-related issues fixed: [#8261](http://dev.ckeditor.com/ticket/8261), [#9077](http://dev.ckeditor.com/ticket/9077), [#8710](http://dev.ckeditor.com/ticket/8710), [#8530](http://dev.ckeditor.com/ticket/8530), [#9019](http://dev.ckeditor.com/ticket/9019), [#6181](http://dev.ckeditor.com/ticket/6181), [#7876](http://dev.ckeditor.com/ticket/7876), [#6906](http://dev.ckeditor.com/ticket/6906). -* [#10042](http://dev.ckeditor.com/ticket/10042): Introduced [`config.title`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-title) setting to change the human-readable title of the editor. -* [#9794](http://dev.ckeditor.com/ticket/9794): Added [`editor.change`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event. -* [#9923](http://dev.ckeditor.com/ticket/9923): HiDPI support in the editor UI. HiDPI icons for [Moono skin](http://ckeditor.com/addon/moono) added. -* [#8031](http://dev.ckeditor.com/ticket/8031): Handle `required` attributes on `<textarea>` elements — introduced [`editor.required`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-required) event. -* [#10280](http://dev.ckeditor.com/ticket/10280): Ability to replace `<textarea>` elements with the inline editor. - -Fixed Issues: - -* [#10599](http://dev.ckeditor.com/ticket/10599): [Indent](http://ckeditor.com/addon/indent) plugin is no longer required by the [List](http://ckeditor.com/addon/list) plugin. -* [#10370](http://dev.ckeditor.com/ticket/10370): Inconsistency in data events between framed and inline editors. -* [#10438](http://dev.ckeditor.com/ticket/10438): [FF, IE] No selection is done on an editable element on executing [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData). - -## CKEditor 4.1.3 - -New Features: - -* Added new translation: Indonesian. - -Fixed Issues: - -* [#10644](http://dev.ckeditor.com/ticket/10644): Fixed a critical bug when pasting plain text in Blink-based browsers. -* [#5189](http://dev.ckeditor.com/ticket/5189): [Find/Replace](http://ckeditor.com/addon/find) dialog window: rename "Cancel" button to "Close". -* [#10562](http://dev.ckeditor.com/ticket/10562): [Housekeeping] Unified CSS gradient filter formats in the [Moono](http://ckeditor.com/addon/moono) skin. -* [#10537](http://dev.ckeditor.com/ticket/10537): Advanced Content Filter should register a default rule for [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode). -* [#10610](http://dev.ckeditor.com/ticket/10610): [`CKEDITOR.dialog.addIframe()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog-static-method-addIframe) incorrectly sets the iframe size in dialog windows. - -## CKEditor 4.1.2 - -New Features: - -* Added new translation: Sinhala. - -Fixed Issues: - -* [#10339](http://dev.ckeditor.com/ticket/10339): Fixed: Error thrown when inserted data was totally stripped out after filtering and processing. -* [#10298](http://dev.ckeditor.com/ticket/10298): Fixed: Data processor breaks attributes containing protected parts. -* [#10367](http://dev.ckeditor.com/ticket/10367): Fixed: [`editable.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertText) loses characters when `RegExp` replace controls are being inserted. -* [#10165](http://dev.ckeditor.com/ticket/10165): [IE] Access denied error when `document.domain` has been altered. -* [#9761](http://dev.ckeditor.com/ticket/9761): Update the *Backspace* key state in [`keystrokeHandler.blockedKeystrokes`](http://docs.ckeditor.com/#!/api/CKEDITOR.keystrokeHandler-property-blockedKeystrokes) when calling [`editor.setReadOnly()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly). -* [#6504](http://dev.ckeditor.com/ticket/6504): Fixed: Race condition while loading several [`config.customConfig`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-customConfig) files. -* [#10146](http://dev.ckeditor.com/ticket/10146): [Firefox] Empty lines are being removed while [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) is [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR). -* [#10360](http://dev.ckeditor.com/ticket/10360): Fixed: ARIA `role="application"` should not be used for dialog windows. -* [#10361](http://dev.ckeditor.com/ticket/10361): Fixed: ARIA `role="application"` should not be used for floating panels. -* [#10510](http://dev.ckeditor.com/ticket/10510): Introduced unique voice labels to differentiate between different editor instances. -* [#9945](http://dev.ckeditor.com/ticket/9945): [iOS] Scrolling not possible on iPad. -* [#10389](http://dev.ckeditor.com/ticket/10389): Fixed: Invalid HTML in the "Text and Table" template. -* [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin user interface was changed to match CKEditor 4 style. - -## CKEditor 4.1.1 - -New Features: - -* Added new translation: Albanian. - -Fixed Issues: - -* [#10172](http://dev.ckeditor.com/ticket/10172): Pressing *Delete* or *Backspace* in an empty table cell moves the cursor to the next/previous cell. -* [#10219](http://dev.ckeditor.com/ticket/10219): Error thrown when destroying an editor instance in parallel with a `mouseup` event. -* [#10265](http://dev.ckeditor.com/ticket/10265): Wrong loop type in the [File Browser](http://ckeditor.com/addon/filebrowser) plugin. -* [#10249](http://dev.ckeditor.com/ticket/10249): Wrong undo/redo states at start. -* [#10268](http://dev.ckeditor.com/ticket/10268): [Show Blocks](http://ckeditor.com/addon/showblocks) does not recover after switching to Source view. -* [#9995](http://dev.ckeditor.com/ticket/9995): HTML code in the `<textarea>` should not be modified by the [`htmlDataProcessor`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor). -* [#10320](http://dev.ckeditor.com/ticket/10320): [Justify](http://ckeditor.com/addon/justify) plugin should add elements to Advanced Content Filter based on current [Enter mode](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode). -* [#10260](http://dev.ckeditor.com/ticket/10260): Fixed: Advanced Content Filter blocks [`tabSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-tabSpaces). Unified `data-cke-*` attributes filtering. -* [#10315](http://dev.ckeditor.com/ticket/10315): [WebKit] [Undo manager](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager) should not record snapshots after a filling character was added/removed. -* [#10291](http://dev.ckeditor.com/ticket/10291): [WebKit] Space after a filling character should be secured. -* [#10330](http://dev.ckeditor.com/ticket/10330): [WebKit] The filling character is not removed on `keydown` in specific cases. -* [#10285](http://dev.ckeditor.com/ticket/10285): Fixed: Styled text pasted from MS Word causes an infinite loop. -* [#10131](http://dev.ckeditor.com/ticket/10131): Fixed: [`undoManager.update()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager-method-update) does not refresh the command state. -* [#10337](http://dev.ckeditor.com/ticket/10337): Fixed: Unable to remove `<s>` using [Remove Format](http://ckeditor.com/addon/removeformat). - -## CKEditor 4.1 - -Fixed Issues: - -* [#10192](http://dev.ckeditor.com/ticket/10192): Closing lists with the *Enter* key does not work with [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) in several cases. -* [#10191](http://dev.ckeditor.com/ticket/10191): Fixed allowed content rules unification, so the [`filter.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-property-allowedContent) property always contains rules in the same format. -* [#10224](http://dev.ckeditor.com/ticket/10224): Advanced Content Filter does not remove non-empty `<a>` elements anymore. -* Minor issues in plugin integration with Advanced Content Filter: - * [#10166](http://dev.ckeditor.com/ticket/10166): Added transformation from the `align` attribute to `float` style to preserve backward compatibility after the introduction of Advanced Content Filter. - * [#10195](http://dev.ckeditor.com/ticket/10195): [Image](http://ckeditor.com/addon/image) plugin no longer registers rules for links to Advanced Content Filter. - * [#10213](http://dev.ckeditor.com/ticket/10213): [Justify](http://ckeditor.com/addon/justify) plugin is now correctly registering rules to Advanced Content Filter when [`config.justifyClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-justifyClasses) is defined. - -## CKEditor 4.1 RC - -New Features: - -* [#9829](http://dev.ckeditor.com/ticket/9829): Advanced Content Filter - data and features activation based on editor configuration. - - Brand new data filtering system that works in 2 modes: - - * Based on loaded features (toolbar items, plugins) - the data will be filtered according to what the editor in its - current configuration can handle. - * Based on [`config.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent) rules - the data - will be filtered and the editor features (toolbar items, commands, keystrokes) will be enabled if they are allowed. - - See the `datafiltering.html` sample, [guides](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) and [`CKEDITOR.filter` API documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.filter). -* [#9387](http://dev.ckeditor.com/ticket/9387): Reintroduced [Shared Spaces](http://ckeditor.com/addon/sharedspace) - the ability to display toolbar and bottom editor space in selected locations and to share them by different editor instances. -* [#9907](http://dev.ckeditor.com/ticket/9907): Added the [`contentPreview`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-contentPreview) event for preview data manipulation. -* [#9713](http://dev.ckeditor.com/ticket/9713): Introduced the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin that brings raw HTML editing for inline editor instances. -* Included in [#9829](http://dev.ckeditor.com/ticket/9829): Introduced new events, [`toHtml`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toHtml) and [`toDataFormat`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toDataFormat), allowing for better integration with data processing. -* [#9981](http://dev.ckeditor.com/ticket/9981): Added ability to filter [`htmlParser.fragment`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.fragment), [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element) etc. by many [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter)s before writing structure to an HTML string. -* Included in [#10103](http://dev.ckeditor.com/ticket/10103): - * Introduced the [`editor.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-status) property to make it easier to check the current status of the editor. - * Default [`command`](http://docs.ckeditor.com/#!/api/CKEDITOR.command) state is now [`CKEDITOR.TRISTATE_DISABLE`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-TRISTATE_DISABLED). It will be activated on [`editor.instanceReady`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-instanceReady) or immediately after being added if the editor is already initialized. -* [#9796](http://dev.ckeditor.com/ticket/9796): Introduced `<s>` as a default tag for strikethrough, which replaces obsolete `<strike>` in HTML5. - -## CKEditor 4.0.3 - -Fixed Issues: - -* [#10196](http://dev.ckeditor.com/ticket/10196): Fixed context menus not opening with keyboard shortcuts when [Autogrow](http://ckeditor.com/addon/autogrow) is enabled. -* [#10212](http://dev.ckeditor.com/ticket/10212): [IE7-10] Undo command throws errors after multiple switches between Source and WYSIWYG view. -* [#10219](http://dev.ckeditor.com/ticket/10219): [Inline editor] Error thrown after calling [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy). - -## CKEditor 4.0.2 - -Fixed Issues: - -* [#9779](http://dev.ckeditor.com/ticket/9779): Fixed overriding [`CKEDITOR.getUrl()`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl) with `CKEDITOR_GETURL`. -* [#9772](http://dev.ckeditor.com/ticket/9772): Custom buttons in the dialog window footer have different look and size ([Moono](http://ckeditor.com/addon/moono), [Kama](http://ckeditor.com/addon/kama) skins). -* [#9029](http://dev.ckeditor.com/ticket/9029): Custom styles added with the [`stylesSet.add()`](http://docs.ckeditor.com/#!/api/CKEDITOR.stylesSet-method-add) are displayed in the wrong order. -* [#9887](http://dev.ckeditor.com/ticket/9887): Disable [Magic Line](http://ckeditor.com/addon/magicline) when [`editor.readOnly`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) is set. -* [#9882](http://dev.ckeditor.com/ticket/9882): Fixed empty document title on [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) if set via the Document Properties dialog window. -* [#9773](http://dev.ckeditor.com/ticket/9773): Fixed rendering problems with selection fields in the Kama skin. -* [#9851](http://dev.ckeditor.com/ticket/9851): The [`selectionChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-selectionChange) event is not fired when mouse selection ended outside editable. -* [#9903](http://dev.ckeditor.com/ticket/9903): [Inline editor] Bad positioning of floating space with page horizontal scroll. -* [#9872](http://dev.ckeditor.com/ticket/9872): [`editor.checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) returns `true` when called onload. Removed the obsolete `editor.mayBeDirty` flag. -* [#9893](http://dev.ckeditor.com/ticket/9893): [IE] Fixed broken toolbar when editing mixed direction content in Quirks mode. -* [#9845](http://dev.ckeditor.com/ticket/9845): Fixed TAB navigation in the [Link](http://ckeditor.com/addon/link) dialog window when the Anchor option is used and no anchors are available. -* [#9883](http://dev.ckeditor.com/ticket/9883): Maximizing was making the entire page editable with [divarea](http://ckeditor.com/addon/divarea)-based editors. -* [#9940](http://dev.ckeditor.com/ticket/9940): [Firefox] Navigating back to a page with the editor was making the entire page editable. -* [#9966](http://dev.ckeditor.com/ticket/9966): Fixed: Unable to type square brackets with French keyboard layout. Changed [Magic Line](http://ckeditor.com/addon/magicline) keystrokes. -* [#9507](http://dev.ckeditor.com/ticket/9507): [Firefox] Selection is moved before editable position when the editor is focused for the first time. -* [#9947](http://dev.ckeditor.com/ticket/9947): [WebKit] Editor overflows parent container in some edge cases. -* [#10105](http://dev.ckeditor.com/ticket/10105): Fixed: Broken [sourcearea](http://ckeditor.com/addon/sourcearea) view when an RTL language is set. -* [#10123](http://dev.ckeditor.com/ticket/10123): [WebKit] Fixed: Several dialog windows have broken layout since the latest WebKit release. -* [#10152](http://dev.ckeditor.com/ticket/10152): Fixed: Invalid ARIA property used on menu items. - -## CKEditor 4.0.1.1 - -Fixed Issues: - -* Security update: Added protection against XSS attack and possible path disclosure in the PHP sample. - -## CKEditor 4.0.1 - -Fixed Issues: - -* [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in the new [Moono skin](http://ckeditor.com/addon/moono). -* Accessibility issues (mainly in inline editor): [#9364](http://dev.ckeditor.com/ticket/9364), [#9368](http://dev.ckeditor.com/ticket/9368), [#9369](http://dev.ckeditor.com/ticket/9369), [#9370](http://dev.ckeditor.com/ticket/9370), [#9541](http://dev.ckeditor.com/ticket/9541), [#9543](http://dev.ckeditor.com/ticket/9543), [#9841](http://dev.ckeditor.com/ticket/9841), [#9844](http://dev.ckeditor.com/ticket/9844). -* [Magic Line](http://ckeditor.com/addon/magicline) plugin: - * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic Line. - * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic Line support for forms. - * [#9573](http://dev.ckeditor.com/ticket/9573): Magic Line does not disappear on `mouseout` in a specific case. -* [#9754](http://dev.ckeditor.com/ticket/9754): [WebKit] Cutting & pasting simple unformatted text generates an inline wrapper in WebKit browsers. -* [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS Word. -* [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging. -* Context menu: - * [#9712](http://dev.ckeditor.com/ticket/9712): Opening the context menu destroys editor focus. - * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over the floating toolbar. - * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates a JavaScript error in inline mode when the editor is attached to a header element. -* [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing the window. -* [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div-based editor puts the editing area under the bottom UI space. -* [#9528](http://dev.ckeditor.com/ticket/9528): Host page `box-sizing` style should not influence the editor UI elements. -* [#9503](http://dev.ckeditor.com/ticket/9503): [Form Elements](http://ckeditor.com/addon/forms) plugin adds context menu listeners only on supported input types. Added support for `tel`, `email`, `search` and `url` input types. -* [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in a narrow window. -* [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog window does not populate width correctly. -* [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in a nested table removes the outer table cell. -* [#9815](http://dev.ckeditor.com/ticket/9815): Cannot edit dialog window fields in an editor initialized in the jQuery UI modal dialog. -* [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialog windows do not show completely in a small window. -* [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a `<div>` element stay permanently even after the user exits editing the `<div>`. -* [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing the Format drop-down list by clicking its button. -* [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when the `border-width` style is specified. -* [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read-only mode. -* [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected images. -* [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `<pre>` elements. -* [#9709](http://dev.ckeditor.com/ticket/9709): [Paste from Word](http://ckeditor.com/addon/pastefromword) should not depend on configuration from other styles. -* [#9726](http://dev.ckeditor.com/ticket/9726): Removed [Color Dialog](http://ckeditor.com/addon/colordialog) plugin dependency from [Table Tools](http://ckeditor.com/addon/tabletools). -* [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly in the [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp) dialog window. -* [#9771](http://dev.ckeditor.com/ticket/9771): [WebKit & Opera] Fixed scrolling issues when pasting. -* [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] `onChange` is not fired for checkboxes in dialogs. -* [#9842](http://dev.ckeditor.com/ticket/9842): [Firefox 17] When opening a toolbar menu for the first time and pressing the *Down Arrow* key, focus goes to the next toolbar button instead of the menu options. -* [#9847](http://dev.ckeditor.com/ticket/9847): [Elements Path](http://ckeditor.com/addon/elementspath) should not be initialized in the inline editor. -* [#9853](http://dev.ckeditor.com/ticket/9853): [`editor.addRemoveFormatFilter()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addRemoveFormatFilter) is exposed before it really works. -* [#8893](http://dev.ckeditor.com/ticket/8893): Value of the [`pasteFromWordCleanupFile`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordCleanupFile) configuration option is now taken from the instance configuration. -* [#9693](http://dev.ckeditor.com/ticket/9693): Removed "Live Preview" checkbox from UI color picker. - - -## CKEditor 4.0 - -The first stable release of the new CKEditor 4 code line. - -The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever -possible. The list of relevant changes can be found in the [API Changes page of -the CKEditor 4 documentation][1]. - -[1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes" diff --git a/vendor/unisharp/laravel-ckeditor/LICENSE.md b/vendor/unisharp/laravel-ckeditor/LICENSE.md deleted file mode 100644 index d6f58ca44..000000000 --- a/vendor/unisharp/laravel-ckeditor/LICENSE.md +++ /dev/null @@ -1,1420 +0,0 @@ -Software License Agreement -========================== - -CKEditor - The text editor for Internet - http://ckeditor.com -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your -choice: - - - GNU General Public License Version 2 or later (the "GPL") - http://www.gnu.org/licenses/gpl.html - (See Appendix A) - - - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - http://www.gnu.org/licenses/lgpl.html - (See Appendix B) - - - Mozilla Public License Version 1.1 or later (the "MPL") - http://www.mozilla.org/MPL/MPL-1.1.html - (See Appendix C) - -You are not required to, but if you want to explicitly declare the -license you have chosen to be bound to when using, reproducing, -modifying and distributing this software, just include a text file -titled "legal.txt" in your version of this software, indicating your -license choice. In any case, your choice will not restrict any -recipient of your version of this software to use, reproduce, modify -and distribute this software under any of the above licenses. - -Sources of Intellectual Property Included in CKEditor ------------------------------------------------------ - -Where not otherwise indicated, all CKEditor content is authored by -CKSource engineers and consists of CKSource-owned intellectual -property. In some specific instances, CKEditor will incorporate work -done by developers outside of CKSource with their express permission. - -The following libraries are included in CKEditor under the MIT license (see Appendix D): - -* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2017, CKSource - Frederico Knabben. -* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. -* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others. - -Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D): - -* jQuery (inspired the domReady function, ckeditor_base.js) - Copyright (c) 2011 John Resig, http://jquery.com/ - -The following libraries are included in CKEditor under the SIL Open Font License, Version 1.1 (see Appendix E): - -* Font Awesome (included in the toolbar configurator) - Copyright (C) 2012 by Dave Gandy. - -The following libraries are included in CKEditor under the BSD-3 License (see Appendix F): - -* highlight.js (included in the `codesnippet` plugin) - Copyright (c) 2006, Ivan Sagalaev. -* YUI Library (included in the `uicolor` plugin) - Copyright (c) 2009, Yahoo! Inc. - - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand -and product names are trademarks, registered trademarks or service -marks of their respective holders. - ---- - -Appendix A: The GPL License ---------------------------- - -``` -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software-to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS -``` - -Appendix B: The LGPL License ----------------------------- - -``` -GNU LESSER GENERAL PUBLIC LICENSE -Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - -Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software-to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages-typically libraries-of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - -GNU LESSER GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - -NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -END OF TERMS AND CONDITIONS -``` - -Appendix C: The MPL License ---------------------------- - -``` -MOZILLA PUBLIC LICENSE -Version 1.1 - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] -``` - -Appendix D: The MIT License ---------------------------- - -``` -The MIT License (MIT) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -``` - -Appendix E: The SIL Open Font License Version 1.1 ---------------------------------------------- - -``` -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. -``` - -Appendix F: The BSD-3 License ------------------------------ - -``` -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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/unisharp/laravel-ckeditor/README.md b/vendor/unisharp/laravel-ckeditor/README.md deleted file mode 100644 index abbc5240b..000000000 --- a/vendor/unisharp/laravel-ckeditor/README.md +++ /dev/null @@ -1,53 +0,0 @@ -CKEditor Package -===================== - -## Note - -**This is NOT the official CKEDITOR package.** - -[CKEDITOR officially has its own composer package since 2014](https://ckeditor.com/blog/CKEditor-Supports-Bower-and-Composer/). Instead of using this package, we recommend you follow [the official CKEditor installation instructions with package managers](https://docs.ckeditor.com/ckeditor4/latest/guide/dev_package_managers.html#composer) - -## Installation -### Set up package - -``` -composer require unisharp/laravel-ckeditor -``` - -### Add ServiceProvider - -For Laravel 5.5+ you can skip this step. - -For Laravel 5.4 and earlier edit config/app.php, add the following file to `Application Service Providers` section. -``` -Unisharp\Ckeditor\ServiceProvider::class, -``` -### Publish the resources -``` -php artisan vendor:publish --tag=ckeditor -``` -## Usage - -Default way (initiate by name or id) : - -```javascript - <script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script> - <script> - CKEDITOR.replace( 'article-ckeditor' ); - </script> -``` - -Or if you want to initiate by jQuery selector : - -```javascript - <script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script> - <script src="/vendor/unisharp/laravel-ckeditor/adapters/jquery.js"></script> - <script> - $('textarea').ckeditor(); - // $('.textarea').ckeditor(); // if class is prefered. - </script> -``` - -## File Uploader Integration - - Instead of using KCFinder, we recommend [laravel-filemanager](https://github.com/UniSharp/laravel-filemanager) for the file uploader integration for better laravel user access control and specific per user folders. diff --git a/vendor/unisharp/laravel-ckeditor/ServiceProvider.php b/vendor/unisharp/laravel-ckeditor/ServiceProvider.php deleted file mode 100644 index e54030872..000000000 --- a/vendor/unisharp/laravel-ckeditor/ServiceProvider.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -namespace Unisharp\Ckeditor; - -class ServiceProvider extends \Illuminate\Support\ServiceProvider -{ - - public function boot() - { - $this->publishes( - [ - __DIR__ . '/ckeditor.js' => public_path('vendor/unisharp/laravel-ckeditor/ckeditor.js'), - __DIR__ . '/config.js' => public_path('vendor/unisharp/laravel-ckeditor/config.js'), - __DIR__ . '/styles.js' => public_path('vendor/unisharp/laravel-ckeditor/styles.js'), - __DIR__ . '/contents.css' => public_path('vendor/unisharp/laravel-ckeditor/contents.css'), - __DIR__ . '/adapters' => public_path('vendor/unisharp/laravel-ckeditor/adapters'), - __DIR__ . '/lang' => public_path('vendor/unisharp/laravel-ckeditor/lang'), - __DIR__ . '/skins' => public_path('vendor/unisharp/laravel-ckeditor/skins'), - __DIR__ . '/plugins' => public_path('vendor/unisharp/laravel-ckeditor/plugins'), - ], - 'ckeditor' - ); - } - - public function register() - { - - } -} diff --git a/vendor/unisharp/laravel-ckeditor/adapters/jquery.js b/vendor/unisharp/laravel-ckeditor/adapters/jquery.js deleted file mode 100644 index 86cb458bc..000000000 --- a/vendor/unisharp/laravel-ckeditor/adapters/jquery.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a}, -ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=d;d=g;g=m}var k=[];d=d||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(arguments.callee,100)},0)}, -null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor", -[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit();return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize", -c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);l.resolve()}else setTimeout(arguments.callee,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var m= -this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,d)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/bower.json b/vendor/unisharp/laravel-ckeditor/bower.json deleted file mode 100644 index 1adf76eff..000000000 --- a/vendor/unisharp/laravel-ckeditor/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "ckeditor", - "description": "JavaScript WYSIWYG web text editor.", - "keywords": [ "ckeditor", "fckeditor", "editor", "wysiwyg", "html", "richtext", "text", "javascript" ], - "authors": "CKSource (http://cksource.com/)", - "license": "For licensing, see LICENSE.md or http://ckeditor.com/license.", - "homepage": "http://ckeditor.com", - "main": "./ckeditor.js", - "moduleType": "globals" -} diff --git a/vendor/unisharp/laravel-ckeditor/ckeditor.js b/vendor/unisharp/laravel-ckeditor/ckeditor.js deleted file mode 100644 index 8b57c44db..000000000 --- a/vendor/unisharp/laravel-ckeditor/ckeditor.js +++ /dev/null @@ -1,1076 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function ka(a,f){CKEDITOR.tools.extend(this,f,{editor:a,id:"cke-"+CKEDITOR.tools.getUniqueId(),area:a._.notificationArea});f.type||(this.type="info");this.element=this._createElement();a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element)}function la(a){var f=this;this.editor=a;this.notifications=[];this.element=this._createElement();this._uiBuffer=CKEDITOR.tools.eventsBuffer(10,this._layout,this);this._changeBuffer=CKEDITOR.tools.eventsBuffer(500,this._layout, -this);a.on("destroy",function(){f._removeListeners();f.element.remove()})}window.CKEDITOR&&window.CKEDITOR.dom||(window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,f={timestamp:"H7HG",version:"4.7.2 (Standard)",revision:"c9b79c94c",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var c=document.getElementsByTagName("script"),f=0;f<c.length;f++){var d= -c[f].src.match(a);if(d){b=d[1];break}}-1==b.indexOf(":/")&&"//"!=b.slice(0,2)&&(b=0===b.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+b:location.href.match(/^[^\?]*\/(?:)/)[0]+b);if(!b)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return b}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&"/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a)&& -(a+=(0<=a.indexOf("?")?"\x26":"?")+"t\x3d"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",a,!1),b()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),b())}catch(d){}}function b(){for(var a;a=c.shift();)a()}var c=[];return function(d){function b(){try{document.documentElement.doScroll("left")}catch(g){setTimeout(b,1);return}a()}c.push(d);"complete"===document.readyState&& -setTimeout(a,1);if(1==c.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",a);window.attachEvent("onload",a);d=!1;try{d=!window.frameElement}catch(m){}document.documentElement.doScroll&&d&&b()}}}()},b=window.CKEDITOR_GETURL;if(b){var c=f.getUrl;f.getUrl=function(a){return b.call(f,a)||c.call(f,a)}}return f}()),CKEDITOR.event||(CKEDITOR.event=function(){}, -CKEDITOR.event.implementOn=function(a){var f=CKEDITOR.event.prototype,b;for(b in f)null==a[b]&&(a[b]=f[b])},CKEDITOR.event.prototype=function(){function a(a){var e=f(this);return e[a]||(e[a]=new b(a))}var f=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},b=function(a){this.name=a;this.listeners=[]};b.prototype={getListenerIndex:function(a){for(var b=0,f=this.listeners;b<f.length;b++)if(f[b].fn==a)return b;return-1}};return{define:function(b,e){var f=a.call(this, -b);CKEDITOR.tools.extend(f,e,!0)},on:function(b,e,f,k,d){function h(a,g,d,h){a={name:b,sender:this,editor:a,data:g,listenerData:k,stop:d,cancel:h,removeListener:m};return!1===e.call(f,a)?!1:a.data}function m(){n.removeListener(b,e)}var g=a.call(this,b);if(0>g.getListenerIndex(e)){g=g.listeners;f||(f=this);isNaN(d)&&(d=10);var n=this;h.fn=e;h.priority=d;for(var r=g.length-1;0<=r;r--)if(g[r].priority<=d)return g.splice(r+1,0,h),{removeListener:m};g.unshift(h)}return{removeListener:m}},once:function(){var a= -Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},l=0,k=function(){l=1};return function(d,h,m){var g=f(this)[d];d=a;var n=l;a=l=0;if(g){var r=g.listeners;if(r.length)for(var r=r.slice(0),q,y=0;y<r.length;y++){if(g.errorProof)try{q=r[y].call(this, -m,h,b,k)}catch(w){}else q=r[y].call(this,m,h,b,k);!1===q?l=1:"undefined"!=typeof q&&(h=q);if(a||l)break}}h=l?!1:"undefined"==typeof h?!0:h;a=d;l=n;return h}}(),fireOnce:function(a,b,l){b=this.fire(a,b,l);delete f(this)[a];return b},removeListener:function(a,b){var l=f(this)[a];if(l){var k=l.getListenerIndex(b);0<=k&&l.listeners.splice(k,1)}},removeAllListeners:function(){var a=f(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=f(this)[a])&&0<a.listeners.length}}}()),CKEDITOR.editor|| -(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,f){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fire.call(this,a,f,this)},CKEDITOR.editor.prototype.fireOnce=function(a,f){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fireOnce.call(this,a,f,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)),CKEDITOR.env||(CKEDITOR.env=function(){var a= -navigator.userAgent.toLowerCase(),f=a.match(/edge[ \/](\d+.?\d*)/),b=-1<a.indexOf("trident/"),b=!(!f&&!b),b={ie:b,edge:!!f,webkit:!b&&-1<a.indexOf(" applewebkit/"),air:-1<a.indexOf(" adobeair/"),mac:-1<a.indexOf("macintosh"),quirks:"BackCompat"==document.compatMode&&(!document.documentMode||10>document.documentMode),mobile:-1<a.indexOf("mobile"),iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return!1;var a=document.domain,b=window.location.hostname;return a!=b&&a!="["+b+"]"}, -secure:"https:"==location.protocol};b.gecko="Gecko"==navigator.product&&!b.webkit&&!b.ie;b.webkit&&(-1<a.indexOf("chrome")?b.chrome=!0:b.safari=!0);var c=0;b.ie&&(c=f?parseFloat(f[1]):b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode,b.ie9Compat=9==c,b.ie8Compat=8==c,b.ie7Compat=7==c,b.ie6Compat=7>c||b.quirks);b.gecko&&(f=a.match(/rv:([\d\.]+)/))&&(f=f[1].split("."),c=1E4*f[0]+100*(f[1]||0)+1*(f[2]||0));b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1])); -b.webkit&&(c=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=c;b.isCompatible=!(b.ie&&7>c)&&!(b.gecko&&4E4>c)&&!(b.webkit&&534>c);b.hidpi=2<=window.devicePixelRatio;b.needsBrFiller=b.gecko||b.webkit||b.ie&&10<c;b.needsNbspFiller=b.ie&&11>c;b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.webkit?"webkit":"unknown");b.quirks&&(b.cssClass+=" cke_browser_quirks");b.ie&&(b.cssClass+=" cke_browser_ie"+(b.quirks?"6 cke_browser_iequirks":b.version));b.air&&(b.cssClass+=" cke_browser_air"); -b.iOS&&(b.cssClass+=" cke_browser_ios");b.hidpi&&(b.cssClass+=" cke_hidpi");return b}()),"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if("basic_ready"!=CKEDITOR.status)CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add= -function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a=CKEDITOR.loadFullCore,f=CKEDITOR.loadFullCoreTimeout;a&&(CKEDITOR.status="basic_ready",a&&a._load?a():f&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*f))})})();CKEDITOR.status="basic_loaded"}(),"use strict",CKEDITOR.VERBOSITY_WARN=1,CKEDITOR.VERBOSITY_ERROR=2,CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR,CKEDITOR.warn=function(a,f){CKEDITOR.verbosity& -CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:a,additionalData:f})},CKEDITOR.error=function(a,f){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log",{type:"error",errorCode:a,additionalData:f})},CKEDITOR.on("log",function(a){if(window.console&&window.console.log){var f=console[a.data.type]?a.data.type:"log",b=a.data.errorCode;if(a=a.data.additionalData)console[f]("[CKEDITOR] Error code: "+b+".",a);else console[f]("[CKEDITOR] Error code: "+b+".");console[f]("[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+ -b)}},null,null,999),CKEDITOR.dom={},function(){var a=[],f=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,e=/</g,l=/"/g,k=/&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,d={lt:"\x3c",gt:"\x3e",amp:"\x26",quot:'"',nbsp:" ",shy:"­"},h=function(a,g){return"#"==g[0]?String.fromCharCode(parseInt(g.slice(1),10)):d[g]};CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(a,g){if(!a&&!g)return!0;if(!a||!g||a.length!=g.length)return!1;for(var d= -0;d<a.length;d++)if(a[d]!=g[d])return!1;return!0},getIndex:function(a,g){for(var d=0;d<a.length;++d)if(g(a[d]))return d;return-1},clone:function(a){var g;if(a&&a instanceof Array){g=[];for(var d=0;d<a.length;d++)g[d]=CKEDITOR.tools.clone(a[d]);return g}if(null===a||"object"!=typeof a||a instanceof String||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp||a.nodeType||a.window===a)return a;g=new a.constructor;for(d in a)g[d]=CKEDITOR.tools.clone(a[d]);return g},capitalize:function(a, -g){return a.charAt(0).toUpperCase()+(g?a.slice(1):a.slice(1).toLowerCase())},extend:function(a){var g=arguments.length,d,b;"boolean"==typeof(d=arguments[g-1])?g--:"boolean"==typeof(d=arguments[g-2])&&(b=arguments[g-1],g-=2);for(var h=1;h<g;h++){var c=arguments[h],e;for(e in c)if(!0===d||null==a[e])if(!b||e in b)a[e]=c[e]}return a},prototypedCopy:function(a){var g=function(){};g.prototype=a;return new g},copy:function(a){var g={},d;for(d in a)g[d]=a[d];return g},isArray:function(a){return"[object Array]"== -Object.prototype.toString.call(a)},isEmpty:function(a){for(var g in a)if(a.hasOwnProperty(g))return!1;return!0},cssVendorPrefix:function(a,g,d){if(d)return f+a+":"+g+";"+a+":"+g;d={};d[a]=g;d[f+a]=g;return d},cssStyleToDomStyle:function(){var a=document.createElement("div").style,g="undefined"!=typeof a.cssFloat?"cssFloat":"undefined"!=typeof a.styleFloat?"styleFloat":"float";return function(a){return"float"==a?g:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){a= -[].concat(a);for(var g,d=[],b=0;b<a.length;b++)if(g=a[b])/@import|[{}]/.test(g)?d.push("\x3cstyle\x3e"+g+"\x3c/style\x3e"):d.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"'+g+'"\x3e');return d.join("")},htmlEncode:function(a){return void 0===a||null===a?"":String(a).replace(b,"\x26amp;").replace(c,"\x26gt;").replace(e,"\x26lt;")},htmlDecode:function(a){return a.replace(k,h)},htmlEncodeAttr:function(a){return CKEDITOR.tools.htmlEncode(a).replace(l,"\x26quot;")},htmlDecodeAttr:function(a){return CKEDITOR.tools.htmlDecode(a)}, -transformPlainTextToHtml:function(a,g){var d=g==CKEDITOR.ENTER_BR,b=this.htmlEncode(a.replace(/\r\n/g,"\n")),b=b.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;"),h=g==CKEDITOR.ENTER_P?"p":"div";if(!d){var c=/\n{2}/g;if(c.test(b))var e="\x3c"+h+"\x3e",f="\x3c/"+h+"\x3e",b=e+b.replace(c,function(){return f+e})+f}b=b.replace(/\n/g,"\x3cbr\x3e");d||(b=b.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/"+h+"\x3e)"),function(a){return CKEDITOR.tools.repeat(a,2)}));b=b.replace(/^ | $/g,"\x26nbsp;");return b=b.replace(/(>|\s) /g, -function(a,g){return g+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var a="e",g=0;8>g;g++)a+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return a},override:function(a,g){var d=g(a);d.prototype=a.prototype;return d},setTimeout:function(a,g,d,b,h){h||(h=window);d||(d=h);return h.setTimeout(function(){b?a.apply(d,[].concat(b)):a.apply(d)}, -g||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(g){return g.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(g){return g.replace(a,"")}}(),indexOf:function(a,g){if("function"==typeof g)for(var d=0,b=a.length;d<b;d++){if(g(a[d]))return d}else{if(a.indexOf)return a.indexOf(g);d=0;for(b=a.length;d<b;d++)if(a[d]===g)return d}return-1},search:function(a,g){var d=CKEDITOR.tools.indexOf(a, -g);return 0<=d?a[d]:null},bind:function(a,g){return function(){return a.apply(g,arguments)}},createClass:function(a){var g=a.$,d=a.base,b=a.privates||a._,h=a.proto;a=a.statics;!g&&(g=function(){d&&this.base.apply(this,arguments)});if(b)var c=g,g=function(){var a=this._||(this._={}),g;for(g in b){var d=b[g];a[g]="function"==typeof d?CKEDITOR.tools.bind(d,this):d}c.apply(this,arguments)};d&&(g.prototype=this.prototypedCopy(d.prototype),g.prototype.constructor=g,g.base=d,g.baseProto=d.prototype,g.prototype.base= -function(){this.base=d.prototype.base;d.apply(this,arguments);this.base=arguments.callee});h&&this.extend(g.prototype,h,!0);a&&this.extend(g,a,!0);return g},addFunction:function(d,g){return a.push(function(){return d.apply(g||this,arguments)})-1},removeFunction:function(d){a[d]=null},callFunction:function(d){var g=a[d];return g&&g.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\d+\.?\d*px$/,g;return function(d){g=CKEDITOR.tools.trim(d+"")+"px";return a.test(g)? -g:d||""}}(),convertToPx:function(){var a;return function(g){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e',CKEDITOR.document),CKEDITOR.document.getBody().append(a));return/%$/.test(g)?g:(a.setStyle("width",g),a.$.clientWidth)}}(),repeat:function(a,g){return Array(g+1).join(a)},tryThese:function(){for(var a,g=0,d=arguments.length;g<d;g++){var b=arguments[g];try{a=b();break}catch(h){}}return a}, -genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(a){return function(){var g=arguments,d=this;window.setTimeout(function(){a.apply(d,g)},0)}},normalizeCssText:function(a,g){var d=[],b,h=CKEDITOR.tools.parseCssText(a,!0,g);for(b in h)d.push(b+":"+h[b]);d.sort();return d.length?d.join(";")+";":""},convertRgbToHex:function(a){return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(a,d,b,m){a=[d,b,m];for(d=0;3>d;d++)a[d]=("0"+parseInt(a[d],10).toString(16)).slice(-2); -return"#"+a.join("")})},normalizeHex:function(a){return a.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi,function(a,d,b,m){a=d.toLowerCase();3==a.length&&(a=a.split(""),a=[a[0],a[0],a[1],a[1],a[2],a[2]].join(""));return"#"+a+m})},parseCssText:function(a,g,d){var b={};d&&(a=(new CKEDITOR.dom.element("span")).setAttribute("style",a).getAttribute("style")||"");a&&(a=CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(a)));if(!a||";"==a)return b;a.replace(/"/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, -function(a,d,h){g&&(d=d.toLowerCase(),"font-family"==d&&(h=h.replace(/\s*,\s*/g,",")),h=CKEDITOR.tools.trim(h));b[d]=h});return b},writeCssText:function(a,g){var d,b=[];for(d in a)b.push(d+":"+a[d]);g&&b.sort();return b.join("; ")},objectCompare:function(a,g,d){var b;if(!a&&!g)return!0;if(!a||!g)return!1;for(b in a)if(a[b]!=g[b])return!1;if(!d)for(b in g)if(a[b]!=g[b])return!1;return!0},objectKeys:function(a){var g=[],d;for(d in a)g.push(d);return g},convertArrayToObject:function(a,g){var d={};1== -arguments.length&&(g=!0);for(var b=0,h=a.length;b<h;++b)d[a[b]]=g;return d},fixDomain:function(){for(var a;;)try{a=window.parent.document.domain;break}catch(g){a=a?a.replace(/.+?(?:\.|$)/,""):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,g,d){function b(){c=(new Date).getTime();h=!1;d?g.call(d):g()}var h,c=0;return{input:function(){if(!h){var g=(new Date).getTime()-c;g<a?h=setTimeout(b,a-g):b()}},reset:function(){h&&clearTimeout(h);h=c=0}}},enableHtml5Elements:function(a, -g){for(var d="abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "),b=d.length,h;b--;)h=a.createElement(d[b]),g&&a.appendChild(h)},checkIfAnyArrayItemMatches:function(a,g){for(var d=0,b=a.length;d<b;++d)if(a[d].match(g))return!0;return!1},checkIfAnyObjectPropertyMatches:function(a,g){for(var d in a)if(d.match(g))return!0;return!1},keystrokeToString:function(a,g){var d=g&16711680,b= -g&65535,h=CKEDITOR.env.mac,c=[],e=[];d&CKEDITOR.CTRL&&(c.push(h?"⌘":a[17]),e.push(h?a[224]:a[17]));d&CKEDITOR.ALT&&(c.push(h?"⌥":a[18]),e.push(a[18]));d&CKEDITOR.SHIFT&&(c.push(h?"⇧":a[16]),e.push(a[16]));b&&(a[b]?(c.push(a[b]),e.push(a[b])):(c.push(String.fromCharCode(b)),e.push(String.fromCharCode(b))));return{display:c.join("+"),aria:e.join("+")}},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d",getCookie:function(a){a=a.toLowerCase(); -for(var g=document.cookie.split(";"),d,b,h=0;h<g.length;h++)if(d=g[h].split("\x3d"),b=decodeURIComponent(CKEDITOR.tools.trim(d[0]).toLowerCase()),b===a)return decodeURIComponent(1<d.length?d[1]:"");return null},setCookie:function(a,g){document.cookie=encodeURIComponent(a)+"\x3d"+encodeURIComponent(g)+";path\x3d/"},getCsrfToken:function(){var a=CKEDITOR.tools.getCookie("ckCsrfToken");if(!a||40!=a.length){var a=[],g="";if(window.crypto&&window.crypto.getRandomValues)a=new Uint8Array(40),window.crypto.getRandomValues(a); -else for(var d=0;40>d;d++)a.push(Math.floor(256*Math.random()));for(d=0;d<a.length;d++)var b="abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[d]%36),g=g+(.5<Math.random()?b.toUpperCase():b);a=g;CKEDITOR.tools.setCookie("ckCsrfToken",a)}return a},escapeCss:function(a){return a?window.CSS&&CSS.escape?CSS.escape(a):isNaN(parseInt(a.charAt(0),10))?a:"\\3"+a.charAt(0)+" "+a.substring(1,a.length):""},style:{parse:{_colors:{aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF", -beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00", -darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F", -grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE", -lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23", -orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD", -slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},_rgbaRegExp:/rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,_hslaRegExp:/hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,background:function(a){var g={},d=this._findColor(a); -d.length&&(g.color=d[0],CKEDITOR.tools.array.forEach(d,function(g){a=a.replace(g,"")}));if(a=CKEDITOR.tools.trim(a))g.unprocessed=a;return g},margin:function(a){function g(a){d.top=b[a[0]];d.right=b[a[1]];d.bottom=b[a[2]];d.left=b[a[3]]}var d={},b=a.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g)||["0px"];switch(b.length){case 1:g([0,0,0,0]);break;case 2:g([0,1,0,1]);break;case 3:g([0,1,2,1]);break;case 4:g([0,1,2,3])}return d},_findColor:function(a){var g=[],d=CKEDITOR.tools.array,g= -g.concat(a.match(this._rgbaRegExp)||[]),g=g.concat(a.match(this._hslaRegExp)||[]);return g=g.concat(d.filter(a.split(/\s+/),function(a){return a.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi)?!0:a.toLowerCase()in CKEDITOR.tools.style.parse._colors}))}}},array:{filter:function(a,g,d){var b=[];this.forEach(a,function(h,c){g.call(d,h,c,a)&&b.push(h)});return b},forEach:function(a,g,d){var b=a.length,h;for(h=0;h<b;h++)g.call(d,a[h],h,a)},map:function(a,g,d){for(var b=[],h=0;h<a.length;h++)b.push(g.call(d, -a[h],h,a));return b},reduce:function(a,g,d,b){for(var h=0;h<a.length;h++)d=g.call(b,d,a[h],h,a);return d}},object:{findKey:function(a,g){if("object"!==typeof a)return null;for(var d in a)if(a[d]===g)return d;return null}}};CKEDITOR.tools.array.indexOf=CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray=CKEDITOR.tools.isArray}(),CKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,f=function(a,g){for(var d=CKEDITOR.tools.clone(a),b=1;b<arguments.length;b++){g=arguments[b];for(var h in g)delete d[h]}return d}, -b={},c={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},l={command:1,link:1,meta:1,noscript:1,script:1,style:1},k={},d={"#":1},h={center:1,dir:1,noframes:1};a(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1, -label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},d,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(c,e,b,h);f={a:f(b,{a:1,button:1}),abbr:b,address:c,area:k,article:c,aside:c,audio:a({source:1,track:1},c),b:b,base:k,bdi:b,bdo:b,blockquote:c,body:c,br:k,button:f(b,{a:1,button:1}),canvas:b,caption:c,cite:b,code:b,col:k,colgroup:{col:1}, -command:k,datalist:a({option:1},b),dd:c,del:b,details:a({summary:1},c),dfn:b,div:c,dl:{dt:1,dd:1},dt:c,em:b,embed:k,fieldset:a({legend:1},c),figcaption:c,figure:a({figcaption:1},c),footer:c,form:c,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},l),header:c,hgroup:{h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},hr:k,html:a({head:1,body:1},c,l),i:b,iframe:d,img:k,input:k,ins:b,kbd:b,keygen:k,label:b,legend:b,li:c,link:k,main:c,map:c,mark:b,menu:a({li:1},c),meta:k,meter:f(b,{meter:1}),nav:c,noscript:a({link:1, -meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:d,output:b,p:b,param:k,pre:b,progress:f(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:d,section:c,select:{optgroup:1,option:1},small:b,source:k,span:b,strong:b,style:d,sub:b,summary:a({h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},b),sup:b,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:c,textarea:d,tfoot:{tr:1},th:c,thead:{tr:1},time:f(b,{time:1}),title:d,tr:{th:1,td:1},track:k,u:b,ul:{li:1}, -"var":b,video:a({source:1,track:1},c),wbr:k,acronym:b,applet:a({param:1},c),basefont:k,big:b,center:c,dialog:k,dir:{li:1},font:b,isindex:k,noframes:c,strike:b,tt:b};a(f,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},e,h),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,main:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1, -aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,main:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1},$inline:b,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},f.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1, -option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1, -td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return f}(),CKEDITOR.dom.event=function(a){this.$=a},CKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var a=this.getKey();if(this.$.ctrlKey||this.$.metaKey)a+=CKEDITOR.CTRL; -this.$.shiftKey&&(a+=CKEDITOR.SHIFT);this.$.altKey&&(a+=CKEDITOR.ALT);return a},preventDefault:function(a){var f=this.$;f.preventDefault?f.preventDefault():f.returnValue=!1;a&&this.stopPropagation()},stopPropagation:function(){var a=this.$;a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},getTarget:function(){var a=this.$.target||this.$.srcElement;return a?new CKEDITOR.dom.node(a):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var a=this.getTarget().getDocument().$; -return{x:this.$.pageX||this.$.clientX+(a.documentElement.scrollLeft||a.body.scrollLeft),y:this.$.pageY||this.$.clientY+(a.documentElement.scrollTop||a.body.scrollTop)}}},CKEDITOR.CTRL=1114112,CKEDITOR.SHIFT=2228224,CKEDITOR.ALT=4456448,CKEDITOR.EVENT_PHASE_CAPTURING=1,CKEDITOR.EVENT_PHASE_AT_TARGET=2,CKEDITOR.EVENT_PHASE_BUBBLING=3,CKEDITOR.dom.domObject=function(a){a&&(this.$=a)},CKEDITOR.dom.domObject.prototype=function(){var a=function(a,b){return function(c){"undefined"!=typeof CKEDITOR&&a.fire(b, -new CKEDITOR.dom.event(c))}};return{getPrivate:function(){var a;(a=this.getCustomData("_"))||this.setCustomData("_",a={});return a},on:function(f){var b=this.getCustomData("_cke_nativeListeners");b||(b={},this.setCustomData("_cke_nativeListeners",b));b[f]||(b=b[f]=a(this,f),this.$.addEventListener?this.$.addEventListener(f,b,!!CKEDITOR.event.useCapture):this.$.attachEvent&&this.$.attachEvent("on"+f,b));return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(a){CKEDITOR.event.prototype.removeListener.apply(this, -arguments);if(!this.hasListeners(a)){var b=this.getCustomData("_cke_nativeListeners"),c=b&&b[a];c&&(this.$.removeEventListener?this.$.removeEventListener(a,c,!1):this.$.detachEvent&&this.$.detachEvent("on"+a,c),delete b[a])}},removeAllListeners:function(){var a=this.getCustomData("_cke_nativeListeners"),b;for(b in a){var c=a[b];this.$.detachEvent?this.$.detachEvent("on"+b,c):this.$.removeEventListener&&this.$.removeEventListener(b,c,!1);delete a[b]}CKEDITOR.event.prototype.removeAllListeners.call(this)}}}(), -function(a){var f={};CKEDITOR.on("reset",function(){f={}});a.equals=function(a){try{return a&&a.$===this.$}catch(c){return!1}};a.setCustomData=function(a,c){var e=this.getUniqueId();(f[e]||(f[e]={}))[a]=c;return this};a.getCustomData=function(a){var c=this.$["data-cke-expando"];return(c=c&&f[c])&&a in c?c[a]:null};a.removeCustomData=function(a){var c=this.$["data-cke-expando"],c=c&&f[c],e,l;c&&(e=c[a],l=a in c,delete c[a]);return l?e:null};a.clearCustomData=function(){this.removeAllListeners();var a= -this.$["data-cke-expando"];a&&delete f[a]};a.getUniqueId=function(){return this.$["data-cke-expando"]||(this.$["data-cke-expando"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(a)}(CKEDITOR.dom.domObject.prototype),CKEDITOR.dom.node=function(a){return a?new CKEDITOR.dom[a.nodeType==CKEDITOR.NODE_DOCUMENT?"document":a.nodeType==CKEDITOR.NODE_ELEMENT?"element":a.nodeType==CKEDITOR.NODE_TEXT?"text":a.nodeType==CKEDITOR.NODE_COMMENT?"comment":a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT? -"documentFragment":"domObject"](a):this},CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject,CKEDITOR.NODE_ELEMENT=1,CKEDITOR.NODE_DOCUMENT=9,CKEDITOR.NODE_TEXT=3,CKEDITOR.NODE_COMMENT=8,CKEDITOR.NODE_DOCUMENT_FRAGMENT=11,CKEDITOR.POSITION_IDENTICAL=0,CKEDITOR.POSITION_DISCONNECTED=1,CKEDITOR.POSITION_FOLLOWING=2,CKEDITOR.POSITION_PRECEDING=4,CKEDITOR.POSITION_IS_CONTAINED=8,CKEDITOR.POSITION_CONTAINS=16,CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(a,f){a.append(this,f); -return a},clone:function(a,f){function b(c){c["data-cke-expando"]&&(c["data-cke-expando"]=!1);if(c.nodeType==CKEDITOR.NODE_ELEMENT||c.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)if(f||c.nodeType!=CKEDITOR.NODE_ELEMENT||c.removeAttribute("id",!1),a){c=c.childNodes;for(var e=0;e<c.length;e++)b(c[e])}}function c(b){if(b.type==CKEDITOR.NODE_ELEMENT||b.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT){if(b.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var e=b.getName();":"==e[0]&&b.renameNode(e.substring(1))}if(a)for(e=0;e< -b.getChildCount();e++)c(b.getChild(e))}}var e=this.$.cloneNode(a);b(e);e=new CKEDITOR.dom.node(e);CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(this.type==CKEDITOR.NODE_ELEMENT||this.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)&&c(e);return e},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$,a.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$,a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$, -this.$);return a},getAddress:function(a){for(var f=[],b=this.getDocument().$.documentElement,c=this.$;c&&c!=b;){var e=c.parentNode;e&&f.unshift(this.getIndex.call({$:c},a));c=e}return f},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(a){function f(a,d){var h=d?a.nextSibling:a.previousSibling;return h&&h.nodeType==CKEDITOR.NODE_TEXT?b(h)?f(h,d):h:null}function b(a){return!a.nodeValue||a.nodeValue==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE} -var c=this.$,e=-1,l;if(!this.$.parentNode||a&&c.nodeType==CKEDITOR.NODE_TEXT&&b(c)&&!f(c)&&!f(c,!0))return-1;do a&&c!=this.$&&c.nodeType==CKEDITOR.NODE_TEXT&&(l||b(c))||(e++,l=c.nodeType==CKEDITOR.NODE_TEXT);while(c=c.previousSibling);return e},getNextSourceNode:function(a,f,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getFirst&&this.getFirst();var e;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getNext()}for(;!a&&(e=(e||this).getParent());){if(b&& -!1===b(e,!0))return null;a=e.getNext()}return!a||b&&!1===b(a)?null:f&&f!=a.type?a.getNextSourceNode(!1,f,b):a},getPreviousSourceNode:function(a,f,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getLast&&this.getLast();var e;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getPrevious()}for(;!a&&(e=(e||this).getParent());){if(b&&!1===b(e,!0))return null;a=e.getPrevious()}return!a||b&&!1===b(a)?null:f&&a.type!=f?a.getPreviousSourceNode(!1,f,b): -a},getPrevious:function(a){var f=this.$,b;do b=(f=f.previousSibling)&&10!=f.nodeType&&new CKEDITOR.dom.node(f);while(b&&a&&!a(b));return b},getNext:function(a){var f=this.$,b;do b=(f=f.nextSibling)&&new CKEDITOR.dom.node(f);while(b&&a&&!a(b));return b},getParent:function(a){var f=this.$.parentNode;return f&&(f.nodeType==CKEDITOR.NODE_ELEMENT||a&&f.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(f):null},getParents:function(a){var f=this,b=[];do b[a?"push":"unshift"](f);while(f=f.getParent()); -return b},getCommonAncestor:function(a){if(a.equals(this))return this;if(a.contains&&a.contains(this))return a;var f=this.contains?this:this.getParent();do if(f.contains(a))return f;while(f=f.getParent());return null},getPosition:function(a){var f=this.$,b=a.$;if(f.compareDocumentPosition)return f.compareDocumentPosition(b);if(f==b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(f.contains){if(f.contains(b))return CKEDITOR.POSITION_CONTAINS+ -CKEDITOR.POSITION_PRECEDING;if(b.contains(f))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in f)return 0>f.sourceIndex||0>b.sourceIndex?CKEDITOR.POSITION_DISCONNECTED:f.sourceIndex<b.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}f=this.getAddress();a=a.getAddress();for(var b=Math.min(f.length,a.length),c=0;c<b;c++)if(f[c]!=a[c])return f[c]<a[c]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;return f.length<a.length?CKEDITOR.POSITION_CONTAINS+ -CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING},getAscendant:function(a,f){var b=this.$,c,e;f||(b=b.parentNode);"function"==typeof a?(e=!0,c=a):(e=!1,c=function(b){b="string"==typeof b.nodeName?b.nodeName.toLowerCase():"";return"string"==typeof a?b==a:b in a});for(;b;){if(c(e?new CKEDITOR.dom.node(b):b))return new CKEDITOR.dom.node(b);try{b=b.parentNode}catch(l){b=null}}return null},hasAscendant:function(a,f){var b=this.$;f||(b=b.parentNode);for(;b;){if(b.nodeName&& -b.nodeName.toLowerCase()==a)return!0;b=b.parentNode}return!1},move:function(a,f){a.append(this.remove(),f)},remove:function(a){var f=this.$,b=f.parentNode;if(b){if(a)for(;a=f.firstChild;)b.insertBefore(f.removeChild(a),f);b.removeChild(f)}return this},replace:function(a){this.insertBefore(a);a.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var a;this.getFirst&&(a=this.getFirst());){if(a.type==CKEDITOR.NODE_TEXT){var f=CKEDITOR.tools.ltrim(a.getText()),b=a.getLength();if(f)f.length< -b&&(a.split(b-f.length),this.$.removeChild(this.$.firstChild));else{a.remove();continue}}break}},rtrim:function(){for(var a;this.getLast&&(a=this.getLast());){if(a.type==CKEDITOR.NODE_TEXT){var f=CKEDITOR.tools.rtrim(a.getText()),b=a.getLength();if(f)f.length<b&&(a.split(f.length),this.$.lastChild.parentNode.removeChild(this.$.lastChild));else{a.remove();continue}}break}CKEDITOR.env.needsBrFiller&&(a=this.$.lastChild)&&1==a.type&&"br"==a.nodeName.toLowerCase()&&a.parentNode.removeChild(a)},isReadOnly:function(a){var f= -this;this.type!=CKEDITOR.NODE_ELEMENT&&(f=this.getParent());CKEDITOR.env.edge&&f&&f.is("textarea","input")&&(a=!0);if(!a&&f&&"undefined"!=typeof f.$.isContentEditable)return!(f.$.isContentEditable||f.data("cke-editable"));for(;f;){if(f.data("cke-editable"))return!1;if(f.hasAttribute("contenteditable"))return"false"==f.getAttribute("contenteditable");f=f.getParent()}return!0}}),CKEDITOR.dom.window=function(a){CKEDITOR.dom.domObject.call(this,a)},CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject, -CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var a=this.$.document,f="CSS1Compat"==a.compatMode;return{width:(f?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(f?a.documentElement.clientHeight:a.body.clientHeight)||0}},getScrollPosition:function(){var a=this.$;if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};a=a.document;return{x:a.documentElement.scrollLeft||a.body.scrollLeft||0,y:a.documentElement.scrollTop|| -a.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}}),CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)},CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject,CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var f=new CKEDITOR.dom.element("link");f.setAttributes({rel:"stylesheet",type:"text/css", -href:a});this.getHead().append(f)}},appendStyleText:function(a){if(this.$.createStyleSheet){var f=this.$.createStyleSheet("");f.cssText=a}else{var b=new CKEDITOR.dom.element("style",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return f||b.$.sheet},createElement:function(a,f){var b=new CKEDITOR.dom.element(a,this);f&&(f.attributes&&b.setAttributes(f.attributes),f.styles&&b.setStyles(f.styles));return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()}, -getActive:function(){var a;try{a=this.$.activeElement}catch(f){return null}return new CKEDITOR.dom.element(a)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,f){for(var b=this.$.documentElement,c=0;b&&c<a.length;c++){var e=a[c];if(f)for(var l=-1,k=0;k<b.childNodes.length;k++){var d=b.childNodes[k];if(!0!==f||3!=d.nodeType||!d.previousSibling||3!=d.previousSibling.nodeType)if(l++,l==e){b=d;break}}else b=b.childNodes[e]}return b?new CKEDITOR.dom.node(b): -null},getElementsByTag:function(a,f){CKEDITOR.env.ie&&8>=document.documentMode||!f||(a=f+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a=a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow|| -this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i,'$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+CKEDITOR.tools.fixDomain+")();\x3c/script\x3e"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");a|| -(a=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(a,!0),this.setCustomData("html5ShivFrag",a));return a}}),CKEDITOR.dom.nodeList=function(a){this.$=a},CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){return 0>a||a>=this.$.length?null:(a=this.$[a])?new CKEDITOR.dom.node(a):null},toArray:function(){return CKEDITOR.tools.array.map(this.$,function(a){return new CKEDITOR.dom.node(a)})}},CKEDITOR.dom.element=function(a,f){"string"==typeof a&& -(a=(f?f.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)},CKEDITOR.dom.element.get=function(a){return(a="string"==typeof a?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))},CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node,CKEDITOR.dom.element.createFromHtml=function(a,f){var b=new CKEDITOR.dom.element("div",f);b.setHtml(a);return b.getFirst().remove()},CKEDITOR.dom.element.setMarker=function(a,f,b,c){var e=f.getCustomData("list_marker_id")|| -f.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),l=f.getCustomData("list_marker_names")||f.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=f;l[b]=1;return f.setCustomData(b,c)},CKEDITOR.dom.element.clearAllMarkers=function(a){for(var f in a)CKEDITOR.dom.element.clearMarkers(a,a[f],1)},CKEDITOR.dom.element.clearMarkers=function(a,f,b){var c=f.getCustomData("list_marker_names"),e=f.getCustomData("list_marker_id"),l;for(l in c)f.removeCustomData(l); -f.removeCustomData("list_marker_names");b&&(f.removeCustomData("list_marker_id"),delete a[e])},function(){function a(a,b){return-1<(" "+a+" ").replace(l," ").indexOf(" "+b+" ")}function f(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),b=!1);return function(){b||a.removeAttribute("id")}}function b(a,b){var c=CKEDITOR.tools.escapeCss(a.$.id);return"#"+c+" "+b.split(/,\s*/).join(", #"+c+" ")}function c(a){for(var b=0,c=0,g=k[a].length;c<g;c++)b+=parseFloat(this.getComputedStyle(k[a][c])|| -0,10)||0;return b}var e=document.createElement("_").classList,e="undefined"!==typeof e&&null!==String(e.add).match(/\[Native code\]/gi),l=/[\n\t\r]/g;CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:e?function(a){this.$.classList.add(a);return this}:function(d){var b=this.$.className;b&&(a(b,d)||(b+=" "+d));this.$.className=b||d;return this},removeClass:e?function(a){var b=this.$;b.classList.remove(a);b.className||b.removeAttribute("class");return this}:function(d){var b= -this.getAttribute("class");b&&a(b,d)&&((b=b.replace(new RegExp("(?:^|\\s+)"+d+"(?\x3d\\s|$)"),"").replace(/^\s+/,""))?this.setAttribute("class",b):this.removeAttribute("class"));return this},hasClass:function(d){return a(this.$.className,d)},append:function(a,b){"string"==typeof a&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element("div",this.getDocument()); -b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){null!=this.$.text&&CKEDITOR.env.ie&&9>CKEDITOR.env.version?this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&&a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a, -b){var c=new CKEDITOR.dom.range(this.getDocument());c.setStartAfter(this);c.setEndAfter(a);var g=c.extractContents(!1,b||!1),e;c.insertNode(this.remove());if(CKEDITOR.env.ie&&!CKEDITOR.env.edge){for(c=new CKEDITOR.dom.element("div");e=g.getFirst();)e.$.style.backgroundColor&&(e.$.style.backgroundColor=e.$.style.backgroundColor),c.append(e);c.insertAfter(this);c.remove(!0)}else g.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)& -16)}:function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!=a.$&&b.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0)); -return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(g){this.$.innerHTML="";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML= -a;for(b=b.getChildren();b.count();)this.append(b.getItem(0));return a}}:function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(b){this.$[a?"textContent":"innerText"]=b}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name; -case "tabindex":return a=this.$.getAttribute(a,2),0!==a&&0===this.$.tabIndex&&(a=null),a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getAttributes:function(a){var b= -{},c=this.$.attributes,g;a=CKEDITOR.tools.isArray(a)?a:[];for(g=0;g<c.length;g++)-1===CKEDITOR.tools.indexOf(a,c[g].name)&&(b[c[g].name]=c[g].value);return b},getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a= -CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]||0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name|| -null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&8>=document.documentMode){var b=this.$.scopeName;"HTML"!=b&&(a=b.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]}, -is:function(){var a=this.getName();if("object"==typeof arguments[0])return!!arguments[0][a];for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return!0;return!1},isEditable:function(a){var b=this.getName();return this.isReadOnly()||"none"==this.getComputedStyle("display")||"hidden"==this.getComputedStyle("visibility")||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is("a")&&(this.data("cke-saved-name")||this.hasAttribute("name"))&&!this.getChildCount()?!1:!1!==a?(a=CKEDITOR.dtd[b]|| -CKEDITOR.dtd.span,!(!a||!a["#"])):!0},isIdentical:function(a){var b=this.clone(0,1);a=a.clone(0,1);b.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);if(b.$.isEqualNode)return b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText),a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText),b.$.isEqualNode(a.$);b=b.getOuterHtml();a= -a.getOuterHtml();if(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&this.is("a")){var c=this.getParent();c.type==CKEDITOR.NODE_ELEMENT&&(c=c.clone(),c.setHtml(b),b=c.getHtml(),c.setHtml(a),a=c.getHtml())}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&"hidden"!=this.getComputedStyle("visibility"),b,c;a&&CKEDITOR.env.webkit&&(b=this.getWindow(),!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement)&&(a=(new CKEDITOR.dom.element(c)).isVisible()));return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return!1; -for(var a=this.getChildren(),b=0,c=a.count();b<c;b++){var g=a.getItem(b);if(g.type!=CKEDITOR.NODE_ELEMENT||!g.data("cke-bookmark"))if(g.type==CKEDITOR.NODE_ELEMENT&&!g.isEmptyInlineRemoveable()||g.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(g.getText()))return!1}return!0},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(){for(var a=this.$.attributes,b=0;b<a.length;b++){var c=a[b];switch(c.nodeName){case "class":if(this.getAttribute("class"))return!0;case "data-cke-expando":continue; -default:if(c.specified)return!0}}return!1}:function(){var a=this.$.attributes,b=a.length,c={"data-cke-expando":1,_moz_dirty:1};return 0<b&&(2<b||!c[a[0].nodeName]||2==b&&!c[a[1].nodeName])},hasAttribute:function(){function a(b){var d=this.$.attributes.getNamedItem(b);if("input"==this.getName())switch(b){case "class":return 0<this.$.className.length;case "checked":return!!this.$.checked;case "value":return b=this.getAttribute("type"),"checkbox"==b||"radio"==b?"on"!=this.$.value:!!this.$.value}return d? -d.specified:!1}return CKEDITOR.env.ie?8>CKEDITOR.env.version?function(b){return"name"==b?!!this.$.name:a.call(this,b)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$;a=a.$;if(c!=a){var g;if(b)for(;g=c.lastChild;)a.insertBefore(c.removeChild(g),a.firstChild);else for(;g=c.firstChild;)a.appendChild(c.removeChild(g))}},mergeSiblings:function(){function a(b,d,g){if(d&&d.type==CKEDITOR.NODE_ELEMENT){for(var c= -[];d.data("cke-bookmark")||d.isEmptyInlineRemoveable();)if(c.push(d),d=g?d.getNext():d.getPrevious(),!d||d.type!=CKEDITOR.NODE_ELEMENT)return;if(b.isIdentical(d)){for(var e=g?b.getLast():b.getFirst();c.length;)c.shift().move(b,!g);d.moveChildren(b,!g);d.remove();e&&e.type==CKEDITOR.NODE_ELEMENT&&e.mergeSiblings()}}}return function(b){if(!1===b||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a"))a(this,this.getNext(),!0),a(this,this.getPrevious())}}(),show:function(){this.setStyles({display:"", -visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(b,c){"class"==b?this.$.className=c:"style"==b?this.$.style.cssText=c:"tabindex"==b?this.$.tabIndex=c:"checked"==b?this.$.checked=c:"contenteditable"==b?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if("src"==b&&c.match(/^http:\/\//))try{a.apply(this, -arguments)}catch(g){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){"class"==a?a="className":"tabindex"==a?a="tabIndex":"contenteditable"==a&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b= -0;b<a.length;b++)this.removeAttribute(a[b]);else for(b in a=a||this.getAttributes(),a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(b.removeProperty||"border"!=a&&"margin"!=a&&"padding"!=a)b.removeProperty?b.removeProperty(a):b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)),this.$.style.cssText||this.removeAttribute("style");else{var c=["top","left","right","bottom"],g;"border"==a&&(g=["color","style","width"]);for(var b=[],e=0;e<c.length;e++)if(g)for(var f= -0;f<g.length;f++)b.push([a,c[e],g[f]].join("-"));else b.push([a,c[e]].join("-"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){CKEDITOR.env.ie&&9>CKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", -"none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable","on");for(var a,b=this.getElementsByTag("*"),c=0,g=b.count();c<g;c++)a=b.getItem(c),a.setAttribute("unselectable","on")}},getPositionedAncestor:function(){for(var a=this;"html"!=a.getName();){if("static"!=a.getComputedStyle("position"))return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,g=this.getDocument(),e=g.getBody(),f="BackCompat"==g.$.compatMode;if(document.documentElement.getBoundingClientRect&&(CKEDITOR.env.ie? -8!==CKEDITOR.env.version:1)){var l=this.$.getBoundingClientRect(),k=g.$.documentElement,w=k.clientTop||e.$.clientTop||0,p=k.clientLeft||e.$.clientLeft||0,v=!0;CKEDITOR.env.ie&&(v=g.getDocumentElement().contains(this),g=g.getBody().contains(this),v=f&&g||!f&&v);v&&(CKEDITOR.env.webkit||CKEDITOR.env.ie&&12<=CKEDITOR.env.version?(b=e.$.scrollLeft||k.scrollLeft,c=e.$.scrollTop||k.scrollTop):(c=f?e.$:k,b=c.scrollLeft,c=c.scrollTop),b=l.left+b-p,c=l.top+c-w)}else for(w=this,p=null;w&&"body"!=w.getName()&& -"html"!=w.getName();){b+=w.$.offsetLeft-w.$.scrollLeft;c+=w.$.offsetTop-w.$.scrollTop;w.equals(this)||(b+=w.$.clientLeft||0,c+=w.$.clientTop||0);for(;p&&!p.equals(w);)b-=p.$.scrollLeft,c-=p.$.scrollTop,p=p.getParent();p=w;w=(l=w.$.offsetParent)?new CKEDITOR.dom.element(l):null}a&&(l=this.getWindow(),w=a.getWindow(),!l.equals(w)&&l.$.frameElement&&(a=(new CKEDITOR.dom.element(l.$.frameElement)).getDocumentPosition(a),b+=a.x,c+=a.y));document.documentElement.getBoundingClientRect||!CKEDITOR.env.gecko|| -f||(b+=this.$.clientLeft?1:0,c+=this.$.clientTop?1:0);return{x:b,y:c}},scrollIntoView:function(a){var b=this.getParent();if(b){do if((b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is("body")&&this.scrollIntoParent(b,a,1),b.is("html")){var c=b.getWindow();try{var g=c.$.frameElement;g&&(b=new CKEDITOR.dom.element(g))}catch(e){}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var g,e,f,l;function k(b,g){/body|html/.test(a.getName())? -a.getWindow().$.scrollBy(b,g):(a.$.scrollLeft+=b,a.$.scrollTop+=g)}function w(a,b){var g={x:0,y:0};if(!a.is(v?"body":"html")){var c=a.$.getBoundingClientRect();g.x=c.left;g.y=c.top}c=a.getWindow();c.equals(b)||(c=w(CKEDITOR.dom.element.get(c.$.frameElement),b),g.x+=c.x,g.y+=c.y);return g}function p(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}!a&&(a=this.getWindow());f=a.getDocument();var v="BackCompat"==f.$.compatMode;a instanceof CKEDITOR.dom.window&&(a=v?f.getBody():f.getDocumentElement()); -CKEDITOR.env.webkit&&(f=this.getEditor(!1))&&(f._.previousScrollTop=null);f=a.getWindow();e=w(this,f);var u=w(a,f),z=this.$.offsetHeight;g=this.$.offsetWidth;var t=a.$.clientHeight,A=a.$.clientWidth;f=e.x-p(this,"left")-u.x||0;l=e.y-p(this,"top")-u.y||0;g=e.x+g+p(this,"right")-(u.x+A)||0;e=e.y+z+p(this,"bottom")-(u.y+t)||0;(0>l||0<e)&&k(0,!0===b?l:!1===b?e:0>l?l:e);c&&(0>f||0<g)&&k(0>f?f:g,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+ -"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",!0);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+"_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",!0);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off"),this.removeClass(b+"_on"),this.removeClass(b+"_disabled"),c&&this.removeAttribute("aria-pressed"),c&&this.removeAttribute("aria-disabled")}}, -getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a,b){var c=this.$.attributes;b=b||{};for(var g=0;g<c.length;g++){var e=c[g],f=e.nodeName.toLowerCase(),l;if(!(f in b))if("checked"==f&&(l=this.getAttribute(f)))a.setAttribute(f,l);else if(!CKEDITOR.env.ie||this.hasAttribute(f))l=this.getAttribute(f),null===l&&(l=e.nodeValue),a.setAttribute(f,l)}""!==this.$.style.cssText&& -(a.$.style.cssText=this.$.style.cssText)},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument();a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a);this.moveChildren(a);this.getParent(!0)&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$;delete this.getName}},getChild:function(){function a(b,c){var g=b.childNodes;if(0<=c&&c<g.length)return g[c]}return function(b){var c=this.$;if(b.slice)for(b=b.slice();0<b.length&&c;)c=a(c, -b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT&&b.hasClass("cke_enable_context_menu")}this.on("contextmenu",function(b){b.data.getTarget().getAscendant(a,!0)||b.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir|| -"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,b){a="data-"+a;if(void 0===b)return this.getAttribute(a);!1===b?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(a){var b=CKEDITOR.instances,c,g,e;a=a||void 0===a;for(c in b)if(g=b[c],g.element.equals(this)&&g.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||!a&&(e=g.editable())&&(e.equals(this)||e.contains(this)))return g;return null},find:function(a){var c=f(this);a=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this, -a)));c();return a},findOne:function(a){var c=f(this);a=this.$.querySelector(b(this,a));c();return a?new CKEDITOR.dom.element(a):null},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var g=a(this);if(!1!==g){c=this.getChildren();for(var e=0;e<c.count();e++)g=c.getItem(e),g.type==CKEDITOR.NODE_ELEMENT?g.forEach(a,b):b&&g.type!=b||a(g)}}});var k={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]}; -CKEDITOR.dom.element.prototype.setSize=function(a,b,e){"number"==typeof b&&(!e||CKEDITOR.env.ie&&CKEDITOR.env.quirks||(b-=c.call(this,a)),this.setStyle(a,b+"px"))};CKEDITOR.dom.element.prototype.getSize=function(a,b){var e=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)],this.$["client"+CKEDITOR.tools.capitalize(a)])||0;b&&(e-=c.call(this,a));return e}}(),CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a},CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, -CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)},getHtml:function(){var a=new CKEDITOR.dom.element("div");this.clone(1,1).appendTo(a);return a.getHtml().replace(/\s*data-cke-expando=".*?"/g,"")}},!0,{append:1,appendBogus:1,clone:1,getFirst:1,getHtml:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1, -getChildCount:1,getChild:1,getChildren:1}),function(){function a(a,b){var g=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(g.collapsed)return this.end(),null;g.optimize()}var c,d=g.startContainer;c=g.endContainer;var e=g.startOffset,f=g.endOffset,h,m=this.guard,n=this.type,l=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var k=c.type==CKEDITOR.NODE_ELEMENT?c:c.getParent(),B=c.type==CKEDITOR.NODE_ELEMENT?c.getChild(f):c.getNext();this._.guardLTR=function(a, -b){return(!b||!k.equals(a))&&(!B||!a.equals(B))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(g.root))}}if(a&&!this._.guardRTL){var E=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),H=d.type==CKEDITOR.NODE_ELEMENT?e?d.getChild(e-1):null:d.getPrevious();this._.guardRTL=function(a,b){return(!b||!E.equals(a))&&(!H||!a.equals(H))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(g.root))}}var F=a?this._.guardRTL:this._.guardLTR;h=m?function(a,b){return!1===F(a,b)?!1:m(a,b)}:F;this.current?c=this.current[l](!1, -n,h):(a?c.type==CKEDITOR.NODE_ELEMENT&&(c=0<f?c.getChild(f-1):!1===h(c,!0)?null:c.getPreviousSourceNode(!0,n,h)):(c=d,c.type==CKEDITOR.NODE_ELEMENT&&((c=c.getChild(e))||(c=!1===h(d,!0)?null:d.getNextSourceNode(!0,n,h)))),c&&!1===h(c)&&(c=null));for(;c&&!this._.end;){this.current=c;if(!this.evaluator||!1!==this.evaluator(c)){if(!b)return c}else if(b&&this.evaluator)return!1;c=c[l](!1,n,h)}this.end();return this.current=null}function f(b){for(var g,c=null;g=a.call(this,b);)c=g;return c}CKEDITOR.dom.walker= -CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return!1!==a.call(this,0,1)},checkBackward:function(){return!1!==a.call(this,1,1)},lastForward:function(){return f.call(this)},lastBackward:function(){return f.call(this,1)},reset:function(){delete this.current;this._={}}}});var b={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1, -"table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,"table-caption":1},c={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return"none"!=this.getComputedStyle("float")||this.getComputedStyle("position")in c||!b[this.getComputedStyle("display")]?!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a)):!0};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary= -function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function g(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-bookmark")}return function(c){var d,e;d=c&&c.type!=CKEDITOR.NODE_ELEMENT&&(e=c.getParent())&&g(e);d=a?d:d||g(c);return!!(b^d)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var g;b&&b.type==CKEDITOR.NODE_TEXT&&(g=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE); -return!!(a^g)}};CKEDITOR.dom.walker.invisible=function(a){var b=CKEDITOR.dom.walker.whitespaces(),g=CKEDITOR.env.webkit?1:0;return function(c){b(c)?c=1:(c.type==CKEDITOR.NODE_TEXT&&(c=c.getParent()),c=c.$.offsetWidth<=g);return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(g){return!!(b^g.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!l(a)&&!k(a)}return function(g){var c=CKEDITOR.env.needsBrFiller?g.is&&g.is("br"):g.getText&&e.test(g.getText());c&&(c=g.getParent(), -g=g.getNext(b),c=c.isBlockBoundary()&&(!g||g.type==CKEDITOR.NODE_ELEMENT&&g.isBlockBoundary()));return!!(a^c)}};CKEDITOR.dom.walker.temp=function(a){return function(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute("data-cke-temp");return!!(a^b)}};var e=/^[\t\r\n ]*(?: |\xa0)$/,l=CKEDITOR.dom.walker.whitespaces(),k=CKEDITOR.dom.walker.bookmark(),d=CKEDITOR.dom.walker.temp(),h=function(a){return k(a)||l(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty)}; -CKEDITOR.dom.walker.ignored=function(a){return function(b){b=l(b)||k(b)||d(b);return!!(a^b)}};var m=CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty=function(a){return function(b){for(var g=0,c=b.getChildCount();g<c;++g)if(!m(b.getChild(g)))return!!a;return!a}};var g=CKEDITOR.dom.walker.empty(),n=CKEDITOR.dom.walker.validEmptyBlockContainers=CKEDITOR.tools.extend(function(a){var b={},g;for(g in a)CKEDITOR.dtd[g]["#"]&&(b[g]=1);return b}(CKEDITOR.dtd.$block),{caption:1,td:1,th:1});CKEDITOR.dom.walker.editable= -function(a){return function(b){b=m(b)?!1:b.type==CKEDITOR.NODE_TEXT||b.type==CKEDITOR.NODE_ELEMENT&&(b.is(CKEDITOR.dtd.$inline)||b.is("hr")||"false"==b.getAttribute("contenteditable")||!CKEDITOR.env.needsBrFiller&&b.is(n)&&g(b))?!0:!1;return!!(a^b)}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(h(a));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is("br"):a.getText&&e.test(a.getText()))?a:!1}}(),CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer= -this.startOffset=this.startContainer=null;this.collapsed=!0;var f=a instanceof CKEDITOR.dom.document;this.document=f?a:a.getDocument();this.root=f?a.getBody():a},function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset}function f(a,b,c,d,e){function f(a,b,g,c){var d=g?a.getPrevious():a.getNext();if(c&&l)return d;t||c?b.append(a.clone(!0,e),g):(a.remove(),k&&b.append(a,g));return d}function h(){var a,b,g,c=Math.min(J.length, -C.length);for(a=0;a<c;a++)if(b=J[a],g=C[a],!b.equals(g))return a;return a-1}function m(){var b=T-1,c=F&&I&&!A.equals(D);b<K-1||b<R-1||c?(c?a.moveToPosition(D,CKEDITOR.POSITION_BEFORE_START):R==b+1&&H?a.moveToPosition(C[b],CKEDITOR.POSITION_BEFORE_END):a.moveToPosition(C[b+1],CKEDITOR.POSITION_BEFORE_START),d&&(b=J[b+1])&&b.type==CKEDITOR.NODE_ELEMENT&&(c=CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e',a.document),c.insertAfter(b), -b.mergeSiblings(!1),a.moveToBookmark({startNode:c}))):a.collapse(!0)}a.optimizeBookmark();var l=0===b,k=1==b,t=2==b;b=t||k;var A=a.startContainer,D=a.endContainer,x=a.startOffset,B=a.endOffset,E,H,F,I,G,L;if(t&&D.type==CKEDITOR.NODE_TEXT&&(A.equals(D)||A.type===CKEDITOR.NODE_ELEMENT&&A.getFirst().equals(D)))c.append(a.document.createText(D.substring(x,B)));else{D.type==CKEDITOR.NODE_TEXT?t?L=!0:D=D.split(B):0<D.getChildCount()?B>=D.getChildCount()?(D=D.getChild(B-1),H=!0):D=D.getChild(B):I=H=!0;A.type== -CKEDITOR.NODE_TEXT?t?G=!0:A.split(x):0<A.getChildCount()?0===x?(A=A.getChild(x),E=!0):A=A.getChild(x-1):F=E=!0;for(var J=A.getParents(),C=D.getParents(),T=h(),K=J.length-1,R=C.length-1,N=c,V,ca,ba,fa=-1,O=T;O<=K;O++){ca=J[O];ba=ca.getNext();for(O!=K||ca.equals(C[O])&&K<R?b&&(V=N.append(ca.clone(0,e))):E?f(ca,N,!1,F):G&&N.append(a.document.createText(ca.substring(x)));ba;){if(ba.equals(C[O])){fa=O;break}ba=f(ba,N)}N=V}N=c;for(O=T;O<=R;O++)if(c=C[O],ba=c.getPrevious(),c.equals(J[O]))b&&(N=N.getChild(0)); -else{O!=R||c.equals(J[O])&&R<K?b&&(V=N.append(c.clone(0,e))):H?f(c,N,!1,I):L&&N.append(a.document.createText(c.substring(0,B)));if(O>fa)for(;ba;)ba=f(ba,N,!0);N=V}t||m()}}function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!0),d=CKEDITOR.dom.walker.bogus();return function(e){return c(e)||b(e)?!0:d(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(l)?!1:!0}}function c(a){var b= -CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?!0:!a&&k(d)||d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function e(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&m(a)&&(b=a);return h(a)&&!(k(a)&&a.equals(b))})}}var l={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1}, -k=CKEDITOR.dom.walker.bogus(),d=/^[\t\r\n ]*(?: |\xa0)$/,h=CKEDITOR.dom.walker.editable(),m=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer), -this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||f(this,2,b,!1,"undefined"==typeof a?!0:a);return b},deleteContents:function(a){this.collapsed||f(this,0,null,a)},extractContents:function(a,b){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||f(this,1,c,a,"undefined"==typeof b?!0:b);return c},createBookmark:function(a){var b,c,d,e,f=this.collapsed;b=this.document.createElement("span"); -b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("\x26nbsp;");a&&(d="cke_bm_"+CKEDITOR.tools.getNextNumber(),b.setAttribute("id",d+(f?"C":"S")));f||(c=b.clone(),c.setHtml("\x26nbsp;"),a&&c.setAttribute("id",d+"E"),e=this.clone(),e.collapse(),e.insertNode(c));e=this.clone();e.collapse(!0);e.insertNode(b);c?(this.setStartAfter(b),this.setEndBefore(c)):this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(f?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:f}},createBookmark2:function(){function a(b){var g= -b.container,d=b.offset,e;e=g;var f=d;e=e.type!=CKEDITOR.NODE_ELEMENT||0===f||f==e.getChildCount()?0:e.getChild(f-1).type==CKEDITOR.NODE_TEXT&&e.getChild(f).type==CKEDITOR.NODE_TEXT;e&&(g=g.getChild(d-1),d=g.getLength());if(g.type==CKEDITOR.NODE_ELEMENT&&0<d){a:{for(e=g;d--;)if(f=e.getChild(d).getIndex(!0),0<=f){d=f;break a}d=-1}d+=1}if(g.type==CKEDITOR.NODE_TEXT){e=g;for(f=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)f+=e.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE,"").length; -e=f;g.getText()?d+=e:(f=g.getPrevious(c),e?(d=e,g=f?f.getNext():g.getParent().getFirst()):(g=g.getParent(),d=f?f.getIndex(!0)+1:0))}b.container=g;b.offset=d}function b(a,g){var c=g.getCustomData("cke-fillingChar");if(c){var d=a.container;c.equals(d)&&(a.offset-=CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length,0>=a.offset&&(a.offset=d.getIndex(),a.container=d.getParent()))}}var c=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT,!0);return function(c){var d=this.collapsed,e={container:this.startContainer, -offset:this.startOffset},f={container:this.endContainer,offset:this.endOffset};c&&(a(e),b(e,this.root),d||(a(f),b(f,this.root)));return{start:e.container.getAddress(c),end:d?null:f.container.getAddress(c),startOffset:e.offset,endOffset:f.offset,normalized:c,collapsed:d,is2:!0}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized);a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):this.collapse(!0)}else b= -(c=a.serializable)?this.document.getById(a.startNode):a.startNode,a=c?this.document.getById(a.endNode):a.endNode,this.setStartBefore(b),b.remove(),a?(this.setEndBefore(a),a.remove()):this.collapse(!0)},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT)if(e=a.getChildCount(),e>c)a=a.getChild(c);else if(1>e)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a= -a.getNextSourceNode()||a}if(b.type==CKEDITOR.NODE_ELEMENT)if(e=b.getChildCount(),e>d)b=b.getChild(d).getPreviousSourceNode(!0);else if(1>e)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset): -c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&a.is("span")&&a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START); -b&&b.is&&b.is("span")&&b.data("cke-bookmark")&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a||e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength())d=c.getIndex()+1,c=c.getParent();else{var f=c.split(d),d=c.getIndex()+1,c=c.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(f,this.endOffset-this.startOffset):c.equals(this.endContainer)&&(this.endOffset+=1)}else d=c.getIndex(),c=c.getParent(); -this.setStart(c,d);if(e){this.collapse(!0);return}}c=this.endContainer;d=this.endOffset;b||e||!c||c.type!=CKEDITOR.NODE_TEXT||(d?(d>=c.getLength()||c.split(d),d=c.getIndex()+1):d=c.getIndex(),c=c.getParent(),this.setEnd(c,d))},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var f=function(a,b){var c=new CKEDITOR.dom.range(m); -c.setStart(a,b);c.setEndAt(m,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),g;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};g=c.next();){if(g.type!=CKEDITOR.NODE_TEXT)return!1;E=g!=a?g.getText():g.substring(b);if(d.test(E))return!1}return!0};if(this.collapsed)break;var h=this.getCommonAncestor(),m=this.root,l,k,t,A,D,x=!1,B,E;B=this.startContainer;var H=this.startOffset;B.type==CKEDITOR.NODE_TEXT?(H&&(B=!CKEDITOR.tools.trim(B.substring(0,H)).length&& -B,x=!!B),B&&((A=B.getPrevious())||(t=B.getParent()))):(H&&(A=B.getChild(H-1)||B.getLast()),A||(t=B));for(t=c(t);t||A;){if(t&&!A){!D&&t.equals(h)&&(D=!0);if(e?t.isBlockBoundary():!m.contains(t))break;x&&"inline"==t.getComputedStyle("display")||(x=!1,D?l=t:this.setStartBefore(t));A=t.getPrevious()}for(;A;)if(B=!1,A.type==CKEDITOR.NODE_COMMENT)A=A.getPrevious();else{if(A.type==CKEDITOR.NODE_TEXT)E=A.getText(),d.test(E)&&(A=null),B=/[\s\ufeff]$/.test(E);else if((A.$.offsetWidth>(CKEDITOR.env.webkit?1: -0)||b&&A.is("br"))&&!A.data("cke-bookmark"))if(x&&CKEDITOR.dtd.$removeEmpty[A.getName()]){E=A.getText();if(d.test(E))A=null;else for(var H=A.$.getElementsByTagName("*"),F=0,I;I=H[F++];)if(!CKEDITOR.dtd.$removeEmpty[I.nodeName.toLowerCase()]){A=null;break}A&&(B=!!E.length)}else A=null;B&&(x?D?l=t:t&&this.setStartBefore(t):x=!0);if(A){B=A.getPrevious();if(!t&&!B){t=A;A=null;break}A=B}else t=null}t&&(t=c(t.getParent()))}B=this.endContainer;H=this.endOffset;t=A=null;D=x=!1;B.type==CKEDITOR.NODE_TEXT? -CKEDITOR.tools.trim(B.substring(H)).length?x=!0:(x=!B.getLength(),H==B.getLength()?(A=B.getNext())||(t=B.getParent()):f(B,H)&&(t=B.getParent())):(A=B.getChild(H))||(t=B);for(;t||A;){if(t&&!A){!D&&t.equals(h)&&(D=!0);if(e?t.isBlockBoundary():!m.contains(t))break;x&&"inline"==t.getComputedStyle("display")||(x=!1,D?k=t:t&&this.setEndAfter(t));A=t.getNext()}for(;A;){B=!1;if(A.type==CKEDITOR.NODE_TEXT)E=A.getText(),f(A,0)||(A=null),B=/^[\s\ufeff]/.test(E);else if(A.type==CKEDITOR.NODE_ELEMENT){if((0<A.$.offsetWidth|| -b&&A.is("br"))&&!A.data("cke-bookmark"))if(x&&CKEDITOR.dtd.$removeEmpty[A.getName()]){E=A.getText();if(d.test(E))A=null;else for(H=A.$.getElementsByTagName("*"),F=0;I=H[F++];)if(!CKEDITOR.dtd.$removeEmpty[I.nodeName.toLowerCase()]){A=null;break}A&&(B=!!E.length)}else A=null}else B=1;B&&x&&(D?k=t:this.setEndAfter(t));if(A){B=A.getNext();if(!t&&!B){t=A;A=null;break}A=B}else t=null}t&&(t=c(t.getParent()))}l&&k&&(h=l.contains(k)?k:l,this.setStartBefore(h),this.setEndAfter(h));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:t= -new CKEDITOR.dom.range(this.root);m=this.root;t.setStartAt(m,CKEDITOR.POSITION_AFTER_START);t.setEnd(this.startContainer,this.startOffset);t=new CKEDITOR.dom.walker(t);var G,L,J=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),C=null,T=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&"false"==a.getAttribute("contenteditable"))if(C){if(C.equals(a)){C=null;return}}else C=a;else if(C)return;var b=J(a);b||(G=a);return b},e=function(a){var b=T(a);!b&&a.is&&a.is("br")&& -(L=a);return b};t.guard=T;t=t.lastBackward();G=G||m;this.setStartAt(G,!G.is("br")&&(!t&&this.checkStartOfBlock()||t&&G.contains(t))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){t=this.clone();t=new CKEDITOR.dom.walker(t);var K=CKEDITOR.dom.walker.whitespaces(),R=CKEDITOR.dom.walker.bookmark();t.evaluator=function(a){return!K(a)&&!R(a)};if((t=t.previous())&&t.type==CKEDITOR.NODE_ELEMENT&&t.is("br"))break}t=this.clone();t.collapse();t.setEndAt(m, -CKEDITOR.POSITION_BEFORE_END);t=new CKEDITOR.dom.walker(t);t.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:T;G=C=L=null;t=t.lastForward();G=G||m;this.setEndAt(G,!t&&this.checkEndOfBlock()||t&&G.contains(t)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);L&&this.setEndAfter(L)}},shrink:function(a,b,c){var d="boolean"===typeof c?c:c&&"boolean"===typeof c.shrinkOnBlockBoundary?c.shrinkOnBlockBoundary:!0,e=c&&c.skipBogus;if(!this.collapsed){a=a||CKEDITOR.SHRINK_TEXT;var f=this.clone(),h= -this.startContainer,m=this.endContainer,l=this.startOffset,k=this.endOffset,t=c=1;h&&h.type==CKEDITOR.NODE_TEXT&&(l?l>=h.getLength()?f.setStartAfter(h):(f.setStartBefore(h),c=0):f.setStartBefore(h));m&&m.type==CKEDITOR.NODE_TEXT&&(k?k>=m.getLength()?f.setEndAfter(m):(f.setEndAfter(m),t=0):f.setEndBefore(m));var f=new CKEDITOR.dom.walker(f),A=CKEDITOR.dom.walker.bookmark(),D=CKEDITOR.dom.walker.bogus();f.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)}; -var x;f.guard=function(b,c){if(e&&D(b)||A(b))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||c&&b.equals(x)||!1===d&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return!1;c||b.type!=CKEDITOR.NODE_ELEMENT||(x=b);return!0};c&&(h=f[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(h,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);t&&(f.reset(),(f=f[a==CKEDITOR.SHRINK_ELEMENT? -"lastBackward":"previous"]())&&this.setEndAt(f,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!c&&!t)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset); -this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex(),b=b.getParent());this._setStartContainer(b);this.startOffset=c;this.endContainer||(this._setEndContainer(b),this.endOffset=c);a(this)},setEnd:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex()+ -1,b=b.getParent());this._setEndContainer(b);this.endOffset=c;this.startContainer||(this._setStartContainer(b),this.startOffset=c);a(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(b,0); -break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setStart(b,b.getLength()):this.setStart(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(b)}a(this)},setEndAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setEnd(b,b.getLength()):this.setEnd(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(b); -break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(b)}a(this)},fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();this.insertNode(d);var e=d.getBogus();e&&e.remove();d.appendBogus();this.moveToBookmark(c);return d},splitBlock:function(a,b){var c=new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root), -e=c.block,f=d.block,h=null;if(!c.blockLimit.equals(d.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),f=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),f||(f=this.fixBlock(!1,a)));c=e&&this.checkStartOfBlock();d=f&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(f)&&(d?(h=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(f,CKEDITOR.POSITION_AFTER_END),f=null):c?(h=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e, -CKEDITOR.POSITION_BEFORE_START),e=null):(f=this.splitElement(e,b||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:f,wasStartOfBlock:c,wasEndOfBlock:d,elementPath:h}},splitElement:function(a,b){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var c=this.extractContents(!1,b||!1),d=a.clone(!1,b||!1);c.appendTo(d);d.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(g){return function(a){return b(a)|| -c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||g.is("table")&&a.is("caption")?!1:!0}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!1);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,f;e&&!e.equals(d.root)&&!e.getFirst(a(e));)f=e.getParent(),this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=f;this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer, -this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.ltrim(a.substring(0, -c)),d.test(a)&&this.trim(0,1));this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=this.endContainer,c=this.endOffset;CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.rtrim(a.substring(c)),d.test(a)&&this.trim(1,0));this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer, -this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d); -c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if("false"==b.getAttribute("contentEditable")&&!b.data("cke-editable"))return 0;if(b.is("html")||"true"==b.getAttribute("contentEditable")&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a, -b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var c=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&d.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),c=1;else if(b&&a.is("br")&&this.endContainer&& -this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a),!0;var e=a,f=c,h=void 0;e.type==CKEDITOR.NODE_ELEMENT&&e.isEditable(!1)&&(h=e[b?"getLast":"getFirst"](m));f||h||(h=e[b?"getPrevious":"getNext"](m));a=h}return!!c},moveToClosestEditablePosition:function(a,b){var c,d=0,e,f,h=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(c=new CKEDITOR.dom.range(this.root), -c.moveToPosition(a,h[b?0:1])):c=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))d=1;else if(e=c[b?"getNextEditableNode":"getPreviousEditableNode"]())d=1,(f=e.type==CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")?(c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&f&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(c.setEnd(e,0),c.collapse()):c.moveToPosition(e,h[b?1:0]);d&&this.moveToRange(c); -return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(!1,!0),c=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next(); -a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:e(),getPreviousEditableNode:e(1),_getTableElement:function(a){a=a||{td:1,th:1,tr:1,tbody:1,thead:1,tfoot:1,table:1};var b=this.startContainer,c= -this.endContainer,d=b.getAscendant("table",!0),e=c.getAscendant("table",!0);return CKEDITOR.env.safari&&d&&c.equals(this.root)?b.getAscendant(a,!0):this.getEnclosedNode()?this.getEnclosedNode().getAscendant(a,!0):d&&e&&(d.equals(e)||d.contains(e)||e.contains(d))?b.getAscendant(a,!0):null},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),b,c,d,e=this.clone();e.optimize();(d=e.startContainer.type==CKEDITOR.NODE_TEXT)?(c=e.startContainer.getText(), -b=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)):e.insertNode(a);a.scrollIntoView();d&&(e.startContainer.setText(c),b.remove());a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a},_find:function(a,b){var c=this.getCommonAncestor(),d=this.getBoundaryNodes(),e=[],f,h,m,l;if(c&&c.find)for(h=c.find(a),f=0;f<h.count();f++)if(c=h.getItem(f),b||!c.isReadOnly())m=c.getPosition(d.startNode)&CKEDITOR.POSITION_FOLLOWING|| -d.startNode.equals(c),l=c.getPosition(d.endNode)&CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IS_CONTAINED||d.endNode.equals(c),m&&l&&e.push(c);return e}};CKEDITOR.dom.range.mergeRanges=function(a){return CKEDITOR.tools.array.reduce(a,function(a,b){var c=a[a.length-1],d=!1;b=b.clone();b.enlarge(CKEDITOR.ENLARGE_ELEMENT);if(c){var g=new CKEDITOR.dom.range(b.root),d=new CKEDITOR.dom.walker(g),e=CKEDITOR.dom.walker.whitespaces();g.setStart(c.endContainer,c.endOffset);g.setEnd(b.startContainer,b.startOffset); -for(g=d.next();e(g)||b.endContainer.equals(g);)g=d.next();d=!g}d?c.setEnd(b.endContainer,b.endOffset):a.push(b);return a},[])}}(),CKEDITOR.POSITION_AFTER_START=1,CKEDITOR.POSITION_BEFORE_END=2,CKEDITOR.POSITION_BEFORE_START=3,CKEDITOR.POSITION_AFTER_END=4,CKEDITOR.ENLARGE_ELEMENT=1,CKEDITOR.ENLARGE_BLOCK_CONTENTS=2,CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3,CKEDITOR.ENLARGE_INLINE=4,CKEDITOR.START=1,CKEDITOR.END=2,CKEDITOR.SHRINK_ELEMENT=1,CKEDITOR.SHRINK_TEXT=2,"use strict",function(){function a(a){1> -arguments.length||(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function f(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function b(a,c,d,e){a:{null==e&&(e=f(d));for(var h;h=e.shift();)if(h.getDtd().p){e={element:h,remaining:e};break a}e=null}if(!e)return 0;if((h=CKEDITOR.filter.instances[e.element.data("cke-filter")])&&!h.check(c))return b(a,c,d,e.remaining); -c=new CKEDITOR.dom.range(e.element);c.selectNodeContents(e.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=h;a._.nestedEditable={element:e.element,container:d,remaining:e.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var e=/^[\r\n\t ]+$/,l=CKEDITOR.dom.walker.bookmark(!1,!0),k=CKEDITOR.dom.walker.whitespaces(!0),d=function(a){return l(a)&& -k(a)},h={dd:1,dt:1,li:1};a.prototype={getNextParagraph:function(a){var g,f,k,q,y;a=a||"p";if(this._.nestedEditable){if(g=this._.nestedEditable.iterator.getNextParagraph(a))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,g;this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(a);this._.nestedEditable=null}if(!this.range.root.getDtd()[a])return null; -if(!this._.started){var w=this.range.clone();f=w.startPath();var p=w.endPath(),v=!w.collapsed&&c(w,f.block),u=!w.collapsed&&c(w,p.block,1);w.shrink(CKEDITOR.SHRINK_ELEMENT,!0);v&&w.setStartAt(f.block,CKEDITOR.POSITION_BEFORE_END);u&&w.setEndAt(p.block,CKEDITOR.POSITION_AFTER_START);f=w.endContainer.hasAscendant("pre",!0)||w.startContainer.hasAscendant("pre",!0);w.enlarge(this.forceBrBreak&&!f||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);w.collapsed||(f=new CKEDITOR.dom.walker(w.clone()), -p=CKEDITOR.dom.walker.bookmark(!0,!0),f.evaluator=p,this._.nextNode=f.next(),f=new CKEDITOR.dom.walker(w.clone()),f.evaluator=p,f=f.previous(),this._.lastNode=f.getNextSourceNode(!0,null,w.root),this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(p=this.range.clone(),p.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),p.checkEndOfBlock()&&(p=new CKEDITOR.dom.elementPath(p.endContainer, -p.root),this._.lastNode=(p.block||p.blockLimit).getNextSourceNode(!0))),this._.lastNode&&w.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=w.document.createText(""),this._.lastNode.insertAfter(f)),w=null);this._.started=1;f=w}p=this._.nextNode;w=this._.lastNode;for(this._.nextNode=null;p;){var v=0,u=p.hasAscendant("pre"),z=p.type!=CKEDITOR.NODE_ELEMENT,t=0;if(z)p.type==CKEDITOR.NODE_TEXT&&e.test(p.getText())&&(z=0);else{var A=p.getName();if(CKEDITOR.dtd.$block[A]&&"false"==p.getAttribute("contenteditable")){g= -p;b(this,a,g);break}else if(p.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){if("br"==A)z=1;else if(!f&&!p.getChildCount()&&"hr"!=A){g=p;k=p.equals(w);break}f&&(f.setEndAt(p,CKEDITOR.POSITION_BEFORE_START),"br"!=A&&(this._.nextNode=p));v=1}else{if(p.getFirst()){f||(f=this.range.clone(),f.setStartAt(p,CKEDITOR.POSITION_BEFORE_START));p=p.getFirst();continue}z=1}}z&&!f&&(f=this.range.clone(),f.setStartAt(p,CKEDITOR.POSITION_BEFORE_START));k=(!v||z)&&p.equals(w);if(f&&!v)for(;!p.getNext(d)&&!k;){A= -p.getParent();if(A.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){v=1;z=0;k||A.equals(w);f.setEndAt(A,CKEDITOR.POSITION_BEFORE_END);break}p=A;z=1;k=p.equals(w);t=1}z&&f.setEndAt(p,CKEDITOR.POSITION_AFTER_END);p=this._getNextSourceNode(p,t,w);if((k=!p)||v&&f)break}if(!g){if(!f)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;g=new CKEDITOR.dom.elementPath(f.startContainer,f.root);p=g.blockLimit;v={div:1,th:1,td:1};g=g.block;!g&&p&&!this.enforceRealBlocks&&v[p.getName()]&& -f.checkStartOfBlock()&&f.checkEndOfBlock()&&!p.equals(f.root)?g=p:!g||this.enforceRealBlocks&&g.is(h)?(g=this.range.document.createElement(a),f.extractContents().appendTo(g),g.trim(),f.insertNode(g),q=y=!0):"li"!=g.getName()?f.checkStartOfBlock()&&f.checkEndOfBlock()||(g=g.clone(!1),f.extractContents().appendTo(g),g.trim(),y=f.splitBlock(),q=!y.wasStartOfBlock,y=!y.wasEndOfBlock,f.insertNode(g)):k||(this._.nextNode=g.equals(w)?null:this._getNextSourceNode(f.getBoundaryNodes().endNode,1,w))}q&&(q= -g.getPrevious())&&q.type==CKEDITOR.NODE_ELEMENT&&("br"==q.getName()?q.remove():q.getLast()&&"br"==q.getLast().$.nodeName.toLowerCase()&&q.getLast().remove());y&&(q=g.getLast())&&q.type==CKEDITOR.NODE_ELEMENT&&"br"==q.getName()&&(!CKEDITOR.env.needsBrFiller||q.getPrevious(l)||q.getNext(l))&&q.remove();this._.nextNode||(this._.nextNode=k||g.equals(w)||!w?null:this._getNextSourceNode(g,1,w));return g},_getNextSourceNode:function(a,b,c){function d(a){return!(a.equals(c)||a.equals(e))}var e=this.range.root; -for(a=a.getNextSourceNode(b,null,d);!l(a);)a=a.getNextSourceNode(b,null,d);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}}(),CKEDITOR.command=function(a,f){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&a.focus();return!1===this.fire("exec")?!0:!1!==f.exec.call(this,a,b)};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return!0;if(this.context&&!b.isContextFor(this.context)|| -!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&this.disable();return!1===this.fire("refresh",{editor:a,path:b})?!0:f.refresh&&!1!==f.refresh.apply(this,arguments)};var b;this.checkAllowed=function(c){return c||"boolean"!=typeof b?b=a.activeFilter.checkFeature(this):b};CKEDITOR.tools.extend(this,f,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!f.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)},CKEDITOR.command.prototype= -{enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=a;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON): -this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}},CKEDITOR.event.implementOn(CKEDITOR.command.prototype),CKEDITOR.ENTER_P=1,CKEDITOR.ENTER_BR=2,CKEDITOR.ENTER_DIV=3,CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"), -extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]},function(){function a(a,b,c,d,e){var g,f;a=[];for(g in b){f=b[g];f="boolean"==typeof f?{}:"function"==typeof f?{match:f}:F(f);"$"!=g.charAt(0)&&(f.elements=g);c&&(f.featureName=c.toLowerCase());var h=f;h.elements=k(h.elements,/\s+/)||null;h.propertiesOnly=h.propertiesOnly||!0===h.elements;var m=/\s*,\s*/,l=void 0;for(l in L){h[l]=k(h[l], -m)||null;var t=h,p=J[l],C=k(h[J[l]],m),x=h[l],A=[],n=!0,E=void 0;C?n=!1:C={};for(E in x)"!"==E.charAt(0)&&(E=E.slice(1),A.push(E),C[E]=!0,n=!1);for(;E=A.pop();)x[E]=x["!"+E],delete x["!"+E];t[p]=(n?!1:C)||null}h.match=h.match||null;d.push(f);a.push(f)}b=e.elements;e=e.generic;var K;c=0;for(d=a.length;c<d;++c){g=F(a[c]);f=!0===g.classes||!0===g.styles||!0===g.attributes;h=g;l=p=m=void 0;for(m in L)h[m]=v(h[m]);t=!0;for(l in J){m=J[l];p=h[m];C=[];x=void 0;for(x in p)-1<x.indexOf("*")?C.push(new RegExp("^"+ -x.replace(/\*/g,".*")+"$")):C.push(x);p=C;p.length&&(h[m]=p,t=!1)}h.nothingRequired=t;h.noProperties=!(h.attributes||h.classes||h.styles);if(!0===g.elements||null===g.elements)e[f?"unshift":"push"](g);else for(K in h=g.elements,delete g.elements,h)if(b[K])b[K][f?"unshift":"push"](g);else b[K]=[g]}}function f(a,c,e,g){if(!a.match||a.match(c))if(g||d(a,c))if(a.propertiesOnly||(e.valid=!0),e.allAttributes||(e.allAttributes=b(a.attributes,c.attributes,e.validAttributes)),e.allStyles||(e.allStyles=b(a.styles, -c.styles,e.validStyles)),!e.allClasses){a=a.classes;c=c.classes;g=e.validClasses;if(a)if(!0===a)a=!0;else{for(var f=0,h=c.length,m;f<h;++f)m=c[f],g[m]||(g[m]=a(m));a=!1}else a=!1;e.allClasses=a}}function b(a,b,c){if(!a)return!1;if(!0===a)return!0;for(var d in b)c[d]||(c[d]=a(d));return!1}function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return!1;c.hadInvalidAttribute=e(a.attributes,b.attributes)||c.hadInvalidAttribute;c.hadInvalidStyle=e(a.styles,b.styles)||c.hadInvalidStyle;a=a.classes; -b=b.classes;if(a){for(var d=!1,g=!0===a,f=b.length;f--;)if(g||a(b[f]))b.splice(f,1),d=!0;a=d}else a=!1;c.hadInvalidClass=a||c.hadInvalidClass}}function e(a,b){if(!a)return!1;var c=!1,d=!0===a,e;for(e in b)if(d||a(e))delete b[e],c=!0;return c}function l(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return!1;a._.cachedChecks={};return!0}function k(a,b){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)return a=I(a),"*"==a?!0:CKEDITOR.tools.convertArrayToObject(a.split(b));if(CKEDITOR.tools.isArray(a))return a.length? -CKEDITOR.tools.convertArrayToObject(a):!1;var c={},d=0,e;for(e in a)c[e]=a[e],d++;return d?c:!1}function d(a,b){if(a.nothingRequired)return!0;var c,d,e,g;if(e=a.requiredClasses)for(g=b.classes,c=0;c<e.length;++c)if(d=e[c],"string"==typeof d){if(-1==CKEDITOR.tools.indexOf(g,d))return!1}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(g,d))return!1;return h(b.styles,a.requiredStyles)&&h(b.attributes,a.requiredAttributes)}function h(a,b){if(!b)return!0;for(var c=0,d;c<b.length;++c)if(d=b[c],"string"== -typeof d){if(!(d in a))return!1}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,d))return!1;return!0}function m(a){if(!a)return{};a=a.split(/\s*,\s*/).sort();for(var b={};a.length;)b[a.shift()]="cke-test";return b}function g(a){var b,c,d,e,g={},f=1;for(a=I(a);b=a.match(C);)(c=b[2])?(d=n(c,"styles"),e=n(c,"attrs"),c=n(c,"classes")):d=e=c=null,g["$"+f++]={elements:b[1],classes:c,styles:d,attributes:e},a=a.slice(b[0].length);return g}function n(a,b){var c=a.match(T[b]);return c?I(c[1]):null} -function r(a){var b=a.styleBackup=a.attributes.style,c=a.classBackup=a.attributes["class"];a.styles||(a.styles=CKEDITOR.tools.parseCssText(b||"",1));a.classes||(a.classes=c?c.split(/\s+/):[])}function q(a,b,d,e){var g=0,h;e.toHtml&&(b.name=b.name.replace(K,"$1"));if(e.doCallbacks&&a.elementCallbacks){a:{h=a.elementCallbacks;for(var m=0,l=h.length,t;m<l;++m)if(t=h[m](b)){h=t;break a}h=void 0}if(h)return h}if(e.doTransform&&(h=a._.transformations[b.name])){r(b);for(m=0;m<h.length;++m)A(a,b,h[m]);w(b)}if(e.doFilter){a:{m= -b.name;l=a._;a=l.allowedRules.elements[m];h=l.allowedRules.generic;m=l.disallowedRules.elements[m];l=l.disallowedRules.generic;t=e.skipRequired;var k={valid:!1,validAttributes:{},validClasses:{},validStyles:{},allAttributes:!1,allClasses:!1,allStyles:!1,hadInvalidAttribute:!1,hadInvalidClass:!1,hadInvalidStyle:!1},C,v;if(a||h){r(b);if(m)for(C=0,v=m.length;C<v;++C)if(!1===c(m[C],b,k)){a=null;break a}if(l)for(C=0,v=l.length;C<v;++C)c(l[C],b,k);if(a)for(C=0,v=a.length;C<v;++C)f(a[C],b,k,t);if(h)for(C= -0,v=h.length;C<v;++C)f(h[C],b,k,t);a=k}else a=null}if(!a||!a.valid)return d.push(b),1;v=a.validAttributes;var J=a.validStyles;h=a.validClasses;var m=b.attributes,x=b.styles,l=b.classes;t=b.classBackup;var E=b.styleBackup,n,u,F=[],k=[],D=/^data-cke-/;C=!1;delete m.style;delete m["class"];delete b.classBackup;delete b.styleBackup;if(!a.allAttributes)for(n in m)v[n]||(D.test(n)?n==(u=n.replace(/^data-cke-saved-/,""))||v[u]||(delete m[n],C=!0):(delete m[n],C=!0));if(!a.allStyles||a.hadInvalidStyle){for(n in x)a.allStyles|| -J[n]?F.push(n+":"+x[n]):C=!0;F.length&&(m.style=F.sort().join("; "))}else E&&(m.style=E);if(!a.allClasses||a.hadInvalidClass){for(n=0;n<l.length;++n)(a.allClasses||h[l[n]])&&k.push(l[n]);k.length&&(m["class"]=k.sort().join(" "));t&&k.length<t.split(/\s+/).length&&(C=!0)}else t&&(m["class"]=t);C&&(g=1);if(!e.skipFinalValidation&&!p(b))return d.push(b),1}e.toHtml&&(b.name=b.name.replace(R,"cke:$1"));return g}function y(a){var b=[],c;for(c in a)-1<c.indexOf("*")&&b.push(c.replace(/\*/g,".*"));return b.length? -new RegExp("^(?:"+b.join("|")+")$"):null}function w(a){var b=a.attributes,c;delete b.style;delete b["class"];if(c=CKEDITOR.tools.writeCssText(a.styles,!0))b.style=c;a.classes.length&&(b["class"]=a.classes.sort().join(" "))}function p(a){switch(a.name){case "a":if(!(a.children.length||a.attributes.name||a.attributes.id))return!1;break;case "img":if(!a.attributes.src)return!1}return!0}function v(a){if(!a)return!1;if(!0===a)return!0;var b=y(a);return function(c){return c in a||b&&c.match(b)}}function u(){return new CKEDITOR.htmlParser.element("br")} -function z(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==a.name||H.$block[a.name])}function t(a,b,c){var d=a.name;if(H.$empty[d]||!a.children.length)"hr"==d&&"br"==b?a.replaceWith(u()):(a.parent&&c.push({check:"it",el:a.parent}),a.remove());else if(H.$block[d]||"tr"==d)if("br"==b)a.previous&&!z(a.previous)&&(b=u(),b.insertBefore(a)),a.next&&!z(a.next)&&(b=u(),b.insertAfter(a)),a.replaceWithChildren();else{var d=a.children,e;b:{e=H[b];for(var g=0,f=d.length,h;g<f;++g)if(h=d[g],h.type==CKEDITOR.NODE_ELEMENT&& -!e[h.name]){e=!1;break b}e=!0}if(e)a.name=b,a.attributes={},c.push({check:"parent-down",el:a});else{e=a.parent;for(var g=e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||"body"==e.name,m,l,f=d.length;0<f;)h=d[--f],g&&(h.type==CKEDITOR.NODE_TEXT||h.type==CKEDITOR.NODE_ELEMENT&&H.$inline[h.name])?(m||(m=new CKEDITOR.htmlParser.element(b),m.insertAfter(a),c.push({check:"parent-down",el:m})),m.add(h,0)):(m=null,l=H[e.name]||H.span,h.insertAfter(a),e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||h.type!=CKEDITOR.NODE_ELEMENT|| -l[h.name]||c.push({check:"el-up",el:h}));a.remove()}}else d in{style:1,script:1}?a.remove():(a.parent&&c.push({check:"it",el:a.parent}),a.replaceWithChildren())}function A(a,b,c){var d,e;for(d=0;d<c.length;++d)if(e=c[d],!(e.check&&!a.check(e.check,!1)||e.left&&!e.left(b))){e.right(b,N);break}}function D(a,b){var c=b.getDefinition(),d=c.attributes,e=c.styles,g,f,h,m;if(a.name!=c.element)return!1;for(g in d)if("class"==g)for(c=d[g].split(/\s+/),h=a.classes.join("|");m=c.pop();){if(-1==h.indexOf(m))return!1}else if(a.attributes[g]!= -d[g])return!1;for(f in e)if(a.styles[f]!=e[f])return!1;return!0}function x(a,b){var c,d;"string"==typeof a?c=a:a instanceof CKEDITOR.style?d=a:(c=a[0],d=a[1]);return[{element:c,left:d,right:function(a,c){c.transform(a,b)}}]}function B(a){return function(b){return D(b,a)}}function E(a){return function(b,c){c[a](b)}}var H=CKEDITOR.dtd,F=CKEDITOR.tools.copy,I=CKEDITOR.tools.trim,G=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a){this.allowedContent=[];this.disallowedContent= -[];this.elementCallbacks=null;this.disabled=!1;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{},generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=this.editor=a;this.customConfig=!0;var b=a.config.allowedContent;!0===b?this.disabled=!0:(b||(this.customConfig=!1),this.allow(b,"config",1),this.allow(a.config.extraAllowedContent,"extra",1),this.allow(G[a.enterMode]+ -" "+G[a.shiftEnterMode],"default",1),this.disallow(a.config.disallowedContent))}else this.customConfig=!1,this.allow(a,"default",1)};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(b,c,d){if(!l(this,b,d))return!1;var e,f;if("string"==typeof b)b=g(b);else if(b instanceof CKEDITOR.style){if(b.toAllowedContentRules)return this.allow(b.toAllowedContentRules(this.editor),c,d);e=b.getDefinition();b={};d=e.attributes;b[e.element]=e={styles:e.styles,requiredStyles:e.styles&&CKEDITOR.tools.objectKeys(e.styles)}; -d&&(d=F(d),e.classes=d["class"]?d["class"].split(/\s+/):null,e.requiredClasses=e.classes,delete d["class"],e.attributes=d,e.requiredAttributes=d&&CKEDITOR.tools.objectKeys(d))}else if(CKEDITOR.tools.isArray(b)){for(e=0;e<b.length;++e)f=this.allow(b[e],c,d);return f}a(this,b,c,this.allowedContent,this._.allowedRules);return!0},applyTo:function(a,b,c,d){if(this.disabled)return!1;var e=this,g=[],f=this.editor&&this.editor.config.protectedSource,h,m=!1,l={doFilter:!c,doTransform:!0,doCallbacks:!0,toHtml:b}; -a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if("off"==a.attributes["data-cke-filter"])return!1;if(!b||"span"!=a.name||!~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-"))if(h=q(e,a,g,l),h&1)m=!0;else if(h&2)return!1}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var c;a:{var d=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));c=[];var t,k,p;if(f)for(k=0;k<f.length;++k)if((p=d.match(f[k]))&&p[0].length==d.length){c=!0; -break a}d=CKEDITOR.htmlParser.fragment.fromHtml(d);1==d.children.length&&(t=d.children[0]).type==CKEDITOR.NODE_ELEMENT&&q(e,t,c,l);c=!c.length}c||g.push(a)}},null,!0);g.length&&(m=!0);var k;a=[];d=G[d||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];for(var C;c=g.pop();)c.type==CKEDITOR.NODE_ELEMENT?t(c,d,a):c.remove();for(;k=a.pop();)if(c=k.el,c.parent)switch(C=H[c.parent.name]||H.span,k.check){case "it":H.$removeEmpty[c.name]&&!c.children.length?t(c,d,a):p(c)||t(c,d,a);break;case "el-up":c.parent.type== -CKEDITOR.NODE_DOCUMENT_FRAGMENT||C[c.name]||t(c,d,a);break;case "parent-down":c.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||C[c.name]||t(c.parent,d,a)}return m},checkFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=!0},disallow:function(b){if(!l(this,b,!0))return!1;"string"==typeof b&&(b=g(b));a(this,b,null,this.disallowedContent,this._.disallowedRules);return!0}, -addContentForms:function(a){if(!this.disabled&&a){var b,c,d=[],e;for(b=0;b<a.length&&!e;++b)c=a[b],("string"==typeof c||c instanceof CKEDITOR.style)&&this.check(c)&&(e=c);if(e){for(b=0;b<a.length;++b)d.push(x(a[b],e));this.addTransformations(d)}}},addElementCallback:function(a){this.elementCallbacks||(this.elementCallbacks=[]);this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations); -this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)?this.check(a.requiredContent):!0},addTransformations:function(a){var b,c;if(!this.disabled&&a){var d=this._.transformations,e;for(e=0;e<a.length;++e){b=a[e];var g=void 0,f=void 0,h=void 0,m=void 0,l=void 0,t=void 0;c=[];for(f=0;f<b.length;++f)h=b[f],"string"==typeof h?(h=h.split(/\s*:\s*/),m=h[0],l=null,t=h[1]):(m=h.check,l=h.left,t=h.right),g||(g=h,g=g.element?g.element:m?m.match(/^([a-z0-9]+)/i)[0]: -g.left.getDefinition().element),l instanceof CKEDITOR.style&&(l=B(l)),c.push({check:m==g?null:m,left:l,right:"string"==typeof t?E(t):t});b=g;d[b]||(d[b]=[]);d[b].push(c)}}},check:function(a,b,c){if(this.disabled)return!0;if(CKEDITOR.tools.isArray(a)){for(var d=a.length;d--;)if(this.check(a[d],b,c))return!0;return!1}var e,f;if("string"==typeof a){f=a+"\x3c"+(!1===b?"0":"1")+(c?"1":"0")+"\x3e";if(f in this._.cachedChecks)return this._.cachedChecks[f];d=g(a).$1;e=d.styles;var h=d.classes;d.name=d.elements; -d.classes=h=h?h.split(/\s*,\s*/):[];d.styles=m(e);d.attributes=m(d.attributes);d.children=[];h.length&&(d.attributes["class"]=h.join(" "));e&&(d.attributes.style=CKEDITOR.tools.writeCssText(d.styles));e=d}else d=a.getDefinition(),e=d.styles,h=d.attributes||{},e&&!CKEDITOR.tools.isEmpty(e)?(e=F(e),h.style=CKEDITOR.tools.writeCssText(e,!0)):e={},e={name:d.element,attributes:h,classes:h["class"]?h["class"].split(/\s+/):[],styles:e,children:[]};var h=CKEDITOR.tools.clone(e),l=[],t;if(!1!==b&&(t=this._.transformations[e.name])){for(d= -0;d<t.length;++d)A(this,e,t[d]);w(e)}q(this,h,l,{doFilter:!0,doTransform:!1!==b,skipRequired:!c,skipFinalValidation:!c});b=0<l.length?!1:CKEDITOR.tools.objectCompare(e.attributes,h.attributes,!0)?!0:!1;"string"==typeof a&&(this._.cachedChecks[f]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(c,d){var e=a.slice(),g;if(this.check(G[c]))return c;for(d||(e=e.reverse());g=e.pop();)if(this.check(g))return b[g]; -return CKEDITOR.ENTER_BR}}(),destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent;delete this.disallowedContent}};var L={styles:1,attributes:1,classes:1},J={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},C=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,T={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},K=/^cke:(object|embed|param)$/, -R=/^(object|embed|param)$/,N;N=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];d&&(/^\d+$/.test(d)&&(d+="px"),a.styles[c]=d)}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],e=d&&d.match(/^(\d+)(?:\.\d*)?px$/); -e?a.attributes[c]=e[1]:"cke-test"==d&&(a.attributes[c]="cke-test")}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if("left"==b||"right"==b)a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if("left"==b||"right"==b)a.attributes.align=b}delete a.styles["float"]},splitBorderShorthand:function(a){function b(d){a.styles["border-top-width"]=c[d[0]];a.styles["border-right-width"]= -c[d[1]];a.styles["border-bottom-width"]=c[d[2]];a.styles["border-left-width"]=c[d[3]]}if(a.styles.border){var c=a.styles.border.match(/([\.\d]+\w+)/g)||["0px"];switch(c.length){case 1:a.styles["border-width"]=c[0];break;case 2:b([0,1,0,1]);break;case 3:b([0,1,2,1]);break;case 4:b([0,1,2,3])}a.styles["border-style"]=a.styles["border-style"]||(a.styles.border.match(/(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|initial|inherit)/)||[])[0];a.styles["border-style"]||delete a.styles["border-style"]; -delete a.styles.border}},listTypeToStyle:function(a){if(a.attributes.type)switch(a.attributes.type){case "a":a.styles["list-style-type"]="lower-alpha";break;case "A":a.styles["list-style-type"]="upper-alpha";break;case "i":a.styles["list-style-type"]="lower-roman";break;case "I":a.styles["list-style-type"]="upper-roman";break;case "1":a.styles["list-style-type"]="decimal";break;default:a.styles["list-style-type"]=a.attributes.type}},splitMarginShorthand:function(a){function b(d){a.styles["margin-top"]= -c[d[0]];a.styles["margin-right"]=c[d[1]];a.styles["margin-bottom"]=c[d[2]];a.styles["margin-left"]=c[d[3]]}if(a.styles.margin){var c=a.styles.margin.match(/(\-?[\.\d]+\w+)/g)||["0px"];switch(c.length){case 1:b([0,0,0,0]);break;case 2:b([0,1,0,1]);break;case 3:b([0,1,2,1]);break;case 4:b([0,1,2,3])}delete a.styles.margin}},matchesStyle:D,transform:function(a,b){if("string"==typeof b)a.name=b;else{var c=b.getDefinition(),d=c.styles,e=c.attributes,g,f,h,m;a.name=c.element;for(g in e)if("class"==g)for(c= -a.classes.join("|"),h=e[g].split(/\s+/);m=h.pop();)-1==c.indexOf(m)&&a.classes.push(m);else a.attributes[g]=e[g];for(f in d)a.styles[f]=d[f]}}}}(),function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=!1;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);a&&(this.currentActive=a);this.hasFocus||this._.locked||((a=CKEDITOR.currentInstance)&& -a.focusManager.blur(1),this.hasFocus=!0,(a=this._.editor.container)&&a.addClass("cke_focus"),this._.editor.fire("focus"))},lock:function(){this._.locked=1},unlock:function(){delete this._.locked},blur:function(a){function f(){if(this.hasFocus){this.hasFocus=!1;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?f.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer; -f.call(this)},b,this)}},add:function(a,f){var b=a.getCustomData("focusmanager");if(!b||b!=this){b&&b.remove(a);var b="focus",c="blur";f&&(CKEDITOR.env.ie?(b="focusin",c="focusout"):CKEDITOR.event.useCapture=1);var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,e.focus,this);a.on(c,e.blur,this);f&&(CKEDITOR.event.useCapture=0);a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager"); -var f=a.removeCustomData("focusmanager_handlers");a.removeListener("blur",f.blur);a.removeListener("focus",f.focus)}}}(),CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this},function(){var a,f=function(b){b=b.data;var e=b.getKeystroke(),f=this.keystrokes[e],k=this._.editor;a=!1===k.fire("key",{keyCode:e,domEvent:b});a||(f&&(a=!1!==k.execCommand(f,{from:"keystrokeHandler"})),a||(a=!!this.blockedKeystrokes[e])); -a&&b.preventDefault(!0);return!a},b=function(b){a&&(a=!1,b.data.preventDefault(!0))};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",f,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}}(),function(){CKEDITOR.lang={languages:{af:1,ar:1,az:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1, -lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,oc:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,f,b){a&&CKEDITOR.lang.languages[a]||(a=this.detect(f,a));var c=this;f=function(){c[a].dir=c.rtl[a]?"rtl":"ltr";b(a,c[a])};this[a]?f():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+a+".js"),f,this)},detect:function(a,f){var b=this.languages;f=f||navigator.userLanguage||navigator.language|| -a;var c=f.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=c[1],c=c[2];b[e+"-"+c]?e=e+"-"+c:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}}(),CKEDITOR.scriptLoader=function(){var a={},f={};return{load:function(b,c,e,l){var k="string"==typeof b;k&&(b=[b]);e||(e=CKEDITOR);var d=b.length,h=[],m=[],g=function(a){c&&(k?c.call(e,a):c.call(e,h,m))};if(0===d)g(!0);else{var n=function(a,b){(b?h:m).push(a);0>=--d&&(l&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"), -g(b))},r=function(b,c){a[b]=1;var d=f[b];delete f[b];for(var e=0;e<d.length;e++)d[e](b,c)},q=function(b){if(a[b])n(b,!0);else{var d=f[b]||(f[b]=[]);d.push(n);if(!(1<d.length)){var e=new CKEDITOR.dom.element("script");e.setAttributes({type:"text/javascript",src:b});c&&(CKEDITOR.env.ie&&(8>=CKEDITOR.env.version||CKEDITOR.env.ie9Compat)?e.$.onreadystatechange=function(){if("loaded"==e.$.readyState||"complete"==e.$.readyState)e.$.onreadystatechange=null,r(b,!0)}:(e.$.onload=function(){setTimeout(function(){r(b, -!0)},0)},e.$.onerror=function(){r(b,!1)}));e.appendTo(CKEDITOR.document.getHead())}}};l&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var y=0;y<d;y++)q(b[y])}},queue:function(){function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(e,f){var k=this;c.push({scriptUrl:e,callback:function(){f&&f.apply(this,arguments);c.shift();a.call(k)}});1==c.length&&a.call(this)}}()}}(),CKEDITOR.resourceManager=function(a,f){this.basePath=a;this.fileName= -f;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}},CKEDITOR.resourceManager.prototype={add:function(a,f){if(this.registered[a])throw Error('[CKEDITOR.resourceManager.add] The resource name "'+a+'" is already registered.');var b=this.registered[a]=f||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+"Ready",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var f=this.externals[a];return CKEDITOR.getUrl(f&& -f.dir||this.basePath+a+"/")},getFilePath:function(a){var f=this.externals[a];return CKEDITOR.getUrl(this.getPath(a)+(f?f.file:this.fileName+".js"))},addExternal:function(a,f,b){a=a.split(",");for(var c=0;c<a.length;c++){var e=a[c];b||(f=f.replace(/[^\/]+$/,function(a){b=a;return""}));this.externals[e]={dir:f,file:b||this.fileName+".js"}}},load:function(a,f,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var c=this.loaded,e=this.registered,l=[],k={},d={},h=0;h<a.length;h++){var m=a[h];if(m)if(c[m]|| -e[m])d[m]=this.get(m);else{var g=this.getFilePath(m);l.push(g);g in k||(k[g]=[]);k[g].push(m)}}CKEDITOR.scriptLoader.load(l,function(a,e){if(e.length)throw Error('[CKEDITOR.resourceManager.load] Resource name "'+k[e[0]].join(",")+'" was not found at "'+e[0]+'".');for(var g=0;g<a.length;g++)for(var h=k[a[g]],m=0;m<h.length;m++){var l=h[m];d[l]=this.get(l);c[l]=1}f.call(b,d)},this)}},CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin"),CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load, -function(a){var f={};return function(b,c,e){var l={},k=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(l,a);var b=[],d;for(d in a){var n=a[d],r=n&&n.requires;if(!f[d]){if(n.icons)for(var q=n.icons.split(","),y=q.length;y--;)CKEDITOR.skin.addIcon(q[y],n.path+"icons/"+(CKEDITOR.env.hidpi&&n.hidpi?"hidpi/":"")+q[y]+".png");f[d]=1}if(r)for(r.split&&(r=r.split(",")),n=0;n<r.length;n++)l[r[n]]||b.push(r[n])}if(b.length)k.call(this,b);else{for(d in l)n=l[d],n.onLoad&&!n.onLoad._called&&(!1=== -n.onLoad()&&delete l[d],n.onLoad._called=1);c&&c.call(e||window,l)}},this)};k.call(this,b)}}),CKEDITOR.plugins.setLang=function(a,f,b){var c=this.get(a);a=c.langEntries||(c.langEntries={});c=c.lang||(c.lang=[]);c.split&&(c=c.split(","));-1==CKEDITOR.tools.indexOf(c,f)&&c.push(f);a[f]=b},CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this},CKEDITOR.ui.prototype={add:function(a,f,b){b.name=a.toLowerCase();var c=this.items[a]={type:f, -command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(c,b)},get:function(a){return this.instances[a]},create:function(a){var f=this.items[a],b=f&&this._.handlers[f.type],c=f&&f.command&&this.editor.getCommand(f.command),b=b&&b.create.apply(this,f.args);this.instances[a]=b;c&&c.uiItems.push(b);b&&!b.type&&(b.type=f.type);return b},addHandler:function(a,f){this._.handlers[a]=f},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+ -"_"+a}},CKEDITOR.event.implementOn(CKEDITOR.ui),function(){function a(a,e,g){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(void 0!==e){if(!(e instanceof CKEDITOR.dom.element))throw Error("Expect element of type CKEDITOR.dom.element.");if(!g)throw Error("One of the element modes must be specified.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&g==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!b(e,g))throw Error('The specified element mode is not supported on element: "'+ -e.getName()+'".');this.element=e;this.elementMode=g;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(e.getId()||e.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||f();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this); -this.on("readOnly",c);this.on("selectionChange",function(a){l(this,a.data.path)});this.on("activeFilterChange",function(){l(this,this.elementPath(),!0)});this.on("mode",c);this.on("instanceReady",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){"destroyed"!==this.status?d(this,a):CKEDITOR.warn("editor-incorrect-destroy")},0,this)}function f(){do var a="editor"+ ++y;while(CKEDITOR.instances[a]);return a} -function b(a,b){return b==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd.$editable)||a.is("textarea"):b==CKEDITOR.ELEMENT_MODE_REPLACE?!a.is(CKEDITOR.dtd.$nonBodyContent):1}function c(){var a=this.commands,b;for(b in a)e(this,a[b])}function e(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"disable":b.modes[a.mode]?"enable":"disable"]()}function l(a,b,c){if(b){var d,e,g=a.commands;for(e in g)d=g[e],(c||d.contextSensitive)&&d.refresh(a,b)}}function k(a){var b=a.config.customConfig;if(!b)return!1; -var b=CKEDITOR.getUrl(b),c=w[b]||(w[b]={});c.fn?(c.fn.call(a,a.config),CKEDITOR.getUrl(a.config.customConfig)!=b&&k(a)||a.fireOnce("customConfigLoaded")):CKEDITOR.scriptLoader.queue(b,function(){c.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};k(a)});return!0}function d(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,!0);delete a.config.on}c=a.config;a.readOnly=c.readOnly?!0:a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE? -a.element.is("textarea")?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):!1;a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):!1;a.tabIndex=c.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:c.enterMode; -a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:c.shiftEnterMode;c.skin&&(CKEDITOR.skinName=c.skin);a.fireOnce("configLoaded");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);h(a)});b&&null!=b.customConfig&&(a.config.customConfig=b.customConfig);k(a)||a.fireOnce("customConfigLoaded")}function h(a){CKEDITOR.skin.loadPart("editor",function(){m(a)})}function m(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b, -c){var d=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);a.title="string"==typeof d||!1===d?d:[a.lang.editor,a.name].join(", ");a.config.contentsLangDirection||(a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir);a.fire("langLoaded");g(a)})}function g(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fire("stylesSet",{styles:b})},null,null,1);n(a)})}function n(a){var b=a.config,c=b.plugins,d=b.extraPlugins,e= -b.removePlugins;if(d)var g=new RegExp("(?:^|,)(?:"+d.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(g,""),c=c+(","+d);if(e)var f=new RegExp("(?:^|,)(?:"+e.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(f,"");CKEDITOR.env.air&&(c+=",adobeair");CKEDITOR.plugins.load(c.split(","),function(c){var d=[],e=[],g=[];a.plugins=c;for(var h in c){var m=c[h],l=m.lang,t=null,k=m.requires,C;CKEDITOR.tools.isArray(k)&&(k=k.join(","));if(k&&(C=k.match(f)))for(;k=C.pop();)CKEDITOR.error("editor-plugin-required", -{plugin:k.replace(",",""),requiredBy:h});l&&!a.lang[h]&&(l.split&&(l=l.split(",")),0<=CKEDITOR.tools.indexOf(l,a.langCode)?t=a.langCode:(t=a.langCode.replace(/-.*/,""),t=t!=a.langCode&&0<=CKEDITOR.tools.indexOf(l,t)?t:0<=CKEDITOR.tools.indexOf(l,"en")?"en":l[0]),m.langEntries&&m.langEntries[t]?(a.lang[h]=m.langEntries[t],t=null):g.push(CKEDITOR.getUrl(m.path+"lang/"+t+".js")));e.push(t);d.push(m)}CKEDITOR.scriptLoader.load(g,function(){for(var c=["beforeInit","init","afterInit"],g=0;g<c.length;g++)for(var f= -0;f<d.length;f++){var h=d[f];0===g&&e[f]&&h.lang&&h.langEntries&&(a.lang[h.name]=h.langEntries[e[f]]);if(h[c[g]])h[c[g]](a)}a.fireOnce("pluginsLoaded");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(f=0;f<a.config.blockedKeystrokes.length;f++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[f]]=1;a.status="loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded",null,a)})})}function r(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData(); -this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is("textarea")?a.setValue(b):a.setHtml(b);return!0}return!1}function q(a,b){function c(a){var b=a.startContainer,d=a.endContainer;return b.is&&(b.is("tr")||b.is("td")&&b.equals(d)&&a.endOffset===b.getChildCount())?!0:!1}function d(a){var b=a.startContainer;return b.is("tr")?a.cloneContents():b.clone(!0)}for(var e=new CKEDITOR.dom.documentFragment,g,f,h,m=0;m<a.length;m++){var l=a[m],k=l.startContainer.getAscendant("tr",!0);c(l)?(g|| -(g=k.getAscendant("table").clone(),g.append(k.getAscendant({thead:1,tbody:1,tfoot:1}).clone()),e.append(g),g=g.findOne("thead, tbody, tfoot")),f&&f.equals(k)||(f=k,h=k.clone(),g.append(h)),h.append(d(l))):e.append(l.cloneContents())}return g?e:b.getHtmlFromRange(a[0])}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var y=0,w={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var c=new CKEDITOR.command(this,b);this.mode&&e(this,c);return this.commands[a]= -c},_attachToForm:function(){function a(b){c.updateElement();c._.required&&!d.getValue()&&!1===c.fire("required")&&b.data.preventDefault()}function b(a){return!!(a&&a.call&&a.apply)}var c=this,d=c.element,e=new CKEDITOR.dom.element(d.$.form);d.is("textarea")&&e&&(e.on("submit",a),b(e.$.submit)&&(e.$.submit=CKEDITOR.tools.override(e.$.submit,function(b){return function(){a();b.apply?b.apply(this):b()}})),c.on("destroy",function(){e.removeListener("submit",a)}))},destroy:function(a){this.fire("beforeDestroy"); -!a&&r.call(this);this.editable(null);this.filter&&(this.filter.destroy(),delete this.filter);delete this.activeFilter;this.status="destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed",null,this)},elementPath:function(a){if(!a){a=this.getSelection();if(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a, -b){var c=this.getCommand(a),d={name:a,commandData:b||{},command:c};return c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&!1!==this.fire("beforeCommandExec",d)&&(d.returnValue=c.exec(d.commandData),!c.async&&!1!==this.fire("afterCommandExec",d))?d.returnValue:!1},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var b=this._.data;"string"!=typeof b&&(b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is("textarea")?b.getValue():b.getHtml(): -"");b={dataValue:b};!a&&this.fire("getData",b);return b.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");"string"!=typeof a&&(a=(a=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.is("textarea")?a.getValue():a.getHtml():"");return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,b,c){var d=!0,e=b;b&&"object"==typeof b&&(c=b.internal,e=b.callback,d=!b.noSnapshot);!c&&d&&this.fire("saveSnapshot");if(e||!c)this.once("dataReady",function(a){!c&& -d&&this.fire("saveSnapshot");e&&e.call(a.editor)});a={dataValue:a};!c&&this.fire("setData",a);this._.data=a.dataValue;!c&&this.fire("afterSetData",a)},setReadOnly:function(a){a=null==a||a;this.readOnly!=a&&(this.readOnly=a,this.keystrokeHandler.blockedKeystrokes[8]=+a,this.editable().setReadOnly(a),this.fire("readOnly"))},insertHtml:function(a,b,c){this.fire("insertHtml",{dataValue:a,mode:b,range:c})},insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement", -a)},getSelectedHtml:function(a){var b=this.editable(),c=this.getSelection(),c=c&&c.getRanges();if(!b||!c||0===c.length)return null;b=q(c,b);return a?b.getHtml():b},extractSelectedHtml:function(a,b){var c=this.editable(),d=this.getSelection().getRanges(),e=new CKEDITOR.dom.documentFragment,g;if(!c||0===d.length)return null;for(g=0;g<d.length;g++)e.append(c.extractHtmlFromRange(d[g],b));b||this.getSelection().selectRanges([d[0]]);return a?e.getHtml():e},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return"ready"== -this.status&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return r.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c,d,e=b.length;e--;)c=b[e],d=0,CKEDITOR.tools.isArray(c)&&(d=c[1],c=c[0]),d?a[c]=d:delete a[c]},getCommandKeystroke:function(a){if(a="string"===typeof a?this.getCommand(a):a){var b=CKEDITOR.tools.object.findKey(this.commands, -a),c=this.keystrokeHandler.keystrokes,d;if(a.fakeKeystroke)return a.fakeKeystroke;for(d in c)if(c.hasOwnProperty(d)&&c[d]==b)return d}return null},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){a||(a=this.filter);this.activeFilter!==a&&(this.activeFilter=a,this.fire("activeFilterChange"),a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,!0)))},setActiveEnterMode:function(a, -b){a=a?this.blockless?CKEDITOR.ENTER_BR:a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b)this.activeEnterMode=a,this.activeShiftEnterMode=b,this.fire("activeEnterModeChange")},showNotification:function(a){alert(a)}})}(),CKEDITOR.ELEMENT_MODE_NONE=0,CKEDITOR.ELEMENT_MODE_REPLACE=1,CKEDITOR.ELEMENT_MODE_APPENDTO=2,CKEDITOR.ELEMENT_MODE_INLINE=3,CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}}, -function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,f={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,e,l=0,k;c=this._.htmlPartsRegex.exec(b);){e=c.index;if(e>l)if(l=b.substring(l,e),k)k.push(l);else this.onText(l); -l=this._.htmlPartsRegex.lastIndex;if(e=c[1])if(e=e.toLowerCase(),k&&CKEDITOR.dtd.$cdata[e]&&(this.onCDATA(k.join("")),k=null),!k){this.onTagClose(e);continue}if(k)k.push(c[0]);else if(e=c[3]){if(e=e.toLowerCase(),!/="/.test(e)){var d={},h,m=c[4];c=!!c[5];if(m)for(;h=a.exec(m);){var g=h[1].toLowerCase();h=h[2]||h[3]||h[4]||"";d[g]=!h&&f[g]?g:CKEDITOR.tools.htmlDecodeAttr(h)}this.onTagOpen(e,d,c);!k&&CKEDITOR.dtd.$cdata[e]&&(k=[])}}else if(e=c[2])this.onComment(e)}if(b.length>l)this.onText(b.substring(l, -b.length))}}}(),CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("\x3c",a)},openTagClose:function(a,f){f?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(a,f){"string"==typeof f&&(f=CKEDITOR.tools.htmlEncodeAttr(f));this._.output.push(" ",a,'\x3d"',f,'"')},closeTag:function(a){this._.output.push("\x3c/",a,"\x3e")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("\x3c!--", -a,"--\x3e")},write:function(a){this._.output.push(a)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(a){var f=this._.output.join("");a&&this.reset();return f}}}),"use strict",function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,f=CKEDITOR.tools.indexOf(a,this),b=this.previous,c=this.next;b&&(b.next=c);c&&(c.previous=b);a.splice(f,1);this.parent=null},replaceWith:function(a){var f=this.parent.children, -b=CKEDITOR.tools.indexOf(f,this),c=a.previous=this.previous,e=a.next=this.next;c&&(c.next=a);e&&(e.previous=a);f[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var f=a.parent.children,b=CKEDITOR.tools.indexOf(f,a),c=a.next;f.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;c&&(c.previous=this);this.parent=a.parent},insertBefore:function(a){var f=a.parent.children,b=CKEDITOR.tools.indexOf(f,a);f.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next= -this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var f="function"==typeof a?a:"string"==typeof a?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&&b.type==CKEDITOR.NODE_ELEMENT;){if(f(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}}(),"use strict",CKEDITOR.htmlParser.comment= -function(a){this.value=a;this._={isBlockLike:!1}},CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,f){var b=this.value;if(!(b=a.onComment(f,b,this)))return this.remove(),!1;if("string"!=typeof b)return this.replaceWith(b),!1;this.value=b;return!0},writeHtml:function(a,f){f&&this.filter(f);a.comment(this.value)}}),"use strict",function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype= -CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,f){if(!(this.value=a.onText(f,this.value,this)))return this.remove(),!1},writeHtml:function(a,f){f&&this.filter(f);a.text(this.value)}})}(),"use strict",function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})}(),"use strict", -CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}},function(){function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var f=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),e={ul:"li", -ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=function(l,k,d){function h(a){var b;if(0<p.length)for(var c=0;c<p.length;c++){var d=p[c],e=d.name,g=CKEDITOR.dtd[e],f=u.name&&CKEDITOR.dtd[u.name];f&&!f[e]||a&&g&&!g[a]&&CKEDITOR.dtd[a]?e==u.name&&(n(u,u.parent,1),c--):(b||(m(),b=1),d=d.clone(),d.parent=u,u=d,p.splice(c,1),c--)}}function m(){for(;v.length;)n(v.shift(),u)}function g(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var b= -a.children.length,c=a.children[b-1],d;c&&c.type==CKEDITOR.NODE_TEXT&&((d=CKEDITOR.tools.rtrim(c.value))?c.value=d:a.children.length=b-1)}}function n(b,c,e){c=c||u||w;var f=u;void 0===b.previous&&(r(c,b)&&(u=c,y.onTagOpen(d,{}),b.returnPoint=c=u),g(b),a(b)&&!b.children.length||c.add(b),"pre"==b.name&&(t=!1),"textarea"==b.name&&(z=!1));b.returnPoint?(u=b.returnPoint,delete b.returnPoint):u=e?c:f}function r(a,b){if((a==w||"body"==a.name)&&d&&(!a.name||CKEDITOR.dtd[a.name][d])){var c,e;return(c=b.attributes&& -(e=b.attributes["data-cke-real-element-type"])?e:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function q(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||"dt"==a&&"dd"==b||"dd"==a&&"dt"==b:!1}var y=new CKEDITOR.htmlParser,w=k instanceof CKEDITOR.htmlParser.element?k:"string"==typeof k?new CKEDITOR.htmlParser.element(k):new CKEDITOR.htmlParser.fragment,p=[],v=[],u=w,z="textarea"==w.name,t="pre"==w.name;y.onTagOpen= -function(d,e,g,l){e=new CKEDITOR.htmlParser.element(d,e);e.isUnknown&&g&&(e.isEmpty=!0);e.isOptionalClose=l;if(a(e))p.push(e);else{if("pre"==d)t=!0;else{if("br"==d&&t){u.add(new CKEDITOR.htmlParser.text("\n"));return}"textarea"==d&&(z=!0)}if("br"==d)v.push(e);else{for(;!(l=(g=u.name)?CKEDITOR.dtd[g]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c,e.isUnknown||u.isUnknown||l[d]);)if(u.isOptionalClose)y.onTagClose(g);else if(d in b&&g in b)g=u.children,(g=g[g.length-1])&&"li"==g.name||n(g=new CKEDITOR.htmlParser.element("li"), -u),!e.returnPoint&&(e.returnPoint=u),u=g;else if(d in CKEDITOR.dtd.$listItem&&!q(d,g))y.onTagOpen("li"==d?"ul":"dl",{},0,1);else if(g in f&&!q(d,g))!e.returnPoint&&(e.returnPoint=u),u=u.parent;else if(g in CKEDITOR.dtd.$inline&&p.unshift(u),u.parent)n(u,u.parent,1);else{e.isOrphan=1;break}h(d);m();e.parent=u;e.isEmpty?n(e):u=e}}};y.onTagClose=function(a){for(var b=p.length-1;0<=b;b--)if(a==p[b].name){p.splice(b,1);return}for(var c=[],e=[],g=u;g!=w&&g.name!=a;)g._.isBlockLike||e.unshift(g),c.push(g), -g=g.returnPoint||g.parent;if(g!=w){for(b=0;b<c.length;b++){var f=c[b];n(f,f.parent)}u=g;g._.isBlockLike&&m();n(g,g.parent);g==u&&(u=u.parent);p=p.concat(e)}"body"==a&&(d=!1)};y.onText=function(a){if(!(u._.hasInlineStarted&&!v.length||t||z)&&(a=CKEDITOR.tools.ltrim(a),0===a.length))return;var b=u.name,g=b?CKEDITOR.dtd[b]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!z&&!g["#"]&&b in f)y.onTagOpen(e[b]||""),y.onText(a);else{m();h();t||z||(a=a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));a= -new CKEDITOR.htmlParser.text(a);if(r(u,a))this.onTagOpen(d,{},0,1);u.add(a)}};y.onCDATA=function(a){u.add(new CKEDITOR.htmlParser.cdata(a))};y.onComment=function(a){m();h();u.add(new CKEDITOR.htmlParser.comment(a))};y.parse(l);for(m();u!=w;)n(u,u.parent,1);g(w);return w};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=0<b?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT&&(c.value=CKEDITOR.tools.rtrim(c.value), -0===c.value.length)){this.children.pop();this.add(a);return}c.next=a}a.previous=c;a.parent=this;this.children.splice(b,0,a);this._.hasInlineStarted||(this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike)},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,!1,b)},filterChildren:function(a,b,c){if(this.childrenFilteredBy!=a.id){c=this.getFilterContext(c);if(b&&!this.parent)a.onRoot(c,this);this.childrenFilteredBy=a.id; -for(b=0;b<this.children.length;b++)!1===this.children[b].filter(a,c)&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,c){var e=this.getFilterContext();if(c&&!this.parent&&b)b.onRoot(e,this);b&&this.filterChildren(b,!1,e);b=0;c=this.children;for(e=c.length;b<e;b++)c[b].writeHtml(a)},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var e=a(this);if(!1!==e){c=this.children;for(var f=0;f<c.length;f++)e=c[f],e.type==CKEDITOR.NODE_ELEMENT?e.forEach(a, -b):b&&e.type!=b||a(e)}},getFilterContext:function(a){return a||{}}}}(),"use strict",function(){function a(){this.rules=[]}function f(b,c,e,f){var k,d;for(k in c)(d=b[k])||(d=b[k]=new a),d.add(c[k],e,f)}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)}, -proto:{addRules:function(a,c){var e;"number"==typeof c?e=c:c&&"priority"in c&&(e=c.priority);"number"!=typeof e&&(e=10);"object"!=typeof c&&(c={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,e,c);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,e,c);a.elements&&f(this.elementsRules,a.elements,e,c);a.attributes&&f(this.attributesRules,a.attributes,e,c);a.text&&this.textRules.add(a.text,e,c);a.comment&&this.commentRules.add(a.comment,e,c);a.root&&this.rootRules.add(a.root, -e,c)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a,c)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c,e){return this.textRules.exec(a,c,e)},onComment:function(a,c,e){return this.commentRules.exec(a,c,e)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var e=[this.elementsRules["^"],this.elementsRules[c.name],this.elementsRules.$],f,k=0;3>k;k++)if(f=e[k]){f= -f.exec(a,c,this);if(!1===f)return null;if(f&&f!=c)return this.onNode(a,f);if(c.parent&&!c.name)break}return c},onNode:function(a,c){var e=c.type;return e==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):e==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):e==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,e,f){return(e=this.attributesRules[e])?e.exec(a,f,c,this):f}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype= -{add:function(a,c,e){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:e})},addMany:function(a,c,e){for(var f=[this.findIndex(c),0],k=0,d=a.length;k<d;k++)f.push({value:a[k],priority:c,options:e});this.rules.splice.apply(this.rules,f)},findIndex:function(a){for(var c=this.rules,e=c.length-1;0<=e&&a<c[e].priority;)e--;return e+1},exec:function(a,c){var e=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,f=Array.prototype.slice.call(arguments,1),k=this.rules, -d=k.length,h,m,g,n;for(n=0;n<d;n++)if(e&&(h=c.type,m=c.name),g=k[n],!(a.nonEditable&&!g.options.applyToAll||a.nestedEditable&&g.options.excludeNestedEditable)){g=g.value.apply(null,f);if(!1===g||e&&g&&(g.name!=m||g.type!=h))return g;null!=g&&(f[0]=c=g)}return c},execOnName:function(a,c){for(var e=0,f=this.rules,k=f.length,d;c&&e<k;e++)d=f[e],a.nonEditable&&!d.options.applyToAll||a.nestedEditable&&d.options.excludeNestedEditable||(c=c.replace(d.value[0],d.value[1]));return c}}}(),function(){function a(a, -d){function g(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function f(a,d){return function(e){if(e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var f=[],m=b(e),t,k;if(m)for(h(m,1)&&f.push(m);m;)l(m)&&(t=c(m))&&h(t)&&((k=c(t))&&!l(k)?f.push(t):(g(C).insertAfter(t),t.remove())),m=m.previous;for(m=0;m<f.length;m++)f[m].remove();if(f=!a||!1!==("function"==typeof d?d(e):d))C||CKEDITOR.env.needsBrFiller||e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT? -C||CKEDITOR.env.needsBrFiller||!(7<document.documentMode||e.name in CKEDITOR.dtd.tr||e.name in CKEDITOR.dtd.$listItem)?(f=b(e),f=!f||"form"==e.name&&"input"==f.name):f=!1:f=!1;f&&e.add(g(a))}}}function h(a,b){if((!C||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&"br"==a.name&&!a.attributes["data-cke-eol"])return!0;var c;return a.type==CKEDITOR.NODE_TEXT&&(c=a.value.match(p))&&(c.index&&((new CKEDITOR.htmlParser.text(a.value.substring(0,c.index))).insertBefore(a),a.value=c[0]),!CKEDITOR.env.needsBrFiller&& -C&&(!b||a.parent.name in J)||!C&&((c=a.previous)&&"br"==c.name||!c||l(c)))?!0:!1}var m={elements:{}},C="html"==d,J=CKEDITOR.tools.extend({},t),n;for(n in J)"#"in u[n]||delete J[n];for(n in J)m.elements[n]=f(C,a.config.fillEmptyBlocks);m.root=f(C,!1);m.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var d=b.attributes;if("data-cke-bogus"in d||"data-cke-eol"in d)delete d["data-cke-bogus"];else{for(d=b.next;d&&e(d);)d=d.next;var f=c(b);!d&&l(b.parent)?k(b.parent, -g(a)):l(d)&&f&&!l(f)&&g(a).insertBefore(d)}}}}(C);return m}function f(a,b){return a!=CKEDITOR.ENTER_BR&&!1!==b?a==CKEDITOR.ENTER_DIV?"div":"p":!1}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function c(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function l(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in -t||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function k(a,b){var c=a.children[a.children.length-1];a.children.push(b);b.parent=a;c&&(c.next=b,b.previous=c)}function d(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function h(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}function m(a){return a.replace(E,function(a,b,c){return"\x3c"+b+c.replace(H, -function(a,b){return F.test(b)&&-1==c.indexOf("data-cke-saved-"+b)?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+"\x3e"})}function g(a,b){return a.replace(b,function(a,b,c){0===a.indexOf("\x3ctextarea")&&(a=b+q(c).replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function n(a){return a.replace(L,function(a,b){return decodeURIComponent(b)})}function r(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, -function(a){return"\x3c!--"+v+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function q(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)})}function y(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function w(a,b){var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore= -{id:1}),g=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,d=[/<script[\s\S]*?(<\/script>|$)/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(d);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(c.push(a)-1)+"--\x3e"});for(var f=0;f<d.length;f++)a=a.replace(d[f],function(a){a=a.replace(g,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:"\x3c!--{cke_temp}"+(c.push(a)-1)+"--\x3e"});a=a.replace(g,function(a,b,d){return"\x3c!--"+v+(b?"{C}": -"")+encodeURIComponent(c[d]).replace(/--/g,"%2D%2D")+"--\x3e"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,e){return"\x3c"+c+d+"\x3e"+y(q(e),b)+"\x3c/"+c+"\x3e"})}CKEDITOR.htmlDataProcessor=function(b){var c, -d,e=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(A);c.addRules(D,{applyToAll:!0});c.addRules(a(b,"data"),{applyToAll:!0});d.addRules(x);d.addRules(B,{applyToAll:!0});d.addRules(a(b,"html"),{applyToAll:!0});b.on("toHtml",function(a){a=a.data;var c=a.dataValue,d,c=w(c,b),c=g(c,G),c=m(c),c=g(c,I),c=c.replace(J,"$1cke:$2"),c=c.replace(T,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), -c=c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");d=a.context||b.editable().getName();var e;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==d&&(d="div",c="\x3cpre\x3e"+c+"\x3c/pre\x3e",e=1);d=b.document.createElement(d);d.setHtml("a"+c);c=d.getHtml().substr(1);c=c.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");e&&(c=c.replace(/^<pre>|<\/pre>$/gi,""));c=c.replace(C,"$1$2");c=n(c);c=q(c);d=!1===a.fixForBody?!1: -f(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,d);d&&(e=c,!e.children.length&&CKEDITOR.dtd[e.name][d]&&(d=new CKEDITOR.htmlParser.element(d),e.add(d)));a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,!0,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(e.dataFilter,!0)},null,null,10);b.on("toHtml",function(a){a=a.data;var b=a.dataValue, -c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(!0);a.dataValue=r(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^<br *\/?>/i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,f(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(e.htmlFilter,!0)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue, -!1,!0)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=e.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(!0);c=q(c);c=y(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,g,f,h,m;b&&"object"==typeof b?(g=b.context,c=b.fixForBody,d=b.dontFilter,f=b.filter,h=b.enterMode,m=b.protectedWhitespaces):g=b;g||null===g||(g=e.editable().getName());return e.fire("toHtml",{dataValue:a,context:g,fixForBody:c,dontFilter:d, -filter:f||e.filter,enterMode:h||e.enterMode,protectedWhitespaces:m}).dataValue},toDataFormat:function(a,b){var c,d,e;b&&(c=b.context,d=b.filter,e=b.enterMode);c||null===c||(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var p=/(?: |\xa0)$/,v="{cke_protected}",u=CKEDITOR.dtd,z="caption colgroup col thead tfoot tbody".split(" "),t=CKEDITOR.tools.extend({},u.$blockLimit, -u.$block),A={elements:{input:d,textarea:d}},D={attributeNames:[[/^on/,"data-cke-pa-on"],[/^srcdoc/,"data-cke-pa-srcdoc"],[/^data-cke-expando$/,""]],elements:{iframe:function(a){if(a.attributes&&a.attributes.src){var b=a.attributes.src.toLowerCase().replace(/[^a-z]/gi,"");if(0===b.indexOf("javascript")||0===b.indexOf("data"))a.attributes["data-cke-pa-src"]=a.attributes.src,delete a.attributes.src}}}},x={elements:{embed:function(a){var b=a.parent;if(b&&"object"==b.name){var c=b.attributes.width,b=b.attributes.height; -c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},a:function(a){var b=a.attributes;if(!(a.children.length||b.name||b.id||a.attributes["data-cke-saved-name"]))return!1}}},B={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return!1;for(var c=["name","href","src"],d,e=0;e<c.length;e++)d="data-cke-saved-"+c[e],d in b&&delete b[c[e]]}return a}, -table:function(a){a.children.slice(0).sort(function(a,b){var c,d;a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type&&(c=CKEDITOR.tools.indexOf(z,a.name),d=CKEDITOR.tools.indexOf(z,b.name));-1<c&&-1<d&&c!=d||(c=a.parent?a.getIndex():-1,d=b.parent?b.getIndex():-1);return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"==a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck; -delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var b=a.children[0];!b&&k(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""},input:h,textarea:h},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||!1}}};CKEDITOR.env.ie&&(B.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g, -function(a){return a.toLowerCase()})});var E=/<(a|area|img|input|source)\b([^>]*)>/gi,H=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,F=/^(href|src|name)$/i,I=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,G=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,L=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,J=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,C=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,T=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi}(), -"use strict",CKEDITOR.htmlParser.element=function(a,f){this.name=a;this.attributes=f||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!!(CKEDITOR.dtd.$nonBodyContent[b]||CKEDITOR.dtd.$block[b]||CKEDITOR.dtd.$listItem[b]||CKEDITOR.dtd.$tableContent[b]||CKEDITOR.dtd.$nonEditable[b]||"br"==b);this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}},CKEDITOR.htmlParser.cssStyle=function(a){var f={};((a instanceof -CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){"font-family"==c&&(e=e.replace(/["']/g,""));f[c.toLowerCase()]=e});return{rules:f,populate:function(a){var c=this.toString();c&&(a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c)},toString:function(){var a=[],c;for(c in f)f[c]&&a.push(c,":",f[c],";");return a.join("")}}},function(){function a(a){return function(b){return b.type== -CKEDITOR.NODE_ELEMENT&&("string"==typeof a?b.name==a:b.name in a)}}var f=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var f=this,k,d;b=f.getFilterContext(b);if(b.off)return!0;if(!f.parent)a.onRoot(b,f);for(;;){k=f.name;if(!(d= -a.onElementName(b,k)))return this.remove(),!1;f.name=d;if(!(f=a.onElement(b,f)))return this.remove(),!1;if(f!==this)return this.replaceWith(f),!1;if(f.name==k)break;if(f.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(f),!1;if(!f.name)return this.replaceWithChildren(),!1}k=f.attributes;var h,m;for(h in k){for(d=k[h];;)if(m=a.onAttributeName(b,h))if(m!=h)delete k[h],h=m;else break;else{delete k[h];break}m&&(!1===(d=a.onAttribute(b,f,m,d))?delete k[m]:k[m]=d)}f.isEmpty||this.filterChildren(a,!1, -b);return!0},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var l=this.name,k=[],d=this.attributes,h,m;a.openTag(l,d);for(h in d)k.push([h,d[h]]);a.sortAttributes&&k.sort(f);h=0;for(m=k.length;h<m;h++)d=k[h],a.attribute(d[0],d[1]);a.openTagClose(l,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(l)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a=this.children,b=a.length;b;)a[--b].insertAfter(this);this.remove()},forEach:b.forEach, -getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;"function"!=typeof b&&(b=a(b));for(var e=0,f=this.children.length;e<f;++e)if(b(this.children[e]))return this.children[e];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children;for(var b=0,f=a.length;b<f;++b)a[b].parent=this},getOuterHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter; -this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),f=this.clone(),k=0;k<b.length;++k)b[k].parent=f;f.children=b;b[0]&&(b[0].previous=null);0<a&&(this.children[a-1].next=null);this.parent.add(f,this.getIndex()+1);return f},find:function(a,b){void 0===b&&(b=!1);var f=[],k;for(k=0;k<this.children.length;k++){var d=this.children[k];"function"==typeof a&&a(d)?f.push(d):"string"==typeof a&&d.name===a&&f.push(d);b&&d.find&&(f=f.concat(d.find(a, -b)))}return f},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes["class"]||"";this.attributes["class"]=b+(b?" ":"")+a}},removeClass:function(a){var b=this.attributes["class"];b&&((b=CKEDITOR.tools.trim(b.replace(new RegExp("(?:\\s+|^)"+a+"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"])},hasClass:function(a){var b=this.attributes["class"];return b?(new RegExp("(?:^|\\s)"+a+"(?\x3d\\s|$)")).test(b):!1},getFilterContext:function(a){var b=[];a||(a={off:!1, -nonEditable:!1,nestedEditable:!1});a.off||"off"!=this.attributes["data-cke-processor"]||b.push("off",!0);a.nonEditable||"false"!=this.attributes.contenteditable?a.nonEditable&&!a.nestedEditable&&"true"==this.attributes.contenteditable&&b.push("nestedEditable",!0):b.push("nonEditable",!0);if(b.length){a=CKEDITOR.tools.copy(a);for(var f=0;f<b.length;f+=2)a[b[f]]=b[f+1]}return a}},!0)}(),function(){var a=/{([^}]+)}/g;CKEDITOR.template=function(a){this.source=String(a)};CKEDITOR.template.prototype.output= -function(f,b){var c=this.source.replace(a,function(a,b){return void 0!==f[b]?f[b]:a});return b?b.push(c):c}}(),delete CKEDITOR.loadFullCore,CKEDITOR.instances={},CKEDITOR.document=new CKEDITOR.dom.document(document),CKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on("focus",function(){CKEDITOR.currentInstance!=a&&(CKEDITOR.currentInstance=a,CKEDITOR.fire("currentInstance"))});a.on("blur",function(){CKEDITOR.currentInstance==a&&(CKEDITOR.currentInstance=null,CKEDITOR.fire("currentInstance"))}); -CKEDITOR.fire("instance",null,a)},CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]},function(){var a={};CKEDITOR.addTemplate=function(f,b){var c=a[f];if(c)return c;c={name:f,source:b};CKEDITOR.fire("template",c);return a[f]=new CKEDITOR.template(c.source)};CKEDITOR.getTemplate=function(f){return a[f]}}(),function(){var a=[];CKEDITOR.addCss=function(f){a.push(f)};CKEDITOR.getCss=function(){return a.join("\n")}}(),CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&& -CKEDITOR.fire("reset")}),CKEDITOR.TRISTATE_ON=1,CKEDITOR.TRISTATE_OFF=2,CKEDITOR.TRISTATE_DISABLED=0,function(){CKEDITOR.inline=function(a,f){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var b=new CKEDITOR.editor(f,a,CKEDITOR.ELEMENT_MODE_INLINE),c=a.is("textarea")?a:null;c?(b.setData(c.getValue(),null,!0),a=CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"'+ -!!b.readOnly+'" class\x3d"cke_textarea_inline"\x3e'+c.getValue()+"\x3c/div\x3e",CKEDITOR.document),a.insertAfter(c),c.hide(),c.$.form&&b._attachToForm()):b.setData(a.getHtml(),null,!0);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.ui.contentsElement=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){c&&(b.container.clearCustomData(), -b.container.remove(),c.show());b.element.clearCustomData();delete b.element});return b};CKEDITOR.inlineAll=function(){var a,f,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),e=0,l=c.count();e<l;e++)a=c.getItem(e),"true"==a.getAttribute("contenteditable")&&(f={element:a,config:{}},!1!==CKEDITOR.fire("inline",f)&&CKEDITOR.inline(a,f.config))};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})}(),CKEDITOR.replaceClass="ckeditor",function(){function a(a, -e,l,k){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var d=new CKEDITOR.editor(e,a,k);k==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.setStyle("visibility","hidden"),d._.required=a.hasAttribute("required"),a.removeAttribute("required"));l&&d.setData(l,null,!0);d.on("loaded",function(){b(d);k==CKEDITOR.ELEMENT_MODE_REPLACE&&d.config.autoUpdateElement&&a.$.form&&d._attachToForm(); -d.setMode(d.config.startupMode,function(){d.resetDirty();d.status="ready";d.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,d)})});d.on("destroy",f);return d}function f(){var a=this.container,b=this.element;a&&(a.clearCustomData(),a.remove());b&&(b.clearCustomData(),this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(b.show(),this._.required&&b.setAttribute("required","required")),delete this.element)}function b(a){var b=a.name,f=a.element,k=a.elementMode,d=a.fire("uiSpace",{space:"top", -html:""}).html,h=a.fire("uiSpace",{space:"bottom",html:""}).html,m=new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"'+(a.title?' aria-labelledby\x3d"cke_{name}_arialbl"':"")+"\x3e"+(a.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':"")+'\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'), -b=CKEDITOR.dom.element.createFromHtml(m.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.title,topHtml:d?'\x3cspan id\x3d"'+a.ui.spaceId("top")+'" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e'+d+"\x3c/span\x3e":"",contentId:a.ui.spaceId("contents"),bottomHtml:h?'\x3cspan id\x3d"'+a.ui.spaceId("bottom")+'" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e'+h+"\x3c/span\x3e":"",outerEl:CKEDITOR.env.ie?"span":"div"}));k==CKEDITOR.ELEMENT_MODE_REPLACE? -(f.hide(),b.insertAfter(f)):f.append(b);a.container=b;a.ui.contentsElement=a.ui.space("contents");d&&a.ui.space("top").unselectable();h&&a.ui.space("bottom").unselectable();f=a.config.width;k=a.config.height;f&&b.setStyle("width",CKEDITOR.tools.cssLength(f));k&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(k));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,e){return a(b,e,null,CKEDITOR.ELEMENT_MODE_REPLACE)}; -CKEDITOR.appendTo=function(b,e,f){return a(b,e,f,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b<a.length;b++){var f=null,k=a[b];if(k.name||k.id){if("string"==typeof arguments[0]){if(!(new RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)")).test(k.className))continue}else if("function"==typeof arguments[0]&&(f={},!1===arguments[0](k,f)))continue;this.replace(k,f)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes= -{}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var f=this,k=this._.modes;if(a!=f.mode&&k&&k[a]){f.fire("beforeSetMode",a);if(f.mode){var d=f.checkDirty(),k=f._.previousModeData,h,m=0;f.fire("beforeModeUnload");f.editable(0);f._.previousMode=f.mode;f._.previousModeData=h=f.getData(1);"source"==f.mode&&k==h&&(f.fire("lockSnapshot",{forceUpdate:!0}),m=1);f.ui.space("contents").setHtml("");f.mode=""}else f._.previousModeData=f.getData(1);this._.modes[a](function(){f.mode=a;void 0!==d&&!d&& -f.resetDirty();m?f.fire("unlockSnapshot"):"wysiwyg"==a&&f.fire("saveSnapshot");setTimeout(function(){f.fire("mode");b&&b.call(f)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,f,k){var d=this.container,h=this.ui.space("contents"),m=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement;k=k?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):d;k.setSize("width",a,!0);m&&(m.style.width="1%");var g=(k.$.offsetHeight||0)-(h.$.clientHeight|| -0),d=Math.max(b-(f?0:g),0);b=f?b+g:b;h.setStyle("height",d+"px");m&&(m.style.width="100%");this.fire("resize",{outerHeight:b,contentsHeight:d,outerWidth:a||k.getSize("width")})};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})}(),CKEDITOR.config.startupMode="wysiwyg",function(){function a(a){var b=a.editor,d=a.data.path,e=d.blockLimit,g=a.data.selection, -h=g.getRanges()[0],m;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(g=f(g,d))g.appendBogus(),m=CKEDITOR.env.ie;k(b,d.block,e)&&h.collapsed&&!h.getCommonAncestor().isReadOnly()&&(d=h.clone(),d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS),e=new CKEDITOR.dom.walker(d),e.guard=function(a){return!c(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()},!e.checkForward()||d.checkStartOfBlock()&&d.checkEndOfBlock())&&(b=h.fixBlock(!0,b.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p"),CKEDITOR.env.needsBrFiller|| -(b=b.getFirst(c))&&b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?: |\xa0)$/)&&b.remove(),m=1,a.cancel());m&&h.select()}function f(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d.getLast(c);if(!(!d||!d.isBlockBoundary()||e&&e.type==CKEDITOR.NODE_ELEMENT&&e.isBlockBoundary()||d.is("pre")||d.getBogus()))return d}function b(a){var b=a.data.getTarget();b.is("input")&&(b=b.getAttribute("type"),"submit"!=b&&"reset"!=b||a.data.preventDefault())}function c(a){return g(a)&& -n(a)}function e(a,b){return function(c){var d=c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget;(d=d&&d.nodeType==CKEDITOR.NODE_ELEMENT?new CKEDITOR.dom.element(d):null)&&(b.equals(d)||b.contains(d))||a.call(this,c)}}function l(a){function b(a){return function(b,e){e&&b.type==CKEDITOR.NODE_ELEMENT&&b.is(g)&&(d=b);if(!(e||!c(b)||a&&q(b)))return!1}}var d,e=a.getRanges()[0];a=a.root;var g={table:1,ul:1,ol:1,dl:1};if(e.startPath().contains(g)){var f=e.clone();f.collapse(1);f.setStartAt(a, -CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(f);a.guard=b();a.checkBackward();if(d)return f=e.clone(),f.collapse(),f.setEndAt(d,CKEDITOR.POSITION_AFTER_END),a=new CKEDITOR.dom.walker(f),a.guard=b(!0),d=!1,a.checkForward(),d}return null}function k(a,b,c){return!1!==a.config.autoParagraph&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&(a.editable().equals(c)&&!b||b&&"true"==b.getAttribute("contenteditable"))}function d(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config.autoParagraph? -a.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":!1}function h(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeout(function(){b.fire("saveSnapshot")},0)}function m(a,b,c){var d=a.getCommonAncestor(b);for(b=a=c?b:a;(a=a.getParent())&&!d.equals(a)&&1==a.getChildCount();)b=a;b.remove()}var g,n,r,q,y,w,p,v,u,z;CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||b);this.editor=a;this.status="unloaded";this.hasFocus=!1;this.setup()},proto:{focus:function(){var a; -if(CKEDITOR.env.webkit&&!this.hasFocus&&(a=this.editor._.previousActive||this.getDocument().getActive(),this.contains(a))){a.focus();return}CKEDITOR.env.edge&&14<CKEDITOR.env.version&&!this.hasFocus&&this.getDocument().equals(CKEDITOR.document)&&(this.editor._.previousScrollTop=this.$.scrollTop);try{if(!CKEDITOR.env.ie||CKEDITOR.env.edge&&14<CKEDITOR.env.version||!this.getDocument().equals(CKEDITOR.document))if(CKEDITOR.env.chrome){var b=this.$.scrollTop;this.$.focus();this.$.scrollTop=b}else this.$.focus(); -else this.$.setActive()}catch(c){if(!CKEDITOR.env.ie)throw c;}CKEDITOR.env.safari&&!this.isInline()&&(a=CKEDITOR.document.getActive(),a.equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);CKEDITOR.env.ie&&/^focus|blur$/.exec(a)&&(a="focus"==a?"focusin":"focusout",b=e(b,this),c[0]=a,c[1]=b);return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a){!this._.listeners&&(this._.listeners=[]);var b=Array.prototype.slice.call(arguments, -1),b=a.on.apply(a,b);this._.listeners.push(b);return b},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)a.hasOwnProperty(c)&&(b=a[c],null!==b?this.setAttribute(c,b):this.removeAttribute(c))},attachClass:function(a){var b=this.getCustomData("classes");this.hasClass(a)||(!b&&(b=[]),b.push(a),this.setCustomData("classes",b),this.addClass(a))},changeAttr:function(a,b){var c=this.getAttribute(a); -b!==c&&(!this._.attrChanges&&(this._.attrChanges={}),a in this._.attrChanges||(this._.attrChanges[a]=c),this.setAttribute(a,b))},insertText:function(a){this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a),"text")},transformPlainTextToHtml:function(a){var b=this.editor.getSelection().getStartElement().hasAscendant("pre",!0)?CKEDITOR.ENTER_BR:this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a,b)},insertHtml:function(a,b,c){var d=this.editor;d.focus();d.fire("saveSnapshot"); -c||(c=d.getSelection().getRanges()[0]);w(this,b||"html",a,c);c.select();h(this);this.editor.fire("afterInsertHtml",{})},insertHtmlIntoRange:function(a,b,c){w(this,c||"html",a,b);this.editor.fire("afterInsertHtml",{intoRange:b})},insertElement:function(a,b){var d=this.editor;d.focus();d.fire("saveSnapshot");var e=d.activeEnterMode,d=d.getSelection(),g=a.getName(),g=CKEDITOR.dtd.$block[g];b||(b=d.getRanges()[0]);this.insertElementIntoRange(a,b)&&(b.moveToPosition(a,CKEDITOR.POSITION_AFTER_END),g&&((g= -a.getNext(function(a){return c(a)&&!q(a)}))&&g.type==CKEDITOR.NODE_ELEMENT&&g.is(CKEDITOR.dtd.$block)?g.getDtd()["#"]?b.moveToElementEditStart(g):b.moveToElementEditEnd(a):g||e==CKEDITOR.ENTER_BR||(g=b.fixBlock(!0,e==CKEDITOR.ENTER_DIV?"div":"p"),b.moveToElementEditStart(g))));d.selectRanges([b]);h(this)},insertElementIntoSelection:function(a){this.insertElement(a)},insertElementIntoRange:function(a,b){var c=this.editor,d=c.config.enterMode,e=a.getName(),g=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return!1; -b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&(b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})?p(b):b.startContainer.is(CKEDITOR.dtd.$list)&&v(b));var f,h;if(g)for(;(f=b.getCommonAncestor(0,1))&&(h=CKEDITOR.dtd[f.getName()])&&(!h||!h[e]);)f.getName()in CKEDITOR.dtd.span?b.splitElement(f):b.checkStartOfBlock()&&b.checkEndOfBlock()?(b.setStartBefore(f),b.collapse(!0),f.remove()):b.splitBlock(d==CKEDITOR.ENTER_DIV?"div":"p",c.editable());b.insertNode(a);return!0},setData:function(a, -b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded"==this.status&&(this.status="ready");this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");this.status="detached";var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)}, -fixInitialSelection:function(){function a(){var b=c.getDocument().$,d=b.getSelection(),e;a:if(d.anchorNode&&d.anchorNode==c.$)e=!0;else{if(CKEDITOR.env.webkit&&(e=c.getDocument().getActive())&&e.equals(c)&&!d.anchorNode){e=!0;break a}e=void 0}e&&(e=new CKEDITOR.dom.range(c),e.moveToElementEditStart(c),b=b.createRange(),b.setStart(e.startContainer.$,e.startOffset),b.collapse(!0),d.removeAllRanges(),d.addRange(b))}function b(){var a=c.getDocument().$,d=a.selection,e=c.getDocument().getActive();"None"== -d.type&&e.equals(c)&&(d=new CKEDITOR.dom.range(c),a=a.body.createTextRange(),d.moveToElementEditStart(c),d=d.startContainer,d.type!=CKEDITOR.NODE_ELEMENT&&(d=d.getParent()),a.moveToElementText(d.$),a.collapse(!0),a.select())}var c=this;if(CKEDITOR.env.ie&&(9>CKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),b());else if(this.hasFocus)this.focus(),a();else this.once("focus",function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document); -a={doc:this.getDocument(),range:a.clone()};u.eol.detect(a,this);u.bogus.exclude(a);u.cell.shrink(a);a.fragment=a.range.cloneContents();u.tree.rebuild(a,this);u.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)},extractHtmlFromRange:function(a,b){var c=z,d={range:a,doc:a.document},e=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),e;a.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var g=this.editor.createRange(); -g.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=g.createBookmark();c.list.detectMerge(d,this);c.table.detectRanges(d,this);c.block.detectMerge(d,this);d.tableContentsRanges?(c.table.deleteRanges(d),a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(c.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();c.fixUneditableRangePosition(a);c.list.merge(d,this);c.table.purge(d,this);c.block.merge(d,this); -if(b){c=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&c.block&&!a.root.equals(c.block)){a:{var d=c.block.getElementsByTag("span"),g=0,f;if(d)for(;f=d.getItem(g++);)if(!n(f)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(c.block,CKEDITOR.POSITION_BEFORE_START),c.block.remove())}else c.autoParagraph(this.editor,a),r(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();return e},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b= -this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(b=b.replace(y,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&"Control"==b.type||this.focus()}, -this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO|| -this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus=!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);if(CKEDITOR.env.webkit)this.on("scroll",function(){a._.previousScrollTop=a.editable().$.scrollTop},null,null,-1);if(CKEDITOR.env.edge&&14<CKEDITOR.env.version){var d=function(){var b=a.editable(); -null!=a._.previousScrollTop&&b.getDocument().equals(CKEDITOR.document)&&(b.$.scrollTop=a._.previousScrollTop,a._.previousScrollTop=null,this.removeListener("scroll",d))};this.on("scroll",d)}a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var e=a.document;this.changeAttr("spellcheck", -!a.config.disableNativeSpellChecker);var f=a.config.contentsLangDirection;this.getDirection(1)!=f&&this.changeAttr("dir",f);var h=CKEDITOR.getCss();if(h){var f=e.getHead(),k=f.getCustomData("stylesheet");k?h!=k.getText()&&(CKEDITOR.env.ie&&9>CKEDITOR.env.version?k.$.styleSheet.cssText=h:k.setText(h)):(h=e.appendStyleText(h),h=new CKEDITOR.dom.element(h.ownerNode||h.owningElement),f.setCustomData("stylesheet",h),h.data("cke-temp",1))}f=e.getCustomData("stylesheet_ref")||0;e.setCustomData("stylesheet_ref", -f+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");b&&2!=a.$.button&&b.isReadOnly()&&a.preventDefault()});var n={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey(),d;b=a.getSelection();if(0!==b.getRanges().length){if(c in n){var e,f=b.getRanges()[0],h=f.startPath(),m,k,p,c=8==c;CKEDITOR.env.ie&& -11>CKEDITOR.env.version&&(e=b.getSelectedElement())||(e=l(b))?(a.fire("saveSnapshot"),f.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e.remove(),f.select(),a.fire("saveSnapshot"),d=1):f.collapsed&&((m=h.block)&&(p=m[c?"getPrevious":"getNext"](g))&&p.type==CKEDITOR.NODE_ELEMENT&&p.is("table")&&f[c?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),f[c?"checkEndOfBlock":"checkStartOfBlock"]()&&m.remove(),f["moveToElementEdit"+(c?"End":"Start")](p),f.select(),a.fire("saveSnapshot"), -d=1):h.blockLimit&&h.blockLimit.is("td")&&(k=h.blockLimit.getAscendant("table"))&&f.checkBoundaryOfElement(k,c?CKEDITOR.START:CKEDITOR.END)&&(p=k[c?"getPrevious":"getNext"](g))?(a.fire("saveSnapshot"),f["moveToElementEdit"+(c?"End":"Start")](p),f.checkStartOfBlock()&&f.checkEndOfBlock()?p.remove():f.select(),a.fire("saveSnapshot"),d=1):(k=h.contains(["td","th","caption"]))&&f.checkBoundaryOfElement(k,c?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d}});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&& -this.attachListener(this,"keyup",function(b){b.data.getKeystroke()in n&&!this.getFirst(c)&&(this.appendBogus(),b=a.createRange(),b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),b.select())});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return!1;b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();c.is("img","hr", -"input","textarea","select")&&!c.isReadOnly()&&(a.getSelection().selectElement(c),c.is("input","textarea","select")&&b.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(b){(b=b.data.getTarget())&&b.is("img")&&a.getSelection().selectElement(b)});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(2==b.data.$.button&&(b=b.data.getTarget(),!b.getOuterHtml().replace(y,""))){var c=a.createRange();c.moveToElementEditStart(b);c.select(!0)}});CKEDITOR.env.webkit&& -(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey();if(c in n&&(b=a.getSelection(),0!==b.getRanges().length)){var c=8==c,d=b.getRanges()[0];b=d.startPath();if(d.collapsed)a:{var e=b.block;if(e&&d[c?"checkStartOfBlock": -"checkEndOfBlock"]()&&d.moveToClosestEditablePosition(e,!c)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var g=d.startContainer.getChild(d.startOffset-(c?1:0));if(g&&g.type==CKEDITOR.NODE_ELEMENT&&g.is("hr")){a.fire("saveSnapshot");g.remove();b=!0;break a}}d=d.startPath().block;if(!d||d&&d.contains(e))b=void 0;else{a.fire("saveSnapshot");var f;(f=(c?d:e).getBogus())&&f.remove();f=a.getSelection();g=f.createBookmarks();(c?e:d).moveChildren(c?d:e,!1);b.lastElement.mergeSiblings(); -m(e,d,!c);f.selectBookmarks(g);b=!0}}else b=!1}else c=d,f=b.block,d=c.endPath().block,f&&d&&!f.equals(d)?(a.fire("saveSnapshot"),(e=f.getBogus())&&e.remove(),c.enlarge(CKEDITOR.ENLARGE_INLINE),c.deleteContents(),d.getParent()&&(d.moveChildren(f,!1),b.lastElement.mergeSiblings(),m(f,d,!0)),c=a.getSelection().getRanges()[0],c.collapse(1),c.optimize(),""===c.startContainer.getHtml()&&c.startContainer.appendBogus(),c.select(),b=!0):b=!1;if(!b)return;a.getSelection().scrollIntoView();a.fire("saveSnapshot"); -return!1}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");--c?a.setCustomData("stylesheet_ref",c):(a.removeCustomData("stylesheet_ref"),b.removeCustomData("stylesheet").remove())}}this.editor.fire("contentDomUnload"); -delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;arguments.length&&(b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null));return b};CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")? -"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),a(b),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label; -if(d&&(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+e+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");g=CKEDITOR.dom.walker.whitespaces(!0);n=CKEDITOR.dom.walker.bookmark(!1,!0);r=CKEDITOR.dom.walker.empty(); -q=CKEDITOR.dom.walker.bogus();y=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;w=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,g,f,h,m=[],k=d.range.startContainer;e=d.range.startPath();for(var k=l[k.getName()],n=0,p=c.getChildren(),v=p.count(),E=-1,x=-1,w=0,u=e.contains(l.$list);n<v;++n)e=p.getItem(n),a(e)?(f=e.getName(),u&&f in CKEDITOR.dtd.$list?m=m.concat(b(e,d)):(h=!!k[f], -"br"!=f||!e.data("cke-eol")||n&&n!=v-1||(w=(g=n?m[n-1].node:p.getItem(n+1))&&(!a(g)||!g.is("br")),g=g&&a(g)&&l.$block[g.getName()]),-1!=E||h||(E=n),h||(x=n),m.push({isElement:1,isLineBreak:w,isBlock:e.isBlockBoundary(),hasBlockSibling:g,node:e,name:f,allowed:h}),g=w=0)):m.push({isElement:0,node:e,allowed:1});-1<E&&(m[E].firstNotAllowed=1);-1<x&&(m[x].lastNotAllowed=1);return m}function e(b,c){var d=[],g=b.getChildren(),f=g.count(),h,m=0,k=l[c],n=!b.is(l.$inline)||b.is("br");for(n&&d.push(" ");m<f;m++)h= -g.getItem(m),a(h)&&!h.is(k)?d=d.concat(e(h,c)):d.push(h);n&&d.push(" ");return d}function g(b){return a(b.startContainer)&&b.startContainer.getChild(b.startOffset-1)}function f(b){return b&&a(b)&&(b.is(l.$removeEmpty)||b.is("a")&&!b.isBlockBoundary())}function h(b,c,d,e){var g=b.clone(),f,m;g.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);(f=(new CKEDITOR.dom.walker(g)).next())&&a(f)&&n[f.getName()]&&(m=f.getPrevious())&&a(m)&&!m.getParent().equals(b.startContainer)&&d.contains(m)&&e.contains(f)&&f.isIdentical(m)&& -(f.moveChildren(m),f.remove(),h(b,c,d,e))}function m(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("br")&&a(b)&&b.is("br"))return b.remove(),1}var e=c.endContainer.getChild(c.endOffset),g=c.endContainer.getChild(c.endOffset-1);e&&d(e,b[b.length-1]);g&&d(g,b[0])&&(c.setEnd(c.endContainer,c.endOffset-1),c.collapse())}var l=CKEDITOR.dtd,n={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},p={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},v=CKEDITOR.tools.extend({}, -l.$inline);delete v.br;return function(n,C,w,u){var r=n.editor,y=!1;"unfiltered_html"==C&&(C="html",y=!0);if(!u.checkReadOnly()){var z=(new CKEDITOR.dom.elementPath(u.startContainer,u.root)).blockLimit||u.root;n={type:C,dontFilter:y,editable:n,editor:r,range:u,blockLimit:z,mergeCandidates:[],zombies:[]};C=n.range;u=n.mergeCandidates;var I,q;"text"==n.type&&C.shrink(CKEDITOR.SHRINK_ELEMENT,!0,!1)&&(I=CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",C.document),C.insertNode(I), -C.setStartAfter(I));y=new CKEDITOR.dom.elementPath(C.startContainer);n.endPath=z=new CKEDITOR.dom.elementPath(C.endContainer);if(!C.collapsed){var r=z.block||z.blockLimit,fa=C.getCommonAncestor();r&&!r.equals(fa)&&!r.contains(fa)&&C.checkEndOfBlock()&&n.zombies.push(r);C.deleteContents()}for(;(q=g(C))&&a(q)&&q.isBlockBoundary()&&y.contains(q);)C.moveToPosition(q,CKEDITOR.POSITION_BEFORE_END);h(C,n.blockLimit,y,z);I&&(C.setEndBefore(I),C.collapse(),I.remove());I=C.startPath();if(r=I.contains(f,!1, -1))C.splitElement(r),n.inlineStylesRoot=r,n.inlineStylesPeak=I.lastElement;I=C.createBookmark();(r=I.startNode.getPrevious(c))&&a(r)&&f(r)&&u.push(r);(r=I.startNode.getNext(c))&&a(r)&&f(r)&&u.push(r);for(r=I.startNode;(r=r.getParent())&&f(r);)u.push(r);C.moveToBookmark(I);if(I=w){I=n.range;if("text"==n.type&&n.inlineStylesRoot){q=n.inlineStylesPeak;C=q.getDocument().createText("{cke-peak}");for(u=n.inlineStylesRoot.getParent();!q.equals(u);)C=C.appendTo(q.clone()),q=q.getParent();w=C.getOuterHtml().split("{cke-peak}").join(w)}q= -n.blockLimit.getName();if(/^\s+|\s+$/.test(w)&&"span"in CKEDITOR.dtd[q]){var O='\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';w=O+w+O}w=n.editor.dataProcessor.toHtml(w,{context:null,fixForBody:!1,protectedWhitespaces:!!O,dontFilter:n.dontFilter,filter:n.editor.activeFilter,enterMode:n.editor.activeEnterMode});q=I.document.createElement("body");q.setHtml(w);O&&(q.getFirst().remove(),q.getLast().remove());if((O=I.startPath().block)&&(1!=O.getChildCount()||!O.getBogus()))a:{var P;if(1== -q.getChildCount()&&a(P=q.getFirst())&&P.is(p)&&!P.hasAttribute("contenteditable")){O=P.getElementsByTag("*");I=0;for(u=O.count();I<u;I++)if(C=O.getItem(I),!C.is(v))break a;P.moveChildren(P.getParent(1));P.remove()}}n.dataWrapper=q;I=w}if(I){P=n.range;I=P.document;var M;q=n.blockLimit;u=0;var S,O=[],Q,X;w=r=0;var U,Y;C=P.startContainer;var y=n.endPath.elements[0],Z,z=y.getPosition(C),fa=!!y.getCommonAncestor(C)&&z!=CKEDITOR.POSITION_IDENTICAL&&!(z&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED); -C=b(n.dataWrapper,n);for(m(C,P);u<C.length;u++){z=C[u];if(M=z.isLineBreak){M=P;U=q;var W=void 0,aa=void 0;z.hasBlockSibling?M=1:(W=M.startContainer.getAscendant(l.$block,1))&&W.is({div:1,p:1})?(aa=W.getPosition(U),aa==CKEDITOR.POSITION_IDENTICAL||aa==CKEDITOR.POSITION_CONTAINS?M=0:(U=M.splitElement(W),M.moveToPosition(U,CKEDITOR.POSITION_AFTER_START),M=1)):M=0}if(M)w=0<u;else{M=P.startPath();!z.isBlock&&k(n.editor,M.block,M.blockLimit)&&(X=d(n.editor))&&(X=I.createElement(X),X.appendBogus(),P.insertNode(X), -CKEDITOR.env.needsBrFiller&&(S=X.getBogus())&&S.remove(),P.moveToPosition(X,CKEDITOR.POSITION_BEFORE_END));if((M=P.startPath().block)&&!M.equals(Q)){if(S=M.getBogus())S.remove(),O.push(M);Q=M}z.firstNotAllowed&&(r=1);if(r&&z.isElement){M=P.startContainer;for(U=null;M&&!l[M.getName()][z.name];){if(M.equals(q)){M=null;break}U=M;M=M.getParent()}if(M)U&&(Y=P.splitElement(U),n.zombies.push(Y),n.zombies.push(U));else{U=q.getName();Z=!u;M=u==C.length-1;U=e(z.node,U);for(var W=[],aa=U.length,da=0,ia=void 0, -ja=0,ea=-1;da<aa;da++)ia=U[da]," "==ia?(ja||Z&&!da||(W.push(new CKEDITOR.dom.text(" ")),ea=W.length),ja=1):(W.push(ia),ja=0);M&&ea==W.length&&W.pop();Z=W}}if(Z){for(;M=Z.pop();)P.insertNode(M);Z=0}else P.insertNode(z.node);z.lastNotAllowed&&u<C.length-1&&((Y=fa?y:Y)&&P.setEndAt(Y,CKEDITOR.POSITION_AFTER_START),r=0);P.collapse()}}1!=C.length?S=!1:(S=C[0],S=S.isElement&&"false"==S.node.getAttribute("contenteditable"));S&&(w=!0,M=C[0].node,P.setStartAt(M,CKEDITOR.POSITION_BEFORE_START),P.setEndAt(M, -CKEDITOR.POSITION_AFTER_END));n.dontMoveCaret=w;n.bogusNeededBlocks=O}S=n.range;var ga;Y=n.bogusNeededBlocks;for(Z=S.createBookmark();Q=n.zombies.pop();)Q.getParent()&&(X=S.clone(),X.moveToElementEditStart(Q),X.removeEmptyBlocksAtEnd());if(Y)for(;Q=Y.pop();)CKEDITOR.env.needsBrFiller?Q.appendBogus():Q.append(S.document.createText(" "));for(;Q=n.mergeCandidates.pop();)Q.mergeSiblings();S.moveToBookmark(Z);if(!n.dontMoveCaret){for(Q=g(S);Q&&a(Q)&&!Q.is(l.$empty);){if(Q.isBlockBoundary())S.moveToPosition(Q, -CKEDITOR.POSITION_BEFORE_END);else{if(f(Q)&&Q.getHtml().match(/(\s| )$/g)){ga=null;break}ga=S.clone();ga.moveToPosition(Q,CKEDITOR.POSITION_BEFORE_END)}Q=Q.getLast(c)}ga&&S.moveToRange(ga)}}}}();p=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return b}function b(a,c,d){c=a.getDocument().createElement(c);a.append(c, -d);return c}function c(a){var b=a.count(),d;for(b;0<b--;)d=a.getItem(b),CKEDITOR.tools.trim(d.getHtml())||(d.appendBogus(),CKEDITOR.env.ie&&9>CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var e=d.startContainer,g=e.getAscendant("table",1),f=!1;c(g.getElementsByTag("td"));c(g.getElementsByTag("th"));g=d.clone();g.setStart(e,0);g=a(g).lastBackward();g||(g=d.clone(),g.setEndAt(e,CKEDITOR.POSITION_BEFORE_END),g=a(g).lastForward(),f=!0);g||(g=e);g.is("table")?(d.setStartAt(g, -CKEDITOR.POSITION_BEFORE_START),d.collapse(!0),g.remove()):(g.is({tbody:1,thead:1,tfoot:1})&&(g=b(g,"tr",f)),g.is("tr")&&(g=b(g,g.getParent().is("thead")?"th":"td",f)),(e=g.getBogus())&&e.remove(),d.moveToPosition(g,f?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}();v=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$list)||a.is(CKEDITOR.dtd.$listItem)};b.evaluator=function(a){return a.type== -CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$listItem)};return b}return function(b){var c=b.startContainer,d=!1,e;e=b.clone();e.setStart(c,0);e=a(e).lastBackward();e||(e=b.clone(),e.setEndAt(c,CKEDITOR.POSITION_BEFORE_END),e=a(e).lastForward(),d=!0);e||(e=c);e.is(CKEDITOR.dtd.$list)?(b.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),b.collapse(!0),e.remove()):((c=e.getBogus())&&c.remove(),b.moveToPosition(e,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END),b.select())}}();u={eol:{detect:function(a, -b){var c=a.range,d=c.clone(),e=c.clone(),g=new CKEDITOR.dom.elementPath(c.startContainer,b),f=new CKEDITOR.dom.elementPath(c.endContainer,b);d.collapse(1);e.collapse();g.block&&d.checkBoundaryOfElement(g.block,CKEDITOR.END)&&(c.setStartAfter(g.block),a.prependEolBr=1);f.block&&e.checkBoundaryOfElement(f.block,CKEDITOR.START)&&(c.setEndBefore(f.block),a.appendEolBr=1)},fix:function(a,b){var c=b.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(c),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()|| -a.fragment.append(this.createEolBr(c),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}},bogus:{exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode,b=b.endNode;!b||!q(b)||c&&c.equals(b)||a.range.setEndBefore(b)}},tree:{rebuild:function(a,b){var c=a.range,d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),g=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),f;d.type==CKEDITOR.NODE_TEXT&&(d= -d.getParent());if(e.blockLimit.is({tr:1,table:1})){var h=e.contains("table").getParent();f=function(a){return!a.equals(h)}}else if(e.block&&e.block.is(CKEDITOR.dtd.$listItem)&&(g=g.contains(CKEDITOR.dtd.$list),c=c.contains(CKEDITOR.dtd.$list),!g.equals(c))){var m=e.contains(CKEDITOR.dtd.$list).getParent();f=function(a){return!a.equals(m)}}f||(f=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,f)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&& -d(c);)e=c.clone(0,1),a.fragment.appendTo(e),a.fragment=e,c=c.getParent()}},cell:{shrink:function(a){a=a.range;var b=a.startContainer,c=a.endContainer,d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&b.equals(c)&&b.is("tr")&&++d==e&&a.shrink(CKEDITOR.SHRINK_TEXT)}}};z=function(){function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var g;g=e.getNext();)g.insertAfter(d),d=g;r(c)&&c.remove()}function c(a,b){var d= -new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark),e=d.startPath(),g=d.endPath(),f=e.contains(CKEDITOR.dtd.$list),h=g.contains(CKEDITOR.dtd.$list);a.mergeList=f&&h&&f.getParent().equals(h.getParent())&&!f.equals(h);a.mergeListItems=e.block&&g.block&&e.block.is(CKEDITOR.dtd.$listItem)&&g.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode), -d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode,e=a.mergeListBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e,c);if(a.mergeList){var h=g.contains(CKEDITOR.dtd.$list),m=f.contains(CKEDITOR.dtd.$list);h.equals(m)||(m.moveChildren(h),m.remove())}a.mergeListItems&&(g=g.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$listItem),g.equals(f)||b(f,d,e)); -d.remove();e.remove()}}},block:{detectMerge:function(a,b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode);c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}},merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e,c),g=g.block,f=f.block;g&&f&&!g.equals(f)&& -b(f,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=[],g,f=new CKEDITOR.dom.walker(c),h=c.startPath().contains(d),m=c.endPath().contains(d),k={};f.guard=function(a,f){if(a.type==CKEDITOR.NODE_ELEMENT){var l="visited_"+(f?"out":"in");if(a.getCustomData(l))return;CKEDITOR.dom.element.setMarker(k,a,l,1)}if(f&&h&&a.equals(h))g=c.clone(),g.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),e.push(g);else if(!f&&m&&a.equals(m))g=c.clone(),g.setStartAt(m,CKEDITOR.POSITION_AFTER_START),e.push(g); -else{if(l=!f)l=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!h||b(a,h))&&(!m||b(a,m));l&&(g=c.clone(),g.selectNodeContents(a),e.push(g))}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(k);return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL?!1:0===(e&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c), -e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};c.checkForward();if(1<e){var c=b.startPath().contains("table"),g=b.endPath().contains("table");c&&g&&b.checkBoundaryOfElement(c,CKEDITOR.START)&&b.checkBoundaryOfElement(g,CKEDITOR.END)&&(b=a.range.clone(),b.setStartBefore(c),b.setEndAfter(g),a.purgeTableBookmark=b.createBookmark())}},detectRanges:function(e,g){var f=c(g,e.bookmark),h=f.clone(),m,k,l=f.getCommonAncestor();l.is(CKEDITOR.dtd.$tableContent)&&!l.is(d)&&(l=l.getAscendant("table", -!0));k=l;l=new CKEDITOR.dom.elementPath(f.startContainer,k);k=new CKEDITOR.dom.elementPath(f.endContainer,k);l=l.contains("table");k=k.contains("table");if(l||k)l&&k&&b(l,k)?(e.tableSurroundingRange=h,h.setStartAt(l,CKEDITOR.POSITION_AFTER_END),h.setEndAt(k,CKEDITOR.POSITION_BEFORE_START),h=f.clone(),h.setEndAt(l,CKEDITOR.POSITION_AFTER_END),m=f.clone(),m.setStartAt(k,CKEDITOR.POSITION_BEFORE_START),m=a(h).concat(a(m))):l?k||(e.tableSurroundingRange=h,h.setStartAt(l,CKEDITOR.POSITION_AFTER_END),f.setEndAt(l, -CKEDITOR.POSITION_AFTER_END)):(e.tableSurroundingRange=h,h.setEndAt(k,CKEDITOR.POSITION_BEFORE_START),f.setStartAt(k,CKEDITOR.POSITION_AFTER_START)),e.tableContentsRanges=m?m:a(f)},deleteRanges:function(a){for(var b;b=a.tableContentsRanges.pop();)b.extractContents(),r(b.startContainer)&&b.startContainer.appendBogus();a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var b=a.doc,c=a.range.clone(),b=b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode); -c.moveToBookmark(a.purgeTableBookmark);c.deleteContents();a.range.moveToPosition(b,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&&a.range.endPath().contains(CKEDITOR.dtd.$listItem))},fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,!0)},autoParagraph:function(a,b){var c=b.startPath(),e;k(a,c.block,c.blockLimit)&&(e=d(a))&&(e=b.document.createElement(e),e.appendBogus(), -b.insertNode(e),b.moveToPosition(e,CKEDITOR.POSITION_AFTER_START))}}}()}(),function(){function a(a,b){if(0===a.length)return!1;var c,d;if((c=!b&&1===a.length)&&!(c=a[0].collapsed)){var e=a[0];c=e.startContainer.getAscendant({td:1,th:1},!0);var g=e.endContainer.getAscendant({td:1,th:1},!0);d=CKEDITOR.tools.trim;c&&c.equals(g)&&!c.findOne("td, th, tr, tbody, table")?(e=e.cloneContents(),c=e.getFirst()?d(e.getFirst().getText())!==d(c.getText()):!0):c=!1}if(c)return!1;for(d=0;d<a.length;d++)if(c=a[d]._getTableElement(), -!c)return!1;return!0}function f(a){function b(a){a=a.find("td, th");var c=[],d;for(d=0;d<a.count();d++)c.push(a.getItem(d));return c}var c=[],d,e;for(e=0;e<a.length;e++)d=a[e]._getTableElement(),d.is&&d.is({td:1,th:1})?c.push(d):c=c.concat(b(d));return c}function b(a){a=f(a);var b="",c=[],d,e;for(e=0;e<a.length;e++)d&&!d.equals(a[e].getAscendant("tr"))?(b+=c.join("\t")+"\n",d=a[e].getAscendant("tr"),c=[]):0===e&&(d=a[e].getAscendant("tr")),c.push(a[e].getText());return b+=c.join("\t")}function c(a){var c= -this.root.editor,d=c.getSelection(1);this.reset();z=!0;d.root.once("selectionchange",function(a){a.cancel()},null,null,0);d.selectRanges([a[0]]);d=this._.cache;d.ranges=new CKEDITOR.dom.rangeList(a);d.type=CKEDITOR.SELECTION_TEXT;d.selectedElement=a[0]._getTableElement();d.selectedText=b(a);d.nativeSel=null;this.isFake=1;this.rev=p++;c._.fakeSelection=this;z=!1;this.root.fire("selectionchange")}function e(){var b=this._.fakeSelection,c;if(b){c=this.getSelection(1);var d;if(!(d=!c)&&(d=!c.isHidden())){d= -b;var e=c.getRanges(),g=d.getRanges(),f=e.length&&e[0]._getTableElement()&&e[0]._getTableElement().getAscendant("table",!0),h=g.length&&g[0]._getTableElement()&&g[0]._getTableElement().getAscendant("table",!0),m=1===e.length&&e[0]._getTableElement()&&e[0]._getTableElement().is("table"),k=1===g.length&&g[0]._getTableElement()&&g[0]._getTableElement().is("table"),l=1===e.length&&e[0].collapsed,g=a(e,!!CKEDITOR.env.webkit)&&a(g);f=f&&h?f.equals(h)||h.contains(f):!1;f&&(l||g)?(m&&!k&&d.selectRanges(e), -d=!0):d=!1;d=!d}d&&(b.reset(),b=0)}if(!b&&(b=c||this.getSelection(1),!b||b.getType()==CKEDITOR.SELECTION_NONE))return;this.fire("selectionCheck",b);c=this.elementPath();c.compare(this._.selectionPreviousPath)||(d=this._.selectionPreviousPath&&this._.selectionPreviousPath.blockLimit.equals(c.blockLimit),CKEDITOR.env.webkit&&!d&&(this._.previousActive=this.document.getActive()),this._.selectionPreviousPath=c,this.fire("selectionChange",{selection:b,path:c}))}function l(){A=!0;t||(k.call(this),t=CKEDITOR.tools.setTimeout(k, -200,this))}function k(){t=null;A&&(CKEDITOR.tools.setTimeout(e,0,this),A=!1)}function d(a){return D(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?!0:!1}function h(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clone()["moveToElementEdit"+(d?"End":"Start")](c):!1}if(!(a.root instanceof CKEDITOR.editable))return!1;var c=a.startContainer,e=a.getPreviousNode(d,null,c),g=a.getNextNode(d,null,c);return b(e)||b(g,1)||!(e||g||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&& -c.getBogus())?!0:!1}function m(a){g(a,!1);var b=a.getDocument().createText(v);a.setCustomData("cke-fillingChar",b);return b}function g(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(!1!==b){var d=a.getDocument().getSelection().getNative(),e=d&&"None"!=d.type&&d.getRangeAt(0),g=v.length;if(c.getLength()>g&&e&&e.intersectsNode(c.$)){var f=[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==c.$&&d.anchorOffset>g&&(f[0].offset-=g);d.focusNode== -c.$&&d.focusOffset>g&&(f[1].offset-=g)}}c.setText(n(c.getText(),1));f&&(c=a.getDocument().$,d=c.getSelection(),c=c.createRange(),c.setStart(f[0].node,f[0].offset),c.collapse(!0),d.removeAllRanges(),d.addRange(c),d.extend(f[1].node,f[1].offset))}}function n(a,b){return b?a.replace(u,function(a,b){return b?" ":""}):a.replace(v,"")}function r(a,b){var c=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"'+(CKEDITOR.env.ie&&14>CKEDITOR.env.version?"display:none": -"position:fixed;top:0;left:-1000px")+'"\x3e'+(b||"\x26nbsp;")+"\x3c/div\x3e",a.document);a.fire("lockSnapshot");a.editable().append(c);var d=a.getSelection(1),e=a.createRange(),g=d.root.on("selectionchange",function(a){a.cancel()},null,null,0);e.setStartAt(c,CKEDITOR.POSITION_AFTER_START);e.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);d.selectRanges([e]);g.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=c}function q(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke(); -if(b[d]){var e=a.getSelection().getRanges(),g=e[0];1==e.length&&g.collapsed&&(d=g[38>d?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&"false"==d.getAttribute("contenteditable")&&(a.getSelection().fake(d),c.data.preventDefault(),c.cancel())}}}function y(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor().isReadOnly()&&a.splice(b,1);if(!c.collapsed){if(c.startContainer.isReadOnly())for(var d=c.startContainer,e;d&&!((e=d.type==CKEDITOR.NODE_ELEMENT)&& -d.is("body")||!d.isReadOnly());)e&&"false"==d.getAttribute("contentEditable")&&c.setStartAfter(d),d=d.getParent();d=c.startContainer;e=c.endContainer;var g=c.startOffset,f=c.endOffset,h=c.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(g>=d.getLength()?h.setStartAfter(d):h.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(f?h.setEndAfter(e):h.setEndBefore(e));d=new CKEDITOR.dom.walker(h);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&& -a.splice(b--,1);d.getPosition(h.endContainer)&CKEDITOR.POSITION_CONTAINS||(e.setStartAfter(d),e.collapsed||a.splice(b+1,0,e));return!0}return!1};d.next()}}return a}var w="function"!=typeof window.getSelection,p=1,v=CKEDITOR.tools.repeat("​",7),u=new RegExp(v+"( )?","g"),z,t,A,D=CKEDITOR.dom.walker.invisible(1),x=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return!1}}function b(a){return function(b){var c= -b.editor,d=c.createRange(),e;(e=d.moveToClosestEditablePosition(b.selected,a))||(e=d.moveToClosestEditablePosition(b.selected,!a));e&&c.getSelection().selectRanges([d]);c.fire("saveSnapshot");b.selected.remove();e||(d.moveToElementEditablePosition(c.editable()),c.getSelection().selectRanges([d]));c.fire("saveSnapshot");return!1}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(a){function b(){var a=c.getSelection();a&&a.removeAllRanges()}var c=a.editor; -c.on("contentDom",function(){function a(){t=new CKEDITOR.dom.selection(c.getSelection());t.lock()}function b(){h.removeListener("mouseup",b);n.removeListener("mouseup",b);var a=CKEDITOR.document.$.selection,c=a.createRange();"None"!=a.type&&c.parentElement()&&c.parentElement().ownerDocument==f.$&&c.select()}function d(a){if(CKEDITOR.env.ie){var b=(a=a.getRanges()[0])?a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&("false"==a.getAttribute("contenteditable")||"true"== -a.getAttribute("contenteditable"))},!0):null;return a&&"false"==b.getAttribute("contenteditable")&&b}}var f=c.document,h=CKEDITOR.document,m=c.editable(),k=f.getBody(),n=f.getDocumentElement(),p=m.isInline(),v,t;CKEDITOR.env.gecko&&m.attachListener(m,"focus",function(a){a.removeListener();0!==v&&(a=c.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==m.$&&(a=c.createRange(),a.moveToElementEditStart(m),a.select())},null,null,-2);m.attachListener(m,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){v&& -CKEDITOR.env.webkit&&(v=c._.previousActive&&c._.previousActive.equals(f.getActive()))&&null!=c._.previousScrollTop&&c._.previousScrollTop!=m.$.scrollTop&&(m.$.scrollTop=c._.previousScrollTop);c.unlockSelection(v);v=0},null,null,-1);m.attachListener(m,"mousedown",function(){v=0});if(CKEDITOR.env.ie||p)w?m.attachListener(m,"beforedeactivate",a,null,null,-1):m.attachListener(c,"selectionCheck",a,null,null,-1),m.attachListener(m,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){c.lockSelection(t);v= -1},null,null,-1),m.attachListener(m,"mousedown",function(){v=0});if(CKEDITOR.env.ie&&!p){var u;m.attachListener(m,"mousedown",function(a){2==a.data.$.button&&((a=c.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(u=c.window.getScrollPosition()))});m.attachListener(m,"mouseup",function(a){2==a.data.$.button&&u&&(c.document.$.documentElement.scrollLeft=u.x,c.document.$.documentElement.scrollTop=u.y);u=null});if("BackCompat"!=f.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat){var r, -x;n.on("mousedown",function(a){function b(a){a=a.data.$;if(r){var c=k.$.createTextRange();try{c.moveToPoint(a.clientX,a.clientY)}catch(d){}r.setEndPoint(0>x.compareEndPoints("StartToStart",c)?"EndToEnd":"StartToStart",c);r.select()}}function c(){n.removeListener("mousemove",b);h.removeListener("mouseup",c);n.removeListener("mouseup",c);r.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<n.$.clientHeight&&a.$.x<n.$.clientWidth){r=k.$.createTextRange();try{r.moveToPoint(a.$.clientX,a.$.clientY)}catch(d){}x= -r.duplicate();n.on("mousemove",b);h.on("mouseup",c);n.on("mouseup",c)}})}if(7<CKEDITOR.env.version&&11>CKEDITOR.env.version)n.on("mousedown",function(a){a.data.getTarget().is("html")&&(h.on("mouseup",b),n.on("mouseup",b))})}}m.attachListener(m,"selectionchange",e,c);m.attachListener(m,"keyup",l,c);m.attachListener(m,"keydown",function(a){var b=this.getSelection(1);d(b)&&(b.selectElement(d(b)),a.data.preventDefault())},c);m.attachListener(m,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){c.forceNextSelectionCheck(); -c.selectionChange(1)});if(p&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var y;m.attachListener(m,"mousedown",function(){y=1});m.attachListener(f.getDocumentElement(),"mouseup",function(){y&&l.call(c);y=0})}else m.attachListener(CKEDITOR.env.ie?m:f.getDocumentElement(),"mouseup",l,c);CKEDITOR.env.webkit&&m.attachListener(f,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:m.hasFocus&&g(m)}},null,null,-1);m.attachListener(m, -"keydown",q(c),null,null,-1)});c.on("setData",function(){c.unlockSelection();CKEDITOR.env.webkit&&b()});c.on("contentDomUnload",function(){c.unlockSelection()});if(CKEDITOR.env.ie9Compat)c.on("beforeDestroy",b,null,null,9);c.on("dataReady",function(){delete c._.fakeSelection;delete c._.hiddenSelectionContainer;c.selectionChange(1)});c.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=c.editable().getLast(a);b&&b.hasAttribute("data-cke-hidden-sel")&&(b.remove(), -CKEDITOR.env.gecko&&(a=c.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);c.on("key",function(a){if("wysiwyg"==c.mode){var b=c.getSelection();if(b.isFake){var d=x[a.data.keyCode];if(d)return d({editor:c,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});if(CKEDITOR.env.webkit)CKEDITOR.on("instanceReady",function(a){var b=a.editor;b.on("selectionChange",function(){var a=b.editable(),c=a.getCustomData("cke-fillingChar");c&&(c.getCustomData("ready")? -(g(a),a.editor.fire("selectionCheck")):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){g(b.editable())},null,null,-1);b.on("getSnapshot",function(a){a.data&&(a.data=n(a.data))},b,null,20);b.on("toDataFormat",function(a){a.data.dataValue=n(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(a){(a?e:l).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection||a?(a=this.editable())&& -"wysiwyg"==this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;return b?(b.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath}; -CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var b=a;a=a.root}var c=a instanceof CKEDITOR.dom.element; -this.rev=b?b.rev:p++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b)return CKEDITOR.tools.extend(this._.cache,b._.cache),this.isFake=b.isFake,this.isLocked=b.isLocked,this;a=this.getNative();var d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(g){}d=e&&CKEDITOR.dom.element.get(e.item&&e.item(0)||e.parentElement())}if(!d|| -d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var B={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:n, -_createFillingCharSequenceNode:m,FILLING_CHAR_SEQUENCE:v});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=w?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:w?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&& -(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(1==c.rangeCount){var c=c.getRangeAt(0),d=c.startContainer;d==c.endContainer&&1==d.nodeType&&1==c.endOffset-c.startOffset&&B[d.childNodes[c.startOffset].nodeName.toLowerCase()]&&(b=CKEDITOR.SELECTION_ELEMENT)}return a.type=b},getRanges:function(){var a=w?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()} -var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,g,f,h=b.duplicate(),m=0,k=e.length-1,l=-1,n,p;m<=k;)if(l=Math.floor((m+k)/2),g=e[l],h.moveToElementText(g),n=h.compareEndPoints("StartToStart",b),0<n)k=l-1;else if(0>n)m=l+1;else return{container:d,offset:a(g)};if(-1==l||l==e.length-1&&0>n){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h)return g= -e[e.length-1],g.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:g,offset:g.nodeValue.length};for(d=e.length;0<h&&0<d;)f=e[--d],f.nodeType==CKEDITOR.NODE_TEXT&&(p=f,h-=f.nodeValue.length);return{container:p,offset:-h}}h.collapse(0<n?!0:!1);h.setEndPoint(0<n?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(g)+(0<n?0:1)};for(;0<h;)try{f=g[0<n?"previousSibling":"nextSibling"],f.nodeType==CKEDITOR.NODE_TEXT&&(h-=f.nodeValue.length, -p=f),g=f}catch(v){return{container:d,offset:a(g)}}return{container:p,offset:0<n?-h:p.nodeValue.length+h}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT)return a=new CKEDITOR.dom.range(this.root),d=b(c,!0),a.setStart(new CKEDITOR.dom.node(d.container),d.offset),d=b(c),a.setEnd(new CKEDITOR.dom.node(d.container),d.offset),a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&& -a.collapse(),[a];if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var g=c.item(e),f=g.parentNode,h=0,a=new CKEDITOR.dom.range(this.root);h<f.childNodes.length&&f.childNodes[h]!=g;h++);a.setStart(new CKEDITOR.dom.node(f),h);a.setEnd(new CKEDITOR.dom.node(f),h+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer), -e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};return function(b){var c=this._.cache,d=c.ranges;d||(c.ranges=d=new CKEDITOR.dom.rangeList(a.call(this)));return b?y(new CKEDITOR.dom.rangeList(d.slice())):d}}(),getStartElement:function(){var a=this._.cache;if(void 0!==a.startElement)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0]; -if(c){if(c.collapsed)b=c.startContainer,b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());else{for(c.optimize();b=c.startContainer,c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary();)c.setStartAfter(b);b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();if((b=b.getChild(c.startOffset))&&b.type==CKEDITOR.NODE_ELEMENT)for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;)b=c,c=c.getFirst();else b=c.startContainer}b=b.$}}return a.startElement=b? -new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(void 0!==a.selectedElement)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&!((c=a.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&B[c.getName()]&&(d=c));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a= -this._.cache;if(void 0!==a.selectedText)return a.selectedText;var b=this.getNative(),b=w?"Control"==b.type?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(b){if(this.isLocked){if(b)var d=this.getSelectedElement(),e=this.getRanges(),g=this.isFake;this.isLocked=0;this.reset();b&&(b=d||e[0]&&e[0].getCommonAncestor())&&b.getAscendant("body", -1)&&(a(e)?c.call(this,e):g?this.fake(d):d?this.selectElement(d):this.selectRanges(e))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection)if(this.rev==a._.fakeSelection.rev){delete a._.fakeSelection;var b=a._.hiddenSelectionContainer;if(b){var c=a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!c&&a.resetDirty()}delete a._.hiddenSelectionContainer}else CKEDITOR.warn("selection-fake-reset");this.rev=p++},selectElement:function(a){var b= -new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(b){var d=this.root.editor,e=d&&d._.hiddenSelectionContainer;this.reset();if(e)for(var e=this.root,f,k=0;k<b.length;++k)f=b[k],f.endContainer.equals(e)&&(f.endOffset=Math.min(f.endOffset,e.getChildCount()));if(b.length)if(this.isLocked){var l=CKEDITOR.document.getActive();this.unlock();this.selectRanges(b);this.lock();l&&!l.equals(this.root)&&l.focus()}else{var n;a:{var C,p;if(1==b.length&& -!(p=b[0]).collapsed&&(n=p.getEnclosedNode())&&n.type==CKEDITOR.NODE_ELEMENT&&(p=p.clone(),p.shrink(CKEDITOR.SHRINK_ELEMENT,!0),(C=p.getEnclosedNode())&&C.type==CKEDITOR.NODE_ELEMENT&&(n=C),"false"==n.getAttribute("contenteditable")))break a;n=void 0}if(n)this.fake(n);else if(d&&d.plugins.tableselection&&CKEDITOR.plugins.tableselection.isSupportedEnvironment&&a(b)&&!z)c.call(this,b);else{if(w){C=CKEDITOR.dom.walker.whitespaces(!0);n=/\ufeff|\u00a0/;p={table:1,tbody:1,tr:1};1<b.length&&(d=b[b.length- -1],b[0].setEnd(d.endContainer,d.endOffset));d=b[0];b=d.collapsed;var v,t,u;if((e=d.getEnclosedNode())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in B&&(!e.is("a")||!e.getText()))try{u=e.$.createControlRange();u.addElement(e.$);u.select();return}catch(r){}if(d.startContainer.type==CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in p||d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in p)d.shrink(CKEDITOR.NODE_ELEMENT,!0),b=d.collapsed;u=d.createBookmark();p=u.startNode;b||(l=u.endNode); -u=d.document.$.body.createTextRange();u.moveToElementText(p.$);u.moveStart("character",1);l?(n=d.document.$.body.createTextRange(),n.moveToElementText(l.$),u.setEndPoint("EndToEnd",n),u.moveEnd("character",-1)):(v=p.getNext(C),t=p.hasAscendant("pre"),v=!(v&&v.getText&&v.getText().match(n))&&(t||!p.hasPrevious()||p.getPrevious().is&&p.getPrevious().is("br")),t=d.document.createElement("span"),t.setHtml("\x26#65279;"),t.insertBefore(p),v&&d.document.createText("").insertBefore(p));d.setStartBefore(p); -p.remove();b?(v?(u.moveStart("character",-1),u.select(),d.document.$.selection.clear()):u.select(),d.moveToPosition(t,CKEDITOR.POSITION_BEFORE_START),t.remove()):(d.setEndBefore(l),l.remove(),u.select())}else{l=this.getNative();if(!l)return;this.removeAllRanges();for(u=0;u<b.length;u++){if(u<b.length-1&&(v=b[u],t=b[u+1],n=v.clone(),n.setStart(v.endContainer,v.endOffset),n.setEnd(t.startContainer,t.startOffset),!n.collapsed&&(n.shrink(CKEDITOR.NODE_ELEMENT,!0),d=n.getCommonAncestor(),n=n.getEnclosedNode(), -d.isReadOnly()||n&&n.isReadOnly()))){t.setStart(v.startContainer,v.startOffset);b.splice(u--,1);continue}d=b[u];t=this.document.$.createRange();d.collapsed&&CKEDITOR.env.webkit&&h(d)&&(n=m(this.root),d.insertNode(n),(v=n.getNext())&&!n.getPrevious()&&v.type==CKEDITOR.NODE_ELEMENT&&"br"==v.getName()?(g(this.root),d.moveToPosition(v,CKEDITOR.POSITION_BEFORE_START)):d.moveToPosition(n,CKEDITOR.POSITION_AFTER_END));t.setStart(d.startContainer.$,d.startOffset);try{t.setEnd(d.endContainer.$,d.endOffset)}catch(x){if(0<= -x.toString().indexOf("NS_ERROR_ILLEGAL_VALUE"))d.collapse(1),t.setEnd(d.endContainer.$,d.endOffset);else throw x;}l.addRange(t)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a,b){var c=this.root.editor;void 0===b&&a.hasAttribute("aria-label")&&(b=a.getAttribute("aria-label"));this.reset();r(c,b);var d=this._.cache,e=new CKEDITOR.dom.range(this.root);e.setStartBefore(a);e.setEndAfter(a);d.ranges=new CKEDITOR.dom.rangeList(e);d.selectedElement=d.startElement=a;d.type=CKEDITOR.SELECTION_ELEMENT; -d.selectedText=d.nativeSel=null;this.isFake=1;this.rev=p++;c._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},isInTable:function(b){return a(this.getRanges(),b)},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake= -1);return a},selectBookmarks:function(b){for(var c=[],d,e=0;e<b.length;e++){var g=new CKEDITOR.dom.range(this.root);g.moveToBookmark(b[e]);c.push(g)}b.isFake&&(d=a(c)?c[0]._getTableElement():c[0].getEnclosedNode(),d&&d.type==CKEDITOR.NODE_ELEMENT||(CKEDITOR.warn("selection-not-fake"),b.isFake=0));b.isFake&&!a(c)?this.fake(d):this.selectRanges(c);return this},getCommonAncestor:function(){var a=this.getRanges();return a.length?a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer):null}, -scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[w?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}}}(),"use strict",CKEDITOR.STYLE_BLOCK=1,CKEDITOR.STYLE_INLINE=2,CKEDITOR.STYLE_OBJECT=3,function(){function a(a,b){for(var c,d;(a=a.getParent())&&!a.equals(b);)if(a.getAttribute("data-nostyle"))c=a;else if(!d){var e=a.getAttribute("contentEditable"); -"false"==e?c=a:"true"==e&&(d=1)}return c}function f(a,b,c,d){return(a.getPosition(b)|d)==d&&(!c.childRule||c.childRule(a))}function b(c){var d=c.document;if(c.collapsed)d=v(this,d),c.insertNode(d),c.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END);else{var g=this.element,h=this._.definition,m,k=h.ignoreReadonly,l=k||h.includeReadonly;null==l&&(l=c.root.getCustomData("cke_includeReadonly"));var n=CKEDITOR.dtd[g];n||(m=!0,n=CKEDITOR.dtd.span);c.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.trim();var p=c.createBookmark(), -t=p.startNode,u=p.endNode,w=t,r;if(!k){var x=c.getCommonAncestor(),k=a(t,x),x=a(u,x);k&&(w=k.getNextSourceNode(!0));x&&(u=x)}for(w.getPosition(u)==CKEDITOR.POSITION_FOLLOWING&&(w=0);w;){k=!1;if(w.equals(u))w=null,k=!0;else{var z=w.type==CKEDITOR.NODE_ELEMENT?w.getName():null,x=z&&"false"==w.getAttribute("contentEditable"),q=z&&w.getAttribute("data-nostyle");if(z&&w.data("cke-bookmark")){w=w.getNextSourceNode(!0);continue}if(x&&l&&CKEDITOR.dtd.$block[z])for(var A=w,B=e(A),E=void 0,D=B.length,da=0, -A=D&&new CKEDITOR.dom.range(A.getDocument());da<D;++da){var E=B[da],H=CKEDITOR.filter.instances[E.data("cke-filter")];if(H?H.check(this):1)A.selectNodeContents(E),b.call(this,A)}B=z?!n[z]||q?0:x&&!l?0:f(w,u,h,L):1;if(B)if(E=w.getParent(),B=h,D=g,da=m,!E||!(E.getDtd()||CKEDITOR.dtd.span)[D]&&!da||B.parentRule&&!B.parentRule(E))k=!0;else{if(r||z&&CKEDITOR.dtd.$removeEmpty[z]&&(w.getPosition(u)|L)!=L||(r=c.clone(),r.setStartBefore(w)),z=w.type,z==CKEDITOR.NODE_TEXT||x||z==CKEDITOR.NODE_ELEMENT&&!w.getChildCount()){for(var z= -w,G;(k=!z.getNext(I))&&(G=z.getParent(),n[G.getName()])&&f(G,t,h,J);)z=G;r.setEndAfter(z)}}else k=!0;w=w.getNextSourceNode(q||x)}if(k&&r&&!r.collapsed){for(var k=v(this,d),x=k.hasAttributes(),q=r.getCommonAncestor(),z={},B={},E={},D={},ea,F,ha;k&&q;){if(q.getName()==g){for(ea in h.attributes)!D[ea]&&(ha=q.getAttribute(F))&&(k.getAttribute(ea)==ha?B[ea]=1:D[ea]=1);for(F in h.styles)!E[F]&&(ha=q.getStyle(F))&&(k.getStyle(F)==ha?z[F]=1:E[F]=1)}q=q.getParent()}for(ea in B)k.removeAttribute(ea);for(F in z)k.removeStyle(F); -x&&!k.hasAttributes()&&(k=null);k?(r.extractContents().appendTo(k),r.insertNode(k),y.call(this,k),k.mergeSiblings(),CKEDITOR.env.ie||k.$.normalize()):(k=new CKEDITOR.dom.element("span"),r.extractContents().appendTo(k),r.insertNode(k),y.call(this,k),k.remove(!0));r=null}}c.moveToBookmark(p);c.shrink(CKEDITOR.SHRINK_TEXT);c.shrink(CKEDITOR.NODE_ELEMENT,!0)}}function c(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(l.getParent()),e=null,g=null,f= -0;f<a.elements.length;f++){var h=a.elements[f];if(h==a.block||h==a.blockLimit)break;n.checkElementRemovable(h,!0)&&(e=h)}for(f=0;f<c.elements.length;f++){h=c.elements[f];if(h==c.block||h==c.blockLimit)break;n.checkElementRemovable(h,!0)&&(g=h)}g&&l.breakParent(g);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var c=a.createBookmark(),d=c.startNode,e=this._.definition.alwaysRemoveElement;if(a.collapsed){for(var g=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,h=0,m;h<g.elements.length&& -(m=g.elements[h])&&m!=g.block&&m!=g.blockLimit;h++)if(this.checkElementRemovable(m)){var k;!e&&a.collapsed&&(a.checkBoundaryOfElement(m,CKEDITOR.END)||(k=a.checkBoundaryOfElement(m,CKEDITOR.START)))?(f=m,f.match=k?"start":"end"):(m.mergeSiblings(),m.is(this.element)?q.call(this,m):w(m,t(this)[m.getName()]))}if(f){e=d;for(h=0;;h++){m=g.elements[h];if(m.equals(f))break;else if(m.match)continue;else m=m.clone();m.append(e);e=m}e["start"==f.match?"insertBefore":"insertAfter"](f)}}else{var l=c.endNode, -n=this;b();for(g=d;!g.equals(l);)f=g.getNextSourceNode(),g.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(g)&&(g.getName()==this.element?q.call(this,g):w(g,t(this)[g.getName()]),f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)&&(b(),f=d.getNext())),g=f}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,!0)}function e(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function l(a){var b=a.getEnclosedNode()||a.getCommonAncestor(!1, -!0);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&u(a,this)}function k(a){var b=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&a.removeStyle(e)}}function d(a){var b=a.createBookmark(!0),c=a.createIterator();c.enforceRealBlocks=!0;this._.enterMode&&(c.enlargeBr= -this._.enterMode!=CKEDITOR.ENTER_BR);for(var d,e=a.document,g;d=c.getNextParagraph();)!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)&&(g=v(this,e,d),m(d,g));a.moveToBookmark(b)}function h(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=!0;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)this.checkElementRemovable(d)&&(d.is("pre")?((e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P? -"p":"div"))&&d.copyAttributes(e),m(d,e)):q.call(this,d));a.moveToBookmark(b)}function m(a,b){var c=!b;c&&(b=a.getDocument().createElement("div"),a.copyAttributes(b));var d=b&&b.is("pre"),e=a.is("pre"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=n(f,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");f=f.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g," ");f=f.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div"); -h.append(e);e.$.outerHTML="\x3cpre\x3e"+f+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(f);b=e}else f?b=r(c?[a.getHtml()]:g(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,m;(m=c.getPrevious(G))&&m.type==CKEDITOR.NODE_ELEMENT&&m.is("pre")&&(d=n(m.getHtml(),/\n$/,"")+"\n\n"+n(c.getHtml(),/^\n/,""),CKEDITOR.env.ie?c.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e":c.setHtml(d),m.remove())}else c&&p(b)}function g(a){var b=[];n(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, -function(a,b,c){return b+"\x3c/pre\x3e"+c+"\x3cpre\x3e"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function n(a,b,c){var d="",e="";a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function r(a,b){var c;1<a.length&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\r\n|\r)/g,"\n"),e=n(e,/^[ \t]*\n/, -""),e=n(e,/\n$/,""),e=n(e,/^[ \t]+|[ \t]+$/g,function(a,b){return 1==a.length?"\x26nbsp;":b?" "+CKEDITOR.tools.repeat("\x26nbsp;",a.length-1):CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "}),e=e.replace(/\n/g,"\x3cbr\x3e"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "});if(c){var g=b.clone();g.setHtml(e);c.append(g)}else b.setHtml(e)}return c||b}function q(a,b){var c=this._.definition,d=c.attributes,c=c.styles,e=t(this)[a.getName()],g=CKEDITOR.tools.isEmpty(d)&& -CKEDITOR.tools.isEmpty(c),f;for(f in d)if("class"!=f&&!this._.definition.fullMatch||a.getAttribute(f)==A(f,d[f]))b&&"data-"==f.slice(0,5)||(g=a.hasAttribute(f),a.removeAttribute(f));for(var h in c)this._.definition.fullMatch&&a.getStyle(h)!=A(h,c[h],!0)||(g=g||!!a.getStyle(h),a.removeStyle(h));w(a,e,B[a.getName()]);g&&(this._.definition.alwaysRemoveElement?p(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?p(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P? -"p":"div"))}function y(a){for(var b=t(this),c=a.getElementsByTag(this.element),d,e=c.count();0<=--e;)d=c.getItem(e),d.isReadOnly()||q.call(this,d,!0);for(var g in b)if(g!=this.element)for(c=a.getElementsByTag(g),e=c.count()-1;0<=e;e--)d=c.getItem(e),d.isReadOnly()||w(d,b[g])}function w(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0],g;if(g=a.getAttribute(e)){var f=b[d][1];(null===f||f.test&&f.test(g)||"string"==typeof f&&g==f)&&a.removeAttribute(e)}}c||p(a)}function p(a,b){if(!a.hasAttributes()|| -b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(G),d=a.getNext(G);!c||c.type!=CKEDITOR.NODE_TEXT&&c.isBlockBoundary({br:1})||a.append("br",1);!d||d.type!=CKEDITOR.NODE_TEXT&&d.isBlockBoundary({br:1})||a.append("br");a.remove(!0)}else c=a.getFirst(),d=a.getLast(),a.remove(!0),c&&(c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings(),d&&!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings())}function v(a,b,c){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d); -d=u(d,a);b.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):b.setCustomData("doc_processing_style",1);return d}function u(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute("style",c);return a}function z(a,b){for(var c in a)a[c]=a[c].replace(F,function(a,c){return b[c]})}function t(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)|| -(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],g,f;"string"==typeof e?g=e.toLowerCase():(g=e.element?e.element.toLowerCase():a.element,f=e.attributes);e=b[g]||(b[g]={});if(f){var e=e.attributes=e.attributes||[],h;for(h in f)e.push([h.toLowerCase(),f[h]])}}}return b}function A(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":"setAttribute"](a,b);return d[c?"getStyle":"getAttribute"](a)}function D(a,b){function c(a,b){return"font-family"==b.toLowerCase()?a.replace(/["']/g,""):a}"string"== -typeof a&&(a=CKEDITOR.tools.parseCssText(a));"string"==typeof b&&(b=CKEDITOR.tools.parseCssText(b,!0));for(var d in a)if(!(d in b)||c(b[d],d)!=c(a[d],d)&&"inherit"!=a[d]&&"inherit"!=b[d])return!1;return!0}function x(a,b,c){var d=a.document,e=a.getRanges();b=b?this.removeFromRange:this.applyToRange;var g,f;if(a.isFake&&a.isInTable())for(g=[],f=0;f<e.length;f++)g.push(e[f].clone());for(var h=e.createIterator();f=h.getNextRange();)b.call(this,f,c);a.selectRanges(g||e);d.removeCustomData("doc_processing_style")} -var B={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},E={a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},H=/\s*(?:;\s*|$)/,F=/#\((.+?)\)/g,I=CKEDITOR.dom.walker.bookmark(0,1),G=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){if("string"== -typeof a.type)return new CKEDITOR.style.customHandlers[a.type](a);var c=a.attributes;c&&c.style&&(a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style)),delete c.style);b&&(a=CKEDITOR.tools.clone(a),z(a.attributes,b),z(a.styles,b));c=this.element=a.element?"string"==typeof a.element?a.element.toLowerCase():a.element:"*";this.type=a.type||(B[c]?CKEDITOR.STYLE_BLOCK:E[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);"object"==typeof this.element&&(this.type=CKEDITOR.STYLE_OBJECT); -this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return x.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;b||(this._.enterMode=a.activeEnterMode);x.call(this,a.getSelection(),0,a);this._.enterMode=b}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return x.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;b||(this._.enterMode=a.activeEnterMode); -x.call(this,a.getSelection(),1,a);this._.enterMode=b}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?d:this.type==CKEDITOR.STYLE_OBJECT?l:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?h:this.type==CKEDITOR.STYLE_OBJECT?k:null;return this.removeFromRange(a)},applyToObject:function(a){u(a,this)},checkActive:function(a,b){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block|| -a.blockLimit,!0,b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var c=a.elements,d=0,e;d<c.length;d++)if(e=c[d],this.type!=CKEDITOR.STYLE_INLINE||e!=a.block&&e!=a.blockLimit){if(this.type==CKEDITOR.STYLE_OBJECT){var g=e.getName();if(!("string"==typeof this.element?g==this.element:g in this.element))continue}if(this.checkElementRemovable(e,!0,b))return!0}}return!1},checkApplicable:function(a,b,c){b&&b instanceof CKEDITOR.filter&&(c=b);if(c&&!c.check(this))return!1;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element); -case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return!0},checkElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return!1;var d=a.getName();if("string"==typeof this.element?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return!0;if(d=c._AC)c=d;else{var d={},e=0,g=c.attributes;if(g)for(var f in g)e++,d[f]=g[f];if(f=CKEDITOR.style.getStyleText(c))d.style||e++,d.style=f;d._length=e;c=c._AC=d}if(c._length){for(var h in c)if("_length"!= -h)if(d=a.getAttribute(h)||"","style"==h?D(c[h],d):c[h]==d){if(!b)return!0}else if(b)return!1;if(b)return!0}else return!0}return!1},checkElementRemovable:function(a,b,c){if(this.checkElementMatch(a,b,c))return!0;if(b=t(this)[a.getName()]){var d;if(!(b=b.attributes))return!0;for(c=0;c<b.length;c++)if(d=b[c][0],d=a.getAttribute(d)){var e=b[c][1];if(null===e)return!0;if("string"==typeof e){if(d==e)return!0}else if(e.test(d))return!0}}return!1},buildPreview:function(a){var b=this._.definition,c=[],d=b.element; -"bdo"==d&&(d="span");var c=["\x3c",d],e=b.attributes;if(e)for(var g in e)c.push(" ",g,'\x3d"',e[g],'"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style\x3d"',e,'"');c.push("\x3e",a||b.name,"\x3c/",d,"\x3e");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(H,";"));for(var e in b){var g=b[e],f=(e+":"+g).replace(H,";");"inherit"== -g?d+=f:c+=f}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,!0));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),{assignedTo:CKEDITOR.STYLE_OBJECT},a,!0);return this.customHandlers[a.type]=b};var L=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,J=CKEDITOR.POSITION_FOLLOWING| -CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED}(),CKEDITOR.styleCommand=function(a,f){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,f,!0)},CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)},CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet"),CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet), -CKEDITOR.loadStylesSet=function(a,f,b){CKEDITOR.stylesSet.addExternal(a,f,"");CKEDITOR.stylesSet.load(a,b)},CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,f){var b=this._.styleStateChangeCallbacks;b||(b=this._.styleStateChangeCallbacks=[],this.on("selectionChange",function(a){for(var e=0;e<b.length;e++){var f=b[e],k=f.style.checkActive(a.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;f.fn.call(this,k)}}));b.push({style:a,fn:f})},applyStyle:function(a){a.apply(this)}, -removeStyle:function(a){a.remove(this)},getStylesSet:function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);else{var f=this,b=f.config.stylesCombo_stylesSet||f.config.stylesSet;if(!1===b)a(null);else if(b instanceof Array)f._.stylesDefinitions=b,a(b);else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){f._.stylesDefinitions=b[c];a(f._.stylesDefinitions)})}}}}), -CKEDITOR.dom.comment=function(a,f){"string"==typeof a&&(a=(f?f.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)},CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"\x3c!--"+this.$.nodeValue+"--\x3e"}}),"use strict",function(){var a={},f={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit|| -b in CKEDITOR.dtd.$empty||(f[b]=1);CKEDITOR.dom.elementPath=function(b,e){var l=null,k=null,d=[],h=b,m;e=e||b.getDocument().getBody();h||(h=e);do if(h.type==CKEDITOR.NODE_ELEMENT){d.push(h);if(!this.lastElement&&(this.lastElement=h,h.is(CKEDITOR.dtd.$object)||"false"==h.getAttribute("contenteditable")))continue;if(h.equals(e))break;if(!k&&(m=h.getName(),"true"==h.getAttribute("contenteditable")?k=h:!l&&f[m]&&(l=h),a[m])){if(m=!l&&"div"==m){a:{m=h.getChildren();for(var g=0,n=m.count();g<n;g++){var r= -m.getItem(g);if(r.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[r.getName()]){m=!0;break a}}m=!1}m=!m}m?l=h:k=h}}while(h=h.getParent());k||(k=e);this.block=l;this.blockLimit=k;this.root=e;this.elements=d}}(),CKEDITOR.dom.elementPath.prototype={compare:function(a){var f=this.elements;a=a&&a.elements;if(!a||f.length!=a.length)return!1;for(var b=0;b<f.length;b++)if(!f[b].equals(a[b]))return!1;return!0},contains:function(a,f,b){var c=0,e;"string"==typeof a&&(e=function(b){return b.getName()==a});a instanceof -CKEDITOR.dom.element?e=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?e=function(b){return-1<CKEDITOR.tools.indexOf(a,b.getName())}:"function"==typeof a?e=a:"object"==typeof a&&(e=function(b){return b.getName()in a});var l=this.elements,k=l.length;f&&(b?c+=1:--k);b&&(l=Array.prototype.slice.call(l,0),l.reverse());for(;c<k;c++)if(e(l[c]))return l[c];return null},isContextFor:function(a){var f;return a in CKEDITOR.dtd.$block?(f=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&& -this.block||this.blockLimit,!!f.getDtd()[a]):!0},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}},CKEDITOR.dom.text=function(a,f){"string"==typeof a&&(a=(f?f.$:document).createTextNode(a));this.$=a},CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var f= -this.$.parentNode,b=f.childNodes.length,c=this.getLength(),e=this.getDocument(),l=new CKEDITOR.dom.text(this.$.splitText(a),e);f.childNodes.length==b&&(a>=c?(l=e.createText(""),l.insertAfter(this)):(a=e.createText(""),a.insertAfter(l),a.remove()));return l},substring:function(a,f){return"number"!=typeof f?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,f)}}),function(){function a(a,c,e){var f=a.serializable,k=c[e?"endContainer":"startContainer"],d=e?"endOffset":"startOffset",h=f?c.document.getById(a.startNode): -a.startNode;a=f?c.document.getById(a.endNode):a.endNode;k.equals(h.getPrevious())?(c.startOffset=c.startOffset-k.getLength()-a.getPrevious().getLength(),k=a.getNext()):k.equals(a.getPrevious())&&(c.startOffset-=k.getLength(),k=a.getNext());k.equals(h.getParent())&&c[d]++;k.equals(a.getParent())&&c[d]++;c[e?"endContainer":"startContainer"]=k;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a, -f)};var f={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),e=[],f;return{getNextRange:function(k){f=void 0===f?0:f+1;var d=a[f];if(d&&1<a.length){if(!f)for(var h=a.length-1;0<=h;h--)e.unshift(a[h].createBookmark(!0));if(k)for(var m=0;a[f+m+1];){var g=d.document;k=0;h=g.getById(e[m].endNode);for(g=g.getById(e[m+1].startNode);;){h=h.getNextSourceNode(!1);if(g.equals(h))k=1;else if(c(h)||h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary())continue;break}if(!k)break;m++}for(d.moveToBookmark(e.shift());m--;)h= -a[++f],h.moveToBookmark(e.shift()),d.setEnd(h.endContainer,h.endOffset)}return d}}},createBookmarks:function(b){for(var c=[],e,f=0;f<this.length;f++){c.push(e=this[f].createBookmark(b,!0));for(var k=f+1;k<this.length;k++)this[k]=a(e,this[k]),this[k]=a(e,this[k],!0)}return c},createBookmarks2:function(a){for(var c=[],e=0;e<this.length;e++)c.push(this[e].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}}(),function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]|| -"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function f(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,b){return a>b?-1:1}),e=0,f;e<c.length;e++)if(f=c[e],d.ie&&(f.replace(/^ie/,"")==d.version||d.quirks&&"iequirks"==f)&&(f="ie"),d[f]){b+="_"+c[e];break}return CKEDITOR.getUrl(a()+b+".css")}function b(a,b){l[a]||(CKEDITOR.document.appendStyleSheet(f(a)),l[a]=1);b&&b()}function c(a){var b=a.getById(k);b||(b=a.getHead().append("style"),b.setAttribute("id", -k),b.setAttribute("type","text/css"));return b}function e(a,b,c){var d,e,f;if(CKEDITOR.env.webkit)for(b=b.split("}").slice(0,-1),e=0;e<b.length;e++)b[e]=b[e].split("{");for(var h=0;h<a.length;h++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[h].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&&11>CKEDITOR.env.version?a[h].$.styleSheet.cssText+=f:a[h].$.innerHTML+=f}}var l={};CKEDITOR.skin= -{path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(f(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,b,c,d,e){var f;a&&(a=a.toLowerCase(),b&&(f=this.icons[a+"-rtl"]),f||(f=this.icons[a]));a=c||f&&f.path||"";d=d||f&&f.offset;e=e||f&&f.bgsize|| -"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,f="",m="";"function"==typeof c&&(f=c(this,"editor"),m=c(this,"panel"));a=[[h,a]];e([b],f,a);e(d,m,a)}).call(this,a)}});var k="cke_ui_color", -d=[],h=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor;a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);d.push(a);var f=b.getUiColor();f&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[h,f]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})}(),function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=!1;else{var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', -CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var f=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!f||f!=b)}catch(c){CKEDITOR.env.hc=!1}a.remove()}CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending)for(delete CKEDITOR._.pending,f=0;f<a.length;f++)CKEDITOR.editor.prototype.constructor.apply(a[f][0], -a[f][1]),CKEDITOR.add(a[f][0])}(),CKEDITOR.skin.name="moono-lisa",CKEDITOR.skin.ua_editor="ie,iequirks,ie8,gecko",CKEDITOR.skin.ua_dialog="ie,iequirks,ie8",CKEDITOR.skin.chameleon=function(){var a=function(){return function(a,c){for(var e=a.match(/[^#]./g),f=0;3>f;f++){var k=f,d;d=parseInt(e[f],16);d=("0"+(0>c?0|d*(1+c):0|d+(255-d)*c).toString(16)).slice(-2);e[k]=d}return"#"+e.join("")}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "), -panel:new CKEDITOR.template(".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; -return function(b,c){var e=a(b.uiColor,.4),e={id:"."+b.id,defaultBorder:a(e,-.2),toolbarElementsBorder:a(e,-.25),defaultBackground:e,lightBackground:a(e,.8),darkBackground:a(e,-.15),ckeButtonOn:a(e,.4),ckeResizer:a(e,-.4),ckeColorauto:a(e,.8),dialogBody:a(e,.7),dialogTab:a(e,.65),dialogTabSelected:"#FFF",dialogTabSelectedBorder:"#FFF",elementsPathColor:a(e,-.6),menubuttonHover:a(e,.1),menubuttonIcon:a(e,.5),menubuttonIconHover:a(e,.3)};return f[c].output(e).replace(/\[/g,"{").replace(/\]/g,"}")}}(), -CKEDITOR.plugins.add("dialogui",{onLoad:function(){var a=function(a){this._||(this._={});this._["default"]=this._.initValue=a["default"]||"";this._.required=a.required||!1;for(var b=[this._],c=1;c<arguments.length;c++)b.push(arguments[c]);b.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,b);return this._},f={build:function(a,b,c){return new CKEDITOR.ui.dialog.textInput(a,b,c)}},b={build:function(a,b,c){return new CKEDITOR.ui.dialog[b.type](a,b,c)}},c={isChanged:function(){return this.getValue()!= -this.getInitValue()},reset:function(a){this.setValue(this.getInitValue(),a)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._["default"]},getInitValue:function(){return this._.initValue}},e=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(a,b){this._.domOnChangeRegistered||(a.on("load",function(){this.getInputElement().on("change",function(){a.parts.dialog.isVisible()&&this.fire("change",{value:this.getValue()})}, -this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},!0),l=/^on([A-Z]\w+)/,k=function(a){for(var b in a)(l.test(b)||"title"==b||"type"==b)&&delete a[b];return a},d=function(a){a=a.data.getKeystroke();a==CKEDITOR.SHIFT+CKEDITOR.ALT+36?this.setDirectionMarker("ltr"):a==CKEDITOR.SHIFT+CKEDITOR.ALT+35&&this.setDirectionMarker("rtl")};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,c,d,e){if(!(4>arguments.length)){var f=a.call(this,c);f.labelId=CKEDITOR.tools.getNextId()+ -"_label";this._.children=[];var k={role:c.role||"presentation"};c.includeLabel&&(k["aria-labelledby"]=f.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"div",null,k,function(){var a=[],d=c.required?" cke_required":"";"horizontal"!=c.labelLayout?a.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label'+d+'" ',' id\x3d"'+f.labelId+'"',f.inputId?' for\x3d"'+f.inputId+'"':"",(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e",c.label,"\x3c/label\x3e",'\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', -c.controlStyle?' style\x3d"'+c.controlStyle+'"':"",' role\x3d"presentation"\x3e',e.call(this,b,c),"\x3c/div\x3e"):(d={type:"hbox",widths:c.widths,padding:0,children:[{type:"html",html:'\x3clabel class\x3d"cke_dialog_ui_labeled_label'+d+'" id\x3d"'+f.labelId+'" for\x3d"'+f.inputId+'"'+(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e"+CKEDITOR.tools.htmlEncode(c.label)+"\x3c/label\x3e"},{type:"html",html:'\x3cspan class\x3d"cke_dialog_ui_labeled_content"'+(c.controlStyle?' style\x3d"'+c.controlStyle+ -'"':"")+"\x3e"+e.call(this,b,c)+"\x3c/span\x3e"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,d,a));return a.join("")})}},textInput:function(b,c,e){if(!(3>arguments.length)){a.call(this,c);var f=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",k={"class":"cke_dialog_ui_input_"+c.type,id:f,type:c.type};c.validate&&(this.validate=c.validate);c.maxLength&&(k.maxlength=c.maxLength);c.size&&(k.size=c.size);c.inputStyle&&(k.style=c.inputStyle);var l=this,y=!1;b.on("load",function(){l.getInputElement().on("keydown", -function(a){13==a.data.getKeystroke()&&(y=!0)});l.getInputElement().on("keyup",function(a){13==a.data.getKeystroke()&&y&&(b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0),y=!1);l.bidi&&d.call(l,a)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,c,e,function(){var a=['\x3cdiv class\x3d"cke_dialog_ui_input_',c.type,'" role\x3d"presentation"'];c.width&&a.push('style\x3d"width:'+c.width+'" ');a.push("\x3e\x3cinput ");k["aria-labelledby"]=this._.labelId;this._.required&& -(k["aria-required"]=this._.required);for(var b in k)a.push(b+'\x3d"'+k[b]+'" ');a.push(" /\x3e\x3c/div\x3e");return a.join("")})}},textarea:function(b,c,e){if(!(3>arguments.length)){a.call(this,c);var f=this,k=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",l={};c.validate&&(this.validate=c.validate);l.rows=c.rows||5;l.cols=c.cols||20;l["class"]="cke_dialog_ui_input_textarea "+(c["class"]||"");"undefined"!=typeof c.inputStyle&&(l.style=c.inputStyle);c.dir&&(l.dir=c.dir);if(f.bidi)b.on("load", -function(){f.getInputElement().on("keyup",d)},f);CKEDITOR.ui.dialog.labeledElement.call(this,b,c,e,function(){l["aria-labelledby"]=this._.labelId;this._.required&&(l["aria-required"]=this._.required);var a=['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"',k,'" '],b;for(b in l)a.push(b+'\x3d"'+CKEDITOR.tools.htmlEncode(l[b])+'" ');a.push("\x3e",CKEDITOR.tools.htmlEncode(f._["default"]),"\x3c/textarea\x3e\x3c/div\x3e");return a.join("")})}},checkbox:function(b, -c,d){if(!(3>arguments.length)){var e=a.call(this,c,{"default":!!c["default"]});c.validate&&(this.validate=c.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"span",null,null,function(){var a=CKEDITOR.tools.extend({},c,{id:c.id?c.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},!0),d=[],f=CKEDITOR.tools.getNextId()+"_label",g={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":f};k(a);c["default"]&&(g.checked="checked");"undefined"!=typeof a.inputStyle&&(a.style=a.inputStyle); -e.checkbox=new CKEDITOR.ui.dialog.uiElement(b,a,d,"input",null,g);d.push(' \x3clabel id\x3d"',f,'" for\x3d"',g.id,'"'+(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e",CKEDITOR.tools.htmlEncode(c.label),"\x3c/label\x3e");return d.join("")})}},radio:function(b,c,d){if(!(3>arguments.length)){a.call(this,c);this._["default"]||(this._["default"]=this._.initValue=c.items[0][1]);c.validate&&(this.validate=c.validate);var e=[],f=this;c.role="radiogroup";c.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this, -b,c,d,function(){for(var a=[],d=[],g=(c.id?c.id:CKEDITOR.tools.getNextId())+"_radio",l=0;l<c.items.length;l++){var v=c.items[l],u=void 0!==v[2]?v[2]:v[0],z=void 0!==v[1]?v[1]:v[0],t=CKEDITOR.tools.getNextId()+"_radio_input",A=t+"_label",t=CKEDITOR.tools.extend({},c,{id:t,title:null,type:null},!0),u=CKEDITOR.tools.extend({},t,{title:u},!0),D={type:"radio","class":"cke_dialog_ui_radio_input",name:g,value:z,"aria-labelledby":A},x=[];f._["default"]==z&&(D.checked="checked");k(t);k(u);"undefined"!=typeof t.inputStyle&& -(t.style=t.inputStyle);t.keyboardFocusable=!0;e.push(new CKEDITOR.ui.dialog.uiElement(b,t,x,"input",null,D));x.push(" ");new CKEDITOR.ui.dialog.uiElement(b,u,x,"label",null,{id:A,"for":D.id},v[0]);a.push(x.join(""))}new CKEDITOR.ui.dialog.hbox(b,e,a,d);return d.join("")});this._.children=e}},button:function(b,c,d){if(arguments.length){"function"==typeof c&&(c=c(b.getParentEditor()));a.call(this,c,{disabled:c.disabled||!1});CKEDITOR.event.implementOn(this);var e=this;b.on("load",function(){var a=this.getElement(); -(function(){a.on("click",function(a){e.click();a.data.preventDefault()});a.on("keydown",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var f=CKEDITOR.tools.extend({},c);delete f.style;var k=CKEDITOR.tools.getNextId()+"_label";CKEDITOR.ui.dialog.uiElement.call(this,b,f,d,"a",null,{style:c.style,href:"javascript:void(0)",title:c.label,hidefocus:"true","class":c["class"],role:"button","aria-labelledby":k},'\x3cspan id\x3d"'+k+'" class\x3d"cke_dialog_ui_button"\x3e'+ -CKEDITOR.tools.htmlEncode(c.label)+"\x3c/span\x3e")}},select:function(b,c,d){if(!(3>arguments.length)){var e=a.call(this,c);c.validate&&(this.validate=c.validate);e.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){var a=CKEDITOR.tools.extend({},c,{id:c.id?c.id+"_select":CKEDITOR.tools.getNextId()+"_select"},!0),d=[],f=[],g={id:e.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};d.push('\x3cdiv class\x3d"cke_dialog_ui_input_', -c.type,'" role\x3d"presentation"');c.width&&d.push('style\x3d"width:'+c.width+'" ');d.push("\x3e");void 0!==c.size&&(g.size=c.size);void 0!==c.multiple&&(g.multiple=c.multiple);k(a);for(var l=0,v;l<c.items.length&&(v=c.items[l]);l++)f.push('\x3coption value\x3d"',CKEDITOR.tools.htmlEncode(void 0!==v[1]?v[1]:v[0]).replace(/"/g,"\x26quot;"),'" /\x3e ',CKEDITOR.tools.htmlEncode(v[0]));"undefined"!=typeof a.inputStyle&&(a.style=a.inputStyle);e.select=new CKEDITOR.ui.dialog.uiElement(b,a,d,"select",null, -g,f.join(""));d.push("\x3c/div\x3e");return d.join("")})}},file:function(b,c,d){if(!(3>arguments.length)){void 0===c["default"]&&(c["default"]="");var e=CKEDITOR.tools.extend(a.call(this,c),{definition:c,buttons:[]});c.validate&&(this.validate=c.validate);b.on("load",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){e.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var a=['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', -e.frameId,'" title\x3d"',c.label,'" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("")})}},fileButton:function(b,c,d){var e=this;if(!(3>arguments.length)){a.call(this,c);c.validate&&(this.validate=c.validate);var f=CKEDITOR.tools.extend({},c),k=f.onClick;f.className=(f.className?f.className+" ":"")+"cke_dialog_ui_button";f.onClick=function(a){var d= -c["for"];k&&!1===k.call(this,a)||(b.getContentElement(d[0],d[1]).submit(),this.disable())};b.on("load",function(){b.getContentElement(c["for"][0],c["for"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,b,f,d)}},html:function(){var a=/^\s*<[\w:]+\s+([^>]*)?>/,b=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,c=/\/$/;return function(d,e,f){if(!(3>arguments.length)){var k=[],l=e.html;"\x3c"!=l.charAt(0)&&(l="\x3cspan\x3e"+l+"\x3c/span\x3e");var p=e.focus;if(p){var v=this.focus;this.focus=function(){("function"== -typeof p?p:v).call(this);this.fire("focus")};e.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,d,e,k,"span",null,null,"");k=k.join("").match(a);l=l.match(b)||["","",""];c.test(l[1])&&(l[1]=l[1].slice(0,-1),l[2]="/"+l[2]);f.push([l[1]," ",k[1]||"",l[2]].join(""))}}}(),fieldset:function(a,b,c,d,e){var f=e.label;this._={children:b};CKEDITOR.ui.dialog.uiElement.call(this,a,e,d,"fieldset",null,null,function(){var a=[];f&&a.push("\x3clegend"+ -(e.labelStyle?' style\x3d"'+e.labelStyle+'"':"")+"\x3e"+f+"\x3c/legend\x3e");for(var b=0;b<c.length;b++)a.push(c[b]);return a.join("")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(a){var b=CKEDITOR.document.getById(this._.labelId);1>b.getChildCount()?(new CKEDITOR.dom.text(a,CKEDITOR.document)).appendTo(b):b.getChild(0).$.nodeValue=a;return this},getLabel:function(){var a= -CKEDITOR.document.getById(this._.labelId);return!a||1>a.getChildCount()?"":a.getChild(0).getText()},eventProcessors:e},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return this._.disabled?!1:this.fire("click",{dialog:this._.dialog})},enable:function(){this._.disabled=!1;var a=this.getElement();a&&a.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()}, -isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(a,b){this.on("click",function(){b.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)}, -focus:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&b.$.focus()},0)},select:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&(b.$.focus(),b.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(a){if(this.bidi){var b=a&&a.charAt(0);(b="‪"==b?"ltr":"‫"==b?"rtl":null)&&(a=a.slice(1));this.setDirectionMarker(b)}a||(a="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)}, -getValue:function(){var a=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&a){var b=this.getDirectionMarker();b&&(a=("ltr"==b?"‪":"‫")+a)}return a},setDirectionMarker:function(a){var b=this.getInputElement();a?b.setAttributes({dir:a,"data-cke-dir-marker":a}):this.getDirectionMarker()&&b.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},c,!0);CKEDITOR.ui.dialog.textarea.prototype= -new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(a,b,c){var d=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),e=this.getInputElement().$;d.$.text=a;d.$.value=void 0===b||null===b?a:b;void 0===c||null===c?CKEDITOR.env.ie?e.add(d.$):e.add(d.$,null):e.add(d.$,c);return this},remove:function(a){this.getInputElement().$.remove(a); -return this},clear:function(){for(var a=this.getInputElement().$;0<a.length;)a.remove(0);return this},keyboardFocusable:!0},c,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(a,b){this.getInputElement().$.checked=a;!b&&this.fire("change",{value:a})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(a, -b){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return e.onChange.apply(this,arguments);a.on("load",function(){var a=this._.checkbox.getElement();a.on("propertychange",function(b){b=b.data.$;"checked"==b.propertyName&&this.fire("change",{value:a.$.checked})},this)},this);this.on("change",b);return null}},keyboardFocusable:!0},c,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(a,b){for(var c=this._.children,d,e=0;e<c.length&&(d=c[e]);e++)d.getElement().$.checked= -d.getValue()==a;!b&&this.fire("change",{value:a})},getValue:function(){for(var a=this._.children,b=0;b<a.length;b++)if(a[b].getElement().$.checked)return a[b].getValue();return null},accessKeyUp:function(){var a=this._.children,b;for(b=0;b<a.length;b++)if(a[b].getElement().$.checked){a[b].getElement().focus();return}a[0].getElement().focus()},eventProcessors:{onChange:function(a,b){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return e.onChange.apply(this,arguments);a.on("load",function(){for(var a= -this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on("propertychange",function(a){a=a.data.$;"checked"==a.propertyName&&this.$.checked&&b.fire("change",{value:this.getAttribute("value")})})},this);this.on("change",b);return null}}},c,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,c,{getInputElement:function(){var a=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<a.$.forms.length?new CKEDITOR.dom.element(a.$.forms[0].elements[0]): -this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();return this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,d=function(a,b,c,d){a.on("formLoaded",function(){a.getInputElement().on(c,d,a)})},e;for(e in a)if(c=e.match(b))this.eventProcessors[e]?this.eventProcessors[e].call(this,this._.dialog,a[e]):d(this,this._.dialog,c[1].toLowerCase(),a[e]);return this},reset:function(){function a(){c.$.open(); -var h="";d.size&&(h=d.size-(CKEDITOR.env.ie?7:0));var u=b.frameId+"_input";c.$.write(['\x3chtml dir\x3d"'+l+'" lang\x3d"'+p+'"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e','\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"'+l+'" lang\x3d"'+p+'" action\x3d"',CKEDITOR.tools.htmlEncode(d.action),'"\x3e\x3clabel id\x3d"',b.labelId,'" for\x3d"',u,'" style\x3d"display:none"\x3e',CKEDITOR.tools.htmlEncode(d.label), -'\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"',u,'" aria-labelledby\x3d"',b.labelId,'" type\x3d"file" name\x3d"',CKEDITOR.tools.htmlEncode(d.id||"cke_upload"),'" size\x3d"',CKEDITOR.tools.htmlEncode(0<h?h:""),'" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e',CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"","window.parent.CKEDITOR.tools.callFunction("+f+");","window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction("+k+")}","\x3c/script\x3e"].join("")); -c.$.close();for(h=0;h<e.length;h++)e[h].enable()}var b=this._,c=CKEDITOR.document.getById(b.frameId).getFrameDocument(),d=b.definition,e=b.buttons,f=this.formLoadedNumber,k=this.formUnloadNumber,l=b.dialog._.editor.lang.dir,p=b.dialog._.editor.langCode;f||(f=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire("formLoaded")},this),k=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on("destroy",function(){CKEDITOR.tools.removeFunction(f); -CKEDITOR.tools.removeFunction(k)}));CKEDITOR.env.gecko?setTimeout(a,500):a()},getValue:function(){return this.getInputElement().$.value||""},setInitValue:function(){this._.initValue=""},eventProcessors:{onChange:function(a,b){this._.domOnChangeRegistered||(this.on("formLoaded",function(){this.getInputElement().on("change",function(){this.fire("change",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype= -new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",f);CKEDITOR.dialog.addUIElement("password",f);CKEDITOR.dialog.addUIElement("textarea",b);CKEDITOR.dialog.addUIElement("checkbox",b);CKEDITOR.dialog.addUIElement("radio",b);CKEDITOR.dialog.addUIElement("button",b);CKEDITOR.dialog.addUIElement("select",b);CKEDITOR.dialog.addUIElement("file",b);CKEDITOR.dialog.addUIElement("fileButton",b);CKEDITOR.dialog.addUIElement("html", -b);CKEDITOR.dialog.addUIElement("fieldset",{build:function(a,b,c){for(var d=b.children,e,f=[],k=[],l=0;l<d.length&&(e=d[l]);l++){var p=[];f.push(p);k.push(CKEDITOR.dialog._.uiElementBuilders[e.type].build(a,e,p))}return new CKEDITOR.ui.dialog[b.type](a,k,f,c,b)}})}}),CKEDITOR.DIALOG_RESIZE_NONE=0,CKEDITOR.DIALOG_RESIZE_WIDTH=1,CKEDITOR.DIALOG_RESIZE_HEIGHT=2,CKEDITOR.DIALOG_RESIZE_BOTH=3,CKEDITOR.DIALOG_STATE_IDLE=1,CKEDITOR.DIALOG_STATE_BUSY=2,function(){function a(){for(var a=this._.tabIdList.length, -b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function f(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function b(a,b){for(var c=a.$.getElementsByTagName("input"),d=0,e=c.length;d<e;d++){var f=new CKEDITOR.dom.element(c[d]); -"text"==f.getAttribute("type").toLowerCase()&&(b?(f.setAttribute("value",f.getCustomData("fake_value")||""),f.removeCustomData("fake_value")):(f.setCustomData("fake_value",f.getAttribute("value")),f.setAttribute("value","")))}}function c(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})}function e(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")} -function l(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",w).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),c=b.getChild([0,0,0,0,0]),d=c.getChild(0),e=c.getChild(1);a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c);!CKEDITOR.env.ie||CKEDITOR.env.quirks|| -CKEDITOR.env.edge||(a="javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())",CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"'+a+'" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(c.getParent()));d.unselectable();e.unselectable();return{element:b,parts:{dialog:b.getChild(0),title:d,close:e,tabs:c.getChild(2),contents:c.getChild([3,0,0,0]),footer:c.getChild([3,0,1,0])}}}function k(a, -b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})}function d(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on("resize",b);a.on("hide",function(){c.removeListener("resize", -b)})}function h(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function m(a){function b(c){var k=a.getSize(),m=CKEDITOR.document.getWindow().getViewPaneSize(),l=c.data.$.screenX,n=c.data.$.screenY,p=l-d.x,v=n-d.y;d={x:l,y:n};e.x+=p;e.y+=v;a.move(e.x+h[3]<g?-h[3]:e.x-h[1]>m.width-k.width-g?m.width-k.width+("rtl"==f.lang.dir?0:h[1]):e.x,e.y+h[0]<g?-h[0]:e.y-h[2]>m.height-k.height-g?m.height-k.height+h[2]:e.y,1);c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mousemove", -b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=x.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var d=null,e=null,f=a.getParentEditor(),g=f.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof g&&(g=20);a.parts.title.on("mousedown",function(f){d={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);e=a.getPosition();if(CKEDITOR.env.ie6Compat){var g= -x.getChild(0).getFrameDocument();g.on("mousemove",b);g.on("mouseup",c)}f.data.preventDefault()},a)}function g(a){function b(c){var n="rtl"==f.lang.dir,p=l.width,v=l.height,t=p+(c.data.$.screenX-m.x)*(n?-1:1)*(a._.moved?1:2),u=v+(c.data.$.screenY-m.y)*(a._.moved?1:2),w=a._.element.getFirst(),w=n&&w.getComputedStyle("right"),x=a.getPosition();x.y+u>k.height&&(u=k.height-x.y);(n?w:x.x)+t>k.width&&(t=k.width-(n?w:x.x));if(e==CKEDITOR.DIALOG_RESIZE_WIDTH||e==CKEDITOR.DIALOG_RESIZE_BOTH)p=Math.max(d.minWidth|| -0,t-g);if(e==CKEDITOR.DIALOG_RESIZE_HEIGHT||e==CKEDITOR.DIALOG_RESIZE_BOTH)v=Math.max(d.minHeight||0,u-h);a.resize(p,v);a._.moved||a.layout();c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);n&&(n.remove(),n=null);if(CKEDITOR.env.ie6Compat){var a=x.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var d=a.definition,e=d.resizable;if(e!=CKEDITOR.DIALOG_RESIZE_NONE){var f=a.getParentEditor(), -g,h,k,m,l,n,p=CKEDITOR.tools.addFunction(function(d){l=a.getSize();var e=a.parts.contents;e.$.getElementsByTagName("iframe").length&&(n=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'),e.append(n));h=l.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));g=l.width-a.parts.contents.getSize("width",1);m={x:d.screenX,y:d.screenY};k=CKEDITOR.document.getWindow().getViewPaneSize(); -CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(e=x.getChild(0).getFrameDocument(),e.on("mousemove",b),e.on("mouseup",c));d.preventDefault&&d.preventDefault()});a.on("load",function(){var b="";e==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":e==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+b+" cke_resizer_"+f.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(f.lang.common.resize)+ -'" onmousedown\x3d"CKEDITOR.tools.callFunction('+p+', event )"\x3e'+("ltr"==f.lang.dir?"◢":"◣")+"\x3c/div\x3e");a.parts.footer.append(b,1)});f.on("destroy",function(){CKEDITOR.tools.removeFunction(p)})}}function n(a){a.data.preventDefault(1)}function r(a){var b=CKEDITOR.document.getWindow(),c=a.config,d=CKEDITOR.skinName||a.config.skin,e=c.dialog_backgroundCoverColor||("moono-lisa"==d?"black":"white"),d=c.dialog_backgroundCoverOpacity,f=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,d,f),g=D[c];g?g.show(): -(f=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",f,"; top: 0px; left: 0px; ",CKEDITOR.env.ie6Compat?"":"background-color: "+e,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(e="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+e+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),f.push("void((function(){"+encodeURIComponent("document.open();("+ -CKEDITOR.tools.fixDomain+")();document.write( '"+e+"' );document.close();")+"})())"),f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),f.push("\x3c/div\x3e"),g=CKEDITOR.dom.element.createFromHtml(f.join("")),g.setOpacity(void 0!==d?d:.5),g.on("keydown",n),g.on("keypress",n),g.on("keyup",n),g.appendTo(CKEDITOR.document.getBody()),D[c]=g);a.focusManager.add(g);x=g;a=function(){var a=b.getViewPaneSize(); -g.setStyles({width:a.width+"px",height:a.height+"px"})};var h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;g.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};A=a;b.on("resize",a);a();CKEDITOR.env.mac&&CKEDITOR.env.webkit||g.focus();if(CKEDITOR.env.ie6Compat){var k=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){k.prevScrollHandler=window.onscroll||function(){}; -window.onscroll=k},0);h()}}function q(a){x&&(a.focusManager.remove(x),a=CKEDITOR.document.getWindow(),x.hide(),a.removeListener("resize",A),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),A=null)}var y=CKEDITOR.tools.cssLength,w='\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+ -CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; -CKEDITOR.dialog=function(b,d){function h(){var a=q._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function k(a){var b=q._.focusList;a=a||0;if(!(1>b.length)){var c=q._.currentFocusIndex;q._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(d){}var e=c,f=1<q._.pageCount;do{e+=a;if(f&&!q._.tabBarMode&&(e==b.length||-1==e)){q._.tabBarMode=!0;q._.tabs[q._.currentTabId][0].focus(); -q._.currentFocusIndex=-1;return}e=(e+b.length)%b.length;if(e==c)break}while(a&&!b[e].isFocusable());b[e].focus();"text"==b[e].type&&b[e].select()}}function n(c){if(q==CKEDITOR.dialog._.currentTop){var d=c.data.getKeystroke(),e="rtl"==b.lang.dir,g=[37,38,39,40];A=y=0;if(9==d||d==CKEDITOR.SHIFT+9)k(d==CKEDITOR.SHIFT+9?-1:1),A=1;else if(d==CKEDITOR.ALT+121&&!q._.tabBarMode&&1<q.getPageCount())q._.tabBarMode=!0,q._.tabs[q._.currentTabId][0].focus(),q._.currentFocusIndex=-1,A=1;else if(-1!=CKEDITOR.tools.indexOf(g, -d)&&q._.tabBarMode)d=-1!=CKEDITOR.tools.indexOf([e?39:37,38],d)?a.call(q):f.call(q),q.selectPage(d),q._.tabs[d][0].focus(),A=1;else if(13!=d&&32!=d||!q._.tabBarMode)if(13==d)d=c.data.getTarget(),d.is("a","button","select","textarea")||d.is("input")&&"button"==d.$.type||((d=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(d.click,0,d),A=1),y=1;else if(27==d)(d=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(d.click,0,d):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),y=1;else return;else this.selectPage(this._.currentTabId), -this._.tabBarMode=!1,this._.currentFocusIndex=-1,k(1),A=1;v(c)}}function v(a){A?a.data.preventDefault(1):y&&a.data.stopPropagation()}var u=CKEDITOR.dialog._.dialogDefinitions[d],w=CKEDITOR.tools.clone(p),x=b.config.dialog_buttonsOrder||"OS",z=b.lang.dir,r={},A,y;("OS"==x&&CKEDITOR.env.mac||"rtl"==x&&"ltr"==z||"ltr"==x&&"rtl"==z)&&w.buttons.reverse();u=CKEDITOR.tools.extend(u(b),w);u=CKEDITOR.tools.clone(u);u=new t(this,u);w=l(b);this._={editor:b,element:w.element,name:d,contentSize:{width:0,height:0}, -size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1};this.parts=w.parts;CKEDITOR.tools.setTimeout(function(){b.fire("ariaWidget",this.parts.contents)},0,this);w={position:CKEDITOR.env.ie6Compat?"absolute":"fixed",top:0,visibility:"hidden"};w["rtl"==z?"right":"left"]=0;this.parts.dialog.setStyles(w);CKEDITOR.event.call(this);this.definition=u=CKEDITOR.fire("dialogDefinition", -{name:d,definition:u},b).definition;if(!("removeDialogTabs"in b._)&&b.config.removeDialogTabs){w=b.config.removeDialogTabs.split(";");for(z=0;z<w.length;z++)if(x=w[z].split(":"),2==x.length){var B=x[0];r[B]||(r[B]=[]);r[B].push(x[1])}b._.removeDialogTabs=r}if(b._.removeDialogTabs&&(r=b._.removeDialogTabs[d]))for(z=0;z<r.length;z++)u.removeContents(r[z]);if(u.onLoad)this.on("load",u.onLoad);if(u.onShow)this.on("show",u.onShow);if(u.onHide)this.on("hide",u.onHide);if(u.onOk)this.on("ok",function(a){b.fire("saveSnapshot"); -setTimeout(function(){b.fire("saveSnapshot")},0);!1===u.onOk.call(this,a)&&(a.data.hide=!1)});this.state=CKEDITOR.DIALOG_STATE_IDLE;if(u.onCancel)this.on("cancel",function(a){!1===u.onCancel.call(this,a)&&(a.data.hide=!1)});var q=this,E=function(a){var b=q._.contents,c=!1,d;for(d in b)for(var e in b[d])if(c=a.call(this,b[d][e]))return};this.on("ok",function(a){E(function(b){if(b.validate){var d=b.validate(this),e="string"==typeof d||!1===d;e&&(a.data.hide=!1,a.stop());c.call(b,!e,"string"==typeof d? -d:void 0);return e}})},this,null,0);this.on("cancel",function(a){E(function(c){if(c.isChanged())return b.config.dialog_noConfirmCancel||confirm(b.lang.common.confirmCancel)||(a.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=k;var D=this._.element;b.focusManager.add(D,1);this.on("show",function(){D.on("keydown",n,this);if(CKEDITOR.env.gecko)D.on("keypress",v,this)});this.on("hide", -function(){D.removeListener("keydown",n);CKEDITOR.env.gecko&&D.removeListener("keypress",v);E(function(a){e.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",n,this,null,0)});this.on("show",function(){h();var a=1<q._.pageCount;b.config.dialog_startupFocusTab&&a?(q._.tabBarMode=!0,q._.tabs[q._.currentTabId][0].focus(),q._.currentFocusIndex=-1):this._.hasFocus||(this._.currentFocusIndex=a?-1:this._.focusList.length-1,u.onFocus? -(a=u.onFocus.call(this))&&a.focus():k(1))},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);m(this);g(this);(new CKEDITOR.dom.text(u.title,CKEDITOR.document)).appendTo(this.parts.title);for(z=0;z<u.contents.length;z++)(r=u.contents[z])&&this.addPage(r);this.parts.tabs.on("click",function(a){var b=a.data.getTarget();b.hasClass("cke_dialog_tab")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf("_"))), -this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,k(1)),a.data.preventDefault())},this);z=[];r=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:u.buttons},z).getChild();this.parts.footer.setHtml(z.join(""));for(z=0;z<r.length;z++)this._.buttons[r[z].id]=r[z]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){this._.contentSize&&this._.contentSize.width== -a&&this._.contentSize.height==b||(CKEDITOR.dialog.fire("resize",{dialog:this,width:a,height:b},this._.editor),this.fire("resize",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+"px",height:b+"px"}),"rtl"==this._.editor.lang.dir&&this._.position&&(this._.position.x=CKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)),this._.contentSize={width:a,height:b})}}(),getSize:function(){var a=this._.element.getFirst(); -return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var d=this._.element.getFirst(),e="rtl"==this._.editor.lang.dir,f="fixed"==d.getComputedStyle("position");CKEDITOR.env.ie&&d.setStyle("zoom","100%");f&&this._.position&&this._.position.x==a&&this._.position.y==b||(this._.position={x:a,y:b},f||(f=CKEDITOR.document.getWindow().getScrollPosition(),a+=f.x,b+=f.y),e&&(f=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-f.width-a),b={top:(0<b?b:0)+"px"}, -b[e?"right":"left"]=(0<a?a:0)+"px",d.setStyles(b),c&&(this._.moved=1))},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;a.getParent()&&a.getParent().equals(CKEDITOR.document.getBody())?a.setStyle("display","block"):a.appendTo(CKEDITOR.document.getBody());this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id); -null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,r(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this); -a.on("keydown",E);a.on("keyup",H);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],e=this._.tabs[a.id],f=a.requiredContent,g=0;if(e){for(var h in this._.contents[a.id]){var k=this._.contents[a.id][h];"hbox"!=k.type&&"vbox"!=k.type&&k.getInputElement()&&(k.requiredContent&&!this._.editor.activeFilter.check(k.requiredContent)?k.disable():(k.enable(),g++))}!g||f&&!this._.editor.activeFilter.check(f)?e[0].addClass("cke_dialog_tab_disabled"):e[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(); -d(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),d=(c.width-b.width)/2,e=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<e?e:0)>c.height|| -b.width+(0<d?d:0)>c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:d,this._.moved?this._.position.y:e)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})}, -commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(I(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide(); -if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else q(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",E);a.removeListener("keyup",H);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog; -this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",d=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),e=this._.contents[a.id]={},f=d.getChild(), -g=0;d=f.shift();)d.notAllowed||"hbox"==d.type||"vbox"==d.type||g++,e[d.id]=d,"function"==typeof d.getChild&&f.push.apply(f,d.getChild());g||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");d=CKEDITOR.env;e="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',0<this._.pageCount?" cke_last":"cke_first",c,a.hidden?' style\x3d"display:none"':"",' id\x3d"',e,'"',d.gecko&&!d.hc?"":' href\x3d"javascript:void(0)"', -' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e',a.label,"\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby",e);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(F(this,this,"CTRL+"+a.accessKey,L,G),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&& -!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var c in this._.tabs){var d=this._.tabs[c][0],e=this._.tabs[c][1];c!=a&&(d.removeClass("cke_dialog_tab_selected"),e.hide());e.setAttribute("aria-hidden",c!=a)}var f=this._.tabs[a];f[0].addClass("cke_dialog_tab_selected");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(b(f[1]),f[1].show(),setTimeout(function(){b(f[1],1)},0)):f[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}}, -updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(b){var c=this._.tabs[b]&&this._.tabs[b][0];c&&1!=this._.pageCount&&c.isVisible()&&(b==this._.currentTabId&&this.selectPage(a.call(this)),c.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name}, -getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor}, -getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new k(this,a,b));else{this._.focusList.splice(b,0,new k(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}},setState:function(a){if(this.state!=a){this.state=a;if(a==CKEDITOR.DIALOG_STATE_BUSY){if(!this.parts.spinner){var b=this.getParentEditor().lang.dir,c={attributes:{"class":"cke_dialog_spinner"}, -styles:{"float":"rtl"==b?"right":"left"}};c.styles["margin-"+("rtl"==b?"left":"right")]="8px";this.parts.spinner=CKEDITOR.document.createElement("div",c);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title,1)}this.parts.spinner.show();this.getButton("ok").disable()}else a==CKEDITOR.DIALOG_STATE_IDLE&&(this.parts.spinner&&this.parts.spinner.hide(),this.getButton("ok").enable());this.fire("state",a)}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){this._.dialogDefinitions[a]&& -"function"!=typeof b||(this._.dialogDefinitions[a]=b)},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(new RegExp("(?:^|;)"+b+":"+c+"(?:$|;)","i")))},okButton:function(){var a=function(a,b){b=b||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok", -{hide:!0}).hide&&a.hide()}},b,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,b){b=b||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},b,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c, -b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var p={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},v=function(a,b,c){for(var d=0,e;e=a[d];d++)if(e.id==b||c&&e[c]&&(e=v(e[c], -b,c)))return e;return null},u=function(a,b,c,d,e){if(c){for(var f=0,g;g=a[f];f++){if(g.id==c)return a.splice(f,0,b),b;if(d&&g[d]&&(g=u(g[d],b,c,d,!0)))return g}if(e)return null}a.push(b);return b},z=function(a,b,c){for(var d=0,e;e=a[d];d++){if(e.id==b)return a.splice(d,1);if(c&&e[c]&&(e=z(e[c],b,c)))return e}return null},t=function(a,b){this.dialog=a;for(var c=b.contents,d=0,e;e=c[d];d++)c[d]=e&&new h(a,e);CKEDITOR.tools.extend(this,b)};t.prototype={getContents:function(a){return v(this.contents, -a)},getButton:function(a){return v(this.buttons,a)},addContents:function(a,b){return u(this.contents,a,b)},addButton:function(a,b){return u(this.buttons,a,b)},removeContents:function(a){z(this.contents,a)},removeButton:function(a){z(this.buttons,a)}};h.prototype={get:function(a){return v(this.elements,a,"children")},add:function(a,b){return u(this.elements,a,b,"children")},remove:function(a){z(this.elements,a,"children")}};var A,D={},x,B={},E=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c= -a.data.$.altKey,d=a.data.$.shiftKey,e=String.fromCharCode(a.data.$.keyCode);(b=B[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+e])&&b.length&&(b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},H=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,d=a.data.$.shiftKey,e=String.fromCharCode(a.data.$.keyCode);(b=B[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+e])&&b.length&&(b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key), -a.data.preventDefault()))},F=function(a,b,c,d,e){(B[c]||(B[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:e||a.accessKeyUp,keydown:d||a.accessKeyDown})},I=function(a){for(var b in B){for(var c=B[b],d=c.length-1;0<=d;d--)c[d].dialog!=a&&c[d].uiElement!=a||c.splice(d,1);0===c.length&&delete B[b]}},G=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},L=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,d,e,f,g){if(!(4>arguments.length)){var h=(d.call?d(b):d)||"div", -k=["\x3c",h," "],m=(e&&e.call?e(b):e)||{},l=(f&&f.call?f(b):f)||{},n=(g&&g.call?g.call(this,a,b):g)||"",p=this.domId=l.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(m.display="none",this.notAllowed=!0);l.id=p;var v={};b.type&&(v["cke_dialog_ui_"+b.type]=1);b.className&&(v[b.className]=1);b.disabled&&(v.cke_disabled=1);for(var t=l["class"]&&l["class"].split?l["class"].split(" "):[],p=0;p<t.length;p++)t[p]&&(v[t[p]]=1);t=[];for(p in v)t.push(p); -l["class"]=t.join(" ");b.title&&(l.title=b.title);v=(b.style||"").split(";");b.align&&(t=b.align,m["margin-left"]="left"==t?0:"auto",m["margin-right"]="right"==t?0:"auto");for(p in m)v.push(p+":"+m[p]);b.hidden&&v.push("display:none");for(p=v.length-1;0<=p;p--)""===v[p]&&v.splice(p,1);0<v.length&&(l.style=(l.style?l.style+"; ":"")+v.join("; "));for(p in l)k.push(p+'\x3d"'+CKEDITOR.tools.htmlEncode(l[p])+'" ');k.push("\x3e",n,"\x3c/",h,"\x3e");c.push(k.join(""));(this._||(this._={})).dialog=a;"boolean"== -typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);this.registerEvents(b); -this.accessKeyUp&&this.accessKeyDown&&b.accessKey&&F(this,a,"CTRL+"+b.accessKey);var u=this;a.on("load",function(){var b=u.getInputElement();if(b){var c=u.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=!1;a._.hasFocus=!0;u.fire("focus");c&&this.addClass(c)});b.on("blur",function(){u.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex= -a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=u.focusIndex}))}},hbox:function(a,b,c,d,e){if(!(4>arguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.widths||null,h=e&&e.height||null,k,m={role:"presentation"};e&&e.align&&(m.align=e.align);CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"hbox"},d,"table",{},m,function(){var a=['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(k=0;k<c.length;k++){var b="cke_dialog_ui_hbox_child",d=[];0===k&& -(b="cke_dialog_ui_hbox_first");k==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"',b,'" role\x3d"presentation" ');g?g[k]&&d.push("width:"+y(g[k])):d.push("width:"+Math.floor(100/c.length)+"%");h&&d.push("height:"+y(h));e&&void 0!==e.padding&&d.push("padding:"+y(e.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f[k].align&&d.push("text-align:"+f[k].align);0<d.length&&a.push('style\x3d"'+d.join("; ")+'" ');a.push("\x3e",c[k],"\x3c/td\x3e")}a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("")})}}, -vbox:function(a,b,c,d,e){if(!(3>arguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.width||null,h=e&&e.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"vbox"},d,"div",null,{role:"presentation"},function(){var b=['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');e&&e.expand&&b.push("height:100%;");b.push("width:"+y(g||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align\x3d"',CKEDITOR.tools.htmlEncode(e&& -e.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("\x3e\x3ctbody\x3e");for(var d=0;d<c.length;d++){var k=[];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');g&&k.push("width:"+y(g||"100%"));h?k.push("height:"+y(h[d])):e&&e.expand&&k.push("height:"+Math.floor(100/c.length)+"%");e&&void 0!==e.padding&&k.push("padding:"+y(e.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f[d].align&&k.push("text-align:"+f[d].align);0<k.length&&b.push('style\x3d"',k.join("; "),'" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e', -c[d],"\x3c/td\x3e\x3c/tr\x3e")}b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a= -this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,d=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},e;for(e in a)if(c=e.match(b))this.eventProcessors[e]?this.eventProcessors[e].call(this, -this._.dialog,a[e]):d(this,this._.dialog,c[1].toLowerCase(),a[e]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled"); -a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return this.isEnabled()&&this.isVisible()?!0:!1}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild? -this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,b,c){for(var d=b.children,e,f=[],g=[],h=0;h<d.length&&(e=d[h]);h++){var k=[];f.push(k);g.push(CKEDITOR.dialog._.uiElementBuilders[e.type].build(a,e,k))}return new CKEDITOR.ui.dialog[b.type](a,g,f,c,b)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a; -CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){a.openDialog(this.dialogName)},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,e=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,f=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue(): -a[0],c,d=CKEDITOR.VALIDATE_AND,e=[],f;for(f=0;f<a.length;f++)if("function"==typeof a[f])e.push(a[f]);else break;f<a.length&&"string"==typeof a[f]&&(c=a[f],f++);f<a.length&&"number"==typeof a[f]&&(d=a[f]);var g=d==CKEDITOR.VALIDATE_AND?!0:!1;for(f=0;f<e.length;f++)g=d==CKEDITOR.VALIDATE_AND?g&&e[f](b):g||e[f](b);return g?!0:c}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return a.test(c)?!0:b}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b, -a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return f.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed", -function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in D)D[c].remove();D={}}a=a.editor._.storedDialogs;for(var d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,d=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&r(this);if("function"==typeof d)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c, -c),c.show();else{if("failed"==d)throw q(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof d&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(d),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");return c}})}(),CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(a){a.on("doubleclick",function(f){f.data.dialog&& -a.openDialog(f.data.dialog)},null,null,999)}}),function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(a){var f= -this;a.addCommand("a11yHelp",{exec:function(){var b=a.langCode,b=f.availableLangs[b]?b:f.availableLangs[b.replace(/-.*/,"")]?b.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(f.path+"dialogs/lang/"+b+".js"),function(){a.lang.a11yhelp=f.langEntries[b];a.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});a.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js");a.on("ariaEditorHelpLabel",function(b){b.data.label= -a.lang.common.editorHelp})}})}(),CKEDITOR.plugins.add("about",{requires:"dialog",init:function(a){var f=a.addCommand("about",new CKEDITOR.dialogCommand("about"));f.modes={wysiwyg:1,source:1};f.canUndo=!1;f.readOnly=1;a.ui.addButton&&a.ui.addButton("About",{label:a.lang.about.title,command:"about",toolbar:"about"});CKEDITOR.dialog.add("about",this.path+"dialogs/about.js")}}),CKEDITOR.plugins.add("basicstyles",{init:function(a){var f=0,b=function(b,d,e,m){if(m){m=new CKEDITOR.style(m);var g=c[e];g.unshift(m); -a.attachStyleStateChange(m,function(b){!a.readOnly&&a.getCommand(e).setState(b)});a.addCommand(e,new CKEDITOR.styleCommand(m,{contentForms:g}));a.ui.addButton&&a.ui.addButton(b,{label:d,command:e,toolbar:"basicstyles,"+(f+=10)})}},c={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"==a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s", -"strike",["span",function(a){return"line-through"==a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},e=a.config,l=a.lang.basicstyles;b("Bold",l.bold,"bold",e.coreStyles_bold);b("Italic",l.italic,"italic",e.coreStyles_italic);b("Underline",l.underline,"underline",e.coreStyles_underline);b("Strike",l.strike,"strike",e.coreStyles_strike);b("Subscript",l.subscript,"subscript",e.coreStyles_subscript);b("Superscript",l.superscript,"superscript",e.coreStyles_superscript);a.setKeystroke([[CKEDITOR.CTRL+ -66,"bold"],[CKEDITOR.CTRL+73,"italic"],[CKEDITOR.CTRL+85,"underline"]])}}),CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"},CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"},CKEDITOR.config.coreStyles_underline={element:"u"},CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"},CKEDITOR.config.coreStyles_subscript={element:"sub"},CKEDITOR.config.coreStyles_superscript={element:"sup"},function(){var a={exec:function(a){var b=a.getCommand("blockquote").state, -c=a.getSelection(),e=c&&c.getRanges()[0];if(e){var l=c.createBookmarks();if(CKEDITOR.env.ie){var k=l[0].startNode,d=l[0].endNode,h;if(k&&"blockquote"==k.getParent().getName())for(h=k;h=h.getNext();)if(h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary()){k.move(h,!0);break}if(d&&"blockquote"==d.getParent().getName())for(h=d;h=h.getPrevious();)if(h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary()){d.move(h);break}}var m=e.createIterator();m.enlargeBr=a.config.enterMode!=CKEDITOR.ENTER_BR;if(b==CKEDITOR.TRISTATE_OFF){for(k= -[];b=m.getNextParagraph();)k.push(b);1>k.length&&(b=a.document.createElement(a.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),d=l.shift(),e.insertNode(b),b.append(new CKEDITOR.dom.text("",a.document)),e.moveToBookmark(d),e.selectNodeContents(b),e.collapse(!0),d=e.createBookmark(),k.push(b),l.unshift(d));h=k[0].getParent();e=[];for(d=0;d<k.length;d++)b=k[d],h=h.getCommonAncestor(b.getParent());for(b={table:1,tbody:1,tr:1,ol:1,ul:1};b[h.getName()];)h=h.getParent();for(d=null;0<k.length;){for(b=k.shift();!b.getParent().equals(h);)b= -b.getParent();b.equals(d)||e.push(b);d=b}for(;0<e.length;)if(b=e.shift(),"blockquote"==b.getName()){for(d=new CKEDITOR.dom.documentFragment(a.document);b.getFirst();)d.append(b.getFirst().remove()),k.push(d.getLast());d.replace(b)}else k.push(b);e=a.document.createElement("blockquote");for(e.insertBefore(k[0]);0<k.length;)b=k.shift(),e.append(b)}else if(b==CKEDITOR.TRISTATE_ON){d=[];for(h={};b=m.getNextParagraph();){for(k=e=null;b.getParent();){if("blockquote"==b.getParent().getName()){e=b.getParent(); -k=b;break}b=b.getParent()}e&&k&&!k.getCustomData("blockquote_moveout")&&(d.push(k),CKEDITOR.dom.element.setMarker(h,k,"blockquote_moveout",!0))}CKEDITOR.dom.element.clearAllMarkers(h);b=[];k=[];for(h={};0<d.length;)m=d.shift(),e=m.getParent(),m.getPrevious()?m.getNext()?(m.breakParent(m.getParent()),k.push(m.getNext())):m.remove().insertAfter(e):m.remove().insertBefore(e),e.getCustomData("blockquote_processed")||(k.push(e),CKEDITOR.dom.element.setMarker(h,e,"blockquote_processed",!0)),b.push(m);CKEDITOR.dom.element.clearAllMarkers(h); -for(d=k.length-1;0<=d;d--){e=k[d];a:{h=e;for(var m=0,g=h.getChildCount(),n=void 0;m<g&&(n=h.getChild(m));m++)if(n.type==CKEDITOR.NODE_ELEMENT&&n.isBlockBoundary()){h=!1;break a}h=!0}h&&e.remove()}if(a.config.enterMode==CKEDITOR.ENTER_BR)for(e=!0;b.length;)if(m=b.shift(),"div"==m.getName()){d=new CKEDITOR.dom.documentFragment(a.document);!e||!m.getPrevious()||m.getPrevious().type==CKEDITOR.NODE_ELEMENT&&m.getPrevious().isBlockBoundary()||d.append(a.document.createElement("br"));for(e=m.getNext()&& -!(m.getNext().type==CKEDITOR.NODE_ELEMENT&&m.getNext().isBlockBoundary());m.getFirst();)m.getFirst().remove().appendTo(d);e&&d.append(a.document.createElement("br"));d.replace(m);e=!1}}c.selectBookmarks(l);a.focus()}},refresh:function(a,b){this.setState(a.elementPath(b.block||b.blockLimit).contains("blockquote",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:"blockquote",allowedContent:"blockquote",requiredContent:"blockquote"};CKEDITOR.plugins.add("blockquote",{init:function(f){f.blockless|| -(f.addCommand("blockquote",a),f.ui.addButton&&f.ui.addButton("Blockquote",{label:f.lang.blockquote.toolbar,command:"blockquote",toolbar:"blocks,10"}))}})}(),"use strict",CKEDITOR.plugins.add("notification",{init:function(a){function f(a){var c=new CKEDITOR.dom.element("div");c.setStyles({position:"fixed","margin-left":"-9999px"});c.setAttributes({"aria-live":"assertive","aria-atomic":"true"});c.setText(a);CKEDITOR.document.getBody().append(c);setTimeout(function(){c.remove()},100)}a._.notificationArea= -new la(a);a.showNotification=function(b,c,e){var f,k;"progress"==c?f=e:k=e;b=new CKEDITOR.plugins.notification(a,{message:b,type:c,progress:f,duration:k});b.show();return b};a.on("key",function(b){if(27==b.data.keyCode){var c=a._.notificationArea.notifications;c.length&&(f(a.lang.notification.closed),c[c.length-1].hide(),b.cancel())}})}}),ka.prototype={show:function(){!1!==this.editor.fire("notificationShow",{notification:this})&&(this.area.add(this),this._hideAfterTimeout())},update:function(a){var f= -!0;!1===this.editor.fire("notificationUpdate",{notification:this,options:a})&&(f=!1);var b=this.element,c=b.findOne(".cke_notification_message"),e=b.findOne(".cke_notification_progress"),l=a.type;b.removeAttribute("role");a.progress&&"progress"!=this.type&&(l="progress");l&&(b.removeClass(this._getClass()),b.removeAttribute("aria-label"),this.type=l,b.addClass(this._getClass()),b.setAttribute("aria-label",this.type),"progress"!=this.type||e?"progress"!=this.type&&e&&e.remove():(e=this._createProgressElement(), -e.insertBefore(c)));void 0!==a.message&&(this.message=a.message,c.setHtml(this.message));void 0!==a.progress&&(this.progress=a.progress,e&&e.setStyle("width",this._getPercentageProgress()));f&&a.important&&(b.setAttribute("role","alert"),this.isVisible()||this.area.add(this));this.duration=a.duration;this._hideAfterTimeout()},hide:function(){!1!==this.editor.fire("notificationHide",{notification:this})&&this.area.remove(this)},isVisible:function(){return 0<=CKEDITOR.tools.indexOf(this.area.notifications, -this)},_createElement:function(){var a=this,f,b,c=this.editor.lang.common.close;f=new CKEDITOR.dom.element("div");f.addClass("cke_notification");f.addClass(this._getClass());f.setAttributes({id:this.id,role:"alert","aria-label":this.type});"progress"==this.type&&f.append(this._createProgressElement());b=new CKEDITOR.dom.element("p");b.addClass("cke_notification_message");b.setHtml(this.message);f.append(b);b=CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"'+ -c+'" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e');f.append(b);b.on("click",function(){a.editor.focus();a.hide()});return f},_getClass:function(){return"progress"==this.type?"cke_notification_info":"cke_notification_"+this.type},_createProgressElement:function(){var a=new CKEDITOR.dom.element("span");a.addClass("cke_notification_progress");a.setStyle("width",this._getPercentageProgress());return a},_getPercentageProgress:function(){return Math.round(100* -(this.progress||0))+"%"},_hideAfterTimeout:function(){var a=this,f;this._hideTimeoutId&&clearTimeout(this._hideTimeoutId);if("number"==typeof this.duration)f=this.duration;else if("info"==this.type||"success"==this.type)f="number"==typeof this.editor.config.notification_duration?this.editor.config.notification_duration:5E3;f&&(a._hideTimeoutId=setTimeout(function(){a.hide()},f))}},la.prototype={add:function(a){this.notifications.push(a);this.element.append(a.element);1==this.element.getChildCount()&& -(CKEDITOR.document.getBody().append(this.element),this._attachListeners());this._layout()},remove:function(a){var f=CKEDITOR.tools.indexOf(this.notifications,a);0>f||(this.notifications.splice(f,1),a.element.remove(),this.element.getChildCount()||(this._removeListeners(),this.element.remove()))},_createElement:function(){var a=this.editor,f=a.config,b=new CKEDITOR.dom.element("div");b.addClass("cke_notifications_area");b.setAttribute("id","cke_notifications_area_"+a.name);b.setStyle("z-index",f.baseFloatZIndex- -2);return b},_attachListeners:function(){var a=CKEDITOR.document.getWindow(),f=this.editor;a.on("scroll",this._uiBuffer.input);a.on("resize",this._uiBuffer.input);f.on("change",this._changeBuffer.input);f.on("floatingSpaceLayout",this._layout,this,null,20);f.on("blur",this._layout,this,null,20)},_removeListeners:function(){var a=CKEDITOR.document.getWindow(),f=this.editor;a.removeListener("scroll",this._uiBuffer.input);a.removeListener("resize",this._uiBuffer.input);f.removeListener("change",this._changeBuffer.input); -f.removeListener("floatingSpaceLayout",this._layout);f.removeListener("blur",this._layout)},_layout:function(){function a(){f.setStyle("left",w(p+c.width-m-g))}var f=this.element,b=this.editor,c=b.ui.contentsElement.getClientRect(),e=b.ui.contentsElement.getDocumentPosition(),l,k,d=f.getClientRect(),h,m=this._notificationWidth,g=this._notificationMargin;h=CKEDITOR.document.getWindow();var n=h.getScrollPosition(),r=h.getViewPaneSize(),q=CKEDITOR.document.getBody(),y=q.getDocumentPosition(),w=CKEDITOR.tools.cssLength; -m&&g||(h=this.element.getChild(0),m=this._notificationWidth=h.getClientRect().width,g=this._notificationMargin=parseInt(h.getComputedStyle("margin-left"),10)+parseInt(h.getComputedStyle("margin-right"),10));b.toolbar&&(l=b.ui.space("top"),k=l.getClientRect());l&&l.isVisible()&&k.bottom>c.top&&k.bottom<c.bottom-d.height?f.setStyles({position:"fixed",top:w(k.bottom)}):0<c.top?f.setStyles({position:"absolute",top:w(e.y)}):e.y+c.height-d.height>n.y?f.setStyles({position:"fixed",top:0}):f.setStyles({position:"absolute", -top:w(e.y+c.height-d.height)});var p="fixed"==f.getStyle("position")?c.left:"static"!=q.getComputedStyle("position")?e.x-y.x:e.x;c.width<m+g?e.x+m+g>n.x+r.width?a():f.setStyle("left",w(p)):e.x+m+g>n.x+r.width?f.setStyle("left",w(p)):e.x+c.width/2+m/2+g>n.x+r.width?f.setStyle("left",w(p-e.x+n.x+r.width-m-g)):0>c.left+c.width-m-g?a():0>c.left+c.width/2-m/2?f.setStyle("left",w(p-e.x+n.x)):f.setStyle("left",w(p+c.width/2-m/2-g/2))}},CKEDITOR.plugins.notification=ka,function(){var a='\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"'+ -(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(a+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(a+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var a=a+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+ -(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"'),a=a+'\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e', -f=CKEDITOR.addTemplate("buttonArrow",'\x3cspan class\x3d"cke_button_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":"")+"\x3c/span\x3e"),b=CKEDITOR.addTemplate("button",a);CKEDITOR.plugins.add("button",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}}; -CKEDITOR.ui.button.prototype={render:function(a,e){function l(){var b=a.mode;b&&(b=this.modes[b]?void 0!==v[b]?v[b]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,b=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:b,this.setState(b),this.refresh&&this.refresh())}var k=CKEDITOR.env,d=this._.id=CKEDITOR.tools.getNextId(),h="",m=this.command,g,n,r;this._.editor=a;var q={id:d,button:this,editor:a,focus:function(){CKEDITOR.document.getById(d).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}}, -y=CKEDITOR.tools.addFunction(function(a){if(q.onkey)return a=new CKEDITOR.dom.event(a),!1!==q.onkey(q,a.getKeystroke())}),w=CKEDITOR.tools.addFunction(function(a){var b;q.onfocus&&(b=!1!==q.onfocus(q,new CKEDITOR.dom.event(a)));return b}),p=0;q.clickFn=g=CKEDITOR.tools.addFunction(function(){p&&(a.unlockSelection(1),p=0);q.execute();k.iOS&&a.focus()});if(this.modes){var v={};a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(v[a.mode]=this._.state)},this);a.on("activeFilterChange", -l,this);a.on("mode",l,this);!this.readOnly&&a.on("readOnly",l,this)}else m&&(m=a.getCommand(m))&&(m.on("state",function(){this.setState(m.state)},this),h+=m.state==CKEDITOR.TRISTATE_ON?"on":m.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off");if(this.directional)a.on("contentDirChanged",function(b){var d=CKEDITOR.document.getById(this._.id),e=d.getFirst();b=b.data;b!=a.lang.dir?d.addClass("cke_"+b):d.removeClass("cke_ltr").removeClass("cke_rtl");e.setAttribute("style",CKEDITOR.skin.getIconStyle(u, -"rtl"==b,this.icon,this.iconOffset))},this);m?(n=a.getCommandKeystroke(m))&&(r=CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard,n)):h+="off";var u=n=this.name||this.command;this.icon&&!/\./.test(this.icon)&&(u=this.icon,this.icon=null);h={id:d,name:n,iconName:u,label:this.label,cls:this.className||"",state:h,ariaDisabled:"disabled"==h?"true":"false",title:this.title+(r?" ("+r.display+")":""),ariaShortcut:r?a.lang.common.keyboardShortcut+" "+r.aria:"",titleJs:k.gecko&&!k.hc?"":(this.title|| -"").replace("'",""),hasArrow:this.hasArrow?"true":"false",keydownFn:y,focusFn:w,clickFn:g,style:CKEDITOR.skin.getIconStyle(u,"rtl"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?f.output():""};b.output(h,e);if(this.onRender)this.onRender();return q},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled"), -this.hasArrow?(a=a==CKEDITOR.TRISTATE_ON?this._.editor.lang.button.selectedLabel.replace(/%1/g,this.label):this.label,CKEDITOR.document.getById(this._.id+"_label").setText(a)):a==CKEDITOR.TRISTATE_ON?b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;var b=this;this.allowedContent||this.requiredContent||!this.command||(b=a.getCommand(this.command)||b);return this._.feature= -b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}}(),function(){function a(a){function b(){for(var g=c(),h=CKEDITOR.tools.clone(a.config.toolbarGroups)||f(a),m=0;m<h.length;m++){var l=h[m];if("/"!=l){"string"==typeof l&&(l=h[m]={name:l});var w,p=l.groups;if(p)for(var v=0;v<p.length;v++)w=p[v],(w=g[w])&&d(l,w);(w=g[l.name])&&d(l,w)}}return h}function c(){var b={},d,f,g;for(d in a.ui.items)f=a.ui.items[d],g=f.toolbar||"others",g=g.split(","),f=g[0],g=parseInt(g[1]|| --1,10),b[f]||(b[f]=[]),b[f].push({name:d,order:g});for(f in b)b[f]=b[f].sort(function(a,b){return a.order==b.order?0:0>b.order?-1:0>a.order?1:a.order<b.order?-1:1});return b}function d(b,c){if(c.length){b.items?b.items.push(a.ui.create("-")):b.items=[];for(var d;d=c.shift();)d="string"==typeof d?d:d.name,m&&-1!=CKEDITOR.tools.indexOf(m,d)||(d=a.ui.create(d))&&a.addFeature(d)&&b.items.push(d)}}function h(a){var b=[],c,e,f;for(c=0;c<a.length;++c)e=a[c],f={},"/"==e?b.push(e):CKEDITOR.tools.isArray(e)? -(d(f,CKEDITOR.tools.clone(e)),b.push(f)):e.items&&(d(f,CKEDITOR.tools.clone(e.items)),f.name=e.name,b.push(f));return b}var m=a.config.removeButtons,m=m&&m.split(","),g=a.config.toolbar;"string"==typeof g&&(g=a.config["toolbar_"+g]);return a.toolbar=g?h(g):b()}function f(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/", -{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var b=function(){this.toolbars=[];this.focusCommandExecuted=!1};b.prototype.focus=function(){for(var a=0,b;b=this.toolbars[a++];)for(var c=0,d;d=b.items[c++];)if(d.focus){d.focus();return}};var c={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted= -!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(e){var f,k=function(a,b){var c,g="rtl"==e.lang.dir,n=e.config.toolbarGroupCycling,r=g?37:39,g=g?39:37,n=void 0===n||n;switch(b){case 9:case CKEDITOR.SHIFT+9:for(;!c||!c.items.length;)if(c=9==b?(c?c.next:a.toolbar.next)||e.toolbox.toolbars[0]:(c?c.previous:a.toolbar.previous)||e.toolbox.toolbars[e.toolbox.toolbars.length-1],c.items.length)for(a= -c.items[f?c.items.length-1:0];a&&!a.focus;)(a=f?a.previous:a.next)||(c=0);a&&a.focus();return!1;case r:c=a;do c=c.next,!c&&n&&(c=a.toolbar.items[0]);while(c&&!c.focus);c?c.focus():k(a,9);return!1;case 40:return a.button&&a.button.hasArrow?a.execute():k(a,40==b?r:g),!1;case g:case 38:c=a;do c=c.previous,!c&&n&&(c=a.toolbar.items[a.toolbar.items.length-1]);while(c&&!c.focus);c?c.focus():(f=1,k(a,CKEDITOR.SHIFT+9),f=0);return!1;case 27:return e.focus(),!1;case 13:case 32:return a.execute(),!1}return!0}; -e.on("uiSpace",function(c){if(c.data.space==e.config.toolbarLocation){c.removeListener();e.toolbox=new b;var f=CKEDITOR.tools.getNextId(),l=['\x3cspan id\x3d"',f,'" class\x3d"cke_voice_label"\x3e',e.lang.toolbar.toolbars,"\x3c/span\x3e",'\x3cspan id\x3d"'+e.ui.spaceId("toolbox")+'" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"',f,'" onmousedown\x3d"return false;"\x3e'],f=!1!==e.config.toolbarStartupExpanded,g,n;e.config.toolbarCanCollapse&&e.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&& -l.push('\x3cspan class\x3d"cke_toolbox_main"'+(f?"\x3e":' style\x3d"display:none"\x3e'));for(var r=e.toolbox.toolbars,q=a(e),y=q.length,w=0;w<y;w++){var p,v=0,u,z=q[w],t="/"!==z&&("/"===q[w+1]||w==y-1),A;if(z)if(g&&(l.push("\x3c/span\x3e"),n=g=0),"/"===z)l.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else{A=z.items||z;for(var D=0;D<A.length;D++){var x=A[D],B;if(x){var E=function(a){a=a.render(e,l);H=v.items.push(a)-1;0<H&&(a.previous=v.items[H-1],a.previous.next=a);a.toolbar=v;a.onkey= -k;a.onfocus=function(){e.toolbox.focusCommandExecuted||e.focus()}};if(x.type==CKEDITOR.UI_SEPARATOR)n=g&&x;else{B=!1!==x.canGroup;if(!v){p=CKEDITOR.tools.getNextId();v={id:p,items:[]};u=z.name&&(e.lang.toolbar.toolbarGroups[z.name]||z.name);l.push('\x3cspan id\x3d"',p,'" class\x3d"cke_toolbar'+(t?' cke_toolbar_last"':'"'),u?' aria-labelledby\x3d"'+p+'_label"':"",' role\x3d"toolbar"\x3e');u&&l.push('\x3cspan id\x3d"',p,'_label" class\x3d"cke_voice_label"\x3e',u,"\x3c/span\x3e");l.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e'); -var H=r.push(v)-1;0<H&&(v.previous=r[H-1],v.previous.next=v)}B?g||(l.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'),g=1):g&&(l.push("\x3c/span\x3e"),g=0);n&&(E(n),n=0);E(x)}}}g&&(l.push("\x3c/span\x3e"),n=g=0);v&&l.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')}}e.config.toolbarCanCollapse&&l.push("\x3c/span\x3e");if(e.config.toolbarCanCollapse&&e.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var F=CKEDITOR.tools.addFunction(function(){e.execCommand("toolbarCollapse")}); -e.on("destroy",function(){CKEDITOR.tools.removeFunction(F)});e.addCommand("toolbarCollapse",{readOnly:1,exec:function(a){var b=a.ui.space("toolbar_collapser"),c=b.getPrevious(),d=a.ui.space("contents"),e=c.getParent(),f=parseInt(d.$.style.height,10),g=e.$.offsetHeight,h=b.hasClass("cke_toolbox_collapser_min");h?(c.show(),b.removeClass("cke_toolbox_collapser_min"),b.setAttribute("title",a.lang.toolbar.toolbarCollapse)):(c.hide(),b.addClass("cke_toolbox_collapser_min"),b.setAttribute("title",a.lang.toolbar.toolbarExpand)); -b.getFirst().setText(h?"▲":"◀");d.setStyle("height",f-(e.$.offsetHeight-g)+"px");a.fire("resize",{outerHeight:a.container.$.offsetHeight,contentsHeight:d.$.offsetHeight,outerWidth:a.container.$.offsetWidth})},modes:{wysiwyg:1,source:1}});e.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),"toolbarCollapse");l.push('\x3ca title\x3d"'+(f?e.lang.toolbar.toolbarCollapse:e.lang.toolbar.toolbarExpand)+'" id\x3d"'+e.ui.spaceId("toolbar_collapser")+'" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser'); -f||l.push(" cke_toolbox_collapser_min");l.push('" onclick\x3d"CKEDITOR.tools.callFunction('+F+')"\x3e','\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e',"\x3c/a\x3e")}l.push("\x3c/span\x3e");c.data.html+=l.join("")}});e.on("destroy",function(){if(this.toolbox){var a,b=0,c,e,f;for(a=this.toolbox.toolbars;b<a.length;b++)for(e=a[b].items,c=0;c<e.length;c++)f=e[c],f.clickFn&&CKEDITOR.tools.removeFunction(f.clickFn),f.keyDownFn&&CKEDITOR.tools.removeFunction(f.keyDownFn)}});e.on("uiReady",function(){var a= -e.ui.space("toolbox");a&&e.focusManager.add(a,1)});e.addCommand("toolbarFocus",c);e.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");e.ui.add("-",CKEDITOR.UI_SEPARATOR,{});e.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,b){b.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,b,c){var d=f(this.editor),h=0===b,m={name:a};if(c){if(c=CKEDITOR.tools.search(d,function(a){return a.name== -c})){!c.groups&&(c.groups=[]);if(b&&(b=CKEDITOR.tools.indexOf(c.groups,b),0<=b)){c.groups.splice(b+1,0,a);return}h?c.groups.splice(0,0,a):c.groups.push(a);return}b=null}b&&(b=CKEDITOR.tools.indexOf(d,function(a){return a.name==b}));h?d.splice(0,0,a):"number"==typeof b?d.splice(b+1,0,m):d.push(a)}}(),CKEDITOR.UI_SEPARATOR="separator",CKEDITOR.config.toolbarLocation="top","use strict",function(){function a(a,b,c){b.type||(b.type="auto");if(c&&!1===a.fire("beforePaste",b)||!b.dataValue&&b.dataTransfer.isEmpty())return!1; -b.dataValue||(b.dataValue="");if(CKEDITOR.env.gecko&&"drop"==b.method&&a.toolbox)a.once("afterPaste",function(){a.toolbox.focus()});return a.fire("paste",b)}function f(b){function c(){var a=b.editable();if(CKEDITOR.plugins.clipboard.isCustomCopyCutSupported){var d=function(a){b.readOnly&&"cut"==a.name||B.initPasteDataTransfer(a,b);a.data.preventDefault()};a.on("copy",d);a.on("cut",d);a.on("cut",function(){b.readOnly||b.extractSelectedHtml()},null,null,999)}a.on(B.mainPasteEvent,function(a){"beforepaste"== -B.mainPasteEvent&&E||A(a)});"beforepaste"==B.mainPasteEvent&&(a.on("paste",function(a){H||(f(),a.data.preventDefault(),A(a),k("paste"))}),a.on("contextmenu",h,null,null,0),a.on("beforepaste",function(a){!a.data||a.data.$.ctrlKey||a.data.$.shiftKey||h()},null,null,0));a.on("beforecut",function(){!E&&l(b)});var e;a.attachListener(CKEDITOR.env.ie?a:b.document.getDocumentElement(),"mouseup",function(){e=setTimeout(function(){D()},0)});b.on("destroy",function(){clearTimeout(e)});a.on("keyup",D)}function d(a){return{type:a, -canUndo:"cut"==a,startDisabled:!0,fakeKeystroke:"cut"==a?CKEDITOR.CTRL+88:CKEDITOR.CTRL+67,exec:function(){"cut"==this.type&&l();var a;var c=this.type;if(CKEDITOR.env.ie)a=k(c);else try{a=b.document.$.execCommand(c,!1,null)}catch(d){a=!1}a||b.showNotification(b.lang.clipboard[this.type+"Error"]);return a}}}function e(){return{canUndo:!1,async:!0,fakeKeystroke:CKEDITOR.CTRL+86,exec:function(b,c){function d(c,g){g="undefined"!==typeof g?g:!0;c?(c.method="paste",c.dataTransfer||(c.dataTransfer=B.initPasteDataTransfer()), -a(b,c,g)):f&&b.showNotification(k,"info",b.config.clipboard_notificationDuration);b.fire("afterCommandExec",{name:"paste",command:e,returnValue:!!c})}c="undefined"!==typeof c&&null!==c?c:{};var e=this,f="undefined"!==typeof c.notification?c.notification:!0,g=c.type,h=CKEDITOR.tools.keystrokeToString(b.lang.common.keyboard,b.getCommandKeystroke(this)),k="string"===typeof f?f:b.lang.clipboard.pasteNotification.replace(/%1/,'\x3ckbd aria-label\x3d"'+h.aria+'"\x3e'+h.display+"\x3c/kbd\x3e"),h="string"=== -typeof c?c:c.dataValue;g?b._.nextPasteType=g:delete b._.nextPasteType;"string"===typeof h?d({dataValue:h}):b.getClipboardData(d)}}}function f(){H=1;setTimeout(function(){H=0},100)}function h(){E=1;setTimeout(function(){E=0},10)}function k(a){var c=b.document,d=c.getBody(),e=!1,f=function(){e=!0};d.on(a,f);7<CKEDITOR.env.version?c.$.execCommand(a):c.$.selection.createRange().execCommand(a);d.removeListener(a,f);return e}function l(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var a=b.getSelection(), -c,d,e;a.getType()==CKEDITOR.SELECTION_ELEMENT&&(c=a.getSelectedElement())&&(d=a.getRanges()[0],e=b.document.createText(""),e.insertBefore(c),d.setStartBefore(e),d.setEndAfter(c),a.selectRanges([d]),setTimeout(function(){c.getParent()&&(e.remove(),a.selectElement(c))},0))}}function m(a,c){var d=b.document,e=b.editable(),f=function(a){a.cancel()},h;if(!d.getById("cke_pastebin")){var k=b.getSelection(),l=k.createBookmarks();CKEDITOR.env.ie&&k.root.fire("selectionchange");var n=new CKEDITOR.dom.element(!CKEDITOR.env.webkit&& -!e.is("body")||CKEDITOR.env.ie?"div":"body",d);n.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});var p=0,d=d.getWindow();CKEDITOR.env.webkit?(e.append(n),n.addClass("cke_editable"),e.is("body")||(p="static"!=e.getComputedStyle("position")?e:CKEDITOR.dom.element.get(e.$.offsetParent),p=p.getDocumentPosition().y)):e.getAscendant(CKEDITOR.env.ie?"body":"html",1).append(n);n.setStyles({position:"absolute",top:d.getScrollPosition().y-p+10+"px",width:"1px",height:Math.max(1,d.getViewPaneSize().height- -20)+"px",overflow:"hidden",margin:0,padding:0});CKEDITOR.env.safari&&n.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","text"));(p=n.getParent().isReadOnly())?(n.setOpacity(0),n.setAttribute("contenteditable",!0)):n.setStyle("ltr"==b.config.contentsLangDirection?"left":"right","-10000px");b.on("selectionChange",f,null,null,0);if(CKEDITOR.env.webkit||CKEDITOR.env.gecko)h=e.once("blur",f,null,null,-100);p&&n.focus();p=new CKEDITOR.dom.range(n);p.selectNodeContents(n);var v=p.select();CKEDITOR.env.ie&& -(h=e.once("blur",function(){b.lockSelection(v)}));var t=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=t);h&&h.removeListener();CKEDITOR.env.ie&&e.focus();k.selectBookmarks(l);n.remove();var a;CKEDITOR.env.webkit&&(a=n.getFirst())&&a.is&&a.hasClass("Apple-style-span")&&(n=a);b.removeListener("selectionChange",f);c(n.getHtml())},0)}}function z(){if("paste"==B.mainPasteEvent)return b.fire("beforePaste",{type:"auto", -method:"paste"}),!1;b.focus();f();var a=b.focusManager;a.lock();if(b.editable().fire(B.mainPasteEvent)&&!k("paste"))return a.unlock(),!1;a.unlock();return!0}function t(a){if("wysiwyg"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();f();"paste"==B.mainPasteEvent&&a.fire("beforepaste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire("saveSnapshot"),setTimeout(function(){b.fire("saveSnapshot")},50)}}function A(c){var d={type:"auto",method:"paste", -dataTransfer:B.initPasteDataTransfer(c)};d.dataTransfer.cacheData();var e=!1!==b.fire("beforePaste",d);e&&B.canClipboardApiBeTrusted(d.dataTransfer,b)?(c.data.preventDefault(),setTimeout(function(){a(b,d)},0)):m(c,function(c){d.dataValue=c.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");e&&a(b,d)})}function D(){if("wysiwyg"==b.mode){var a=x("paste");b.getCommand("cut").setState(x("cut"));b.getCommand("copy").setState(x("copy"));b.getCommand("paste").setState(a);b.fire("pasteState",a)}}function x(a){if(F&& -a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==a)return CKEDITOR.TRISTATE_OFF;a=b.getSelection();var c=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==c.length&&c[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var B=CKEDITOR.plugins.clipboard,E=0,H=0,F=0;(function(){b.on("key",t);b.on("contentDom",c);b.on("selectionChange",function(a){F=a.data.selection.getRanges()[0].checkReadOnly();D()});b.contextMenu&&b.contextMenu.addListener(function(a,b){F=b.getRanges()[0].checkReadOnly(); -return{cut:x("cut"),copy:x("copy"),paste:x("paste")}})})();(function(){function a(c,d,e,f,h){var k=b.lang.clipboard[d];b.addCommand(d,e);b.ui.addButton&&b.ui.addButton(c,{label:k,command:d,toolbar:"clipboard,"+f});b.addMenuItems&&b.addMenuItem(d,{label:k,command:d,group:"clipboard",order:h})}a("Cut","cut",d("cut"),10,1);a("Copy","copy",d("copy"),20,4);a("Paste","paste",e(),30,8)})();b.getClipboardData=function(a,c){function d(a){a.removeListener();a.cancel();c(a.data)}c||(c=a,a=null);b.on("paste", -d,null,null,0);!1===z()&&(b.removeListener("paste",d),c(null))}}function b(a){if(CKEDITOR.env.webkit){if(!a.match(/^[^<]*$/g)&&!a.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi)&&!a.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";return"htmlifiedtext"}function c(a,b){function c(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", -~~(a/2))+(1==a%2?"\x3cbr\x3e":"")}b=b.replace(/\s+/g," ").replace(/> +</g,"\x3e\x3c").replace(/<br ?\/>/gi,"\x3cbr\x3e");b=b.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(b.match(/^[^<]$/))return b;CKEDITOR.env.webkit&&-1<b.indexOf("\x3cdiv\x3e")&&(b=b.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,"\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"\x3cdiv\x3e\x3c/div\x3e"),b.match(/<div>(<br>|)<\/div>/)&&(b="\x3cp\x3e"+b.replace(/(<div>(<br>|)<\/div>)+/g,function(a){return c(a.split("\x3c/div\x3e\x3cdiv\x3e").length+ -1)})+"\x3c/p\x3e"),b=b.replace(/<\/div><div>/g,"\x3cbr\x3e"),b=b.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&a.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(b=b.replace(/^<br><br>$/,"\x3cbr\x3e")),-1<b.indexOf("\x3cbr\x3e\x3cbr\x3e")&&(b="\x3cp\x3e"+b.replace(/(<br>){2,}/g,function(a){return c(a.length/4)})+"\x3c/p\x3e"));return k(a,b)}function e(){function a(){var b={},c;for(c in CKEDITOR.dtd)"$"!=c.charAt(0)&&"div"!=c&&"span"!=c&&(b[c]=1);return b}var b={};return{get:function(c){return"plain-text"== -c?b.plainText||(b.plainText=new CKEDITOR.filter("br")):"semantic-content"==c?((c=b.semanticContent)||(c=new CKEDITOR.filter,c.allow({$1:{elements:a(),attributes:!0,styles:!1,classes:!1}}),c=b.semanticContent=c),c):c?new CKEDITOR.filter(c):null}}}function l(a,b,c){b=CKEDITOR.htmlParser.fragment.fromHtml(b);var d=new CKEDITOR.htmlParser.basicWriter;c.applyTo(b,!0,!1,a.activeEnterMode);b.writeHtml(d);return d.getHtml()}function k(a,b){a.enterMode==CKEDITOR.ENTER_BR?b=b.replace(/(<\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat("\x3cbr\x3e", -a.length/7*2)}).replace(/<\/?p>/g,""):a.enterMode==CKEDITOR.ENTER_DIV&&(b=b.replace(/<(\/)?p>/g,"\x3c$1div\x3e"));return b}function d(a){a.data.preventDefault();a.data.$.dataTransfer.dropEffect="none"}function h(b){var c=CKEDITOR.plugins.clipboard;b.on("contentDom",function(){function d(c,e,f){e.select();a(b,{dataTransfer:f,method:"drop"},1);f.sourceEditor.fire("saveSnapshot");f.sourceEditor.editable().extractHtmlFromRange(c);f.sourceEditor.getSelection().selectRanges([c]);f.sourceEditor.fire("saveSnapshot")} -function e(d,f){d.select();a(b,{dataTransfer:f,method:"drop"},1);c.resetDragDataTransfer()}function f(a,c,d){var e={$:a.data.$,target:a.data.getTarget()};c&&(e.dragRange=c);d&&(e.dropRange=d);!1===b.fire(a.name,e)&&a.data.preventDefault()}function h(a){a.type!=CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return a.getChildCount()}var k=b.editable(),l=CKEDITOR.plugins.clipboard.getDropTarget(b),m=b.ui.space("top"),z=b.ui.space("bottom");c.preventDefaultDropOnElement(m);c.preventDefaultDropOnElement(z); -k.attachListener(l,"dragstart",f);k.attachListener(b,"dragstart",c.resetDragDataTransfer,c,null,1);k.attachListener(b,"dragstart",function(a){c.initDragDataTransfer(a,b)},null,null,2);k.attachListener(b,"dragstart",function(){var a=c.dragRange=b.getSelection().getRanges()[0];CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(c.dragStartContainerChildCount=a?h(a.startContainer):null,c.dragEndContainerChildCount=a?h(a.endContainer):null)},null,null,100);k.attachListener(l,"dragend",f);k.attachListener(b,"dragend", -c.initDragDataTransfer,c,null,1);k.attachListener(b,"dragend",c.resetDragDataTransfer,c,null,100);k.attachListener(l,"dragover",function(a){if(CKEDITOR.env.edge)a.data.preventDefault();else{var b=a.data.getTarget();b&&b.is&&b.is("html")?a.data.preventDefault():CKEDITOR.env.ie&&CKEDITOR.plugins.clipboard.isFileApiSupported&&a.data.$.dataTransfer.types.contains("Files")&&a.data.preventDefault()}});k.attachListener(l,"drop",function(a){if(!a.data.$.defaultPrevented){a.data.preventDefault();var d=a.data.getTarget(); -if(!d.isReadOnly()||d.type==CKEDITOR.NODE_ELEMENT&&d.is("html")){var d=c.getRangeAtDropPosition(a,b),e=c.dragRange;d&&f(a,e,d)}}},null,null,9999);k.attachListener(b,"drop",c.initDragDataTransfer,c,null,1);k.attachListener(b,"drop",function(a){if(a=a.data){var f=a.dropRange,h=a.dragRange,k=a.dataTransfer;k.getTransferType(b)==CKEDITOR.DATA_TRANSFER_INTERNAL?setTimeout(function(){c.internalDrop(h,f,k,b)},0):k.getTransferType(b)==CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?d(h,f,k):e(f,k)}},null,null,9999)})} -CKEDITOR.plugins.add("clipboard",{requires:"notification,toolbar",init:function(a){var d,k=e();a.config.forcePasteAsPlainText?d="plain-text":a.config.pasteFilter?d=a.config.pasteFilter:!CKEDITOR.env.webkit||"pasteFilter"in a.config||(d="semantic-content");a.pasteFilter=k.get(d);f(a);h(a);if(CKEDITOR.env.gecko){var m=["image/png","image/jpeg","image/gif"],y;a.on("paste",function(b){var c=b.data,d=c.dataTransfer;if(!c.dataValue&&"paste"==c.method&&d&&1==d.getFilesCount()&&y!=d.id&&(d=d.getFile(0),-1!= -CKEDITOR.tools.indexOf(m,d.type))){var e=new FileReader;e.addEventListener("load",function(){b.data.dataValue='\x3cimg src\x3d"'+e.result+'" /\x3e';a.fire("paste",b.data)},!1);e.addEventListener("abort",function(){a.fire("paste",b.data)},!1);e.addEventListener("error",function(){a.fire("paste",b.data)},!1);e.readAsDataURL(d);y=c.dataTransfer.id;b.stop()}},null,null,1)}a.on("paste",function(b){b.data.dataTransfer||(b.data.dataTransfer=new CKEDITOR.plugins.clipboard.dataTransfer);if(!b.data.dataValue){var c= -b.data.dataTransfer,d=c.getData("text/html");if(d)b.data.dataValue=d,b.data.type="html";else if(d=c.getData("text/plain"))b.data.dataValue=a.editable().transformPlainTextToHtml(d),b.data.type="text"}},null,null,1);a.on("paste",function(a){var b=a.data.dataValue,c=CKEDITOR.dtd.$block;-1<b.indexOf("Apple-")&&(b=b.replace(/<span class="Apple-converted-space"> <\/span>/gi," "),"html"!=a.data.type&&(b=b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g, -"\x26nbsp;\x26nbsp; \x26nbsp;")})),-1<b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e')&&(a.data.startsWithEOL=1,a.data.preSniffing="html",b=b.replace(/<br class="Apple-interchange-newline">/,"")),b=b.replace(/(<[^>]+) class="Apple-[^"]*"/gi,"$1"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var d,e,f=new CKEDITOR.dom.element("div");for(f.setHtml(b);1==f.getChildCount()&&(d=f.getFirst())&&d.type==CKEDITOR.NODE_ELEMENT&&(d.hasClass("cke_editable")||d.hasClass("cke_contents"));)f=e=d; -e&&(b=e.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?b=b.replace(/^ (?: |\r\n)?<(\w+)/g,function(b,d){return d.toLowerCase()in c?(a.data.preSniffing="html","\x3c"+d):b}):CKEDITOR.env.webkit?b=b.replace(/<\/(\w+)><div><br><\/div>$/,function(b,d){return d in c?(a.data.endsWithEOL=1,"\x3c/"+d+"\x3e"):b}):CKEDITOR.env.gecko&&(b=b.replace(/(\s)<br>$/,"$1"));a.data.dataValue=b},null,null,3);a.on("paste",function(d){d=d.data;var e=a._.nextPasteType||d.type,f=d.dataValue,h,m=a.config.clipboard_defaultContentType|| -"html",n=d.dataTransfer.getTransferType(a);h="html"==e||"html"==d.preSniffing?"html":b(f);delete a._.nextPasteType;"htmlifiedtext"==h&&(f=c(a.config,f));"text"==e&&"html"==h?f=l(a,f,k.get("plain-text")):n==CKEDITOR.DATA_TRANSFER_EXTERNAL&&a.pasteFilter&&!d.dontFilter&&(f=l(a,f,a.pasteFilter));d.startsWithEOL&&(f='\x3cbr data-cke-eol\x3d"1"\x3e'+f);d.endsWithEOL&&(f+='\x3cbr data-cke-eol\x3d"1"\x3e');"auto"==e&&(e="html"==h||"html"==m?"html":"text");d.type=e;d.dataValue=f;delete d.preSniffing;delete d.startsWithEOL; -delete d.endsWithEOL},null,null,6);a.on("paste",function(b){b=b.data;b.dataValue&&(a.insertHtml(b.dataValue,b.type,b.range),setTimeout(function(){a.fire("afterPaste")},0))},null,null,1E3)}});CKEDITOR.plugins.clipboard={isCustomCopyCutSupported:!CKEDITOR.env.ie&&!CKEDITOR.env.iOS,isCustomDataTypesSupported:!CKEDITOR.env.ie,isFileApiSupported:!CKEDITOR.env.ie||9<CKEDITOR.env.version,mainPasteEvent:CKEDITOR.env.ie&&!CKEDITOR.env.edge?"beforepaste":"paste",canClipboardApiBeTrusted:function(a,b){return a.getTransferType(b)!= -CKEDITOR.DATA_TRANSFER_EXTERNAL||CKEDITOR.env.chrome&&!a.isEmpty()||CKEDITOR.env.gecko&&(a.getData("text/html")||a.getFilesCount())||CKEDITOR.env.safari&&603<=CKEDITOR.env.version&&!CKEDITOR.env.iOS?!0:!1},getDropTarget:function(a){var b=a.editable();return CKEDITOR.env.ie&&9>CKEDITOR.env.version||b.isInline()?b:a.document},fixSplitNodesAfterDrop:function(a,b,c,d){function e(a,c,d){var f=a;f.type==CKEDITOR.NODE_TEXT&&(f=a.getParent());if(f.equals(c)&&d!=c.getChildCount())return a=b.startContainer.getChild(b.startOffset- -1),c=b.startContainer.getChild(b.startOffset),a&&a.type==CKEDITOR.NODE_TEXT&&c&&c.type==CKEDITOR.NODE_TEXT&&(d=a.getLength(),a.setText(a.getText()+c.getText()),c.remove(),b.setStart(a,d),b.collapse(!0)),!0}var f=b.startContainer;"number"==typeof d&&"number"==typeof c&&f.type==CKEDITOR.NODE_ELEMENT&&(e(a.startContainer,f,c)||e(a.endContainer,f,d))},isDropRangeAffectedByDragRange:function(a,b){var c=b.startContainer,d=b.endOffset;return a.endContainer.equals(c)&&a.endOffset<=d||a.startContainer.getParent().equals(c)&& -a.startContainer.getIndex()<d||a.endContainer.getParent().equals(c)&&a.endContainer.getIndex()<d?!0:!1},internalDrop:function(b,c,d,e){var f=CKEDITOR.plugins.clipboard,h=e.editable(),k,l;e.fire("saveSnapshot");e.fire("lockSnapshot",{dontUpdate:1});CKEDITOR.env.ie&&10>CKEDITOR.env.version&&this.fixSplitNodesAfterDrop(b,c,f.dragStartContainerChildCount,f.dragEndContainerChildCount);(l=this.isDropRangeAffectedByDragRange(b,c))||(k=b.createBookmark(!1));f=c.clone().createBookmark(!1);l&&(k=b.createBookmark(!1)); -b=k.startNode;c=k.endNode;l=f.startNode;c&&b.getPosition(l)&CKEDITOR.POSITION_PRECEDING&&c.getPosition(l)&CKEDITOR.POSITION_FOLLOWING&&l.insertBefore(b);b=e.createRange();b.moveToBookmark(k);h.extractHtmlFromRange(b,1);c=e.createRange();c.moveToBookmark(f);a(e,{dataTransfer:d,method:"drop",range:c},1);e.fire("unlockSnapshot")},getRangeAtDropPosition:function(a,b){var c=a.data.$,d=c.clientX,e=c.clientY,f=b.getSelection(!0).getRanges()[0],h=b.createRange();if(a.data.testRange)return a.data.testRange; -if(document.caretRangeFromPoint&&b.document.$.caretRangeFromPoint(d,e))c=b.document.$.caretRangeFromPoint(d,e),h.setStart(CKEDITOR.dom.node(c.startContainer),c.startOffset),h.collapse(!0);else if(c.rangeParent)h.setStart(CKEDITOR.dom.node(c.rangeParent),c.rangeOffset),h.collapse(!0);else{if(CKEDITOR.env.ie&&8<CKEDITOR.env.version&&f&&b.editable().hasFocus)return f;if(document.body.createTextRange){b.focus();c=b.document.getBody().$.createTextRange();try{for(var k=!1,l=0;20>l&&!k;l++){if(!k)try{c.moveToPoint(d, -e-l),k=!0}catch(m){}if(!k)try{c.moveToPoint(d,e+l),k=!0}catch(t){}}if(k){var A="cke-temp-"+(new Date).getTime();c.pasteHTML('\x3cspan id\x3d"'+A+'"\x3e​\x3c/span\x3e');var D=b.document.getById(A);h.moveToPosition(D,CKEDITOR.POSITION_BEFORE_START);D.remove()}else{var x=b.document.$.elementFromPoint(d,e),B=new CKEDITOR.dom.element(x),E;if(B.equals(b.editable())||"html"==B.getName())return f&&f.startContainer&&!f.startContainer.equals(b.editable())?f:null;E=B.getClientRect();d<E.left?h.setStartAt(B, -CKEDITOR.POSITION_AFTER_START):h.setStartAt(B,CKEDITOR.POSITION_BEFORE_END);h.collapse(!0)}}catch(H){return null}}else return null}return h},initDragDataTransfer:function(a,b){var c=a.data.$?a.data.$.dataTransfer:null,d=new this.dataTransfer(c,b);c?this.dragData&&d.id==this.dragData.id?d=this.dragData:this.dragData=d:this.dragData?d=this.dragData:this.dragData=d;a.data.dataTransfer=d},resetDragDataTransfer:function(){this.dragData=null},initPasteDataTransfer:function(a,b){if(this.isCustomCopyCutSupported){if(a&& -a.data&&a.data.$){var c=new this.dataTransfer(a.data.$.clipboardData,b);this.copyCutData&&c.id==this.copyCutData.id?(c=this.copyCutData,c.$=a.data.$.clipboardData):this.copyCutData=c;return c}return new this.dataTransfer(null,b)}return new this.dataTransfer(CKEDITOR.env.edge&&a&&a.data.$&&a.data.$.clipboardData||null,b)},preventDefaultDropOnElement:function(a){a&&a.on("dragover",d)}};var m=CKEDITOR.plugins.clipboard.isCustomDataTypesSupported?"cke/id":"Text";CKEDITOR.plugins.clipboard.dataTransfer= -function(a,b){a&&(this.$=a);this._={metaRegExp:/^<meta.*?>/i,bodyRegExp:/<body(?:[\s\S]*?)>([\s\S]*)<\/body>/i,fragmentRegExp:/\x3c!--(?:Start|End)Fragment--\x3e/g,data:{},files:[],normalizeType:function(a){a=a.toLowerCase();return"text"==a||"text/plain"==a?"Text":"url"==a?"URL":a}};this.id=this.getData(m);this.id||(this.id="Text"==m?"":"cke-"+CKEDITOR.tools.getUniqueId());if("Text"!=m)try{this.$.setData(m,this.id)}catch(c){}b&&(this.sourceEditor=b,this.setData("text/html",b.getSelectedHtml(1)),"Text"== -m||this.getData("text/plain")||this.setData("text/plain",b.getSelection().getSelectedText()))};CKEDITOR.DATA_TRANSFER_INTERNAL=1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS=2;CKEDITOR.DATA_TRANSFER_EXTERNAL=3;CKEDITOR.plugins.clipboard.dataTransfer.prototype={getData:function(a,b){a=this._.normalizeType(a);var c=this._.data[a],d;if(void 0===c||null===c||""===c)try{c=this.$.getData(a)}catch(e){}if(void 0===c||null===c||""===c)c="";"text/html"!=a||b?"Text"==a&&CKEDITOR.env.gecko&&this.getFilesCount()&&"file://"== -c.substring(0,7)&&(c=""):(c=c.replace(this._.metaRegExp,""),(d=this._.bodyRegExp.exec(c))&&d.length&&(c=d[1],c=c.replace(this._.fragmentRegExp,"")));"string"===typeof c&&(d=c.indexOf("\x3c/html\x3e"),c=-1!==d?c.substring(0,d+7):c);return c},setData:function(a,b){a=this._.normalizeType(a);this._.data[a]=b;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"URL"==a||"Text"==a){"Text"==m&&"Text"==a&&(this.id=b);try{this.$.setData(a,b)}catch(c){}}},getTransferType:function(a){return this.sourceEditor? -this.sourceEditor==a?CKEDITOR.DATA_TRANSFER_INTERNAL:CKEDITOR.DATA_TRANSFER_CROSS_EDITORS:CKEDITOR.DATA_TRANSFER_EXTERNAL},cacheData:function(){function a(c){c=b._.normalizeType(c);var d=b.getData(c,!0);d&&(b._.data[c]=d)}if(this.$){var b=this,c,d;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(c=0;c<this.$.types.length;c++)a(this.$.types[c])}else a("Text"),a("URL");d=this._getImageFromClipboard();if(this.$&&this.$.files||d){this._.files=[];if(this.$.files&&this.$.files.length)for(c= -0;c<this.$.files.length;c++)this._.files.push(this.$.files[c]);0===this._.files.length&&d&&this._.files.push(d)}}},getFilesCount:function(){return this._.files.length?this._.files.length:this.$&&this.$.files&&this.$.files.length?this.$.files.length:this._getImageFromClipboard()?1:0},getFile:function(a){return this._.files.length?this._.files[a]:this.$&&this.$.files&&this.$.files.length?this.$.files[a]:0===a?this._getImageFromClipboard():void 0},isEmpty:function(){var a={},b;if(this.getFilesCount())return!1; -for(b in this._.data)a[b]=1;if(this.$)if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(var c=0;c<this.$.types.length;c++)a[this.$.types[c]]=1}else a.Text=1,a.URL=1;"Text"!=m&&(a[m]=0);for(b in a)if(a[b]&&""!==this.getData(b))return!1;return!0},_getImageFromClipboard:function(){var a;if(this.$&&this.$.items&&this.$.items[0])try{if((a=this.$.items[0].getAsFile())&&a.type)return a}catch(b){}}}}(),CKEDITOR.config.clipboard_notificationDuration=1E4,function(){CKEDITOR.plugins.add("panel", -{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var a=CKEDITOR.addTemplate("panel",'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'), -f=CKEDITOR.addTemplate("panel-frame",'\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),b=CKEDITOR.addTemplate("panel-frame-inner",'\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e');CKEDITOR.ui.panel.prototype={render:function(c, -e){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),c=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&c.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});c=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(b.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+ -c+");"},l)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(c)}else a=this.document.getById(this.id);this._.holder=a}return a};var l={editorId:c.id,id:this.id,langCode:c.langCode, -dir:c.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":c.config.baseFloatZIndex+1};if(this.isFramed){var k=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";l.frame=f.output({id:this.id+"_frame",src:k})}k=a.output(l);e&&e.push(k);return k},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(), -b);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){a=this._.blocks[a];var b=this._.currentBlock,f=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire("ariaWidget",f);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block= -CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title||this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag("a").getItem(this._.focusIndex= -a),CKEDITOR.env.webkit&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))},markFirstDisplayed:function(a){for(var b=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"none"==a.getStyle("display")},f=this._.getItems(),k,d,h=f.count()-1;0<=h;h--)if(k=f.getItem(h),k.getAscendant(b)||(d=k,this._.focusIndex=h),"true"==k.getAttribute("aria-selected")){d=k;this._.focusIndex=h;break}d&&(a&&a(),CKEDITOR.env.webkit&&d.getDocument().getWindow().focus(),d.focus(),this.onMark&&this.onMark(d))}, -getItems:function(){return this.element.getElementsByTag("a")}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){this.onHide&&!0===this.onHide.call(this)||this.element.setStyle("display","none")},onKeyDown:function(a,b){var f=this.keys[a];switch(f){case "next":for(var k=this._.focusIndex,f=this.element.getElementsByTag("a"),d;d=f.getItem(++k);)if(d.getAttribute("_cke_focus")&&d.$.offsetWidth){this._.focusIndex=k;d.focus();break}return d||b?!1:(this._.focusIndex=-1,this.onKeyDown(a, -1));case "prev":k=this._.focusIndex;for(f=this.element.getElementsByTag("a");0<k&&(d=f.getItem(--k));){if(d.getAttribute("_cke_focus")&&d.$.offsetWidth){this._.focusIndex=k;d.focus();break}d=null}return d||b?!1:(this._.focusIndex=f.count(),this.onKeyDown(a,1));case "click":case "mouseup":return k=this._.focusIndex,(d=0<=k&&this.element.getElementsByTag("a").getItem(k))&&(d.$[f]?d.$[f]():d.$["on"+f]()),!1}return!0}}})}(),CKEDITOR.plugins.add("floatpanel",{requires:"panel"}),function(){function a(a, -c,e,l,k){k=CKEDITOR.tools.genKey(c.getUniqueId(),e.getUniqueId(),a.lang.dir,a.uiColor||"",l.css||"",k||"");var d=f[k];d||(d=f[k]=new CKEDITOR.ui.panel(c,l),d.element=e.append(CKEDITOR.dom.element.createFromHtml(d.render(a),c)),d.element.setStyles({display:"none",position:"absolute"}));return d}var f={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(b,c,e,f){function k(){g.hide()}e.forceIFrame=1;e.toolbarRelated&&b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(c=CKEDITOR.document.getById("cke_"+ -b.name));var d=c.getDocument();f=a(b,d,c,e,f||0);var h=f.element,m=h.getFirst(),g=this;h.disableContextMenu();this.element=h;this._={editor:b,panel:f,parentElement:c,definition:e,document:d,iframe:m,children:[],dir:b.lang.dir,showBlockParams:null};b.on("mode",k);b.on("resize",k);d.getWindow().on("resize",function(){this.reposition()},this)},proto:{addBlock:function(a,c){return this._.panel.addBlock(a,c)},addListBlock:function(a,c){return this._.panel.addListBlock(a,c)},getBlock:function(a){return this._.panel.getBlock(a)}, -showBlock:function(a,c,e,f,k,d){var h=this._.panel,m=h.showBlock(a);this._.showBlockParams=[].slice.call(arguments);this.allowBlur(!1);var g=this._.editor.editable();this._.returnFocus=g.hasFocus?g:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout=0;var n=this.element,g=this._.iframe,g=CKEDITOR.env.ie&&!CKEDITOR.env.edge?g:new CKEDITOR.dom.window(g.$.contentWindow),r=n.getDocument(),q=this._.parentElement.getPositionedAncestor(),y=c.getDocumentPosition(r),r=q?q.getDocumentPosition(r): -{x:0,y:0},w="rtl"==this._.dir,p=y.x+(f||0)-r.x,v=y.y+(k||0)-r.y;!w||1!=e&&4!=e?w||2!=e&&3!=e||(p+=c.$.offsetWidth-1):p+=c.$.offsetWidth;if(3==e||4==e)v+=c.$.offsetHeight-1;this._.panel._.offsetParentId=c.getId();n.setStyles({top:v+"px",left:0,display:""});n.setOpacity(0);n.getFirst().removeStyle("width");this._.editor.focusManager.add(g);this._.blurSet||(CKEDITOR.event.useCapture=!0,g.on("blur",function(a){function b(){delete this._.returnFocus;this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&& -this.visible&&!this._.activeChild&&(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(b,0,this)):b.call(this))},this),g.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.env.iOS&&(g.on("touchstart",function(){clearTimeout(this._.hideTimeout)},this),g.on("touchend",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1,this._.blurSet=1);h.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&& -!1===this.onEscape(a))return!1},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){var a=n;a.removeStyle("width");if(m.autoSize){var b=m.element.getDocument(),b=(CKEDITOR.env.webkit||CKEDITOR.env.edge?m.element:b.getBody()).$.scrollWidth;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetWidth||0)-(a.$.clientWidth||0)+3);a.setStyle("width",b+10+"px");b=m.element.$.scrollHeight;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetHeight||0)-(a.$.clientHeight|| -0)+3);a.setStyle("height",b+"px");h._.currentBlock.element.setStyle("display","none").removeStyle("display")}else a.removeStyle("height");w&&(p-=n.$.offsetWidth);n.setStyle("left",p+"px");var b=h.element.getWindow(),a=n.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,e=a.height||a.bottom-a.top,f=w?a.right:b.width-a.left,g=w?b.width-a.right:a.left;w?f<c&&(p=g>c?p+c:b.width>c?p-a.left:p-a.right+b.width):f<c&&(p=g>c?p-c:b.width>c?p-a.right+b.width:p-a.left);c=a.top;b.height- -a.top<e&&(v=c>e?v-e:b.height>e?v-a.bottom+b.height:v-a.top);CKEDITOR.env.ie&&(b=a=new CKEDITOR.dom.element(n.$.offsetParent),"html"==b.getName()&&(b=b.getDocument().getBody()),"rtl"==b.getComputedStyle("direction")&&(p=CKEDITOR.env.ie8Compat?p-2*n.getDocument().getDocumentElement().$.scrollLeft:p-(a.$.scrollWidth-a.$.clientWidth)));var a=n.getFirst(),k;(k=a.getCustomData("activePanel"))&&k.onHide&&k.onHide.call(this,1);a.setCustomData("activePanel",this);n.setStyles({top:v+"px",left:p+"px"});n.setOpacity(1); -d&&d()},this);h.isLoaded?a():h.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();m.element.focus();CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=a);this.allowBlur(!0);CKEDITOR.env.ie?CKEDITOR.tools.setTimeout(function(){m.markFirstDisplayed?m.markFirstDisplayed():m._.markFirstDisplayed()},0):m.markFirstDisplayed?m.markFirstDisplayed():m._.markFirstDisplayed();this._.editor.fire("panelShow",this)}, -0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},reposition:function(){var a=this._.showBlockParams;this.visible&&this._.showBlockParams&&(this.hide(),this.showBlock.apply(this,a))},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();a&&!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a&&a.is("a")&&(this._.lastFocused= -a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;this._.showBlockParams=null;this._.editor.fire("panelHide",this)}},allowBlur:function(a){var c=this._.panel; -void 0!==a&&(c.allowBlur=a);return c.allowBlur},showAsChild:function(a,c,e,f,k,d){if(this._.activeChild!=a||a._.panel._.offsetParentId!=e.getId())this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(c,e,f,k,d),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=""},100)},hideChild:function(a){var c= -this._.activeChild;c&&(delete c.onHide,delete this._.activeChild,c.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),c;for(c in f){var e=f[c];a?e.destroy():e.element.hide()}a&&(f={})})}(),CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(a){for(var f=a.config.menu_groups.split(","),b=a._.menuGroups={},c=a._.menuItems={},e=0;e<f.length;e++)b[f[e]]=e+1;a.addMenuGroup=function(a,c){b[a]=c||100};a.addMenuItem=function(a, -e){b[e.group]&&(c[a]=new CKEDITOR.menuItem(this,a,e))};a.addMenuItems=function(a){for(var b in a)this.addMenuItem(b,a[b])};a.getMenuItem=function(a){return c[a]};a.removeMenuItem=function(a){delete c[a]}}}),function(){function a(a){a.sort(function(a,b){return a.group<b.group?-1:a.group>b.group?1:a.order<b.order?-1:a.order>b.order?1:0})}var f='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{label}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"'; -CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(f+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(f+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"');var f=f+(' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e'),b=CKEDITOR.addTemplate("menuItem", -f+'\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e'),c=CKEDITOR.addTemplate("menuArrow",'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'), -e=CKEDITOR.addTemplate("menuShortcut",'\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),e=c.block.attributes=c.attributes||{};!e.role&&(e.role="menu");this._.panelDefinition= -c},_:{onShow:function(){var a=this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),e=this._.listeners;this.removeAll();for(var f=0;f<e.length;f++){var g=e[f](b,a,c);if(g)for(var n in g){var r=this.editor.getMenuItem(n);!r||r.command&&!this.editor.getCommand(r.command).state||(r.state=g[n],this.add(r))}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1): -27==a&&this.hide(1);return!1},onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var e in c){var f=this.editor.getMenuItem(e);f&&(f.state=c[e],b.add(f))}var g=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+ -String(a));setTimeout(function(){b.show(g,2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(b,c,d,e){if(!this.parent&&(this._.onShow(),!this.items.length))return;c=c||("rtl"==this.editor.lang.dir?2:1);var f=this.items,g=this.editor,n=this._.panel,r=this._.element;if(!n){n=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level); -n.onEscape=CKEDITOR.tools.bind(function(a){if(!1===this._.onEscape(a))return!1},this);n.onShow=function(){n._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all")};n.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);r=n.addBlock(this.id,this._.panelDefinition.block);r.autoSize=!0;var q=r.keys;q[40]="next";q[9]="next";q[38]="prev";q[CKEDITOR.SHIFT+9]="prev";q["rtl"==g.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";q[32]=CKEDITOR.env.ie?"mouseup": -"click";CKEDITOR.env.ie&&(q[13]="mouseup");r=this._.element=r.element;q=r.getDocument();q.getBody().setStyle("overflow","hidden");q.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,g.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this); -this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}a(f);for(var q=g.elementPath(),q=['\x3cdiv class\x3d"cke_menu'+(q&&q.direction()!=g.lang.dir?" cke_mixed_dir_content":"")+'" role\x3d"presentation"\x3e'],y=f.length,w=y&&f[0].group,p=0;p<y;p++){var v=f[p];w!=v.group&&(q.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'), -w=v.group);v.render(this,p,q)}q.push("\x3c/div\x3e");r.setHtml(q.join(""));CKEDITOR.ui.fire("ready",this);this.parent?this.parent._.panel.showAsChild(n,this.id,b,c,d,e):n.showBlock(this.id,b,c,d,e);g.fire("menuShow",[n])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group= -a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,f,d){var h=a.id+String(f),m="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,g="",n=this.editor,r,q,y=m==CKEDITOR.TRISTATE_ON?"on":m==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(g=' aria-checked\x3d"'+(m==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var w=this.getItems,p="\x26#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",v=this.name;this.icon&&!/\./.test(this.icon)&& -(v=this.icon);this.command&&(r=n.getCommand(this.command),(r=n.getCommandKeystroke(r))&&(q=CKEDITOR.tools.keystrokeToString(n.lang.common.keyboard,r)));a={id:h,name:this.name,iconName:v,label:this.label,cls:this.className||"",state:y,hasPopup:w?"true":"false",disabled:m==CKEDITOR.TRISTATE_DISABLED,title:this.label+(q?" ("+q.display+")":""),ariaShortcut:q?n.lang.common.keyboardShortcut+" "+q.aria:"",href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn, -clickFn:a._.itemClickFn,index:f,iconStyle:CKEDITOR.skin.getIconStyle(v,"rtl"==this.editor.lang.dir,v==this.icon?null:this.icon,this.iconOffset),shortcutHtml:q?e.output({shortcut:q.display}):"",arrowHtml:w?c.output({label:p}):"",role:this.role?this.role:"menuitem",ariaChecked:g};b.output(a,d)}}})}(),CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div", -CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,f){a.on("contextmenu",function(a){a=a.data;var c=CKEDITOR.env.webkit?b:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!f||!c){a.preventDefault();if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var c=this.editor, -k=(new CKEDITOR.dom.elementPath(a.getTarget(),c.editable())).contains(function(a){return a.hasAttribute("contenteditable")},!0);k&&"false"==k.getAttribute("contenteditable")&&c.getSelection().fake(k)}var k=a.getTarget().getDocument(),d=a.getTarget().getDocument().getDocumentElement(),c=!k.equals(CKEDITOR.document),k=k.getWindow().getScrollPosition(),h=c?a.$.clientX:a.$.pageX||k.x+a.$.clientX,m=c?a.$.clientY:a.$.pageY||k.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,h,m)},CKEDITOR.env.ie? -200:0,this)}},this);if(CKEDITOR.env.webkit){var b,c=function(){b=0};a.on("keydown",function(a){b=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on("keyup",c);a.on("contextmenu",c)}},open:function(a,f,b,c){!1!==this.editor.config.enableContextMenu&&(this.editor.focus(),a=a||CKEDITOR.document.getDocumentElement(),this.editor.selectionChange(1),this.show(a,f,b,c))}}})},beforeInit:function(a){var f=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on("contentDom",function(){f.addTarget(a.editable(), -!1!==a.config.browserContextMenuOnCtrl)});a.addCommand("contextMenu",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}}),function(){function a(a,b){function k(b){b=g.list[b];var c;b.equals(a.editable())||"true"==b.getAttribute("contenteditable")?(c=a.createRange(),c.selectNodeContents(b),c=c.select()):(c=a.getSelection(),c.selectElement(b));CKEDITOR.env.ie&&a.fire("selectionChange", -{selection:c,path:new CKEDITOR.dom.elementPath(b)});a.focus()}function d(){m&&m.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');delete g.list}var h=a.ui.spaceId("path"),m,g=a._.elementsPath,n=g.idBase;b.html+='\x3cspan id\x3d"'+h+'_label" class\x3d"cke_voice_label"\x3e'+a.lang.elementspath.eleLabel+'\x3c/span\x3e\x3cspan id\x3d"'+h+'" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"'+h+'_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e'; -a.on("uiReady",function(){var b=a.ui.space("path");b&&a.focusManager.add(b,1)});g.onClick=k;var r=CKEDITOR.tools.addFunction(k),q=CKEDITOR.tools.addFunction(function(b,c){var d=g.idBase,f;c=new CKEDITOR.dom.event(c);f="rtl"==a.lang.dir;switch(c.getKeystroke()){case f?39:37:case 9:return(f=CKEDITOR.document.getById(d+(b+1)))||(f=CKEDITOR.document.getById(d+"0")),f.focus(),!1;case f?37:39:case CKEDITOR.SHIFT+9:return(f=CKEDITOR.document.getById(d+(b-1)))||(f=CKEDITOR.document.getById(d+(g.list.length- -1))),f.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return k(b),!1}return!0});a.on("selectionChange",function(){for(var b=[],d=g.list=[],f=[],k=g.filters,l=!0,z=a.elementPath().elements,t,A=z.length;A--;){var D=z[A],x=0;t=D.data("cke-display-name")?D.data("cke-display-name"):D.data("cke-real-element-type")?D.data("cke-real-element-type"):D.getName();(l=D.hasAttribute("contenteditable")?"true"==D.getAttribute("contenteditable"):l)||D.hasAttribute("contenteditable")||(x=1);for(var B=0;B<k.length;B++){var E= -k[B](D,t);if(!1===E){x=1;break}t=E||t}x||(d.unshift(D),f.unshift(t))}d=d.length;for(k=0;k<d;k++)t=f[k],l=a.lang.elementspath.eleTitle.replace(/%1/,t),t=c.output({id:n+k,label:l,text:t,jsTitle:"javascript:void('"+t+"')",index:k,keyDownFn:q,clickFn:r}),b.unshift(t);m||(m=CKEDITOR.document.getById(h));f=m;f.setHtml(b.join("")+'\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');a.fire("elementsPathUpdate",{space:f})});a.on("readOnly",d);a.on("contentDomUnload",d);a.addCommand("elementsPathFocus", -f.toolbarFocus);a.setKeystroke(CKEDITOR.ALT+122,"elementsPathFocus")}var f={toolbarFocus:{editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}}},b="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(b+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(b+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var c=CKEDITOR.addTemplate("pathItem",'\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"'+ -b+' hidefocus\x3d"true" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e');CKEDITOR.plugins.add("elementspath",{init:function(b){b._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};b.on("uiSpace",function(c){"bottom"==c.data.space&&a(b,c.data)})}})}(),function(){function a(a,e){var l,k;e.on("refresh", -function(a){var c=[f],e;for(e in a.data.states)c.push(a.data.states[e]);this.setState(CKEDITOR.tools.search(c,b)?b:f)},e,null,100);e.on("exec",function(b){l=a.getSelection();k=l.createBookmarks(1);b.data||(b.data={});b.data.done=!1},e,null,0);e.on("exec",function(){a.forceNextSelectionCheck();l.selectBookmarks(k)},e,null,100)}var f=CKEDITOR.TRISTATE_DISABLED,b=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(b){var e=CKEDITOR.plugins.indent.genericDefinition;a(b,b.addCommand("indent", -new e(!0)));a(b,b.addCommand("outdent",new e));b.ui.addButton&&(b.ui.addButton("Indent",{label:b.lang.indent.indent,command:"indent",directional:!0,toolbar:"indent,20"}),b.ui.addButton("Outdent",{label:b.lang.indent.outdent,command:"outdent",directional:!0,toolbar:"indent,10"}));b.on("dirChanged",function(a){var e=b.createRange(),d=a.data.node;e.setStartBefore(d);e.setEndAfter(d);for(var f=new CKEDITOR.dom.walker(e),m;m=f.next();)if(m.type==CKEDITOR.NODE_ELEMENT)if(!m.equals(d)&&m.getDirection())e.setStartAfter(m), -f=new CKEDITOR.dom.walker(e);else{var g=b.config.indentClasses;if(g)for(var n="ltr"==a.data.dir?["_rtl",""]:["","_rtl"],r=0;r<g.length;r++)m.hasClass(g[r]+n[0])&&(m.removeClass(g[r]+n[0]),m.addClass(g[r]+n[1]));g=m.getStyle("margin-right");n=m.getStyle("margin-left");g?m.setStyle("margin-left",g):m.removeStyle("margin-left");n?m.setStyle("margin-right",n):m.removeStyle("margin-right")}})}});CKEDITOR.plugins.indent={genericDefinition:function(a){this.isIndent=!!a;this.startDisabled=!this.isIndent}, -specificDefinition:function(a,b,f){this.name=b;this.editor=a;this.jobs={};this.enterBr=a.config.enterMode==CKEDITOR.ENTER_BR;this.isIndent=!!f;this.relatedGlobal=f?"indent":"outdent";this.indentKey=f?9:CKEDITOR.SHIFT+9;this.database={}},registerCommands:function(a,b){a.on("pluginsLoaded",function(){for(var a in b)(function(a,b){var c=a.getCommand(b.relatedGlobal),e;for(e in b.jobs)c.on("exec",function(c){c.data.done||(a.fire("lockSnapshot"),b.execJob(a,e)&&(c.data.done=!0),a.fire("unlockSnapshot"), -CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,e),c.on("refresh",function(c){c.data.states||(c.data.states={});c.data.states[b.name+"@"+e]=b.refreshJob(a,e,c.data.path)},this,null,e);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var l=this.jobs[b];if(l.state!=f)return l.exec.call(this,a)},refreshJob:function(a,b,l){b=this.jobs[b];a.activeFilter.checkFeature(this)? -b.state=b.refresh.call(this,a,l):b.state=f;return b.state},getContext:function(a){return a.contains(this.context)}}}(),function(){function a(a){function c(f){for(var h=l.startContainer,u=l.endContainer;h&&!h.getParent().equals(f);)h=h.getParent();for(;u&&!u.getParent().equals(f);)u=u.getParent();if(!h||!u)return!1;for(var z=h,h=[],t=!1;!t;)z.equals(u)&&(t=!0),h.push(z),z=z.getNext();if(1>h.length)return!1;z=f.getParents(!0);for(u=0;u<z.length;u++)if(z[u].getName&&k[z[u].getName()]){f=z[u];break}for(var z= -e.isIndent?1:-1,u=h[0],h=h[h.length-1],t=CKEDITOR.plugins.list.listToArray(f,g),w=t[h.getCustomData("listarray_index")].indent,u=u.getCustomData("listarray_index");u<=h.getCustomData("listarray_index");u++)if(t[u].indent+=z,0<z){var y=t[u].parent;t[u].parent=new CKEDITOR.dom.element(y.getName(),y.getDocument())}for(u=h.getCustomData("listarray_index")+1;u<t.length&&t[u].indent>w;u++)t[u].indent+=z;h=CKEDITOR.plugins.list.arrayToList(t,g,null,a.config.enterMode,f.getDirection());if(!e.isIndent){var x; -if((x=f.getParent())&&x.is("li"))for(var z=h.listNode.getChildren(),B=[],E,u=z.count()-1;0<=u;u--)(E=z.getItem(u))&&E.is&&E.is("li")&&B.push(E)}h&&h.listNode.replace(f);if(B&&B.length)for(u=0;u<B.length;u++){for(E=f=B[u];(E=E.getNext())&&E.is&&E.getName()in k;)CKEDITOR.env.needsNbspFiller&&!f.getFirst(b)&&f.append(l.document.createText(" ")),f.append(E);f.insertAfter(x)}h&&a.fire("contentDomInvalidated");return!0}for(var e=this,g=this.database,k=this.context,l,q=a.getSelection(),q=(q&&q.getRanges()).createIterator();l= -q.getNextRange();){for(var y=l.getCommonAncestor();y&&(y.type!=CKEDITOR.NODE_ELEMENT||!k[y.getName()]);){if(a.editable().equals(y)){y=!1;break}y=y.getParent()}y||(y=l.startPath().contains(k))&&l.setEndAt(y,CKEDITOR.POSITION_BEFORE_END);if(!y){var w=l.getEnclosedNode();w&&w.type==CKEDITOR.NODE_ELEMENT&&w.getName()in k&&(l.setStartAt(w,CKEDITOR.POSITION_AFTER_START),l.setEndAt(w,CKEDITOR.POSITION_BEFORE_END),y=w)}y&&l.startContainer.type==CKEDITOR.NODE_ELEMENT&&l.startContainer.getName()in k&&(w=new CKEDITOR.dom.walker(l), -w.evaluator=f,l.startContainer=w.next());y&&l.endContainer.type==CKEDITOR.NODE_ELEMENT&&l.endContainer.getName()in k&&(w=new CKEDITOR.dom.walker(l),w.evaluator=f,l.endContainer=w.previous());if(y)return c(y)}return 0}function f(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.is("li")}function b(a){return c(a)&&e(a)}var c=CKEDITOR.dom.walker.whitespaces(!0),e=CKEDITOR.dom.walker.bookmark(!1,!0),l=CKEDITOR.TRISTATE_DISABLED,k=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(b){function c(b){e.specificDefinition.apply(this, -arguments);this.requiredContent=["ul","ol"];b.on("key",function(a){var c=b.elementPath();if("wysiwyg"==b.mode&&a.data.keyCode==this.indentKey&&c){var d=this.getContext(c);!d||this.isIndent&&CKEDITOR.plugins.indentList.firstItemInPath(this.context,c,d)||(b.execCommand(this.relatedGlobal),a.cancel())}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(a,b){var c=this.getContext(b),d=CKEDITOR.plugins.indentList.firstItemInPath(this.context,b,c);return c&&this.isIndent&&!d?k:l}:function(a, -b){return!this.getContext(b)||this.isIndent?l:k},exec:CKEDITOR.tools.bind(a,this)}}var e=CKEDITOR.plugins.indent;e.registerCommands(b,{indentlist:new c(b,"indentlist",!0),outdentlist:new c(b,"outdentlist")});CKEDITOR.tools.extend(c.prototype,e.specificDefinition.prototype,{context:{ol:1,ul:1}})}});CKEDITOR.plugins.indentList={};CKEDITOR.plugins.indentList.firstItemInPath=function(a,b,c){var e=b.contains(f);c||(c=b.contains(a));return c&&e&&e.equals(c.getFirst(f))}}(),function(){function a(a,b,c){function d(c){if(!(!(l= -k[c?"getFirst":"getLast"]())||l.is&&l.isBlockBoundary()||!(m=b.root[c?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))||m.is&&m.isBlockBoundary({br:1})))a.document.createElement("br")[c?"insertBefore":"insertAfter"](l)}for(var e=CKEDITOR.plugins.list.listToArray(b.root,c),f=[],g=0;g<b.contents.length;g++){var h=b.contents[g];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&&(f.push(h),CKEDITOR.dom.element.setMarker(c,h,"list_item_processed",!0))}h=null;for(g=0;g<f.length;g++)h= -f[g].getCustomData("listarray_index"),e[h].indent=-1;for(g=h+1;g<e.length;g++)if(e[g].indent>e[g-1].indent+1){f=e[g-1].indent+1-e[g].indent;for(h=e[g].indent;e[g]&&e[g].indent>=h;)e[g].indent+=f,g++;g--}var k=CKEDITOR.plugins.list.arrayToList(e,c,null,a.config.enterMode,b.root.getAttribute("dir")).listNode,l,m;d(!0);d();k.replace(b.root);a.fire("contentDomInvalidated")}function f(a,b){this.name=a;this.context=this.type=b;this.allowedContent=b+" li";this.requiredContent=b}function b(a,b,c,d){for(var e, -f;e=a[d?"getLast":"getFirst"](q);)(f=e.getDirection(1))!==b.getDirection(1)&&e.setAttribute("dir",f),e.remove(),c?e[d?"insertBefore":"insertAfter"](c):b.append(e,d)}function c(a){function c(d){var e=a[d?"getPrevious":"getNext"](g);e&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(a.getName())&&(b(a,e,null,!d),a.remove(),a=e)}c();c(1)}function e(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in CKEDITOR.dtd.$block||a.getName()in CKEDITOR.dtd.$listItem)&&CKEDITOR.dtd[a.getName()]["#"]}function l(a,d,e){a.fire("saveSnapshot"); -e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var f=e.extractContents();d.trim(!1,!0);var h=d.createBookmark(),l=new CKEDITOR.dom.elementPath(d.startContainer),m=l.block,l=l.lastElement.getAscendant("li",1)||m,A=new CKEDITOR.dom.elementPath(e.startContainer),r=A.contains(CKEDITOR.dtd.$listItem),A=A.contains(CKEDITOR.dtd.$list);m?(m=m.getBogus())&&m.remove():A&&(m=A.getPrevious(g))&&n(m)&&m.remove();(m=f.getLast())&&m.type==CKEDITOR.NODE_ELEMENT&&m.is("br")&&m.remove();(m=d.startContainer.getChild(d.startOffset))? -f.insertBefore(m):d.startContainer.append(f);r&&(f=k(r))&&(l.contains(r)?(b(f,r.getParent(),r),f.remove()):l.append(f));for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){A=e.startPath();f=A.block;if(!f)break;f.is("li")&&(l=f.getParent(),f.equals(l.getLast(g))&&f.equals(l.getFirst(g))&&(f=l));e.moveToPosition(f,CKEDITOR.POSITION_BEFORE_START);f.remove()}e=e.clone();f=a.editable();e.setEndAt(f,CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return g(a)&&!n(a)};(e= -e.next())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list&&c(e);d.moveToBookmark(h);d.select();a.fire("saveSnapshot")}function k(a){return(a=a.getLast(g))&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in d?a:null}var d={ol:1,ul:1},h=CKEDITOR.dom.walker.whitespaces(),m=CKEDITOR.dom.walker.bookmark(),g=function(a){return!(h(a)||m(a))},n=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(a,b,c,e,f){if(!d[a.getName()])return[];e||(e=0);c||(c=[]);for(var g=0,h=a.getChildCount();g< -h;g++){var k=a.getChild(g);k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(k,b,c,e+1);if("li"==k.$.nodeName.toLowerCase()){var l={parent:a,indent:e,element:k,contents:[]};f?l.grandparent=f:(l.grandparent=a.getParent(),l.grandparent&&"li"==l.grandparent.$.nodeName.toLowerCase()&&(l.grandparent=l.grandparent.getParent()));b&&CKEDITOR.dom.element.setMarker(b,k,"listarray_index",c.length);c.push(l);for(var m=0,n=k.getChildCount(),r;m<n;m++)r=k.getChild(m), -r.type==CKEDITOR.NODE_ELEMENT&&d[r.getName()]?CKEDITOR.plugins.list.listToArray(r,b,c,e+1,l.grandparent):l.contents.push(r)}}return c},arrayToList:function(a,b,c,e,f){c||(c=0);if(!a||a.length<c+1)return null;for(var h,k=a[c].parent.getDocument(),l=new CKEDITOR.dom.documentFragment(k),n=null,x=c,B=Math.max(a[c].indent,0),r=null,q,F,I=e==CKEDITOR.ENTER_P?"p":"div";;){var G=a[x];h=G.grandparent;q=G.element.getDirection(1);if(G.indent==B){n&&a[x].parent.getName()==n.getName()||(n=a[x].parent.clone(!1, -1),f&&n.setAttribute("dir",f),l.append(n));r=n.append(G.element.clone(0,1));q!=n.getDirection(1)&&r.setAttribute("dir",q);for(h=0;h<G.contents.length;h++)r.append(G.contents[h].clone(1,1));x++}else if(G.indent==Math.max(B,0)+1)G=a[x-1].element.getDirection(1),x=CKEDITOR.plugins.list.arrayToList(a,null,x,e,G!=q?q:null),!r.getChildCount()&&CKEDITOR.env.needsNbspFiller&&7>=k.$.documentMode&&r.append(k.createText(" ")),r.append(x.listNode),x=x.nextIndex;else if(-1==G.indent&&!c&&h){d[h.getName()]?(r= -G.element.clone(!1,!0),q!=h.getDirection(1)&&r.setAttribute("dir",q)):r=new CKEDITOR.dom.documentFragment(k);var n=h.getDirection(1)!=q,L=G.element,J=L.getAttribute("class"),C=L.getAttribute("style"),T=r.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(e!=CKEDITOR.ENTER_BR||n||C||J),K,R=G.contents.length,N;for(h=0;h<R;h++)if(K=G.contents[h],m(K)&&1<R)T?N=K.clone(1,1):r.append(K.clone(1,1));else if(K.type==CKEDITOR.NODE_ELEMENT&&K.isBlockBoundary()){n&&!K.getDirection()&&K.setAttribute("dir",q);F=K;var V=L.getAttribute("style"); -V&&F.setAttribute("style",V.replace(/([^;])$/,"$1;")+(F.getAttribute("style")||""));J&&K.addClass(J);F=null;N&&(r.append(N),N=null);r.append(K.clone(1,1))}else T?(F||(F=k.createElement(I),r.append(F),n&&F.setAttribute("dir",q)),C&&F.setAttribute("style",C),J&&F.setAttribute("class",J),N&&(F.append(N),N=null),F.append(K.clone(1,1))):r.append(K.clone(1,1));N&&((F||r).append(N),N=null);r.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&x!=a.length-1&&(CKEDITOR.env.needsBrFiller&&(q=r.getLast())&&q.type==CKEDITOR.NODE_ELEMENT&& -q.is("br")&&q.remove(),(q=r.getLast(g))&&q.type==CKEDITOR.NODE_ELEMENT&&q.is(CKEDITOR.dtd.$block)||r.append(k.createElement("br")));q=r.$.nodeName.toLowerCase();"div"!=q&&"p"!=q||r.appendBogus();l.append(r);n=null;x++}else return null;F=null;if(a.length<=x||Math.max(a[x].indent,0)<B)break}if(b)for(a=l.getFirst();a;){if(a.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(b,a),a.getName()in CKEDITOR.dtd.$listItem&&(c=a,k=f=e=void 0,e=c.getDirection()))){for(f=c.getParent();f&&!(k=f.getDirection());)f= -f.getParent();e==k&&c.removeAttribute("dir")}a=a.getNextSourceNode()}return{listNode:l,nextIndex:x}}};var r=/^h[1-6]$/,q=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);f.prototype={exec:function(b){this.refresh(b,b.elementPath());var e=b.config,f=b.getSelection(),h=f&&f.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var k=b.editable();if(k.getFirst(g)){var l=1==h.length&&h[0];(e=l&&l.getEnclosedNode())&&e.is&&this.type==e.getName()&&this.setState(CKEDITOR.TRISTATE_ON)}else e.enterMode==CKEDITOR.ENTER_BR? -k.appendBogus():h[0].fixBlock(1,e.enterMode==CKEDITOR.ENTER_P?"p":"div"),f.selectRanges(h)}for(var e=f.createBookmarks(!0),k=[],m={},h=h.createIterator(),n=0;(l=h.getNextRange())&&++n;){var q=l.getBoundaryNodes(),x=q.startNode,B=q.endNode;x.type==CKEDITOR.NODE_ELEMENT&&"td"==x.getName()&&l.setStartAt(q.startNode,CKEDITOR.POSITION_AFTER_START);B.type==CKEDITOR.NODE_ELEMENT&&"td"==B.getName()&&l.setEndAt(q.endNode,CKEDITOR.POSITION_BEFORE_END);l=l.createIterator();for(l.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;q= -l.getNextParagraph();)if(!q.getCustomData("list_block")){CKEDITOR.dom.element.setMarker(m,q,"list_block",1);for(var E=b.elementPath(q),x=E.elements,B=0,E=E.blockLimit,H,F=x.length-1;0<=F&&(H=x[F]);F--)if(d[H.getName()]&&E.contains(H)){E.removeCustomData("list_group_object_"+n);(x=H.getCustomData("list_group_object"))?x.contents.push(q):(x={root:H,contents:[q]},k.push(x),CKEDITOR.dom.element.setMarker(m,H,"list_group_object",x));B=1;break}B||(B=E,B.getCustomData("list_group_object_"+n)?B.getCustomData("list_group_object_"+ -n).contents.push(q):(x={root:B,contents:[q]},CKEDITOR.dom.element.setMarker(m,B,"list_group_object_"+n,x),k.push(x)))}}for(H=[];0<k.length;)if(x=k.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(d[x.root.getName()]){h=b;n=x;x=m;l=H;B=CKEDITOR.plugins.list.listToArray(n.root,x);E=[];for(q=0;q<n.contents.length;q++)F=n.contents[q],(F=F.getAscendant("li",!0))&&!F.getCustomData("list_item_processed")&&(E.push(F),CKEDITOR.dom.element.setMarker(x,F,"list_item_processed",!0));for(var F=n.root.getDocument(), -I=void 0,G=void 0,q=0;q<E.length;q++){var L=E[q].getCustomData("listarray_index"),I=B[L].parent;I.is(this.type)||(G=F.createElement(this.type),I.copyAttributes(G,{start:1,type:1}),G.removeStyle("list-style-type"),B[L].parent=G)}x=CKEDITOR.plugins.list.arrayToList(B,x,null,h.config.enterMode);B=void 0;E=x.listNode.getChildCount();for(q=0;q<E&&(B=x.listNode.getChild(q));q++)B.getName()==this.type&&l.push(B);x.listNode.replace(n.root);h.fire("contentDomInvalidated")}else{B=b;l=x;q=H;E=l.contents;h=l.root.getDocument(); -n=[];1==E.length&&E[0].equals(l.root)&&(x=h.createElement("div"),E[0].moveChildren&&E[0].moveChildren(x),E[0].append(x),E[0]=x);l=l.contents[0].getParent();for(F=0;F<E.length;F++)l=l.getCommonAncestor(E[F].getParent());I=B.config.useComputedState;B=x=void 0;I=void 0===I||I;for(F=0;F<E.length;F++)for(G=E[F];L=G.getParent();){if(L.equals(l)){n.push(G);!B&&G.getDirection()&&(B=1);G=G.getDirection(I);null!==x&&(x=x&&x!=G?null:G);break}G=L}if(!(1>n.length)){E=n[n.length-1].getNext();F=h.createElement(this.type); -q.push(F);for(I=q=void 0;n.length;)q=n.shift(),I=h.createElement("li"),G=q,G.is("pre")||r.test(G.getName())||"false"==G.getAttribute("contenteditable")?q.appendTo(I):(q.copyAttributes(I),x&&q.getDirection()&&(I.removeStyle("direction"),I.removeAttribute("dir")),q.moveChildren(I),q.remove()),I.appendTo(F);x&&B&&F.setAttribute("dir",x);E?F.insertBefore(E):F.appendTo(l)}}else this.state==CKEDITOR.TRISTATE_ON&&d[x.root.getName()]&&a.call(this,b,x,m);for(F=0;F<H.length;F++)c(H[F]);CKEDITOR.dom.element.clearAllMarkers(m); -f.selectBookmarks(e);b.focus()},refresh:function(a,b){var c=b.contains(d,1),e=b.blockLimit||b.root;c&&e.contains(c)?this.setState(c.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add("list",{requires:"indentlist",init:function(a){a.blockless||(a.addCommand("numberedlist",new f("numberedlist","ol")),a.addCommand("bulletedlist",new f("bulletedlist","ul")),a.ui.addButton&&(a.ui.addButton("NumberedList",{label:a.lang.list.numberedlist, -command:"numberedlist",directional:!0,toolbar:"list,10"}),a.ui.addButton("BulletedList",{label:a.lang.list.bulletedlist,command:"bulletedlist",directional:!0,toolbar:"list,20"})),a.on("key",function(b){var c=b.data.domEvent.getKey(),f;if("wysiwyg"==a.mode&&c in{8:1,46:1}){var h=a.getSelection().getRanges()[0],m=h&&h.startPath();if(h&&h.collapsed){var t=8==c,r=a.editable(),q=new CKEDITOR.dom.walker(h.clone());q.evaluator=function(a){return g(a)&&!n(a)};q.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&& -a.is("table"))};c=h.clone();if(t){var x;(x=m.contains(d))&&h.checkBoundaryOfElement(x,CKEDITOR.START)&&(x=x.getParent())&&x.is("li")&&(x=k(x))?(f=x,x=x.getPrevious(g),c.moveToPosition(x&&n(x)?x:f,CKEDITOR.POSITION_BEFORE_START)):(q.range.setStartAt(r,CKEDITOR.POSITION_AFTER_START),q.range.setEnd(h.startContainer,h.startOffset),(x=q.previous())&&x.type==CKEDITOR.NODE_ELEMENT&&(x.getName()in d||x.is("li"))&&(x.is("li")||(q.range.selectNodeContents(x),q.reset(),q.evaluator=e,x=q.previous()),f=x,c.moveToElementEditEnd(f), -c.moveToPosition(c.endPath().block,CKEDITOR.POSITION_BEFORE_END)));if(f)l(a,c,h),b.cancel();else{var B=m.contains(d);B&&h.checkBoundaryOfElement(B,CKEDITOR.START)&&(f=B.getFirst(g),h.checkBoundaryOfElement(f,CKEDITOR.START)&&(x=B.getPrevious(g),k(f)?x&&(h.moveToElementEditEnd(x),h.select()):a.execCommand("outdent"),b.cancel()))}}else if(f=m.contains("li")){if(q.range.setEndAt(r,CKEDITOR.POSITION_BEFORE_END),t=(r=f.getLast(g))&&e(r)?r:f,m=0,(x=q.next())&&x.type==CKEDITOR.NODE_ELEMENT&&x.getName()in -d&&x.equals(r)?(m=1,x=q.next()):h.checkBoundaryOfElement(t,CKEDITOR.END)&&(m=2),m&&x){h=h.clone();h.moveToElementEditStart(x);if(1==m&&(c.optimize(),!c.startContainer.equals(f))){for(f=c.startContainer;f.is(CKEDITOR.dtd.$inline);)B=f,f=f.getParent();B&&c.moveToPosition(B,CKEDITOR.POSITION_AFTER_END)}2==m&&(c.moveToPosition(c.endPath().block,CKEDITOR.POSITION_BEFORE_END),h.endPath().block&&h.moveToPosition(h.endPath().block,CKEDITOR.POSITION_AFTER_START));l(a,c,h);b.cancel()}}else q.range.setEndAt(r, -CKEDITOR.POSITION_BEFORE_END),(x=q.next())&&x.type==CKEDITOR.NODE_ELEMENT&&x.is(d)&&(x=x.getFirst(g),m.block&&h.checkStartOfBlock()&&h.checkEndOfBlock()?(m.block.remove(),h.moveToElementEditStart(x),h.select()):k(x)?(h.moveToElementEditStart(x),h.select()):(h=h.clone(),h.moveToElementEditStart(x),l(a,c,h)),b.cancel());setTimeout(function(){a.selectionChange(1)})}}}))}})}(),function(){function a(a,b,c){c=a.config.forceEnterMode||c;if("wysiwyg"==a.mode){b||(b=a.activeEnterMode);var e=a.elementPath(); -e&&!e.isContextFor("p")&&(b=CKEDITOR.ENTER_BR,c=1);a.fire("saveSnapshot");b==CKEDITOR.ENTER_BR?k(a,b,null,c):d(a,b,null,c);a.fire("saveSnapshot")}}function f(a){a=a.getSelection().getRanges(!0);for(var b=a.length-1;0<b;b--)a[b].deleteContents();return a[0]}function b(a){var b=a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"true"==a.getAttribute("contenteditable")},!0);if(a.root.equals(b))return a;b=new CKEDITOR.dom.range(b);b.moveToRange(a);return b}CKEDITOR.plugins.add("enterkey", -{init:function(b){b.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){a(b)}});b.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){a(b,b.activeShiftEnterMode,1)}});b.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var c=CKEDITOR.dom.walker.whitespaces(),e=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(a,d,l,r){if(l=l||f(a)){l=b(l);var q=l.document,y=l.checkStartOfBlock(),w=l.checkEndOfBlock(),p=a.elementPath(l.startContainer), -v=p.block,u=d==CKEDITOR.ENTER_DIV?"div":"p",z;if(y&&w){if(v&&(v.is("li")||v.getParent().is("li"))){v.is("li")||(v=v.getParent());l=v.getParent();z=l.getParent();r=!v.hasPrevious();var t=!v.hasNext(),u=a.getSelection(),A=u.createBookmarks(),y=v.getDirection(1),w=v.getAttribute("class"),D=v.getAttribute("style"),x=z.getDirection(1)!=y;a=a.enterMode!=CKEDITOR.ENTER_BR||x||D||w;if(z.is("li"))r||t?(r&&t&&l.remove(),v[t?"insertAfter":"insertBefore"](z)):v.breakParent(z);else{if(a)if(p.block.is("li")?(z= -q.createElement(d==CKEDITOR.ENTER_P?"p":"div"),x&&z.setAttribute("dir",y),D&&z.setAttribute("style",D),w&&z.setAttribute("class",w),v.moveChildren(z)):z=p.block,r||t)z[r?"insertBefore":"insertAfter"](l);else v.breakParent(l),z.insertAfter(l);else if(v.appendBogus(!0),r||t)for(;q=v[r?"getFirst":"getLast"]();)q[r?"insertBefore":"insertAfter"](l);else for(v.breakParent(l);q=v.getLast();)q.insertAfter(l);v.remove()}u.selectBookmarks(A);return}if(v&&v.getParent().is("blockquote")){v.breakParent(v.getParent()); -v.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||v.getPrevious().remove();v.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||v.getNext().remove();l.moveToElementEditStart(v);l.select();return}}else if(v&&v.is("pre")&&!w){k(a,d,l,r);return}if(y=l.splitBlock(u)){d=y.previousBlock;v=y.nextBlock;p=y.wasStartOfBlock;a=y.wasEndOfBlock;v?(A=v.getParent(),A.is("li")&&(v.breakParent(A),v.move(v.getNext(),1))):d&&(A=d.getParent())&&A.is("li")&&(d.breakParent(A),A=d.getNext(),l.moveToElementEditStart(A), -d.move(d.getPrevious()));if(p||a){if(d){if(d.is("li")||!h.test(d.getName())&&!d.is("pre"))z=d.clone()}else v&&(z=v.clone());z?r&&!z.is("li")&&z.renameNode(u):A&&A.is("li")?z=A:(z=q.createElement(u),d&&(t=d.getDirection())&&z.setAttribute("dir",t));if(q=y.elementPath)for(r=0,u=q.elements.length;r<u;r++){A=q.elements[r];if(A.equals(q.block)||A.equals(q.blockLimit))break;CKEDITOR.dtd.$removeEmpty[A.getName()]&&(A=A.clone(),z.moveChildren(A),z.append(A))}z.appendBogus();z.getParent()||l.insertNode(z); -z.is("li")&&z.removeAttribute("value");!CKEDITOR.env.ie||!p||a&&d.getChildCount()||(l.moveToElementEditStart(a?d:z),l.select());l.moveToElementEditStart(p&&!a?v:z)}else v.is("li")&&(z=l.clone(),z.selectNodeContents(v),z=new CKEDITOR.dom.walker(z),z.evaluator=function(a){return!(e(a)||c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))},(A=z.next())&&A.type==CKEDITOR.NODE_ELEMENT&&A.is("ul","ol")&&(CKEDITOR.env.needsBrFiller?q.createElement("br"): -q.createText(" ")).insertBefore(A)),v&&l.moveToElementEditStart(v);l.select();l.scrollIntoView()}}},enterBr:function(a,b,c,e){if(c=c||f(a)){var k=c.document,l=c.checkEndOfBlock(),w=new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),p=w.block,v=p&&w.block.getName();e||"li"!=v?(!e&&l&&h.test(v)?(l=p.getDirection())?(k=k.createElement("div"),k.setAttribute("dir",l),k.insertAfter(p),c.setStart(k,0)):(k.createElement("br").insertAfter(p),CKEDITOR.env.gecko&&k.createText("").insertAfter(p), -c.setStartAt(p.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(a="pre"==v&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?k.createText("\r"):k.createElement("br"),c.deleteContents(),c.insertNode(a),CKEDITOR.env.needsBrFiller?(k.createText("").insertAfter(a),l&&(p||w.blockLimit).appendBogus(),a.getNext().$.nodeValue="",c.setStartAt(a.getNext(),CKEDITOR.POSITION_AFTER_START)):c.setStartAt(a,CKEDITOR.POSITION_AFTER_END)),c.collapse(!0),c.select(),c.scrollIntoView()): -d(a,b,c,e)}}};var l=CKEDITOR.plugins.enterkey,k=l.enterBr,d=l.enterBlock,h=/^h[1-6]$/}(),function(){function a(a,b){var c={},e=[],l={nbsp:" ",shy:"­",gt:"\x3e",lt:"\x3c",amp:"\x26",apos:"'",quot:'"'};a=a.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(a,d){var f=b?"\x26"+d+";":l[d];c[f]=b?l[d]:"\x26"+d+";";e.push(f);return""});if(!b&&a){a=a.split(",");var k=document.createElement("div"),d;k.innerHTML="\x26"+a.join(";\x26")+";";d=k.innerHTML;k=null;for(k=0;k<d.length;k++){var h=d.charAt(k); -c[h]="\x26"+a[k]+";";e.push(h)}}c.regex=e.join(b?"|":"");return c}CKEDITOR.plugins.add("entities",{afterInit:function(f){function b(a){return h[a]}function c(a){return"force"!=e.entities_processNumerical&&k[a]?k[a]:"\x26#"+a.charCodeAt(0)+";"}var e=f.config;if(f=(f=f.dataProcessor)&&f.htmlFilter){var l=[];!1!==e.basicEntities&&l.push("nbsp,gt,lt,amp");e.entities&&(l.length&&l.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"), -e.entities_latin&&l.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"),e.entities_greek&&l.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"), -e.entities_additional&&l.push(e.entities_additional));var k=a(l.join(",")),d=k.regex?"["+k.regex+"]":"a^";delete k.regex;e.entities&&e.entities_processNumerical&&(d="[^ -~]|"+d);var d=new RegExp(d,"g"),h=a("nbsp,gt,lt,amp,shy",!0),m=new RegExp(h.regex,"g");f.addRules({text:function(a){return a.replace(m,b).replace(d,c)}},{applyToAll:!0,excludeNestedEditable:!0})}}})}(),CKEDITOR.config.basicEntities=!0,CKEDITOR.config.entities=!0,CKEDITOR.config.entities_latin=!0,CKEDITOR.config.entities_greek=!0, -CKEDITOR.config.entities_additional="#39",CKEDITOR.plugins.add("popup"),CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(a,f,b,c){f=f||"80%";b=b||"70%";"string"==typeof f&&1<f.length&&"%"==f.substr(f.length-1,1)&&(f=parseInt(window.screen.width*parseInt(f,10)/100,10));"string"==typeof b&&1<b.length&&"%"==b.substr(b.length-1,1)&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>f&&(f=640);420>b&&(b=420);var e=parseInt((window.screen.height-b)/2,10),l=parseInt((window.screen.width- -f)/2,10);c=(c||"location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes")+",width\x3d"+f+",height\x3d"+b+",top\x3d"+e+",left\x3d"+l;var k=window.open("",null,c,!0);if(!k)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(k.moveTo(l,e),k.resizeTo(f,b)),k.focus(),k.location.href=a}catch(d){window.open(a,null,c,!0)}return!0}}),function(){function a(a,b){var c=[];if(b)for(var d in b)c.push(d+ -"\x3d"+encodeURIComponent(b[d]));else return a;return a+(-1!=a.indexOf("?")?"\x26":"?")+c.join("\x26")}function f(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}function b(){var b=this.getDialog(),c=b.getParentEditor();c._.filebrowserSe=this;var d=c.config["filebrowser"+f(b.getName())+"WindowWidth"]||c.config.filebrowserWindowWidth||"80%",b=c.config["filebrowser"+f(b.getName())+"WindowHeight"]||c.config.filebrowserWindowHeight||"70%",e=this.filebrowser.params||{};e.CKEditor=c.name;e.CKEditorFuncNum= -c._.filebrowserFn;e.langCode||(e.langCode=c.langCode);e=a(this.filebrowser.url,e);c.popup(e,d,b,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function c(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return a.getContentElement(this["for"][0],this["for"][1]).getInputElement().$.value&&a.getContentElement(this["for"][0],this["for"][1]).getAction()?!0:!1}function e(b,c,d){var e=d.params||{};e.CKEditor=b.name;e.CKEditorFuncNum=b._.filebrowserFn;e.langCode|| -(e.langCode=b.langCode);c.action=a(d.url,e);c.filebrowser=d}function l(a,d,g,k){if(k&&k.length)for(var r,q=k.length;q--;)if(r=k[q],"hbox"!=r.type&&"vbox"!=r.type&&"fieldset"!=r.type||l(a,d,g,r.children),r.filebrowser)if("string"==typeof r.filebrowser&&(r.filebrowser={action:"fileButton"==r.type?"QuickUpload":"Browse",target:r.filebrowser}),"Browse"==r.filebrowser.action){var y=r.filebrowser.url;void 0===y&&(y=a.config["filebrowser"+f(d)+"BrowseUrl"],void 0===y&&(y=a.config.filebrowserBrowseUrl)); -y&&(r.onClick=b,r.filebrowser.url=y,r.hidden=!1)}else if("QuickUpload"==r.filebrowser.action&&r["for"]&&(y=r.filebrowser.url,void 0===y&&(y=a.config["filebrowser"+f(d)+"UploadUrl"],void 0===y&&(y=a.config.filebrowserUploadUrl)),y)){var w=r.onClick;r.onClick=function(a){var b=a.sender;if(w&&!1===w.call(b,a))return!1;if(c.call(b,a)){a=b.getDialog().getContentElement(this["for"][0],this["for"][1]).getInputElement();if(b=new CKEDITOR.dom.element(a.$.form))(a=b.$.elements.ckCsrfToken)?a=new CKEDITOR.dom.element(a): -(a=new CKEDITOR.dom.element("input"),a.setAttributes({name:"ckCsrfToken",type:"hidden"}),b.append(a)),a.setAttribute("value",CKEDITOR.tools.getCsrfToken());return!0}return!1};r.filebrowser.url=y;r.hidden=!1;e(a,g.getContents(r["for"][0]).get(r["for"][1]),r.filebrowser)}}function k(a,b,c){if(-1!==c.indexOf(";")){c=c.split(";");for(var d=0;d<c.length;d++)if(k(a,b,c[d]))return!0;return!1}return(a=a.getContents(b).get(c).filebrowser)&&a.url}function d(a,b){var c=this._.filebrowserSe.getDialog(),d=this._.filebrowserSe["for"], -e=this._.filebrowserSe.filebrowser.onSelect;d&&c.getContentElement(d[0],d[1]).reset();if("function"!=typeof b||!1!==b.call(this._.filebrowserSe))if(!e||!1!==e.call(this._.filebrowserSe,a,b))if("string"==typeof b&&b&&alert(b),a&&(d=this._.filebrowserSe,c=d.getDialog(),d=d.filebrowser.target||null))if(d=d.split(":"),e=c.getContentElement(d[0],d[1]))e.setValue(a),c.selectPage(d[0])}CKEDITOR.plugins.add("filebrowser",{requires:"popup",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(d,a); -a.on("destroy",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on("dialogDefinition",function(a){if(a.editor.plugins.filebrowser)for(var b=a.data.definition,c,d=0;d<b.contents.length;++d)if(c=b.contents[d])l(a.editor,a.data.name,b,c.elements),c.hidden&&c.filebrowser&&(c.hidden=!k(b,c.id,c.filebrowser))})}(),function(){function a(a){var e=a.config,l=a.fire("uiSpace",{space:"top",html:""}).html,k=function(){function d(a,c,e){h.setStyle(c,b(e));h.setStyle("position",a)}function g(a){var b= -m.getDocumentPosition();switch(a){case "top":d("absolute","top",b.y-u-A);break;case "pin":d("fixed","top",x);break;case "bottom":d("absolute","top",b.y+(p.height||p.bottom-p.top)+A)}l=a}var l,m,w,p,v,u,z,t=e.floatSpaceDockedOffsetX||0,A=e.floatSpaceDockedOffsetY||0,D=e.floatSpacePinnedOffsetX||0,x=e.floatSpacePinnedOffsetY||0;return function(d){if(m=a.editable()){var n=d&&"focus"==d.name;n&&h.show();a.fire("floatingSpaceLayout",{show:n});h.removeStyle("left");h.removeStyle("right");w=h.getClientRect(); -p=m.getClientRect();v=f.getViewPaneSize();u=w.height;z="pageXOffset"in f.$?f.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft;l?(u+A<=p.top?g("top"):u+A>v.height-p.bottom?g("pin"):g("bottom"),d=v.width/2,d=e.floatSpacePreferRight?"right":0<p.left&&p.right<v.width&&p.width>w.width?"rtl"==e.contentsLangDirection?"right":"left":d-p.left>p.right-d?"left":"right",w.width>v.width?(d="left",n=0):(n="left"==d?0<p.left?p.left:0:p.right<v.width?v.width-p.right:0,n+w.width>v.width&&(d="left"==d? -"right":"left",n=0)),h.setStyle(d,b(("pin"==l?D:t)+n+("pin"==l?0:"left"==d?z:-z)))):(l="pin",g("pin"),k(d))}}}();if(l){var d=new CKEDITOR.template('\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"'+(a.title?' aria-labelledby\x3d"cke_{name}_arialbl"':" ")+"\x3e"+(a.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e': -" ")+'\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e'),h=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(d.output({content:l,id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:"display:none;z-index:"+(e.baseFloatZIndex-1),topId:a.ui.spaceId("top"),voiceLabel:a.title}))),m=CKEDITOR.tools.eventsBuffer(500,k),g=CKEDITOR.tools.eventsBuffer(100,k);h.unselectable();h.on("mousedown", -function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});a.on("focus",function(b){k(b);a.on("change",m.input);f.on("scroll",g.input);f.on("resize",g.input)});a.on("blur",function(){h.hide();a.removeListener("change",m.input);f.removeListener("scroll",g.input);f.removeListener("resize",g.input)});a.on("destroy",function(){f.removeListener("scroll",g.input);f.removeListener("resize",g.input);h.clearCustomData();h.remove()});a.focusManager.hasFocus&&h.show();a.focusManager.add(h, -1)}}var f=CKEDITOR.document.getWindow(),b=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add("floatingspace",{init:function(b){b.on("loaded",function(){a(this)},null,null,20)}})}(),CKEDITOR.plugins.add("listblock",{requires:"panel",onLoad:function(){var a=CKEDITOR.addTemplate("panel-list",'\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'),f=CKEDITOR.addTemplate("panel-list-item",'\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" href\x3d"javascript:void(\'{val}\')" {onclick}\x3d"CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'), -b=CKEDITOR.addTemplate("panel-list-group",'\x3ch1 id\x3d"{id}" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'),c=/\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){b=b||{};var c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c["aria-multiselectable"]=!0);!c.role&& -(c.role="listbox");this.base.apply(this,arguments);this.element.setAttribute("role",c.role);c=this.keys;c[40]="next";c[9]="next";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(c[13]="mouseup");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var b=a.output({items:this._.pendingList.join("")});this._.pendingList=[];this._.pendingHtml.push(b);delete this._.started}},getClick:function(){this._.click|| -(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,k){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var h;h=CKEDITOR.tools.htmlEncodeAttr(a).replace(c,"\\'");a={id:d,val:h,onclick:CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(k||a),text:b||a}; -this._.pendingList.push(f.output(a))},startGroup:function(a){this._.close();var c=CKEDITOR.tools.getNextId();this._.groups[a]=c;this._.pendingHtml.push(b.output({id:c,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display", -"none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display","none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var f in b)a=c.getById(b[f]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();a=this._.items[a];var b=this.element.getDocument().getById(a); -b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},markFirstDisplayed:function(){var a=this;this._.markFirstDisplayed(function(){a.multiSelect||a.unmarkAll()})},unmark:function(a){var b=this.element.getDocument();a=this._.items[a];var c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(), -c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")},focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus(); -c&&setTimeout(function(){c.focus()},0)}}})}}),CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}}),function(){var a='\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc? -"":" href\x3d\"javascript:void('{titleJs}')\"")+' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"true"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(a+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(a+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var a=a+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup': -"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":CKEDITOR.env.air?"\x26nbsp;":"")+"\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),f=CKEDITOR.addTemplate("combo",a);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this, -a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel";a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var c=[];this.render(a,c);return c.join("")},render:function(a,c){function e(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c= -this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue("");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var l=CKEDITOR.env,k="cke_"+this.id,d=CKEDITOR.tools.addFunction(function(c){r&&(a.unlockSelection(1),r=0);m.execute(c)},this),h=this,m={id:k,combo:this,focus:function(){CKEDITOR.document.getById(k).getChild(1).focus()},execute:function(c){var d=h._;if(d.state!=CKEDITOR.TRISTATE_DISABLED)if(h.createPanel(a), -d.on)d.panel.hide();else{h.commit();var e=h.getValue();e?d.list.mark(e):d.list.unmarkAll();d.panel.showBlock(h.id,new CKEDITOR.dom.element(c),4)}},clickFn:d};a.on("activeFilterChange",e,this);a.on("mode",e,this);a.on("selectionChange",e,this);!this.readOnly&&a.on("readOnly",e,this);var g=CKEDITOR.tools.addFunction(function(a,b){a=new CKEDITOR.dom.event(a);var c=a.getKeystroke();switch(c){case 13:case 32:case 40:CKEDITOR.tools.callFunction(d,b);break;default:m.onkey(m,c)}a.preventDefault()}),n=CKEDITOR.tools.addFunction(function(){m.onfocus&& -m.onfocus()}),r=0;m.keyDownFn=g;l={id:k,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||"",titleJs:l.gecko&&!l.hc?"":(this.title||"").replace("'",""),keydownFn:g,focusFn:n,clickFn:d};f.output(l,c);if(this.onRender)this.onRender();return m},createPanel:function(a){if(!this._.panel){var c=this._.panelDefinition,e=this._.panelDefinition.block,f=c.parent||CKEDITOR.document.getBody(),k="cke_combopanel__"+this.name,d=new CKEDITOR.ui.floatPanel(a,f,c),c=d.addListBlock(this.id, -e),h=this;d.onShow=function(){this.element.addClass(k);h.setState(CKEDITOR.TRISTATE_ON);h._.on=1;h.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(h.onOpen)h.onOpen()};d.onHide=function(c){this.element.removeClass(k);h.setState(h.modes&&h.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);h._.on=0;if(!c&&h.onClose)h.onClose()};d.onEscape=function(){d.hide(1)};c.onClick=function(a,b){h.onClick&&h.onClick.call(h,a,b);d.hide()};this._.panel=d;this._.list=c;d.getBlock(this.id).onHide= -function(){h._.on=0;h.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,c){this._.value=a;var e=this.document.getById("cke_"+this.id+"_text");e&&(a||c?e.removeClass("cke_combo_inlinelabel"):(c=this.label,e.addClass("cke_combo_inlinelabel")),e.setText("undefined"!=typeof c?c:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)}, -showAll:function(){this._.list.showAll()},add:function(a,c,e){this._.items[a]=e||a;this._.list.add(a,c,e)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var c=this.document.getById("cke_"+this.id);c.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?c.setAttribute("aria-disabled",!0):c.removeAttribute("aria-disabled");this._.state= -a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,c){this.add(a,CKEDITOR.UI_RICHCOMBO,c)}}(),CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(a){if(!a.blockless){for(var f= -a.config,b=a.lang.format,c=f.format_tags.split(";"),e={},l=0,k=[],d=0;d<c.length;d++){var h=c[d],m=new CKEDITOR.style(f["format_"+h]);if(!a.filter.customConfig||a.filter.check(m))l++,e[h]=m,e[h]._.enterMode=a.config.enterMode,k.push(m)}0!==l&&a.ui.addRichCombo("Format",{label:b.label,title:b.panelTitle,toolbar:"styles,20",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss),multiSelect:!1,attributes:{"aria-label":b.panelTitle}},init:function(){this.startGroup(b.panelTitle); -for(var a in e){var c=b["tag_"+a];this.add(a,e[a].buildPreview(c),c)}},onClick:function(b){a.focus();a.fire("saveSnapshot");b=e[b];var c=a.elementPath();a[b.checkActive(c,a)?"removeStyle":"applyStyle"](b);setTimeout(function(){a.fire("saveSnapshot")},0)},onRender:function(){a.on("selectionChange",function(b){var c=this.getValue();b=b.data.path;this.refresh();for(var d in e)if(e[d].checkActive(b,a)){d!=c&&this.setValue(d,a.lang.format["tag_"+d]);return}this.setValue("")},this)},onOpen:function(){this.showAll(); -for(var b in e)a.activeFilter.check(e[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor("p"))for(var c in e)if(a.activeFilter.check(e[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}}),CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div",CKEDITOR.config.format_p={element:"p"},CKEDITOR.config.format_div={element:"div"},CKEDITOR.config.format_pre={element:"pre"},CKEDITOR.config.format_address={element:"address"},CKEDITOR.config.format_h1= -{element:"h1"},CKEDITOR.config.format_h2={element:"h2"},CKEDITOR.config.format_h3={element:"h3"},CKEDITOR.config.format_h4={element:"h4"},CKEDITOR.config.format_h5={element:"h5"},CKEDITOR.config.format_h6={element:"h6"},function(){var a={canUndo:!1,exec:function(a){var b=a.document.createElement("hr");a.insertElement(b)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(f){f.blockless||(f.addCommand("horizontalrule",a),f.ui.addButton&&f.ui.addButton("HorizontalRule", -{label:f.lang.horizontalrule.toolbar,command:"horizontalrule",toolbar:"insert,40"}))}})}(),CKEDITOR.plugins.add("htmlwriter",{init:function(a){var f=new CKEDITOR.htmlWriter;f.forceSimpleAmpersand=a.config.forceSimpleAmpersand;f.indentationChars=a.config.dataIndentationChars||"\t";a.dataProcessor.writer=f}}),CKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars="\t";this.selfClosingEnd=" /\x3e";this.lineBreakChars="\n";this.sortAttributes= -1;this._.indent=0;this._.indentation="";this._.inPre=0;this._.rules={};var a=CKEDITOR.dtd,f;for(f in CKEDITOR.tools.extend({},a.$nonBodyContent,a.$block,a.$listItem,a.$tableContent))this.setRules(f,{indent:!a[f]["#"],breakBeforeOpen:1,breakBeforeClose:!a[f]["#"],breakAfterClose:1,needsSpace:f in a.$block&&!(f in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.setRules("title",{indent:0,breakAfterOpen:0});this.setRules("style",{indent:0,breakBeforeClose:1});this.setRules("pre",{breakAfterOpen:1, -indent:0})},proto:{openTag:function(a){var f=this._.rules[a];this._.afterCloser&&f&&f.needsSpace&&this._.needsSpace&&this._.output.push("\n");this._.indent?this.indentation():f&&f.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push("\x3c",a);this._.afterCloser=0},openTagClose:function(a,f){var b=this._.rules[a];f?(this._.output.push(this.selfClosingEnd),b&&b.breakAfterClose&&(this._.needsSpace=b.needsSpace)):(this._.output.push("\x3e"),b&&b.indent&&(this._.indentation+=this.indentationChars)); -b&&b.breakAfterOpen&&this.lineBreak();"pre"==a&&(this._.inPre=1)},attribute:function(a,f){"string"==typeof f&&(this.forceSimpleAmpersand&&(f=f.replace(/&/g,"\x26")),f=CKEDITOR.tools.htmlEncodeAttr(f));this._.output.push(" ",a,'\x3d"',f,'"')},closeTag:function(a){var f=this._.rules[a];f&&f.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():f&&f.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("\x3c/",a, -"\x3e");"pre"==a&&(this._.inPre=0);f&&f.breakAfterClose&&(this.lineBreak(),this._.needsSpace=f.needsSpace);this._.afterCloser=1},text:function(a){this._.indent&&(this.indentation(),!this._.inPre&&(a=CKEDITOR.tools.ltrim(a)));this._.output.push(a)},comment:function(a){this._.indent&&this.indentation();this._.output.push("\x3c!--",a,"--\x3e")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&& -this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0;this._.needsSpace=0},setRules:function(a,f){var b=this._.rules[a];b?CKEDITOR.tools.extend(b,f,!0):this._.rules[a]=f}}}),function(){function a(a,c){c||(c=a.getSelection().getSelectedElement());if(c&&c.is("img")&&!c.data("cke-realelement")&&!c.isReadOnly())return c}function f(a){var c=a.getStyle("float");if("inherit"==c||"none"==c)c=0;c|| -(c=a.getAttribute("align"));return c}CKEDITOR.plugins.add("image",{requires:"dialog",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add("image",this.path+"dialogs/image.js");var c="img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}";CKEDITOR.dialog.isTabEnabled(b,"image","advanced")&&(c="img[alt,dir,id,lang,longdesc,!src,title]{*}(*)");b.addCommand("image",new CKEDITOR.dialogCommand("image",{allowedContent:c,requiredContent:"img[alt,src]", -contentTransformations:[["img{width}: sizeToStyle","img[width]: sizeToAttribute"],["img{float}: alignmentToStyle","img[align]: alignmentToAttribute"]]}));b.ui.addButton&&b.ui.addButton("Image",{label:b.lang.common.image,command:"image",toolbar:"insert,10"});b.on("doubleclick",function(a){var b=a.data.element;!b.is("img")||b.data("cke-realelement")||b.isReadOnly()||(a.data.dialog="image")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:"image",group:"image"}});b.contextMenu&& -b.contextMenu.addListener(function(c){if(a(b,c))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function c(c){var l=b.getCommand("justify"+c);if(l){if("left"==c||"right"==c)l.on("exec",function(k){var d=a(b),h;d&&(h=f(d),h==c?(d.removeStyle("float"),c==f(d)&&d.removeAttribute("align")):d.setStyle("float",c),k.cancel())});l.on("refresh",function(k){var d=a(b);d&&(d=f(d),this.setState(d==c?CKEDITOR.TRISTATE_ON:"right"==c||"left"==c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),k.cancel())})}} -b.plugins.image2||(c("left"),c("right"),c("center"),c("block"))}})}(),CKEDITOR.config.image_removeLinkByEmptyURL=!0,function(){function a(a,b){var d=c.exec(a),e=c.exec(b);if(d){if(!d[2]&&"px"==e[2])return e[1];if("px"==d[2]&&!e[2])return e[1]+"px"}return b}var f=CKEDITOR.htmlParser.cssStyle,b=CKEDITOR.tools.cssLength,c=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i,e={elements:{$:function(b){var c=b.attributes;if((c=(c=(c=c&&c["data-cke-realelement"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(c)))&& -c.children[0])&&b.attributes["data-cke-resizable"]){var d=(new f(b)).rules;b=c.attributes;var e=d.width,d=d.height;e&&(b.width=a(b.width,e));d&&(b.height=a(b.height,d))}return c}}};CKEDITOR.plugins.add("fakeobjects",{init:function(a){a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}","fakeobjects")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(e,{applyToAll:!0})}});CKEDITOR.editor.prototype.createFakeElement=function(a,c,d,e){var m=this.lang.fakeobjects,m=m[d]|| -m.unknown;c={"class":c,"data-cke-realelement":encodeURIComponent(a.getOuterHtml()),"data-cke-real-node-type":a.type,alt:m,title:m,align:a.getAttribute("align")||""};CKEDITOR.env.hc||(c.src=CKEDITOR.tools.transparentImageData);d&&(c["data-cke-real-element-type"]=d);e&&(c["data-cke-resizable"]=e,d=new f,e=a.getAttribute("width"),a=a.getAttribute("height"),e&&(d.rules.width=b(e)),a&&(d.rules.height=b(a)),d.populate(c));return this.document.createElement("img",{attributes:c})};CKEDITOR.editor.prototype.createFakeParserElement= -function(a,c,d,e){var m=this.lang.fakeobjects,m=m[d]||m.unknown,g;g=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(g);g=g.getHtml();c={"class":c,"data-cke-realelement":encodeURIComponent(g),"data-cke-real-node-type":a.type,alt:m,title:m,align:a.attributes.align||""};CKEDITOR.env.hc||(c.src=CKEDITOR.tools.transparentImageData);d&&(c["data-cke-real-element-type"]=d);e&&(c["data-cke-resizable"]=e,e=a.attributes,a=new f,d=e.width,e=e.height,void 0!==d&&(a.rules.width=b(d)),void 0!==e&&(a.rules.height= -b(e)),a.populate(c));return new CKEDITOR.htmlParser.element("img",c)};CKEDITOR.editor.prototype.restoreRealElement=function(b){if(b.data("cke-real-node-type")!=CKEDITOR.NODE_ELEMENT)return null;var c=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(b.data("cke-realelement")),this.document);if(b.data("cke-resizable")){var d=b.getStyle("width");b=b.getStyle("height");d&&c.setAttribute("width",a(c.getAttribute("width"),d));b&&c.setAttribute("height",a(c.getAttribute("height"),b))}return c}}(), -"use strict",function(){function a(a){return a.replace(/'/g,"\\$\x26")}function f(a){for(var b,c=a.length,d=[],e=0;e<c;e++)b=a.charCodeAt(e),d.push(b);return"String.fromCharCode("+d.join(",")+")"}function b(b,c){var d=b.plugins.link,e=d.compiledProtectionFunction.params,f,g;g=[d.compiledProtectionFunction.name,"("];for(var h=0;h<e.length;h++)d=e[h].toLowerCase(),f=c[d],0<h&&g.push(","),g.push("'",f?a(encodeURIComponent(c[d])):"","'");g.push(")");return g.join("")}function c(a){a=a.config.emailProtection|| -"";var b;a&&"encode"!=a&&(b={},a.replace(/^([^(]+)\(([^)]+)\)$/,function(a,c,d){b.name=c;b.params=[];d.replace(/[^,\s]+/g,function(a){b.params.push(a)})}));return b}CKEDITOR.plugins.add("link",{requires:"dialog,fakeobjects",onLoad:function(){function a(b){return c.replace(/%1/g,"rtl"==b?"right":"left").replace(/%2/g,"cke_contents_"+b)}var b="background:url("+CKEDITOR.getUrl(this.path+"images"+(CKEDITOR.env.hidpi?"/hidpi":"")+"/anchor.png")+") no-repeat %1 center;border:1px dotted #00f;background-size:16px;", -c=".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{"+b+"padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{"+b+"width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(a("ltr")+a("rtl"))},init:function(a){var b="a[!href]";CKEDITOR.dialog.isTabEnabled(a,"link","advanced")&&(b=b.replace("]",",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type,download]{*}(*)"));CKEDITOR.dialog.isTabEnabled(a,"link","target")&& -(b=b.replace("]",",target,onclick]"));a.addCommand("link",new CKEDITOR.dialogCommand("link",{allowedContent:b,requiredContent:"a[href]"}));a.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));a.addCommand("unlink",new CKEDITOR.unlinkCommand);a.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand);a.setKeystroke(CKEDITOR.CTRL+76,"link");a.ui.addButton&&(a.ui.addButton("Link",{label:a.lang.link.toolbar,command:"link",toolbar:"links,10"}), -a.ui.addButton("Unlink",{label:a.lang.link.unlink,command:"unlink",toolbar:"links,20"}),a.ui.addButton("Anchor",{label:a.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"}));CKEDITOR.dialog.add("link",this.path+"dialogs/link.js");CKEDITOR.dialog.add("anchor",this.path+"dialogs/anchor.js");a.on("doubleclick",function(b){var c=b.data.element.getAscendant({a:1,img:1},!0);c&&!c.isReadOnly()&&(c.is("a")?(b.data.dialog=!c.getAttribute("name")||c.getAttribute("href")&&c.getChildCount()?"link": -"anchor",b.data.link=c):CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,c)&&(b.data.dialog="anchor"))},null,null,0);a.on("doubleclick",function(b){b.data.dialog in{link:1,anchor:1}&&b.data.link&&a.getSelection().selectElement(b.data.link)},null,null,20);a.addMenuItems&&a.addMenuItems({anchor:{label:a.lang.link.anchor.menu,command:"anchor",group:"anchor",order:1},removeAnchor:{label:a.lang.link.anchor.remove,command:"removeAnchor",group:"anchor",order:5},link:{label:a.lang.link.menu,command:"link",group:"link", -order:1},unlink:{label:a.lang.link.unlink,command:"unlink",group:"link",order:5}});a.contextMenu&&a.contextMenu.addListener(function(b){if(!b||b.isReadOnly())return null;b=CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,b);if(!b&&!(b=CKEDITOR.plugins.link.getSelectedLink(a)))return null;var c={};b.getAttribute("href")&&b.getChildCount()&&(c={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});b&&b.hasAttribute("name")&&(c.anchor=c.removeAnchor=CKEDITOR.TRISTATE_OFF);return c});this.compiledProtectionFunction= -c(a)},afterInit:function(a){a.dataProcessor.dataFilter.addRules({elements:{a:function(b){return b.attributes.name?b.children.length?null:a.createFakeParserElement(b,"cke_anchor","anchor"):null}}});var b=a._.elementsPath&&a._.elementsPath.filters;b&&b.push(function(b,c){if("a"==c&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,b)||b.getAttribute("name")&&(!b.getAttribute("href")||!b.getChildCount())))return"anchor"})}});var e=/^javascript:/,l=/^mailto:([^?]+)(?:\?(.+))?$/,k=/subject=([^;?:@&=$,\/]*)/i, -d=/body=([^;?:@&=$,\/]*)/i,h=/^#(.*)$/,m=/^((?:http|https|ftp|news):\/\/)?(.*)$/,g=/^(_(?:self|top|parent|blank))$/,n=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,r=/^javascript:([^(]+)\(([^)]+)\)$/,q=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,y=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,w={id:"advId",dir:"advLangDir",accessKey:"advAccessKey",name:"advName",lang:"advLangCode",tabindex:"advTabIndex", -title:"advTitle",type:"advContentType","class":"advCSSClasses",charset:"advCharset",style:"advStyles",rel:"advRel"};CKEDITOR.plugins.link={getSelectedLink:function(a,b){var c=a.getSelection(),d=c.getSelectedElement(),e=c.getRanges(),f=[],g;if(!b&&d&&d.is("a"))return d;for(d=0;d<e.length;d++)if(g=c.getRanges()[d],g.shrink(CKEDITOR.SHRINK_TEXT,!1,{skipBogus:!0}),(g=a.elementPath(g.getCommonAncestor()).contains("a",1))&&b)f.push(g);else if(g)return g;return b?f:null},getEditorAnchors:function(a){for(var b= -a.editable(),c=b.isInline()&&!a.plugins.divarea?a.document:b,b=c.getElementsByTag("a"),c=c.getElementsByTag("img"),d=[],e=0,f;f=b.getItem(e++);)(f.data("cke-saved-name")||f.hasAttribute("name"))&&d.push({name:f.data("cke-saved-name")||f.getAttribute("name"),id:f.getAttribute("id")});for(e=0;f=c.getItem(e++);)(f=this.tryRestoreFakeAnchor(a,f))&&d.push({name:f.getAttribute("name"),id:f.getAttribute("id")});return d},fakeAnchor:!0,tryRestoreFakeAnchor:function(a,b){if(b&&b.data("cke-real-element-type")&& -"anchor"==b.data("cke-real-element-type")){var c=a.restoreRealElement(b);if(c.data("cke-saved-name"))return c}},parseLinkAttributes:function(a,b){var c=b&&(b.data("cke-saved-href")||b.getAttribute("href"))||"",f=a.plugins.link.compiledProtectionFunction,t=a.config.emailProtection,A,D={};c.match(e)&&("encode"==t?c=c.replace(n,function(a,b,c){c=c||"";return"mailto:"+String.fromCharCode.apply(String,b.split(","))+c.replace(/\\'/g,"'")}):t&&c.replace(r,function(a,b,c){if(b==f.name){D.type="email";a=D.email= -{};b=/(^')|('$)/g;c=c.match(/[^,\s]+/g);for(var d=c.length,e,g,h=0;h<d;h++)e=decodeURIComponent,g=c[h].replace(b,"").replace(/\\'/g,"'"),g=e(g),e=f.params[h].toLowerCase(),a[e]=g;a.address=[a.name,a.domain].join("@")}}));if(!D.type)if(t=c.match(h))D.type="anchor",D.anchor={},D.anchor.name=D.anchor.id=t[1];else if(t=c.match(l)){A=c.match(k);c=c.match(d);D.type="email";var x=D.email={};x.address=t[1];A&&(x.subject=decodeURIComponent(A[1]));c&&(x.body=decodeURIComponent(c[1]))}else c&&(A=c.match(m))&& -(D.type="url",D.url={},D.url.protocol=A[1],D.url.url=A[2]);if(b){if(c=b.getAttribute("target"))D.target={type:c.match(g)?c:"frame",name:c};else if(c=(c=b.data("cke-pa-onclick")||b.getAttribute("onclick"))&&c.match(q))for(D.target={type:"popup",name:c[1]};t=y.exec(c[2]);)"yes"!=t[2]&&"1"!=t[2]||t[1]in{height:1,width:1,top:1,left:1}?isFinite(t[2])&&(D.target[t[1]]=t[2]):D.target[t[1]]=!0;null!==b.getAttribute("download")&&(D.download=!0);var c={},B;for(B in w)(t=b.getAttribute(B))&&(c[w[B]]=t);if(B= -b.data("cke-saved-name")||c.advName)c.advName=B;CKEDITOR.tools.isEmpty(c)||(D.advanced=c)}return D},getLinkAttributes:function(c,d){var e=c.config.emailProtection||"",g={};switch(d.type){case "url":var e=d.url&&void 0!==d.url.protocol?d.url.protocol:"http://",h=d.url&&CKEDITOR.tools.trim(d.url.url)||"";g["data-cke-saved-href"]=0===h.indexOf("/")?h:e+h;break;case "anchor":e=d.anchor&&d.anchor.id;g["data-cke-saved-href"]="#"+(d.anchor&&d.anchor.name||e||"");break;case "email":var k=d.email,h=k.address; -switch(e){case "":case "encode":var l=encodeURIComponent(k.subject||""),m=encodeURIComponent(k.body||""),k=[];l&&k.push("subject\x3d"+l);m&&k.push("body\x3d"+m);k=k.length?"?"+k.join("\x26"):"";"encode"==e?(e=["javascript:void(location.href\x3d'mailto:'+",f(h)],k&&e.push("+'",a(k),"'"),e.push(")")):e=["mailto:",h,k];break;default:e=h.split("@",2),k.name=e[0],k.domain=e[1],e=["javascript:",b(c,k)]}g["data-cke-saved-href"]=e.join("")}if(d.target)if("popup"==d.target.type){for(var e=["window.open(this.href, '", -d.target.name||"","', '"],n="resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "),h=n.length,l=function(a){d.target[a]&&n.push(a+"\x3d"+d.target[a])},k=0;k<h;k++)n[k]+=d.target[n[k]]?"\x3dyes":"\x3dno";l("width");l("left");l("height");l("top");e.push(n.join(","),"'); return false;");g["data-cke-pa-onclick"]=e.join("")}else"notSet"!=d.target.type&&d.target.name&&(g.target=d.target.name);d.download&&(g.download="");if(d.advanced){for(var r in w)(e=d.advanced[w[r]])&& -(g[r]=e);g.name&&(g["data-cke-saved-name"]=g.name)}g["data-cke-saved-href"]&&(g.href=g["data-cke-saved-href"]);r={target:1,onclick:1,"data-cke-pa-onclick":1,"data-cke-saved-name":1,download:1};d.advanced&&CKEDITOR.tools.extend(r,w);for(var q in g)delete r[q];return{set:g,removed:CKEDITOR.tools.objectKeys(r)}},showDisplayTextForElement:function(a,b){var c={img:1,table:1,tbody:1,thead:1,tfoot:1,input:1,select:1,textarea:1},d=b.getSelection();return b.widgets&&b.widgets.focused||d&&1<d.getRanges().length? -!1:!a||!a.getName||!a.is(c)}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(a){if(CKEDITOR.env.ie){var b=a.getSelection().getRanges()[0],c=b.getPreviousEditableNode()&&b.getPreviousEditableNode().getAscendant("a",!0)||b.getNextEditableNode()&&b.getNextEditableNode().getAscendant("a",!0),d;b.collapsed&&c&&(d=b.createBookmark(),b.selectNodeContents(c),b.select())}c=new CKEDITOR.style({element:"a",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});a.removeStyle(c); -d&&(b.moveToBookmark(d),b.select())},refresh:function(a,b){var c=b.lastElement&&b.lastElement.getAscendant("a",!0);c&&"a"==c.getName()&&c.getAttribute("href")&&c.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:"a[href]",editorFocus:1};CKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(a){var b=a.getSelection(),c=b.createBookmarks(),d;if(b&&(d=b.getSelectedElement())&& -(d.getChildCount()?d.is("a"):CKEDITOR.plugins.link.tryRestoreFakeAnchor(a,d)))d.remove(1);else if(d=CKEDITOR.plugins.link.getSelectedLink(a))d.hasAttribute("href")?(d.removeAttributes({name:1,"data-cke-saved-name":1}),d.removeClass("cke_anchor")):d.remove(1);b.selectBookmarks(c)},requiredContent:"a[name]"};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0})}(),"use strict",function(){function a(a,b,c){return n(b)&&n(c)&&c.equals(b.getNext(function(a){return!(Y(a)|| -Z(a)||r(a))}))}function f(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function b(a){var b=a.element;if(b&&n(b)&&(b=b.getAscendant(a.triggers,!0))&&a.editable.contains(b)){var c=k(b);if("true"==c.getAttribute("contenteditable"))return b;if(c.is(a.triggers))return c}return null}function c(a,b,c){t(a,b);t(a,c);a=b.size.bottom;c=c.size.top;return a&&c?0|(a+c)/2:a||c}function e(a,b,c){return b=b[c?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!Y(b)|| -n(b)&&!r(b)&&!g(a,b)})}function l(a,b,c){return a>b&&a<c}function k(a,b){if(a.data("cke-editable"))return null;for(b||(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function d(a){var b=a.doc,c=H('\x3cspan contenteditable\x3d"false" style\x3d"'+S+"position:absolute;border-top:1px dashed "+a.boxColor+'"\x3e\x3c/span\x3e',b),d=CKEDITOR.getUrl(this.path+"images/"+(F.hidpi?"hidpi/":"")+"icon"+(a.rtl?"-rtl":"")+".png");B(c,{attach:function(){this.wrap.getParent()|| -this.wrap.appendTo(a.editable,!0);return this},lineChildren:[B(H('\x3cspan title\x3d"'+a.editor.lang.magicline.title+'" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e',b),{base:S+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+d+") center no-repeat "+a.boxColor+";cursor:pointer;"+(F.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;":"")+(F.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px; border-radius: 2px;","top:-17px; border-radius: 2px 2px 0px 0px;", -"top:-1px; border-radius: 0px 0px 2px 2px;"]}),B(H(X,b),{base:Q+"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),B(H(X,b),{base:Q+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px","border-width:0 8px 8px 0;top:0px"]})],detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){t(a, -this);var b=a.holdDistance,c=this.size;return c&&l(a.mouse.y,c.top-b,c.bottom+b)&&l(a.mouse.x,c.left-b,c.right+b)?!0:!1},place:function(){var b=a.view,c=a.editable,d=a.trigger,e=d.upper,f=d.lower,g=e||f,h=g.getParent(),k={};this.trigger=d;e&&t(a,e,!0);f&&t(a,f,!0);t(a,h,!0);a.inInlineMode&&A(a,!0);h.equals(c)?(k.left=b.scroll.x,k.right=-b.scroll.x,k.width=""):(k.left=g.size.left-g.size.margin.left+b.scroll.x-(a.inInlineMode?b.editable.left+b.editable.border.left:0),k.width=g.size.outerWidth+g.size.margin.left+ -g.size.margin.right+b.scroll.x,k.right="");e&&f?k.top=e.size.margin.bottom===f.size.margin.top?0|e.size.bottom+e.size.margin.bottom/2:e.size.margin.bottom<f.size.margin.top?e.size.bottom+e.size.margin.bottom:e.size.bottom+e.size.margin.bottom-f.size.margin.top:e?f||(k.top=e.size.bottom+e.size.margin.bottom):k.top=f.size.top-f.size.margin.top;d.is(R)||l(k.top,b.scroll.y-15,b.scroll.y+5)?(k.top=a.inInlineMode?0:b.scroll.y,this.look(R)):d.is(N)||l(k.top,b.pane.bottom-5,b.pane.bottom+15)?(k.top=a.inInlineMode? -b.editable.height+b.editable.padding.top+b.editable.padding.bottom:b.pane.bottom-1,this.look(N)):(a.inInlineMode&&(k.top-=b.editable.top+b.editable.border.top),this.look(V));a.inInlineMode&&(k.top--,k.top+=b.editable.scroll.top,k.left+=b.editable.scroll.left);for(var m in k)k[m]=CKEDITOR.tools.cssLength(k[m]);this.setStyles(k)},look:function(a){if(this.oldLook!=a){for(var b=this.lineChildren.length,c;b--;)(c=this.lineChildren[b]).setAttribute("style",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new E("span", -a.doc)});for(b=c.lineChildren.length;b--;)c.lineChildren[b].appendTo(c);c.look(V);c.appendTo(c.wrap);c.unselectable();c.lineChildren[0].on("mouseup",function(b){c.detach();h(a,function(b){var c=a.line.trigger;b[c.is(J)?"insertBefore":"insertAfter"](c.is(J)?c.lower:c.upper)},!0);a.editor.focus();F.ie||a.enterMode==CKEDITOR.ENTER_BR||a.hotNode.scrollIntoView();b.data.preventDefault(!0)});c.on("mousedown",function(a){a.data.preventDefault(!0)});a.line=c}function h(a,b,c){var d=new CKEDITOR.dom.range(a.doc), -e=a.editor,f;F.ie&&a.enterMode==CKEDITOR.ENTER_BR?f=a.doc.createText(ca):(f=(f=k(a.element,!0))&&f.data("cke-enter-mode")||a.enterMode,f=new E(L[f],a.doc),f.is("br")||a.doc.createText(ca).appendTo(f));c&&e.fire("saveSnapshot");b(f);d.moveToPosition(f,CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([d]);a.hotNode=f;c&&e.fire("saveSnapshot")}function m(a,c){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){function d(b){var e=F.ie&&9>F.version?" ":ca,f=a.hotNode&&a.hotNode.getText()== -e&&a.element.equals(a.hotNode)&&a.lastCmdDirection===!!c;h(a,function(d){f&&a.hotNode&&a.hotNode.remove();d[c?"insertAfter":"insertBefore"](b);d.setAttributes({"data-cke-magicline-hot":1,"data-cke-magicline-dir":!!c});a.lastCmdDirection=!!c});F.ie||a.enterMode==CKEDITOR.ENTER_BR||a.hotNode.scrollIntoView();a.line.detach()}return function(f){f=f.getSelection().getStartElement();var g;f=f.getAscendant(P,1);if(!w(a,f)&&f&&!f.equals(a.editable)&&!f.contains(a.editable)){(g=k(f))&&"false"==g.getAttribute("contenteditable")&& -(f=g);a.element=f;g=e(a,f,!c);var h;n(g)&&g.is(a.triggers)&&g.is(O)&&(!e(a,g,!c)||(h=e(a,g,!c))&&n(h)&&h.is(a.triggers))?d(g):(h=b(a,f),n(h)&&(e(a,h,!c)?(f=e(a,h,!c))&&n(f)&&f.is(a.triggers)&&d(h):d(h)))}}}()}}function g(a,b){if(!b||b.type!=CKEDITOR.NODE_ELEMENT||!b.$)return!1;var c=a.line;return c.wrap.equals(b)||c.wrap.contains(b)}function n(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.$}function r(a){if(!n(a))return!1;var b;(b=q(a))||(n(a)?(b={left:1,right:1,center:1},b=!(!b[a.getComputedStyle("float")]&& -!b[a.getAttribute("align")])):b=!1);return b}function q(a){return!!{absolute:1,fixed:1}[a.getComputedStyle("position")]}function y(a,b){return n(b)?b.is(a.triggers):null}function w(a,b){if(!b)return!1;for(var c=b.getParents(1),d=c.length;d--;)for(var e=a.tabuList.length;e--;)if(c[d].hasAttribute(a.tabuList[e]))return!0;return!1}function p(a,b,c){b=b[c?"getLast":"getFirst"](function(b){return a.isRelevant(b)&&!b.is(fa)});if(!b)return!1;t(a,b);return c?b.size.top>a.mouse.y:b.size.bottom<a.mouse.y}function v(a){var b= -a.editable,c=a.mouse,d=a.view,e=a.triggerOffset;A(a);var h=c.y>(a.inInlineMode?d.editable.top+d.editable.height/2:Math.min(d.editable.height,d.pane.height)/2),b=b[h?"getLast":"getFirst"](function(a){return!(Y(a)||Z(a))});if(!b)return null;g(a,b)&&(b=a.line.wrap[h?"getPrevious":"getNext"](function(a){return!(Y(a)||Z(a))}));if(!n(b)||r(b)||!y(a,b))return null;t(a,b);return!h&&0<=b.size.top&&l(c.y,0,b.size.top+e)?(a=a.inInlineMode||0===d.scroll.y?R:V,new f([null,b,J,K,a])):h&&b.size.bottom<=d.pane.height&& -l(c.y,b.size.bottom-e,d.pane.height)?(a=a.inInlineMode||l(b.size.bottom,d.pane.height-e,d.pane.height)?N:V,new f([b,null,C,K,a])):null}function u(a){var c=a.mouse,d=a.view,g=a.triggerOffset,h=b(a);if(!h)return null;t(a,h);var g=Math.min(g,0|h.size.outerHeight/2),k=[],m,x;if(l(c.y,h.size.top-1,h.size.top+g))x=!1;else if(l(c.y,h.size.bottom-g,h.size.bottom+1))x=!0;else return null;if(r(h)||p(a,h,x)||h.getParent().is(ba))return null;var v=e(a,h,!x);if(v){if(v&&v.type==CKEDITOR.NODE_TEXT)return null; -if(n(v)){if(r(v)||!y(a,v)||v.getParent().is(ba))return null;k=[v,h][x?"reverse":"concat"]().concat([T,K])}}else h.equals(a.editable[x?"getLast":"getFirst"](a.isRelevant))?(A(a),x&&l(c.y,h.size.bottom-g,d.pane.height)&&l(h.size.bottom,d.pane.height-g,d.pane.height)?m=N:l(c.y,0,h.size.top+g)&&(m=R)):m=V,k=[null,h][x?"reverse":"concat"]().concat([x?C:J,K,m,h.equals(a.editable[x?"getLast":"getFirst"](a.isRelevant))?x?N:R:V]);return 0 in k?new f(k):null}function z(a,b,c,d){for(var e=b.getDocumentPosition(), -f={},g={},h={},k={},l=aa.length;l--;)f[aa[l]]=parseInt(b.getComputedStyle.call(b,"border-"+aa[l]+"-width"),10)||0,h[aa[l]]=parseInt(b.getComputedStyle.call(b,"padding-"+aa[l]),10)||0,g[aa[l]]=parseInt(b.getComputedStyle.call(b,"margin-"+aa[l]),10)||0;c&&!d||D(a,d);k.top=e.y-(c?0:a.view.scroll.y);k.left=e.x-(c?0:a.view.scroll.x);k.outerWidth=b.$.offsetWidth;k.outerHeight=b.$.offsetHeight;k.height=k.outerHeight-(h.top+h.bottom+f.top+f.bottom);k.width=k.outerWidth-(h.left+h.right+f.left+f.right);k.bottom= -k.top+k.outerHeight;k.right=k.left+k.outerWidth;a.inInlineMode&&(k.scroll={top:b.$.scrollTop,left:b.$.scrollLeft});return B({border:f,padding:h,margin:g,ignoreScroll:c},k,!0)}function t(a,b,c){if(!n(b))return b.size=null;if(!b.size)b.size={};else if(b.size.ignoreScroll==c&&b.size.date>new Date-M)return null;return B(b.size,z(a,b,c),{date:+new Date},!0)}function A(a,b){a.view.editable=z(a,a.editable,b,!0)}function D(a,b){a.view||(a.view={});var c=a.view;if(!(!b&&c&&c.date>new Date-M)){var d=a.win, -c=d.getScrollPosition(),d=d.getViewPaneSize();B(a.view,{scroll:{x:c.x,y:c.y,width:a.doc.$.documentElement.scrollWidth-d.width,height:a.doc.$.documentElement.scrollHeight-d.height},pane:{width:d.width,height:d.height,bottom:d.height+c.y},date:+new Date},!0)}}function x(a,b,c,d){for(var e=d,g=d,h=0,k=!1,l=!1,m=a.view.pane.height,n=a.mouse;n.y+h<m&&0<n.y-h;){k||(k=b(e,d));l||(l=b(g,d));!k&&0<n.y-h&&(e=c(a,{x:n.x,y:n.y-h}));!l&&n.y+h<m&&(g=c(a,{x:n.x,y:n.y+h}));if(k&&l)break;h+=2}return new f([e,g,null, -null])}CKEDITOR.plugins.add("magicline",{init:function(a){var c=a.config,k=c.magicline_triggerOffset||30,l={editor:a,enterMode:c.enterMode,triggerOffset:k,holdDistance:0|k*(c.magicline_holdDistance||.5),boxColor:c.magicline_color||"#ff0000",rtl:"rtl"==c.contentsLangDirection,tabuList:["data-cke-hidden-sel"].concat(c.magicline_tabuList||[]),triggers:c.magicline_everywhere?P:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},x,t,p;l.isRelevant=function(a){return n(a)&&!g(l,a)&&!r(a)};a.on("contentDom", -function(){var k=a.editable(),n=a.document,r=a.window;B(l,{editable:k,inInlineMode:k.isInline(),doc:n,win:r,hotNode:null},!0);l.boundary=l.inInlineMode?l.editable:l.doc.getDocumentElement();k.is(G.$inline)||(l.inInlineMode&&!q(k)&&k.setStyles({position:"relative",top:null,left:null}),d.call(this,l),D(l),k.attachListener(a,"beforeUndoImage",function(){l.line.detach()}),k.attachListener(a,"beforeGetData",function(){l.line.wrap.getParent()&&(l.line.detach(),a.once("getData",function(){l.line.attach()}, -null,null,1E3))},null,null,0),k.attachListener(l.inInlineMode?n:n.getWindow().getFrame(),"mouseout",function(b){if("wysiwyg"==a.mode)if(l.inInlineMode){var c=b.data.$.clientX;b=b.data.$.clientY;D(l);A(l,!0);var d=l.view.editable,e=l.view.scroll;c>d.left-e.x&&c<d.right-e.x&&b>d.top-e.y&&b<d.bottom-e.y||(clearTimeout(p),p=null,l.line.detach())}else clearTimeout(p),p=null,l.line.detach()}),k.attachListener(k,"keyup",function(){l.hiddenMode=0}),k.attachListener(k,"keydown",function(b){if("wysiwyg"==a.mode)switch(b.data.getKeystroke()){case 2228240:case 16:l.hiddenMode= -1,l.line.detach()}}),k.attachListener(l.inInlineMode?k:n,"mousemove",function(b){t=!0;if("wysiwyg"==a.mode&&!a.readOnly&&!p){var c={x:b.data.$.clientX,y:b.data.$.clientY};p=setTimeout(function(){l.mouse=c;p=l.trigger=null;D(l);t&&!l.hiddenMode&&a.focusManager.hasFocus&&!l.line.mouseNear()&&(l.element=U(l,!0))&&((l.trigger=v(l)||u(l)||W(l))&&!w(l,l.trigger.upper||l.trigger.lower)?l.line.attach().place():(l.trigger=null,l.line.detach()),t=!1)},30)}}),k.attachListener(r,"scroll",function(){"wysiwyg"== -a.mode&&(l.line.detach(),F.webkit&&(l.hiddenMode=1,clearTimeout(x),x=setTimeout(function(){l.mouseDown||(l.hiddenMode=0)},50)))}),k.attachListener(I?n:r,"mousedown",function(){"wysiwyg"==a.mode&&(l.line.detach(),l.hiddenMode=1,l.mouseDown=1)}),k.attachListener(I?n:r,"mouseup",function(){l.hiddenMode=0;l.mouseDown=0}),a.addCommand("accessPreviousSpace",m(l)),a.addCommand("accessNextSpace",m(l,!0)),a.setKeystroke([[c.magicline_keystrokePrevious,"accessPreviousSpace"],[c.magicline_keystrokeNext,"accessNextSpace"]]), -a.on("loadSnapshot",function(){var b,c,d,e;for(e in{p:1,br:1,div:1})for(b=a.document.getElementsByTag(e),d=b.count();d--;)if((c=b.getItem(d)).data("cke-magicline-hot")){l.hotNode=c;l.lastCmdDirection="true"===c.data("cke-magicline-dir")?!0:!1;return}}),this.backdoor={accessFocusSpace:h,boxTrigger:f,isLine:g,getAscendantTrigger:b,getNonEmptyNeighbour:e,getSize:z,that:l,triggerEdge:u,triggerEditable:v,triggerExpand:W})},this)}});var B=CKEDITOR.tools.extend,E=CKEDITOR.dom.element,H=E.createFromHtml, -F=CKEDITOR.env,I=CKEDITOR.env.ie&&9>CKEDITOR.env.version,G=CKEDITOR.dtd,L={},J=128,C=64,T=32,K=16,R=4,N=2,V=1,ca=" ",ba=G.$listItem,fa=G.$tableContent,O=B({},G.$nonEditable,G.$empty),P=G.$block,M=100,S="width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",Q=S+"border-color:transparent;display:block;border-style:solid;",X="\x3cspan\x3e"+ca+"\x3c/span\x3e";L[CKEDITOR.ENTER_BR]="br";L[CKEDITOR.ENTER_P]="p";L[CKEDITOR.ENTER_DIV]= -"div";f.prototype={set:function(a,b,c){this.properties=a+b+(c||V);return this},is:function(a){return(this.properties&a)==a}};var U=function(){function a(b,c){var d=b.$.elementFromPoint(c.x,c.y);return d&&d.nodeType?new CKEDITOR.dom.element(d):null}return function(b,c,d){if(!b.mouse)return null;var e=b.doc,f=b.line.wrap;d=d||b.mouse;var h=a(e,d);c&&g(b,h)&&(f.hide(),h=a(e,d),f.show());return!h||h.type!=CKEDITOR.NODE_ELEMENT||!h.$||F.ie&&9>F.version&&!b.boundary.equals(h)&&!b.boundary.contains(h)?null: -h}}(),Y=CKEDITOR.dom.walker.whitespaces(),Z=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),W=function(){function b(e){var f=e.element,g,h,k;if(!n(f)||f.contains(e.editable)||f.isReadOnly())return null;k=x(e,function(a,b){return!b.equals(a)},function(a,b){return U(a,!0,b)},f);g=k.upper;h=k.lower;if(a(e,g,h))return k.set(T,8);if(g&&f.contains(g))for(;!g.getParent().equals(f);)g=g.getParent();else g=f.getFirst(function(a){return d(e,a)});if(h&&f.contains(h))for(;!h.getParent().equals(f);)h=h.getParent(); -else h=f.getLast(function(a){return d(e,a)});if(!g||!h)return null;t(e,g);t(e,h);if(!l(e.mouse.y,g.size.top,h.size.bottom))return null;for(var f=Number.MAX_VALUE,m,p,v,u;h&&!h.equals(g)&&(p=g.getNext(e.isRelevant));)m=Math.abs(c(e,g,p)-e.mouse.y),m<f&&(f=m,v=g,u=p),g=p,t(e,g);if(!v||!u||!l(e.mouse.y,v.size.top,u.size.bottom))return null;k.upper=v;k.lower=u;return k.set(T,8)}function d(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||Z(b)||r(b)||g(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is("br"))}return function(c){var d= -b(c),e;if(e=d){e=d.upper;var f=d.lower;e=!e||!f||r(f)||r(e)||f.equals(e)||e.equals(f)||f.contains(e)||e.contains(f)?!1:y(c,e)&&y(c,f)&&a(c,e,f)?!0:!1}return e?d:null}}(),aa=["top","left","right","bottom"]}(),CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.SHIFT+51,CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.SHIFT+52,function(){function a(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())return[];for(var b=[],c=["style","className"],e=0;e<c.length;e++){var f= -a.$.elements.namedItem(c[e]);f&&(f=new CKEDITOR.dom.element(f),b.push([f,f.nextSibling]),f.remove())}return b}function f(a,b){if(a&&a.type==CKEDITOR.NODE_ELEMENT&&"form"==a.getName()&&0<b.length)for(var c=b.length-1;0<=c;c--){var e=b[c][0],f=b[c][1];f?e.insertBefore(f):e.appendTo(a)}}function b(b,c){var d=a(b),e={},m=b.$;c||(e["class"]=m.className||"",m.className="");e.inline=m.style.cssText||"";c||(m.style.cssText="position: static; overflow: visible");f(d);return e}function c(b,c){var d=a(b),e= -b.$;"class"in c&&(e.className=c["class"]);"inline"in c&&(e.style.cssText=c.inline);f(d)}function e(a){if(!a.editable().isInline()){var b=CKEDITOR.instances,c;for(c in b){var e=b[c];"wysiwyg"!=e.mode||e.readOnly||(e=e.document.getBody(),e.setAttribute("contentEditable",!1),e.setAttribute("contentEditable",!0))}a.editable().hasFocus&&(a.toolbox.focus(),a.focus())}}CKEDITOR.plugins.add("maximize",{init:function(a){function f(){var b=m.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!= -CKEDITOR.ELEMENT_MODE_INLINE){var d=a.lang,h=CKEDITOR.document,m=h.getWindow(),g,n,r,q=CKEDITOR.TRISTATE_OFF;a.addCommand("maximize",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var y=a.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}),w=a.ui.space("contents");if("wysiwyg"==a.mode){var p=a.getSelection();g=p&&p.getRanges();n=m.getScrollPosition()}else{var v=a.editable().$;g=!CKEDITOR.env.ie&&[v.selectionStart, -v.selectionEnd];n=[v.scrollLeft,v.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){m.on("resize",f);r=m.getScrollPosition();for(p=a.container;p=p.getParent();)p.setCustomData("maximize_saved_styles",b(p)),p.setStyle("z-index",a.config.baseFloatZIndex-5);w.setCustomData("maximize_saved_styles",b(w,!0));y.setCustomData("maximize_saved_styles",b(y,!0));w={overflow:CKEDITOR.env.webkit?"":"hidden",width:0,height:0};h.getDocumentElement().setStyles(w);!CKEDITOR.env.gecko&&h.getDocumentElement().setStyle("position", -"fixed");CKEDITOR.env.gecko&&CKEDITOR.env.quirks||h.getBody().setStyles(w);CKEDITOR.env.ie?setTimeout(function(){m.$.scrollTo(0,0)},0):m.$.scrollTo(0,0);y.setStyle("position",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?"fixed":"absolute");y.$.offsetLeft;y.setStyles({"z-index":a.config.baseFloatZIndex-5,left:"0px",top:"0px"});y.addClass("cke_maximized");f();w=y.getDocumentPosition();y.setStyles({left:-1*w.x+"px",top:-1*w.y+"px"});CKEDITOR.env.gecko&&e(a)}else if(this.state==CKEDITOR.TRISTATE_ON){m.removeListener("resize", -f);for(var p=[w,y],u=0;u<p.length;u++)c(p[u],p[u].getCustomData("maximize_saved_styles")),p[u].removeCustomData("maximize_saved_styles");for(p=a.container;p=p.getParent();)c(p,p.getCustomData("maximize_saved_styles")),p.removeCustomData("maximize_saved_styles");CKEDITOR.env.ie?setTimeout(function(){m.$.scrollTo(r.x,r.y)},0):m.$.scrollTo(r.x,r.y);y.removeClass("cke_maximized");CKEDITOR.env.webkit&&(y.setStyle("display","inline"),setTimeout(function(){y.setStyle("display","block")},0));a.fire("resize", -{outerHeight:a.container.$.offsetHeight,contentsHeight:w.$.offsetHeight,outerWidth:a.container.$.offsetWidth})}this.toggleState();if(p=this.uiItems[0])w=this.state==CKEDITOR.TRISTATE_OFF?d.maximize.maximize:d.maximize.minimize,p=CKEDITOR.document.getById(p._.id),p.getChild(1).setHtml(w),p.setAttribute("title",w),p.setAttribute("href",'javascript:void("'+w+'");');"wysiwyg"==a.mode?g?(CKEDITOR.env.gecko&&e(a),a.getSelection().selectRanges(g),(v=a.getSelection().getStartElement())&&v.scrollIntoView(!0)): -m.$.scrollTo(n.x,n.y):(g&&(v.selectionStart=g[0],v.selectionEnd=g[1]),v.scrollLeft=n[0],v.scrollTop=n[1]);g=n=null;q=this.state;a.fire("maximize",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton("Maximize",{label:d.maximize.maximize,command:"maximize",toolbar:"tools,10"});a.on("mode",function(){var b=a.getCommand("maximize");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:q)},null,null,100)}}})}(),function(){function a(a,b,c){var e=CKEDITOR.cleanWord;e?c():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile|| -b+"filter/default.js"),CKEDITOR.scriptLoader.load(a,c,null,!0));return!e}CKEDITOR.plugins.add("pastefromword",{requires:"clipboard",init:function(f){var b=0,c=this.path;f.addCommand("pastefromword",{canUndo:!1,async:!0,exec:function(a,c){b=1;a.execCommand("paste",{type:"html",notification:c&&"undefined"!==typeof c.notification?c.notification:!0})}});f.ui.addButton&&f.ui.addButton("PasteFromWord",{label:f.lang.pastefromword.toolbar,command:"pastefromword",toolbar:"clipboard,50"});f.on("paste",function(e){var l= -e.data,k=(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported?l.dataTransfer.getData("text/html",!0):null)||l.dataValue,d={dataValue:k},h=/(class=\"?Mso|style=(?:\"|\')[^\"]*?\bmso\-|w:WordDocument|<o:\w+>|<\/font>)/,h=/<meta\s*name=(?:\"|\')?generator(?:\"|\')?\s*content=(?:\"|\')?microsoft/gi.test(k)||h.test(k);if(k&&(b||h)&&(!1!==f.fire("pasteFromWord",d)||b)){l.dontFilter=!0;var m=a(f,c,function(){if(m)f.fire("paste",l);else if(!f.config.pasteFromWordPromptCleanup||b||confirm(f.lang.pastefromword.confirmCleanup))d.dataValue= -CKEDITOR.cleanWord(d.dataValue,f),f.fire("afterPasteFromWord",d),l.dataValue=d.dataValue;b=0});m&&e.cancel()}},null,null,3)}})}(),function(){var a={canUndo:!1,async:!0,exec:function(a,b){var c=a.lang,e=CKEDITOR.tools.keystrokeToString(c.common.keyboard,a.getCommandKeystroke(CKEDITOR.env.ie?a.commands.paste:this)),l=b&&"undefined"!==typeof b.notification?b.notification:!b||!b.from||"keystrokeHandler"===b.from&&CKEDITOR.env.ie,c=l&&"string"===typeof l?l:c.pastetext.pasteNotification.replace(/%1/,'\x3ckbd aria-label\x3d"'+ -e.aria+'"\x3e'+e.display+"\x3c/kbd\x3e");a.execCommand("paste",{type:"text",notification:l?c:!1})}};CKEDITOR.plugins.add("pastetext",{requires:"clipboard",init:function(f){var b=CKEDITOR.env.safari?CKEDITOR.CTRL+CKEDITOR.ALT+CKEDITOR.SHIFT+86:CKEDITOR.CTRL+CKEDITOR.SHIFT+86;f.addCommand("pastetext",a);f.setKeystroke(b,"pastetext");f.ui.addButton&&f.ui.addButton("PasteText",{label:f.lang.pastetext.button,command:"pastetext",toolbar:"clipboard,40"});if(f.config.forcePasteAsPlainText)f.on("beforePaste", -function(a){"html"!=a.data.type&&(a.data.type="text")});f.on("pasteState",function(a){f.getCommand("pastetext").setState(a.data)})}})}(),CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}}),CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var f=a._.removeFormatRegex|| -(a._.removeFormatRegex=new RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),b=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),c=CKEDITOR.plugins.removeformat.filter,e=a.getSelection().getRanges(),l=e.createIterator(),k=function(a){return a.type==CKEDITOR.NODE_ELEMENT},d;d=l.getNextRange();){d.collapsed||d.enlarge(CKEDITOR.ENLARGE_ELEMENT);var h=d.createBookmark(),m=h.startNode,g=h.endNode,n=function(b){for(var d=a.elementPath(b),e=d.elements, -g=1,h;(h=e[g])&&!h.equals(d.block)&&!h.equals(d.blockLimit);g++)f.test(h.getName())&&c(a,h)&&b.breakParent(h)};n(m);if(g)for(n(g),m=m.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);m&&!m.equals(g);)if(m.isReadOnly()){if(m.getPosition(g)&CKEDITOR.POSITION_CONTAINS)break;m=m.getNext(k)}else n=m.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),"img"==m.getName()&&m.data("cke-realelement")||!c(a,m)||(f.test(m.getName())?m.remove(1):(m.removeAttributes(b),a.fire("removeFormatCleanup",m))),m=n;d.moveToBookmark(h)}a.forceNextSelectionCheck(); -a.getSelection().selectRanges(e)}}},filter:function(a,f){for(var b=a._.removeFormatFilters||[],c=0;c<b.length;c++)if(!1===b[c](f))return!1;return!0}},CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)},CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var",CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign", -CKEDITOR.plugins.add("resize",{init:function(a){function f(b){var e=h.width,f=h.height,k=e+(b.data.$.screenX-d.x)*("rtl"==l?-1:1);b=f+(b.data.$.screenY-d.y);m&&(e=Math.max(c.resize_minWidth,Math.min(k,c.resize_maxWidth)));g&&(f=Math.max(c.resize_minHeight,Math.min(b,c.resize_maxHeight)));a.resize(m?e:null,f)}function b(){CKEDITOR.document.removeListener("mousemove",f);CKEDITOR.document.removeListener("mouseup",b);a.document&&(a.document.removeListener("mousemove",f),a.document.removeListener("mouseup", -b))}var c=a.config,e=a.ui.spaceId("resizer"),l=a.element?a.element.getDirection(1):"ltr";!c.resize_dir&&(c.resize_dir="vertical");void 0===c.resize_maxWidth&&(c.resize_maxWidth=3E3);void 0===c.resize_maxHeight&&(c.resize_maxHeight=3E3);void 0===c.resize_minWidth&&(c.resize_minWidth=750);void 0===c.resize_minHeight&&(c.resize_minHeight=250);if(!1!==c.resize_enabled){var k=null,d,h,m=("both"==c.resize_dir||"horizontal"==c.resize_dir)&&c.resize_minWidth!=c.resize_maxWidth,g=("both"==c.resize_dir||"vertical"== -c.resize_dir)&&c.resize_minHeight!=c.resize_maxHeight,n=CKEDITOR.tools.addFunction(function(e){k||(k=a.getResizable());h={width:k.$.offsetWidth||0,height:k.$.offsetHeight||0};d={x:e.screenX,y:e.screenY};c.resize_minWidth>h.width&&(c.resize_minWidth=h.width);c.resize_minHeight>h.height&&(c.resize_minHeight=h.height);CKEDITOR.document.on("mousemove",f);CKEDITOR.document.on("mouseup",b);a.document&&(a.document.on("mousemove",f),a.document.on("mouseup",b));e.preventDefault&&e.preventDefault()});a.on("destroy", -function(){CKEDITOR.tools.removeFunction(n)});a.on("uiSpace",function(b){if("bottom"==b.data.space){var c="";m&&!g&&(c=" cke_resizer_horizontal");!m&&g&&(c=" cke_resizer_vertical");var d='\x3cspan id\x3d"'+e+'" class\x3d"cke_resizer'+c+" cke_resizer_"+l+'" title\x3d"'+CKEDITOR.tools.htmlEncode(a.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+n+', event)"\x3e'+("ltr"==l?"◢":"◣")+"\x3c/span\x3e";"ltr"==l&&"ltr"==c?b.data.html+=d:b.data.html=d+b.data.html}},a,null,100);a.on("maximize", -function(b){a.ui.space("resizer")[b.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}}),CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var a=function(a){var b=this._,c=b.menu;b.state!==CKEDITOR.TRISTATE_DISABLED&&(b.on&&c?c.hide():(b.previousState=b.state,c||(c=b.menu=new CKEDITOR.menu(a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.common.options}}}),c.onHide=CKEDITOR.tools.bind(function(){var c=this.command?a.getCommand(this.command).modes:this.modes; -this.setState(!c||c[a.mode]?b.previousState:CKEDITOR.TRISTATE_DISABLED);b.on=0},this),this.onMenu&&c.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),b.on=1,setTimeout(function(){c.show(CKEDITOR.document.getById(b.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(f){delete f.panel;this.base(f);this.hasArrow=!0;this.click=a},statics:{handler:{create:function(a){return new CKEDITOR.ui.menuButton(a)}}}})},beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_MENUBUTTON, -CKEDITOR.ui.menuButton.handler)}}),CKEDITOR.UI_MENUBUTTON="menubutton","use strict",CKEDITOR.plugins.add("scayt",{requires:"menubutton,dialog",tabToOpen:null,dialogName:"scaytDialog",onLoad:function(a){CKEDITOR.plugins.scayt.onLoadTimestamp=(new Date).getTime();"moono-lisa"==(CKEDITOR.skinName||a.config.skin)&&CKEDITOR.document.appendStyleSheet(this.path+"skins/"+CKEDITOR.skin.name+"/scayt.css");CKEDITOR.document.appendStyleSheet(this.path+"dialogs/dialog.css")},init:function(a){var f=this,b=CKEDITOR.plugins.scayt; -this.bindEvents(a);this.parseConfig(a);this.addRule(a);CKEDITOR.dialog.add(this.dialogName,CKEDITOR.getUrl(this.path+"dialogs/options.js"));this.addMenuItems(a);var c=a.lang.scayt,e=CKEDITOR.env;a.ui.add("Scayt",CKEDITOR.UI_MENUBUTTON,{label:c.text_title,title:a.plugins.wsc?a.lang.wsc.title:c.text_title,modes:{wysiwyg:!(e.ie&&(8>e.version||e.quirks))},toolbar:"spellchecker,20",refresh:function(){var c=a.ui.instances.Scayt.getState();a.scayt&&(c=b.state.scayt[a.name]?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF); -a.fire("scaytButtonState",c)},onRender:function(){var b=this;a.on("scaytButtonState",function(a){void 0!==typeof a.data&&b.setState(a.data)})},onMenu:function(){var c=a.scayt;a.getMenuItem("scaytToggle").label=a.lang.scayt[c&&b.state.scayt[a.name]?"btn_disable":"btn_enable"];var e={scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytDict:c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED, -scaytAbout:c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,WSC:a.plugins.wsc?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED};a.config.scayt_uiTabs[0]||delete e.scaytOptions;a.config.scayt_uiTabs[1]||delete e.scaytLangs;a.config.scayt_uiTabs[2]||delete e.scaytDict;c&&!CKEDITOR.plugins.scayt.isNewUdSupported(c)&&(delete e.scaytDict,a.config.scayt_uiTabs[2]=0,CKEDITOR.plugins.scayt.alarmCompatibilityMessage());return e}});a.contextMenu&&a.addMenuItems&&(a.contextMenu.addListener(function(b,c){var d= -a.scayt,e,m;d&&(m=d.getSelectionNode())&&(e=f.menuGenerator(a,m),d.showBanner("."+a.contextMenu._.definition.panel.className.split(" ").join(" .")));return e}),a.contextMenu._.onHide=CKEDITOR.tools.override(a.contextMenu._.onHide,function(b){return function(){var c=a.scayt;c&&c.hideBanner();return b.apply(this)}}))},addMenuItems:function(a){var f=this,b=CKEDITOR.plugins.scayt;a.addMenuGroup("scaytButton");for(var c=a.config.scayt_contextMenuItemsOrder.split("|"),e=0;e<c.length;e++)c[e]="scayt_"+c[e]; -if((c=["grayt_description","grayt_suggest","grayt_control"].concat(c))&&c.length)for(e=0;e<c.length;e++)a.addMenuGroup(c[e],e-10);a.addCommand("scaytToggle",{exec:function(a){var c=a.scayt;b.state.scayt[a.name]=!b.state.scayt[a.name];!0===b.state.scayt[a.name]?c||b.createScayt(a):c&&b.destroy(a)}});a.addCommand("scaytAbout",{exec:function(a){a.scayt.tabToOpen="about";a.lockSelection();a.openDialog(f.dialogName)}});a.addCommand("scaytOptions",{exec:function(a){a.scayt.tabToOpen="options";a.lockSelection(); -a.openDialog(f.dialogName)}});a.addCommand("scaytLangs",{exec:function(a){a.scayt.tabToOpen="langs";a.lockSelection();a.openDialog(f.dialogName)}});a.addCommand("scaytDict",{exec:function(a){a.scayt.tabToOpen="dictionaries";a.lockSelection();a.openDialog(f.dialogName)}});c={scaytToggle:{label:a.lang.scayt.btn_enable,group:"scaytButton",command:"scaytToggle"},scaytAbout:{label:a.lang.scayt.btn_about,group:"scaytButton",command:"scaytAbout"},scaytOptions:{label:a.lang.scayt.btn_options,group:"scaytButton", -command:"scaytOptions"},scaytLangs:{label:a.lang.scayt.btn_langs,group:"scaytButton",command:"scaytLangs"},scaytDict:{label:a.lang.scayt.btn_dictionaries,group:"scaytButton",command:"scaytDict"}};a.plugins.wsc&&(c.WSC={label:a.lang.wsc.toolbar,group:"scaytButton",onClick:function(){var b=CKEDITOR.plugins.scayt,c=a.scayt,d=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.container.getText():a.document.getBody().getText();(d=d.replace(/\s/g,""))?(c&&b.state.scayt[a.name]&&c.setMarkupPaused&&c.setMarkupPaused(!0), -a.lockSelection(),a.execCommand("checkspell")):alert("Nothing to check!")}});a.addMenuItems(c)},bindEvents:function(a){var f=CKEDITOR.plugins.scayt,b=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE,c=function(){f.destroy(a)},e=function(){!f.state.scayt[a.name]||a.readOnly||a.scayt||f.createScayt(a)},l=function(){var c=a.editable();c.attachListener(c,"focus",function(c){CKEDITOR.plugins.scayt&&!a.scayt&&setTimeout(e,0);c=CKEDITOR.plugins.scayt&&CKEDITOR.plugins.scayt.state.scayt[a.name]&&a.scayt;var d, -f;if((b||c)&&a._.savedSelection){c=a._.savedSelection.getSelectedElement();c=!c&&a._.savedSelection.getRanges();for(var k=0;k<c.length;k++)f=c[k],"string"===typeof f.startContainer.$.nodeValue&&(d=f.startContainer.getText().length,(d<f.startOffset||d<f.endOffset)&&a.unlockSelection(!1))}},this,null,-10)},k=function(){b?a.config.scayt_inlineModeImmediateMarkup?e():(a.on("blur",function(){setTimeout(c,0)}),a.on("focus",e),a.focusManager.hasFocus&&e()):e();l();var d=a.editable();d.attachListener(d,"mousedown", -function(b){b=b.data.getTarget();var c=a.widgets&&a.widgets.getByElement(b);c&&(c.wrapper=b.getAscendant(function(a){return a.hasAttribute("data-cke-widget-wrapper")},!0))},this,null,-10)};a.on("contentDom",k);a.on("beforeCommandExec",function(b){var c=a.scayt,e=!1,g=!1,k=!0;b.data.name in f.options.disablingCommandExec&&"wysiwyg"==a.mode?c&&(f.destroy(a),a.fire("scaytButtonState",CKEDITOR.TRISTATE_DISABLED)):"bold"!==b.data.name&&"italic"!==b.data.name&&"underline"!==b.data.name&&"strike"!==b.data.name&& -"subscript"!==b.data.name&&"superscript"!==b.data.name&&"enter"!==b.data.name&&"cut"!==b.data.name&&"language"!==b.data.name||!c||("cut"===b.data.name&&(k=!1,g=!0),"language"===b.data.name&&(g=e=!0),a.fire("reloadMarkupScayt",{removeOptions:{removeInside:k,forceBookmark:g,language:e},timeout:0}))});a.on("beforeSetMode",function(b){if("source"==b.data){if(b=a.scayt)f.destroy(a),a.fire("scaytButtonState",CKEDITOR.TRISTATE_DISABLED);a.document&&a.document.getBody().removeAttribute("_jquid")}});a.on("afterCommandExec", -function(b){"wysiwyg"!=a.mode||"undo"!=b.data.name&&"redo"!=b.data.name||setTimeout(function(){f.reloadMarkup(a.scayt)},250)});a.on("readOnly",function(b){var c;b&&(c=a.scayt,!0===b.editor.readOnly?c&&c.fire("removeMarkupInDocument",{}):c?f.reloadMarkup(c):"wysiwyg"==b.editor.mode&&!0===f.state.scayt[b.editor.name]&&(f.createScayt(a),b.editor.fire("scaytButtonState",CKEDITOR.TRISTATE_ON)))});a.on("beforeDestroy",c);a.on("setData",function(){c();(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE||a.plugins.divarea)&& -k()},this,null,50);a.on("reloadMarkupScayt",function(b){var c=b.data&&b.data.removeOptions,e=b.data&&b.data.timeout,g=b.data&&b.data.language,k=a.scayt;k&&setTimeout(function(){g&&(c.selectionNode=a.plugins.language.getCurrentLangElement(a),c.selectionNode=c.selectionNode&&c.selectionNode.$||null);k.removeMarkupInSelectionNode(c);f.reloadMarkup(k)},e||0)});a.on("insertElement",function(){a.fire("reloadMarkupScayt",{removeOptions:{forceBookmark:!0}})},this,null,50);a.on("insertHtml",function(){a.scayt&& -a.scayt.setFocused&&a.scayt.setFocused(!0);a.fire("reloadMarkupScayt")},this,null,50);a.on("insertText",function(){a.scayt&&a.scayt.setFocused&&a.scayt.setFocused(!0);a.fire("reloadMarkupScayt")},this,null,50);a.on("scaytDialogShown",function(b){b.data.selectPage(a.scayt.tabToOpen)})},parseConfig:function(a){var f=CKEDITOR.plugins.scayt;f.replaceOldOptionsNames(a.config);"boolean"!==typeof a.config.scayt_autoStartup&&(a.config.scayt_autoStartup=!1);f.state.scayt[a.name]=a.config.scayt_autoStartup; -"boolean"!==typeof a.config.grayt_autoStartup&&(a.config.grayt_autoStartup=!1);"boolean"!==typeof a.config.scayt_inlineModeImmediateMarkup&&(a.config.scayt_inlineModeImmediateMarkup=!1);f.state.grayt[a.name]=a.config.grayt_autoStartup;a.config.scayt_contextCommands||(a.config.scayt_contextCommands="ignoreall|add");a.config.scayt_contextMenuItemsOrder||(a.config.scayt_contextMenuItemsOrder="suggest|moresuggest|control");a.config.scayt_sLang||(a.config.scayt_sLang="en_US");if(void 0===a.config.scayt_maxSuggestions|| -"number"!=typeof a.config.scayt_maxSuggestions||0>a.config.scayt_maxSuggestions)a.config.scayt_maxSuggestions=5;if(void 0===a.config.scayt_minWordLength||"number"!=typeof a.config.scayt_minWordLength||1>a.config.scayt_minWordLength)a.config.scayt_minWordLength=4;if(void 0===a.config.scayt_customDictionaryIds||"string"!==typeof a.config.scayt_customDictionaryIds)a.config.scayt_customDictionaryIds="";if(void 0===a.config.scayt_userDictionaryName||"string"!==typeof a.config.scayt_userDictionaryName)a.config.scayt_userDictionaryName= -null;if("string"===typeof a.config.scayt_uiTabs&&3===a.config.scayt_uiTabs.split(",").length){var b=[],c=[];a.config.scayt_uiTabs=a.config.scayt_uiTabs.split(",");CKEDITOR.tools.search(a.config.scayt_uiTabs,function(a){1===Number(a)||0===Number(a)?(c.push(!0),b.push(Number(a))):c.push(!1)});null===CKEDITOR.tools.search(c,!1)?a.config.scayt_uiTabs=b:a.config.scayt_uiTabs=[1,1,1]}else a.config.scayt_uiTabs=[1,1,1];"string"!=typeof a.config.scayt_serviceProtocol&&(a.config.scayt_serviceProtocol=null); -"string"!=typeof a.config.scayt_serviceHost&&(a.config.scayt_serviceHost=null);"string"!=typeof a.config.scayt_servicePort&&(a.config.scayt_servicePort=null);"string"!=typeof a.config.scayt_servicePath&&(a.config.scayt_servicePath=null);a.config.scayt_moreSuggestions||(a.config.scayt_moreSuggestions="on");"string"!==typeof a.config.scayt_customerId&&(a.config.scayt_customerId="1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2");"string"!==typeof a.config.scayt_customPunctuation&& -(a.config.scayt_customPunctuation="-");"string"!==typeof a.config.scayt_srcUrl&&(f=document.location.protocol,f=-1!=f.search(/https?:/)?f:"http:",a.config.scayt_srcUrl=f+"//svc.webspellchecker.net/spellcheck31/lf/scayt3/ckscayt/ckscayt.js");"boolean"!==typeof CKEDITOR.config.scayt_handleCheckDirty&&(CKEDITOR.config.scayt_handleCheckDirty=!0);"boolean"!==typeof CKEDITOR.config.scayt_handleUndoRedo&&(CKEDITOR.config.scayt_handleUndoRedo=!0);CKEDITOR.config.scayt_handleUndoRedo=CKEDITOR.plugins.undo? -CKEDITOR.config.scayt_handleUndoRedo:!1;"boolean"!==typeof a.config.scayt_multiLanguageMode&&(a.config.scayt_multiLanguageMode=!1);"object"!==typeof a.config.scayt_multiLanguageStyles&&(a.config.scayt_multiLanguageStyles={});a.config.scayt_ignoreAllCapsWords&&"boolean"!==typeof a.config.scayt_ignoreAllCapsWords&&(a.config.scayt_ignoreAllCapsWords=!1);a.config.scayt_ignoreDomainNames&&"boolean"!==typeof a.config.scayt_ignoreDomainNames&&(a.config.scayt_ignoreDomainNames=!1);a.config.scayt_ignoreWordsWithMixedCases&& -"boolean"!==typeof a.config.scayt_ignoreWordsWithMixedCases&&(a.config.scayt_ignoreWordsWithMixedCases=!1);a.config.scayt_ignoreWordsWithNumbers&&"boolean"!==typeof a.config.scayt_ignoreWordsWithNumbers&&(a.config.scayt_ignoreWordsWithNumbers=!1);if(a.config.scayt_disableOptionsStorage){var f=CKEDITOR.tools.isArray(a.config.scayt_disableOptionsStorage)?a.config.scayt_disableOptionsStorage:"string"===typeof a.config.scayt_disableOptionsStorage?[a.config.scayt_disableOptionsStorage]:void 0,e="all options lang ignore-all-caps-words ignore-domain-names ignore-words-with-mixed-cases ignore-words-with-numbers".split(" "), -l=["lang","ignore-all-caps-words","ignore-domain-names","ignore-words-with-mixed-cases","ignore-words-with-numbers"],k=CKEDITOR.tools.search,d=CKEDITOR.tools.indexOf;a.config.scayt_disableOptionsStorage=function(a){for(var b=[],c=0;c<a.length;c++){var f=a[c],r=!!k(a,"options");if(!k(e,f)||r&&k(l,function(a){if("lang"===a)return!1}))return;k(l,f)&&l.splice(d(l,f),1);if("all"===f||r&&k(a,"lang"))return[];"options"===f&&(l=["lang"])}return b=b.concat(l)}(f)}},addRule:function(a){var f=CKEDITOR.plugins.scayt, -b=a.dataProcessor,c=b&&b.htmlFilter,e=a._.elementsPath&&a._.elementsPath.filters,b=b&&b.dataFilter,l=a.addRemoveFormatFilter,k=function(b){if(a.scayt&&(b.hasAttribute(f.options.data_attribute_name)||b.hasAttribute(f.options.problem_grammar_data_attribute)))return!1},d=function(b){var c=!0;a.scayt&&(b.hasAttribute(f.options.data_attribute_name)||b.hasAttribute(f.options.problem_grammar_data_attribute))&&(c=!1);return c};e&&e.push(k);b&&b.addRules({elements:{span:function(a){var b=a.hasClass(f.options.misspelled_word_class)&& -a.attributes[f.options.data_attribute_name],c=a.hasClass(f.options.problem_grammar_class)&&a.attributes[f.options.problem_grammar_data_attribute];f&&(b||c)&&delete a.name;return a}}});c&&c.addRules({elements:{span:function(a){var b=a.hasClass(f.options.misspelled_word_class)&&a.attributes[f.options.data_attribute_name],c=a.hasClass(f.options.problem_grammar_class)&&a.attributes[f.options.problem_grammar_data_attribute];f&&(b||c)&&delete a.name;return a}}});l&&l.call(a,d)},scaytMenuDefinition:function(a){var f= -this;a=a.scayt;return{scayt:{scayt_ignore:{label:a.getLocal("btn_ignore"),group:"scayt_control",order:1,exec:function(a){a.scayt.ignoreWord()}},scayt_ignoreall:{label:a.getLocal("btn_ignoreAll"),group:"scayt_control",order:2,exec:function(a){a.scayt.ignoreAllWords()}},scayt_add:{label:a.getLocal("btn_addWord"),group:"scayt_control",order:3,exec:function(a){var c=a.scayt;setTimeout(function(){c.addWordToUserDictionary()},10)}},scayt_option:{label:a.getLocal("btn_options"),group:"scayt_control",order:4, -exec:function(a){a.scayt.tabToOpen="options";a.lockSelection();a.openDialog(f.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[0]?!0:!1}},scayt_language:{label:a.getLocal("btn_langs"),group:"scayt_control",order:5,exec:function(a){a.scayt.tabToOpen="langs";a.lockSelection();a.openDialog(f.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[1]?!0:!1}},scayt_dictionary:{label:a.getLocal("btn_dictionaries"),group:"scayt_control",order:6,exec:function(a){a.scayt.tabToOpen= -"dictionaries";a.lockSelection();a.openDialog(f.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[2]?!0:!1}},scayt_about:{label:a.getLocal("btn_about"),group:"scayt_control",order:7,exec:function(a){a.scayt.tabToOpen="about";a.lockSelection();a.openDialog(f.dialogName)}}},grayt:{grayt_problemdescription:{label:"Grammar problem description",group:"grayt_description",order:1,state:CKEDITOR.TRISTATE_DISABLED,exec:function(a){}},grayt_ignore:{label:a.getLocal("btn_ignore"),group:"grayt_control", -order:2,exec:function(a){a.scayt.ignorePhrase()}},grayt_ignoreall:{label:a.getLocal("btn_ignoreAll"),group:"grayt_control",order:3,exec:function(a){a.scayt.ignoreAllPhrases()}}}}},buildSuggestionMenuItems:function(a,f,b){var c={},e={},l=b?"word":"phrase",k=b?"startGrammarCheck":"startSpellCheck",d=a.scayt;if(0<f.length&&"no_any_suggestions"!==f[0])if(b)for(b=0;b<f.length;b++){var h="scayt_suggest_"+CKEDITOR.plugins.scayt.suggestions[b].replace(" ","_");a.addCommand(h,this.createCommand(CKEDITOR.plugins.scayt.suggestions[b], -l,k));b<a.config.scayt_maxSuggestions?(a.addMenuItem(h,{label:f[b],command:h,group:"scayt_suggest",order:b+1}),c[h]=CKEDITOR.TRISTATE_OFF):(a.addMenuItem(h,{label:f[b],command:h,group:"scayt_moresuggest",order:b+1}),e[h]=CKEDITOR.TRISTATE_OFF,"on"===a.config.scayt_moreSuggestions&&(a.addMenuItem("scayt_moresuggest",{label:d.getLocal("btn_moreSuggestions"),group:"scayt_moresuggest",order:10,getItems:function(){return e}}),c.scayt_moresuggest=CKEDITOR.TRISTATE_OFF))}else for(b=0;b<f.length;b++)h="grayt_suggest_"+ -CKEDITOR.plugins.scayt.suggestions[b].replace(" ","_"),a.addCommand(h,this.createCommand(CKEDITOR.plugins.scayt.suggestions[b],l,k)),a.addMenuItem(h,{label:f[b],command:h,group:"grayt_suggest",order:b+1}),c[h]=CKEDITOR.TRISTATE_OFF;else c.no_scayt_suggest=CKEDITOR.TRISTATE_DISABLED,a.addCommand("no_scayt_suggest",{exec:function(){}}),a.addMenuItem("no_scayt_suggest",{label:d.getLocal("btn_noSuggestions")||"no_scayt_suggest",command:"no_scayt_suggest",group:"scayt_suggest",order:0});return c},menuGenerator:function(a, -f){var b=a.scayt,c=this.scaytMenuDefinition(a),e={},l=a.config.scayt_contextCommands.split("|"),k=f.getAttribute(b.getLangAttribute())||b.getLang(),d,h,m;d=b.isScaytNode(f);h=b.isGraytNode(f);d?(c=c.scayt,e=f.getAttribute(b.getScaytNodeAttributeName()),b.fire("getSuggestionsList",{lang:k,word:e}),e=this.buildSuggestionMenuItems(a,CKEDITOR.plugins.scayt.suggestions,d)):h&&(c=c.grayt,e=f.getAttribute(b.getGraytNodeAttributeName()),m=b.getProblemDescriptionText(e,k),c.grayt_problemdescription&&m&&(c.grayt_problemdescription.label= -m),b.fire("getGrammarSuggestionsList",{lang:k,phrase:e}),e=this.buildSuggestionMenuItems(a,CKEDITOR.plugins.scayt.suggestions,d));if(d&&"off"==a.config.scayt_contextCommands)return e;for(var g in c)d&&-1==CKEDITOR.tools.indexOf(l,g.replace("scayt_",""))&&"all"!=a.config.scayt_contextCommands||h&&"grayt_problemdescription"!==g&&-1==CKEDITOR.tools.indexOf(l,g.replace("grayt_",""))&&"all"!=a.config.scayt_contextCommands||(e[g]="undefined"!=typeof c[g].state?c[g].state:CKEDITOR.TRISTATE_OFF,"function"!== -typeof c[g].verification||c[g].verification(a)||delete e[g],a.addCommand(g,{exec:c[g].exec}),a.addMenuItem(g,{label:a.lang.scayt[c[g].label]||c[g].label,command:g,group:c[g].group,order:c[g].order}));return e},createCommand:function(a,f,b){return{exec:function(c){c=c.scayt;var e={};e[f]=a;c.replaceSelectionNode(e);"startGrammarCheck"===b&&c.removeMarkupInSelectionNode({grammarOnly:!0});c.fire(b)}}}}),CKEDITOR.plugins.scayt={charsToObserve:[{charName:"cke-fillingChar",charCode:function(){var a=CKEDITOR.version.match(/^\d(\.\d*)*/), -a=a&&a[0],f;if(a){f="4.5.7";var b,a=a.replace(/\./g,"");f=f.replace(/\./g,"");b=a.length-f.length;b=0<=b?b:0;f=parseInt(a)>=parseInt(f)*Math.pow(10,b)}return f?Array(7).join(String.fromCharCode(8203)):String.fromCharCode(8203)}()}],onLoadTimestamp:"",state:{scayt:{},grayt:{}},warningCounter:0,suggestions:[],options:{disablingCommandExec:{source:!0,newpage:!0,templates:!0},data_attribute_name:"data-scayt-word",misspelled_word_class:"scayt-misspell-word",problem_grammar_data_attribute:"data-grayt-phrase", -problem_grammar_class:"gramm-problem"},backCompatibilityMap:{scayt_service_protocol:"scayt_serviceProtocol",scayt_service_host:"scayt_serviceHost",scayt_service_port:"scayt_servicePort",scayt_service_path:"scayt_servicePath",scayt_customerid:"scayt_customerId"},alarmCompatibilityMessage:function(){5>this.warningCounter&&(console.warn("You are using the latest version of SCAYT plugin for CKEditor with the old application version. In order to have access to the newest features, it is recommended to upgrade the application version to latest one as well. Contact us for more details at support@webspellchecker.net."), -this.warningCounter+=1)},isNewUdSupported:function(a){return a.getUserDictionary?!0:!1},reloadMarkup:function(a){var f;a&&(f=a.getScaytLangList(),a.reloadMarkup?a.reloadMarkup():(this.alarmCompatibilityMessage(),f&&f.ltr&&f.rtl&&a.fire("startSpellCheck, startGrammarCheck")))},replaceOldOptionsNames:function(a){for(var f in a)f in this.backCompatibilityMap&&(a[this.backCompatibilityMap[f]]=a[f],delete a[f])},createScayt:function(a){var f=this,b=CKEDITOR.plugins.scayt;this.loadScaytLibrary(a,function(a){function e(a){return new SCAYT.CKSCAYT(a, -function(){},function(){})}var l=a.window&&a.window.getFrame()||a.editable();if(l){l={lang:a.config.scayt_sLang,container:l.$,customDictionary:a.config.scayt_customDictionaryIds,userDictionaryName:a.config.scayt_userDictionaryName,localization:a.langCode,customer_id:a.config.scayt_customerId,customPunctuation:a.config.scayt_customPunctuation,debug:a.config.scayt_debug,data_attribute_name:f.options.data_attribute_name,misspelled_word_class:f.options.misspelled_word_class,problem_grammar_data_attribute:f.options.problem_grammar_data_attribute, -problem_grammar_class:f.options.problem_grammar_class,"options-to-restore":a.config.scayt_disableOptionsStorage,focused:a.editable().hasFocus,ignoreElementsRegex:a.config.scayt_elementsToIgnore,ignoreGraytElementsRegex:a.config.grayt_elementsToIgnore,minWordLength:a.config.scayt_minWordLength,multiLanguageMode:a.config.scayt_multiLanguageMode,multiLanguageStyles:a.config.scayt_multiLanguageStyles,graytAutoStartup:a.config.grayt_autoStartup,charsToObserve:b.charsToObserve};a.config.scayt_serviceProtocol&& -(l.service_protocol=a.config.scayt_serviceProtocol);a.config.scayt_serviceHost&&(l.service_host=a.config.scayt_serviceHost);a.config.scayt_servicePort&&(l.service_port=a.config.scayt_servicePort);a.config.scayt_servicePath&&(l.service_path=a.config.scayt_servicePath);"boolean"===typeof a.config.scayt_ignoreAllCapsWords&&(l["ignore-all-caps-words"]=a.config.scayt_ignoreAllCapsWords);"boolean"===typeof a.config.scayt_ignoreDomainNames&&(l["ignore-domain-names"]=a.config.scayt_ignoreDomainNames);"boolean"=== -typeof a.config.scayt_ignoreWordsWithMixedCases&&(l["ignore-words-with-mixed-cases"]=a.config.scayt_ignoreWordsWithMixedCases);"boolean"===typeof a.config.scayt_ignoreWordsWithNumbers&&(l["ignore-words-with-numbers"]=a.config.scayt_ignoreWordsWithNumbers);var k;try{k=e(l)}catch(d){f.alarmCompatibilityMessage(),delete l.charsToObserve,k=e(l)}k.subscribe("suggestionListSend",function(a){for(var b={},c=[],d=0;d<a.suggestionList.length;d++)b["word_"+a.suggestionList[d]]||(b["word_"+a.suggestionList[d]]= -a.suggestionList[d],c.push(a.suggestionList[d]));CKEDITOR.plugins.scayt.suggestions=c});k.subscribe("selectionIsChanged",function(b){a.getSelection().isLocked&&a.lockSelection()});k.subscribe("graytStateChanged",function(d){b.state.grayt[a.name]=d.state});k.addMarkupHandler&&k.addMarkupHandler(function(b){var d=a.editable(),e=d.getCustomData(b.charName);e&&(e.$=b.node,d.setCustomData(b.charName,e))});a.scayt=k;a.fire("scaytButtonState",a.readOnly?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_ON)}else b.state.scayt[a.name]= -!1})},destroy:function(a){a.scayt&&a.scayt.destroy();delete a.scayt;a.fire("scaytButtonState",CKEDITOR.TRISTATE_OFF)},loadScaytLibrary:function(a,f){var b,c=function(){CKEDITOR.fireOnce("scaytReady");a.scayt||"function"===typeof f&&f(a)};"undefined"===typeof window.SCAYT||"function"!==typeof window.SCAYT.CKSCAYT?(b=a.config.scayt_srcUrl+"?"+this.onLoadTimestamp,CKEDITOR.scriptLoader.load(b,function(a){a&&c()})):window.SCAYT&&"function"===typeof window.SCAYT.CKSCAYT&&c()}},CKEDITOR.on("dialogDefinition", -function(a){var f=a.data.name;a=a.data.definition.dialog;if("scaytDialog"===f)a.on("cancel",function(a){return!1},this,null,-1);if("checkspell"===f)a.on("cancel",function(a){a=a.sender&&a.sender.getParentEditor();var c=CKEDITOR.plugins.scayt,e=a.scayt;e&&c.state.scayt[a.name]&&e.setMarkupPaused&&e.setMarkupPaused(!1);a.unlockSelection()},this,null,-2);if("link"===f)a.on("ok",function(a){var c=a.sender&&a.sender.getParentEditor();c&&setTimeout(function(){c.fire("reloadMarkupScayt",{removeOptions:{removeInside:!0, -forceBookmark:!0},timeout:0})},0)});if("replace"===f)a.on("hide",function(a){a=a.sender&&a.sender.getParentEditor();var c=CKEDITOR.plugins.scayt,e=a.scayt;a&&setTimeout(function(){e&&(e.fire("removeMarkupInDocument",{}),c.reloadMarkup(e))},0)})}),CKEDITOR.on("scaytReady",function(){if(!0===CKEDITOR.config.scayt_handleCheckDirty){var a=CKEDITOR.editor.prototype;a.checkDirty=CKEDITOR.tools.override(a.checkDirty,function(a){return function(){var c=null,e=this.scayt;if(CKEDITOR.plugins.scayt&&CKEDITOR.plugins.scayt.state.scayt[this.name]&& -this.scayt){if(c="ready"==this.status)var f=e.removeMarkupFromString(this.getSnapshot()),e=e.removeMarkupFromString(this._.previousValue),c=c&&e!==f}else c=a.call(this);return c}});a.resetDirty=CKEDITOR.tools.override(a.resetDirty,function(a){return function(){var c=this.scayt;CKEDITOR.plugins.scayt&&CKEDITOR.plugins.scayt.state.scayt[this.name]&&this.scayt?this._.previousValue=c.removeMarkupFromString(this.getSnapshot()):a.call(this)}})}if(!0===CKEDITOR.config.scayt_handleUndoRedo){var a=CKEDITOR.plugins.undo.Image.prototype, -f="function"==typeof a.equalsContent?"equalsContent":"equals";a[f]=CKEDITOR.tools.override(a[f],function(a){return function(c){var e=c.editor.scayt,f=this.contents,k=c.contents,d=null;CKEDITOR.plugins.scayt&&CKEDITOR.plugins.scayt.state.scayt[c.editor.name]&&c.editor.scayt&&(this.contents=e.removeMarkupFromString(f)||"",c.contents=e.removeMarkupFromString(k)||"");d=a.apply(this,arguments);this.contents=f;c.contents=k;return d}})}}),function(){var a={preserveState:!0,editorFocus:!1,readOnly:1,exec:function(a){this.toggleState(); -this.refresh(a)},refresh:function(a){if(a.document){var b=this.state==CKEDITOR.TRISTATE_ON?"attachClass":"removeClass";a.editable()[b]("cke_show_borders")}}};CKEDITOR.plugins.add("showborders",{modes:{wysiwyg:1},onLoad:function(){var a;a=(CKEDITOR.env.ie6Compat?[".%1 table.%2,",".%1 table.%2 td, .%1 table.%2 th","{","border : #d3d3d3 1px dotted","}"]:".%1 table.%2,;.%1 table.%2 \x3e tr \x3e td, .%1 table.%2 \x3e tr \x3e th,;.%1 table.%2 \x3e tbody \x3e tr \x3e td, .%1 table.%2 \x3e tbody \x3e tr \x3e th,;.%1 table.%2 \x3e thead \x3e tr \x3e td, .%1 table.%2 \x3e thead \x3e tr \x3e th,;.%1 table.%2 \x3e tfoot \x3e tr \x3e td, .%1 table.%2 \x3e tfoot \x3e tr \x3e th;{;border : #d3d3d3 1px dotted;}".split(";")).join("").replace(/%2/g, -"cke_show_border").replace(/%1/g,"cke_show_borders ");CKEDITOR.addCss(a)},init:function(f){var b=f.addCommand("showborders",a);b.canUndo=!1;!1!==f.config.startupShowBorders&&b.setState(CKEDITOR.TRISTATE_ON);f.on("mode",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(f)},null,null,100);f.on("contentDom",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(f)});f.on("removeFormatCleanup",function(a){a=a.data;f.getCommand("showborders").state==CKEDITOR.TRISTATE_ON&&a.is("table")&&(!a.hasAttribute("border")|| -0>=parseInt(a.getAttribute("border"),10))&&a.addClass("cke_show_border")})},afterInit:function(a){var b=a.dataProcessor;a=b&&b.dataFilter;b=b&&b.htmlFilter;a&&a.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"],f=parseInt(a.border,10);f&&!(0>=f)||b&&-1!=b.indexOf("cke_show_border")||(a["class"]=(b||"")+" cke_show_border")}}});b&&b.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"];b&&(a["class"]=b.replace("cke_show_border","").replace(/\s{2}/," ").replace(/^\s+|\s+$/, -""))}}})}});CKEDITOR.on("dialogDefinition",function(a){var b=a.data.name;if("table"==b||"tableProperties"==b)if(a=a.data.definition,b=a.getContents("info").get("txtBorder"),b.commit=CKEDITOR.tools.override(b.commit,function(a){return function(b,f){a.apply(this,arguments);var k=parseInt(this.getValue(),10);f[!k||0>=k?"addClass":"removeClass"]("cke_show_border")}}),a=(a=a.getContents("advanced"))&&a.get("advCSSClasses"))a.setup=CKEDITOR.tools.override(a.setup,function(a){return function(){a.apply(this, -arguments);this.setValue(this.getValue().replace(/cke_show_border/,""))}}),a.commit=CKEDITOR.tools.override(a.commit,function(a){return function(b,f){a.apply(this,arguments);parseInt(f.getAttribute("border"),10)||f.addClass("cke_show_border")}})})}(),function(){CKEDITOR.plugins.add("sourcearea",{init:function(f){function b(){var a=e&&this.equals(CKEDITOR.document.getActive());this.hide();this.setStyle("height",this.getParent().$.clientHeight+"px");this.setStyle("width",this.getParent().$.clientWidth+ -"px");this.show();a&&this.focus()}if(f.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var c=CKEDITOR.plugins.sourcearea;f.addMode("source",function(c){var e=f.ui.space("contents").getDocument().createElement("textarea");e.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?"99%":"100%",height:"100%",resize:"none",outline:"none","text-align":"left"},CKEDITOR.tools.cssVendorPrefix("tab-size",f.config.sourceAreaTabSize||4)));e.setAttribute("dir","ltr");e.addClass("cke_source").addClass("cke_reset").addClass("cke_enable_context_menu"); -f.ui.space("contents").append(e);e=f.editable(new a(f,e));e.setData(f.getData(1));CKEDITOR.env.ie&&(e.attachListener(f,"resize",b,e),e.attachListener(CKEDITOR.document.getWindow(),"resize",b,e),CKEDITOR.tools.setTimeout(b,0,e));f.fire("ariaWidget",this);c()});f.addCommand("source",c.commands.source);f.ui.addButton&&f.ui.addButton("Source",{label:f.lang.sourcearea.toolbar,command:"source",toolbar:"mode,10"});f.on("mode",function(){f.getCommand("source").setState("source"==f.mode?CKEDITOR.TRISTATE_ON: -CKEDITOR.TRISTATE_OFF)});var e=CKEDITOR.env.ie&&9==CKEDITOR.env.version}}});var a=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.status="ready";this.editor.fire("dataReady")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?"set":"remove")+"Attribute"]("readOnly","readonly")},detach:function(){a.baseProto.detach.call(this);this.clearCustomData(); -this.remove()}}})}(),CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(a){"wysiwyg"==a.mode&&a.fire("saveSnapshot");a.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);a.setMode("source"==a.mode?"wysiwyg":"source")},canUndo:!1}}},CKEDITOR.plugins.add("specialchar",{availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-au":1,"en-ca":1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fr:1,"fr-ca":1, -gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},requires:"dialog",init:function(a){var f=this;CKEDITOR.dialog.add("specialchar",this.path+"dialogs/specialchar.js");a.addCommand("specialchar",{exec:function(){var b=a.langCode,b=f.availableLangs[b]?b:f.availableLangs[b.replace(/-.*/,"")]?b.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(f.path+"dialogs/lang/"+ -b+".js"),function(){CKEDITOR.tools.extend(a.lang.specialchar,f.langEntries[b]);a.openDialog("specialchar")})},modes:{wysiwyg:1},canUndo:!1});a.ui.addButton&&a.ui.addButton("SpecialChar",{label:a.lang.specialchar.toolbar,command:"specialchar",toolbar:"insert,50"})}}),CKEDITOR.config.specialChars="! \x26quot; # $ % \x26amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; \x26lt; \x3d \x26gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x26euro; \x26lsquo; \x26rsquo; \x26ldquo; \x26rdquo; \x26ndash; \x26mdash; \x26iexcl; \x26cent; \x26pound; \x26curren; \x26yen; \x26brvbar; \x26sect; \x26uml; \x26copy; \x26ordf; \x26laquo; \x26not; \x26reg; \x26macr; \x26deg; \x26sup2; \x26sup3; \x26acute; \x26micro; \x26para; \x26middot; \x26cedil; \x26sup1; \x26ordm; \x26raquo; \x26frac14; \x26frac12; \x26frac34; \x26iquest; \x26Agrave; \x26Aacute; \x26Acirc; \x26Atilde; \x26Auml; \x26Aring; \x26AElig; \x26Ccedil; \x26Egrave; \x26Eacute; \x26Ecirc; \x26Euml; \x26Igrave; \x26Iacute; \x26Icirc; \x26Iuml; \x26ETH; \x26Ntilde; \x26Ograve; \x26Oacute; \x26Ocirc; \x26Otilde; \x26Ouml; \x26times; \x26Oslash; \x26Ugrave; \x26Uacute; \x26Ucirc; \x26Uuml; \x26Yacute; \x26THORN; \x26szlig; \x26agrave; \x26aacute; \x26acirc; \x26atilde; \x26auml; \x26aring; \x26aelig; \x26ccedil; \x26egrave; \x26eacute; \x26ecirc; \x26euml; \x26igrave; \x26iacute; \x26icirc; \x26iuml; \x26eth; \x26ntilde; \x26ograve; \x26oacute; \x26ocirc; \x26otilde; \x26ouml; \x26divide; \x26oslash; \x26ugrave; \x26uacute; \x26ucirc; \x26uuml; \x26yacute; \x26thorn; \x26yuml; \x26OElig; \x26oelig; \x26#372; \x26#374 \x26#373 \x26#375; \x26sbquo; \x26#8219; \x26bdquo; \x26hellip; \x26trade; \x26#9658; \x26bull; \x26rarr; \x26rArr; \x26hArr; \x26diams; \x26asymp;".split(" "), -function(){CKEDITOR.plugins.add("stylescombo",{requires:"richcombo",init:function(a){var f=a.config,b=a.lang.stylescombo,c={},e=[],l=[];a.on("stylesSet",function(b){if(b=b.data.styles){for(var d,h,m,g=0,n=b.length;g<n;g++)(d=b[g],a.blockless&&d.element in CKEDITOR.dtd.$block||"string"==typeof d.type&&!CKEDITOR.style.customHandlers[d.type]||(h=d.name,d=new CKEDITOR.style(d),a.filter.customConfig&&!a.filter.check(d)))||(d._name=h,d._.enterMode=f.enterMode,d._.type=m=d.assignedTo||d.type,d._.weight= -g+1E3*(m==CKEDITOR.STYLE_OBJECT?1:m==CKEDITOR.STYLE_BLOCK?2:3),c[h]=d,e.push(d),l.push(d));e.sort(function(a,b){return a._.weight-b._.weight})}});a.ui.addRichCombo("Styles",{label:b.label,title:b.panelTitle,toolbar:"styles,10",allowedContent:l,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss),multiSelect:!0,attributes:{"aria-label":b.panelTitle}},init:function(){var a,c,f,l,g,n;g=0;for(n=e.length;g<n;g++)a=e[g],c=a._name,l=a._.type,l!=f&&(this.startGroup(b["panelTitle"+String(l)]), -f=l),this.add(c,a.type==CKEDITOR.STYLE_OBJECT?c:a.buildPreview(),c);this.commit()},onClick:function(b){a.focus();a.fire("saveSnapshot");b=c[b];var d=a.elementPath();if(b.group&&b.removeStylesFromSameGroup(a))a.applyStyle(b);else a[b.checkActive(d,a)?"removeStyle":"applyStyle"](b);a.fire("saveSnapshot")},onRender:function(){a.on("selectionChange",function(b){var d=this.getValue();b=b.data.path.elements;for(var e=0,f=b.length,g;e<f;e++){g=b[e];for(var l in c)if(c[l].checkElementRemovable(g,!0,a)){l!= -d&&this.setValue(l);return}}this.setValue("")},this)},onOpen:function(){var e=a.getSelection().getSelectedElement()||a.editable(),e=a.elementPath(e),d=[0,0,0,0];this.showAll();this.unmarkAll();for(var f in c){var l=c[f],g=l._.type;l.checkApplicable(e,a,a.activeFilter)?d[g]++:this.hideItem(f);l.checkActive(e,a)&&this.mark(f)}d[CKEDITOR.STYLE_BLOCK]||this.hideGroup(b["panelTitle"+String(CKEDITOR.STYLE_BLOCK)]);d[CKEDITOR.STYLE_INLINE]||this.hideGroup(b["panelTitle"+String(CKEDITOR.STYLE_INLINE)]);d[CKEDITOR.STYLE_OBJECT]|| -this.hideGroup(b["panelTitle"+String(CKEDITOR.STYLE_OBJECT)])},refresh:function(){var b=a.elementPath();if(b){for(var d in c)if(c[d].checkApplicable(b,a,a.activeFilter))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}},reset:function(){c={};e=[]}})}})}(),function(){function a(a){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(b){if(b.editable().hasFocus){var c=b.getSelection(),d;if(d=(new CKEDITOR.dom.elementPath(c.getCommonAncestor(),c.root)).contains({td:1,th:1},1)){var c=b.createRange(), -f=CKEDITOR.tools.tryThese(function(){var b=d.getParent().$.cells[d.$.cellIndex+(a?-1:1)];b.parentNode.parentNode;return b},function(){var b=d.getParent(),b=b.getAscendant("table").$.rows[b.$.rowIndex+(a?-1:1)];return b.cells[a?b.cells.length-1:0]});if(f||a)if(f)f=new CKEDITOR.dom.element(f),c.moveToElementEditStart(f),c.checkStartOfBlock()&&c.checkEndOfBlock()||c.selectNodeContents(f);else return!0;else{for(var m=d.getAscendant("table").$,f=d.getParent().$.cells,m=new CKEDITOR.dom.element(m.insertRow(-1), -b.document),g=0,n=f.length;g<n;g++)m.append((new CKEDITOR.dom.element(f[g],b.document)).clone(!1,!1)).appendBogus();c.moveToElementEditStart(m)}c.select(!0);return!0}}return!1}}}var f={editorFocus:!1,modes:{wysiwyg:1,source:1}},b={exec:function(a){a.container.focusNext(!0,a.tabIndex)}},c={exec:function(a){a.container.focusPrevious(!0,a.tabIndex)}};CKEDITOR.plugins.add("tab",{init:function(e){for(var l=!1!==e.config.enableTabKeyTools,k=e.config.tabSpaces||0,d="";k--;)d+=" ";if(d)e.on("key",function(a){9== -a.data.keyCode&&(e.insertText(d),a.cancel())});if(l)e.on("key",function(a){(9==a.data.keyCode&&e.execCommand("selectNextCell")||a.data.keyCode==CKEDITOR.SHIFT+9&&e.execCommand("selectPreviousCell"))&&a.cancel()});e.addCommand("blur",CKEDITOR.tools.extend(b,f));e.addCommand("blurBack",CKEDITOR.tools.extend(c,f));e.addCommand("selectNextCell",a());e.addCommand("selectPreviousCell",a(!0))}})}(),CKEDITOR.dom.element.prototype.focusNext=function(a,f){var b=void 0===f?this.getTabIndex():f,c,e,l,k,d,h;if(0>= -b)for(d=this.getNextSourceNode(a,CKEDITOR.NODE_ELEMENT);d;){if(d.isVisible()&&0===d.getTabIndex()){l=d;break}d=d.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(d=this.getDocument().getBody().getFirst();d=d.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!c)if(!e&&d.equals(this)){if(e=!0,a){if(!(d=d.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;c=1}}else e&&!this.contains(d)&&(c=1);if(d.isVisible()&&!(0>(h=d.getTabIndex()))){if(c&&h==b){l=d;break}h>b&&(!l||!k||h<k)?(l=d,k=h):l||0!==h|| -(l=d,k=h)}}l&&l.focus()},CKEDITOR.dom.element.prototype.focusPrevious=function(a,f){for(var b=void 0===f?this.getTabIndex():f,c,e,l,k=0,d,h=this.getDocument().getBody().getLast();h=h.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!c)if(!e&&h.equals(this)){if(e=!0,a){if(!(h=h.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;c=1}}else e&&!this.contains(h)&&(c=1);if(h.isVisible()&&!(0>(d=h.getTabIndex())))if(0>=b){if(c&&0===d){l=h;break}d>k&&(l=h,k=d)}else{if(c&&d==b){l=h;break}d<b&&(!l|| -d>k)&&(l=h,k=d)}}l&&l.focus()},CKEDITOR.plugins.add("table",{requires:"dialog",init:function(a){function f(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains("table",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var b=a.lang.table;a.addCommand("table",new CKEDITOR.dialogCommand("table",{context:"table",allowedContent:"table{width,height}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];"+ -(a.plugins.dialogadvtab?"table"+a.plugins.dialogadvtab.allowedContent():""),requiredContent:"table",contentTransformations:[["table{width}: sizeToStyle","table[width]: sizeToAttribute"],["td: splitBorderShorthand"],[{element:"table",right:function(a){a.styles&&(a.styles.border&&a.styles.border.match(/solid/)&&(a.attributes.border=1),"collapse"==a.styles["border-collapse"]&&(a.attributes.cellspacing=0))}}]]}));a.addCommand("tableProperties",new CKEDITOR.dialogCommand("tableProperties",f()));a.addCommand("tableDelete", -f({exec:function(a){var b=a.elementPath().contains("table",1);if(b){var f=b.getParent(),k=a.editable();1!=f.getChildCount()||f.is("td","th")||f.equals(k)||(b=f);a=a.createRange();a.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);b.remove();a.select()}}}));a.ui.addButton&&a.ui.addButton("Table",{label:b.toolbar,command:"table",toolbar:"insert,30"});CKEDITOR.dialog.add("table",this.path+"dialogs/table.js");CKEDITOR.dialog.add("tableProperties",this.path+"dialogs/table.js");a.addMenuItems&&a.addMenuItems({table:{label:b.menu, -command:"tableProperties",group:"table",order:5},tabledelete:{label:b.deleteTable,command:"tableDelete",group:"table",order:1}});a.on("doubleclick",function(a){a.data.element.is("table")&&(a.data.dialog="tableProperties")});a.contextMenu&&a.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}}),function(){function a(a,b){function c(a){return b?b.contains(a)&&a.getAscendant("table",!0).equals(b):!0}function d(a){0<e.length||a.type!=CKEDITOR.NODE_ELEMENT|| -!q.test(a.getName())||a.getCustomData("selected_cell")||(CKEDITOR.dom.element.setMarker(f,a,"selected_cell",!0),e.push(a))}var e=[],f={};if(!a)return e;for(var g=a.getRanges(),h=0;h<g.length;h++){var k=g[h];if(k.collapsed)(k=k.getCommonAncestor().getAscendant({td:1,th:1},!0))&&c(k)&&e.push(k);else{var k=new CKEDITOR.dom.walker(k),l;for(k.guard=d;l=k.next();)l.type==CKEDITOR.NODE_ELEMENT&&l.is(CKEDITOR.dtd.table)||(l=l.getAscendant({td:1,th:1},!0))&&!l.getCustomData("selected_cell")&&c(l)&&(CKEDITOR.dom.element.setMarker(f, -l,"selected_cell",!0),e.push(l))}}CKEDITOR.dom.element.clearAllMarkers(f);return e}function f(b,c){for(var d=y(b)?b:a(b),e=d[0],f=e.getAscendant("table"),e=e.getDocument(),g=d[0].getParent(),h=g.$.rowIndex,d=d[d.length-1],k=d.getParent().$.rowIndex+d.$.rowSpan-1,d=new CKEDITOR.dom.element(f.$.rows[k]),h=c?h:k,g=c?g:d,d=CKEDITOR.tools.buildTableMap(f),f=d[h],h=c?d[h-1]:d[h+1],d=d[0].length,e=e.createElement("tr"),k=0;f[k]&&k<d;k++){var l;1<f[k].rowSpan&&h&&f[k]==h[k]?(l=f[k],l.rowSpan+=1):(l=(new CKEDITOR.dom.element(f[k])).clone(), -l.removeAttribute("rowSpan"),l.appendBogus(),e.append(l),l=l.$);k+=l.colSpan-1}c?e.insertBefore(g):e.insertAfter(g);return e}function b(c){if(c instanceof CKEDITOR.dom.selection){var d=c.getRanges(),e=a(c),f=e[0].getAscendant("table"),g=CKEDITOR.tools.buildTableMap(f),h=e[0].getParent().$.rowIndex,e=e[e.length-1],k=e.getParent().$.rowIndex+e.$.rowSpan-1,e=[];c.reset();for(c=h;c<=k;c++){for(var l=g[c],m=new CKEDITOR.dom.element(f.$.rows[c]),n=0;n<l.length;n++){var r=new CKEDITOR.dom.element(l[n]), -q=r.getParent().$.rowIndex;1==r.$.rowSpan?r.remove():(--r.$.rowSpan,q==c&&(q=g[c+1],q[n-1]?r.insertAfter(new CKEDITOR.dom.element(q[n-1])):(new CKEDITOR.dom.element(f.$.rows[c+1])).append(r,1)));n+=r.$.colSpan-1}e.push(m)}g=f.$.rows;d[0].moveToPosition(f,CKEDITOR.POSITION_BEFORE_START);h=new CKEDITOR.dom.element(g[k+1]||(0<h?g[h-1]:null)||f.$.parentNode);for(c=e.length;0<=c;c--)b(e[c]);return f.$.parentNode?h:(d[0].select(),null)}c instanceof CKEDITOR.dom.element&&(f=c.getAscendant("table"),1==f.$.rows.length? -f.remove():c.remove());return null}function c(a,b){for(var c=a.getParent().$.cells,d=0,e=0;e<c.length;e++){var f=c[e],d=d+(b?1:f.colSpan);if(f==a.$)break}return d-1}function e(a,b){for(var d=b?Infinity:0,e=0;e<a.length;e++){var f=c(a[e],b);if(b?f<d:f>d)d=f}return d}function l(b,c){for(var d=y(b)?b:a(b),f=d[0].getAscendant("table"),g=e(d,1),d=e(d),h=c?g:d,k=CKEDITOR.tools.buildTableMap(f),f=[],g=[],d=[],l=k.length,m=0;m<l;m++)f.push(k[m][h]),g.push(c?k[m][h-1]:k[m][h+1]);for(m=0;m<l;m++)f[m]&&(1<f[m].colSpan&& -g[m]==f[m]?(k=f[m],k.colSpan+=1):(h=new CKEDITOR.dom.element(f[m]),k=h.clone(),k.removeAttribute("colSpan"),k.appendBogus(),k[c?"insertBefore":"insertAfter"].call(k,h),d.push(k),k=k.$),m+=k.rowSpan-1);return d}function k(a,b){var c=a.getStartElement().getAscendant({td:1,th:1},!0);if(c){var d=c.clone();d.appendBogus();b?d.insertBefore(c):d.insertAfter(c)}}function d(b){if(b instanceof CKEDITOR.dom.selection){var c=b.getRanges(),e=a(b),f=e[0]&&e[0].getAscendant("table"),g;a:{var k=0;g=e.length-1;for(var l= -{},m,n;m=e[k++];)CKEDITOR.dom.element.setMarker(l,m,"delete_cell",!0);for(k=0;m=e[k++];)if((n=m.getPrevious())&&!n.getCustomData("delete_cell")||(n=m.getNext())&&!n.getCustomData("delete_cell")){CKEDITOR.dom.element.clearAllMarkers(l);g=n;break a}CKEDITOR.dom.element.clearAllMarkers(l);k=e[0].getParent();(k=k.getPrevious())?g=k.getLast():(k=e[g].getParent(),g=(k=k.getNext())?k.getChild(0):null)}b.reset();for(b=e.length-1;0<=b;b--)d(e[b]);g?h(g,!0):f&&(c[0].moveToPosition(f,CKEDITOR.POSITION_BEFORE_START), -c[0].select(),f.remove())}else b instanceof CKEDITOR.dom.element&&(c=b.getParent(),1==c.getChildCount()?c.remove():b.remove())}function h(a,b){var c=a.getDocument(),d=CKEDITOR.document;CKEDITOR.env.ie&&10==CKEDITOR.env.version&&(d.focus(),c.focus());c=new CKEDITOR.dom.range(c);c["moveToElementEdit"+(b?"End":"Start")](a)||(c.selectNodeContents(a),c.collapse(b?!1:!0));c.select(!0)}function m(a,b,c){a=a[b];if("undefined"==typeof c)return a;for(b=0;a&&b<a.length;b++){if(c.is&&a[b]==c.$)return b;if(b== -c)return new CKEDITOR.dom.element(a[b])}return c.is?-1:null}function g(b,c,d){var e=a(b),f;if((c?1!=e.length:2>e.length)||(f=b.getCommonAncestor())&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("table"))return!1;var g;b=e[0];f=b.getAscendant("table");var h=CKEDITOR.tools.buildTableMap(f),k=h.length,l=h[0].length,n=b.getParent().$.rowIndex,r=m(h,n,b);if(c){var q;try{var y=parseInt(b.getAttribute("rowspan"),10)||1;g=parseInt(b.getAttribute("colspan"),10)||1;q=h["up"==c?n-y:"down"==c?n+y:n]["left"==c?r-g:"right"== -c?r+g:r]}catch(I){return!1}if(!q||b.$==q)return!1;e["up"==c||"left"==c?"unshift":"push"](new CKEDITOR.dom.element(q))}c=b.getDocument();var G=n,y=q=0,L=!d&&new CKEDITOR.dom.documentFragment(c),J=0;for(c=0;c<e.length;c++){g=e[c];var C=g.getParent(),T=g.getFirst(),K=g.$.colSpan,R=g.$.rowSpan,C=C.$.rowIndex,N=m(h,C,g),J=J+K*R,y=Math.max(y,N-r+K);q=Math.max(q,C-n+R);d||(K=g,(R=K.getBogus())&&R.remove(),K.trim(),g.getChildren().count()&&(C==G||!T||T.isBlockBoundary&&T.isBlockBoundary({br:1})||(G=L.getLast(CKEDITOR.dom.walker.whitespaces(!0)), -!G||G.is&&G.is("br")||L.append("br")),g.moveChildren(L)),c?g.remove():g.setHtml(""));G=C}if(d)return q*y==J;L.moveChildren(b);b.appendBogus();y>=l?b.removeAttribute("rowSpan"):b.$.rowSpan=q;q>=k?b.removeAttribute("colSpan"):b.$.colSpan=y;d=new CKEDITOR.dom.nodeList(f.$.rows);e=d.count();for(c=e-1;0<=c;c--)f=d.getItem(c),f.$.cells.length||(f.remove(),e++);return b}function n(b,c){var d=a(b);if(1<d.length)return!1;if(c)return!0;var d=d[0],e=d.getParent(),f=e.getAscendant("table"),g=CKEDITOR.tools.buildTableMap(f), -h=e.$.rowIndex,k=m(g,h,d),l=d.$.rowSpan,n;if(1<l){n=Math.ceil(l/2);for(var l=Math.floor(l/2),e=h+n,f=new CKEDITOR.dom.element(f.$.rows[e]),g=m(g,e),r,e=d.clone(),h=0;h<g.length;h++)if(r=g[h],r.parentNode==f.$&&h>k){e.insertBefore(new CKEDITOR.dom.element(r));break}else r=null;r||f.append(e)}else for(l=n=1,f=e.clone(),f.insertAfter(e),f.append(e=d.clone()),r=m(g,h),k=0;k<r.length;k++)r[k].rowSpan++;e.appendBogus();d.$.rowSpan=n;e.$.rowSpan=l;1==n&&d.removeAttribute("rowSpan");1==l&&e.removeAttribute("rowSpan"); -return e}function r(b,c){var d=a(b);if(1<d.length)return!1;if(c)return!0;var d=d[0],e=d.getParent(),f=e.getAscendant("table"),f=CKEDITOR.tools.buildTableMap(f),g=m(f,e.$.rowIndex,d),h=d.$.colSpan;if(1<h)e=Math.ceil(h/2),h=Math.floor(h/2);else{for(var h=e=1,k=[],l=0;l<f.length;l++){var n=f[l];k.push(n[g]);1<n[g].rowSpan&&(l+=n[g].rowSpan-1)}for(f=0;f<k.length;f++)k[f].colSpan++}f=d.clone();f.insertAfter(d);f.appendBogus();d.$.colSpan=e;f.$.colSpan=h;1==e&&d.removeAttribute("colSpan");1==h&&f.removeAttribute("colSpan"); -return f}var q=/^(?:td|th)$/,y=CKEDITOR.tools.isArray;CKEDITOR.plugins.tabletools={requires:"table,dialog,contextmenu",init:function(c){function e(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}function m(a,b){var d=c.addCommand(a,b);c.addFeature(d)}var q=c.lang.table,y=CKEDITOR.tools.style.parse;m("cellProperties",new CKEDITOR.dialogCommand("cellProperties",e({allowedContent:"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]", -requiredContent:"table",contentTransformations:[[{element:"td",left:function(a){return a.styles.background&&y.background(a.styles.background).color},right:function(a){a.styles["background-color"]=y.background(a.styles.background).color}},{element:"td",check:"td{vertical-align}",left:function(a){return a.attributes&&a.attributes.valign},right:function(a){a.styles["vertical-align"]=a.attributes.valign;delete a.attributes.valign}}],[{element:"tr",check:"td{height}",left:function(a){return a.styles&& -a.styles.height},right:function(a){CKEDITOR.tools.array.forEach(a.children,function(b){b.name in{td:1,th:1}&&(b.attributes["cke-row-height"]=a.styles.height)});delete a.styles.height}}],[{element:"td",check:"td{height}",left:function(a){return(a=a.attributes)&&a["cke-row-height"]},right:function(a){a.styles.height=a.attributes["cke-row-height"];delete a.attributes["cke-row-height"]}}]]})));CKEDITOR.dialog.add("cellProperties",this.path+"dialogs/tableCell.js");m("rowDelete",e({requiredContent:"table", -exec:function(a){a=a.getSelection();(a=b(a))&&h(a)}}));m("rowInsertBefore",e({requiredContent:"table",exec:function(b){b=b.getSelection();b=a(b);f(b,!0)}}));m("rowInsertAfter",e({requiredContent:"table",exec:function(b){b=b.getSelection();b=a(b);f(b)}}));m("columnDelete",e({requiredContent:"table",exec:function(b){var c=b.getSelection();b=c.getRanges();var d=a(c),e=d[0],f=d[d.length-1],d=e.getAscendant("table"),g=CKEDITOR.tools.buildTableMap(d),k,l,m=[];c.reset();for(var n=0,c=g.length;n<c;n++)for(var p= -0,r=g[n].length;p<r;p++)g[n][p]==e.$&&(k=p),g[n][p]==f.$&&(l=p);for(n=k;n<=l;n++)for(p=0;p<g.length;p++)f=g[p],e=new CKEDITOR.dom.element(d.$.rows[p]),f=new CKEDITOR.dom.element(f[n]),f.$&&(1==f.$.colSpan?f.remove():--f.$.colSpan,p+=f.$.rowSpan-1,e.$.cells.length||m.push(e));l=d.$.rows[0]&&d.$.rows[0].cells;k=new CKEDITOR.dom.element(l[k]||(k?l[k-1]:d.$.parentNode));m.length==c&&(b[0].moveToPosition(d,CKEDITOR.POSITION_AFTER_END),b[0].select(),d.remove());k&&h(k,!0)}}));m("columnInsertBefore",e({requiredContent:"table", -exec:function(b){b=b.getSelection();b=a(b);l(b,!0)}}));m("columnInsertAfter",e({requiredContent:"table",exec:function(b){b=b.getSelection();b=a(b);l(b)}}));m("cellDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();d(a)}}));m("cellMerge",e({allowedContent:"td[colspan,rowspan]",requiredContent:"td[colspan,rowspan]",exec:function(a,b){b.cell=g(a.getSelection());h(b.cell,!0)}}));m("cellMergeRight",e({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a,b){b.cell= -g(a.getSelection(),"right");h(b.cell,!0)}}));m("cellMergeDown",e({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a,b){b.cell=g(a.getSelection(),"down");h(b.cell,!0)}}));m("cellVerticalSplit",e({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a){h(r(a.getSelection()))}}));m("cellHorizontalSplit",e({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){h(n(a.getSelection()))}}));m("cellInsertBefore",e({requiredContent:"table", -exec:function(a){a=a.getSelection();k(a,!0)}}));m("cellInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();k(a)}}));c.addMenuItems&&c.addMenuItems({tablecell:{label:q.cell.menu,group:"tablecell",order:1,getItems:function(){var b=c.getSelection(),d=a(b);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:g(b,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:g(b, -"right",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:g(b,"down",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:r(b,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:n(b,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<d.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:q.cell.insertBefore,group:"tablecell",command:"cellInsertBefore",order:5},tablecell_insertAfter:{label:q.cell.insertAfter, -group:"tablecell",command:"cellInsertAfter",order:10},tablecell_delete:{label:q.cell.deleteCell,group:"tablecell",command:"cellDelete",order:15},tablecell_merge:{label:q.cell.merge,group:"tablecell",command:"cellMerge",order:16},tablecell_merge_right:{label:q.cell.mergeRight,group:"tablecell",command:"cellMergeRight",order:17},tablecell_merge_down:{label:q.cell.mergeDown,group:"tablecell",command:"cellMergeDown",order:18},tablecell_split_horizontal:{label:q.cell.splitHorizontal,group:"tablecell", -command:"cellHorizontalSplit",order:19},tablecell_split_vertical:{label:q.cell.splitVertical,group:"tablecell",command:"cellVerticalSplit",order:20},tablecell_properties:{label:q.cell.title,group:"tablecellproperties",command:"cellProperties",order:21},tablerow:{label:q.row.menu,group:"tablerow",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:q.row.insertBefore, -group:"tablerow",command:"rowInsertBefore",order:5},tablerow_insertAfter:{label:q.row.insertAfter,group:"tablerow",command:"rowInsertAfter",order:10},tablerow_delete:{label:q.row.deleteRow,group:"tablerow",command:"rowDelete",order:15},tablecolumn:{label:q.column.menu,group:"tablecolumn",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:q.column.insertBefore, -group:"tablecolumn",command:"columnInsertBefore",order:5},tablecolumn_insertAfter:{label:q.column.insertAfter,group:"tablecolumn",command:"columnInsertAfter",order:10},tablecolumn_delete:{label:q.column.deleteColumn,group:"tablecolumn",command:"columnDelete",order:15}});c.contextMenu&&c.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getCellColIndex:c, -insertRow:f,insertColumn:l,getSelectedCells:a};CKEDITOR.plugins.add("tabletools",CKEDITOR.plugins.tabletools)}(),CKEDITOR.tools.buildTableMap=function(a,f,b,c,e){a=a.$.rows;b=b||0;c="number"===typeof c?c:a.length-1;e="number"===typeof e?e:-1;var l=-1,k=[];for(f=f||0;f<=c;f++){l++;!k[l]&&(k[l]=[]);for(var d=-1,h=b;h<=(-1===e?a[f].cells.length-1:e);h++){var m=a[f].cells[h];if(!m)break;for(d++;k[l][d];)d++;for(var g=isNaN(m.colSpan)?1:m.colSpan,m=isNaN(m.rowSpan)?1:m.rowSpan,n=0;n<m&&!(f+n>c);n++){k[l+ -n]||(k[l+n]=[]);for(var r=0;r<g;r++)k[l+n][d+r]=a[f].cells[h]}d+=g-1;if(-1!==e&&d>=e)break}}return k},function(){function a(a,b){var c=a.getAscendant("table"),d=b.getAscendant("table"),e=CKEDITOR.tools.buildTableMap(c),f=m(a),g=m(b),h=[],k={},l,n;c.contains(d)&&(b=b.getAscendant({td:1,th:1}),g=m(b));f>g&&(c=f,f=g,g=c,c=a,a=b,b=c);for(c=0;c<e[f].length;c++)if(a.$===e[f][c]){l=c;break}for(c=0;c<e[g].length;c++)if(b.$===e[g][c]){n=c;break}l>n&&(c=l,l=n,n=c);for(c=f;c<=g;c++)for(f=l;f<=n;f++)d=new CKEDITOR.dom.element(e[c][f]), -d.$&&!d.getCustomData("selected_cell")&&(h.push(d),CKEDITOR.dom.element.setMarker(k,d,"selected_cell",!0));CKEDITOR.dom.element.clearAllMarkers(k);return h}function f(a){a=a.data.$;return CKEDITOR.env.ie&&9>CKEDITOR.env.version?1===a.button:0===a.button}function b(a){if(a)return a=a.clone(),a.enlarge(CKEDITOR.ENLARGE_ELEMENT),(a=a.getEnclosedNode())&&a.is&&a.is(CKEDITOR.dtd.$tableContent)}function c(a){return(a=a.editable().findOne(".cke_table-faked-selection"))&&a.getAscendant("table")}function e(a, -b){var c=a.editable().find(".cke_table-faked-selection"),d;a.fire("lockSnapshot");a.editable().removeClass("cke_table-faked-selection-editor");for(d=0;d<c.count();d++)c.getItem(d).removeClass("cke_table-faked-selection");0<c.count()&&c.getItem(0).getAscendant("table").data("cke-table-faked-selection-table",!1);a.fire("unlockSnapshot");b&&(p={active:!1},a.getSelection().isInTable()&&a.getSelection().reset())}function l(a,b){var c=[],d,e;for(e=0;e<b.length;e++)d=a.createRange(),d.setStartBefore(b[e]), -d.setEndAfter(b[e]),c.push(d);a.getSelection().selectRanges(c)}function k(b){var c=b.editable().find(".cke_table-faked-selection");1>c.count()||(c=a(c.getItem(0),c.getItem(c.count()-1)),l(b,c))}function d(b,c,d){var f=u(b.getSelection(!0));c=c.is("table")?null:c;var g;(g=p.active&&!p.first)&&!(g=c)&&(g=b.getSelection().getRanges(),g=1<f.length||g[0]&&!g[0].collapsed?!0:!1);if(g)p.first=c||f[0],p.dirty=c?!1:1!==f.length;else if(p.active&&c&&p.first.getAscendant("table").equals(c.getAscendant("table"))){f= -a(p.first,c);if(!p.dirty&&1===f.length)return e(b,"mouseup"===d.name);p.dirty=!0;p.last=c;l(b,f)}}function h(a){var b=(a=a.editor||a.sender.editor)&&a.getSelection(),c=b&&b.getRanges()||[],d;if(b&&(e(a),b.isInTable()&&b.isFake)){1===c.length&&c[0]._getTableElement()&&c[0]._getTableElement().is("table")&&(d=c[0]._getTableElement());d=u(b,d);a.fire("lockSnapshot");for(b=0;b<d.length;b++)d[b].addClass("cke_table-faked-selection");0<d.length&&(a.editable().addClass("cke_table-faked-selection-editor"), -d[0].getAscendant("table").data("cke-table-faked-selection-table",""));a.fire("unlockSnapshot")}}function m(a){return a.getAscendant("tr",!0).$.rowIndex}function g(a){function b(a,c){return a&&c?a.equals(c)||a.contains(c)||c.contains(a)||a.getCommonAncestor(c).is(u):!1}function h(a){return!a.getAscendant("table",!0)&&a.getDocument().equals(m.document)}function l(a,c,d,e){return"mousedown"===a.name&&(f(a)||!e)||"mouseup"===a.name&&!h(a.data.getTarget())&&!b(d,e)?!0:!1}if(a.data.getTarget().getName){var m= -a.editor||a.listenerData.editor,n=m.getSelection(1),r=c(m),q=a.data.getTarget(),t=q&&q.getAscendant({td:1,th:1},!0),q=q&&q.getAscendant("table",!0),u={table:1,thead:1,tbody:1,tfoot:1,tr:1,td:1,th:1};l(a,n,r,q)&&e(m,!0);!p.active&&"mousedown"===a.name&&f(a)&&q&&(p={active:!0},CKEDITOR.document.on("mouseup",g,null,{editor:m}));(t||q)&&d(m,t||q,a);"mouseup"===a.name&&(f(a)&&(h(a.data.getTarget())||b(r,q))&&k(m),p={active:!1},CKEDITOR.document.removeListener("mouseup",g))}}function n(a){var b=a.data.getTarget().getAscendant({td:1, -th:1},!0);b&&!b.hasClass("cke_table-faked-selection")&&(a.cancel(),a.data.preventDefault())}function r(a,b){function c(a){a.cancel()}var d=a.getSelection(),e=d.createBookmarks(),f=a.document,g=a.createRange(),h=f.getDocumentElement().$,k=CKEDITOR.env.ie&&9>CKEDITOR.env.version,l=a.blockless||CKEDITOR.env.ie?"span":"div",m,n,p,q;f.getById("cke_table_copybin")||(m=f.createElement(l),n=f.createElement(l),n.setAttributes({id:"cke_table_copybin","data-cke-temp":"1"}),m.setStyles({position:"absolute",width:"1px", -height:"1px",overflow:"hidden"}),m.setStyle("ltr"==a.config.contentsLangDirection?"left":"right","-5000px"),m.setHtml(a.getSelectedHtml(!0)),a.fire("lockSnapshot"),n.append(m),a.editable().append(n),q=a.on("selectionChange",c,null,null,0),k&&(p=h.scrollTop),g.selectNodeContents(m),g.select(),k&&(h.scrollTop=p),setTimeout(function(){n.remove();d.selectBookmarks(e);q.removeListener();a.fire("unlockSnapshot");b&&(a.extractSelectedHtml(),a.fire("saveSnapshot"))},100))}function q(a){var b=a.editor||a.sender.editor; -b.getSelection().isInTable()&&r(b,"cut"===a.name)}function y(a){this._reset();a&&this.setSelectedCells(a)}function w(a,b,c){a.on("beforeCommandExec",function(c){-1!==CKEDITOR.tools.array.indexOf(b,c.data.name)&&(c.data.selectedCells=u(a.getSelection()))});a.on("afterCommandExec",function(d){-1!==CKEDITOR.tools.array.indexOf(b,d.data.name)&&c(a,d.data)})}var p={active:!1},v,u,z,t,A;y.prototype={};y.prototype._reset=function(){this.cells={first:null,last:null,all:[]};this.rows={first:null,last:null}}; -y.prototype.setSelectedCells=function(a){this._reset();a=a.slice(0);this._arraySortByDOMOrder(a);this.cells.all=a;this.cells.first=a[0];this.cells.last=a[a.length-1];this.rows.first=a[0].getAscendant("tr");this.rows.last=this.cells.last.getAscendant("tr")};y.prototype.getTableMap=function(){var a=z(this.cells.first,!0),b;a:{b=this.cells.last;var c=b.getAscendant("table"),d=m(b),c=CKEDITOR.tools.buildTableMap(c),e;for(e=0;e<c[d].length;e++)if((new CKEDITOR.dom.element(c[d][e])).equals(b)){b=e;break a}b= -void 0}return CKEDITOR.tools.buildTableMap(this._getTable(),m(this.rows.first),a,m(this.rows.last),b)};y.prototype._getTable=function(){return this.rows.first.getAscendant("table")};y.prototype.insertRow=function(a,b,c){if("undefined"===typeof a)a=1;else if(0>=a)return;for(var d=this.cells.first.$.cellIndex,e=this.cells.last.$.cellIndex,f=c?[]:this.cells.all,g,h=0;h<a;h++)g=t(c?this.cells.all:f,b),g=CKEDITOR.tools.array.filter(g.find("td, th").toArray(),function(a){return c?!0:a.$.cellIndex>=d&&a.$.cellIndex<= -e}),f=b?g.concat(f):f.concat(g);this.setSelectedCells(f)};y.prototype.insertColumn=function(a){function b(a){a=m(a);return a>=e&&a<=f}if("undefined"===typeof a)a=1;else if(0>=a)return;for(var c=this.cells,d=c.all,e=m(c.first),f=m(c.last),c=0;c<a;c++)d=d.concat(CKEDITOR.tools.array.filter(A(d),b));this.setSelectedCells(d)};y.prototype.emptyCells=function(a){a=a||this.cells.all;for(var b=0;b<a.length;b++)a[b].setHtml("")};y.prototype._arraySortByDOMOrder=function(a){a.sort(function(a,b){return a.getPosition(b)& -CKEDITOR.POSITION_PRECEDING?-1:1})};var D={onPaste:function(c){function d(a){return Math.max.apply(null,CKEDITOR.tools.array.map(a,function(a){return a.length},0))}function e(a){var b=f.createRange();b.selectNodeContents(a);b.select()}var f=c.editor,g=f.getSelection(),h=u(g),k=this.findTableInPastedContent(f,c.data.dataValue),m=g.isInTable(!0)&&this.isBoundarySelection(g),n,p;!h.length||1===h.length&&!b(g.getRanges()[0])&&!m||m&&!k||(h=h[0].getAscendant("table"),n=new y(u(g,h)),f.once("afterPaste", -function(){var b;if(p){b=new CKEDITOR.dom.element(p[0][0]);var c=p[p.length-1];b=a(b,new CKEDITOR.dom.element(c[c.length-1]))}else b=n.cells.all;l(f,b)}),k?(c.stop(),m?(n.insertRow(1,1===m,!0),g.selectElement(n.rows.first)):(n.emptyCells(),l(f,n.cells.all)),c=n.getTableMap(),p=CKEDITOR.tools.buildTableMap(k),n.insertRow(p.length-c.length),n.insertColumn(d(p)-d(c)),c=n.getTableMap(),this.pasteTable(n,c,p),f.fire("saveSnapshot"),setTimeout(function(){f.fire("afterPaste")},0)):(e(n.cells.first),f.once("afterPaste", -function(){f.fire("lockSnapshot");n.emptyCells(n.cells.all.slice(1));l(f,n.cells.all);f.fire("unlockSnapshot")})))},isBoundarySelection:function(a){a=a.getRanges()[0];var b=a.endContainer.getAscendant("tr",!0);if(b&&a.collapsed){if(a.checkBoundaryOfElement(b,CKEDITOR.START))return 1;if(a.checkBoundaryOfElement(b,CKEDITOR.END))return 2}return 0},findTableInPastedContent:function(a,b){var c=a.dataProcessor,d=new CKEDITOR.dom.element("body");c||(c=new CKEDITOR.htmlDataProcessor(a));d.setHtml(c.toHtml(b), -{fixForBody:!1});return 1<d.getChildCount()?null:d.findOne("table")},pasteTable:function(a,b,c){var d,e=z(a.cells.first,!0),f=a._getTable(),g={},h,k,l,m;for(l=0;l<c.length;l++)for(h=new CKEDITOR.dom.element(f.$.rows[a.rows.first.$.rowIndex+l]),m=0;m<c[l].length;m++)if(k=new CKEDITOR.dom.element(c[l][m]),d=b[l]&&b[l][m]?new CKEDITOR.dom.element(b[l][m]):null,k&&!k.getCustomData("processed")){if(d&&d.getParent())k.replace(d);else if(0===m||c[l][m-1])(d=0!==m?new CKEDITOR.dom.element(c[l][m-1]):null)&& -h.equals(d.getParent())?k.insertAfter(d):0<e?h.$.cells[e]?k.insertAfter(new CKEDITOR.dom.element(h.$.cells[e])):h.append(k):h.append(k,!0);CKEDITOR.dom.element.setMarker(g,k,"processed",!0)}else k.getCustomData("processed")&&d&&d.remove();CKEDITOR.dom.element.clearAllMarkers(g)}};CKEDITOR.plugins.tableselection={getCellsBetween:a,keyboardIntegration:function(a){function b(a){a.getEnclosedNode()?a.getEnclosedNode().setText(""):a.deleteContents();CKEDITOR.tools.array.forEach(a._find("td"),function(a){a.appendBogus()})} -var c=a.editable();c.attachListener(c,"keydown",function(a){function c(b,d){if(!d.length)return null;var f=a.createRange(),g=CKEDITOR.dom.range.mergeRanges(d);CKEDITOR.tools.array.forEach(g,function(a){a.enlarge(CKEDITOR.ENLARGE_ELEMENT)});var h=g[0].getBoundaryNodes(),k=h.startNode,h=h.endNode;if(k&&k.is&&k.is(e)){for(var l=k.getAscendant("table",!0),m=k.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT,l),n=!1,p=function(a){return!k.contains(a)&&a.is&&a.is("td","th")};m&&!p(m);)m=m.getPreviousSourceNode(!1, -CKEDITOR.NODE_ELEMENT,l);!m&&h&&h.is&&!h.is("table")&&h.getNext()&&(m=h.getNext().findOne("td, th"),n=!0);if(m)f["moveToElementEdit"+(n?"Start":"End")](m);else f.setStartBefore(k.getAscendant("table",!0)),f.collapse(!0);g[0].deleteContents();return[f]}if(k)return f.moveToElementEditablePosition(k),[f]}var d={37:1,38:1,39:1,40:1,8:1,46:1},e=CKEDITOR.tools.extend({table:1},CKEDITOR.dtd.$tableContent);delete e.td;delete e.th;return function(e){var f=e.data.getKey(),g,h=37===f||38==f,k,l,m;if(d[f]&&(g= -a.getSelection())&&g.isInTable()&&g.isFake)if(k=g.getRanges(),l=k[0]._getTableElement(),m=k[k.length-1]._getTableElement(),e.data.preventDefault(),e.cancel(),8<f&&46>f)k[0].moveToElementEditablePosition(h?l:m,!h),g.selectRanges([k[0]]);else{for(e=0;e<k.length;e++)b(k[e]);(e=c(l,k))?k=e:k[0].moveToElementEditablePosition(l);g.selectRanges(k);a.fire("saveSnapshot")}}}(a),null,null,-1);c.attachListener(c,"keypress",function(c){var d=a.getSelection(),e=c.data.$.charCode||13===c.data.getKey(),f;if(d&& -d.isInTable()&&d.isFake&&e&&!(c.data.getKeystroke()&CKEDITOR.CTRL)){c=d.getRanges();e=c[0].getEnclosedNode().getAscendant({td:1,th:1},!0);for(f=0;f<c.length;f++)b(c[f]);c[0].moveToElementEditablePosition(e);d.selectRanges([c[0]])}},null,null,-1)},isSupportedEnvironment:!(CKEDITOR.env.ie&&11>CKEDITOR.env.version)};CKEDITOR.plugins.add("tableselection",{requires:"clipboard,tabletools",onLoad:function(){v=CKEDITOR.plugins.tabletools;u=v.getSelectedCells;z=v.getCellColIndex;t=v.insertRow;A=v.insertColumn; -CKEDITOR.document.appendStyleSheet(this.path+"styles/tableselection.css")},init:function(a){CKEDITOR.plugins.tableselection.isSupportedEnvironment&&(a.addContentsCss&&a.addContentsCss(this.path+"styles/tableselection.css"),a.on("contentDom",function(){var b=a.editable(),c=b.isInline()?b:a.document,d={editor:a};b.attachListener(c,"mousedown",g,null,d);b.attachListener(c,"mousemove",g,null,d);b.attachListener(c,"mouseup",g,null,d);b.attachListener(b,"dragstart",n);b.attachListener(a,"selectionCheck", -h);CKEDITOR.plugins.tableselection.keyboardIntegration(a);CKEDITOR.plugins.clipboard&&!CKEDITOR.plugins.clipboard.isCustomCopyCutSupported&&(b.attachListener(b,"cut",q),b.attachListener(b,"copy",q))}),a.on("paste",D.onPaste,D),w(a,"rowInsertBefore rowInsertAfter columnInsertBefore columnInsertAfter cellInsertBefore cellInsertAfter".split(" "),function(a,b){l(a,b.selectedCells)}),w(a,["cellMerge","cellMergeRight","cellMergeDown"],function(a,b){l(a,[b.commandData.cell])}),w(a,["cellDelete"],function(a){e(a, -!0)}))}})}(),"use strict",function(){var a=[CKEDITOR.CTRL+90,CKEDITOR.CTRL+89,CKEDITOR.CTRL+CKEDITOR.SHIFT+90],f={8:1,46:1};CKEDITOR.plugins.add("undo",{init:function(c){function e(a){g.enabled&&!1!==a.data.command.canUndo&&g.save()}function f(){g.enabled=c.readOnly?!1:"wysiwyg"==c.mode;g.onChange()}var g=c.undoManager=new b(c),k=g.editingHandler=new l(g),r=c.addCommand("undo",{exec:function(){g.undo()&&(c.selectionChange(),this.fire("afterUndo"))},startDisabled:!0,canUndo:!1}),q=c.addCommand("redo", -{exec:function(){g.redo()&&(c.selectionChange(),this.fire("afterRedo"))},startDisabled:!0,canUndo:!1});c.setKeystroke([[a[0],"undo"],[a[1],"redo"],[a[2],"redo"]]);g.onChange=function(){r.setState(g.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);q.setState(g.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};c.on("beforeCommandExec",e);c.on("afterCommandExec",e);c.on("saveSnapshot",function(a){g.save(a.data&&a.data.contentOnly)});c.on("contentDom",k.attachListeners,k);c.on("instanceReady", -function(){c.fire("saveSnapshot")});c.on("beforeModeUnload",function(){"wysiwyg"==c.mode&&g.save(!0)});c.on("mode",f);c.on("readOnly",f);c.ui.addButton&&(c.ui.addButton("Undo",{label:c.lang.undo.undo,command:"undo",toolbar:"undo,10"}),c.ui.addButton("Redo",{label:c.lang.undo.redo,command:"redo",toolbar:"undo,20"}));c.resetUndo=function(){g.reset();c.fire("saveSnapshot")};c.on("updateSnapshot",function(){g.currentImage&&g.update()});c.on("lockSnapshot",function(a){a=a.data;g.lock(a&&a.dontUpdate,a&& -a.forceUpdate)});c.on("unlockSnapshot",g.unlock,g)}});CKEDITOR.plugins.undo={};var b=CKEDITOR.plugins.undo.UndoManager=function(a){this.strokesRecorded=[0,0];this.locked=null;this.previousKeyGroup=-1;this.limit=a.config.undoStackSize||20;this.strokesLimit=25;this.editor=a;this.reset()};b.prototype={type:function(a,c){var e=b.getKeyGroup(a),f=this.strokesRecorded[e]+1;c=c||f>=this.strokesLimit;this.typing||(this.hasUndo=this.typing=!0,this.hasRedo=!1,this.onChange());c?(f=0,this.editor.fire("saveSnapshot")): -this.editor.fire("change");this.strokesRecorded[e]=f;this.previousKeyGroup=e},keyGroupChanged:function(a){return b.getKeyGroup(a)!=this.previousKeyGroup},reset:function(){this.snapshots=[];this.index=-1;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.strokesRecorded=[0,0];this.typing=!1;this.previousKeyGroup=-1},refreshState:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()}, -save:function(a,b,e){var f=this.editor;if(this.locked||"ready"!=f.status||"wysiwyg"!=f.mode)return!1;var k=f.editable();if(!k||"ready"!=k.status)return!1;k=this.snapshots;b||(b=new c(f));if(!1===b.contents)return!1;if(this.currentImage)if(b.equalsContent(this.currentImage)){if(a||b.equalsSelection(this.currentImage))return!1}else!1!==e&&f.fire("change");k.splice(this.index+1,k.length-this.index-1);k.length==this.limit&&k.shift();this.index=k.push(b)-1;this.currentImage=b;!1!==e&&this.refreshState(); -return!0},restoreImage:function(a){var b=this.editor,c;a.bookmarks&&(b.focus(),c=b.getSelection());this.locked={level:999};this.editor.loadSnapshot(a.contents);a.bookmarks?c.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(c=this.editor.document.getBody().$.createTextRange(),c.collapse(!0),c.select());this.locked=null;this.index=a.index;this.currentImage=this.snapshots[this.index];this.update();this.refreshState();b.fire("change")},getNextImage:function(a){var b=this.snapshots,c=this.currentImage,e; -if(c)if(a)for(e=this.index-1;0<=e;e--){if(a=b[e],!c.equalsContent(a))return a.index=e,a}else for(e=this.index+1;e<b.length;e++)if(a=b[e],!c.equalsContent(a))return a.index=e,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1); -if(a)return this.restoreImage(a),!0}return!1},update:function(a){if(!this.locked){a||(a=new c(this.editor));for(var b=this.index,e=this.snapshots;0<b&&this.currentImage.equalsContent(e[b-1]);)--b;e.splice(b,this.index-b+1,a);this.index=b;this.currentImage=a}},updateSelection:function(a){if(!this.snapshots.length)return!1;var b=this.snapshots,c=b[b.length-1];return c.equalsContent(a)&&!c.equalsSelection(a)?(this.currentImage=b[b.length-1]=a,!0):!1},lock:function(a,b){if(this.locked)this.locked.level++; -else if(a)this.locked={level:1};else{var e=null;if(b)e=!0;else{var f=new c(this.editor,!0);this.currentImage&&this.currentImage.equalsContent(f)&&(e=f)}this.locked={update:e,level:1}}},unlock:function(){if(this.locked&&!--this.locked.level){var a=this.locked.update;this.locked=null;if(!0===a)this.update();else if(a){var b=new c(this.editor,!0);a.equalsContent(b)||this.update()}}}};b.navigationKeyCodes={37:1,38:1,39:1,40:1,36:1,35:1,33:1,34:1};b.keyGroups={PRINTABLE:0,FUNCTIONAL:1};b.isNavigationKey= -function(a){return!!b.navigationKeyCodes[a]};b.getKeyGroup=function(a){var c=b.keyGroups;return f[a]?c.FUNCTIONAL:c.PRINTABLE};b.getOppositeKeyGroup=function(a){var c=b.keyGroups;return a==c.FUNCTIONAL?c.PRINTABLE:c.FUNCTIONAL};b.ieFunctionalKeysBug=function(a){return CKEDITOR.env.ie&&b.getKeyGroup(a)==b.keyGroups.FUNCTIONAL};var c=CKEDITOR.plugins.undo.Image=function(a,b){this.editor=a;a.fire("beforeUndoImage");var c=a.getSnapshot();CKEDITOR.env.ie&&c&&(c=c.replace(/\s+data-cke-expando=".*?"/g,"")); -this.contents=c;b||(this.bookmarks=(c=c&&a.getSelection())&&c.createBookmarks2(!0));a.fire("afterUndoImage")},e=/\b(?:href|src|name)="[^"]*?"/gi;c.prototype={equalsContent:function(a){var b=this.contents;a=a.contents;CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)&&(b=b.replace(e,""),a=a.replace(e,""));return b!=a?!1:!0},equalsSelection:function(a){var b=this.bookmarks;a=a.bookmarks;if(b||a){if(!b||!a||b.length!=a.length)return!1;for(var c=0;c<b.length;c++){var e=b[c],f=a[c];if(e.startOffset!= -f.startOffset||e.endOffset!=f.endOffset||!CKEDITOR.tools.arrayCompare(e.start,f.start)||!CKEDITOR.tools.arrayCompare(e.end,f.end))return!1}}return!0}};var l=CKEDITOR.plugins.undo.NativeEditingHandler=function(a){this.undoManager=a;this.ignoreInputEvent=!1;this.keyEventsStack=new k;this.lastKeydownImage=null};l.prototype={onKeydown:function(d){var e=d.data.getKey();if(229!==e)if(-1<CKEDITOR.tools.indexOf(a,d.data.getKeystroke()))d.data.preventDefault();else if(this.keyEventsStack.cleanUp(d),d=this.undoManager, -this.keyEventsStack.getLast(e)||this.keyEventsStack.push(e),this.lastKeydownImage=new c(d.editor),b.isNavigationKey(e)||this.undoManager.keyGroupChanged(e))if(d.strokesRecorded[0]||d.strokesRecorded[1])d.save(!1,this.lastKeydownImage,!1),d.resetType()},onInput:function(){if(this.ignoreInputEvent)this.ignoreInputEvent=!1;else{var a=this.keyEventsStack.getLast();a||(a=this.keyEventsStack.push(0));this.keyEventsStack.increment(a.keyCode);this.keyEventsStack.getTotalInputs()>=this.undoManager.strokesLimit&& -(this.undoManager.type(a.keyCode,!0),this.keyEventsStack.resetInputs())}},onKeyup:function(a){var e=this.undoManager;a=a.data.getKey();var f=this.keyEventsStack.getTotalInputs();this.keyEventsStack.remove(a);if(!(b.ieFunctionalKeysBug(a)&&this.lastKeydownImage&&this.lastKeydownImage.equalsContent(new c(e.editor,!0))))if(0<f)e.type(a);else if(b.isNavigationKey(a))this.onNavigationKey(!0)},onNavigationKey:function(a){var b=this.undoManager;!a&&b.save(!0,null,!1)||b.updateSelection(new c(b.editor)); -b.resetType()},ignoreInputEventListener:function(){this.ignoreInputEvent=!0},attachListeners:function(){var a=this.undoManager.editor,c=a.editable(),e=this;c.attachListener(c,"keydown",function(a){e.onKeydown(a);if(b.ieFunctionalKeysBug(a.data.getKey()))e.onInput()},null,null,999);c.attachListener(c,CKEDITOR.env.ie?"keypress":"input",e.onInput,e,null,999);c.attachListener(c,"keyup",e.onKeyup,e,null,999);c.attachListener(c,"paste",e.ignoreInputEventListener,e,null,999);c.attachListener(c,"drop",e.ignoreInputEventListener, -e,null,999);c.attachListener(c.isInline()?c:a.document.getDocumentElement(),"click",function(){e.onNavigationKey()},null,null,999);c.attachListener(this.undoManager.editor,"blur",function(){e.keyEventsStack.remove(9)},null,null,999)}};var k=CKEDITOR.plugins.undo.KeyEventsStack=function(){this.stack=[]};k.prototype={push:function(a){a=this.stack.push({keyCode:a,inputs:0});return this.stack[a-1]},getLastIndex:function(a){if("number"!=typeof a)return this.stack.length-1;for(var b=this.stack.length;b--;)if(this.stack[b].keyCode== -a)return b;return-1},getLast:function(a){a=this.getLastIndex(a);return-1!=a?this.stack[a]:null},increment:function(a){this.getLast(a).inputs++},remove:function(a){a=this.getLastIndex(a);-1!=a&&this.stack.splice(a,1)},resetInputs:function(a){if("number"==typeof a)this.getLast(a).inputs=0;else for(a=this.stack.length;a--;)this.stack[a].inputs=0},getTotalInputs:function(){for(var a=this.stack.length,b=0;a--;)b+=this.stack[a].inputs;return b},cleanUp:function(a){a=a.data.$;a.ctrlKey||a.metaKey||this.remove(17); -a.shiftKey||this.remove(16);a.altKey||this.remove(18)}}}(),CKEDITOR.plugins.add("wsc",{requires:"dialog",parseApi:function(a){a.config.wsc_onFinish="function"===typeof a.config.wsc_onFinish?a.config.wsc_onFinish:function(){};a.config.wsc_onClose="function"===typeof a.config.wsc_onClose?a.config.wsc_onClose:function(){}},parseConfig:function(a){a.config.wsc_customerId=a.config.wsc_customerId||CKEDITOR.config.wsc_customerId||"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk";a.config.wsc_customDictionaryIds= -a.config.wsc_customDictionaryIds||CKEDITOR.config.wsc_customDictionaryIds||"";a.config.wsc_userDictionaryName=a.config.wsc_userDictionaryName||CKEDITOR.config.wsc_userDictionaryName||"";a.config.wsc_customLoaderScript=a.config.wsc_customLoaderScript||CKEDITOR.config.wsc_customLoaderScript;a.config.wsc_interfaceLang=a.config.wsc_interfaceLang;CKEDITOR.config.wsc_cmd=a.config.wsc_cmd||CKEDITOR.config.wsc_cmd||"spell";CKEDITOR.config.wsc_version="v4.3.0-master-d769233";CKEDITOR.config.wsc_removeGlobalVariable= -!0},onLoad:function(a){"moono-lisa"==(CKEDITOR.skinName||a.config.skin)&&CKEDITOR.document.appendStyleSheet(this.path+"skins/"+CKEDITOR.skin.name+"/wsc.css")},init:function(a){var f=CKEDITOR.env;this.parseConfig(a);this.parseApi(a);a.addCommand("checkspell",new CKEDITOR.dialogCommand("checkspell")).modes={wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname&&!(f.ie&&(8>f.version||f.quirks))};"undefined"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton("SpellChecker", -{label:a.lang.wsc.toolbar,click:function(a){var c=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.container.getText():a.document.getBody().getText();(c=c.replace(/\s/g,""))?a.execCommand("checkspell"):alert("Nothing to check!")},toolbar:"spellchecker,10"});CKEDITOR.dialog.add("checkspell",this.path+(CKEDITOR.env.ie&&7>=CKEDITOR.env.version?"dialogs/wsc_ie.js":window.postMessage?"dialogs/wsc.js":"dialogs/wsc_ie.js"))}}),function(){function a(a){function b(a){var c=!1;g.attachListener(g,"keydown",function(){var b= -d.getBody().getElementsByTag(a);if(!c){for(var e=0;e<b.count();e++)b.getItem(e).setCustomData("retain",!0);c=!0}},null,null,1);g.attachListener(g,"keyup",function(){var b=d.getElementsByTag(a);c&&(1!=b.count()||b.getItem(0).getCustomData("retain")||b.getItem(0).hasAttribute("data-cke-temp")||b.getItem(0).remove(1),c=!1)})}var c=this.editor,d=a.document,h=d.body,m=d.getElementById("cke_actscrpt");m&&m.parentNode.removeChild(m);(m=d.getElementById("cke_shimscrpt"))&&m.parentNode.removeChild(m);(m=d.getElementById("cke_basetagscrpt"))&& -m.parentNode.removeChild(m);h.contentEditable=!0;CKEDITOR.env.ie&&(h.hideFocus=!0,h.disabled=!0,h.removeAttribute("disabled"));delete this._.isLoadingData;this.$=h;d=new CKEDITOR.dom.document(d);this.setup();this.fixInitialSelection();var g=this;CKEDITOR.env.ie&&!CKEDITOR.env.edge&&d.getDocumentElement().addClass(d.$.compatMode);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&c.enterMode!=CKEDITOR.ENTER_P?b("p"):CKEDITOR.env.edge&&c.enterMode!=CKEDITOR.ENTER_DIV&&b("div");if(CKEDITOR.env.webkit||CKEDITOR.env.ie&& -10<CKEDITOR.env.version)d.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&setTimeout(function(){c.editable().focus()})});f(c);try{c.document.$.execCommand("2D-position",!1,!0)}catch(n){}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==c.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var b=a.data.getKeystroke();if(33==b||34==b)if(CKEDITOR.env.ie)setTimeout(function(){c.getSelection().scrollIntoView()},0);else if(c.window.$.innerHeight>this.$.offsetHeight){var d= -c.createRange();d[33==b?"moveToElementEditStart":"moveToElementEditEnd"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(d,"blur",function(){try{d.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(d,"touchend",function(){a.focus()});h=c.document.getElementsByTag("title").getItem(0);h.data("cke-title",h.getText());CKEDITOR.env.ie&&(c.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){"unloaded"==this.status&&(this.status="ready"); -c.fire("contentDom");this._.isPendingFocus&&(c.focus(),this._.isPendingFocus=!1);setTimeout(function(){c.fire("dataReady")},0)},0,this)}function f(a){function b(){var d;a.editable().attachListener(a,"selectionChange",function(){var b=a.getSelection().getSelectedElement();b&&(d&&(d.detachEvent("onresizestart",c),d=null),b.$.attachEvent("onresizestart",c),d=b.$)})}function c(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var d=a.document.$;d.execCommand("enableObjectResizing",!1,!a.config.disableObjectResizing); -d.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(f){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&b(a)}function b(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var b=[],c;for(c in CKEDITOR.dtd.$removeEmpty)b.push("html.CSS1Compat "+c+"[contenteditable\x3dfalse]");a.push(b.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&(a.push("html{height:100% !important}"), -a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}var c;CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(b){function f(d){d&&d.removeListener();a.editable(new c(a,h.$.contentWindow.document.body)); -a.setData(a.getData(1),b)}var d="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",d=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(d)+"}())":"",h=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+d+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');h.setStyles({width:"100%",height:"100%"});h.addClass("cke_wysiwyg_frame").addClass("cke_reset");d=a.ui.space("contents");d.append(h); -var m=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(m)h.on("load",f);var g=a.title,n=a.fire("ariaEditorHelpLabel",{}).label;g&&(CKEDITOR.env.ie&&n&&(g+=", "+n),h.setAttribute("title",g));if(n){var g=CKEDITOR.tools.getNextId(),r=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+n+"\x3c/span\x3e");d.append(r,1);h.setAttribute("aria-describedby",g)}a.on("beforeModeUnload",function(a){a.removeListener();r&&r.remove()});h.setAttributes({tabIndex:a.tabIndex, -allowTransparency:"true"});!m&&f();a.fire("ariaWidget",h)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var b=this.config,c=b.contentsCss;CKEDITOR.tools.isArray(c)||(b.contentsCss=c?[c]:[]);b.contentsCss.push(a)};c=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(b){CKEDITOR.tools.setTimeout(a,0,this,b)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")},base:CKEDITOR.editable,proto:{setData:function(a, -c){var f=this.editor;if(c)this.setHtml(a),this.fixInitialSelection(),f.fire("dataReady");else{this._.isLoadingData=!0;f._.dataStore={id:1};var d=f.config,h=d.fullPage,m=d.docType,g=CKEDITOR.tools.buildStyleHtml(b()).replace(/<style>/,'\x3cstyle data-cke-temp\x3d"1"\x3e');h||(g+=CKEDITOR.tools.buildStyleHtml(f.config.contentsCss));var n=d.baseHref?'\x3cbase href\x3d"'+d.baseHref+'" data-cke-temp\x3d"1" /\x3e':"";h&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){f.docType=m=a;return""}).replace(/<\?xml\s[^\?]*\?>/i, -function(a){f.xmlDeclaration=a;return""}));a=f.dataProcessor.toHtml(a);h?(/<body[\s|>]/.test(a)||(a="\x3cbody\x3e"+a),/<html[\s|>]/.test(a)||(a="\x3chtml\x3e"+a+"\x3c/html\x3e"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$\x26\x3ctitle\x3e\x3c/title\x3e")):a=a.replace(/<html[^>]*>/,"$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"),n&&(a=a.replace(/<head[^>]*?>/,"$\x26"+n)),a=a.replace(/<\/head\s*>/,g+"$\x26"),a=m+a):a=d.docType+'\x3chtml dir\x3d"'+d.contentsLangDirection+ -'" lang\x3d"'+(d.contentsLanguage||f.langCode)+'"\x3e\x3chead\x3e\x3ctitle\x3e'+this._.docTitle+"\x3c/title\x3e"+n+g+"\x3c/head\x3e\x3cbody"+(d.bodyId?' id\x3d"'+d.bodyId+'"':"")+(d.bodyClass?' class\x3d"'+d.bodyClass+'"':"")+"\x3e"+a+"\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'\x3cbody contenteditable\x3d"true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$\x26\x3c!-- cke-content-start --\x3e")));d='\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"'+ -(CKEDITOR.env.ie?' defer\x3d"defer" ':"")+"\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded\x3d1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"\x3c/script\x3e";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(d+='\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e');n&&CKEDITOR.env.ie&&10>CKEDITOR.env.version&& -(d+='\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a=a.replace(/(?=\s*<\/(:?head)>)/,d);this.clearCustomData();this.clearListeners();f.fire("contentDomUnload");var r=this.getDocument();try{r.write(a)}catch(q){setTimeout(function(){r.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();a=this.editor;var b=a.config,c=b.fullPage,d=c&&a.docType,f=c&&a.xmlDeclaration,m=this.getDocument(),c=c?m.getDocumentElement().getOuterHtml(): -m.getBody().getHtml();CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/<br>(?=\s*(:?$|<\/body>))/,""));c=a.dataProcessor.toDataFormat(c);f&&(c=f+"\n"+c);d&&(c=d+"\n"+c);return c},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:c.baseProto.focus.call(this)},detach:function(){var a=this.editor,b=a.document,f;try{f=a.window.getFrame()}catch(d){}c.baseProto.detach.call(this);this.clearCustomData();b.getDocumentElement().clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler); -f&&f.getParent()?(f.clearCustomData(),(a=f.removeCustomData("onResize"))&&a.removeListener(),f.remove()):CKEDITOR.warn("editor-destroy-iframe")}}})}(),CKEDITOR.config.disableObjectResizing=!1,CKEDITOR.config.disableNativeTableHandles=!0,CKEDITOR.config.disableNativeSpellChecker=!0,CKEDITOR.config.plugins="dialogui,dialog,a11yhelp,about,basicstyles,blockquote,notification,button,toolbar,clipboard,panel,floatpanel,menu,contextmenu,elementspath,indent,indentlist,list,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,image,fakeobjects,link,magicline,maximize,pastefromword,pastetext,removeformat,resize,menubutton,scayt,showborders,sourcearea,specialchar,stylescombo,tab,table,tabletools,tableselection,undo,wsc,wysiwygarea", -CKEDITOR.config.skin="moono-lisa",function(){var a=function(a,b){var c=CKEDITOR.getUrl("plugins/"+b);a=a.split(",");for(var e=0;e<a.length;e++)CKEDITOR.skin.icons[a[e]]={path:c,offset:-a[++e],bgsize:a[++e]}};CKEDITOR.env.hidpi?a("about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,codesnippet,384,,bgcolor,408,,textcolor,432,,copyformatting,456,,creatediv,480,,docprops-rtl,504,,docprops,528,,embed,552,,embedsemantic,576,,find-rtl,600,,find,624,,replace,648,,flash,672,,button,696,,checkbox,720,,form,744,,hiddenfield,768,,imagebutton,792,,radio,816,,select-rtl,840,,select,864,,textarea-rtl,888,,textarea,912,,textfield-rtl,936,,textfield,960,,horizontalrule,984,,iframe,1008,,image,1032,,indent-rtl,1056,,indent,1080,,outdent-rtl,1104,,outdent,1128,,justifyblock,1152,,justifycenter,1176,,justifyleft,1200,,justifyright,1224,,language,1248,,anchor-rtl,1272,,anchor,1296,,link,1320,,unlink,1344,,bulletedlist-rtl,1368,,bulletedlist,1392,,numberedlist-rtl,1416,,numberedlist,1440,,mathjax,1464,,maximize,1488,,newpage-rtl,1512,,newpage,1536,,pagebreak-rtl,1560,,pagebreak,1584,,pastefromword-rtl,1608,,pastefromword,1632,,pastetext-rtl,1656,,pastetext,1680,,placeholder,1704,,preview-rtl,1728,,preview,1752,,print,1776,,removeformat,1800,,save,1824,,scayt,1848,,selectall,1872,,showblocks-rtl,1896,,showblocks,1920,,smiley,1944,,source-rtl,1968,,source,1992,,sourcedialog-rtl,2016,,sourcedialog,2040,,specialchar,2064,,table,2088,,templates-rtl,2112,,templates,2136,,uicolor,2160,,redo-rtl,2184,,redo,2208,,undo-rtl,2232,,undo,2256,,simplebox,4560,auto,spellchecker,2304,", -"icons_hidpi.png"):a("about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,codesnippet,384,auto,bgcolor,408,auto,textcolor,432,auto,copyformatting,456,auto,creatediv,480,auto,docprops-rtl,504,auto,docprops,528,auto,embed,552,auto,embedsemantic,576,auto,find-rtl,600,auto,find,624,auto,replace,648,auto,flash,672,auto,button,696,auto,checkbox,720,auto,form,744,auto,hiddenfield,768,auto,imagebutton,792,auto,radio,816,auto,select-rtl,840,auto,select,864,auto,textarea-rtl,888,auto,textarea,912,auto,textfield-rtl,936,auto,textfield,960,auto,horizontalrule,984,auto,iframe,1008,auto,image,1032,auto,indent-rtl,1056,auto,indent,1080,auto,outdent-rtl,1104,auto,outdent,1128,auto,justifyblock,1152,auto,justifycenter,1176,auto,justifyleft,1200,auto,justifyright,1224,auto,language,1248,auto,anchor-rtl,1272,auto,anchor,1296,auto,link,1320,auto,unlink,1344,auto,bulletedlist-rtl,1368,auto,bulletedlist,1392,auto,numberedlist-rtl,1416,auto,numberedlist,1440,auto,mathjax,1464,auto,maximize,1488,auto,newpage-rtl,1512,auto,newpage,1536,auto,pagebreak-rtl,1560,auto,pagebreak,1584,auto,pastefromword-rtl,1608,auto,pastefromword,1632,auto,pastetext-rtl,1656,auto,pastetext,1680,auto,placeholder,1704,auto,preview-rtl,1728,auto,preview,1752,auto,print,1776,auto,removeformat,1800,auto,save,1824,auto,scayt,1848,auto,selectall,1872,auto,showblocks-rtl,1896,auto,showblocks,1920,auto,smiley,1944,auto,source-rtl,1968,auto,source,1992,auto,sourcedialog-rtl,2016,auto,sourcedialog,2040,auto,specialchar,2064,auto,table,2088,auto,templates-rtl,2112,auto,templates,2136,auto,uicolor,2160,auto,redo-rtl,2184,auto,redo,2208,auto,undo-rtl,2232,auto,undo,2256,auto,simplebox,2280,auto,spellchecker,2304,auto", -"icons.png")}())})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/composer.json b/vendor/unisharp/laravel-ckeditor/composer.json deleted file mode 100644 index 2c5375c88..000000000 --- a/vendor/unisharp/laravel-ckeditor/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "unisharp/laravel-ckeditor", - "description": "JavaScript WYSIWYG web text editor (for laravel).", - "type": "library", - "keywords": [ "ckeditor", "fckeditor", "editor", "wysiwyg", "html", "richtext", "text", "javascript", "laravel"], - "homepage": "http://ckeditor.com", - "license": [ "GPL-2.0+", "LGPL-2.1+", "MPL-1.1+" ], - "authors": [ - { - "name": "CKSource", - "homepage": "http://cksource.com" - }, - { - "name": "UniSharp Ltd. (Composer Package Maintainer)", - "homepage": "http://www.unisharp.com" - } - ], - "support": { - "issues": "http://dev.ckeditor.com", - "forum": "http://ckeditor.com/forums", - "wiki": "http://docs.ckeditor.com", - "source": "http://github.com/ckeditor/ckeditor-dev" - }, - "autoload": { - "psr-4": { - "Unisharp\\Ckeditor\\": "./" - } - }, - "require": { - "illuminate/support": "~5.0|^6.0" - }, - "minimum-stability": "dev", - "extra": { - "laravel": { - "providers": [ - "Unisharp\\Ckeditor\\ServiceProvider" - ] - } - } -} diff --git a/vendor/unisharp/laravel-ckeditor/config.js b/vendor/unisharp/laravel-ckeditor/config.js deleted file mode 100644 index 1386a10cd..000000000 --- a/vendor/unisharp/laravel-ckeditor/config.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -CKEDITOR.editorConfig = function( config ) { - // Define changes to default configuration here. - // For complete reference see: - // http://docs.ckeditor.com/#!/api/CKEDITOR.config - - // The toolbar groups arrangement, optimized for two toolbar rows. - config.toolbarGroups = [ - { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, - { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, - { name: 'links' }, - { name: 'insert' }, - { name: 'forms' }, - { name: 'tools' }, - { name: 'document', groups: [ 'mode', 'document', 'doctools' ] }, - { name: 'others' }, - '/', - { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, - { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, - { name: 'styles' }, - { name: 'colors' }, - { name: 'about' } - ]; - - // Remove some buttons provided by the standard plugins, which are - // not needed in the Standard(s) toolbar. - config.removeButtons = 'Underline,Subscript,Superscript'; - - // Set the most common block elements. - config.format_tags = 'p;h1;h2;h3;pre'; - - // Simplify the dialog windows. - config.removeDialogTabs = 'image:advanced;link:advanced'; -}; diff --git a/vendor/unisharp/laravel-ckeditor/contents.css b/vendor/unisharp/laravel-ckeditor/contents.css deleted file mode 100644 index 8571059d5..000000000 --- a/vendor/unisharp/laravel-ckeditor/contents.css +++ /dev/null @@ -1,208 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ - -body -{ - /* Font */ - font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; - font-size: 12px; - - /* Text color */ - color: #333; - - /* Remove the background color to make it transparent */ - background-color: #fff; - - margin: 20px; -} - -.cke_editable -{ - font-size: 13px; - line-height: 1.6; - - /* Fix for missing scrollbars with RTL texts. (#10488) */ - word-wrap: break-word; -} - -blockquote -{ - font-style: italic; - font-family: Georgia, Times, "Times New Roman", serif; - padding: 2px 0; - border-style: solid; - border-color: #ccc; - border-width: 0; -} - -.cke_contents_ltr blockquote -{ - padding-left: 20px; - padding-right: 8px; - border-left-width: 5px; -} - -.cke_contents_rtl blockquote -{ - padding-left: 8px; - padding-right: 20px; - border-right-width: 5px; -} - -a -{ - color: #0782C1; -} - -ol,ul,dl -{ - /* IE7: reset rtl list margin. (#7334) */ - *margin-right: 0px; - /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ - padding: 0 40px; -} - -h1,h2,h3,h4,h5,h6 -{ - font-weight: normal; - line-height: 1.2; -} - -hr -{ - border: 0px; - border-top: 1px solid #ccc; -} - -img.right -{ - border: 1px solid #ccc; - float: right; - margin-left: 15px; - padding: 5px; -} - -img.left -{ - border: 1px solid #ccc; - float: left; - margin-right: 15px; - padding: 5px; -} - -pre -{ - white-space: pre-wrap; /* CSS 2.1 */ - word-wrap: break-word; /* IE7 */ - -moz-tab-size: 4; - tab-size: 4; -} - -.marker -{ - background-color: Yellow; -} - -span[lang] -{ - font-style: italic; -} - -figure -{ - text-align: center; - border: solid 1px #ccc; - border-radius: 2px; - background: rgba(0,0,0,0.05); - padding: 10px; - margin: 10px 20px; - display: inline-block; -} - -figure > figcaption -{ - text-align: center; - display: block; /* For IE8 */ -} - -a > img { - padding: 1px; - margin: 1px; - border: none; - outline: 1px solid #0782C1; -} - -/* Widget Styles */ -.code-featured -{ - border: 5px solid red; -} - -.math-featured -{ - padding: 20px; - box-shadow: 0 0 2px rgba(200, 0, 0, 1); - background-color: rgba(255, 0, 0, 0.05); - margin: 10px; -} - -.image-clean -{ - border: 0; - background: none; - padding: 0; -} - -.image-clean > figcaption -{ - font-size: .9em; - text-align: right; -} - -.image-grayscale -{ - background-color: white; - color: #666; -} - -.image-grayscale img, img.image-grayscale -{ - filter: grayscale(100%); -} - -.embed-240p -{ - max-width: 426px; - max-height: 240px; - margin:0 auto; -} - -.embed-360p -{ - max-width: 640px; - max-height: 360px; - margin:0 auto; -} - -.embed-480p -{ - max-width: 854px; - max-height: 480px; - margin:0 auto; -} - -.embed-720p -{ - max-width: 1280px; - max-height: 720px; - margin:0 auto; -} - -.embed-1080p -{ - max-width: 1920px; - max-height: 1080px; - margin:0 auto; -} diff --git a/vendor/unisharp/laravel-ckeditor/lang/_translationstatus.txt b/vendor/unisharp/laravel-ckeditor/lang/_translationstatus.txt deleted file mode 100644 index 233ed53b3..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/_translationstatus.txt +++ /dev/null @@ -1,63 +0,0 @@ -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license - -af.js Found: 62 Missing: 4 -ar.js Found: 51 Missing: 15 -bg.js Found: 58 Missing: 8 -bn.js Found: 40 Missing: 26 -bs.js Found: 29 Missing: 37 -ca.js Found: 61 Missing: 5 -cs.js Found: 66 Missing: 0 -cy.js Found: 66 Missing: 0 -da.js Found: 66 Missing: 0 -de.js Found: 66 Missing: 0 -el.js Found: 59 Missing: 7 -en-au.js Found: 38 Missing: 28 -en-ca.js Found: 37 Missing: 29 -en-gb.js Found: 61 Missing: 5 -eo.js Found: 66 Missing: 0 -es.js Found: 66 Missing: 0 -et.js Found: 66 Missing: 0 -eu.js Found: 48 Missing: 18 -fa.js Found: 66 Missing: 0 -fi.js Found: 66 Missing: 0 -fo.js Found: 66 Missing: 0 -fr-ca.js Found: 42 Missing: 24 -fr.js Found: 66 Missing: 0 -gl.js Found: 40 Missing: 26 -gu.js Found: 66 Missing: 0 -he.js Found: 66 Missing: 0 -hi.js Found: 43 Missing: 23 -hr.js Found: 66 Missing: 0 -hu.js Found: 63 Missing: 3 -is.js Found: 41 Missing: 25 -it.js Found: 66 Missing: 0 -ja.js Found: 62 Missing: 4 -ka.js Found: 62 Missing: 4 -km.js Found: 40 Missing: 26 -ko.js Found: 40 Missing: 26 -lt.js Found: 66 Missing: 0 -lv.js Found: 40 Missing: 26 -mk.js Found: 0 Missing: 66 -mn.js Found: 40 Missing: 26 -ms.js Found: 39 Missing: 27 -nb.js Found: 66 Missing: 0 -nl.js Found: 65 Missing: 1 -no.js Found: 66 Missing: 0 -pl.js Found: 66 Missing: 0 -pt-br.js Found: 66 Missing: 0 -pt.js Found: 52 Missing: 14 -ro.js Found: 61 Missing: 5 -ru.js Found: 66 Missing: 0 -sk.js Found: 49 Missing: 17 -sl.js Found: 48 Missing: 18 -sr-latn.js Found: 40 Missing: 26 -sr.js Found: 40 Missing: 26 -sv.js Found: 62 Missing: 4 -th.js Found: 40 Missing: 26 -tr.js Found: 66 Missing: 0 -ug.js Found: 66 Missing: 0 -uk.js Found: 66 Missing: 0 -vi.js Found: 66 Missing: 0 -zh-cn.js Found: 66 Missing: 0 -zh.js Found: 58 Missing: 8 diff --git a/vendor/unisharp/laravel-ckeditor/lang/af.js b/vendor/unisharp/laravel-ckeditor/lang/af.js deleted file mode 100644 index efb847616..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/af.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['af']={"wsc":{"btnIgnore":"Ignoreer","btnIgnoreAll":"Ignoreer alles","btnReplace":"Vervang","btnReplaceAll":"vervang alles","btnUndo":"Ontdoen","changeTo":"Verander na","errorLoading":"Fout by inlaai van diens: %s.","ieSpellDownload":"Speltoetser is nie geïnstalleer nie. Wil u dit nou aflaai?","manyChanges":"Klaar met speltoets: %1 woorde verander","noChanges":"Klaar met speltoets: Geen woorde verander nie","noMispell":"Klaar met speltoets: Geen foute nie","noSuggestions":"- Geen voorstel -","notAvailable":"Jammer, hierdie diens is nie nou beskikbaar nie.","notInDic":"Nie in woordeboek nie","oneChange":"Klaar met speltoets: Een woord verander","progress":"Spelling word getoets...","title":"Speltoetser","toolbar":"Speltoets"},"undo":{"redo":"Oordoen","undo":"Ontdoen"},"toolbar":{"toolbarCollapse":"Verklein werkbalk","toolbarExpand":"Vergroot werkbalk","toolbarGroups":{"document":"Dokument","clipboard":"Knipbord/Undo","editing":"Verander","forms":"Vorms","basicstyles":"Eenvoudige Styl","paragraph":"Paragraaf","links":"Skakels","insert":"Toevoeg","styles":"Style","colors":"Kleure","tools":"Gereedskap"},"toolbars":"Werkbalke"},"table":{"border":"Randbreedte","caption":"Naam","cell":{"menu":"Sel","insertBefore":"Voeg sel in voor","insertAfter":"Voeg sel in na","deleteCell":"Verwyder sel","merge":"Voeg selle saam","mergeRight":"Voeg saam na regs","mergeDown":"Voeg saam ondertoe","splitHorizontal":"Splits sel horisontaal","splitVertical":"Splits sel vertikaal","title":"Sel eienskappe","cellType":"Sel tipe","rowSpan":"Omspan rye","colSpan":"Omspan kolomme","wordWrap":"Woord terugloop","hAlign":"Horisontale oplyning","vAlign":"Vertikale oplyning","alignBaseline":"Basislyn","bgColor":"Agtergrondkleur","borderColor":"Randkleur","data":"Inhoud","header":"Opskrif","yes":"Ja","no":"Nee","invalidWidth":"Selbreedte moet 'n getal wees.","invalidHeight":"Selhoogte moet 'n getal wees.","invalidRowSpan":"Omspan rye moet 'n heelgetal wees.","invalidColSpan":"Omspan kolomme moet 'n heelgetal wees.","chooseColor":"Kies"},"cellPad":"Sel-spasie","cellSpace":"Sel-afstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Verwyder kolom"},"columns":"Kolomme","deleteTable":"Verwyder tabel","headers":"Opskrifte","headersBoth":"Beide ","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste ry","invalidBorder":"Randbreedte moet 'n getal wees.","invalidCellPadding":"Sel-spasie moet 'n getal wees.","invalidCellSpacing":"Sel-afstand moet 'n getal wees.","invalidCols":"Aantal kolomme moet 'n getal groter as 0 wees.","invalidHeight":"Tabelhoogte moet 'n getal wees.","invalidRows":"Aantal rye moet 'n getal groter as 0 wees.","invalidWidth":"Tabelbreedte moet 'n getal wees.","menu":"Tabel eienskappe","row":{"menu":"Ry","insertBefore":"Voeg ry in voor","insertAfter":"Voeg ry in na","deleteRow":"Verwyder ry"},"rows":"Rye","summary":"Opsomming","title":"Tabel eienskappe","toolbar":"Tabel","widthPc":"persent","widthPx":"piksels","widthUnit":"breedte-eenheid"},"stylescombo":{"label":"Styl","panelTitle":"Vormaat style","panelTitle1":"Blok style","panelTitle2":"Inlyn style","panelTitle3":"Objek style"},"specialchar":{"options":"Spesiale karakter-opsies","title":"Kies spesiale karakter","toolbar":"Voeg spesiaale karakter in"},"sourcearea":{"toolbar":"Bron"},"scayt":{"btn_about":"SCAYT info","btn_dictionaries":"Woordeboeke","btn_disable":"SCAYT af","btn_enable":"SCAYT aan","btn_langs":"Tale","btn_options":"Opsies","text_title":"Speltoets terwyl u tik"},"removeformat":{"toolbar":"Verwyder opmaak"},"pastetext":{"button":"Plak as eenvoudige teks","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Die teks wat u wil plak lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit geplak word?","error":"Die geplakte teks kon nie skoongemaak word nie, weens 'n interne fout","title":"Plak vanuit Word","toolbar":"Plak vanuit Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimaliseer","minimize":"Minimaliseer"},"magicline":{"title":"Voeg paragraaf hier in"},"list":{"bulletedlist":"Ongenommerde lys","numberedlist":"Genommerde lys"},"link":{"acccessKey":"Toegangsleutel","advanced":"Gevorderd","advisoryContentType":"Aanbevole inhoudstipe","advisoryTitle":"Aanbevole titel","anchor":{"toolbar":"Anker byvoeg/verander","menu":"Anker-eienskappe","title":"Anker-eienskappe","name":"Ankernaam","errorName":"Voltooi die ankernaam asseblief","remove":"Remove Anchor"},"anchorId":"Op element Id","anchorName":"Op ankernaam","charset":"Karakterstel van geskakelde bron","cssClasses":"CSS klasse","download":"Force Download","displayText":"Display Text","emailAddress":"E-posadres","emailBody":"Berig-inhoud","emailSubject":"Berig-onderwerp","id":"Id","info":"Skakel informasie","langCode":"Taalkode","langDir":"Skryfrigting","langDirLTR":"Links na regs (LTR)","langDirRTL":"Regs na links (RTL)","menu":"Wysig skakel","name":"Naam","noAnchors":"(Geen ankers beskikbaar in dokument)","noEmail":"Gee die e-posadres","noUrl":"Gee die skakel se URL","other":"<ander>","popupDependent":"Afhanklik (Netscape)","popupFeatures":"Eienskappe van opspringvenster","popupFullScreen":"Volskerm (IE)","popupLeft":"Posisie links","popupLocationBar":"Adresbalk","popupMenuBar":"Spyskaartbalk","popupResizable":"Herskaalbaar","popupScrollBars":"Skuifbalke","popupStatusBar":"Statusbalk","popupToolbar":"Werkbalk","popupTop":"Posisie bo","rel":"Relationship","selectAnchor":"Kies 'n anker","styles":"Styl","tabIndex":"Tab indeks","target":"Doel","targetFrame":"<raam>","targetFrameName":"Naam van doelraam","targetPopup":"<opspringvenster>","targetPopupName":"Naam van opspringvenster","title":"Skakel","toAnchor":"Anker in bladsy","toEmail":"E-pos","toUrl":"URL","toolbar":"Skakel invoeg/wysig","type":"Skakelsoort","unlink":"Verwyder skakel","upload":"Oplaai"},"indent":{"indent":"Vergroot inspring","outdent":"Verklein inspring"},"image":{"alt":"Alternatiewe teks","border":"Rand","btnUpload":"Stuur na bediener","button2Img":"Wil u die geselekteerde afbeeldingsknop vervang met 'n eenvoudige afbeelding?","hSpace":"HSpasie","img2Button":"Wil u die geselekteerde afbeelding vervang met 'n afbeeldingsknop?","infoTab":"Afbeelding informasie","linkTab":"Skakel","lockRatio":"Vaste proporsie","menu":"Afbeelding eienskappe","resetSize":"Herstel grootte","title":"Afbeelding eienskappe","titleButton":"Afbeeldingsknop eienskappe","upload":"Oplaai","urlMissing":"Die URL na die afbeelding ontbreek.","vSpace":"VSpasie","validateBorder":"Rand moet 'n heelgetal wees.","validateHSpace":"HSpasie moet 'n heelgetal wees.","validateVSpace":"VSpasie moet 'n heelgetal wees."},"horizontalrule":{"toolbar":"Horisontale lyn invoeg"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Opskrif 1","tag_h2":"Opskrif 2","tag_h3":"Opskrif 3","tag_h4":"Opskrif 4","tag_h5":"Opskrif 5","tag_h6":"Opskrif 6","tag_p":"Normaal","tag_pre":"Opgemaak"},"fakeobjects":{"anchor":"Anker","flash":"Flash animasie","hiddenfield":"Verborge veld","iframe":"IFrame","unknown":"Onbekende objek"},"elementspath":{"eleLabel":"Elemente-pad","eleTitle":"%1 element"},"contextmenu":{"options":"Konteks Spyskaart-opsies"},"clipboard":{"copy":"Kopiëer","copyError":"U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).","cut":"Knip","cutError":"U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).","paste":"Plak","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 uitgekies"},"blockquote":{"toolbar":"Sitaatblok"},"basicstyles":{"bold":"Vet","italic":"Skuins","strike":"Deurgestreep","subscript":"Onderskrif","superscript":"Bo-skrif","underline":"Onderstreep"},"about":{"copy":"Kopiereg © $1. Alle regte voorbehou.","dlgTitle":"Meer oor CKEditor","help":"Slaan $1 na vir hulp.","moreInfo":"Vir lisensie-informasie, besoek asb. ons webwerf:","title":"Meer oor CKEditor","userGuide":"CKEditor Gebruikers gits"},"editor":"Woordverwerker","editorPanel":"Woordverwerkerpaneel","common":{"editorHelp":"Druk op ALT 0 vir hulp","browseServer":"Blaai op bediener","url":"URL","protocol":"Protokol","upload":"Oplaai","uploadSubmit":"Stuur aan die bediener","image":"Beeld","flash":"Flash","form":"Vorm","checkbox":"Merkhokkie","radio":"Radioknoppie","textField":"Teksveld","textarea":"Teksarea","hiddenField":"Versteekteveld","button":"Knop","select":"Keuseveld","imageButton":"Beeldknop","notSet":"<geen instelling>","id":"Id","name":"Naam","langDir":"Skryfrigting","langDirLtr":"Links na regs (LTR)","langDirRtl":"Regs na links (RTL)","langCode":"Taalkode","longDescr":"Lang beskrywing URL","cssClass":"CSS klasse","advisoryTitle":"Aanbevole titel","cssStyle":"Styl","ok":"OK","cancel":"Kanselleer","close":"Sluit","preview":"Voorbeeld","resize":"Skalierung","generalTab":"Algemeen","advancedTab":"Gevorderd","validateNumberFailed":"Hierdie waarde is nie 'n nommer nie.","confirmNewPage":"Alle wysiginge sal verlore gaan. Is jy seker dat jy 'n nuwe bladsy wil laai?","confirmCancel":"Sommige opsies is gewysig. Is jy seker dat jy hierdie dialoogvenster wil sluit?","options":"Opsies","target":"Teiken","targetNew":"Nuwe venster (_blank)","targetTop":"Boonste venster (_top)","targetSelf":"Selfde venster (_self)","targetParent":"Oorspronklike venster (_parent)","langDirLTR":"Links na Regs (LTR)","langDirRTL":"Regs na Links (RTL)","styles":"Styl","cssClasses":"CSS klasse","width":"Breedte","height":"Hoogte","align":"Orienteerung","alignLeft":"Links","alignRight":"Regs","alignCenter":"Middel","alignJustify":"Eweredig","alignTop":"Bo","alignMiddle":"Middel","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde","invalidHeight":"Hoogte moet 'n getal wees","invalidWidth":"Breedte moet 'n getal wees.","invalidCssLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","invalidHtmlLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige HTML eenheid (px of %).","invalidInlineStyle":"Ongeldige CSS. Formaat is een of meer sleutel-wert paare, \"naam : wert\" met kommapunte gesky.","cssLengthTooltip":"Voeg 'n getal wert in pixel in, of 'n waarde met geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, nie beskikbaar nie</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Skuif","17":"Ctrl","18":"Alt","32":"Spasie","35":"Einde","36":"Tuis","46":"Verwyder","224":"Bevel"},"keyboardShortcut":"Sleutel kombenasie"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ar.js b/vendor/unisharp/laravel-ckeditor/lang/ar.js deleted file mode 100644 index 0c1e3558f..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ar']={"wsc":{"btnIgnore":"تجاهل","btnIgnoreAll":"تجاهل الكل","btnReplace":"تغيير","btnReplaceAll":"تغيير الكل","btnUndo":"تراجع","changeTo":"التغيير إلى","errorLoading":"خطأ في تحميل تطبيق خدمة الاستضافة: %s.","ieSpellDownload":"المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟","manyChanges":"تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات","noChanges":"تم التدقيق الإملائي: لم يتم تغيير أي كلمة","noMispell":"تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية","noSuggestions":"- لا توجد إقتراحات -","notAvailable":"عفواً، ولكن هذه الخدمة غير متاحة الان","notInDic":"ليست في القاموس","oneChange":"تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط","progress":"جاري التدقيق الاملائى","title":"التدقيق الإملائي","toolbar":"تدقيق إملائي"},"undo":{"redo":"إعادة","undo":"تراجع"},"toolbar":{"toolbarCollapse":"تقليص شريط الأدوت","toolbarExpand":"تمديد شريط الأدوات","toolbarGroups":{"document":"مستند","clipboard":"الحافظة/الرجوع","editing":"تحرير","forms":"نماذج","basicstyles":"نمط بسيط","paragraph":"فقرة","links":"روابط","insert":"إدراج","styles":"أنماط","colors":"ألوان","tools":"أدوات"},"toolbars":"أشرطة أدوات المحرر"},"table":{"border":"الحدود","caption":"الوصف","cell":{"menu":"خلية","insertBefore":"إدراج خلية قبل","insertAfter":"إدراج خلية بعد","deleteCell":"حذف خلية","merge":"دمج خلايا","mergeRight":"دمج لليمين","mergeDown":"دمج للأسفل","splitHorizontal":"تقسيم الخلية أفقياً","splitVertical":"تقسيم الخلية عمودياً","title":"خصائص الخلية","cellType":"نوع الخلية","rowSpan":"امتداد الصفوف","colSpan":"امتداد الأعمدة","wordWrap":"التفاف النص","hAlign":"محاذاة أفقية","vAlign":"محاذاة رأسية","alignBaseline":"خط القاعدة","bgColor":"لون الخلفية","borderColor":"لون الحدود","data":"بيانات","header":"عنوان","yes":"نعم","no":"لا","invalidWidth":"عرض الخلية يجب أن يكون عدداً.","invalidHeight":"ارتفاع الخلية يجب أن يكون عدداً.","invalidRowSpan":"امتداد الصفوف يجب أن يكون عدداً صحيحاً.","invalidColSpan":"امتداد الأعمدة يجب أن يكون عدداً صحيحاً.","chooseColor":"اختر"},"cellPad":"المسافة البادئة","cellSpace":"تباعد الخلايا","column":{"menu":"عمود","insertBefore":"إدراج عمود قبل","insertAfter":"إدراج عمود بعد","deleteColumn":"حذف أعمدة"},"columns":"أعمدة","deleteTable":"حذف الجدول","headers":"العناوين","headersBoth":"كلاهما","headersColumn":"العمود الأول","headersNone":"بدون","headersRow":"الصف الأول","invalidBorder":"حجم الحد يجب أن يكون عدداً.","invalidCellPadding":"المسافة البادئة يجب أن تكون عدداً","invalidCellSpacing":"المسافة بين الخلايا يجب أن تكون عدداً.","invalidCols":"عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.","invalidHeight":"ارتفاع الجدول يجب أن يكون عدداً.","invalidRows":"عدد الصفوف يجب أن يكون عدداً أكبر من صفر.","invalidWidth":"عرض الجدول يجب أن يكون عدداً.","menu":"خصائص الجدول","row":{"menu":"صف","insertBefore":"إدراج صف قبل","insertAfter":"إدراج صف بعد","deleteRow":"حذف صفوف"},"rows":"صفوف","summary":"الخلاصة","title":"خصائص الجدول","toolbar":"جدول","widthPc":"بالمئة","widthPx":"بكسل","widthUnit":"وحدة العرض"},"stylescombo":{"label":"أنماط","panelTitle":"أنماط التنسيق","panelTitle1":"أنماط الفقرة","panelTitle2":"أنماط مضمنة","panelTitle3":"أنماط الكائن"},"specialchar":{"options":"خيارات الأحرف الخاصة","title":"اختر حرف خاص","toolbar":"إدراج حرف خاص"},"sourcearea":{"toolbar":"المصدر"},"scayt":{"btn_about":"عن SCAYT","btn_dictionaries":"قواميس","btn_disable":"تعطيل SCAYT","btn_enable":"تفعيل SCAYT","btn_langs":"لغات","btn_options":"خيارات","text_title":"تدقيق إملائي أثناء الكتابة"},"removeformat":{"toolbar":"إزالة التنسيقات"},"pastetext":{"button":"لصق كنص بسيط","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟","error":"لم يتم مسح المعلومات الملصقة لخلل داخلي","title":"لصق من وورد","toolbar":"لصق من وورد"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"تكبير","minimize":"تصغير"},"magicline":{"title":"إدراج فقرة هنا"},"list":{"bulletedlist":"ادخال/حذف تعداد نقطي","numberedlist":"ادخال/حذف تعداد رقمي"},"link":{"acccessKey":"مفاتيح الإختصار","advanced":"متقدم","advisoryContentType":"نوع التقرير","advisoryTitle":"عنوان التقرير","anchor":{"toolbar":"إشارة مرجعية","menu":"تحرير الإشارة المرجعية","title":"خصائص الإشارة المرجعية","name":"اسم الإشارة المرجعية","errorName":"الرجاء كتابة اسم الإشارة المرجعية","remove":"إزالة الإشارة المرجعية"},"anchorId":"حسب رقم العنصر","anchorName":"حسب إسم الإشارة المرجعية","charset":"ترميز المادة المطلوبة","cssClasses":"فئات التنسيق","download":"Force Download","displayText":"Display Text","emailAddress":"البريد الإلكتروني","emailBody":"محتوى الرسالة","emailSubject":"موضوع الرسالة","id":"هوية","info":"معلومات الرابط","langCode":"رمز اللغة","langDir":"إتجاه نص اللغة","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","menu":"تحرير الرابط","name":"إسم","noAnchors":"(لا توجد علامات مرجعية في هذا المستند)","noEmail":"الرجاء كتابة الريد الإلكتروني","noUrl":"الرجاء كتابة رابط الموقع","other":"<أخرى>","popupDependent":"تابع (Netscape)","popupFeatures":"خصائص النافذة المنبثقة","popupFullScreen":"ملئ الشاشة (IE)","popupLeft":"التمركز لليسار","popupLocationBar":"شريط العنوان","popupMenuBar":"القوائم الرئيسية","popupResizable":"قابلة التشكيل","popupScrollBars":"أشرطة التمرير","popupStatusBar":"شريط الحالة","popupToolbar":"شريط الأدوات","popupTop":"التمركز للأعلى","rel":"العلاقة","selectAnchor":"اختر علامة مرجعية","styles":"نمط","tabIndex":"الترتيب","target":"هدف الرابط","targetFrame":"<إطار>","targetFrameName":"اسم الإطار المستهدف","targetPopup":"<نافذة منبثقة>","targetPopupName":"اسم النافذة المنبثقة","title":"رابط","toAnchor":"مكان في هذا المستند","toEmail":"بريد إلكتروني","toUrl":"الرابط","toolbar":"رابط","type":"نوع الربط","unlink":"إزالة رابط","upload":"رفع"},"indent":{"indent":"زيادة المسافة البادئة","outdent":"إنقاص المسافة البادئة"},"image":{"alt":"عنوان الصورة","border":"سمك الحدود","btnUpload":"أرسلها للخادم","button2Img":"هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟","hSpace":"تباعد أفقي","img2Button":"هل تريد تحويل الصورة المختارة إلى زر صورة؟","infoTab":"معلومات الصورة","linkTab":"الرابط","lockRatio":"تناسق الحجم","menu":"خصائص الصورة","resetSize":"إستعادة الحجم الأصلي","title":"خصائص الصورة","titleButton":"خصائص زر الصورة","upload":"رفع","urlMissing":"عنوان مصدر الصورة مفقود","vSpace":"تباعد عمودي","validateBorder":"الإطار يجب أن يكون عددا","validateHSpace":"HSpace يجب أن يكون عدداً.","validateVSpace":"VSpace يجب أن يكون عدداً."},"horizontalrule":{"toolbar":"خط فاصل"},"format":{"label":"تنسيق","panelTitle":"تنسيق الفقرة","tag_address":"عنوان","tag_div":"عادي (DIV)","tag_h1":"العنوان 1","tag_h2":"العنوان 2","tag_h3":"العنوان 3","tag_h4":"العنوان 4","tag_h5":"العنوان 5","tag_h6":"العنوان 6","tag_p":"عادي","tag_pre":"منسّق"},"fakeobjects":{"anchor":"إرساء","flash":"رسم متحرك بالفلاش","hiddenfield":"إدراج حقل خفي","iframe":"iframe","unknown":"عنصر غير معروف"},"elementspath":{"eleLabel":"مسار العنصر","eleTitle":"عنصر 1%"},"contextmenu":{"options":"خصائص قائمة السياق"},"clipboard":{"copy":"نسخ","copyError":"الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).","cut":"قص","cutError":"الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).","paste":"لصق","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (محدد)"},"blockquote":{"toolbar":"اقتباس"},"basicstyles":{"bold":"عريض","italic":"مائل","strike":"يتوسطه خط","subscript":"منخفض","superscript":"مرتفع","underline":"تسطير"},"about":{"copy":"حقوق النشر © $1. جميع الحقوق محفوظة.","dlgTitle":"عن CKEditor","help":"راجع $1 من أجل المساعدة","moreInfo":"للحصول على معلومات الترخيص ، يرجى زيارة موقعنا:","title":"عن CKEditor","userGuide":"دليل مستخدم CKEditor."},"editor":"محرر النص الغني","editorPanel":"لائحة محرر النص المنسق","common":{"editorHelp":"إضغط على ALT + 0 للحصول على المساعدة.","browseServer":"تصفح","url":"الرابط","protocol":"البروتوكول","upload":"رفع","uploadSubmit":"أرسل","image":"صورة","flash":"فلاش","form":"نموذج","checkbox":"خانة إختيار","radio":"زر اختيار","textField":"مربع نص","textarea":"مساحة نصية","hiddenField":"إدراج حقل خفي","button":"زر ضغط","select":"اختار","imageButton":"زر صورة","notSet":"<بدون تحديد>","id":"الرقم","name":"إسم","langDir":"إتجاه النص","langDirLtr":"اليسار لليمين (LTR)","langDirRtl":"اليمين لليسار (RTL)","langCode":"رمز اللغة","longDescr":"الوصف التفصيلى","cssClass":"فئات التنسيق","advisoryTitle":"عنوان التقرير","cssStyle":"نمط","ok":"موافق","cancel":"إلغاء الأمر","close":"أغلق","preview":"استعراض","resize":"تغيير الحجم","generalTab":"عام","advancedTab":"متقدم","validateNumberFailed":"لايوجد نتيجة","confirmNewPage":"ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟","confirmCancel":"بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟","options":"خيارات","target":"هدف الرابط","targetNew":"نافذة جديدة","targetTop":"النافذة الأعلى","targetSelf":"داخل النافذة","targetParent":"النافذة الأم","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","styles":"نمط","cssClasses":"فئات التنسيق","width":"العرض","height":"الإرتفاع","align":"محاذاة","alignLeft":"يسار","alignRight":"يمين","alignCenter":"وسط","alignJustify":"ضبط","alignTop":"أعلى","alignMiddle":"وسط","alignBottom":"أسفل","alignNone":"None","invalidValue":"قيمة غير مفبولة.","invalidHeight":"الارتفاع يجب أن يكون عدداً.","invalidWidth":"العرض يجب أن يكون عدداً.","invalidCssLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة HTML قياس مقبولة (px or %).","invalidInlineStyle":"قيمة الخانة المخصصة لـ Inline Style يجب أن تختوي على مجموع واحد أو أكثر بالشكل التالي: \"name : value\", مفصولة بفاصلة منقزطة.","cssLengthTooltip":"أدخل رقما للقيمة بالبكسل أو رقما بوحدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, غير متاح</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/az.js b/vendor/unisharp/laravel-ckeditor/lang/az.js deleted file mode 100644 index a1b0b5bb1..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['az']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Təkrar et","undo":"İmtina et"},"toolbar":{"toolbarCollapse":"Paneli gizlət","toolbarExpand":"Paneli göstər","toolbarGroups":{"document":"Mətn","clipboard":"Mübadilə buferi/İmtina et","editing":"Redaktə edilməsi","forms":"Formalar","basicstyles":"Əsas üslublar","paragraph":"Abzas","links":"Link","insert":"Əlavə et","styles":"Üslublar","colors":"Rənqlər","tools":"Alətləri"},"toolbars":"Redaktorun panelləri"},"table":{"border":"Sərhədlərin eni","caption":"Cədvəlin başlığı","cell":{"menu":"Xana","insertBefore":"Burdan əvvələ xanası çək","insertAfter":"Burdan sonra xanası çək","deleteCell":"Xanaları sil","merge":"Xanaları birləşdir","mergeRight":"Sağdan birləşdir","mergeDown":"Soldan birləşdir","splitHorizontal":"Üfüqi böl","splitVertical":"Şaquli böl","title":"Xanaların seçimləri","cellType":"Xana növü","rowSpan":"Sətirləri birləşdir","colSpan":"Sütunları birləşdir","wordWrap":"Sətirlərin sınması","hAlign":"Üfüqi düzləndirmə","vAlign":"Şaquli düzləndirmə","alignBaseline":"Mətn xətti","bgColor":"Doldurma rəngi","borderColor":"Sərhədin rəngi","data":"Məlumatlar","header":"Başlıq","yes":"Bəli","no":"Xeyr","invalidWidth":"Xanasın eni rəqəm olmalıdır.","invalidHeight":"Xanasın hündürlüyü rəqəm olmalıdır.","invalidRowSpan":"Birləşdirdiyiniz sütun xanaların sayı tam və müsbət rəqəm olmalıdır.","invalidColSpan":"Birləşdirdiyiniz sətir xanaların sayı tam və müsbət rəqəm olmalıdır.","chooseColor":"Seç"},"cellPad":"Xanalardakı kənar boşluqlar","cellSpace":"Xanalararası interval","column":{"menu":"Sütun","insertBefore":"Sola sütun əlavə et","insertAfter":"Sağa sütun əlavə et","deleteColumn":"Sütunları sil"},"columns":"Sütunlar","deleteTable":"Cədvəli sil","headers":"Başlıqlar","headersBoth":"Hər ikisi","headersColumn":"Birinci sütun","headersNone":"yox","headersRow":"Birinci sətir","invalidBorder":"Sərhədlərin eni müsbət rəqəm olmalıdır.","invalidCellPadding":"Xanalardakı kənar boşluqlar müsbət rəqəm olmalıdır.","invalidCellSpacing":"Xanalararası interval müsbət rəqəm olmalıdır.","invalidCols":"Sütunlarin sayı tam və müsbət olmalıdır.","invalidHeight":"Cədvəlin hündürlüyü rəqəm olmalıdır.","invalidRows":"Sətirlətin sayı tam və müsbət olmalıdır.","invalidWidth":"Cədvəlin eni rəqəm olmalıdır.","menu":"Cədvəl alətləri","row":{"menu":"Sətir","insertBefore":"Yuxarıya sətir əlavə et","insertAfter":"Aşağıya sətir əlavə et","deleteRow":"Sətirləri sil"},"rows":"Sətirlər","summary":"Xülasə","title":"Cədvəl alətləri","toolbar":"Cədvəl","widthPc":"faiz","widthPx":"piksel","widthUnit":"en vahidi"},"stylescombo":{"label":"Üslub","panelTitle":"Format üslubları","panelTitle1":"Blokların üslubları","panelTitle2":"Sözlərin üslubları","panelTitle3":"Obyektlərin üslubları"},"specialchar":{"options":"Xüsusi simvolların seçimləri","title":"Xüsusi simvolu seç","toolbar":"Xüsusi simvolu daxil et"},"sourcearea":{"toolbar":"HTML mənbəyini göstər"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Formatı sil"},"pastetext":{"button":"Yalnız mətni saxla","pasteNotification":"Sizin İnternet bələdçiniz bu cür mətnin köçürməsini dəstəklənmir. Əlavə etmək üçün %1 basın."},"pastefromword":{"confirmCleanup":"Əlavə edilən mətn Word-dan köçürülənə oxşayır. Təmizləmək istəyirsinizmi?","error":"Daxili səhvə görə əlavə edilən məlumatların təmizlənməsi mümkün deyil","title":"Word-dan əlavəetmə","toolbar":"Word-dan əlavəetmə"},"notification":{"closed":"Xəbərdarlıq pəncərəsi bağlanıb"},"maximize":{"maximize":"Aşkarla","minimize":"Gizlət"},"magicline":{"title":"Abzası burada əlavə et"},"list":{"bulletedlist":"Markerlənmiş siyahını başlat/sil","numberedlist":"Nömrələnmiş siyahını başlat/sil"},"link":{"acccessKey":"Qısayol düyməsi","advanced":"Geniş seçimləri","advisoryContentType":"Məsləhətli məzmunun növü","advisoryTitle":"Məsləhətli başlıq","anchor":{"toolbar":"Xeş","menu":"Xeşi redaktə et","title":"Xeşin seçimləri","name":"Xeşin adı","errorName":"Xeşin adı yanlışdır","remove":"Xeşin adı sil"},"anchorId":"ID görə","anchorName":"Xeşin adına görə","charset":"Hədəfin kodlaşdırması","cssClasses":"Üslub klası","download":"Məcburi yükləmə","displayText":"Göstərilən mətn","emailAddress":"E-poçt ünvanı","emailBody":"Mesajın məzmunu","emailSubject":"Mesajın başlığı","id":"ID","info":"Linkin xüsusiyyətləri","langCode":"Dilin kodu","langDir":"Yaziların istiqaməti","langDirLTR":"Soldan sağa (LTR)","langDirRTL":"Sağdan sola (RTL)","menu":"Linki redaktə et","name":"Ad","noAnchors":"(heç bir xeş tapılmayıb)","noEmail":"E-poçt ünvanı daxil edin","noUrl":"Linkin URL-ı daxil edin","other":"<digər>","popupDependent":"Asılı (Netscape)","popupFeatures":"Pəncərənin xüsusiyyətləri","popupFullScreen":"Tam ekran rejimi (IE)","popupLeft":"Solda","popupLocationBar":"Ünvan paneli","popupMenuBar":"Menyu paneli","popupResizable":"Olçülər dəyişilir","popupScrollBars":"Sürüşdürmələr göstər","popupStatusBar":"Bildirişlərin paneli","popupToolbar":"Alətlərin paneli","popupTop":"Yuxarıda","rel":"Münasibət","selectAnchor":"Xeşi seçin","styles":"Üslub","tabIndex":"Tabın nömrəsi","target":"Hədəf çərçivə","targetFrame":"<freym>","targetFrameName":"Freymin adı","targetPopup":"<yeni pəncərə>","targetPopupName":"Pəncərənin adı","title":"Link","toAnchor":"Xeş","toEmail":"E-poçt","toUrl":"URL","toolbar":"Link","type":"Linkin növü","unlink":"Linki sil","upload":"Serverə yüklə"},"indent":{"indent":"Sol boşluqu artır","outdent":"Sol boşluqu azalt"},"image":{"alt":"Alternativ mətn","border":"Sərhəd","btnUpload":"Serverə yüklə","button2Img":"Şəkil tipli düyməni şəklə çevirmək istədiyinizə əminsinizmi?","hSpace":"Üfüqi boşluq","img2Button":"Şəkli şəkil tipli düyməyə çevirmək istədiyinizə əminsinizmi?","infoTab":"Şəkil haqqında məlumat","linkTab":"Link","lockRatio":"Ölçülərin uyğunluğu saxla","menu":"Şəklin seçimləri","resetSize":"Ölçüləri qaytar","title":"Şəklin seçimləri","titleButton":"Şəkil tipli düyməsinin seçimləri","upload":"Serverə yüklə","urlMissing":"Şəklin ünvanı yanlışdır.","vSpace":"Şaquli boşluq","validateBorder":"Sərhədin eni rəqəm olmalıdır.","validateHSpace":"Üfüqi boşluq rəqəm olmalıdır.","validateVSpace":"Şaquli boşluq rəqəm olmalıdır."},"horizontalrule":{"toolbar":"Sərhəd xətti yarat"},"format":{"label":"Format","panelTitle":"Abzasın formatı","tag_address":"Ünvan","tag_div":"Normal (DIV)","tag_h1":"Başlıq 1","tag_h2":"Başlıq 2","tag_h3":"Başlıq 3","tag_h4":"Başlıq 4","tag_h5":"Başlıq 5","tag_h6":"Başlıq 6","tag_p":"Normal","tag_pre":"Formatı saxla"},"fakeobjects":{"anchor":"Lövbər","flash":"Flash animasiya","hiddenfield":"Gizli xana","iframe":"IFrame","unknown":"Tanımamış obyekt"},"elementspath":{"eleLabel":"Elementin izləri","eleTitle":"%1 element"},"contextmenu":{"options":"Əlavə əməliyyatlar"},"clipboard":{"copy":"Köçür","copyError":"Avtomatik köçürülməsi mümkün deyil. Ctrl+C basın.","cut":"Kəs","cutError":"Avtomatik kəsmə mümkün deyil. Ctrl+X basın.","paste":"Əlavə et","pasteNotification":"Sizin İnternet bələdçisi bu cür mətnin köçürməsi dəstəklənmir. Əlavə etmək üçün %1 basın."},"button":{"selectedLabel":"%1 (seçilib)"},"blockquote":{"toolbar":"Sitat bloku"},"basicstyles":{"bold":"Qalın","italic":"Kursiv","strike":"Üstüxətli","subscript":"Aşağı indeks","superscript":"Yuxarı indeks","underline":"Altdan xətt"},"about":{"copy":"Copyright © $1. Bütün hüquqlar qorunur.","dlgTitle":"CKEditor haqqında","help":"Kömək üçün $1 seçin","moreInfo":"Lisenziya informasiyası üçün zəhmət olmasa saytımızı ziyarət edin:","title":"CKEditor haqqında","userGuide":"CKEditor İstifadəçilər üçün kitabça"},"editor":"Mətn Redaktoru","editorPanel":"Mətn Redaktorun Paneli","common":{"editorHelp":"Yardım üçün ALT 0 düymələrini basın","browseServer":"Fayların siyahı","url":"URL","protocol":"Protokol","upload":"Serverə yüklə","uploadSubmit":"Göndər","image":"Şəkil","flash":"Flash","form":"Forma","checkbox":"Çekboks","radio":"Radio düyməsi","textField":"Mətn xanası","textarea":"Mətn","hiddenField":"Gizli xana","button":"Düymə","select":"Opsiyaların seçilməsi","imageButton":"Şəkil tipli düymə","notSet":"<seçilməmiş>","id":"Id","name":"Ad","langDir":"Yaziların istiqaməti","langDirLtr":"Soldan sağa (LTR)","langDirRtl":"Sağdan sola (RTL)","langCode":"Dilin kodu","longDescr":"URL-ın ətraflı izahı","cssClass":"CSS klassları","advisoryTitle":"Başlıq","cssStyle":"CSS","ok":"Tədbiq et","cancel":"İmtina et","close":"Bağla","preview":"Baxış","resize":"Eni dəyiş","generalTab":"Əsas","advancedTab":"Əlavə","validateNumberFailed":"Rəqəm deyil.","confirmNewPage":"Yadda saxlanılmamış dəyişikliklər itiriləcək. Davam etmək istədiyinizə əminsinizmi?","confirmCancel":"Dəyişikliklər edilib. Pəncərəni bağlamaq istəyirsizə əminsinizmi?","options":"Seçimlər","target":"Hədəf çərçivə","targetNew":"Yeni pəncərə (_blank)","targetTop":"Əsas pəncərə (_top)","targetSelf":"Carı pəncərə (_self)","targetParent":"Ana pəncərə (_parent)","langDirLTR":"Soldan sağa (LTR)","langDirRTL":"Sağdan sola (RTL)","styles":"Üslub","cssClasses":"Üslub klası","width":"En","height":"Uzunluq","align":"Yerləşmə","alignLeft":"Sol","alignRight":"Sağ","alignCenter":"Mərkəz","alignJustify":"Eninə görə","alignTop":"Yuxarı","alignMiddle":"Orta","alignBottom":"Aşağı","alignNone":"Yoxdur","invalidValue":"Yanlışdır.","invalidHeight":"Hündürlük rəqəm olmalıdır.","invalidWidth":"En rəqəm olmalıdır.","invalidCssLength":"\"%1\" xanasında göstərilən məzmun tam və müsbət olmalıdır, CSS-də olan ölçü vahidlərin (px, %, in, cm, mm, em, ex, pt, or pc) istifadısinə icazə verilir.","invalidHtmlLength":"\"%1\" xanasında göstərilən məzmun tam və müsbət olmalıdır HTML-də olan ölçü vahidlərin (px və ya %) istifadısinə icazə verilir.","invalidInlineStyle":"Teq içində olan üslub \"ad : məzmun\" şəklidə, nöqtə-verqül işarəsi ilə bitməlidir","cssLengthTooltip":"Piksel sayı və ya digər CSS ölçü vahidləri (px, %, in, cm, mm, em, ex, pt, or pc) daxil edin.","unavailable":"%1<span class=\"cke_accessibility\">, mövcud deyil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Boşluq","35":"Son","36":"Evə","46":"Sil","224":"Əmr"},"keyboardShortcut":"Qısayol düymələri"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/bg.js b/vendor/unisharp/laravel-ckeditor/lang/bg.js deleted file mode 100644 index 6accc4191..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['bg']={"wsc":{"btnIgnore":"Игнорирай","btnIgnoreAll":"Игнорирай всичко","btnReplace":"Препокриване","btnReplaceAll":"Препокрий всичко","btnUndo":"Възтанови","changeTo":"Промени на","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- Няма препоръчани -","notAvailable":"Съжаляваме, но услугата не е достъпна за момента","notInDic":"Не е в речника","oneChange":"Spell check complete: One word changed","progress":"Проверява се правописа...","title":"Проверка на правопис","toolbar":"Проверка на правопис"},"undo":{"redo":"Връщане на предишен статус","undo":"Възтанови"},"toolbar":{"toolbarCollapse":"Свиване на лентата с инструменти","toolbarExpand":"Разширяване на лентата с инструменти","toolbarGroups":{"document":"Документ","clipboard":"Клипборд/Отмяна","editing":"Промяна","forms":"Форми","basicstyles":"Базови стилове","paragraph":"Параграф","links":"Връзки","insert":"Вмъкване","styles":"Стилове","colors":"Цветове","tools":"Инструменти"},"toolbars":"Ленти с инструменти"},"table":{"border":"Размер на рамката","caption":"Заглавие","cell":{"menu":"Клетка","insertBefore":"Вмъкване на клетка преди","insertAfter":"Вмъкване на клетка след","deleteCell":"Изтриване на клетки","merge":"Сливане на клетки","mergeRight":"Сливане в дясно","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Настройки на клетката","cellType":"Тип на клетката","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Авто. пренос","hAlign":"Хоризонтално подравняване","vAlign":"Вертикално подравняване","alignBaseline":"Базова линия","bgColor":"Фон","borderColor":"Цвят на рамката","data":"Данни","header":"Хедър","yes":"Да","no":"Не","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Изберете"},"cellPad":"Отделяне на клетките","cellSpace":"Разтояние между клетките","column":{"menu":"Колона","insertBefore":"Вмъкване на колона преди","insertAfter":"Вмъкване на колона след","deleteColumn":"Изтриване на колони"},"columns":"Колони","deleteTable":"Изтриване на таблица","headers":"Хедъри","headersBoth":"Заедно","headersColumn":"Първа колона","headersNone":"Няма","headersRow":"Първи ред","invalidBorder":"Размерът на рамката трябва да е число.","invalidCellPadding":"Отстоянието на клетките трябва да е позитивно число.","invalidCellSpacing":"Интервала в клетките трябва да е позитивно число.","invalidCols":"Броят колони трябва да е по-голям от 0.","invalidHeight":"Височината на таблицата трябва да е число.","invalidRows":"Броят редове трябва да е по-голям от 0.","invalidWidth":"Ширината на таблицата трябва да е число.","menu":"Настройки на таблицата","row":{"menu":"Ред","insertBefore":"Вмъкване на ред преди","insertAfter":"Вмъкване на ред след","deleteRow":"Изтриване на редове"},"rows":"Редове","summary":"Обща информация","title":"Настройки на таблицата","toolbar":"Таблица","widthPc":"процент","widthPx":"пиксела","widthUnit":"единица за ширина"},"stylescombo":{"label":"Стилове","panelTitle":"Стилове за форматиране","panelTitle1":"Блокови стилове","panelTitle2":"Вътрешни стилове","panelTitle3":"Обектни стилове"},"specialchar":{"options":"Опции за специален знак","title":"Избор на специален знак","toolbar":"Вмъкване на специален знак"},"sourcearea":{"toolbar":"Изходен код"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Речници","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Премахване на форматирането"},"pastetext":{"button":"Вмъкни като чист текст","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Вмъкни от MS Word","toolbar":"Вмъкни от MS Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Максимизиране","minimize":"Минимизиране"},"magicline":{"title":"Вмъкнете параграф тук"},"list":{"bulletedlist":"Вмъкване/Премахване на точков списък","numberedlist":"Вмъкване/Премахване на номериран списък"},"link":{"acccessKey":"Ключ за достъп","advanced":"Разширено","advisoryContentType":"Препоръчителен тип на съдържанието","advisoryTitle":"Препоръчително заглавие","anchor":{"toolbar":"Котва","menu":"Промяна на котва","title":"Настройки на котва","name":"Име на котва","errorName":"Моля въведете име на котвата","remove":"Премахване на котва"},"anchorId":"По ID на елемент","anchorName":"По име на котва","charset":"Тип на свързания ресурс","cssClasses":"Класове за CSS","download":"Force Download","displayText":"Display Text","emailAddress":"E-mail aдрес","emailBody":"Съдържание","emailSubject":"Тема","id":"ID","info":"Инфо за връзката","langCode":"Код за езика","langDir":"Посока на езика","langDirLTR":"Ляво на Дясно (ЛнД)","langDirRTL":"Дясно на Ляво (ДнЛ)","menu":"Промяна на връзка","name":"Име","noAnchors":"(Няма котви в текущия документ)","noEmail":"Моля въведете e-mail aдрес","noUrl":"Моля въведете URL адреса","other":"<друго>","popupDependent":"Зависимост (Netscape)","popupFeatures":"Функции на изкачащ прозорец","popupFullScreen":"Цял екран (IE)","popupLeft":"Лява позиция","popupLocationBar":"Лента с локацията","popupMenuBar":"Лента за меню","popupResizable":"Оразмеряем","popupScrollBars":"Скролери","popupStatusBar":"Статусна лента","popupToolbar":"Лента с инструменти","popupTop":"Горна позиция","rel":"Връзка","selectAnchor":"Изберете котва","styles":"Стил","tabIndex":"Ред на достъп","target":"Цел","targetFrame":"<frame>","targetFrameName":"Име на целевият прозорец","targetPopup":"<изкачащ прозорец>","targetPopupName":"Име на изкачащ прозорец","title":"Връзка","toAnchor":"Връзка към котва в текста","toEmail":"E-mail","toUrl":"Уеб адрес","toolbar":"Връзка","type":"Тип на връзката","unlink":"Премахни връзката","upload":"Качване"},"indent":{"indent":"Увеличаване на отстъпа","outdent":"Намаляване на отстъпа"},"image":{"alt":"Алтернативен текст","border":"Рамка","btnUpload":"Изпрати я на сървъра","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Хоризонтален отстъп","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Инфо за снимка","linkTab":"Връзка","lockRatio":"Заключване на съотношението","menu":"Настройки за снимка","resetSize":"Нулиране на размер","title":"Настройки за снимка","titleButton":"Настойки за бутон за снимка","upload":"Качване","urlMissing":"Image source URL is missing.","vSpace":"Вертикален отстъп","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Вмъкване на хоризонтална линия"},"format":{"label":"Формат","panelTitle":"Формат","tag_address":"Адрес","tag_div":"Параграф (DIV)","tag_h1":"Заглавие 1","tag_h2":"Заглавие 2","tag_h3":"Заглавие 3","tag_h4":"Заглавие 4","tag_h5":"Заглавие 5","tag_h6":"Заглавие 6","tag_p":"Нормален","tag_pre":"Форматиран"},"fakeobjects":{"anchor":"Кука","flash":"Флаш анимация","hiddenfield":"Скрито поле","iframe":"IFrame","unknown":"Неизвестен обект"},"elementspath":{"eleLabel":"Път за елементите","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опции на контекстното меню"},"clipboard":{"copy":"Копирай","copyError":"Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).","cut":"Отрежи","cutError":"Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).","paste":"Вмъкни","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Избрано)"},"blockquote":{"toolbar":"Блок за цитат"},"basicstyles":{"bold":"Удебелен","italic":"Наклонен","strike":"Зачертан текст","subscript":"Индексиран текст","superscript":"Суперскрипт","underline":"Подчертан"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"Относно CKEditor","help":"Проверете $1 за помощ.","moreInfo":"За лицензионна информация моля посетете сайта ни:","title":"Относно CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Текстов редактор за форматиран текст","editorPanel":"Панел на текстовия редактор","common":{"editorHelp":"натиснете ALT 0 за помощ","browseServer":"Избор от сървъра","url":"URL","protocol":"Протокол","upload":"Качване","uploadSubmit":"Изпращане към сървъра","image":"Снимка","flash":"Флаш","form":"Форма","checkbox":"Поле за избор","radio":"Радио бутон","textField":"Текстово поле","textarea":"Текстова зона","hiddenField":"Скрито поле","button":"Бутон","select":"Поле за избор","imageButton":"Бутон за снимка","notSet":"<не е избрано>","id":"ID","name":"Име","langDir":"Посока на езика","langDirLtr":"Ляво на дясно (ЛнД)","langDirRtl":"Дясно на ляво (ДнЛ)","langCode":"Код на езика","longDescr":"Уеб адрес за дълго описание","cssClass":"Класове за CSS","advisoryTitle":"Препоръчително заглавие","cssStyle":"Стил","ok":"ОК","cancel":"Отказ","close":"Затвори","preview":"Преглед","resize":"Влачете за да оразмерите","generalTab":"Общи","advancedTab":"Разширено","validateNumberFailed":"Тази стойност не е число","confirmNewPage":"Всички незапазени промени ще бъдат изгубени. Сигурни ли сте, че желаете да заредите нова страница?","confirmCancel":"Някои от опциите са променени. Сигурни ли сте, че желаете да затворите прозореца?","options":"Опции","target":"Цел","targetNew":"Нов прозорец (_blank)","targetTop":"Горна позиция (_top)","targetSelf":"Текущия прозорец (_self)","targetParent":"Основен прозорец (_parent)","langDirLTR":"Ляво на дясно (ЛнД)","langDirRTL":"Дясно на ляво (ДнЛ)","styles":"Стил","cssClasses":"Класове за CSS","width":"Ширина","height":"Височина","align":"Подравняване","alignLeft":"Ляво","alignRight":"Дясно","alignCenter":"Център","alignJustify":"Двустранно подравняване","alignTop":"Горе","alignMiddle":"По средата","alignBottom":"Долу","alignNone":"Без подравняване","invalidValue":"Невалидна стойност.","invalidHeight":"Височината трябва да е число.","invalidWidth":"Ширина требе да е число.","invalidCssLength":"Стойността на полето \"%1\" трябва да бъде положително число с или без валидна CSS измервателна единица (px, %, in, cm, mm, em, ex, pt, или pc).","invalidHtmlLength":"Стойността на полето \"%1\" трябва да бъде положително число с или без валидна HTML измервателна единица (px или %).","invalidInlineStyle":"Стойността на стилa трябва да съдържат една или повече двойки във формат \"name : value\", разделени с двоеточие.","cssLengthTooltip":"Въведете числена стойност в пиксели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недостъпно</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/bn.js b/vendor/unisharp/laravel-ckeditor/lang/bn.js deleted file mode 100644 index 1ec7bdbc3..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/bn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['bn']={"wsc":{"btnIgnore":"ইগনোর কর","btnIgnoreAll":"সব ইগনোর কর","btnReplace":"বদলে দাও","btnReplaceAll":"সব বদলে দাও","btnUndo":"আন্ডু","changeTo":"এতে বদলাও","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?","manyChanges":"বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে","noChanges":"বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি","noMispell":"বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি","noSuggestions":"- কোন সাজেশন নেই -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"শব্দকোষে নেই","oneChange":"বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে","progress":"বানান পরীক্ষা চলছে...","title":"Spell Checker","toolbar":"বানান চেক"},"undo":{"redo":"পুনরায় করি","undo":"আনডু"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"বর্ডারের সাইজ","caption":"শীর্ষক","cell":{"menu":"সেল","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"সেল মুছে দাও","merge":"সেল জোড়া দাও","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"পৃষ্ঠতলের রং","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"সেল প্যাডিং","cellSpace":"সেল স্পেস","column":{"menu":"কলাম","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"কলাম মুছে দাও"},"columns":"কলাম","deleteTable":"টেবিল ডিলীট কর","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"টেবিল প্রোপার্টি","row":{"menu":"রো","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"রো মুছে দাও"},"rows":"রো","summary":"সারাংশ","title":"টেবিল প্রোপার্টি","toolbar":"টেবিলের লেবেল যুক্ত কর","widthPc":"শতকরা","widthPx":"পিক্সেল","widthUnit":"width unit"},"stylescombo":{"label":"ধরন","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"বিশেষ ক্যারেক্টার বাছাই কর","toolbar":"বিশেষ অক্ষর যুক্ত কর"},"sourcearea":{"toolbar":"উৎস"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"ধরন-প্রকৃতি অপসারণ করি"},"pastetext":{"button":"সাধারণ টেক্সট হিসেবে পেইস্ট করি","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"পেস্ট (শব্দ)","toolbar":"পেস্ট (শব্দ)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"বুলেটেড তালিকা প্রবেশ/অপসারন করি","numberedlist":"সাংখ্যিক লিস্টের লেবেল"},"link":{"acccessKey":"প্রবেশ কী","advanced":"এডভান্সড","advisoryContentType":"পরামর্শ কন্টেন্টের প্রকার","advisoryTitle":"পরামর্শ শীর্ষক","anchor":{"toolbar":"নোঙ্গর","menu":"নোঙর প্রোপার্টি","title":"নোঙর প্রোপার্টি","name":"নোঙরের নাম","errorName":"নোঙরের নাম টাইপ করুন","remove":"Remove Anchor"},"anchorId":"নোঙরের আইডি দিয়ে","anchorName":"নোঙরের নাম দিয়ে","charset":"লিংক রিসোর্স ক্যারেক্টর সেট","cssClasses":"স্টাইল-শীট ক্লাস","download":"Force Download","displayText":"Display Text","emailAddress":"ইমেইল ঠিকানা","emailBody":"মেসেজের দেহ","emailSubject":"মেসেজের বিষয়","id":"আইডি","info":"লিংক তথ্য","langCode":"ভাষা লেখার দিক","langDir":"ভাষা লেখার দিক","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","menu":"লিংক সম্পাদন","name":"নাম","noAnchors":"(No anchors available in the document)","noEmail":"অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন","noUrl":"অনুগ্রহ করে URL লিংক টাইপ করুন","other":"<other>","popupDependent":"ডিপেন্ডেন্ট (Netscape)","popupFeatures":"পপআপ উইন্ডো ফীচার সমূহ","popupFullScreen":"পূর্ণ পর্দা জুড়ে (IE)","popupLeft":"বামের পজিশন","popupLocationBar":"লোকেশন বার","popupMenuBar":"মেন্যু বার","popupResizable":"Resizable","popupScrollBars":"স্ক্রল বার","popupStatusBar":"স্ট্যাটাস বার","popupToolbar":"টুল বার","popupTop":"ডানের পজিশন","rel":"Relationship","selectAnchor":"নোঙর বাছাই","styles":"স্টাইল","tabIndex":"ট্যাব ইন্ডেক্স","target":"টার্গেট","targetFrame":"<ফ্রেম>","targetFrameName":"টার্গেট ফ্রেমের নাম","targetPopup":"<পপআপ উইন্ডো>","targetPopupName":"পপআপ উইন্ডোর নাম","title":"লিংক","toAnchor":"এই পেজে নোঙর কর","toEmail":"ইমেইল","toUrl":"URL","toolbar":"লিংক যুক্ত কর","type":"লিংক প্রকার","unlink":"লিংক সরাও","upload":"আপলোড"},"indent":{"indent":"ইনডেন্ট বাড়াই","outdent":"ইনডেন্ট কমাও"},"image":{"alt":"বিকল্প টেক্সট","border":"বর্ডার","btnUpload":"ইহাকে সার্ভারে প্রেরন কর","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"হরাইজন্টাল স্পেস","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"ছবির তথ্য","linkTab":"লিংক","lockRatio":"অনুপাত লক কর","menu":"ছবির প্রোপার্টি","resetSize":"সাইজ পূর্বাবস্থায় ফিরিয়ে দাও","title":"ছবির প্রোপার্টি","titleButton":"ছবির বাটন সম্বন্ধীয়","upload":"আপলোড","urlMissing":"Image source URL is missing.","vSpace":"ভার্টিকেল স্পেস","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"অনুভূমিক লাইন যোগ করি"},"format":{"label":"ধরন-প্রকৃতি","panelTitle":"ফন্ট ফরমেট","tag_address":"ঠিকানা","tag_div":"শীর্ষক (DIV)","tag_h1":"শীর্ষক ১","tag_h2":"শীর্ষক ২","tag_h3":"শীর্ষক ৩","tag_h4":"শীর্ষক ৪","tag_h5":"শীর্ষক ৫","tag_h6":"শীর্ষক ৬","tag_p":"সাধারণ","tag_pre":"ফর্মেটেড"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"কপি","copyError":"আপনার ব্রাউজারের নিরাপত্তা সেটিংসমূহ এডিটরকে স্বয়ংক্রিয়ভাবে কপি করার প্রক্রিয়া চালনা করার অনুমতি দেয় না। অনুগ্রহপূর্বক এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।","cut":"কাট","cutError":"আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।","paste":"পেস্ট","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"বোল্ড","italic":"বাঁকা","strike":"স্ট্রাইক থ্রু","subscript":"অধোলেখ","superscript":"অভিলেখ","underline":"আন্ডারলাইন"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"ব্রাউজ সার্ভার","url":"URL","protocol":"প্রোটোকল","upload":"আপলোড","uploadSubmit":"ইহাকে সার্ভারে প্রেরন কর","image":"ছবির লেবেল যুক্ত কর","flash":"ফ্লাশ লেবেল যুক্ত কর","form":"ফর্ম","checkbox":"চেক বাক্স","radio":"রেডিও বাটন","textField":"টেক্সট ফীল্ড","textarea":"টেক্সট এরিয়া","hiddenField":"গুপ্ত ফীল্ড","button":"বাটন","select":"বাছাই ফীল্ড","imageButton":"ছবির বাটন","notSet":"<সেট নেই>","id":"আইডি","name":"নাম","langDir":"ভাষা লেখার দিক","langDirLtr":"বাম থেকে ডান (LTR)","langDirRtl":"ডান থেকে বাম (RTL)","langCode":"ভাষা কোড","longDescr":"URL এর লম্বা বর্ণনা","cssClass":"স্টাইল-শীট ক্লাস","advisoryTitle":"পরামর্শ শীর্ষক","cssStyle":"স্টাইল","ok":"ওকে","cancel":"বাতিল","close":"Close","preview":"প্রিভিউ","resize":"Resize","generalTab":"General","advancedTab":"এডভান্সড","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"টার্গেট","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","styles":"স্টাইল","cssClasses":"স্টাইল-শীট ক্লাস","width":"প্রস্থ","height":"দৈর্ঘ্য","align":"এলাইন","alignLeft":"বামে","alignRight":"ডানে","alignCenter":"মাঝখানে","alignJustify":"ব্লক জাস্টিফাই","alignTop":"উপর","alignMiddle":"মধ্য","alignBottom":"নীচে","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/bs.js b/vendor/unisharp/laravel-ckeditor/lang/bs.js deleted file mode 100644 index ed625f450..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/bs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['bs']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Ponovi","undo":"Vrati"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Okvir","caption":"Naslov","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Briši æelije","merge":"Spoji æelije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Uvod æelija","cellSpace":"Razmak æelija","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Briši kolone"},"columns":"Kolona","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Svojstva tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Briši redove"},"rows":"Redova","summary":"Summary","title":"Svojstva tabele","toolbar":"Tabela","widthPc":"posto","widthPx":"piksela","widthUnit":"width unit"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Izaberi specijalni karakter","toolbar":"Ubaci specijalni karater"},"sourcearea":{"toolbar":"HTML kôd"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Poništi format"},"pastetext":{"button":"Zalijepi kao obièan tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalijepi iz Word-a","toolbar":"Zalijepi iz Word-a"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Lista","numberedlist":"Numerisana lista"},"link":{"acccessKey":"Pristupna tipka","advanced":"Naprednije","advisoryContentType":"Advisory vrsta sadržaja","advisoryTitle":"Advisory title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"Po Id-u elementa","anchorName":"Po nazivu sidra","charset":"Linked Resource Charset","cssClasses":"Klase CSS stilova","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Adresa","emailBody":"Poruka","emailSubject":"Subjekt poruke","id":"Id","info":"Link info","langCode":"Smjer pisanja","langDir":"Smjer pisanja","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","menu":"Izmjeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra na stranici)","noEmail":"Molimo ukucajte e-mail adresu","noUrl":"Molimo ukucajte URL link","other":"<other>","popupDependent":"Ovisno (Netscape)","popupFeatures":"Moguænosti popup prozora","popupFullScreen":"Cijeli ekran (IE)","popupLeft":"Lijeva pozicija","popupLocationBar":"Traka za lokaciju","popupMenuBar":"Izborna traka","popupResizable":"Resizable","popupScrollBars":"Scroll traka","popupStatusBar":"Statusna traka","popupToolbar":"Traka sa alatima","popupTop":"Gornja pozicija","rel":"Relationship","selectAnchor":"Izaberi sidro","styles":"Stil","tabIndex":"Tab indeks","target":"Prozor","targetFrame":"<frejm>","targetFrameName":"Target Frame Name","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Link","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Ubaci/Izmjeni link","type":"Tip linka","unlink":"Izbriši link","upload":"Šalji"},"indent":{"indent":"Poveæaj uvod","outdent":"Smanji uvod"},"image":{"alt":"Tekst na slici","border":"Okvir","btnUpload":"Šalji na server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info slike","linkTab":"Link","lockRatio":"Zakljuèaj odnos","menu":"Svojstva slike","resetSize":"Resetuj dimenzije","title":"Svojstva slike","titleButton":"Image Button Properties","upload":"Šalji","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Ubaci horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Boldiraj","italic":"Ukosi","strike":"Precrtaj","subscript":"Subscript","superscript":"Superscript","underline":"Podvuci"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Šalji","uploadSubmit":"Šalji na server","image":"Slika","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije podešeno>","id":"Id","name":"Naziv","langDir":"Smjer pisanja","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Jezièni kôd","longDescr":"Dugaèki opis URL-a","cssClass":"Klase CSS stilova","advisoryTitle":"Advisory title","cssStyle":"Stil","ok":"OK","cancel":"Odustani","close":"Close","preview":"Prikaži","resize":"Resize","generalTab":"General","advancedTab":"Naprednije","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Prozor","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase CSS stilova","width":"Širina","height":"Visina","align":"Poravnanje","alignLeft":"Lijevo","alignRight":"Desno","alignCenter":"Centar","alignJustify":"Puno poravnanje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dno","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ca.js b/vendor/unisharp/laravel-ckeditor/lang/ca.js deleted file mode 100644 index d076953a1..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ca']={"wsc":{"btnIgnore":"Ignora","btnIgnoreAll":"Ignora-les totes","btnReplace":"Canvia","btnReplaceAll":"Canvia-les totes","btnUndo":"Desfés","changeTo":"Reemplaça amb","errorLoading":"Error carregant el servidor: %s.","ieSpellDownload":"Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?","manyChanges":"Verificació ortogràfica: s'han canviat %1 paraules","noChanges":"Verificació ortogràfica: no s'ha canviat cap paraula","noMispell":"Verificació ortogràfica acabada: no hi ha cap paraula mal escrita","noSuggestions":"Cap suggeriment","notAvailable":"El servei no es troba disponible ara.","notInDic":"No és al diccionari","oneChange":"Verificació ortogràfica: s'ha canviat una paraula","progress":"Verificació ortogràfica en curs...","title":"Comprova l'ortografia","toolbar":"Revisa l'ortografia"},"undo":{"redo":"Refés","undo":"Desfés"},"toolbar":{"toolbarCollapse":"Redueix la barra d'eines","toolbarExpand":"Amplia la barra d'eines","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor de barra d'eines"},"table":{"border":"Mida vora","caption":"Títol","cell":{"menu":"Cel·la","insertBefore":"Insereix abans","insertAfter":"Insereix després","deleteCell":"Suprimeix","merge":"Fusiona","mergeRight":"Fusiona a la dreta","mergeDown":"Fusiona avall","splitHorizontal":"Divideix horitzontalment","splitVertical":"Divideix verticalment","title":"Propietats de la cel·la","cellType":"Tipus de cel·la","rowSpan":"Expansió de files","colSpan":"Expansió de columnes","wordWrap":"Ajustar al contingut","hAlign":"Alineació Horizontal","vAlign":"Alineació Vertical","alignBaseline":"A la línia base","bgColor":"Color de fons","borderColor":"Color de la vora","data":"Dades","header":"Capçalera","yes":"Sí","no":"No","invalidWidth":"L'amplada de cel·la ha de ser un nombre.","invalidHeight":"L'alçada de cel·la ha de ser un nombre.","invalidRowSpan":"L'expansió de files ha de ser un nombre enter.","invalidColSpan":"L'expansió de columnes ha de ser un nombre enter.","chooseColor":"Trieu"},"cellPad":"Encoixinament de cel·les","cellSpace":"Espaiat de cel·les","column":{"menu":"Columna","insertBefore":"Insereix columna abans de","insertAfter":"Insereix columna darrera","deleteColumn":"Suprimeix una columna"},"columns":"Columnes","deleteTable":"Suprimeix la taula","headers":"Capçaleres","headersBoth":"Ambdues","headersColumn":"Primera columna","headersNone":"Cap","headersRow":"Primera fila","invalidBorder":"El gruix de la vora ha de ser un nombre.","invalidCellPadding":"L'encoixinament de cel·la ha de ser un nombre.","invalidCellSpacing":"L'espaiat de cel·la ha de ser un nombre.","invalidCols":"El nombre de columnes ha de ser un nombre major que 0.","invalidHeight":"L'alçada de la taula ha de ser un nombre.","invalidRows":"El nombre de files ha de ser un nombre major que 0.","invalidWidth":"L'amplada de la taula ha de ser un nombre.","menu":"Propietats de la taula","row":{"menu":"Fila","insertBefore":"Insereix fila abans de","insertAfter":"Insereix fila darrera","deleteRow":"Suprimeix una fila"},"rows":"Files","summary":"Resum","title":"Propietats de la taula","toolbar":"Taula","widthPc":"percentatge","widthPx":"píxels","widthUnit":"unitat d'amplada"},"stylescombo":{"label":"Estil","panelTitle":"Estils de format","panelTitle1":"Estils de bloc","panelTitle2":"Estils incrustats","panelTitle3":"Estils d'objecte"},"specialchar":{"options":"Opcions de caràcters especials","title":"Selecciona el caràcter especial","toolbar":"Insereix caràcter especial"},"sourcearea":{"toolbar":"Codi font"},"scayt":{"btn_about":"Quant a l'SCAYT","btn_dictionaries":"Diccionaris","btn_disable":"Deshabilita SCAYT","btn_enable":"Habilitat l'SCAYT","btn_langs":"Idiomes","btn_options":"Opcions","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Elimina Format"},"pastetext":{"button":"Enganxa com a text no formatat","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?","error":"No ha estat possible netejar les dades enganxades degut a un error intern","title":"Enganxa des del Word","toolbar":"Enganxa des del Word"},"notification":{"closed":"Notificació tancada."},"maximize":{"maximize":"Maximitza","minimize":"Minimitza"},"magicline":{"title":"Insereix el paràgraf aquí"},"list":{"bulletedlist":"Llista de pics","numberedlist":"Llista numerada"},"link":{"acccessKey":"Clau d'accés","advanced":"Avançat","advisoryContentType":"Tipus de contingut consultiu","advisoryTitle":"Títol consultiu","anchor":{"toolbar":"Insereix/Edita àncora","menu":"Propietats de l'àncora","title":"Propietats de l'àncora","name":"Nom de l'àncora","errorName":"Si us plau, escriviu el nom de l'ancora","remove":"Remove Anchor"},"anchorId":"Per Id d'element","anchorName":"Per nom d'àncora","charset":"Conjunt de caràcters font enllaçat","cssClasses":"Classes del full d'estil","download":"Force Download","displayText":"Text a mostrar","emailAddress":"Adreça de correu electrònic","emailBody":"Cos del missatge","emailSubject":"Assumpte del missatge","id":"Id","info":"Informació de l'enllaç","langCode":"Direcció de l'idioma","langDir":"Direcció de l'idioma","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","menu":"Edita l'enllaç","name":"Nom","noAnchors":"(No hi ha àncores disponibles en aquest document)","noEmail":"Si us plau, escrigui l'adreça correu electrònic","noUrl":"Si us plau, escrigui l'enllaç URL","other":"<altre>","popupDependent":"Depenent (Netscape)","popupFeatures":"Característiques finestra popup","popupFullScreen":"Pantalla completa (IE)","popupLeft":"Posició esquerra","popupLocationBar":"Barra d'adreça","popupMenuBar":"Barra de menú","popupResizable":"Redimensionable","popupScrollBars":"Barres d'scroll","popupStatusBar":"Barra d'estat","popupToolbar":"Barra d'eines","popupTop":"Posició dalt","rel":"Relació","selectAnchor":"Selecciona una àncora","styles":"Estil","tabIndex":"Index de Tab","target":"Destí","targetFrame":"<marc>","targetFrameName":"Nom del marc de destí","targetPopup":"<finestra emergent>","targetPopupName":"Nom finestra popup","title":"Enllaç","toAnchor":"Àncora en aquesta pàgina","toEmail":"Correu electrònic","toUrl":"URL","toolbar":"Insereix/Edita enllaç","type":"Tipus d'enllaç","unlink":"Elimina l'enllaç","upload":"Puja"},"indent":{"indent":"Augmenta el sagnat","outdent":"Redueix el sagnat"},"image":{"alt":"Text alternatiu","border":"Vora","btnUpload":"Envia-la al servidor","button2Img":"Voleu transformar el botó d'imatge seleccionat en una simple imatge?","hSpace":"Espaiat horit.","img2Button":"Voleu transformar la imatge seleccionada en un botó d'imatge?","infoTab":"Informació de la imatge","linkTab":"Enllaç","lockRatio":"Bloqueja les proporcions","menu":"Propietats de la imatge","resetSize":"Restaura la mida","title":"Propietats de la imatge","titleButton":"Propietats del botó d'imatge","upload":"Puja","urlMissing":"Falta la URL de la imatge.","vSpace":"Espaiat vert.","validateBorder":"La vora ha de ser un nombre enter.","validateHSpace":"HSpace ha de ser un nombre enter.","validateVSpace":"VSpace ha de ser un nombre enter."},"horizontalrule":{"toolbar":"Insereix línia horitzontal"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adreça","tag_div":"Normal (DIV)","tag_h1":"Encapçalament 1","tag_h2":"Encapçalament 2","tag_h3":"Encapçalament 3","tag_h4":"Encapçalament 4","tag_h5":"Encapçalament 5","tag_h6":"Encapçalament 6","tag_p":"Normal","tag_pre":"Formatejat"},"fakeobjects":{"anchor":"Àncora","flash":"Animació Flash","hiddenfield":"Camp ocult","iframe":"IFrame","unknown":"Objecte desconegut"},"elementspath":{"eleLabel":"Ruta dels elements","eleTitle":"%1 element"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).","cut":"Retallar","cutError":"La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).","paste":"Enganxar","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Seleccionat)"},"blockquote":{"toolbar":"Bloc de cita"},"basicstyles":{"bold":"Negreta","italic":"Cursiva","strike":"Ratllat","subscript":"Subíndex","superscript":"Superíndex","underline":"Subratllat"},"about":{"copy":"Copyright © $1. Tots els drets reservats.","dlgTitle":"Quant al CKEditor","help":"Premi $1 per obtenir ajuda.","moreInfo":"Per informació sobre llicències visiteu el nostre lloc web:","title":"Quant al CKEditor","userGuide":"Manual d'usuari de CKEditor"},"editor":"Editor de text enriquit","editorPanel":"Panell de l'editor de text enriquit","common":{"editorHelp":"Premeu ALT 0 per ajuda","browseServer":"Veure servidor","url":"URL","protocol":"Protocol","upload":"Puja","uploadSubmit":"Envia-la al servidor","image":"Imatge","flash":"Flash","form":"Formulari","checkbox":"Casella de verificació","radio":"Botó d'opció","textField":"Camp de text","textarea":"Àrea de text","hiddenField":"Camp ocult","button":"Botó","select":"Camp de selecció","imageButton":"Botó d'imatge","notSet":"<no definit>","id":"Id","name":"Nom","langDir":"Direcció de l'idioma","langDirLtr":"D'esquerra a dreta (LTR)","langDirRtl":"De dreta a esquerra (RTL)","langCode":"Codi d'idioma","longDescr":"Descripció llarga de la URL","cssClass":"Classes del full d'estil","advisoryTitle":"Títol consultiu","cssStyle":"Estil","ok":"D'acord","cancel":"Cancel·la","close":"Tanca","preview":"Previsualitza","resize":"Arrossegueu per redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquest valor no és un número.","confirmNewPage":"Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?","confirmCancel":"Algunes opcions s'han canviat. Esteu segur que voleu tancar el quadre de diàleg?","options":"Opcions","target":"Destí","targetNew":"Nova finestra (_blank)","targetTop":"Finestra superior (_top)","targetSelf":"Mateixa finestra (_self)","targetParent":"Finestra pare (_parent)","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","styles":"Estil","cssClasses":"Classes del full d'estil","width":"Amplada","height":"Alçada","align":"Alineació","alignLeft":"Ajusta a l'esquerra","alignRight":"Ajusta a la dreta","alignCenter":"Centre","alignJustify":"Justificat","alignTop":"Superior","alignMiddle":"Centre","alignBottom":"Inferior","alignNone":"Cap","invalidValue":"Valor no vàlid.","invalidHeight":"L'alçada ha de ser un número.","invalidWidth":"L'amplada ha de ser un número.","invalidCssLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","invalidHtmlLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura vàlida d'HTML (px o %).","invalidInlineStyle":"El valor especificat per l'estil en línia ha de constar d'una o més tuples amb el format \"name: value\", separats per punt i coma.","cssLengthTooltip":"Introduïu un número per un valor en píxels o un número amb una unitat vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retrocés","13":"Intro","16":"Majúscules","17":"Ctrl","18":"Alt","32":"Space","35":"Fi","36":"Inici","46":"Eliminar","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/cs.js b/vendor/unisharp/laravel-ckeditor/lang/cs.js deleted file mode 100644 index c329cdb0a..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['cs']={"wsc":{"btnIgnore":"Přeskočit","btnIgnoreAll":"Přeskakovat vše","btnReplace":"Zaměnit","btnReplaceAll":"Zaměňovat vše","btnUndo":"Zpět","changeTo":"Změnit na","errorLoading":"Chyba nahrávání služby aplikace z: %s.","ieSpellDownload":"Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?","manyChanges":"Kontrola pravopisu dokončena: %1 slov změněno","noChanges":"Kontrola pravopisu dokončena: Beze změn","noMispell":"Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny","noSuggestions":"- žádné návrhy -","notAvailable":"Omlouváme se, ale služba nyní není dostupná.","notInDic":"Není ve slovníku","oneChange":"Kontrola pravopisu dokončena: Jedno slovo změněno","progress":"Probíhá kontrola pravopisu...","title":"Kontrola pravopisu","toolbar":"Zkontrolovat pravopis"},"undo":{"redo":"Znovu","undo":"Zpět"},"toolbar":{"toolbarCollapse":"Skrýt panel nástrojů","toolbarExpand":"Zobrazit panel nástrojů","toolbarGroups":{"document":"Dokument","clipboard":"Schránka/Zpět","editing":"Úpravy","forms":"Formuláře","basicstyles":"Základní styly","paragraph":"Odstavec","links":"Odkazy","insert":"Vložit","styles":"Styly","colors":"Barvy","tools":"Nástroje"},"toolbars":"Panely nástrojů editoru"},"table":{"border":"Ohraničení","caption":"Popis","cell":{"menu":"Buňka","insertBefore":"Vložit buňku před","insertAfter":"Vložit buňku za","deleteCell":"Smazat buňky","merge":"Sloučit buňky","mergeRight":"Sloučit doprava","mergeDown":"Sloučit dolů","splitHorizontal":"Rozdělit buňky vodorovně","splitVertical":"Rozdělit buňky svisle","title":"Vlastnosti buňky","cellType":"Typ buňky","rowSpan":"Spojit řádky","colSpan":"Spojit sloupce","wordWrap":"Zalamování","hAlign":"Vodorovné zarovnání","vAlign":"Svislé zarovnání","alignBaseline":"Na účaří","bgColor":"Barva pozadí","borderColor":"Barva okraje","data":"Data","header":"Hlavička","yes":"Ano","no":"Ne","invalidWidth":"Šířka buňky musí být číslo.","invalidHeight":"Zadaná výška buňky musí být číslená.","invalidRowSpan":"Zadaný počet sloučených řádků musí být celé číslo.","invalidColSpan":"Zadaný počet sloučených sloupců musí být celé číslo.","chooseColor":"Výběr"},"cellPad":"Odsazení obsahu v buňce","cellSpace":"Vzdálenost buněk","column":{"menu":"Sloupec","insertBefore":"Vložit sloupec před","insertAfter":"Vložit sloupec za","deleteColumn":"Smazat sloupec"},"columns":"Sloupce","deleteTable":"Smazat tabulku","headers":"Záhlaví","headersBoth":"Obojí","headersColumn":"První sloupec","headersNone":"Žádné","headersRow":"První řádek","invalidBorder":"Zdaná velikost okraje musí být číselná.","invalidCellPadding":"Zadané odsazení obsahu v buňce musí být číselné.","invalidCellSpacing":"Zadaná vzdálenost buněk musí být číselná.","invalidCols":"Počet sloupců musí být číslo větší než 0.","invalidHeight":"Zadaná výška tabulky musí být číselná.","invalidRows":"Počet řádků musí být číslo větší než 0.","invalidWidth":"Šířka tabulky musí být číslo.","menu":"Vlastnosti tabulky","row":{"menu":"Řádek","insertBefore":"Vložit řádek před","insertAfter":"Vložit řádek za","deleteRow":"Smazat řádky"},"rows":"Řádky","summary":"Souhrn","title":"Vlastnosti tabulky","toolbar":"Tabulka","widthPc":"procent","widthPx":"bodů","widthUnit":"jednotka šířky"},"stylescombo":{"label":"Styl","panelTitle":"Formátovací styly","panelTitle1":"Blokové styly","panelTitle2":"Řádkové styly","panelTitle3":"Objektové styly"},"specialchar":{"options":"Nastavení speciálních znaků","title":"Výběr speciálního znaku","toolbar":"Vložit speciální znaky"},"sourcearea":{"toolbar":"Zdroj"},"scayt":{"btn_about":"O aplikaci SCAYT","btn_dictionaries":"Slovníky","btn_disable":"Vypnout SCAYT","btn_enable":"Zapnout SCAYT","btn_langs":"Jazyky","btn_options":"Nastavení","text_title":"Kontrola pravopisu během psaní (SCAYT)"},"removeformat":{"toolbar":"Odstranit formátování"},"pastetext":{"button":"Vložit jako čistý text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?","error":"Z důvodu vnitřní chyby nebylo možné provést vyčištění vkládaného textu.","title":"Vložit z Wordu","toolbar":"Vložit z Wordu"},"notification":{"closed":"Oznámení zavřeno."},"maximize":{"maximize":"Maximalizovat","minimize":"Minimalizovat"},"magicline":{"title":"zde vložit odstavec"},"list":{"bulletedlist":"Odrážky","numberedlist":"Číslování"},"link":{"acccessKey":"Přístupový klíč","advanced":"Rozšířené","advisoryContentType":"Pomocný typ obsahu","advisoryTitle":"Pomocný titulek","anchor":{"toolbar":"Záložka","menu":"Vlastnosti záložky","title":"Vlastnosti záložky","name":"Název záložky","errorName":"Zadejte prosím název záložky","remove":"Odstranit záložku"},"anchorId":"Podle Id objektu","anchorName":"Podle jména kotvy","charset":"Přiřazená znaková sada","cssClasses":"Třída stylu","download":"Force Download","displayText":"Zobrazit text","emailAddress":"E-mailová adresa","emailBody":"Tělo zprávy","emailSubject":"Předmět zprávy","id":"Id","info":"Informace o odkazu","langCode":"Kód jazyka","langDir":"Směr jazyka","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","menu":"Změnit odkaz","name":"Jméno","noAnchors":"(Ve stránce není definována žádná kotva!)","noEmail":"Zadejte prosím e-mailovou adresu","noUrl":"Zadejte prosím URL odkazu","other":"<jiný>","popupDependent":"Závislost (Netscape)","popupFeatures":"Vlastnosti vyskakovacího okna","popupFullScreen":"Celá obrazovka (IE)","popupLeft":"Levý okraj","popupLocationBar":"Panel umístění","popupMenuBar":"Panel nabídky","popupResizable":"Umožňující měnit velikost","popupScrollBars":"Posuvníky","popupStatusBar":"Stavový řádek","popupToolbar":"Panel nástrojů","popupTop":"Horní okraj","rel":"Vztah","selectAnchor":"Vybrat kotvu","styles":"Styl","tabIndex":"Pořadí prvku","target":"Cíl","targetFrame":"<rámec>","targetFrameName":"Název cílového rámu","targetPopup":"<vyskakovací okno>","targetPopupName":"Název vyskakovacího okna","title":"Odkaz","toAnchor":"Kotva v této stránce","toEmail":"E-mail","toUrl":"URL","toolbar":"Odkaz","type":"Typ odkazu","unlink":"Odstranit odkaz","upload":"Odeslat"},"indent":{"indent":"Zvětšit odsazení","outdent":"Zmenšit odsazení"},"image":{"alt":"Alternativní text","border":"Okraje","btnUpload":"Odeslat na server","button2Img":"Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?","hSpace":"Horizontální mezera","img2Button":"Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?","infoTab":"Informace o obrázku","linkTab":"Odkaz","lockRatio":"Zámek","menu":"Vlastnosti obrázku","resetSize":"Původní velikost","title":"Vlastnosti obrázku","titleButton":"Vlastností obrázkového tlačítka","upload":"Odeslat","urlMissing":"Zadané URL zdroje obrázku nebylo nalezeno.","vSpace":"Vertikální mezera","validateBorder":"Okraj musí být nastaven v celých číslech.","validateHSpace":"Horizontální mezera musí být nastavena v celých číslech.","validateVSpace":"Vertikální mezera musí být nastavena v celých číslech."},"horizontalrule":{"toolbar":"Vložit vodorovnou linku"},"format":{"label":"Formát","panelTitle":"Formát","tag_address":"Adresa","tag_div":"Normální (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normální","tag_pre":"Naformátováno"},"fakeobjects":{"anchor":"Záložka","flash":"Flash animace","hiddenfield":"Skryté pole","iframe":"IFrame","unknown":"Neznámý objekt"},"elementspath":{"eleLabel":"Cesta objektu","eleTitle":"%1 objekt"},"contextmenu":{"options":"Nastavení kontextové nabídky"},"clipboard":{"copy":"Kopírovat","copyError":"Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).","cut":"Vyjmout","cutError":"Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).","paste":"Vložit","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Vybráno)"},"blockquote":{"toolbar":"Citace"},"basicstyles":{"bold":"Tučné","italic":"Kurzíva","strike":"Přeškrtnuté","subscript":"Dolní index","superscript":"Horní index","underline":"Podtržené"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"O aplikaci CKEditor","help":"Prohlédněte si $1 pro nápovědu.","moreInfo":"Pro informace o lincenci navštivte naši webovou stránku:","title":"O aplikaci CKEditor","userGuide":"Uživatelská příručka CKEditor"},"editor":"Textový editor","editorPanel":"Panel textového editoru","common":{"editorHelp":"Stiskněte ALT 0 pro nápovědu","browseServer":"Vybrat na serveru","url":"URL","protocol":"Protokol","upload":"Odeslat","uploadSubmit":"Odeslat na server","image":"Obrázek","flash":"Flash","form":"Formulář","checkbox":"Zaškrtávací políčko","radio":"Přepínač","textField":"Textové pole","textarea":"Textová oblast","hiddenField":"Skryté pole","button":"Tlačítko","select":"Seznam","imageButton":"Obrázkové tlačítko","notSet":"<nenastaveno>","id":"Id","name":"Jméno","langDir":"Směr jazyka","langDirLtr":"Zleva doprava (LTR)","langDirRtl":"Zprava doleva (RTL)","langCode":"Kód jazyka","longDescr":"Dlouhý popis URL","cssClass":"Třída stylu","advisoryTitle":"Pomocný titulek","cssStyle":"Styl","ok":"OK","cancel":"Zrušit","close":"Zavřít","preview":"Náhled","resize":"Uchopit pro změnu velikosti","generalTab":"Obecné","advancedTab":"Rozšířené","validateNumberFailed":"Zadaná hodnota není číselná.","confirmNewPage":"Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chcete otevřít novou stránku?","confirmCancel":"Některá z nastavení byla změněna. Skutečně chcete zavřít dialogové okno?","options":"Nastavení","target":"Cíl","targetNew":"Nové okno (_blank)","targetTop":"Okno nejvyšší úrovně (_top)","targetSelf":"Stejné okno (_self)","targetParent":"Rodičovské okno (_parent)","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","styles":"Styly","cssClasses":"Třídy stylů","width":"Šířka","height":"Výška","align":"Zarovnání","alignLeft":"Vlevo","alignRight":"Vpravo","alignCenter":"Na střed","alignJustify":"Zarovnat do bloku","alignTop":"Nahoru","alignMiddle":"Na střed","alignBottom":"Dolů","alignNone":"Žádné","invalidValue":"Neplatná hodnota.","invalidHeight":"Zadaná výška musí být číslo.","invalidWidth":"Šířka musí být číslo.","invalidCssLength":"Hodnota určená pro pole \"%1\" musí být kladné číslo bez nebo s platnou jednotkou míry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).","invalidHtmlLength":"Hodnota určená pro pole \"%1\" musí být kladné číslo bez nebo s platnou jednotkou míry HTML (px nebo %).","invalidInlineStyle":"Hodnota určená pro řádkový styl se musí skládat z jedné nebo více n-tic ve formátu \"název : hodnota\", oddělené středníky","cssLengthTooltip":"Zadejte číslo jako hodnotu v pixelech nebo číslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupné</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mezerník","35":"Konec","36":"Domů","46":"Smazat","224":"Command"},"keyboardShortcut":"Klávesová zkratka"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/cy.js b/vendor/unisharp/laravel-ckeditor/lang/cy.js deleted file mode 100644 index c769f5007..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['cy']={"wsc":{"btnIgnore":"Anwybyddu Un","btnIgnoreAll":"Anwybyddu Pob","btnReplace":"Amnewid Un","btnReplaceAll":"Amnewid Pob","btnUndo":"Dadwneud","changeTo":"Newid i","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?","manyChanges":"Gwirio sillafu wedi gorffen: Newidiwyd %1 gair","noChanges":"Gwirio sillafu wedi gorffen: Dim newidiadau","noMispell":"Gwirio sillafu wedi gorffen: Dim camsillaf.","noSuggestions":"- Dim awgrymiadau -","notAvailable":"Nid yw'r gwasanaeth hwn ar gael yn bresennol.","notInDic":"Nid i'w gael yn y geiriadur","oneChange":"Gwirio sillafu wedi gorffen: Newidiwyd 1 gair","progress":"Gwirio sillafu yn ar y gweill...","title":"Gwirio Sillafu","toolbar":"Gwirio Sillafu"},"undo":{"redo":"Ailwneud","undo":"Dadwneud"},"toolbar":{"toolbarCollapse":"Cyfangu'r Bar Offer","toolbarExpand":"Ehangu'r Bar Offer","toolbarGroups":{"document":"Dogfen","clipboard":"Clipfwrdd/Dadwneud","editing":"Golygu","forms":"Ffurflenni","basicstyles":"Arddulliau Sylfaenol","paragraph":"Paragraff","links":"Dolenni","insert":"Mewnosod","styles":"Arddulliau","colors":"Lliwiau","tools":"Offer"},"toolbars":"Bariau offer y golygydd"},"table":{"border":"Maint yr Ymyl","caption":"Pennawd","cell":{"menu":"Cell","insertBefore":"Mewnosod Cell Cyn","insertAfter":"Mewnosod Cell Ar Ôl","deleteCell":"Dileu Celloedd","merge":"Cyfuno Celloedd","mergeRight":"Cyfuno i'r Dde","mergeDown":"Cyfuno i Lawr","splitHorizontal":"Hollti'r Gell yn Lorweddol","splitVertical":"Hollti'r Gell yn Fertigol","title":"Priodweddau'r Gell","cellType":"Math y Gell","rowSpan":"Rhychwant Rhesi","colSpan":"Rhychwant Colofnau","wordWrap":"Lapio Geiriau","hAlign":"Aliniad Llorweddol","vAlign":"Aliniad Fertigol","alignBaseline":"Baslinell","bgColor":"Lliw Cefndir","borderColor":"Lliw Ymyl","data":"Data","header":"Pennyn","yes":"Ie","no":"Na","invalidWidth":"Mae'n rhaid i led y gell fod yn rhif.","invalidHeight":"Mae'n rhaid i uchder y gell fod yn rhif.","invalidRowSpan":"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.","invalidColSpan":"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.","chooseColor":"Dewis"},"cellPad":"Padio'r gell","cellSpace":"Bylchiad y gell","column":{"menu":"Colofn","insertBefore":"Mewnosod Colofn Cyn","insertAfter":"Mewnosod Colofn Ar Ôl","deleteColumn":"Dileu Colofnau"},"columns":"Colofnau","deleteTable":"Dileu Tabl","headers":"Penynnau","headersBoth":"Y Ddau","headersColumn":"Colofn gyntaf","headersNone":"Dim","headersRow":"Rhes gyntaf","invalidBorder":"Mae'n rhaid i faint yr ymyl fod yn rhif.","invalidCellPadding":"Mae'n rhaid i badiad y gell fod yn rhif positif.","invalidCellSpacing":"Mae'n rhaid i fylchiad y gell fod yn rhif positif.","invalidCols":"Mae'n rhaid cael o leiaf un golofn.","invalidHeight":"Mae'n rhaid i uchder y tabl fod yn rhif.","invalidRows":"Mae'n rhaid cael o leiaf un rhes.","invalidWidth":"Mae'n rhaid i led y tabl fod yn rhif.","menu":"Priodweddau'r Tabl","row":{"menu":"Rhes","insertBefore":"Mewnosod Rhes Cyn","insertAfter":"Mewnosod Rhes Ar Ôl","deleteRow":"Dileu Rhesi"},"rows":"Rhesi","summary":"Crynodeb","title":"Priodweddau'r Tabl","toolbar":"Tabl","widthPc":"y cant","widthPx":"picsel","widthUnit":"uned lled"},"stylescombo":{"label":"Arddulliau","panelTitle":"Arddulliau Fformatio","panelTitle1":"Arddulliau Bloc","panelTitle2":"Arddulliau Mewnol","panelTitle3":"Arddulliau Gwrthrych"},"specialchar":{"options":"Opsiynau Nodau Arbennig","title":"Dewis Nod Arbennig","toolbar":"Mewnosod Nod Arbennig"},"sourcearea":{"toolbar":"HTML"},"scayt":{"btn_about":"Ynghylch SCAYT","btn_dictionaries":"Geiriaduron","btn_disable":"Analluogi SCAYT","btn_enable":"Galluogi SCAYT","btn_langs":"Ieithoedd","btn_options":"Opsiynau","text_title":"Gwirio'r Sillafu Wrth Deipio"},"removeformat":{"toolbar":"Tynnu Fformat"},"pastetext":{"button":"Gludo fel testun plaen","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Mae'r testun rydych chi am ludo wedi'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?","error":"Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol","title":"Gludo o Word","toolbar":"Gludo o Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Mwyhau","minimize":"Lleihau"},"magicline":{"title":"Mewnosod paragraff yma"},"list":{"bulletedlist":"Mewnosod/Tynnu Rhestr Bwled","numberedlist":"Mewnosod/Tynnu Rhestr Rhifol"},"link":{"acccessKey":"Allwedd Mynediad","advanced":"Uwch","advisoryContentType":"Math y Cynnwys Cynghorol","advisoryTitle":"Teitl Cynghorol","anchor":{"toolbar":"Angor","menu":"Golygu'r Angor","title":"Priodweddau'r Angor","name":"Enw'r Angor","errorName":"Teipiwch enw'r angor","remove":"Tynnwch yr Angor"},"anchorId":"Gan Id yr Elfen","anchorName":"Gan Enw'r Angor","charset":"Set Nodau'r Adnodd Cysylltiedig","cssClasses":"Dosbarthiadau Dalen Arddull","download":"Force Download","displayText":"Display Text","emailAddress":"Cyfeiriad E-Bost","emailBody":"Corff y Neges","emailSubject":"Testun y Neges","id":"Id","info":"Gwyb y Ddolen","langCode":"Cod Iaith","langDir":"Cyfeiriad Iaith","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","menu":"Golygu Dolen","name":"Enw","noAnchors":"(Dim angorau ar gael yn y ddogfen)","noEmail":"Teipiwch gyfeiriad yr e-bost","noUrl":"Teipiwch URL y ddolen","other":"<eraill>","popupDependent":"Dibynnol (Netscape)","popupFeatures":"Nodweddion Ffenestr Bop","popupFullScreen":"Sgrin Llawn (IE)","popupLeft":"Safle Chwith","popupLocationBar":"Bar Safle","popupMenuBar":"Dewislen","popupResizable":"Ailfeintiol","popupScrollBars":"Barrau Sgrolio","popupStatusBar":"Bar Statws","popupToolbar":"Bar Offer","popupTop":"Safle Top","rel":"Perthynas","selectAnchor":"Dewiswch Angor","styles":"Arddull","tabIndex":"Indecs Tab","target":"Targed","targetFrame":"<ffrâm>","targetFrameName":"Enw Ffrâm y Targed","targetPopup":"<ffenestr bop>","targetPopupName":"Enw Ffenestr Bop","title":"Dolen","toAnchor":"Dolen at angor yn y testun","toEmail":"E-bost","toUrl":"URL","toolbar":"Dolen","type":"Math y Ddolen","unlink":"Datgysylltu","upload":"Lanlwytho"},"indent":{"indent":"Cynyddu'r Mewnoliad","outdent":"Lleihau'r Mewnoliad"},"image":{"alt":"Testun Amgen","border":"Ymyl","btnUpload":"Anfon i'r Gweinydd","button2Img":"Ydych am drawsffurfio'r botwm ddelwedd hwn ar ddelwedd syml?","hSpace":"BwlchLl","img2Button":"Ydych am drawsffurfio'r ddelwedd hon ar fotwm delwedd?","infoTab":"Gwyb Delwedd","linkTab":"Dolen","lockRatio":"Cloi Cymhareb","menu":"Priodweddau Delwedd","resetSize":"Ailosod Maint","title":"Priodweddau Delwedd","titleButton":"Priodweddau Botwm Delwedd","upload":"Lanlwytho","urlMissing":"URL gwreiddiol y ddelwedd ar goll.","vSpace":"BwlchF","validateBorder":"Rhaid i'r ymyl fod yn gyfanrif.","validateHSpace":"Rhaid i'r HSpace fod yn gyfanrif.","validateVSpace":"Rhaid i'r VSpace fod yn gyfanrif."},"horizontalrule":{"toolbar":"Mewnosod Llinell Lorweddol"},"format":{"label":"Fformat","panelTitle":"Fformat Paragraff","tag_address":"Cyfeiriad","tag_div":"Normal (DIV)","tag_h1":"Pennawd 1","tag_h2":"Pennawd 2","tag_h3":"Pennawd 3","tag_h4":"Pennawd 4","tag_h5":"Pennawd 5","tag_h6":"Pennawd 6","tag_p":"Normal","tag_pre":"Wedi'i Fformatio"},"fakeobjects":{"anchor":"Angor","flash":"Animeiddiant Flash","hiddenfield":"Maes Cudd","iframe":"IFrame","unknown":"Gwrthrych Anhysbys"},"elementspath":{"eleLabel":"Llwybr elfennau","eleTitle":"Elfen %1"},"contextmenu":{"options":"Opsiynau Dewislen Cyd-destun"},"clipboard":{"copy":"Copïo","copyError":"'Dyw gosodiadau diogelwch eich porwr ddim yn caniatàu'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).","cut":"Torri","cutError":"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).","paste":"Gludo","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Dyfyniad bloc"},"basicstyles":{"bold":"Bras","italic":"Italig","strike":"Llinell Trwyddo","subscript":"Is-sgript","superscript":"Uwchsgript","underline":"Tanlinellu"},"about":{"copy":"Hawlfraint © $1. Cedwir pob hawl.","dlgTitle":"Ynghylch CKEditor","help":"Gwirio $1 am gymorth.","moreInfo":"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:","title":"Ynghylch CKEditor","userGuide":"Canllawiau Defnyddiwr CKEditor"},"editor":"Golygydd Testun Cyfoethog","editorPanel":"Panel Golygydd Testun Cyfoethog","common":{"editorHelp":"Gwasgwch ALT 0 am gymorth","browseServer":"Pori'r Gweinydd","url":"URL","protocol":"Protocol","upload":"Lanlwytho","uploadSubmit":"Anfon i'r Gweinydd","image":"Delwedd","flash":"Flash","form":"Ffurflen","checkbox":"Blwch ticio","radio":"Botwm Radio","textField":"Maes Testun","textarea":"Ardal Testun","hiddenField":"Maes Cudd","button":"Botwm","select":"Maes Dewis","imageButton":"Botwm Delwedd","notSet":"<heb osod>","id":"Id","name":"Name","langDir":"Cyfeiriad Iaith","langDirLtr":"Chwith i'r Dde (LTR)","langDirRtl":"Dde i'r Chwith (RTL)","langCode":"Cod Iaith","longDescr":"URL Disgrifiad Hir","cssClass":"Dosbarthiadau Dalen Arddull","advisoryTitle":"Teitl Cynghorol","cssStyle":"Arddull","ok":"Iawn","cancel":"Diddymu","close":"Cau","preview":"Rhagolwg","resize":"Ailfeintio","generalTab":"Cyffredinol","advancedTab":"Uwch","validateNumberFailed":"'Dyw'r gwerth hwn ddim yn rhif.","confirmNewPage":"Byddwch chi'n colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. Ydych am barhau i lwytho tudalen newydd?","confirmCancel":"Cafodd rhai o'r opsiynau eu newid. Ydych chi wir am gau'r deialog?","options":"Opsiynau","target":"Targed","targetNew":"Ffenest Newydd (_blank)","targetTop":"Ffenest ar y Brig (_top)","targetSelf":"Yr un Ffenest (_self)","targetParent":"Ffenest y Rhiant (_parent)","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","styles":"Arddull","cssClasses":"Dosbarthiadau Dalen Arddull","width":"Lled","height":"Uchder","align":"Alinio","alignLeft":"Chwith","alignRight":"Dde","alignCenter":"Canol","alignJustify":"Unioni","alignTop":"Brig","alignMiddle":"Canol","alignBottom":"Gwaelod","alignNone":"None","invalidValue":"Gwerth annilys.","invalidHeight":"Mae'n rhaid i'r uchder fod yn rhif.","invalidWidth":"Mae'n rhaid i'r lled fod yn rhif.","invalidCssLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).","invalidHtmlLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad HTML dilys (px neu %).","invalidInlineStyle":"Mae'n rhaid i'r gwerth ar gyfer arddull mewn-llinell gynnwys un set neu fwy ar y fformat \"enw : gwerth\", wedi'u gwahanu gyda hanner colon.","cssLengthTooltip":"Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).","unavailable":"%1<span class=\"cke_accessibility\">, ddim ar gael</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/da.js b/vendor/unisharp/laravel-ckeditor/lang/da.js deleted file mode 100644 index 9f44d1ac1..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['da']={"wsc":{"btnIgnore":"Ignorér","btnIgnoreAll":"Ignorér alle","btnReplace":"Erstat","btnReplaceAll":"Erstat alle","btnUndo":"Tilbage","changeTo":"Forslag","errorLoading":"Fejl ved indlæsning af host: %s.","ieSpellDownload":"Stavekontrol ikke installeret. Vil du installere den nu?","manyChanges":"Stavekontrol færdig: %1 ord ændret","noChanges":"Stavekontrol færdig: Ingen ord ændret","noMispell":"Stavekontrol færdig: Ingen fejl fundet","noSuggestions":"(ingen forslag)","notAvailable":"Stavekontrol er desværre ikke tilgængelig.","notInDic":"Ikke i ordbogen","oneChange":"Stavekontrol færdig: Et ord ændret","progress":"Stavekontrollen arbejder...","title":"Stavekontrol","toolbar":"Stavekontrol"},"undo":{"redo":"Annullér fortryd","undo":"Fortryd"},"toolbar":{"toolbarCollapse":"Sammenklap værktøjslinje","toolbarExpand":"Udvid værktøjslinje","toolbarGroups":{"document":"Dokument","clipboard":"Udklipsholder/Fortryd","editing":"Redigering","forms":"Formularer","basicstyles":"Basis styles","paragraph":"Paragraf","links":"Links","insert":"Indsæt","styles":"Typografier","colors":"Farver","tools":"Værktøjer"},"toolbars":"Editors værktøjslinjer"},"table":{"border":"Rammebredde","caption":"Titel","cell":{"menu":"Celle","insertBefore":"Indsæt celle før","insertAfter":"Indsæt celle efter","deleteCell":"Slet celle","merge":"Flet celler","mergeRight":"Flet til højre","mergeDown":"Flet nedad","splitHorizontal":"Del celle vandret","splitVertical":"Del celle lodret","title":"Celleegenskaber","cellType":"Celletype","rowSpan":"Række span (rows span)","colSpan":"Kolonne span (columns span)","wordWrap":"Tekstombrydning","hAlign":"Vandret justering","vAlign":"Lodret justering","alignBaseline":"Grundlinje","bgColor":"Baggrundsfarve","borderColor":"Rammefarve","data":"Data","header":"Hoved","yes":"Ja","no":"Nej","invalidWidth":"Cellebredde skal være et tal.","invalidHeight":"Cellehøjde skal være et tal.","invalidRowSpan":"Række span skal være et heltal.","invalidColSpan":"Kolonne span skal være et heltal.","chooseColor":"Vælg"},"cellPad":"Cellemargen","cellSpace":"Celleafstand","column":{"menu":"Kolonne","insertBefore":"Indsæt kolonne før","insertAfter":"Indsæt kolonne efter","deleteColumn":"Slet kolonne"},"columns":"Kolonner","deleteTable":"Slet tabel","headers":"Hoved","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første række","invalidBorder":"Rammetykkelse skal være et tal.","invalidCellPadding":"Cellemargen skal være et tal.","invalidCellSpacing":"Celleafstand skal være et tal.","invalidCols":"Antallet af kolonner skal være større end 0.","invalidHeight":"Tabelhøjde skal være et tal.","invalidRows":"Antallet af rækker skal være større end 0.","invalidWidth":"Tabelbredde skal være et tal.","menu":"Egenskaber for tabel","row":{"menu":"Række","insertBefore":"Indsæt række før","insertAfter":"Indsæt række efter","deleteRow":"Slet række"},"rows":"Rækker","summary":"Resumé","title":"Egenskaber for tabel","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"Bredde på enhed"},"stylescombo":{"label":"Typografi","panelTitle":"Formattering på stylesheet","panelTitle1":"Block typografi","panelTitle2":"Inline typografi","panelTitle3":"Object typografi"},"specialchar":{"options":"Muligheder for specialkarakterer","title":"Vælg symbol","toolbar":"Indsæt symbol"},"sourcearea":{"toolbar":"Kilde"},"scayt":{"btn_about":"Om SCAYT","btn_dictionaries":"Ordbøger","btn_disable":"Deaktivér SCAYT","btn_enable":"Aktivér SCAYT","btn_langs":"Sprog","btn_options":"Indstillinger","text_title":"Stavekontrol mens du skriver"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Indsæt som ikke-formateret tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?","error":"Det var ikke muligt at fjerne formatteringen på den indsatte tekst grundet en intern fejl","title":"Indsæt fra Word","toolbar":"Indsæt fra Word"},"notification":{"closed":"Notefikation lukket."},"maximize":{"maximize":"Maksimér","minimize":"Minimér"},"magicline":{"title":"Indsæt afsnit"},"list":{"bulletedlist":"Punktopstilling","numberedlist":"Talopstilling"},"link":{"acccessKey":"Genvejstast","advanced":"Avanceret","advisoryContentType":"Indholdstype","advisoryTitle":"Titel","anchor":{"toolbar":"Indsæt/redigér bogmærke","menu":"Egenskaber for bogmærke","title":"Egenskaber for bogmærke","name":"Bogmærkenavn","errorName":"Indtast bogmærkenavn","remove":"Fjern bogmærke"},"anchorId":"Efter element-Id","anchorName":"Efter ankernavn","charset":"Tegnsæt","cssClasses":"Typografiark","download":"Force Download","displayText":"Display Text","emailAddress":"E-mailadresse","emailBody":"Besked","emailSubject":"Emne","id":"Id","info":"Generelt","langCode":"Tekstretning","langDir":"Tekstretning","langDirLTR":"Fra venstre mod højre (LTR)","langDirRTL":"Fra højre mod venstre (RTL)","menu":"Redigér hyperlink","name":"Navn","noAnchors":"(Ingen bogmærker i dokumentet)","noEmail":"Indtast e-mailadresse!","noUrl":"Indtast hyperlink-URL!","other":"<anden>","popupDependent":"Koblet/dependent (Netscape)","popupFeatures":"Egenskaber for popup","popupFullScreen":"Fuld skærm (IE)","popupLeft":"Position fra venstre","popupLocationBar":"Adresselinje","popupMenuBar":"Menulinje","popupResizable":"Justérbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Værktøjslinje","popupTop":"Position fra toppen","rel":"Relation","selectAnchor":"Vælg et anker","styles":"Typografi","tabIndex":"Tabulatorindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Destinationsvinduets navn","targetPopup":"<popup vindue>","targetPopupName":"Popupvinduets navn","title":"Egenskaber for hyperlink","toAnchor":"Bogmærke på denne side","toEmail":"E-mail","toUrl":"URL","toolbar":"Indsæt/redigér hyperlink","type":"Type","unlink":"Fjern hyperlink","upload":"Upload"},"indent":{"indent":"Forøg indrykning","outdent":"Formindsk indrykning"},"image":{"alt":"Alternativ tekst","border":"Ramme","btnUpload":"Upload fil til serveren","button2Img":"Vil du lave billedknappen om til et almindeligt billede?","hSpace":"Vandret margen","img2Button":"Vil du lave billedet om til en billedknap?","infoTab":"Generelt","linkTab":"Hyperlink","lockRatio":"Lås størrelsesforhold","menu":"Egenskaber for billede","resetSize":"Nulstil størrelse","title":"Egenskaber for billede","titleButton":"Egenskaber for billedknap","upload":"Upload","urlMissing":"Kilde på billed-URL mangler","vSpace":"Lodret margen","validateBorder":"Kant skal være et helt nummer.","validateHSpace":"HSpace skal være et helt nummer.","validateVSpace":"VSpace skal være et helt nummer."},"horizontalrule":{"toolbar":"Indsæt vandret streg"},"format":{"label":"Formatering","panelTitle":"Formatering","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formateret"},"fakeobjects":{"anchor":"Anker","flash":"Flashanimation","hiddenfield":"Skjult felt","iframe":"Iframe","unknown":"Ukendt objekt"},"elementspath":{"eleLabel":"Sti på element","eleTitle":"%1 element"},"contextmenu":{"options":"Muligheder for hjælpemenu"},"clipboard":{"copy":"Kopiér","copyError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).","cut":"Klip","cutError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).","paste":"Indsæt","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Valgt)"},"blockquote":{"toolbar":"Blokcitat"},"basicstyles":{"bold":"Fed","italic":"Kursiv","strike":"Gennemstreget","subscript":"Sænket skrift","superscript":"Hævet skrift","underline":"Understreget"},"about":{"copy":"Copyright © $1. Alle rettigheder forbeholdes.","dlgTitle":"Om CKEditor","help":"Se $1 for at få hjælp.","moreInfo":"For informationer omkring licens, se venligst vores hjemmeside (på engelsk):","title":"Om CKEditor","userGuide":"CKEditor-brugermanual"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tryk ALT 0 for hjælp","browseServer":"Gennemse...","url":"URL","protocol":"Protokol","upload":"Upload","uploadSubmit":"Upload","image":"Indsæt billede","flash":"Indsæt Flash","form":"Indsæt formular","checkbox":"Indsæt afkrydsningsfelt","radio":"Indsæt alternativknap","textField":"Indsæt tekstfelt","textarea":"Indsæt tekstboks","hiddenField":"Indsæt skjult felt","button":"Indsæt knap","select":"Indsæt liste","imageButton":"Indsæt billedknap","notSet":"<intet valgt>","id":"Id","name":"Navn","langDir":"Tekstretning","langDirLtr":"Fra venstre mod højre (LTR)","langDirRtl":"Fra højre mod venstre (RTL)","langCode":"Sprogkode","longDescr":"Udvidet beskrivelse","cssClass":"Typografiark (CSS)","advisoryTitle":"Titel","cssStyle":"Typografi (CSS)","ok":"OK","cancel":"Annullér","close":"Luk","preview":"Forhåndsvisning","resize":"Træk for at skalere","generalTab":"Generelt","advancedTab":"Avanceret","validateNumberFailed":"Værdien er ikke et tal.","confirmNewPage":"Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?","confirmCancel":"Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?","options":"Vis muligheder","target":"Mål","targetNew":"Nyt vindue (_blank)","targetTop":"Øverste vindue (_top)","targetSelf":"Samme vindue (_self)","targetParent":"Samme vindue (_parent)","langDirLTR":"Venstre til højre (LTR)","langDirRTL":"Højre til venstre (RTL)","styles":"Style","cssClasses":"Stylesheetklasser","width":"Bredde","height":"Højde","align":"Justering","alignLeft":"Venstre","alignRight":"Højre","alignCenter":"Centreret","alignJustify":"Lige margener","alignTop":"Øverst","alignMiddle":"Centreret","alignBottom":"Nederst","alignNone":"Ingen","invalidValue":"Ugyldig værdi.","invalidHeight":"Højde skal være et tal.","invalidWidth":"Bredde skal være et tal.","invalidCssLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px eller %).","invalidInlineStyle":"Værdien specificeret for inline style skal indeholde en eller flere elementer med et format som \"name:value\", separeret af semikoloner","cssLengthTooltip":"Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikke tilgængelig</span>","keyboard":{"8":"Backspace","13":"Retur","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellemrum","35":"End","36":"Home","46":"Slet","224":"Command"},"keyboardShortcut":"Tastatur genvej"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/lang/de-ch.js deleted file mode 100644 index c437a5dd4..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['de-ch']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengrösse","caption":"Überschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Überschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand aussen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","invalidBorder":"Die Rahmenbreite muss eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muss eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand aussen muss eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß grösser als 0 sein..","invalidHeight":"Die Tabellenbreite muss eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß grösser als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcearea":{"toolbar":"Quellcode"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"link":{"acccessKey":"Zugriffstaste","advanced":"Erweitert","advisoryContentType":"Inhaltstyp","advisoryTitle":"Titel Beschreibung","anchor":{"toolbar":"Anker","menu":"Anker bearbeiten","title":"Ankereigenschaften","name":"Ankername","errorName":"Bitte geben Sie den Namen des Ankers ein","remove":"Anker entfernen"},"anchorId":"Nach Elementkennung","anchorName":"Nach Ankername","charset":"Verknüpfter Ressourcenzeichensatz","cssClasses":"Formatvorlagenklasse","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail-Adresse","emailBody":"Nachrichtentext","emailSubject":"Betreffzeile","id":"Kennung","info":"Linkinfo","langCode":"Sprachcode","langDir":"Schreibrichtung","langDirLTR":"Links nach Rechts (LTR)","langDirRTL":"Rechts nach Links (RTL)","menu":"Link bearbeiten","name":"Name","noAnchors":"(Keine Anker im Dokument vorhanden)","noEmail":"Bitte geben Sie E-Mail-Adresse an","noUrl":"Bitte geben Sie die Link-URL an","other":"<andere>","popupDependent":"Abhängig (Netscape)","popupFeatures":"Pop-up Fenstereigenschaften","popupFullScreen":"Vollbild (IE)","popupLeft":"Linke Position","popupLocationBar":"Adressleiste","popupMenuBar":"Menüleiste","popupResizable":"Grösse änderbar","popupScrollBars":"Rollbalken","popupStatusBar":"Statusleiste","popupToolbar":"Werkzeugleiste","popupTop":"Obere Position","rel":"Beziehung","selectAnchor":"Anker auswählen","styles":"Style","tabIndex":"Tab-Index","target":"Zielseite","targetFrame":"<Frame>","targetFrameName":"Ziel-Fenster-Name","targetPopup":"<Pop-up Fenster>","targetPopupName":"Pop-up Fenster-Name","title":"Link","toAnchor":"Anker in dieser Seite","toEmail":"E-Mail","toUrl":"URL","toolbar":"Link einfügen/editieren","type":"Link-Typ","unlink":"Link entfernen","upload":"Hochladen"},"indent":{"indent":"Einzug erhöhen","outdent":"Einzug verringern"},"image":{"alt":"Alternativer Text","border":"Rahmen","btnUpload":"Zum Server senden","button2Img":"Möchten Sie die ausgewählte Bildschaltfläche in ein einfaches Bild umwandeln?","hSpace":"Horizontal-Abstand","img2Button":"Möchten Sie das ausgewählte Bild in eine Bildschaltfläche umwandeln?","infoTab":"Bildinfo","linkTab":"Link","lockRatio":"Grössenverhältnis beibehalten","menu":"Bildeigenschaften","resetSize":"Grösse zurücksetzen","title":"Bildeigenschaften","titleButton":"Bildschaltflächeneigenschaften","upload":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","vSpace":"Vertikal-Abstand","validateBorder":"Rahmen muss eine ganze Zahl sein.","validateHSpace":"Horizontal-Abstand muss eine ganze Zahl sein.","validateVSpace":"Vertikal-Abstand muss eine ganze Zahl sein."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Überschrift 1","tag_h2":"Überschrift 2","tag_h3":"Überschrift 3","tag_h4":"Überschrift 4","tag_h5":"Überschrift 5","tag_h6":"Überschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"fakeobjects":{"anchor":"Anker","flash":"Flash-Animation","hiddenfield":"Verstecktes Feld","iframe":"IFrame","unknown":"Unbekanntes Objekt"},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Ausgewählt)"},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Über CKEditor","help":"Prüfen Sie $1 für Hilfe.","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:","title":"Über CKEditor","userGuide":"CKEditor Benutzerhandbuch"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schliessen","preview":"Vorschau","resize":"Grösse ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verlohren. Sind Sie sicher die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schliessen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Zentriert","alignJustify":"Blocksatz","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Space","35":"Ende","36":"Pos1","46":"Entfernen","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/de.js b/vendor/unisharp/laravel-ckeditor/lang/de.js deleted file mode 100644 index 7bf0065ba..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['de']={"wsc":{"btnIgnore":"Ignorieren","btnIgnoreAll":"Alle Ignorieren","btnReplace":"Ersetzen","btnReplaceAll":"Alle Ersetzen","btnUndo":"Rückgängig","changeTo":"Ändern in","errorLoading":"Fehler beim laden des Dienstanbieters: %s.","ieSpellDownload":"Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?","manyChanges":"Rechtschreibprüfung abgeschlossen - %1 Wörter geändert","noChanges":"Rechtschreibprüfung abgeschlossen - keine Worte geändert","noMispell":"Rechtschreibprüfung abgeschlossen - keine Fehler gefunden","noSuggestions":" - keine Vorschläge - ","notAvailable":"Entschuldigung, aber dieser Dienst steht im Moment nicht zur Verfügung.","notInDic":"Nicht im Wörterbuch","oneChange":"Rechtschreibprüfung abgeschlossen - ein Wort geändert","progress":"Rechtschreibprüfung läuft...","title":"Rechtschreibprüfung","toolbar":"Rechtschreibprüfung"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengröße","caption":"Überschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Überschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand außen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","invalidBorder":"Die Rahmenbreite muß eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muß eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand außen muß eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß größer als 0 sein..","invalidHeight":"Die Tabellenbreite muß eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß größer als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcearea":{"toolbar":"Quellcode"},"scayt":{"btn_about":"Über SCAYT","btn_dictionaries":"Wörterbücher","btn_disable":"SCAYT ausschalten","btn_enable":"SCAYT einschalten","btn_langs":"Sprachen","btn_options":"Optionen","text_title":"Rechtschreibprüfung während der Texteingabe (SCAYT)"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Ihr Browser verhindert das Einfügen von Text über diesen Weg. Zum einfügen drücken Sie %1."},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"link":{"acccessKey":"Zugriffstaste","advanced":"Erweitert","advisoryContentType":"Inhaltstyp","advisoryTitle":"Titel Beschreibung","anchor":{"toolbar":"Anker","menu":"Anker bearbeiten","title":"Ankereigenschaften","name":"Ankername","errorName":"Bitte geben Sie den Namen des Ankers ein","remove":"Anker entfernen"},"anchorId":"Nach Elementkennung","anchorName":"Nach Ankername","charset":"Verknüpfter Ressourcenzeichensatz","cssClasses":"Formatvorlagenklasse","download":"Herunterladen erzwingen","displayText":"Anzeigetext","emailAddress":"E-Mail-Adresse","emailBody":"Nachrichtentext","emailSubject":"Betreffzeile","id":"Kennung","info":"Linkinfo","langCode":"Sprachcode","langDir":"Schreibrichtung","langDirLTR":"Links nach Rechts (LTR)","langDirRTL":"Rechts nach Links (RTL)","menu":"Link bearbeiten","name":"Name","noAnchors":"(Keine Anker im Dokument vorhanden)","noEmail":"Bitte geben Sie E-Mail-Adresse an","noUrl":"Bitte geben Sie die Link-URL an","other":"<andere>","popupDependent":"Abhängig (Netscape)","popupFeatures":"Pop-up Fenstereigenschaften","popupFullScreen":"Vollbild (IE)","popupLeft":"Linke Position","popupLocationBar":"Adressleiste","popupMenuBar":"Menüleiste","popupResizable":"Größe änderbar","popupScrollBars":"Rollbalken","popupStatusBar":"Statusleiste","popupToolbar":"Werkzeugleiste","popupTop":"Obere Position","rel":"Beziehung","selectAnchor":"Anker auswählen","styles":"Style","tabIndex":"Tab-Index","target":"Zielseite","targetFrame":"<Frame>","targetFrameName":"Ziel-Fenster-Name","targetPopup":"<Pop-up Fenster>","targetPopupName":"Pop-up Fenster-Name","title":"Link","toAnchor":"Anker in dieser Seite","toEmail":"E-Mail","toUrl":"URL","toolbar":"Link einfügen/editieren","type":"Link-Typ","unlink":"Link entfernen","upload":"Hochladen"},"indent":{"indent":"Einzug erhöhen","outdent":"Einzug verringern"},"image":{"alt":"Alternativer Text","border":"Rahmen","btnUpload":"Zum Server senden","button2Img":"Möchten Sie die ausgewählte Bildschaltfläche in ein einfaches Bild umwandeln?","hSpace":"Horizontal-Abstand","img2Button":"Möchten Sie das ausgewählte Bild in eine Bildschaltfläche umwandeln?","infoTab":"Bildinfo","linkTab":"Link","lockRatio":"Größenverhältnis beibehalten","menu":"Bildeigenschaften","resetSize":"Größe zurücksetzen","title":"Bildeigenschaften","titleButton":"Bildschaltflächeneigenschaften","upload":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","vSpace":"Vertikal-Abstand","validateBorder":"Rahmen muss eine ganze Zahl sein.","validateHSpace":"Horizontal-Abstand muss eine ganze Zahl sein.","validateVSpace":"Vertikal-Abstand muss eine ganze Zahl sein."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Überschrift 1","tag_h2":"Überschrift 2","tag_h3":"Überschrift 3","tag_h4":"Überschrift 4","tag_h5":"Überschrift 5","tag_h6":"Überschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"fakeobjects":{"anchor":"Anker","flash":"Flash-Animation","hiddenfield":"Verstecktes Feld","iframe":"IFrame","unknown":"Unbekanntes Objekt"},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Ihr Browser verhindert das Einfügen über diesen Weg. Zum einfügen drücken Sie %1."},"button":{"selectedLabel":"%1 (Ausgewählt)"},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Über CKEditor","help":"Prüfen Sie $1 für Hilfe.","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:","title":"Über CKEditor","userGuide":"CKEditor Benutzerhandbuch"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schließen","preview":"Vorschau","resize":"Größe ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Zentriert","alignJustify":"Blocksatz","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Leer","35":"Ende","36":"Pos1","46":"Entfernen","224":"Befehl"},"keyboardShortcut":"Tastaturkürzel"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/el.js b/vendor/unisharp/laravel-ckeditor/lang/el.js deleted file mode 100644 index 261573217..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['el']={"wsc":{"btnIgnore":"Αγνόηση","btnIgnoreAll":"Αγνόηση όλων","btnReplace":"Αντικατάσταση","btnReplaceAll":"Αντικατάσταση όλων","btnUndo":"Αναίρεση","changeTo":"Αλλαγή σε","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;","manyChanges":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξαν %1 λέξεις","noChanges":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις","noMispell":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη","noSuggestions":"- Δεν υπάρχουν προτάσεις -","notAvailable":"Η υπηρεσία δεν είναι διαθέσιμη αυτήν την στιγμή.","notInDic":"Δεν υπάρχει στο λεξικό","oneChange":"Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξε μια λέξη","progress":"Γίνεται ορθογραφικός έλεγχος...","title":"Ορθογραφικός Έλεγχος","toolbar":"Ορθογραφικός Έλεγχος"},"undo":{"redo":"Επανάληψη","undo":"Αναίρεση"},"toolbar":{"toolbarCollapse":"Σύμπτυξη Εργαλειοθήκης","toolbarExpand":"Ανάπτυξη Εργαλειοθήκης","toolbarGroups":{"document":"Έγγραφο","clipboard":"Πρόχειρο/Αναίρεση","editing":"Επεξεργασία","forms":"Φόρμες","basicstyles":"Βασικά Στυλ","paragraph":"Παράγραφος","links":"Σύνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"Χρώματα","tools":"Εργαλεία"},"toolbars":"Εργαλειοθήκες επεξεργαστή"},"table":{"border":"Πάχος Περιγράμματος","caption":"Λεζάντα","cell":{"menu":"Κελί","insertBefore":"Εισαγωγή Κελιού Πριν","insertAfter":"Εισαγωγή Κελιού Μετά","deleteCell":"Διαγραφή Κελιών","merge":"Ενοποίηση Κελιών","mergeRight":"Συγχώνευση Με Δεξιά","mergeDown":"Συγχώνευση Με Κάτω","splitHorizontal":"Οριζόντια Διαίρεση Κελιού","splitVertical":"Κατακόρυφη Διαίρεση Κελιού","title":"Ιδιότητες Κελιού","cellType":"Τύπος Κελιού","rowSpan":"Εύρος Γραμμών","colSpan":"Εύρος Στηλών","wordWrap":"Αναδίπλωση Λέξεων","hAlign":"Οριζόντια Στοίχιση","vAlign":"Κάθετη Στοίχιση","alignBaseline":"Γραμμή Βάσης","bgColor":"Χρώμα Φόντου","borderColor":"Χρώμα Περιγράμματος","data":"Δεδομένα","header":"Κεφαλίδα","yes":"Ναι","no":"Όχι","invalidWidth":"Το πλάτος του κελιού πρέπει να είναι αριθμός.","invalidHeight":"Το ύψος του κελιού πρέπει να είναι αριθμός.","invalidRowSpan":"Το εύρος των γραμμών πρέπει να είναι ακέραιος αριθμός.","invalidColSpan":"Το εύρος των στηλών πρέπει να είναι ακέραιος αριθμός.","chooseColor":"Επιλέξτε"},"cellPad":"Αναπλήρωση κελιών","cellSpace":"Απόσταση κελιών","column":{"menu":"Στήλη","insertBefore":"Εισαγωγή Στήλης Πριν","insertAfter":"Εισαγωγή Στήλης Μετά","deleteColumn":"Διαγραφή Στηλών"},"columns":"Στήλες","deleteTable":"Διαγραφή Πίνακα","headers":"Κεφαλίδες","headersBoth":"Και τα δύο","headersColumn":"Πρώτη στήλη","headersNone":"Κανένα","headersRow":"Πρώτη Γραμμή","invalidBorder":"Το πάχος του περιγράμματος πρέπει να είναι ένας αριθμός.","invalidCellPadding":"Η αναπλήρωση των κελιών πρέπει να είναι θετικός αριθμός.","invalidCellSpacing":"Η απόσταση μεταξύ των κελιών πρέπει να είναι ένας θετικός αριθμός.","invalidCols":"Ο αριθμός των στηλών πρέπει να είναι μεγαλύτερος από 0.","invalidHeight":"Το ύψος του πίνακα πρέπει να είναι αριθμός.","invalidRows":"Ο αριθμός των σειρών πρέπει να είναι μεγαλύτερος από 0.","invalidWidth":"Το πλάτος του πίνακα πρέπει να είναι ένας αριθμός.","menu":"Ιδιότητες Πίνακα","row":{"menu":"Γραμμή","insertBefore":"Εισαγωγή Γραμμής Πριν","insertAfter":"Εισαγωγή Γραμμής Μετά","deleteRow":"Διαγραφή Γραμμών"},"rows":"Γραμμές","summary":"Περίληψη","title":"Ιδιότητες Πίνακα","toolbar":"Πίνακας","widthPc":"τοις εκατό","widthPx":"pixel","widthUnit":"μονάδα πλάτους"},"stylescombo":{"label":"Μορφές","panelTitle":"Στυλ Μορφοποίησης","panelTitle1":"Στυλ Τμημάτων","panelTitle2":"Στυλ Εν Σειρά","panelTitle3":"Στυλ Αντικειμένων"},"specialchar":{"options":"Επιλογές Ειδικών Χαρακτήρων","title":"Επιλέξτε Έναν Ειδικό Χαρακτήρα","toolbar":"Εισαγωγή Ειδικού Χαρακτήρα"},"sourcearea":{"toolbar":"Κώδικας"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Λεξικά","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Γλώσσες","btn_options":"Επιλογές","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Εκκαθάριση Μορφοποίησης"},"pastetext":{"button":"Επικόλληση ως απλό κείμενο","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Το κείμενο που επικολλάται φαίνεται να είναι αντιγραμμένο από το Word. Μήπως θα θέλατε να καθαριστεί προτού επικολληθεί;","error":"Δεν ήταν δυνατό να καθαριστούν τα δεδομένα λόγω ενός εσωτερικού σφάλματος","title":"Επικόλληση από το Word","toolbar":"Επικόλληση από το Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Μεγιστοποίηση","minimize":"Ελαχιστοποίηση"},"magicline":{"title":"Εισάγετε παράγραφο εδώ"},"list":{"bulletedlist":"Εισαγωγή/Απομάκρυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/Απομάκρυνση Αριθμημένης Λίστας"},"link":{"acccessKey":"Συντόμευση","advanced":"Για Προχωρημένους","advisoryContentType":"Ενδεικτικός Τύπος Περιεχομένου","advisoryTitle":"Ενδεικτικός Τίτλος","anchor":{"toolbar":"Εισαγωγή/επεξεργασία Άγκυρας","menu":"Ιδιότητες άγκυρας","title":"Ιδιότητες άγκυρας","name":"Όνομα άγκυρας","errorName":"Παρακαλούμε εισάγετε όνομα άγκυρας","remove":"Αφαίρεση Άγκυρας"},"anchorId":"Βάσει του Element Id","anchorName":"Βάσει του Ονόματος Άγκυρας","charset":"Κωδικοποίηση Χαρακτήρων Προσαρτημένης Πηγής","cssClasses":"Κλάσεις Φύλλων Στυλ","download":"Force Download","displayText":"Display Text","emailAddress":"Διεύθυνση E-mail","emailBody":"Κείμενο Μηνύματος","emailSubject":"Θέμα Μηνύματος","id":"Id","info":"Πληροφορίες Συνδέσμου","langCode":"Κατεύθυνση Κειμένου","langDir":"Κατεύθυνση Κειμένου","langDirLTR":"Αριστερά προς Δεξιά (LTR)","langDirRTL":"Δεξιά προς Αριστερά (RTL)","menu":"Επεξεργασία Συνδέσμου","name":"Όνομα","noAnchors":"(Δεν υπάρχουν άγκυρες στο κείμενο)","noEmail":"Εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου","noUrl":"Εισάγετε την τοποθεσία (URL) του συνδέσμου","other":"<άλλο>","popupDependent":"Εξαρτημένο (Netscape)","popupFeatures":"Επιλογές Αναδυόμενου Παραθύρου","popupFullScreen":"Πλήρης Οθόνη (IE)","popupLeft":"Θέση Αριστερά","popupLocationBar":"Γραμμή Τοποθεσίας","popupMenuBar":"Γραμμή Επιλογών","popupResizable":"Προσαρμοζόμενο Μέγεθος","popupScrollBars":"Μπάρες Κύλισης","popupStatusBar":"Γραμμή Κατάστασης","popupToolbar":"Εργαλειοθήκη","popupTop":"Θέση Πάνω","rel":"Σχέση","selectAnchor":"Επιλέξτε μια Άγκυρα","styles":"Μορφή","tabIndex":"Σειρά Μεταπήδησης","target":"Παράθυρο Προορισμού","targetFrame":"<πλαίσιο>","targetFrameName":"Όνομα Πλαισίου Προορισμού","targetPopup":"<αναδυόμενο παράθυρο>","targetPopupName":"Όνομα Αναδυόμενου Παραθύρου","title":"Σύνδεσμος","toAnchor":"Άγκυρα σε αυτήν τη σελίδα","toEmail":"E-Mail","toUrl":"URL","toolbar":"Σύνδεσμος","type":"Τύπος Συνδέσμου","unlink":"Αφαίρεση Συνδέσμου","upload":"Αποστολή"},"indent":{"indent":"Αύξηση Εσοχής","outdent":"Μείωση Εσοχής"},"image":{"alt":"Εναλλακτικό Κείμενο","border":"Περίγραμμα","btnUpload":"Αποστολή στον Διακομιστή","button2Img":"Θέλετε να μετατρέψετε το επιλεγμένο κουμπί εικόνας σε απλή εικόνα;","hSpace":"HSpace","img2Button":"Θέλετε να μεταμορφώσετε την επιλεγμένη εικόνα που είναι πάνω σε ένα κουμπί;","infoTab":"Πληροφορίες Εικόνας","linkTab":"Σύνδεσμος","lockRatio":"Κλείδωμα Αναλογίας","menu":"Ιδιότητες Εικόνας","resetSize":"Επαναφορά Αρχικού Μεγέθους","title":"Ιδιότητες Εικόνας","titleButton":"Ιδιότητες Κουμπιού Εικόνας","upload":"Αποστολή","urlMissing":"Το URL πηγής για την εικόνα λείπει.","vSpace":"VSpace","validateBorder":"Το περίγραμμα πρέπει να είναι ένας ακέραιος αριθμός.","validateHSpace":"Το HSpace πρέπει να είναι ένας ακέραιος αριθμός.","validateVSpace":"Το VSpace πρέπει να είναι ένας ακέραιος αριθμός."},"horizontalrule":{"toolbar":"Εισαγωγή Οριζόντιας Γραμμής"},"format":{"label":"Μορφοποίηση","panelTitle":"Μορφοποίηση Παραγράφου","tag_address":"Διεύθυνση","tag_div":"Κανονική (DIV)","tag_h1":"Κεφαλίδα 1","tag_h2":"Κεφαλίδα 2","tag_h3":"Κεφαλίδα 3","tag_h4":"Κεφαλίδα 4","tag_h5":"Κεφαλίδα 5","tag_h6":"Κεφαλίδα 6","tag_p":"Κανονική","tag_pre":"Προ-μορφοποιημένη"},"fakeobjects":{"anchor":"Άγκυρα","flash":"Ταινία Flash","hiddenfield":"Κρυφό Πεδίο","iframe":"IFrame","unknown":"Άγνωστο Αντικείμενο"},"elementspath":{"eleLabel":"Διαδρομή Στοιχείων","eleTitle":"Στοιχείο %1"},"contextmenu":{"options":"Επιλογές Αναδυόμενου Μενού"},"clipboard":{"copy":"Αντιγραφή","copyError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteNotification":"Ο περιηγητής σας δεν σας επιτρέπει να επικολλήσετε με αυτόν τον τρόπο. Πατήστε %1 για επικόλληση."},"button":{"selectedLabel":"%1 (Επιλεγμένο)"},"blockquote":{"toolbar":"Περιοχή Παράθεσης"},"basicstyles":{"bold":"Έντονη","italic":"Πλάγια","strike":"Διακριτή Διαγραφή","subscript":"Δείκτης","superscript":"Εκθέτης","underline":"Υπογράμμιση"},"about":{"copy":"Πνευματικά δικαιώματα © $1 Με επιφύλαξη παντός δικαιώματος.","dlgTitle":"Περί του CKEditor","help":"Ελέγξτε τις $1 για βοήθεια.","moreInfo":"Για πληροφορίες σχετικές με την άδεια χρήσης, παρακαλούμε επισκεφθείτε την ιστοσελίδα μας:","title":"Περί του CKEditor","userGuide":"Οδηγίες Χρήστη CKEditor"},"editor":"Επεξεργαστής Πλούσιου Κειμένου","editorPanel":"Πίνακας Επεξεργαστή Πλούσιου Κειμένου","common":{"editorHelp":"Πατήστε το ALT 0 για βοήθεια","browseServer":"Εξερεύνηση Διακομιστή","url":"URL","protocol":"Πρωτόκολλο","upload":"Αποστολή","uploadSubmit":"Αποστολή στον Διακομιστή","image":"Εικόνα","flash":"Flash","form":"Φόρμα","checkbox":"Κουτί Επιλογής","radio":"Κουμπί Επιλογής","textField":"Πεδίο Κειμένου","textarea":"Περιοχή Κειμένου","hiddenField":"Κρυφό Πεδίο","button":"Κουμπί","select":"Πεδίο Επιλογής","imageButton":"Κουμπί Εικόνας","notSet":"<δεν έχει ρυθμιστεί>","id":"Id","name":"Όνομα","langDir":"Κατεύθυνση Κειμένου","langDirLtr":"Αριστερά προς Δεξιά (LTR)","langDirRtl":"Δεξιά προς Αριστερά (RTL)","langCode":"Κωδικός Γλώσσας","longDescr":"Αναλυτική Περιγραφή URL","cssClass":"Κλάσεις Φύλλων Στυλ","advisoryTitle":"Ενδεικτικός Τίτλος","cssStyle":"Μορφή Κειμένου","ok":"OK","cancel":"Ακύρωση","close":"Κλείσιμο","preview":"Προεπισκόπηση","resize":"Αλλαγή Μεγέθους","generalTab":"Γενικά","advancedTab":"Για Προχωρημένους","validateNumberFailed":"Αυτή η τιμή δεν είναι αριθμός.","confirmNewPage":"Οι όποιες αλλαγές στο περιεχόμενο θα χαθούν. Είσαστε σίγουροι ότι θέλετε να φορτώσετε μια νέα σελίδα;","confirmCancel":"Μερικές επιλογές έχουν αλλάξει. Είσαστε σίγουροι ότι θέλετε να κλείσετε το παράθυρο διαλόγου;","options":"Επιλογές","target":"Προορισμός","targetNew":"Νέο Παράθυρο (_blank)","targetTop":"Αρχική Περιοχή (_top)","targetSelf":"Ίδιο Παράθυρο (_self)","targetParent":"Γονεϊκό Παράθυρο (_parent)","langDirLTR":"Αριστερά προς Δεξιά (LTR)","langDirRTL":"Δεξιά προς Αριστερά (RTL)","styles":"Μορφή","cssClasses":"Κλάσεις Φύλλων Στυλ","width":"Πλάτος","height":"Ύψος","align":"Στοίχιση","alignLeft":"Αριστερά","alignRight":"Δεξιά","alignCenter":"Κέντρο","alignJustify":"Πλήρης Στοίχιση","alignTop":"Πάνω","alignMiddle":"Μέση","alignBottom":"Κάτω","alignNone":"Χωρίς","invalidValue":"Μη έγκυρη τιμή.","invalidHeight":"Το ύψος πρέπει να είναι ένας αριθμός.","invalidWidth":"Το πλάτος πρέπει να είναι ένας αριθμός.","invalidCssLength":"Η τιμή που ορίζεται για το πεδίο \"%1\" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","invalidHtmlLength":"Η τιμή που ορίζεται για το πεδίο \"%1\" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης HTML (px ή %).","invalidInlineStyle":"Η τιμή για το εν σειρά στυλ πρέπει να περιέχει ένα ή περισσότερα ζεύγη με την μορφή \"όνομα: τιμή\" διαχωρισμένα με Ελληνικό ερωτηματικό.","cssLengthTooltip":"Εισάγεται μια τιμή σε pixel ή έναν αριθμό μαζί με μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","unavailable":"%1<span class=\"cke_accessibility\">, δεν είναι διαθέσιμο</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Συντόμευση πληκτρολογίου"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/en-au.js b/vendor/unisharp/laravel-ckeditor/lang/en-au.js deleted file mode 100644 index 63a0001b5..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-au']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/en-ca.js b/vendor/unisharp/laravel-ckeditor/lang/en-ca.js deleted file mode 100644 index a4e2fe79d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/en-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-ca']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/lang/en-gb.js deleted file mode 100644 index 5ea0f33f3..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['en-gb']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Drag to resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialogue window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","alignLeft":"Left","alignRight":"Right","alignCenter":"Centre","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/en.js b/vendor/unisharp/laravel-ckeditor/lang/en.js deleted file mode 100644 index db06e3129..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['en']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/eo.js b/vendor/unisharp/laravel-ckeditor/lang/eo.js deleted file mode 100644 index 29bb1dac5..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['eo']={"wsc":{"btnIgnore":"Ignori","btnIgnoreAll":"Ignori Ĉion","btnReplace":"Anstataŭigi","btnReplaceAll":"Anstataŭigi Ĉion","btnUndo":"Malfari","changeTo":"Ŝanĝi al","errorLoading":"Eraro en la servoelŝuto el la gastiga komputiko: %s.","ieSpellDownload":"Ortografikontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?","manyChanges":"Ortografikontrolado finita: %1 vortoj korektitaj","noChanges":"Ortografikontrolado finita: neniu vorto korektita","noMispell":"Ortografikontrolado finita: neniu eraro trovita","noSuggestions":"- Neniu propono -","notAvailable":"Bedaŭrinde la servo ne funkcias nuntempe.","notInDic":"Ne trovita en la vortaro","oneChange":"Ortografikontrolado finita: unu vorto korektita","progress":"La ortografio estas kontrolata...","title":"Kontroli la ortografion","toolbar":"Kontroli la ortografion"},"undo":{"redo":"Refari","undo":"Malfari"},"toolbar":{"toolbarCollapse":"Faldi la ilbreton","toolbarExpand":"Malfaldi la ilbreton","toolbarGroups":{"document":"Dokumento","clipboard":"Poŝo/Malfari","editing":"Redaktado","forms":"Formularoj","basicstyles":"Bazaj stiloj","paragraph":"Paragrafo","links":"Ligiloj","insert":"Enmeti","styles":"Stiloj","colors":"Koloroj","tools":"Iloj"},"toolbars":"Ilobretoj de la redaktilo"},"table":{"border":"Bordero","caption":"Tabeltitolo","cell":{"menu":"Ĉelo","insertBefore":"Enmeti Ĉelon Antaŭ","insertAfter":"Enmeti Ĉelon Post","deleteCell":"Forigi la Ĉelojn","merge":"Kunfandi la Ĉelojn","mergeRight":"Kunfandi dekstren","mergeDown":"Kunfandi malsupren ","splitHorizontal":"Horizontale dividi","splitVertical":"Vertikale dividi","title":"Ĉelatributoj","cellType":"Ĉeltipo","rowSpan":"Kunfando de linioj","colSpan":"Kunfando de kolumnoj","wordWrap":"Cezuro","hAlign":"Horizontala ĝisrandigo","vAlign":"Vertikala ĝisrandigo","alignBaseline":"Malsupro de la teksto","bgColor":"Fonkoloro","borderColor":"Borderkoloro","data":"Datenoj","header":"Supra paĝotitolo","yes":"Jes","no":"No","invalidWidth":"Ĉellarĝo devas esti nombro.","invalidHeight":"Ĉelalto devas esti nombro.","invalidRowSpan":"Kunfando de linioj devas esti entjera nombro.","invalidColSpan":"Kunfando de kolumnoj devas esti entjera nombro.","chooseColor":"Elektu"},"cellPad":"Interna Marĝeno de la ĉeloj","cellSpace":"Spaco inter la Ĉeloj","column":{"menu":"Kolumno","insertBefore":"Enmeti kolumnon antaŭ","insertAfter":"Enmeti kolumnon post","deleteColumn":"Forigi Kolumnojn"},"columns":"Kolumnoj","deleteTable":"Forigi Tabelon","headers":"Supraj Paĝotitoloj","headersBoth":"Ambaŭ","headersColumn":"Unua kolumno","headersNone":"Neniu","headersRow":"Unua linio","invalidBorder":"La bordergrando devas esti nombro.","invalidCellPadding":"La interna marĝeno en la ĉeloj devas esti pozitiva nombro.","invalidCellSpacing":"La spaco inter la ĉeloj devas esti pozitiva nombro.","invalidCols":"La nombro de la kolumnoj devas superi 0.","invalidHeight":"La tabelalto devas esti nombro.","invalidRows":"La nombro de la linioj devas superi 0.","invalidWidth":"La tabellarĝo devas esti nombro.","menu":"Atributoj de Tabelo","row":{"menu":"Linio","insertBefore":"Enmeti linion antaŭ","insertAfter":"Enmeti linion post","deleteRow":"Forigi Liniojn"},"rows":"Linioj","summary":"Resumo","title":"Atributoj de Tabelo","toolbar":"Tabelo","widthPc":"elcentoj","widthPx":"Rastrumeroj","widthUnit":"unuo de larĝo"},"stylescombo":{"label":"Stiloj","panelTitle":"Stiloj pri enpaĝigo","panelTitle1":"Stiloj de blokoj","panelTitle2":"Enliniaj Stiloj","panelTitle3":"Stiloj de objektoj"},"specialchar":{"options":"Opcioj pri Specialaj Signoj","title":"Selekti Specialan Signon","toolbar":"Enmeti Specialan Signon"},"sourcearea":{"toolbar":"Fonto"},"scayt":{"btn_about":"Pri OKDVT","btn_dictionaries":"Vortaroj","btn_disable":"Malebligi OKDVT","btn_enable":"Ebligi OKDVT","btn_langs":"Lingvoj","btn_options":"Opcioj","text_title":"OrtografiKontrolado Dum Vi Tajpas (OKDVT)"},"removeformat":{"toolbar":"Forigi Formaton"},"pastetext":{"button":"Interglui kiel platan tekston","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"La teksto, kiun vi volas interglui, ŝajnas esti kopiita el Word. Ĉu vi deziras purigi ĝin antaŭ intergluo?","error":"Ne eblis purigi la intergluitajn datenojn pro interna eraro","title":"Interglui el Word","toolbar":"Interglui el Word"},"notification":{"closed":"Sciigo fermita"},"maximize":{"maximize":"Pligrandigi","minimize":"Malgrandigi"},"magicline":{"title":"Enmeti paragrafon ĉi-tien"},"list":{"bulletedlist":"Bula Listo","numberedlist":"Numera Listo"},"link":{"acccessKey":"Fulmoklavo","advanced":"Speciala","advisoryContentType":"Enhavotipo","advisoryTitle":"Priskriba Titolo","anchor":{"toolbar":"Ankro","menu":"Enmeti/Ŝanĝi Ankron","title":"Ankraj Atributoj","name":"Ankra Nomo","errorName":"Bv entajpi la ankran nomon","remove":"Forigi Ankron"},"anchorId":"Per Elementidentigilo","anchorName":"Per Ankronomo","charset":"Signaro de la Ligita Rimedo","cssClasses":"Klasoj de Stilfolioj","download":"Altrudi Elŝuton","displayText":"Vidigi Tekston","emailAddress":"Retpoŝto","emailBody":"Mesaĝa korpo","emailSubject":"Mesaĝa Temo","id":"Id","info":"Informoj pri la Ligilo","langCode":"Lingva Kodo","langDir":"Skribdirekto","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","menu":"Ŝanĝi Ligilon","name":"Nomo","noAnchors":"<Ne disponeblas ankroj en la dokumento>","noEmail":"Bonvolu entajpi la retpoŝtadreson","noUrl":"Bonvolu entajpi la URL-on","other":"<alia>","popupDependent":"Dependa (Netscape)","popupFeatures":"Atributoj de la Ŝprucfenestro","popupFullScreen":"Tutekrane (IE)","popupLeft":"Maldekstra Pozicio","popupLocationBar":"Adresobreto","popupMenuBar":"Menubreto","popupResizable":"Dimensiŝanĝebla","popupScrollBars":"Rulumskaloj","popupStatusBar":"Statobreto","popupToolbar":"Ilobreto","popupTop":"Supra Pozicio","rel":"Rilato","selectAnchor":"Elekti Ankron","styles":"Stilo","tabIndex":"Taba Indekso","target":"Celo","targetFrame":"<kadro>","targetFrameName":"Nomo de CelKadro","targetPopup":"<ŝprucfenestro>","targetPopupName":"Nomo de Ŝprucfenestro","title":"Ligilo","toAnchor":"Ankri en tiu ĉi paĝo","toEmail":"Retpoŝto","toUrl":"URL","toolbar":"Enmeti/Ŝanĝi Ligilon","type":"Tipo de Ligilo","unlink":"Forigi Ligilon","upload":"Alŝuti"},"indent":{"indent":"Pligrandigi Krommarĝenon","outdent":"Malpligrandigi Krommarĝenon"},"image":{"alt":"Anstataŭiga Teksto","border":"Bordero","btnUpload":"Sendu al Servilo","button2Img":"Ĉu vi volas transformi la selektitan bildbutonon en simplan bildon?","hSpace":"Horizontala Spaco","img2Button":"Ĉu vi volas transformi la selektitan bildon en bildbutonon?","infoTab":"Informoj pri Bildo","linkTab":"Ligilo","lockRatio":"Konservi Proporcion","menu":"Atributoj de Bildo","resetSize":"Origina Grando","title":"Atributoj de Bildo","titleButton":"Bildbutonaj Atributoj","upload":"Alŝuti","urlMissing":"La fontretadreso de la bildo mankas.","vSpace":"Vertikala Spaco","validateBorder":"La bordero devas esti entjera nombro.","validateHSpace":"La horizontala spaco devas esti entjera nombro.","validateVSpace":"La vertikala spaco devas esti entjera nombro."},"horizontalrule":{"toolbar":"Enmeti Horizontalan Linion"},"format":{"label":"Formato","panelTitle":"ParagrafFormato","tag_address":"Adreso","tag_div":"Normala (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normala","tag_pre":"Formatita"},"fakeobjects":{"anchor":"Ankro","flash":"FlaŝAnimacio","hiddenfield":"Kaŝita kampo","iframe":"Enlinia Kadro (IFrame)","unknown":"Nekonata objekto"},"elementspath":{"eleLabel":"Vojo al Elementoj","eleTitle":"%1 elementoj"},"contextmenu":{"options":"Opcioj de Kunteksta Menuo"},"clipboard":{"copy":"Kopii","copyError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).","cut":"Eltondi","cutError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).","paste":"Interglui","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selektita)"},"blockquote":{"toolbar":"Citaĵo"},"basicstyles":{"bold":"Grasa","italic":"Kursiva","strike":"Trastreko","subscript":"Suba indico","superscript":"Supra indico","underline":"Substreko"},"about":{"copy":"Copyright © $1. Ĉiuj rajtoj rezervitaj.","dlgTitle":"Pri CKEditor","help":"Kontroli $1 por helpo.","moreInfo":"Por informoj pri licenco, bonvolu viziti nian retpaĝaron:","title":"Pri CKEditor","userGuide":"CKEditor Uzindikoj"},"editor":"RiĉTeksta Redaktilo","editorPanel":"Panelo de la RiĉTeksta Redaktilo","common":{"editorHelp":"Premu ALT 0 por helpilo","browseServer":"Foliumi en la Servilo","url":"URL","protocol":"Protokolo","upload":"Alŝuti","uploadSubmit":"Sendu al Servilo","image":"Bildo","flash":"Flaŝo","form":"Formularo","checkbox":"Markobutono","radio":"Radiobutono","textField":"Teksta kampo","textarea":"Teksta Areo","hiddenField":"Kaŝita Kampo","button":"Butono","select":"Elekta Kampo","imageButton":"Bildbutono","notSet":"<Defaŭlta>","id":"Id","name":"Nomo","langDir":"Skribdirekto","langDirLtr":"De maldekstro dekstren (LTR)","langDirRtl":"De dekstro maldekstren (RTL)","langCode":"Lingva Kodo","longDescr":"URL de Longa Priskribo","cssClass":"Klasoj de Stilfolioj","advisoryTitle":"Priskriba Titolo","cssStyle":"Stilo","ok":"Akcepti","cancel":"Rezigni","close":"Fermi","preview":"Vidigi Aspekton","resize":"Movigi por ŝanĝi la grandon","generalTab":"Ĝenerala","advancedTab":"Speciala","validateNumberFailed":"Tiu valoro ne estas nombro.","confirmNewPage":"La neregistritaj ŝanĝoj estas perdotaj. Ĉu vi certas, ke vi volas ŝargi novan paĝon?","confirmCancel":"Iuj opcioj esta ŝanĝitaj. Ĉu vi certas, ke vi volas fermi la dialogon?","options":"Opcioj","target":"Celo","targetNew":"Nova Fenestro (_blank)","targetTop":"Supra Fenestro (_top)","targetSelf":"Sama Fenestro (_self)","targetParent":"Patra Fenestro (_parent)","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","styles":"Stilo","cssClasses":"Stilfoliaj Klasoj","width":"Larĝo","height":"Alto","align":"Ĝisrandigo","alignLeft":"Maldekstre","alignRight":"Dekstre","alignCenter":"Centre","alignJustify":"Ĝisrandigi Ambaŭflanke","alignTop":"Supre","alignMiddle":"Centre","alignBottom":"Malsupre","alignNone":"Neniu","invalidValue":"Nevalida Valoro","invalidHeight":"Alto devas esti nombro.","invalidWidth":"Larĝo devas esti nombro.","invalidCssLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aŭ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aŭ sen valida HTMLmezurunuo (px or %).","invalidInlineStyle":"La valoro indikita por la enlinia stilo devas konsisti el unu aŭ pluraj elementoj kun la formato de \"nomo : valoro\", apartigitaj per punktokomoj.","cssLengthTooltip":"Entajpu nombron por rastrumera valoro aŭ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nehavebla</span>","keyboard":{"8":"Retropaŝo","13":"Enigi","16":"Registrumo","17":"Stirklavo","18":"Alt-klavo","32":"Spaco","35":"Fino","36":"Hejmo","46":"Forigi","224":"Komando"},"keyboardShortcut":"Fulmoklavo"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/lang/es-mx.js deleted file mode 100644 index 14e88e860..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['es-mx']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Colapsar barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/deshacer","editing":"Editando","forms":"Formularios","basicstyles":"Estilo básico","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Editor de barra de herramientas"},"table":{"border":"Tamaño del borde","caption":"Subtítulo","cell":{"menu":"Celda","insertBefore":"Insertar una celda antes","insertAfter":"Insertar una celda despues","deleteCell":"Borrar celdas","merge":"Unir celdas","mergeRight":"Unir a la derecha","mergeDown":"Unir abajo","splitHorizontal":"Dividir celda horizontalmente","splitVertical":"Dividir celda verticalmente","title":"Propiedades de la celda","cellType":"Tipo de celda","rowSpan":"Extensión de las filas","colSpan":"Extensión de las columnas","wordWrap":"Ajuste de línea","hAlign":"Alineación horizontal","vAlign":"Alineación vertical","alignBaseline":"Base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Si","no":"No","invalidWidth":"El ancho de la celda debe ser un número entero.","invalidHeight":"El alto de la celda debe ser un número entero.","invalidRowSpan":"El intervalo de filas debe ser un número entero.","invalidColSpan":"El intervalo de columnas debe ser un número entero.","chooseColor":"Escoger"},"cellPad":"relleno de celda","cellSpace":"Espacio de celda","column":{"menu":"Columna","insertBefore":"Insertar columna antes","insertAfter":"Insertar columna después","deleteColumn":"Borrar columnas"},"columns":"Columnas","deleteTable":"Borrar tabla","headers":"Encabezados","headersBoth":"Ambos","headersColumn":"Primera columna","headersNone":"Ninguna","headersRow":"Primera fila","invalidBorder":"El tamaño del borde debe ser un número entero.","invalidCellPadding":"El relleno de la celda debe ser un número positivo.","invalidCellSpacing":"El espacio de la celda debe ser un número positivo.","invalidCols":"El número de columnas debe ser un número mayo que 0.","invalidHeight":"La altura de la tabla debe ser un número.","invalidRows":"El número de filas debe ser mayor a 0.","invalidWidth":"El ancho de la tabla debe ser un número.","menu":"Propiedades de la tabla","row":{"menu":"Fila","insertBefore":"Inserta una fila antes","insertAfter":"Inserta una fila después","deleteRow":"Borrar filas"},"rows":"Filas","summary":"Resumen","title":"Propiedades de la tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"Unidad de ancho"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatos","panelTitle1":"Estilos de bloques","panelTitle2":"Estilos de líneas","panelTitle3":"Estilo de objetos"},"specialchar":{"options":"Opciones de carácteres especiales","title":"Seleccione un carácter especial","toolbar":"Inserta un carácter especial"},"sourcearea":{"toolbar":"Fuente"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remover formato"},"pastetext":{"button":"Pegar como texto plano","pasteNotification":"Su navegador no permite esta forma de pegar texto plano. Presiona %1 para pegar."},"pastefromword":{"confirmCleanup":"El texto que desea pegar parece estar copiado de Word. ¿Quieres limpiarlo antes de pegarlo?","error":"No fue posible limpiar los datos pegados debido a un error interno","title":"Pegar desde word","toolbar":"Pegar desde word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar un párrafo aquí"},"list":{"bulletedlist":"Insertar/Remover Lista con viñetas","numberedlist":"Insertar/Remover Lista numerada"},"link":{"acccessKey":"Llave de acceso","advanced":"Avanzada","advisoryContentType":"Tipo de contenido consultivo","advisoryTitle":"Título asesor","anchor":{"toolbar":"Ancla","menu":"Editar ancla","title":"Propiedades del ancla","name":"Nombre del ancla","errorName":"Escriba el nombre del ancla","remove":"Remover ancla"},"anchorId":"Por Id del elemento","anchorName":"Por nombre del ancla","charset":"Recurso relacionado Charset","cssClasses":"Clases de estilo de hoja","download":"Forzar la descarga","displayText":"Mostrar texto","emailAddress":"Dirección de correo electrónico","emailBody":"Cuerpo del mensaje","emailSubject":"Asunto del mensaje","id":"Id","info":"Información del enlace","langCode":"Código del idioma","langDir":"Dirección del idioma","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","menu":"Editar enlace","name":"Nombre","noAnchors":"(No hay anclas disponibles en el documento)","noEmail":"Escriba la dirección de correo electrónico","noUrl":"Escriba la URL del enlace","other":"<other>","popupDependent":"Dependiente (Netscape)","popupFeatures":"Ventana emergente","popupFullScreen":"Pantalla completa (IE)","popupLeft":"Posición Izquierda","popupLocationBar":"Ubicación de la barra","popupMenuBar":"Barra de menú","popupResizable":"Redimensionable","popupScrollBars":"Barras de desplazamiento","popupStatusBar":"Barra de estado","popupToolbar":"Barra de herramienta","popupTop":"Posición superior","rel":"Relación","selectAnchor":"Selecciona un ancla","styles":"Estilo","tabIndex":"Indice de tabulación","target":"Objetivo","targetFrame":"<frame>","targetFrameName":"Nombre del marco de destino","targetPopup":"<popup window>","targetPopupName":"Nombre de ventana emergente","title":"Enlace","toAnchor":"Enlace al ancla en el texto","toEmail":"Correo electrónico","toUrl":"URL","toolbar":"Enlace","type":"Tipo de enlace","unlink":"Desconectar","upload":"Subir"},"indent":{"indent":"Incrementar sangría","outdent":"Decrementar sangría"},"image":{"alt":"Texto alternativo","border":"Borde","btnUpload":"Enviar al servidor","button2Img":"¿Desea transformar el botón de imagen seleccionado en una imagen simple?","hSpace":"Espacio horizontal","img2Button":"¿Desea transformar la imagen seleccionada en un botón de imagen?","infoTab":"Información de imagen","linkTab":"Enlace","lockRatio":"Bloquear aspecto","menu":"Propiedades de la imagen","resetSize":"Reiniciar tamaño","title":"Propiedades de la imagen","titleButton":"Propiedades del botón de imagen","upload":"Cargar","urlMissing":"Falta la URL de origen de la imagen.","vSpace":"Espacio vertical","validateBorder":"El borde debe ser un número entero.","validateHSpace":"El espacio horizontal debe ser un número entero.","validateVSpace":"El espacio vertical debe ser un número entero."},"horizontalrule":{"toolbar":"Insertar una línea horizontal"},"format":{"label":"Formato","panelTitle":"Formato de párrafo","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formateado"},"fakeobjects":{"anchor":"Ancla","flash":"Animación flash","hiddenfield":"Campo oculto","iframe":"IFrame","unknown":"Objeto desconocido"},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de copiado. Por favor, utilice el teclado para (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de corte. Por favor, utilice el teclado para (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Tu navegador no permite pegar de esta manera. Presiona %1 para pegar."},"button":{"selectedLabel":"%1 (Seleccionado)"},"blockquote":{"toolbar":"Entrecomillado"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"subíndice","superscript":"Sobrescrito","underline":"Subrayada"},"about":{"copy":"Derechos reservados © $1. Todos los derechos reservados","dlgTitle":"Acerca de CKEditor","help":"Revisa $1 para ayuda.","moreInfo":"Para información sobre la licencia por favor visita nuestro sitio web:","title":"Acerca de CKEditor","userGuide":"Guía de Usuario CKEditor"},"editor":"Editor de texto enriquecido","editorPanel":"Panel del editor de texto","common":{"editorHelp":"Presiona ALT + 0 para ayuda","browseServer":"Examinar servidor","url":"URL","protocol":"Protocolo","upload":"Subir","uploadSubmit":"Enviar al servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de verificación","radio":"Botón de opción","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo oculto","button":"Botón","select":"Campo de selección","imageButton":"Botón de imagen","notSet":"<not set>","id":"Id","name":"Nombre","langDir":"Dirección de idiomas","langDirLtr":"Izquierda a derecha (LTR)","langDirRtl":"Derecha a izquierda (RTL)","langCode":"Código de lenguaje","longDescr":"URL descripción larga","cssClass":"Clases de hoja de estilo","advisoryTitle":"Título del anuncio","cssStyle":"Estilo","ok":"OK","cancel":"Cancelar","close":"Cerrar","preview":"Vista previa","resize":"Redimensionar","generalTab":"General","advancedTab":"Avanzada","validateNumberFailed":"Este valor no es un número.","confirmNewPage":"Se perderán todos los cambios no guardados en este contenido. ¿Seguro que quieres cargar nueva página?","confirmCancel":"Ha cambiado algunas opciones. ¿Está seguro de que desea cerrar la ventana de diálogo?","options":"Opciones","target":"Objetivo","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana superior (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana principal (_parent)","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","styles":"Estilo","cssClasses":"Clases de hojas de estilo","width":"Ancho","height":"Alto","align":"Alineación","alignLeft":"Izquierda","alignRight":"Derecha","alignCenter":"Centrado","alignJustify":"Justificado","alignTop":"Arriba","alignMiddle":"En medio","alignBottom":"Abajo","alignNone":"Ninguno","invalidValue":"Valor inválido","invalidHeight":"La altura debe ser un número.","invalidWidth":"La anchura debe ser un número.","invalidCssLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medición HTML válida (px or %).","invalidInlineStyle":"El valor especificado para el estilo en línea debe constar de una o más tuplas con el formato de \"nombre: valor\", separados por punto y coma","cssLengthTooltip":"Introduzca un número para un valor en píxeles o un número con una unidad CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Intro","16":"Shift","17":"Ctrl","18":"Alt","32":"Espacio","35":"Fin","36":"Inicio","46":"Borrar","224":"Comando"},"keyboardShortcut":"Atajo de teclado"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/es.js b/vendor/unisharp/laravel-ckeditor/lang/es.js deleted file mode 100644 index 5512e286e..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['es']={"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Todo","btnReplace":"Reemplazar","btnReplaceAll":"Reemplazar Todo","btnUndo":"Deshacer","changeTo":"Cambiar a","errorLoading":"Error cargando la aplicación del servidor: %s.","ieSpellDownload":"Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?","manyChanges":"Control finalizado: se ha cambiado %1 palabras","noChanges":"Control finalizado: no se ha cambiado ninguna palabra","noMispell":"Control finalizado: no se encontraron errores","noSuggestions":"- No hay sugerencias -","notAvailable":"Lo sentimos pero el servicio no está disponible.","notInDic":"No se encuentra en el Diccionario","oneChange":"Control finalizado: se ha cambiado una palabra","progress":"Control de Ortografía en progreso...","title":"Comprobar ortografía","toolbar":"Ortografía"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Contraer barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/Deshacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Barras de herramientas del editor"},"table":{"border":"Tamaño de Borde","caption":"Título","cell":{"menu":"Celda","insertBefore":"Insertar celda a la izquierda","insertAfter":"Insertar celda a la derecha","deleteCell":"Eliminar Celdas","merge":"Combinar Celdas","mergeRight":"Combinar a la derecha","mergeDown":"Combinar hacia abajo","splitHorizontal":"Dividir la celda horizontalmente","splitVertical":"Dividir la celda verticalmente","title":"Propiedades de celda","cellType":"Tipo de Celda","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Ajustar al contenido","hAlign":"Alineación Horizontal","vAlign":"Alineación Vertical","alignBaseline":"Linea de base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Sí","no":"No","invalidWidth":"La anchura de celda debe ser un número.","invalidHeight":"La altura de celda debe ser un número.","invalidRowSpan":"La expansión de filas debe ser un número entero.","invalidColSpan":"La expansión de columnas debe ser un número entero.","chooseColor":"Elegir"},"cellPad":"Esp. interior","cellSpace":"Esp. e/celdas","column":{"menu":"Columna","insertBefore":"Insertar columna a la izquierda","insertAfter":"Insertar columna a la derecha","deleteColumn":"Eliminar Columnas"},"columns":"Columnas","deleteTable":"Eliminar Tabla","headers":"Encabezados","headersBoth":"Ambas","headersColumn":"Primera columna","headersNone":"Ninguno","headersRow":"Primera fila","invalidBorder":"El tamaño del borde debe ser un número.","invalidCellPadding":"El espaciado interior debe ser un número.","invalidCellSpacing":"El espaciado entre celdas debe ser un número.","invalidCols":"El número de columnas debe ser un número mayor que 0.","invalidHeight":"La altura de tabla debe ser un número.","invalidRows":"El número de filas debe ser un número mayor que 0.","invalidWidth":"La anchura de tabla debe ser un número.","menu":"Propiedades de Tabla","row":{"menu":"Fila","insertBefore":"Insertar fila en la parte superior","insertAfter":"Insertar fila en la parte inferior","deleteRow":"Eliminar Filas"},"rows":"Filas","summary":"Síntesis","title":"Propiedades de Tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"unidad de la anchura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos para formatear","panelTitle1":"Estilos de párrafo","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opciones de caracteres especiales","title":"Seleccione un caracter especial","toolbar":"Insertar Caracter Especial"},"sourcearea":{"toolbar":"Fuente HTML"},"scayt":{"btn_about":"Acerca de Corrector","btn_dictionaries":"Diccionarios","btn_disable":"Desactivar Corrector","btn_enable":"Activar Corrector","btn_langs":"Idiomas","btn_options":"Opciones","text_title":"Comprobar Ortografía Mientras Escribe"},"removeformat":{"toolbar":"Eliminar Formato"},"pastetext":{"button":"Pegar como Texto Plano","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?","error":"No ha sido posible limpiar los datos debido a un error interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar párrafo aquí"},"list":{"bulletedlist":"Viñetas","numberedlist":"Numeración"},"link":{"acccessKey":"Tecla de Acceso","advanced":"Avanzado","advisoryContentType":"Tipo de Contenido","advisoryTitle":"Título","anchor":{"toolbar":"Referencia","menu":"Propiedades de Referencia","title":"Propiedades de Referencia","name":"Nombre de la Referencia","errorName":"Por favor, complete el nombre de la Referencia","remove":"Quitar Referencia"},"anchorId":"Por ID de elemento","anchorName":"Por Nombre de Referencia","charset":"Fuente de caracteres vinculado","cssClasses":"Clases de hojas de estilo","download":"Force Download","displayText":"Display Text","emailAddress":"Dirección de E-Mail","emailBody":"Cuerpo del Mensaje","emailSubject":"Título del Mensaje","id":"Id","info":"Información de Vínculo","langCode":"Código idioma","langDir":"Orientación","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","menu":"Editar Vínculo","name":"Nombre","noAnchors":"(No hay referencias disponibles en el documento)","noEmail":"Por favor escriba la dirección de e-mail","noUrl":"Por favor escriba el vínculo URL","other":"<otro>","popupDependent":"Dependiente (Netscape)","popupFeatures":"Características de Ventana Emergente","popupFullScreen":"Pantalla Completa (IE)","popupLeft":"Posición Izquierda","popupLocationBar":"Barra de ubicación","popupMenuBar":"Barra de Menú","popupResizable":"Redimensionable","popupScrollBars":"Barras de desplazamiento","popupStatusBar":"Barra de Estado","popupToolbar":"Barra de Herramientas","popupTop":"Posición Derecha","rel":"Relación","selectAnchor":"Seleccionar una referencia","styles":"Estilo","tabIndex":"Indice de tabulación","target":"Destino","targetFrame":"<marco>","targetFrameName":"Nombre del Marco Destino","targetPopup":"<ventana emergente>","targetPopupName":"Nombre de Ventana Emergente","title":"Vínculo","toAnchor":"Referencia en esta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Insertar/Editar Vínculo","type":"Tipo de vínculo","unlink":"Eliminar Vínculo","upload":"Cargar"},"indent":{"indent":"Aumentar Sangría","outdent":"Disminuir Sangría"},"image":{"alt":"Texto Alternativo","border":"Borde","btnUpload":"Enviar al Servidor","button2Img":"¿Desea convertir el botón de imagen en una simple imagen?","hSpace":"Esp.Horiz","img2Button":"¿Desea convertir la imagen en un botón de imagen?","infoTab":"Información de Imagen","linkTab":"Vínculo","lockRatio":"Proporcional","menu":"Propiedades de Imagen","resetSize":"Tamaño Original","title":"Propiedades de Imagen","titleButton":"Propiedades de Botón de Imagen","upload":"Cargar","urlMissing":"Debe indicar la URL de la imagen.","vSpace":"Esp.Vert","validateBorder":"El borde debe ser un número.","validateHSpace":"El espaciado horizontal debe ser un número.","validateVSpace":"El espaciado vertical debe ser un número."},"horizontalrule":{"toolbar":"Insertar Línea Horizontal"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Con formato"},"fakeobjects":{"anchor":"Ancla","flash":"Animación flash","hiddenfield":"Campo oculto","iframe":"IFrame","unknown":"Objeto desconocido"},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Seleccionado)"},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subrayado"},"about":{"copy":"Copyright © $1. Todos los derechos reservados.","dlgTitle":"Acerca de CKEditor","help":"Lea la $1 para resolver sus dudas.","moreInfo":"Para información de licencia, por favor visite nuestro sitio web:","title":"Acerca de CKEditor","userGuide":"Guía de usuario de CKEditor"},"editor":"Editor de texto enriquecido","editorPanel":"Panel del Editor de Texto Enriquecido","common":{"editorHelp":"Pulse ALT 0 para ayuda","browseServer":"Ver Servidor","url":"URL","protocol":"Protocolo","upload":"Cargar","uploadSubmit":"Enviar al Servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de Verificación","radio":"Botones de Radio","textField":"Campo de Texto","textarea":"Area de Texto","hiddenField":"Campo Oculto","button":"Botón","select":"Campo de Selección","imageButton":"Botón Imagen","notSet":"<No definido>","id":"Id","name":"Nombre","langDir":"Orientación","langDirLtr":"Izquierda a Derecha (LTR)","langDirRtl":"Derecha a Izquierda (RTL)","langCode":"Cód. de idioma","longDescr":"Descripción larga URL","cssClass":"Clases de hojas de estilo","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Cerrar","preview":"Previsualización","resize":"Arrastre para redimensionar","generalTab":"General","advancedTab":"Avanzado","validateNumberFailed":"El valor no es un número.","confirmNewPage":"Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?","confirmCancel":"Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?","options":"Opciones","target":"Destino","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana principal (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana padre (_parent)","langDirLTR":"Izquierda a derecha (LTR)","langDirRTL":"Derecha a izquierda (RTL)","styles":"Estilos","cssClasses":"Clase de la hoja de estilos","width":"Anchura","height":"Altura","align":"Alineación","alignLeft":"Izquierda","alignRight":"Derecha","alignCenter":"Centrado","alignJustify":"Justificado","alignTop":"Tope","alignMiddle":"Centro","alignBottom":"Pie","alignNone":"Ninguno","invalidValue":"Valor no válido","invalidHeight":"Altura debe ser un número.","invalidWidth":"Anchura debe ser un número.","invalidCssLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).","invalidInlineStyle":"El valor especificado para el estilo debe consistir en uno o más pares con el formato \"nombre: valor\", separados por punto y coma.","cssLengthTooltip":"Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Ingresar","16":"Mayús.","17":"Ctrl","18":"Alt","32":"Space","35":"Fin","36":"Inicio","46":"Suprimir","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/et.js b/vendor/unisharp/laravel-ckeditor/lang/et.js deleted file mode 100644 index 0103abb43..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['et']={"wsc":{"btnIgnore":"Ignoreeri","btnIgnoreAll":"Ignoreeri kõiki","btnReplace":"Asenda","btnReplaceAll":"Asenda kõik","btnUndo":"Võta tagasi","changeTo":"Muuda","errorLoading":"Viga rakenduse teenushosti laadimisel: %s.","ieSpellDownload":"Õigekirja kontrollija ei ole paigaldatud. Soovid sa selle alla laadida?","manyChanges":"Õigekirja kontroll sooritatud: %1 sõna muudetud","noChanges":"Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud","noMispell":"Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud","noSuggestions":"- Soovitused puuduvad -","notAvailable":"Kahjuks ei ole teenus praegu saadaval.","notInDic":"Puudub sõnastikust","oneChange":"Õigekirja kontroll sooritatud: üks sõna muudeti","progress":"Toimub õigekirja kontroll...","title":"Õigekirjakontroll","toolbar":"Õigekirjakontroll"},"undo":{"redo":"Toimingu kordamine","undo":"Tagasivõtmine"},"toolbar":{"toolbarCollapse":"Tööriistariba peitmine","toolbarExpand":"Tööriistariba näitamine","toolbarGroups":{"document":"Dokument","clipboard":"Lõikelaud/tagasivõtmine","editing":"Muutmine","forms":"Vormid","basicstyles":"Põhistiilid","paragraph":"Lõik","links":"Lingid","insert":"Sisesta","styles":"Stiilid","colors":"Värvid","tools":"Tööriistad"},"toolbars":"Redaktori tööriistaribad"},"table":{"border":"Joone suurus","caption":"Tabeli tiitel","cell":{"menu":"Lahter","insertBefore":"Sisesta lahter enne","insertAfter":"Sisesta lahter peale","deleteCell":"Eemalda lahtrid","merge":"Ühenda lahtrid","mergeRight":"Ühenda paremale","mergeDown":"Ühenda alla","splitHorizontal":"Poolita lahter horisontaalselt","splitVertical":"Poolita lahter vertikaalselt","title":"Lahtri omadused","cellType":"Lahtri liik","rowSpan":"Ridade vahe","colSpan":"Tulpade vahe","wordWrap":"Sõnade murdmine","hAlign":"Horisontaalne joondus","vAlign":"Vertikaalne joondus","alignBaseline":"Baasjoon","bgColor":"Tausta värv","borderColor":"Äärise värv","data":"Andmed","header":"Päis","yes":"Jah","no":"Ei","invalidWidth":"Lahtri laius peab olema number.","invalidHeight":"Lahtri kõrgus peab olema number.","invalidRowSpan":"Ridade vahe peab olema täisarv.","invalidColSpan":"Tulpade vahe peab olema täisarv.","chooseColor":"Vali"},"cellPad":"Lahtri täidis","cellSpace":"Lahtri vahe","column":{"menu":"Veerg","insertBefore":"Sisesta veerg enne","insertAfter":"Sisesta veerg peale","deleteColumn":"Eemalda veerud"},"columns":"Veerud","deleteTable":"Kustuta tabel","headers":"Päised","headersBoth":"Mõlemad","headersColumn":"Esimene tulp","headersNone":"Puudub","headersRow":"Esimene rida","invalidBorder":"Äärise suurus peab olema number.","invalidCellPadding":"Lahtrite polsterdus (padding) peab olema positiivne arv.","invalidCellSpacing":"Lahtrite vahe peab olema positiivne arv.","invalidCols":"Tulpade arv peab olema nullist suurem.","invalidHeight":"Tabeli kõrgus peab olema number.","invalidRows":"Ridade arv peab olema nullist suurem.","invalidWidth":"Tabeli laius peab olema number.","menu":"Tabeli omadused","row":{"menu":"Rida","insertBefore":"Sisesta rida enne","insertAfter":"Sisesta rida peale","deleteRow":"Eemalda read"},"rows":"Read","summary":"Kokkuvõte","title":"Tabeli omadused","toolbar":"Tabel","widthPc":"protsenti","widthPx":"pikslit","widthUnit":"laiuse ühik"},"stylescombo":{"label":"Stiil","panelTitle":"Vormindusstiilid","panelTitle1":"Blokkstiilid","panelTitle2":"Reasisesed stiilid","panelTitle3":"Objektistiilid"},"specialchar":{"options":"Erimärkide valikud","title":"Erimärgi valimine","toolbar":"Erimärgi sisestamine"},"sourcearea":{"toolbar":"Lähtekood"},"scayt":{"btn_about":"SCAYT-ist lähemalt","btn_dictionaries":"Sõnaraamatud","btn_disable":"SCAYT keelatud","btn_enable":"SCAYT lubatud","btn_langs":"Keeled","btn_options":"Valikud","text_title":"Õigekirjakontroll kirjutamise ajal"},"removeformat":{"toolbar":"Vormingu eemaldamine"},"pastetext":{"button":"Asetamine tavalise tekstina","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?","error":"Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik","title":"Asetamine Wordist","toolbar":"Asetamine Wordist"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimeerimine","minimize":"Minimeerimine"},"magicline":{"title":"Sisesta siia lõigu tekst"},"list":{"bulletedlist":"Punktloend","numberedlist":"Numberloend"},"link":{"acccessKey":"Juurdepääsu võti","advanced":"Täpsemalt","advisoryContentType":"Juhendava sisu tüüp","advisoryTitle":"Juhendav tiitel","anchor":{"toolbar":"Ankru sisestamine/muutmine","menu":"Ankru omadused","title":"Ankru omadused","name":"Ankru nimi","errorName":"Palun sisesta ankru nimi","remove":"Eemalda ankur"},"anchorId":"Elemendi id järgi","anchorName":"Ankru nime järgi","charset":"Lingitud ressursi märgistik","cssClasses":"Stiilistiku klassid","download":"Force Download","displayText":"Display Text","emailAddress":"E-posti aadress","emailBody":"Sõnumi tekst","emailSubject":"Sõnumi teema","id":"ID","info":"Lingi info","langCode":"Keele suund","langDir":"Keele suund","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","menu":"Muuda linki","name":"Nimi","noAnchors":"(Selles dokumendis pole ankruid)","noEmail":"Palun kirjuta e-posti aadress","noUrl":"Palun kirjuta lingi URL","other":"<muu>","popupDependent":"Sõltuv (Netscape)","popupFeatures":"Hüpikakna omadused","popupFullScreen":"Täisekraan (IE)","popupLeft":"Vasak asukoht","popupLocationBar":"Aadressiriba","popupMenuBar":"Menüüriba","popupResizable":"Suurust saab muuta","popupScrollBars":"Kerimisribad","popupStatusBar":"Olekuriba","popupToolbar":"Tööriistariba","popupTop":"Ülemine asukoht","rel":"Suhe","selectAnchor":"Vali ankur","styles":"Laad","tabIndex":"Tab indeks","target":"Sihtkoht","targetFrame":"<raam>","targetFrameName":"Sihtmärk raami nimi","targetPopup":"<hüpikaken>","targetPopupName":"Hüpikakna nimi","title":"Link","toAnchor":"Ankur sellel lehel","toEmail":"E-post","toUrl":"URL","toolbar":"Lingi lisamine/muutmine","type":"Lingi liik","unlink":"Lingi eemaldamine","upload":"Lae üles"},"indent":{"indent":"Taande suurendamine","outdent":"Taande vähendamine"},"image":{"alt":"Alternatiivne tekst","border":"Joon","btnUpload":"Saada serverisse","button2Img":"Kas tahad teisendada valitud pildiga nupu tavaliseks pildiks?","hSpace":"H. vaheruum","img2Button":"Kas tahad teisendada valitud tavalise pildi pildiga nupuks?","infoTab":"Pildi info","linkTab":"Link","lockRatio":"Lukusta kuvasuhe","menu":"Pildi omadused","resetSize":"Lähtesta suurus","title":"Pildi omadused","titleButton":"Piltnupu omadused","upload":"Lae üles","urlMissing":"Pildi lähte-URL on puudu.","vSpace":"V. vaheruum","validateBorder":"Äärise laius peab olema täisarv.","validateHSpace":"Horisontaalne vaheruum peab olema täisarv.","validateVSpace":"Vertikaalne vaheruum peab olema täisarv."},"horizontalrule":{"toolbar":"Horisontaaljoone sisestamine"},"format":{"label":"Vorming","panelTitle":"Vorming","tag_address":"Aadress","tag_div":"Tavaline (DIV)","tag_h1":"Pealkiri 1","tag_h2":"Pealkiri 2","tag_h3":"Pealkiri 3","tag_h4":"Pealkiri 4","tag_h5":"Pealkiri 5","tag_h6":"Pealkiri 6","tag_p":"Tavaline","tag_pre":"Vormindatud"},"fakeobjects":{"anchor":"Ankur","flash":"Flashi animatsioon","hiddenfield":"Varjatud väli","iframe":"IFrame","unknown":"Tundmatu objekt"},"elementspath":{"eleLabel":"Elementide asukoht","eleTitle":"%1 element"},"contextmenu":{"options":"Kontekstimenüü valikud"},"clipboard":{"copy":"Kopeeri","copyError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).","cut":"Lõika","cutError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).","paste":"Aseta","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Blokktsitaat"},"basicstyles":{"bold":"Paks","italic":"Kursiiv","strike":"Läbijoonitud","subscript":"Allindeks","superscript":"Ülaindeks","underline":"Allajoonitud"},"about":{"copy":"Copyright © $1. Kõik õigused kaitstud.","dlgTitle":"CKEditorist","help":"Abi jaoks vaata $1.","moreInfo":"Litsentsi andmed leiab meie veebilehelt:","title":"CKEditorist","userGuide":"CKEditori kasutusjuhendit"},"editor":"Rikkalik tekstiredaktor","editorPanel":"Rikkaliku tekstiredaktori paneel","common":{"editorHelp":"Abi saamiseks vajuta ALT 0","browseServer":"Serveri sirvimine","url":"URL","protocol":"Protokoll","upload":"Laadi üles","uploadSubmit":"Saada serverisse","image":"Pilt","flash":"Flash","form":"Vorm","checkbox":"Märkeruut","radio":"Raadionupp","textField":"Tekstilahter","textarea":"Tekstiala","hiddenField":"Varjatud lahter","button":"Nupp","select":"Valiklahter","imageButton":"Piltnupp","notSet":"<määramata>","id":"ID","name":"Nimi","langDir":"Keele suund","langDirLtr":"Vasakult paremale (LTR)","langDirRtl":"Paremalt vasakule (RTL)","langCode":"Keele kood","longDescr":"Pikk kirjeldus URL","cssClass":"Stiilistiku klassid","advisoryTitle":"Soovituslik pealkiri","cssStyle":"Laad","ok":"Olgu","cancel":"Loobu","close":"Sulge","preview":"Eelvaade","resize":"Suuruse muutmiseks lohista","generalTab":"Üldine","advancedTab":"Täpsemalt","validateNumberFailed":"See väärtus pole number.","confirmNewPage":"Kõik salvestamata muudatused lähevad kaotsi. Kas oled kindel, et tahad laadida uue lehe?","confirmCancel":"Mõned valikud on muudetud. Kas oled kindel, et tahad dialoogi sulgeda?","options":"Valikud","target":"Sihtkoht","targetNew":"Uus aken (_blank)","targetTop":"Kõige ülemine aken (_top)","targetSelf":"Sama aken (_self)","targetParent":"Vanemaken (_parent)","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","styles":"Stiili","cssClasses":"Stiililehe klassid","width":"Laius","height":"Kõrgus","align":"Joondus","alignLeft":"Vasak","alignRight":"Paremale","alignCenter":"Kesk","alignJustify":"Rööpjoondus","alignTop":"Üles","alignMiddle":"Keskele","alignBottom":"Alla","alignNone":"None","invalidValue":"Vigane väärtus.","invalidHeight":"Kõrgus peab olema number.","invalidWidth":"Laius peab olema number.","invalidCssLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.","invalidHtmlLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv HTML ühikuga (px või %) või ilma.","invalidInlineStyle":"Reasisese stiili määrangud peavad koosnema paarisväärtustest (tuples), mis on semikoolonitega eraldatult järgnevas vormingus: \"nimi : väärtus\".","cssLengthTooltip":"Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).","unavailable":"%1<span class=\"cke_accessibility\">, pole saadaval</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/eu.js b/vendor/unisharp/laravel-ckeditor/lang/eu.js deleted file mode 100644 index ca3659b1f..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['eu']={"wsc":{"btnIgnore":"Ezikusi","btnIgnoreAll":"Denak Ezikusi","btnReplace":"Ordezkatu","btnReplaceAll":"Denak Ordezkatu","btnUndo":"Desegin","changeTo":"Honekin ordezkatu","errorLoading":"Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.","ieSpellDownload":"Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?","manyChanges":"Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira","noChanges":"Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu","noMispell":"Zuzenketa ortografikoa bukatuta: Akatsik ez","noSuggestions":"- Iradokizunik ez -","notAvailable":"Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.","notInDic":"Ez dago hiztegian","oneChange":"Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da","progress":"Zuzenketa ortografikoa martxan...","title":"Ortografia zuzenketa","toolbar":"Ortografia"},"undo":{"redo":"Berregin","undo":"Desegin"},"toolbar":{"toolbarCollapse":"Tolestu tresna-barra","toolbarExpand":"Zabaldu tresna-barra","toolbarGroups":{"document":"Dokumentua","clipboard":"Arbela/Desegin","editing":"Editatu","forms":"Formularioak","basicstyles":"Oinarrizko estiloak","paragraph":"Paragrafoa","links":"Estekak","insert":"Txertatu","styles":"Estiloak","colors":"Koloreak","tools":"Tresnak"},"toolbars":"Editorearen tresna-barrak"},"table":{"border":"Ertzaren zabalera","caption":"Epigrafea","cell":{"menu":"Gelaxka","insertBefore":"Txertatu gelaxka aurretik","insertAfter":"Txertatu gelaxka ondoren","deleteCell":"Ezabatu gelaxkak","merge":"Batu gelaxkak","mergeRight":"Batu eskuinetara","mergeDown":"Batu behera","splitHorizontal":"Banatu gelaxka horizontalki","splitVertical":"Banatu gelaxka bertikalki","title":"Gelaxkaren propietateak","cellType":"Gelaxka-mota","rowSpan":"Errenkaden hedadura","colSpan":"Zutabeen hedadura","wordWrap":"Itzulbira","hAlign":"Lerrokatze horizontala","vAlign":"Lerrokatze bertikala","alignBaseline":"Oinarri-lerroan","bgColor":"Atzeko planoaren kolorea","borderColor":"Ertzaren kolorea","data":"Data","header":"Goiburua","yes":"Bai","no":"Ez","invalidWidth":"Gelaxkaren zabalera zenbaki bat izan behar da.","invalidHeight":"Gelaxkaren altuera zenbaki bat izan behar da.","invalidRowSpan":"Errenkaden hedadura zenbaki osoa izan behar da.","invalidColSpan":"Zutabeen hedadura zenbaki osoa izan behar da.","chooseColor":"Aukeratu"},"cellPad":"Gelaxken betegarria","cellSpace":"Gelaxka arteko tartea","column":{"menu":"Zutabea","insertBefore":"Txertatu zutabea aurretik","insertAfter":"Txertatu zutabea ondoren","deleteColumn":"Ezabatu zutabeak"},"columns":"Zutabeak","deleteTable":"Ezabatu taula","headers":"Goiburuak","headersBoth":"Biak","headersColumn":"Lehen zutabea","headersNone":"Bat ere ez","headersRow":"Lehen errenkada","invalidBorder":"Ertzaren tamaina zenbaki bat izan behar da.","invalidCellPadding":"Gelaxken betegarria zenbaki bat izan behar da.","invalidCellSpacing":"Gelaxka arteko tartea zenbaki bat izan behar da.","invalidCols":"Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidHeight":"Taularen altuera zenbaki bat izan behar da.","invalidRows":"Errenkada kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidWidth":"Taularen zabalera zenbaki bat izan behar da.","menu":"Taularen propietateak","row":{"menu":"Errenkada","insertBefore":"Txertatu errenkada aurretik","insertAfter":"Txertatu errenkada ondoren","deleteRow":"Ezabatu errenkadak"},"rows":"Errenkadak","summary":"Laburpena","title":"Taularen propietateak","toolbar":"Taula","widthPc":"ehuneko","widthPx":"pixel","widthUnit":"zabalera unitatea"},"stylescombo":{"label":"Estiloak","panelTitle":"Formatu estiloak","panelTitle1":"Bloke estiloak","panelTitle2":"Lineako estiloak","panelTitle3":"Objektu estiloak"},"specialchar":{"options":"Karaktere berezien aukerak","title":"Hautatu karaktere berezia","toolbar":"Txertatu karaktere berezia"},"sourcearea":{"toolbar":"Iturburua"},"scayt":{"btn_about":"SCAYTi buruz","btn_dictionaries":"Hiztegiak","btn_disable":"Desgaitu SCAYT","btn_enable":"Gaitu SCAYT","btn_langs":"Hizkuntzak","btn_options":"Aukerak","text_title":"Ortografia Zuzenketa Idatzi Ahala (SCAYT)"},"removeformat":{"toolbar":"Kendu formatua"},"pastetext":{"button":"Itsatsi testu arrunta bezala","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Itsatsi nahi duzun testua Word-etik kopiatua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?","error":"Barne-errore bat dela eta ezin izan da itsatsitako testua garbitu","title":"Itsatsi Word-etik","toolbar":"Itsatsi Word-etik"},"notification":{"closed":"Jakinarazpena itxita."},"maximize":{"maximize":"Maximizatu","minimize":"Minimizatu"},"magicline":{"title":"Txertatu paragrafoa hemen"},"list":{"bulletedlist":"Buletdun Zerrenda","numberedlist":"Zenbakidun Zerrenda"},"link":{"acccessKey":"Sarbide-tekla","advanced":"Aurreratua","advisoryContentType":"Aholkatutako eduki-mota","advisoryTitle":"Aholkatutako izenburua","anchor":{"toolbar":"Aingura","menu":"Editatu aingura","title":"Ainguraren propietateak","name":"Ainguraren izena","errorName":"Idatzi ainguraren izena","remove":"Kendu aingura"},"anchorId":"Elementuaren Id-aren arabera","anchorName":"Aingura-izenaren arabera","charset":"Estekatutako baliabide karaktere-jokoa","cssClasses":"Estilo-orriko klaseak","download":"Force Download","displayText":"Bistaratu testua","emailAddress":"E-posta helbidea","emailBody":"Mezuaren gorputza","emailSubject":"Mezuaren gaia","id":"Id","info":"Estekaren informazioa","langCode":"Hizkuntzaren kodea","langDir":"Hizkuntzaren norabidea","langDirLTR":"Ezkerretik eskuinera (LTR)","langDirRTL":"Eskuinetik ezkerrera (RTL)","menu":"Editatu esteka","name":"Izena","noAnchors":"(Ez dago aingurarik erabilgarri dokumentuan)","noEmail":"Mesedez idatzi e-posta helbidea","noUrl":"Mesedez idatzi estekaren URLa","other":"<bestelakoa>","popupDependent":"Menpekoa (Netscape)","popupFeatures":"Laster-leihoaren ezaugarriak","popupFullScreen":"Pantaila osoa (IE)","popupLeft":"Ezkerreko posizioa","popupLocationBar":"Kokaleku-barra","popupMenuBar":"Menu-barra","popupResizable":"Tamaina aldakorra","popupScrollBars":"Korritze-barrak","popupStatusBar":"Egoera-barra","popupToolbar":"Tresna-barra","popupTop":"Goiko posizioa","rel":"Erlazioa","selectAnchor":"Hautatu aingura","styles":"Estiloa","tabIndex":"Tabulazio indizea","target":"Helburua","targetFrame":"<frame>","targetFrameName":"Helburuko markoaren izena","targetPopup":"<laster-leihoa>","targetPopupName":"Laster-leihoaren izena","title":"Esteka","toAnchor":"Estekatu testuko aingurara","toEmail":"E-posta","toUrl":"URLa","toolbar":"Esteka","type":"Esteka-mota","unlink":"Kendu esteka","upload":"Kargatu"},"indent":{"indent":"Handitu koska","outdent":"Txikitu koska"},"image":{"alt":"Ordezko testua","border":"Ertza","btnUpload":"Bidali zerbitzarira","button2Img":"Hautatutako irudi-botoia irudi arrunt bihurtu nahi duzu?","hSpace":"HSpace","img2Button":"Hautatutako irudia irudi-botoi bihurtu nahi duzu?","infoTab":"Irudiaren informazioa","linkTab":"Esteka","lockRatio":"Blokeatu erlazioa","menu":"Irudiaren propietateak","resetSize":"Berrezarri tamaina","title":"Irudiaren propietateak","titleButton":"Irudi-botoiaren propietateak","upload":"Kargatu","urlMissing":"Irudiaren iturburuaren URLa falta da.","vSpace":"VSpace","validateBorder":"Ertza zenbaki oso bat izan behar da.","validateHSpace":"HSpace zenbaki oso bat izan behar da.","validateVSpace":"VSpace zenbaki oso bat izan behar da."},"horizontalrule":{"toolbar":"Txertatu marra horizontala"},"format":{"label":"Formatua","panelTitle":"Paragrafoaren formatua","tag_address":"Helbidea","tag_div":"Normala (DIV)","tag_h1":"Izenburua 1","tag_h2":"Izenburua 2","tag_h3":"Izenburua 3","tag_h4":"Izenburua 4","tag_h5":"Izenburua 5","tag_h6":"Izenburua 6","tag_p":"Normala","tag_pre":"Formatuduna"},"fakeobjects":{"anchor":"Aingura","flash":"Flash animazioa","hiddenfield":"Ezkutuko eremua","iframe":"IFrame-a","unknown":"Objektu ezezaguna"},"elementspath":{"eleLabel":"Elementuen bidea","eleTitle":"%1 elementua"},"contextmenu":{"options":"Testuinguru-menuaren aukerak"},"clipboard":{"copy":"Kopiatu","copyError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).","cut":"Ebaki","cutError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).","paste":"Itsatsi","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (hautatuta)"},"blockquote":{"toolbar":"Aipamen blokea"},"basicstyles":{"bold":"Lodia","italic":"Etzana","strike":"Marratua","subscript":"Azpi-indizea","superscript":"Goi-indizea","underline":"Azpimarratu"},"about":{"copy":"Copyright © $1. Eskubide guztiak erreserbaturik.","dlgTitle":"CKEditor-i buruz","help":"Begiratu $1 laguntzarako.","moreInfo":"Lizentziari buruzko informazioa gure webgunean:","title":"CKEditor-i buruz","userGuide":"CKEditor-en erabiltzaile-gida"},"editor":"Testu aberastuaren editorea","editorPanel":"Testu aberastuaren editorearen panela","common":{"editorHelp":"Sakatu ALT 0 laguntza jasotzeko","browseServer":"Arakatu zerbitzaria","url":"URLa","protocol":"Protokoloa","upload":"Kargatu","uploadSubmit":"Bidali zerbitzarira","image":"Irudia","flash":"Flash","form":"Formularioa","checkbox":"Kontrol-laukia","radio":"Aukera-botoia","textField":"Testu-eremua","textarea":"Testu-area","hiddenField":"Ezkutuko eremua","button":"Botoia","select":"Hautespen-eremua","imageButton":"Irudi-botoia","notSet":"<ezarri gabe>","id":"Id","name":"Izena","langDir":"Hizkuntzaren norabidea","langDirLtr":"Ezkerretik eskuinera (LTR)","langDirRtl":"Eskuinetik ezkerrera (RTL)","langCode":"Hizkuntzaren kodea","longDescr":"URLaren deskribapen luzea","cssClass":"Estilo-orriko klaseak","advisoryTitle":"Aholkatutako izenburua","cssStyle":"Estiloa","ok":"Ados","cancel":"Utzi","close":"Itxi","preview":"Aurrebista","resize":"Aldatu tamainaz","generalTab":"Orokorra","advancedTab":"Aurreratua","validateNumberFailed":"Balio hau ez da zenbaki bat.","confirmNewPage":"Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?","confirmCancel":"Aukera batzuk aldatu dituzu. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?","options":"Aukerak","target":"Helburua","targetNew":"Leiho berria (_blank)","targetTop":"Goieneko leihoan (_top)","targetSelf":"Leiho berean (_self)","targetParent":"Leiho gurasoan (_parent)","langDirLTR":"Ezkerretik eskuinera (LTR)","langDirRTL":"Eskuinetik ezkerrera (RTL)","styles":"Estiloa","cssClasses":"Estilo-orriko klaseak","width":"Zabalera","height":"Altuera","align":"Lerrokatzea","alignLeft":"Ezkerrean","alignRight":"Eskuinean","alignCenter":"Erdian","alignJustify":"Justifikatu","alignTop":"Goian","alignMiddle":"Erdian","alignBottom":"Behean","alignNone":"Bat ere ez","invalidValue":"Balio desegokia.","invalidHeight":"Altuera zenbaki bat izan behar da.","invalidWidth":"Zabalera zenbaki bat izan behar da.","invalidCssLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, CSS neurri unitate batekin edo gabe (px, %, in, cm, mm, em, ex, pt edo pc).","invalidHtmlLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, HTML neurri unitate batekin edo gabe (px edo %).","invalidInlineStyle":"Lineako estiloan zehaztutako balioak \"izen : balio\" formatuko tupla bat edo gehiago izan behar dira, komaz bereiztuak.","cssLengthTooltip":"Sartu zenbaki bat edo zenbaki bat baliozko CSS unitate batekin (px, %, in, cm, mm, em, ex, pt, edo pc).","unavailable":"%1<span class=\"cke_accessibility\">, erabilezina</span>","keyboard":{"8":"Backspace","13":"Sartu","16":"Maius","17":"Ktrl","18":"Alt","32":"Space","35":"Buka","36":"Etxea","46":"Ezabatu","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/fa.js b/vendor/unisharp/laravel-ckeditor/lang/fa.js deleted file mode 100644 index 8f2cef970..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['fa']={"wsc":{"btnIgnore":"چشمپوشی","btnIgnoreAll":"چشمپوشی همه","btnReplace":"جایگزینی","btnReplaceAll":"جایگزینی همه","btnUndo":"واچینش","changeTo":"تغییر به","errorLoading":"خطا در بارگیری برنامه خدمات میزبان: %s.","ieSpellDownload":"بررسی کنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟","manyChanges":"بررسی املا انجام شد. %1 واژه تغییر یافت","noChanges":"بررسی املا انجام شد. هیچ واژهای تغییر نیافت","noMispell":"بررسی املا انجام شد. هیچ غلط املائی یافت نشد","noSuggestions":"- پیشنهادی نیست -","notAvailable":"با عرض پوزش خدمات الان در دسترس نیستند.","notInDic":"در واژه~نامه یافت نشد","oneChange":"بررسی املا انجام شد. یک واژه تغییر یافت","progress":"بررسی املا در حال انجام...","title":"بررسی املا","toolbar":"بررسی املا"},"undo":{"redo":"بازچیدن","undo":"واچیدن"},"toolbar":{"toolbarCollapse":"بستن نوار ابزار","toolbarExpand":"بازکردن نوار ابزار","toolbarGroups":{"document":"سند","clipboard":"حافظه موقت/برگشت","editing":"در حال ویرایش","forms":"فرم​ها","basicstyles":"سبک‌های پایه","paragraph":"بند","links":"پیوندها","insert":"ورود","styles":"سبک‌ها","colors":"رنگ​ها","tools":"ابزارها"},"toolbars":"نوار ابزارهای ویرایش‌گر"},"table":{"border":"اندازهٴ لبه","caption":"عنوان","cell":{"menu":"سلول","insertBefore":"افزودن سلول قبل از","insertAfter":"افزودن سلول بعد از","deleteCell":"حذف سلولها","merge":"ادغام سلولها","mergeRight":"ادغام به راست","mergeDown":"ادغام به پایین","splitHorizontal":"جدا کردن افقی سلول","splitVertical":"جدا کردن عمودی سلول","title":"ویژگیهای سلول","cellType":"نوع سلول","rowSpan":"محدوده ردیفها","colSpan":"محدوده ستونها","wordWrap":"شکستن کلمه","hAlign":"چینش افقی","vAlign":"چینش عمودی","alignBaseline":"خط مبنا","bgColor":"رنگ زمینه","borderColor":"رنگ خطوط","data":"اطلاعات","header":"سرنویس","yes":"بله","no":"خیر","invalidWidth":"عرض سلول باید یک عدد باشد.","invalidHeight":"ارتفاع سلول باید عدد باشد.","invalidRowSpan":"مقدار محدوده ردیفها باید یک عدد باشد.","invalidColSpan":"مقدار محدوده ستونها باید یک عدد باشد.","chooseColor":"انتخاب"},"cellPad":"فاصلهٴ پرشده در سلول","cellSpace":"فاصلهٴ میان سلولها","column":{"menu":"ستون","insertBefore":"افزودن ستون قبل از","insertAfter":"افزودن ستون بعد از","deleteColumn":"حذف ستونها"},"columns":"ستونها","deleteTable":"پاک کردن جدول","headers":"سرنویسها","headersBoth":"هردو","headersColumn":"اولین ستون","headersNone":"هیچ","headersRow":"اولین ردیف","invalidBorder":"مقدار اندازه خطوط باید یک عدد باشد.","invalidCellPadding":"بالشتک سلول باید یک عدد باشد.","invalidCellSpacing":"مقدار فاصلهگذاری سلول باید یک عدد باشد.","invalidCols":"تعداد ستونها باید یک عدد بزرگتر از 0 باشد.","invalidHeight":"مقدار ارتفاع جدول باید یک عدد باشد.","invalidRows":"تعداد ردیفها باید یک عدد بزرگتر از 0 باشد.","invalidWidth":"مقدار پهنای جدول باید یک عدد باشد.","menu":"ویژگیهای جدول","row":{"menu":"سطر","insertBefore":"افزودن سطر قبل از","insertAfter":"افزودن سطر بعد از","deleteRow":"حذف سطرها"},"rows":"سطرها","summary":"خلاصه","title":"ویژگیهای جدول","toolbar":"جدول","widthPc":"درصد","widthPx":"پیکسل","widthUnit":"واحد پهنا"},"stylescombo":{"label":"سبک","panelTitle":"سبکهای قالببندی","panelTitle1":"سبکهای بلوک","panelTitle2":"سبکهای درونخطی","panelTitle3":"سبکهای شیء"},"specialchar":{"options":"گزینه‌های نویسه‌های ویژه","title":"گزینش نویسه‌ی ویژه","toolbar":"گنجاندن نویسه‌ی ویژه"},"sourcearea":{"toolbar":"منبع"},"scayt":{"btn_about":"درباره SCAYT","btn_dictionaries":"دیکشنریها","btn_disable":"غیرفعالسازی SCAYT","btn_enable":"فعالسازی SCAYT","btn_langs":"زبانها","btn_options":"گزینهها","text_title":"بررسی املای تایپ شما"},"removeformat":{"toolbar":"برداشتن فرمت"},"pastetext":{"button":"چسباندن به عنوان متن ساده","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"متنی که میخواهید بچسبانید به نظر میرسد که از Word کپی شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟","error":"به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.","title":"چسباندن از Word","toolbar":"چسباندن از Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"بیشنه کردن","minimize":"کمینه کردن"},"magicline":{"title":"قرار دادن بند در اینجا"},"list":{"bulletedlist":"فهرست نقطه​ای","numberedlist":"فهرست شماره​دار"},"link":{"acccessKey":"کلید دستیابی","advanced":"پیشرفته","advisoryContentType":"نوع محتوای کمکی","advisoryTitle":"عنوان کمکی","anchor":{"toolbar":"گنجاندن/ویرایش لنگر","menu":"ویژگی​های لنگر","title":"ویژگی​های لنگر","name":"نام لنگر","errorName":"لطفا نام لنگر را بنویسید","remove":"حذف لنگر"},"anchorId":"با شناسهٴ المان","anchorName":"با نام لنگر","charset":"نویسه​گان منبع پیوند شده","cssClasses":"کلاس​های شیوه​نامه(Stylesheet)","download":"Force Download","displayText":"Display Text","emailAddress":"نشانی پست الکترونیکی","emailBody":"متن پیام","emailSubject":"موضوع پیام","id":"شناسه","info":"اطلاعات پیوند","langCode":"جهت​نمای زبان","langDir":"جهت​نمای زبان","langDirLTR":"چپ به راست (LTR)","langDirRTL":"راست به چپ (RTL)","menu":"ویرایش پیوند","name":"نام","noAnchors":"(در این سند لنگری دردسترس نیست)","noEmail":"لطفا نشانی پست الکترونیکی را بنویسید","noUrl":"لطفا URL پیوند را بنویسید","other":"<سایر>","popupDependent":"وابسته (Netscape)","popupFeatures":"ویژگی​های پنجرهٴ پاپاپ","popupFullScreen":"تمام صفحه (IE)","popupLeft":"موقعیت چپ","popupLocationBar":"نوار موقعیت","popupMenuBar":"نوار منو","popupResizable":"قابل تغییر اندازه","popupScrollBars":"میله​های پیمایش","popupStatusBar":"نوار وضعیت","popupToolbar":"نوار ابزار","popupTop":"موقعیت بالا","rel":"وابستگی","selectAnchor":"یک لنگر برگزینید","styles":"شیوه (style)","tabIndex":"نمایهٴ دسترسی با برگه","target":"مقصد","targetFrame":"<فریم>","targetFrameName":"نام فریم مقصد","targetPopup":"<پنجرهٴ پاپاپ>","targetPopupName":"نام پنجرهٴ پاپاپ","title":"پیوند","toAnchor":"لنگر در همین صفحه","toEmail":"پست الکترونیکی","toUrl":"URL","toolbar":"گنجاندن/ویرایش پیوند","type":"نوع پیوند","unlink":"برداشتن پیوند","upload":"انتقال به سرور"},"indent":{"indent":"افزایش تورفتگی","outdent":"کاهش تورفتگی"},"image":{"alt":"متن جایگزین","border":"لبه","btnUpload":"به سرور بفرست","button2Img":"آیا مایلید از یک تصویر ساده روی دکمه تصویری انتخاب شده استفاده کنید؟","hSpace":"فاصلهٴ افقی","img2Button":"آیا مایلید از یک دکمه تصویری روی تصویر انتخاب شده استفاده کنید؟","infoTab":"اطلاعات تصویر","linkTab":"پیوند","lockRatio":"قفل کردن نسبت","menu":"ویژگی​های تصویر","resetSize":"بازنشانی اندازه","title":"ویژگی​های تصویر","titleButton":"ویژگی​های دکمهٴ تصویری","upload":"انتقال به سرور","urlMissing":"آدرس URL اصلی تصویر یافت نشد.","vSpace":"فاصلهٴ عمودی","validateBorder":"مقدار خطوط باید یک عدد باشد.","validateHSpace":"مقدار فاصله گذاری افقی باید یک عدد باشد.","validateVSpace":"مقدار فاصله گذاری عمودی باید یک عدد باشد."},"horizontalrule":{"toolbar":"گنجاندن خط افقی"},"format":{"label":"قالب","panelTitle":"قالب بند","tag_address":"نشانی","tag_div":"بند","tag_h1":"سرنویس ۱","tag_h2":"سرنویس ۲","tag_h3":"سرنویس ۳","tag_h4":"سرنویس ۴","tag_h5":"سرنویس ۵","tag_h6":"سرنویس ۶","tag_p":"معمولی","tag_pre":"قالب‌دار"},"fakeobjects":{"anchor":"لنگر","flash":"انیمشن فلش","hiddenfield":"فیلد پنهان","iframe":"IFrame","unknown":"شیء ناشناخته"},"elementspath":{"eleLabel":"مسیر عناصر","eleTitle":"%1 عنصر"},"contextmenu":{"options":"گزینه​های منوی زمینه"},"clipboard":{"copy":"رونوشت","copyError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).","cut":"برش","cutError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).","paste":"چسباندن","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (انتخاب شده)"},"blockquote":{"toolbar":"بلوک نقل قول"},"basicstyles":{"bold":"درشت","italic":"خمیده","strike":"خط‌خورده","subscript":"زیرنویس","superscript":"بالانویس","underline":"زیرخط‌دار"},"about":{"copy":"حق نشر © $1. کلیه حقوق محفوظ است.","dlgTitle":"درباره CKEditor","help":" برای راهنمایی $1 را ملاحظه کنید.","moreInfo":"برای کسب اطلاعات مجوز لطفا به وب سایت ما مراجعه کنید:","title":"درباره CKEditor","userGuide":"راهنمای کاربران CKEditor"},"editor":"ویرایش‌گر متن غنی","editorPanel":"پنل ویرایشگر متن غنی","common":{"editorHelp":"کلید Alt+0 را برای راهنمایی بفشارید","browseServer":"فهرست​نمایی سرور","url":"URL","protocol":"قرارداد","upload":"بالاگذاری","uploadSubmit":"به سرور بفرست","image":"تصویر","flash":"فلش","form":"فرم","checkbox":"چک‌باکس","radio":"دکمه‌ی رادیویی","textField":"فیلد متنی","textarea":"ناحیهٴ متنی","hiddenField":"فیلد پنهان","button":"دکمه","select":"فیلد انتخاب چند گزینه​ای","imageButton":"دکمه‌ی تصویری","notSet":"<تعیین‌نشده>","id":"شناسه","name":"نام","langDir":"جهت زبان","langDirLtr":"چپ به راست","langDirRtl":"راست به چپ","langCode":"کد زبان","longDescr":"URL توصیف طولانی","cssClass":"کلاس​های شیوه​نامه (Stylesheet)","advisoryTitle":"عنوان کمکی","cssStyle":"سبک","ok":"پذیرش","cancel":"انصراف","close":"بستن","preview":"پیش‌نمایش","resize":"تغییر اندازه","generalTab":"عمومی","advancedTab":"پیش‌رفته","validateNumberFailed":"این مقدار یک عدد نیست.","confirmNewPage":"هر تغییر ایجاد شده​ی ذخیره نشده از بین خواهد رفت. آیا اطمینان دارید که قصد بارگیری صفحه جدیدی را دارید؟","confirmCancel":"برخی از گزینه‌ها تغییر کرده‌اند. آیا واقعا قصد بستن این پنجره را دارید؟","options":"گزینه​ها","target":"مقصد","targetNew":"پنجره جدید","targetTop":"بالاترین پنجره","targetSelf":"همان پنجره","targetParent":"پنجره والد","langDirLTR":"چپ به راست","langDirRTL":"راست به چپ","styles":"سبک","cssClasses":"کلاس‌های سبک‌نامه","width":"عرض","height":"طول","align":"چینش","alignLeft":"چپ","alignRight":"راست","alignCenter":"وسط","alignJustify":"بلوک چین","alignTop":"بالا","alignMiddle":"میانه","alignBottom":"پائین","alignNone":"هیچ","invalidValue":"مقدار نامعتبر.","invalidHeight":"ارتفاع باید یک عدد باشد.","invalidWidth":"عرض باید یک عدد باشد.","invalidCssLength":"عدد تعیین شده برای فیلد \"%1\" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"عدد تعیین شده برای فیلد \"%1\" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری HTML معتبر باشد (px or %).","invalidInlineStyle":"عدد تعیین شده برای سبک درون​خطی -Inline Style- باید دارای یک یا چند چندتایی با شکلی شبیه \"name : value\" که باید با یک \";\" از هم جدا شوند.","cssLengthTooltip":"یک عدد برای یک مقدار بر حسب پیکسل و یا یک عدد با یک واحد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">، غیر قابل دسترس</span>","keyboard":{"8":"عقبگرد","13":"ورود","16":"تعویض","17":"کنترل","18":"دگرساز","32":"Space","35":"پایان","36":"خانه","46":"حذف","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/fi.js b/vendor/unisharp/laravel-ckeditor/lang/fi.js deleted file mode 100644 index a0206ec80..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['fi']={"wsc":{"btnIgnore":"Jätä huomioimatta","btnIgnoreAll":"Jätä kaikki huomioimatta","btnReplace":"Korvaa","btnReplaceAll":"Korvaa kaikki","btnUndo":"Kumoa","changeTo":"Vaihda","errorLoading":"Virhe ladattaessa oikolukupalvelua isännältä: %s.","ieSpellDownload":"Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?","manyChanges":"Tarkistus valmis: %1 sanaa muutettiin","noChanges":"Tarkistus valmis: Yhtään sanaa ei muutettu","noMispell":"Tarkistus valmis: Ei virheitä","noSuggestions":"Ei ehdotuksia","notAvailable":"Valitettavasti oikoluku ei ole käytössä tällä hetkellä.","notInDic":"Ei sanakirjassa","oneChange":"Tarkistus valmis: Yksi sana muutettiin","progress":"Tarkistus käynnissä...","title":"Oikoluku","toolbar":"Tarkista oikeinkirjoitus"},"undo":{"redo":"Toista","undo":"Kumoa"},"toolbar":{"toolbarCollapse":"Kutista työkalupalkki","toolbarExpand":"Laajenna työkalupalkki","toolbarGroups":{"document":"Dokumentti","clipboard":"Leikepöytä/Kumoa","editing":"Muokkaus","forms":"Lomakkeet","basicstyles":"Perustyylit","paragraph":"Kappale","links":"Linkit","insert":"Lisää","styles":"Tyylit","colors":"Värit","tools":"Työkalut"},"toolbars":"Editorin työkalupalkit"},"table":{"border":"Rajan paksuus","caption":"Otsikko","cell":{"menu":"Solu","insertBefore":"Lisää solu eteen","insertAfter":"Lisää solu perään","deleteCell":"Poista solut","merge":"Yhdistä solut","mergeRight":"Yhdistä oikealla olevan kanssa","mergeDown":"Yhdistä alla olevan kanssa","splitHorizontal":"Jaa solu vaakasuunnassa","splitVertical":"Jaa solu pystysuunnassa","title":"Solun ominaisuudet","cellType":"Solun tyyppi","rowSpan":"Rivin jatkuvuus","colSpan":"Solun jatkuvuus","wordWrap":"Rivitys","hAlign":"Horisontaali kohdistus","vAlign":"Vertikaali kohdistus","alignBaseline":"Alas (teksti)","bgColor":"Taustan väri","borderColor":"Reunan väri","data":"Data","header":"Ylätunniste","yes":"Kyllä","no":"Ei","invalidWidth":"Solun leveyden täytyy olla numero.","invalidHeight":"Solun korkeuden täytyy olla numero.","invalidRowSpan":"Rivin jatkuvuuden täytyy olla kokonaisluku.","invalidColSpan":"Solun jatkuvuuden täytyy olla kokonaisluku.","chooseColor":"Valitse"},"cellPad":"Solujen sisennys","cellSpace":"Solujen väli","column":{"menu":"Sarake","insertBefore":"Lisää sarake vasemmalle","insertAfter":"Lisää sarake oikealle","deleteColumn":"Poista sarakkeet"},"columns":"Sarakkeet","deleteTable":"Poista taulu","headers":"Ylätunnisteet","headersBoth":"Molemmat","headersColumn":"Ensimmäinen sarake","headersNone":"Ei","headersRow":"Ensimmäinen rivi","invalidBorder":"Reunan koon täytyy olla numero.","invalidCellPadding":"Solujen sisennyksen täytyy olla numero.","invalidCellSpacing":"Solujen välin täytyy olla numero.","invalidCols":"Sarakkeiden määrän täytyy olla suurempi kuin 0.","invalidHeight":"Taulun korkeuden täytyy olla numero.","invalidRows":"Rivien määrän täytyy olla suurempi kuin 0.","invalidWidth":"Taulun leveyden täytyy olla numero.","menu":"Taulun ominaisuudet","row":{"menu":"Rivi","insertBefore":"Lisää rivi yläpuolelle","insertAfter":"Lisää rivi alapuolelle","deleteRow":"Poista rivit"},"rows":"Rivit","summary":"Yhteenveto","title":"Taulun ominaisuudet","toolbar":"Taulu","widthPc":"prosenttia","widthPx":"pikseliä","widthUnit":"leveysyksikkö"},"stylescombo":{"label":"Tyyli","panelTitle":"Muotoilujen tyylit","panelTitle1":"Lohkojen tyylit","panelTitle2":"Rivinsisäiset tyylit","panelTitle3":"Objektien tyylit"},"specialchar":{"options":"Erikoismerkin ominaisuudet","title":"Valitse erikoismerkki","toolbar":"Lisää erikoismerkki"},"sourcearea":{"toolbar":"Koodi"},"scayt":{"btn_about":"Tietoja oikoluvusta kirjoitetaessa","btn_dictionaries":"Sanakirjat","btn_disable":"Poista käytöstä oikoluku kirjoitetaessa","btn_enable":"Ota käyttöön oikoluku kirjoitettaessa","btn_langs":"Kielet","btn_options":"Asetukset","text_title":"Oikolue kirjoitettaessa"},"removeformat":{"toolbar":"Poista muotoilu"},"pastetext":{"button":"Liitä tekstinä","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)","error":"Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia","title":"Liitä Word-dokumentista","toolbar":"Liitä Word-dokumentista"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Suurenna","minimize":"Pienennä"},"magicline":{"title":"Lisää kappale tähän."},"list":{"bulletedlist":"Luettelomerkit","numberedlist":"Numerointi"},"link":{"acccessKey":"Pikanäppäin","advanced":"Lisäominaisuudet","advisoryContentType":"Avustava sisällön tyyppi","advisoryTitle":"Avustava otsikko","anchor":{"toolbar":"Lisää ankkuri/muokkaa ankkuria","menu":"Ankkurin ominaisuudet","title":"Ankkurin ominaisuudet","name":"Nimi","errorName":"Ankkurille on kirjoitettava nimi","remove":"Poista ankkuri"},"anchorId":"Ankkurin ID:n mukaan","anchorName":"Ankkurin nimen mukaan","charset":"Linkitetty kirjaimisto","cssClasses":"Tyyliluokat","download":"Force Download","displayText":"Display Text","emailAddress":"Sähköpostiosoite","emailBody":"Viesti","emailSubject":"Aihe","id":"Tunniste","info":"Linkin tiedot","langCode":"Kielen suunta","langDir":"Kielen suunta","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","menu":"Muokkaa linkkiä","name":"Nimi","noAnchors":"(Ei ankkureita tässä dokumentissa)","noEmail":"Kirjoita sähköpostiosoite","noUrl":"Linkille on kirjoitettava URL","other":"<muu>","popupDependent":"Riippuva (Netscape)","popupFeatures":"Popup ikkunan ominaisuudet","popupFullScreen":"Täysi ikkuna (IE)","popupLeft":"Vasemmalta (px)","popupLocationBar":"Osoiterivi","popupMenuBar":"Valikkorivi","popupResizable":"Venytettävä","popupScrollBars":"Vierityspalkit","popupStatusBar":"Tilarivi","popupToolbar":"Vakiopainikkeet","popupTop":"Ylhäältä (px)","rel":"Suhde","selectAnchor":"Valitse ankkuri","styles":"Tyyli","tabIndex":"Tabulaattori indeksi","target":"Kohde","targetFrame":"<kehys>","targetFrameName":"Kohdekehyksen nimi","targetPopup":"<popup ikkuna>","targetPopupName":"Popup ikkunan nimi","title":"Linkki","toAnchor":"Ankkuri tässä sivussa","toEmail":"Sähköposti","toUrl":"Osoite","toolbar":"Lisää linkki/muokkaa linkkiä","type":"Linkkityyppi","unlink":"Poista linkki","upload":"Lisää tiedosto"},"indent":{"indent":"Suurenna sisennystä","outdent":"Pienennä sisennystä"},"image":{"alt":"Vaihtoehtoinen teksti","border":"Kehys","btnUpload":"Lähetä palvelimelle","button2Img":"Haluatko muuntaa valitun kuvanäppäimen kuvaksi?","hSpace":"Vaakatila","img2Button":"Haluatko muuntaa valitun kuvan kuvanäppäimeksi?","infoTab":"Kuvan tiedot","linkTab":"Linkki","lockRatio":"Lukitse suhteet","menu":"Kuvan ominaisuudet","resetSize":"Alkuperäinen koko","title":"Kuvan ominaisuudet","titleButton":"Kuvapainikkeen ominaisuudet","upload":"Lisää kuva","urlMissing":"Kuvan lähdeosoite puuttuu.","vSpace":"Pystytila","validateBorder":"Kehyksen täytyy olla kokonaisluku.","validateHSpace":"HSpace-määrityksen täytyy olla kokonaisluku.","validateVSpace":"VSpace-määrityksen täytyy olla kokonaisluku."},"horizontalrule":{"toolbar":"Lisää murtoviiva"},"format":{"label":"Muotoilu","panelTitle":"Muotoilu","tag_address":"Osoite","tag_div":"Normaali (DIV)","tag_h1":"Otsikko 1","tag_h2":"Otsikko 2","tag_h3":"Otsikko 3","tag_h4":"Otsikko 4","tag_h5":"Otsikko 5","tag_h6":"Otsikko 6","tag_p":"Normaali","tag_pre":"Muotoiltu"},"fakeobjects":{"anchor":"Ankkuri","flash":"Flash animaatio","hiddenfield":"Piilokenttä","iframe":"IFrame-kehys","unknown":"Tuntematon objekti"},"elementspath":{"eleLabel":"Elementin polku","eleTitle":"%1 elementti"},"contextmenu":{"options":"Pikavalikon ominaisuudet"},"clipboard":{"copy":"Kopioi","copyError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).","cut":"Leikkaa","cutError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).","paste":"Liitä","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Valittu)"},"blockquote":{"toolbar":"Lainaus"},"basicstyles":{"bold":"Lihavoitu","italic":"Kursivoitu","strike":"Yliviivattu","subscript":"Alaindeksi","superscript":"Yläindeksi","underline":"Alleviivattu"},"about":{"copy":"Copyright © $1. Kaikki oikeuden pidätetään.","dlgTitle":"Tietoa CKEditorista","help":"Katso ohjeet: $1.","moreInfo":"Lisenssitiedot löytyvät kotisivuiltamme:","title":"Tietoa CKEditorista","userGuide":"CKEditorin käyttäjäopas"},"editor":"Rikastekstieditori","editorPanel":"Rikastekstieditoripaneeli","common":{"editorHelp":"Paina ALT 0 nähdäksesi ohjeen","browseServer":"Selaa palvelinta","url":"Osoite","protocol":"Protokolla","upload":"Lisää tiedosto","uploadSubmit":"Lähetä palvelimelle","image":"Kuva","flash":"Flash-animaatio","form":"Lomake","checkbox":"Valintaruutu","radio":"Radiopainike","textField":"Tekstikenttä","textarea":"Tekstilaatikko","hiddenField":"Piilokenttä","button":"Painike","select":"Valintakenttä","imageButton":"Kuvapainike","notSet":"<ei asetettu>","id":"Tunniste","name":"Nimi","langDir":"Kielen suunta","langDirLtr":"Vasemmalta oikealle (LTR)","langDirRtl":"Oikealta vasemmalle (RTL)","langCode":"Kielikoodi","longDescr":"Pitkän kuvauksen URL","cssClass":"Tyyliluokat","advisoryTitle":"Avustava otsikko","cssStyle":"Tyyli","ok":"OK","cancel":"Peruuta","close":"Sulje","preview":"Esikatselu","resize":"Raahaa muuttaaksesi kokoa","generalTab":"Yleinen","advancedTab":"Lisäominaisuudet","validateNumberFailed":"Arvon pitää olla numero.","confirmNewPage":"Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?","confirmCancel":"Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?","options":"Asetukset","target":"Kohde","targetNew":"Uusi ikkuna (_blank)","targetTop":"Päällimmäinen ikkuna (_top)","targetSelf":"Sama ikkuna (_self)","targetParent":"Ylemmän tason ikkuna (_parent)","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","styles":"Tyyli","cssClasses":"Tyylitiedoston luokat","width":"Leveys","height":"Korkeus","align":"Kohdistus","alignLeft":"Vasemmalle","alignRight":"Oikealle","alignCenter":"Keskelle","alignJustify":"Tasaa molemmat reunat","alignTop":"Ylös","alignMiddle":"Keskelle","alignBottom":"Alas","alignNone":"Ei asetettu","invalidValue":"Virheellinen arvo.","invalidHeight":"Korkeuden täytyy olla numero.","invalidWidth":"Leveyden täytyy olla numero.","invalidCssLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.","invalidHtmlLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku HTML mittayksikön (px tai %) kanssa tai ilman.","invalidInlineStyle":"Tyylille annetun arvon täytyy koostua yhdestä tai useammasta \"nimi : arvo\" parista, jotka ovat eroteltuna toisistaan puolipisteillä.","cssLengthTooltip":"Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).","unavailable":"%1<span class=\"cke_accessibility\">, ei saatavissa</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/fo.js b/vendor/unisharp/laravel-ckeditor/lang/fo.js deleted file mode 100644 index 2c56d888d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/fo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['fo']={"wsc":{"btnIgnore":"Forfjóna","btnIgnoreAll":"Forfjóna alt","btnReplace":"Yvirskriva","btnReplaceAll":"Yvirskriva alt","btnUndo":"Angra","changeTo":"Broyt til","errorLoading":"Feilur við innlesing av application service host: %s.","ieSpellDownload":"Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?","manyChanges":"Rættstavarin liðugur: %1 orð broytt","noChanges":"Rættstavarin liðugur: Einki orð varð broytt","noMispell":"Rættstavarin liðugur: Eingin feilur funnin","noSuggestions":"- Einki uppskot -","notAvailable":"Tíverri, ikki tøkt í løtuni.","notInDic":"Finst ikki í orðabókini","oneChange":"Rættstavarin liðugur: Eitt orð er broytt","progress":"Rættstavarin arbeiðir...","title":"Kanna stavseting","toolbar":"Kanna stavseting"},"undo":{"redo":"Vend aftur","undo":"Angra"},"toolbar":{"toolbarCollapse":"Lat Toolbar aftur","toolbarExpand":"Vís Toolbar","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Undo","editing":"Editering","forms":"Formar","basicstyles":"Grundleggjandi Styles","paragraph":"Reglubrot","links":"Leinkjur","insert":"Set inn","styles":"Styles","colors":"Litir","tools":"Tól"},"toolbars":"Editor toolbars"},"table":{"border":"Bordabreidd","caption":"Tabellfrágreiðing","cell":{"menu":"Meski","insertBefore":"Set meska inn áðrenn","insertAfter":"Set meska inn aftaná","deleteCell":"Strika meskar","merge":"Flætta meskar","mergeRight":"Flætta meskar til høgru","mergeDown":"Flætta saman","splitHorizontal":"Kloyv meska vatnrætt","splitVertical":"Kloyv meska loddrætt","title":"Mesku eginleikar","cellType":"Mesku slag","rowSpan":"Ræð spenni","colSpan":"Kolonnu spenni","wordWrap":"Orðkloyving","hAlign":"Horisontal plasering","vAlign":"Loddrøtt plasering","alignBaseline":"Basislinja","bgColor":"Bakgrundslitur","borderColor":"Bordalitur","data":"Data","header":"Header","yes":"Ja","no":"Nei","invalidWidth":"Meskubreidd má vera eitt tal.","invalidHeight":"Meskuhædd má vera eitt tal.","invalidRowSpan":"Raðspennið má vera eitt heiltal.","invalidColSpan":"Kolonnuspennið má vera eitt heiltal.","chooseColor":"Vel"},"cellPad":"Meskubreddi","cellSpace":"Fjarstøða millum meskar","column":{"menu":"Kolonna","insertBefore":"Set kolonnu inn áðrenn","insertAfter":"Set kolonnu inn aftaná","deleteColumn":"Strika kolonnur"},"columns":"Kolonnur","deleteTable":"Strika tabell","headers":"Yvirskriftir","headersBoth":"Báðir","headersColumn":"Fyrsta kolonna","headersNone":"Eingin","headersRow":"Fyrsta rað","invalidBorder":"Borda-stødd má vera eitt tal.","invalidCellPadding":"Cell padding má vera eitt tal.","invalidCellSpacing":"Cell spacing má vera eitt tal.","invalidCols":"Talið av kolonnum má vera eitt tal størri enn 0.","invalidHeight":"Tabell-hædd má vera eitt tal.","invalidRows":"Talið av røðum má vera eitt tal størri enn 0.","invalidWidth":"Tabell-breidd má vera eitt tal.","menu":"Eginleikar fyri tabell","row":{"menu":"Rað","insertBefore":"Set rað inn áðrenn","insertAfter":"Set rað inn aftaná","deleteRow":"Strika røðir"},"rows":"Røðir","summary":"Samandráttur","title":"Eginleikar fyri tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"pixels","widthUnit":"breiddar unit"},"stylescombo":{"label":"Typografi","panelTitle":"Formatterings stílir","panelTitle1":"Blokk stílir","panelTitle2":"Inline stílir","panelTitle3":"Object stílir"},"specialchar":{"options":"Møguleikar við serteknum","title":"Vel sertekn","toolbar":"Set inn sertekn"},"sourcearea":{"toolbar":"Kelda"},"scayt":{"btn_about":"Um SCAYT","btn_dictionaries":"Orðabøkur","btn_disable":"Nokta SCAYT","btn_enable":"Loyv SCAYT","btn_langs":"Tungumál","btn_options":"Uppseting","text_title":"Kanna stavseting, meðan tú skrivar"},"removeformat":{"toolbar":"Strika sniðgeving"},"pastetext":{"button":"Innrita som reinan tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?","error":"Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil","title":"Innrita frá Word","toolbar":"Innrita frá Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimera","minimize":"Minimera"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktmerktur listi","numberedlist":"Talmerktur listi"},"link":{"acccessKey":"Snarvegisknöttur","advanced":"Fjølbroytt","advisoryContentType":"Vegleiðandi innihaldsslag","advisoryTitle":"Vegleiðandi heiti","anchor":{"toolbar":"Ger/broyt marknastein","menu":"Eginleikar fyri marknastein","title":"Eginleikar fyri marknastein","name":"Heiti marknasteinsins","errorName":"Vinarliga rita marknasteinsins heiti","remove":"Strika marknastein"},"anchorId":"Eftir element Id","anchorName":"Eftir navni á marknasteini","charset":"Atknýtt teknsett","cssClasses":"Typografi klassar","download":"Force Download","displayText":"Display Text","emailAddress":"Teldupost-adressa","emailBody":"Breyðtekstur","emailSubject":"Evni","id":"Id","info":"Tilknýtis upplýsingar","langCode":"Tekstkós","langDir":"Tekstkós","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","menu":"Broyt tilknýti","name":"Navn","noAnchors":"(Eingir marknasteinar eru í hesum dokumentið)","noEmail":"Vinarliga skriva teldupost-adressu","noUrl":"Vinarliga skriva tilknýti (URL)","other":"<annað>","popupDependent":"Bundið (Netscape)","popupFeatures":"Popup vindeygans víðkaðu eginleikar","popupFullScreen":"Fullur skermur (IE)","popupLeft":"Frástøða frá vinstru","popupLocationBar":"Adressulinja","popupMenuBar":"Skrábjálki","popupResizable":"Stødd kann broytast","popupScrollBars":"Rullibjálki","popupStatusBar":"Støðufrágreiðingarbjálki","popupToolbar":"Amboðsbjálki","popupTop":"Frástøða frá íerva","rel":"Relatión","selectAnchor":"Vel ein marknastein","styles":"Typografi","tabIndex":"Tabulator indeks","target":"Target","targetFrame":"<ramma>","targetFrameName":"Vís navn vindeygans","targetPopup":"<popup vindeyga>","targetPopupName":"Popup vindeygans navn","title":"Tilknýti","toAnchor":"Tilknýti til marknastein í tekstinum","toEmail":"Teldupostur","toUrl":"URL","toolbar":"Ger/broyt tilknýti","type":"Tilknýtisslag","unlink":"Strika tilknýti","upload":"Send til ambætaran"},"indent":{"indent":"Økja reglubrotarinntriv","outdent":"Minka reglubrotarinntriv"},"image":{"alt":"Alternativur tekstur","border":"Bordi","btnUpload":"Send til ambætaran","button2Img":"Skal valdi myndaknøttur gerast til vanliga mynd?","hSpace":"Høgri breddi","img2Button":"Skal valda mynd gerast til myndaknøtt?","infoTab":"Myndaupplýsingar","linkTab":"Tilknýti","lockRatio":"Læs lutfallið","menu":"Myndaeginleikar","resetSize":"Upprunastødd","title":"Myndaeginleikar","titleButton":"Eginleikar fyri myndaknøtt","upload":"Send","urlMissing":"URL til mynd manglar.","vSpace":"Vinstri breddi","validateBorder":"Bordi má vera eitt heiltal.","validateHSpace":"HSpace má vera eitt heiltal.","validateVSpace":"VSpace má vera eitt heiltal."},"horizontalrule":{"toolbar":"Ger vatnrætta linju"},"format":{"label":"Skriftsnið","panelTitle":"Skriftsnið","tag_address":"Adressa","tag_div":"Vanligt (DIV)","tag_h1":"Yvirskrift 1","tag_h2":"Yvirskrift 2","tag_h3":"Yvirskrift 3","tag_h4":"Yvirskrift 4","tag_h5":"Yvirskrift 5","tag_h6":"Yvirskrift 6","tag_p":"Vanligt","tag_pre":"Sniðgivið"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Fjaldur teigur","iframe":"IFrame","unknown":"Ókent Object"},"elementspath":{"eleLabel":"Slóð til elementir","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Avrita","copyError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).","cut":"Kvett","cutError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).","paste":"Innrita","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Blockquote"},"basicstyles":{"bold":"Feit skrift","italic":"Skráskrift","strike":"Yvirstrikað","subscript":"Lækkað skrift","superscript":"Hækkað skrift","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"Um CKEditor","help":"Kekka $1 fyri hjálp.","moreInfo":"Licens upplýsingar finnast á heimasíðu okkara:","title":"Um CKEditor","userGuide":"CKEditor Brúkaravegleiðing"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Trýst ALT og 0 fyri vegleiðing","browseServer":"Ambætarakagi","url":"URL","protocol":"Protokoll","upload":"Send til ambætaran","uploadSubmit":"Send til ambætaran","image":"Myndir","flash":"Flash","form":"Formur","checkbox":"Flugubein","radio":"Radioknøttur","textField":"Tekstteigur","textarea":"Tekstumráði","hiddenField":"Fjaldur teigur","button":"Knøttur","select":"Valskrá","imageButton":"Myndaknøttur","notSet":"<ikki sett>","id":"Id","name":"Navn","langDir":"Tekstkós","langDirLtr":"Frá vinstru til høgru (LTR)","langDirRtl":"Frá høgru til vinstru (RTL)","langCode":"Málkoda","longDescr":"Víðkað URL frágreiðing","cssClass":"Typografi klassar","advisoryTitle":"Vegleiðandi heiti","cssStyle":"Typografi","ok":"Góðkent","cancel":"Avlýs","close":"Lat aftur","preview":"Frumsýn","resize":"Drag fyri at broyta stødd","generalTab":"Generelt","advancedTab":"Fjølbroytt","validateNumberFailed":"Hetta er ikki eitt tal.","confirmNewPage":"Allar ikki goymdar broytingar í hesum innihaldið hvørva. Skal nýggj síða lesast kortini?","confirmCancel":"Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?","options":"Options","target":"Target","targetNew":"Nýtt vindeyga (_blank)","targetTop":"Vindeyga ovast (_top)","targetSelf":"Sama vindeyga (_self)","targetParent":"Upphavligt vindeyga (_parent)","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Breidd","height":"Hædd","align":"Justering","alignLeft":"Vinstra","alignRight":"Høgra","alignCenter":"Miðsett","alignJustify":"Javnir tekstkantar","alignTop":"Ovast","alignMiddle":"Miðja","alignBottom":"Botnur","alignNone":"Eingin","invalidValue":"Invalid value.","invalidHeight":"Hædd má vera eitt tal.","invalidWidth":"Breidd má vera eitt tal.","invalidCssLength":"Virðið sett í \"%1\" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).","invalidHtmlLength":"Virðið sett í \"%1\" feltiðield má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px ella %).","invalidInlineStyle":"Virði specifiserað fyri inline style má hava eitt ella fleiri pør (tuples) skrivað sum \"name : value\", hvørt parið sundurskilt við semi-colon.","cssLengthTooltip":"Skriva eitt tal fyri eitt virði í pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikki tøkt</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/lang/fr-ca.js deleted file mode 100644 index d639439a0..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['fr-ca']={"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer tout","btnReplace":"Remplacer","btnReplaceAll":"Remplacer tout","btnUndo":"Annuler","changeTo":"Changer en","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?","manyChanges":"Vérification d'orthographe terminée: %1 mots modifiés","noChanges":"Vérification d'orthographe terminée: Pas de modifications","noMispell":"Vérification d'orthographe terminée: pas d'erreur trouvée","noSuggestions":"- Pas de suggestion -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Pas dans le dictionnaire","oneChange":"Vérification d'orthographe terminée: Un mot modifié","progress":"Vérification d'orthographe en cours...","title":"Spell Checker","toolbar":"Orthographe"},"undo":{"redo":"Refaire","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse papier/Annuler","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer des cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Retour à la ligne","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de cellule doit être un nombre.","invalidHeight":"La hauteur de cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Sélectionner"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer des colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux.","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","invalidBorder":"La taille de bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer des lignes"},"rows":"Lignes","summary":"Résumé","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pourcentage","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de formattage","panelTitle1":"Styles de block","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Option des caractères spéciaux","title":"Sélectionner un caractère spécial","toolbar":"Insérer un caractère spécial"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Supprimer le formatage"},"pastetext":{"button":"Coller comme texte","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées du à une erreur interne","title":"Coller de Word","toolbar":"Coller de Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximizer","minimize":"Minimizer"},"magicline":{"title":"Insérer le paragraphe ici"},"list":{"bulletedlist":"Liste à puces","numberedlist":"Liste numérotée"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu","advisoryTitle":"Description","anchor":{"toolbar":"Ancre","menu":"Modifier l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez saisir le nom de l'ancre","remove":"Supprimer l'ancre"},"anchorId":"Par ID","anchorName":"Par nom","charset":"Encodage de la cible","cssClasses":"Classes CSS","download":"Force Download","displayText":"Display Text","emailAddress":"Courriel","emailBody":"Corps du message","emailSubject":"Objet du message","id":"ID","info":"Informations sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","menu":"Modifier le lien","name":"Nom","noAnchors":"(Pas d'ancre disponible dans le document)","noEmail":"Veuillez saisir le courriel","noUrl":"Veuillez saisir l'URL","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Caractéristiques de la fenêtre popup","popupFullScreen":"Plein écran (IE)","popupLeft":"Position de la gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre d'état","popupToolbar":"Barre d'outils","popupTop":"Position à partir du haut","rel":"Relation","selectAnchor":"Sélectionner une ancre","styles":"Style","tabIndex":"Ordre de tabulation","target":"Destination","targetFrame":"<Cadre>","targetFrameName":"Nom du cadre de destination","targetPopup":"<fenêtre popup>","targetPopupName":"Nom de la fenêtre popup","title":"Lien","toAnchor":"Ancre dans cette page","toEmail":"Courriel","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Téléverser"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image":{"alt":"Texte alternatif","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Désirez-vous transformer l'image sélectionnée en image simple?","hSpace":"Espacement horizontal","img2Button":"Désirez-vous transformer l'image sélectionnée en bouton image?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Verrouiller les proportions","menu":"Propriétés de l'image","resetSize":"Taille originale","title":"Propriétés de l'image","titleButton":"Propriétés du bouton image","upload":"Téléverser","urlMissing":"L'URL de la source de l'image est manquant.","vSpace":"Espacement vertical","validateBorder":"La bordure doit être un entier.","validateHSpace":"L'espacement horizontal doit être un entier.","validateVSpace":"L'espacement vertical doit être un entier."},"horizontalrule":{"toolbar":"Insérer un séparateur horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"En-tête 1","tag_h2":"En-tête 2","tag_h3":"En-tête 3","tag_h4":"En-tête 4","tag_h5":"En-tête 5","tag_h6":"En-tête 6","tag_p":"Normal","tag_pre":"Formaté"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ caché","iframe":"IFrame","unknown":"Objet inconnu"},"elementspath":{"eleLabel":"Chemin d'éléments","eleTitle":"element %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor","help":"Consulter $1 pour l'aide.","moreInfo":"Pour les informations de licence, consulter notre site internet:","title":"À propos de CKEditor","userGuide":"Guide utilisateur de CKEditor"},"editor":"Éditeur de texte enrichi","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Appuyez sur 0 pour de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer au serveur","image":"Image","flash":"Animation Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<Par défaut>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"De gauche à droite (LTR)","langDirRtl":"De droite à gauche (RTL)","langCode":"Code langue","longDescr":"URL de description longue","cssClass":"Classes CSS","advisoryTitle":"Titre","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous certain de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous certain de vouloir fermer?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieur (_top)","targetSelf":"Cette fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","styles":"Style","cssClasses":"Classe CSS","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centré","alignJustify":"Justifié","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"None","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style intégré doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/fr.js b/vendor/unisharp/laravel-ckeditor/lang/fr.js deleted file mode 100644 index f1c9a941a..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['fr']={"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer tout","btnReplace":"Remplacer","btnReplaceAll":"Remplacer tout","btnUndo":"Annuler","changeTo":"Modifier pour","errorLoading":"Erreur du chargement du service depuis l'hôte : %s.","ieSpellDownload":"La vérification d'orthographe n'est pas installée. Voulez-vous la télécharger maintenant?","manyChanges":"Vérification de l'orthographe terminée : %1 mots corrigés.","noChanges":"Vérification de l'orthographe terminée : Aucun mot corrigé.","noMispell":"Vérification de l'orthographe terminée : aucune erreur trouvée.","noSuggestions":"- Aucune suggestion -","notAvailable":"Désolé, le service est indisponible actuellement.","notInDic":"N'existe pas dans le dictionnaire.","oneChange":"Vérification de l'orthographe terminée : Un seul mot corrigé.","progress":"Vérification de l'orthographe en cours...","title":"Vérifier l'orthographe","toolbar":"Vérifier l'orthographe"},"undo":{"redo":"Rétablir","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barres d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre du tableau","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer les cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner vers la droite","mergeDown":"Fusionner vers le bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Lignes occupées","colSpan":"Colonnes occupées","wordWrap":"Césure","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Ligne de base","bgColor":"Couleur d'arrière-plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de la cellule doit être un nombre.","invalidHeight":"La hauteur de la cellule doit être un nombre.","invalidRowSpan":"Le nombre de colonnes occupées doit être un nombre entier.","invalidColSpan":"Le nombre de colonnes occupées doit être un nombre entier.","chooseColor":"Choisir"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement entre les cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer les colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","invalidBorder":"La taille de la bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement entre les cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer les lignes"},"rows":"Lignes","summary":"Résumé (description)","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pour cent","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de mise en forme","panelTitle1":"Styles de bloc","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Options des caractères spéciaux","title":"Sélectionner un caractère","toolbar":"Insérer un caractère spécial"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"A propos de SCAYT","btn_dictionaries":"Dictionnaires","btn_disable":"Désactiver SCAYT","btn_enable":"Activer SCAYT","btn_langs":"Langues","btn_options":"Options","text_title":"Vérification de l'Orthographe en Cours de Frappe (SCAYT)"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"pastetext":{"button":"Coller comme texte brut","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller ?","error":"Les données collées n'ont pas pu être nettoyées à cause d'une erreur interne","title":"Coller depuis Word","toolbar":"Coller depuis Word"},"notification":{"closed":"Notification fermée."},"maximize":{"maximize":"Agrandir","minimize":"Réduire"},"magicline":{"title":"Insérer un paragraphe ici"},"list":{"bulletedlist":"Insérer/Supprimer une liste à puces","numberedlist":"Insérer/Supprimer une liste numérotée"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu (indicatif)","advisoryTitle":"Infobulle","anchor":{"toolbar":"Ancre","menu":"Modifier l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez entrer le nom de l'ancre.","remove":"Supprimer l'ancre"},"anchorId":"Par ID d'élément","anchorName":"Par nom d'ancre","charset":"Encodage de la ressource liée","cssClasses":"Classes de style","download":"Forcer le téléchargement","displayText":"Afficher le texte","emailAddress":"Adresse électronique","emailBody":"Corps du message","emailSubject":"Sujet du message","id":"ID","info":"Informations sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"Gauche à droite","langDirRTL":"Droite à gauche (RTL)","menu":"Modifier le lien","name":"Nom","noAnchors":"(Aucune ancre disponible dans ce document)","noEmail":"Veuillez entrer l'adresse électronique","noUrl":"Veuillez entrer l'URL du lien","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Caractéristiques de la fenêtre surgissante","popupFullScreen":"Plein écran (IE)","popupLeft":"À gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre d'état","popupToolbar":"Barre d'outils","popupTop":"En haut","rel":"Relation","selectAnchor":"Sélectionner une ancre","styles":"Style","tabIndex":"Indice de tabulation","target":"Cible","targetFrame":"<cadre>","targetFrameName":"Nom du cadre affecté","targetPopup":"<fenêtre surgissante>","targetPopupName":"Nom de la fenêtre surgissante","title":"Lien","toAnchor":"Ancre","toEmail":"Courriel","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Téléverser"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image":{"alt":"Texte alternatif","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Voulez-vous transformer le bouton avec image sélectionné en simple image ?","hSpace":"Espacement horizontal","img2Button":"Voulez-vous transformer l'image sélectionnée en bouton avec image ?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","resetSize":"Réinitialiser la taille","title":"Propriétés de l'image","titleButton":"Propriétés du bouton avec image","upload":"Téléverser","urlMissing":"L'URL source de l'image est manquante.","vSpace":"Espacement vertical","validateBorder":"La bordure doit être un nombre entier.","validateHSpace":"L'espacement horizontal doit être un nombre entier.","validateVSpace":"L'espacement vertical doit être un nombre entier."},"horizontalrule":{"toolbar":"Ligne horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Division","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Préformaté"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ invisible","iframe":"Cadre de contenu incorporé","unknown":"Objet inconnu"},"elementspath":{"eleLabel":"Chemin des éléments","eleTitle":"Élément %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Sélectionné)"},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor","help":"Consulter $1 pour obtenir de l'aide.","moreInfo":"Pour les informations de licence, veuillez visiter notre site web :","title":"À propos de CKEditor","userGuide":"Guide de l'utilisateur CKEditor (en anglais)"},"editor":"Éditeur de texte enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Utilisez le raccourci Alt-0 pour obtenir de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Télécharger","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ invisible","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton avec image","notSet":"<indéfini>","id":"ID","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue","cssClass":"Classes de style","advisoryTitle":"Infobulle","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page ?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer ?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à droite (LTR)","langDirRTL":"Droite à gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centrer","alignJustify":"Justifier","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style en ligne doit être composée d'un ou plusieurs couples au format « nom : valeur », séparés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retour arrière","13":"Entrée","16":"Majuscule","17":"Ctrl","18":"Alt","32":"Espace","35":"Fin","36":"Origine","46":"Supprimer","224":"Commande"},"keyboardShortcut":"Raccourci clavier"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/gl.js b/vendor/unisharp/laravel-ckeditor/lang/gl.js deleted file mode 100644 index bba71ecd7..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['gl']={"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Todas","btnReplace":"Substituir","btnReplaceAll":"Substituir Todas","btnUndo":"Desfacer","changeTo":"Cambiar a","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"O corrector ortográfico non está instalado. ¿Quere descargalo agora?","manyChanges":"Corrección ortográfica rematada: %1 verbas substituidas","noChanges":"Corrección ortográfica rematada: Non se substituiu nengunha verba","noMispell":"Corrección ortográfica rematada: Non se atoparon erros","noSuggestions":"- Sen candidatos -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Non está no diccionario","oneChange":"Corrección ortográfica rematada: Unha verba substituida","progress":"Corrección ortográfica en progreso...","title":"Spell Checker","toolbar":"Corrección Ortográfica"},"undo":{"redo":"Refacer","undo":"Desfacer"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"table":{"border":"Tamaño do bordo","caption":"Título","cell":{"menu":"Cela","insertBefore":"Inserir a cela á esquerda","insertAfter":"Inserir a cela á dereita","deleteCell":"Eliminar celas","merge":"Combinar celas","mergeRight":"Combinar á dereita","mergeDown":"Combinar cara abaixo","splitHorizontal":"Dividir a cela en horizontal","splitVertical":"Dividir a cela en vertical","title":"Propiedades da cela","cellType":"Tipo de cela","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Axustar ao contido","hAlign":"Aliñación horizontal","vAlign":"Aliñación vertical","alignBaseline":"Liña de base","bgColor":"Cor do fondo","borderColor":"Cor do bordo","data":"Datos","header":"Cabeceira","yes":"Si","no":"Non","invalidWidth":"O largo da cela debe ser un número.","invalidHeight":"O alto da cela debe ser un número.","invalidRowSpan":"A expansión de filas debe ser un número enteiro.","invalidColSpan":"A expansión de columnas debe ser un número enteiro.","chooseColor":"Escoller"},"cellPad":"Marxe interior da cela","cellSpace":"Marxe entre celas","column":{"menu":"Columna","insertBefore":"Inserir a columna á esquerda","insertAfter":"Inserir a columna á dereita","deleteColumn":"Borrar Columnas"},"columns":"Columnas","deleteTable":"Borrar Táboa","headers":"Cabeceiras","headersBoth":"Ambas","headersColumn":"Primeira columna","headersNone":"Ningún","headersRow":"Primeira fila","invalidBorder":"O tamaño do bordo debe ser un número.","invalidCellPadding":"A marxe interior debe ser un número positivo.","invalidCellSpacing":"A marxe entre celas debe ser un número positivo.","invalidCols":"O número de columnas debe ser un número maior que 0.","invalidHeight":"O alto da táboa debe ser un número.","invalidRows":"O número de filas debe ser un número maior que 0","invalidWidth":"O largo da táboa debe ser un número.","menu":"Propiedades da táboa","row":{"menu":"Fila","insertBefore":"Inserir a fila por riba","insertAfter":"Inserir a fila por baixo","deleteRow":"Eliminar filas"},"rows":"Filas","summary":"Resumo","title":"Propiedades da táboa","toolbar":"Taboa","widthPc":"porcentaxe","widthPx":"píxeles","widthUnit":"unidade do largo"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatando","panelTitle1":"Estilos de bloque","panelTitle2":"Estilos de liña","panelTitle3":"Estilos de obxecto"},"specialchar":{"options":"Opcións de caracteres especiais","title":"Seleccione un carácter especial","toolbar":"Inserir un carácter especial"},"sourcearea":{"toolbar":"Orixe"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Retirar o formato"},"pastetext":{"button":"Pegar como texto simple","pasteNotification":"O seu navegador non permite pegar texto simple deste xeito. Prema %1 para pegar."},"pastefromword":{"confirmCleanup":"O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?","error":"Non foi posíbel depurar os datos pegados por mor dun erro interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación pechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir aquí o parágrafo"},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"link":{"acccessKey":"Chave de acceso","advanced":"Avanzado","advisoryContentType":"Tipo de contido informativo","advisoryTitle":"Título","anchor":{"toolbar":"Ancoraxe","menu":"Editar a ancoraxe","title":"Propiedades da ancoraxe","name":"Nome da ancoraxe","errorName":"Escriba o nome da ancoraxe","remove":"Retirar a ancoraxe"},"anchorId":"Polo ID do elemento","anchorName":"Polo nome da ancoraxe","charset":"Codificación do recurso ligado","cssClasses":"Clases da folla de estilos","download":"Forzar a descarga","displayText":"Amosar o texto","emailAddress":"Enderezo de correo","emailBody":"Corpo da mensaxe","emailSubject":"Asunto da mensaxe","id":"ID","info":"Información da ligazón","langCode":"Código do idioma","langDir":"Dirección de escritura do idioma","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","menu":"Editar a ligazón","name":"Nome","noAnchors":"(Non hai ancoraxes dispoñíbeis no documento)","noEmail":"Escriba o enderezo de correo","noUrl":"Escriba a ligazón URL","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Características da xanela emerxente","popupFullScreen":"Pantalla completa (IE)","popupLeft":"Posición esquerda","popupLocationBar":"Barra de localización","popupMenuBar":"Barra do menú","popupResizable":"Redimensionábel","popupScrollBars":"Barras de desprazamento","popupStatusBar":"Barra de estado","popupToolbar":"Barra de ferramentas","popupTop":"Posición superior","rel":"Relación","selectAnchor":"Seleccionar unha ancoraxe","styles":"Estilo","tabIndex":"Índice de tabulación","target":"Destino","targetFrame":"<marco>","targetFrameName":"Nome do marco de destino","targetPopup":"<xanela emerxente>","targetPopupName":"Nome da xanela emerxente","title":"Ligazón","toAnchor":"Ligar coa ancoraxe no testo","toEmail":"Correo","toUrl":"URL","toolbar":"Ligazón","type":"Tipo de ligazón","unlink":"Eliminar a ligazón","upload":"Enviar"},"indent":{"indent":"Aumentar a sangría","outdent":"Reducir a sangría"},"image":{"alt":"Texto alternativo","border":"Bordo","btnUpload":"Enviar ao servidor","button2Img":"Quere converter o botón da imaxe seleccionada nunha imaxe sinxela?","hSpace":"Esp.Horiz.","img2Button":"Quere converter a imaxe seleccionada nun botón de imaxe?","infoTab":"Información da imaxe","linkTab":"Ligazón","lockRatio":"Proporcional","menu":"Propiedades da imaxe","resetSize":"Tamaño orixinal","title":"Propiedades da imaxe","titleButton":"Propiedades do botón de imaxe","upload":"Cargar","urlMissing":"Non se atopa o URL da imaxe.","vSpace":"Esp.Vert.","validateBorder":"O bordo debe ser un número.","validateHSpace":"O espazado horizontal debe ser un número.","validateVSpace":"O espazado vertical debe ser un número."},"horizontalrule":{"toolbar":"Inserir unha liña horizontal"},"format":{"label":"Formato","panelTitle":"Formato do parágrafo","tag_address":"Enderezo","tag_div":"Normal (DIV)","tag_h1":"Enacabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formatado"},"fakeobjects":{"anchor":"Ancoraxe","flash":"Animación «Flash»","hiddenfield":"Campo agochado","iframe":"IFrame","unknown":"Obxecto descoñecido"},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opcións do menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"O seu navegador non permite pegar deste xeito. Prema %1 para pegar."},"button":{"selectedLabel":"%1 (seleccionado)"},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subliñado"},"about":{"copy":"Copyright © $1. Todos os dereitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Consulte $1 para obter axuda.","moreInfo":"Para obter información sobre a licenza, visite o noso sitio web:","title":"Sobre o CKEditor","userGuide":"Guía do usuario do CKEditor"},"editor":"Editor de texto mellorado","editorPanel":"Panel do editor de texto mellorado","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","flash":"Flash","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","confirmNewPage":"Calquera cambio que non gardara neste contido perderase.\r\nConfirma que quere cargar unha páxina nova?","confirmCancel":"Algunhas das opcións foron cambiadas.\r\nConfirma que quere pechar o diálogo?","options":"Opcións","target":"Destino","targetNew":"Nova xanela (_blank)","targetTop":"Xanela principal (_top)","targetSelf":"Mesma xanela (_self)","targetParent":"Xanela superior (_parent)","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","styles":"Estilo","cssClasses":"Clases da folla de estilos","width":"Largo","height":"Alto","align":"Aliñamento","alignLeft":"Esquerda","alignRight":"Dereita","alignCenter":"Centro","alignJustify":"Xustificado","alignTop":"Arriba","alignMiddle":"Centro","alignBottom":"Abaixo","alignNone":"Ningún","invalidValue":"Valor incorrecto.","invalidHeight":"O alto debe ser un número.","invalidWidth":"O largo debe ser un número.","invalidCssLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida HTML correcta (px ou %).","invalidInlineStyle":"O valor especificado no estilo en liña debe consistir nunha ou máis tuplas co formato «nome : valor», separadas por punto e coma.","cssLengthTooltip":"Escriba un número para o valor en píxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, non dispoñíbel</span>","keyboard":{"8":"Ir atrás","13":"Intro","16":"Maiús","17":"Ctrl","18":"Alt","32":"Espazo","35":"Fin","36":"Inicio","46":"Supr","224":"Orde"},"keyboardShortcut":"Atallo de teclado"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/gu.js b/vendor/unisharp/laravel-ckeditor/lang/gu.js deleted file mode 100644 index e5c7094b9..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/gu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['gu']={"wsc":{"btnIgnore":"ઇગ્નોર/અવગણના કરવી","btnIgnoreAll":"બધાની ઇગ્નોર/અવગણના કરવી","btnReplace":"બદલવું","btnReplaceAll":"બધા બદલી કરો","btnUndo":"અન્ડૂ","changeTo":"આનાથી બદલવું","errorLoading":"સર્વિસ એપ્લીકેશન લોડ નથી થ: %s.","ieSpellDownload":"સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?","manyChanges":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે","noChanges":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી","noMispell":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી","noSuggestions":"- કઇ સજેશન નથી -","notAvailable":"માફ કરશો, આ સુવિધા ઉપલબ્ધ નથી","notInDic":"શબ્દકોશમાં નથી","oneChange":"શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે","progress":"શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...","title":"સ્પેલ ","toolbar":"જોડણી (સ્પેલિંગ) તપાસવી"},"undo":{"redo":"રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી","undo":"રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી"},"toolbar":{"toolbarCollapse":"ટૂલબાર નાનું કરવું","toolbarExpand":"ટૂલબાર મોટું કરવું","toolbarGroups":{"document":"દસ્તાવેજ","clipboard":"ક્લિપબોર્ડ/અન","editing":"એડીટ કરવું","forms":"ફોર્મ","basicstyles":"બેસિક્ સ્ટાઇલ","paragraph":"ફકરો","links":"લીંક","insert":"ઉમેરવું","styles":"સ્ટાઇલ","colors":"રંગ","tools":"ટૂલ્સ"},"toolbars":"એડીટર ટૂલ બાર"},"table":{"border":"કોઠાની બાજુ(બોર્ડર) સાઇઝ","caption":"મથાળું/કૅપ્શન ","cell":{"menu":"કોષના ખાના","insertBefore":"પહેલાં કોષ ઉમેરવો","insertAfter":"પછી કોષ ઉમેરવો","deleteCell":"કોષ ડિલીટ/કાઢી નાખવો","merge":"કોષ ભેગા કરવા","mergeRight":"જમણી બાજુ ભેગા કરવા","mergeDown":"નીચે ભેગા કરવા","splitHorizontal":"કોષને સમસ્તરીય વિભાજન કરવું","splitVertical":"કોષને સીધું ને ઊભું વિભાજન કરવું","title":"સેલના ગુણ","cellType":"સેલનો પ્રકાર","rowSpan":"આડી કટારની જગ્યા","colSpan":"ઊભી કતારની જગ્યા","wordWrap":"વર્ડ રેપ","hAlign":"સપાટ લાઈનદોરી","vAlign":"ઊભી લાઈનદોરી","alignBaseline":"બસે લાઈન","bgColor":"પાછાળનો રંગ","borderColor":"બોર્ડેર રંગ","data":"સ્વીકૃત માહિતી","header":"મથાળું","yes":"હા","no":"ના","invalidWidth":"સેલની પોહલાઈ આંકડો હોવો જોઈએ.","invalidHeight":"સેલની ઊંચાઈ આંકડો હોવો જોઈએ.","invalidRowSpan":"રો સ્પાન આંકડો હોવો જોઈએ.","invalidColSpan":"કોલમ સ્પાન આંકડો હોવો જોઈએ.","chooseColor":"પસંદ કરવું"},"cellPad":"સેલ પૅડિંગ","cellSpace":"સેલ અંતર","column":{"menu":"કૉલમ/ઊભી કટાર","insertBefore":"પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી","insertAfter":"પછી કૉલમ/ઊભી કટાર ઉમેરવી","deleteColumn":"કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી"},"columns":"કૉલમ/ઊભી કટાર","deleteTable":"કોઠો ડિલીટ/કાઢી નાખવું","headers":"મથાળા","headersBoth":"બેવું","headersColumn":"પહેલી ઊભી કટાર","headersNone":"નથી ","headersRow":"પહેલી કટાર","invalidBorder":"બોર્ડર એક આંકડો હોવો જોઈએ","invalidCellPadding":"સેલની અંદરની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.","invalidCellSpacing":"સેલ વચ્ચેની જગ્યા સુન્ય કરતા વધારે હોવી જોઈએ.","invalidCols":"ઉભી કટાર, 0 કરતા વધારે હોવી જોઈએ.","invalidHeight":"ટેબલની ઊંચાઈ આંકડો હોવો જોઈએ.","invalidRows":"આડી કટાર, 0 કરતા વધારે હોવી જોઈએ.","invalidWidth":"ટેબલની પોહલાઈ આંકડો હોવો જોઈએ.","menu":"ટેબલ, કોઠાનું મથાળું","row":{"menu":"પંક્તિના ખાના","insertBefore":"પહેલાં પંક્તિ ઉમેરવી","insertAfter":"પછી પંક્તિ ઉમેરવી","deleteRow":"પંક્તિઓ ડિલીટ/કાઢી નાખવી"},"rows":"પંક્તિના ખાના","summary":"ટૂંકો એહેવાલ","title":"ટેબલ, કોઠાનું મથાળું","toolbar":"ટેબલ, કોઠો","widthPc":"પ્રતિશત","widthPx":"પિકસલ","widthUnit":"પોહાલાઈ એકમ"},"stylescombo":{"label":"શૈલી/રીત","panelTitle":"ફોર્મેટ ","panelTitle1":"બ્લોક ","panelTitle2":"ઈનલાઈન ","panelTitle3":"ઓબ્જેક્ટ પદ્ધતિ"},"specialchar":{"options":"સ્પેશિઅલ કરેક્ટરના વિકલ્પો","title":"સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો","toolbar":"વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું"},"sourcearea":{"toolbar":"મૂળ કે પ્રાથમિક દસ્તાવેજ"},"scayt":{"btn_about":"SCAYT વિષે","btn_dictionaries":"શબ્દકોશ","btn_disable":"SCAYT ડિસેબલ કરવું","btn_enable":"SCAYT એનેબલ કરવું","btn_langs":"ભાષાઓ","btn_options":"વિકલ્પો","text_title":"ટાઈપ કરતા સ્પેલ તપાસો"},"removeformat":{"toolbar":"ફૉર્મટ કાઢવું"},"pastetext":{"button":"પેસ્ટ (ટેક્સ્ટ)","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"તમે જે ટેક્ષ્ત્ કોપી કરી રહ્યા છો ટે વર્ડ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?","error":"પેસ્ટ કરેલો ડેટા ઇન્ટરનલ એરર ના લીથે સાફ કરી શકાયો નથી.","title":"પેસ્ટ (વડૅ ટેક્સ્ટ)","toolbar":"પેસ્ટ (વડૅ ટેક્સ્ટ)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"મોટું કરવું","minimize":"નાનું કરવું"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"બુલેટ સૂચિ","numberedlist":"સંખ્યાંકન સૂચિ"},"link":{"acccessKey":"ઍક્સેસ કી","advanced":"અડ્વાન્સડ","advisoryContentType":"મુખ્ય કન્ટેન્ટ પ્રકાર","advisoryTitle":"મુખ્ય મથાળું","anchor":{"toolbar":"ઍંકર ઇન્સર્ટ/દાખલ કરવી","menu":"ઍંકરના ગુણ","title":"ઍંકરના ગુણ","name":"ઍંકરનું નામ","errorName":"ઍંકરનું નામ ટાઈપ કરો","remove":"સ્થિર નકરવું"},"anchorId":"ઍંકર એલિમન્ટ Id થી પસંદ કરો","anchorName":"ઍંકર નામથી પસંદ કરો","charset":"લિંક રિસૉર્સ કૅરિક્ટર સેટ","cssClasses":"સ્ટાઇલ-શીટ ક્લાસ","download":"Force Download","displayText":"Display Text","emailAddress":"ઈ-મેલ સરનામું","emailBody":"સંદેશ","emailSubject":"ઈ-મેલ વિષય","id":"Id","info":"લિંક ઇન્ફૉ ટૅબ","langCode":"ભાષા લેખવાની પદ્ધતિ","langDir":"ભાષા લેખવાની પદ્ધતિ","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","menu":" લિંક એડિટ/માં ફેરફાર કરવો","name":"નામ","noAnchors":"(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)","noEmail":"ઈ-મેલ સરનામું ટાઇપ કરો","noUrl":"લિંક URL ટાઇપ કરો","other":"<other> <અન્ય>","popupDependent":"ડિપેન્ડન્ટ (Netscape)","popupFeatures":"પૉપ-અપ વિન્ડો ફીચરસૅ","popupFullScreen":"ફુલ સ્ક્રીન (IE)","popupLeft":"ડાબી બાજુ","popupLocationBar":"લોકેશન બાર","popupMenuBar":"મેન્યૂ બાર","popupResizable":"રીસાઈઝએબલ","popupScrollBars":"સ્ક્રોલ બાર","popupStatusBar":"સ્ટૅટસ બાર","popupToolbar":"ટૂલ બાર","popupTop":"જમણી બાજુ","rel":"સંબંધની સ્થિતિ","selectAnchor":"ઍંકર પસંદ કરો","styles":"સ્ટાઇલ","tabIndex":"ટૅબ ઇન્ડેક્સ","target":"ટાર્ગેટ/લક્ષ્ય","targetFrame":"<ફ્રેમ>","targetFrameName":"ટાર્ગેટ ફ્રેમ નું નામ","targetPopup":"<પૉપ-અપ વિન્ડો>","targetPopupName":"પૉપ-અપ વિન્ડો નું નામ","title":"લિંક","toAnchor":"આ પેજનો ઍંકર","toEmail":"ઈ-મેલ","toUrl":"URL","toolbar":"લિંક ઇન્સર્ટ/દાખલ કરવી","type":"લિંક પ્રકાર","unlink":"લિંક કાઢવી","upload":"અપલોડ"},"indent":{"indent":"ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી","outdent":"ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી"},"image":{"alt":"ઑલ્ટર્નટ ટેક્સ્ટ","border":"બોર્ડર","btnUpload":"આ સર્વરને મોકલવું","button2Img":"તમારે ઈમેજ બટનને સાદી ઈમેજમાં બદલવું છે.","hSpace":"સમસ્તરીય જગ્યા","img2Button":"તમારે સાદી ઈમેજને ઈમેજ બટનમાં બદલવું છે.","infoTab":"ચિત્ર ની જાણકારી","linkTab":"લિંક","lockRatio":"લૉક ગુણોત્તર","menu":"ચિત્રના ગુણ","resetSize":"રીસેટ સાઇઝ","title":"ચિત્રના ગુણ","titleButton":"ચિત્ર બટનના ગુણ","upload":"અપલોડ","urlMissing":"ઈમેજની મૂળ URL છે નહી.","vSpace":"લંબરૂપ જગ્યા","validateBorder":"બોર્ડેર આંકડો હોવો જોઈએ.","validateHSpace":"HSpaceઆંકડો હોવો જોઈએ.","validateVSpace":"VSpace આંકડો હોવો જોઈએ. "},"horizontalrule":{"toolbar":"સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી"},"format":{"label":"ફૉન્ટ ફૉર્મટ, રચનાની શૈલી","panelTitle":"ફૉન્ટ ફૉર્મટ, રચનાની શૈલી","tag_address":"સરનામું","tag_div":"શીર્ષક (DIV)","tag_h1":"શીર્ષક 1","tag_h2":"શીર્ષક 2","tag_h3":"શીર્ષક 3","tag_h4":"શીર્ષક 4","tag_h5":"શીર્ષક 5","tag_h6":"શીર્ષક 6","tag_p":"સામાન્ય","tag_pre":"ફૉર્મટેડ"},"fakeobjects":{"anchor":"અનકર","flash":"ફ્લેશ ","hiddenfield":"હિડન ","iframe":"IFrame","unknown":"અનનોન ઓબ્જેક્ટ"},"elementspath":{"eleLabel":"એલીમેન્ટ્સ નો ","eleTitle":"એલીમેન્ટ %1"},"contextmenu":{"options":"કોન્તેક્ષ્ત્ મેનુના વિકલ્પો"},"clipboard":{"copy":"નકલ","copyError":"તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।","cut":"કાપવું","cutError":"તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.","paste":"પેસ્ટ","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"બ્લૉક-કોટ, અવતરણચિહ્નો"},"basicstyles":{"bold":"બોલ્ડ/સ્પષ્ટ","italic":"ઇટેલિક, ત્રાંસા","strike":"છેકી નાખવું","subscript":"એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન","superscript":"એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.","underline":"અન્ડર્લાઇન, નીચે લીટી"},"about":{"copy":"કોપીરાઈટ © $1. ઓલ રાઈટ્સ ","dlgTitle":"CKEditor વિષે","help":"મદદ માટે $1 તપાસો","moreInfo":"લાયસનસની માહિતી માટે અમારી વેબ સાઈટ","title":"CKEditor વિષે","userGuide":"CKEditor યુઝર્સ ગાઈડ"},"editor":"રીચ ટેક્ષ્ત્ એડીટર","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"પ્રેસ ALT 0 મદદ માટ","browseServer":"સર્વર બ્રાઉઝ કરો","url":"URL","protocol":"પ્રોટોકૉલ","upload":"અપલોડ","uploadSubmit":"આ સર્વરને મોકલવું","image":"ચિત્ર","flash":"ફ્લૅશ","form":"ફૉર્મ/પત્રક","checkbox":"ચેક બોક્સ","radio":"રેડિઓ બટન","textField":"ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર","textarea":"ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર","hiddenField":"ગુપ્ત ક્ષેત્ર","button":"બટન","select":"પસંદગી ક્ષેત્ર","imageButton":"ચિત્ર બટન","notSet":"<સેટ નથી>","id":"Id","name":"નામ","langDir":"ભાષા લેખવાની પદ્ધતિ","langDirLtr":"ડાબે થી જમણે (LTR)","langDirRtl":"જમણે થી ડાબે (RTL)","langCode":"ભાષા કોડ","longDescr":"વધારે માહિતી માટે URL","cssClass":"સ્ટાઇલ-શીટ ક્લાસ","advisoryTitle":"મુખ્ય મથાળું","cssStyle":"સ્ટાઇલ","ok":"ઠીક છે","cancel":"રદ કરવું","close":"બંધ કરવું","preview":"જોવું","resize":"ખેંચી ને યોગ્ય કરવું","generalTab":"જનરલ","advancedTab":"અડ્વાન્સડ","validateNumberFailed":"આ રકમ આકડો નથી.","confirmNewPage":"સવે કાર્ય વગરનું ફકરો ખોવાઈ જશે. તમને ખાતરી છે કે તમને નવું પાનું ખોલવું છે?","confirmCancel":"ઘણા વિકલ્પો બદલાયા છે. તમારે આ બોક્ષ્ બંધ કરવું છે?","options":"વિકલ્પો","target":"લક્ષ્ય","targetNew":"નવી વિન્ડો (_blank)","targetTop":"ઉપરની વિન્ડો (_top)","targetSelf":"એજ વિન્ડો (_self)","targetParent":"પેરનટ વિન્ડો (_parent)","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","styles":"શૈલી","cssClasses":"શૈલી કલાસીસ","width":"પહોળાઈ","height":"ઊંચાઈ","align":"લાઇનદોરીમાં ગોઠવવું","alignLeft":"ડાબી બાજુ ગોઠવવું","alignRight":"જમણી","alignCenter":"મધ્ય સેન્ટર","alignJustify":"બ્લૉક, અંતરાય જસ્ટિફાઇ","alignTop":"ઉપર","alignMiddle":"વચ્ચે","alignBottom":"નીચે","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"ઉંચાઈ એક આંકડો હોવો જોઈએ.","invalidWidth":"પોહળ ઈ એક આંકડો હોવો જોઈએ.","invalidCssLength":"\"%1\" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.","invalidHtmlLength":"\"%1\" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા HTML measurement unit (px or %) વગર.","invalidInlineStyle":"ઈનલાઈન સ્ટાઈલ ની વેલ્યુ \"name : value\" ના ફોર્મેટ માં હોવી જોઈએ, વચ્ચે સેમી-કોલોન જોઈએ.","cssLengthTooltip":"પિક્ષ્લ્ નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.","unavailable":"%1<span class=\"cke_accessibility\">, નથી મળતું</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/he.js b/vendor/unisharp/laravel-ckeditor/lang/he.js deleted file mode 100644 index 1e52308c9..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['he']={"wsc":{"btnIgnore":"התעלמות","btnIgnoreAll":"התעלמות מהכל","btnReplace":"החלפה","btnReplaceAll":"החלפת הכל","btnUndo":"החזרה","changeTo":"שינוי ל","errorLoading":"שגיאה בהעלאת השירות: %s.","ieSpellDownload":"בודק האיות לא מותקן, האם להורידו?","manyChanges":"בדיקות איות הסתיימה: %1 מילים שונו","noChanges":"בדיקות איות הסתיימה: לא שונתה אף מילה","noMispell":"בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב","noSuggestions":"- אין הצעות -","notAvailable":"לא נמצא שירות זמין.","notInDic":"לא נמצא במילון","oneChange":"בדיקות איות הסתיימה: שונתה מילה אחת","progress":"בודק האיות בתהליך בדיקה....","title":"בדיקת איות","toolbar":"בדיקת איות"},"undo":{"redo":"חזרה על צעד אחרון","undo":"ביטול צעד אחרון"},"toolbar":{"toolbarCollapse":"מזעור סרגל כלים","toolbarExpand":"הרחבת סרגל כלים","toolbarGroups":{"document":"מסמך","clipboard":"לוח הגזירים (Clipboard)/צעד אחרון","editing":"עריכה","forms":"טפסים","basicstyles":"עיצוב בסיסי","paragraph":"פסקה","links":"קישורים","insert":"הכנסה","styles":"עיצוב","colors":"צבעים","tools":"כלים"},"toolbars":"סרגלי כלים של העורך"},"table":{"border":"גודל מסגרת","caption":"כיתוב","cell":{"menu":"מאפייני תא","insertBefore":"הוספת תא לפני","insertAfter":"הוספת תא אחרי","deleteCell":"מחיקת תאים","merge":"מיזוג תאים","mergeRight":"מזג ימינה","mergeDown":"מזג למטה","splitHorizontal":"פיצול תא אופקית","splitVertical":"פיצול תא אנכית","title":"תכונות התא","cellType":"סוג התא","rowSpan":"מתיחת השורות","colSpan":"מתיחת התאים","wordWrap":"מניעת גלישת שורות","hAlign":"יישור אופקי","vAlign":"יישור אנכי","alignBaseline":"שורת בסיס","bgColor":"צבע רקע","borderColor":"צבע מסגרת","data":"מידע","header":"כותרת","yes":"כן","no":"לא","invalidWidth":"שדה רוחב התא חייב להיות מספר.","invalidHeight":"שדה גובה התא חייב להיות מספר.","invalidRowSpan":"שדה מתיחת השורות חייב להיות מספר שלם.","invalidColSpan":"שדה מתיחת העמודות חייב להיות מספר שלם.","chooseColor":"בחר"},"cellPad":"ריפוד תא","cellSpace":"מרווח תא","column":{"menu":"עמודה","insertBefore":"הוספת עמודה לפני","insertAfter":"הוספת עמודה אחרי","deleteColumn":"מחיקת עמודות"},"columns":"עמודות","deleteTable":"מחק טבלה","headers":"כותרות","headersBoth":"שניהם","headersColumn":"עמודה ראשונה","headersNone":"אין","headersRow":"שורה ראשונה","invalidBorder":"שדה גודל המסגרת חייב להיות מספר.","invalidCellPadding":"שדה ריפוד התאים חייב להיות מספר חיובי.","invalidCellSpacing":"שדה ריווח התאים חייב להיות מספר חיובי.","invalidCols":"שדה מספר העמודות חייב להיות מספר גדול מ 0.","invalidHeight":"שדה גובה הטבלה חייב להיות מספר.","invalidRows":"שדה מספר השורות חייב להיות מספר גדול מ 0.","invalidWidth":"שדה רוחב הטבלה חייב להיות מספר.","menu":"מאפייני טבלה","row":{"menu":"שורה","insertBefore":"הוספת שורה לפני","insertAfter":"הוספת שורה אחרי","deleteRow":"מחיקת שורות"},"rows":"שורות","summary":"תקציר","title":"מאפייני טבלה","toolbar":"טבלה","widthPc":"אחוז","widthPx":"פיקסלים","widthUnit":"יחידת רוחב"},"stylescombo":{"label":"סגנון","panelTitle":"סגנונות פורמט","panelTitle1":"סגנונות בלוק","panelTitle2":"סגנונות רצף","panelTitle3":"סגנונות אובייקט"},"specialchar":{"options":"אפשרויות תווים מיוחדים","title":"בחירת תו מיוחד","toolbar":"הוספת תו מיוחד"},"sourcearea":{"toolbar":"מקור"},"scayt":{"btn_about":"אודות SCAYT","btn_dictionaries":"מילון","btn_disable":"בטל SCAYT","btn_enable":"אפשר SCAYT","btn_langs":"שפות","btn_options":"אפשרויות","text_title":"בדיקת איות בזמן כתיבה (SCAYT)"},"removeformat":{"toolbar":"הסרת העיצוב"},"pastetext":{"button":"הדבקה כטקסט פשוט","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?","error":"לא ניתן היה לנקות את המידע בשל תקלה פנימית.","title":"הדבקה מ-Word","toolbar":"הדבקה מ-Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"הגדלה למקסימום","minimize":"הקטנה למינימום"},"magicline":{"title":"הכנס פסקה כאן"},"list":{"bulletedlist":"רשימת נקודות","numberedlist":"רשימה ממוספרת"},"link":{"acccessKey":"מקש גישה","advanced":"אפשרויות מתקדמות","advisoryContentType":"Content Type מוצע","advisoryTitle":"כותרת מוצעת","anchor":{"toolbar":"הוספת/עריכת נקודת עיגון","menu":"מאפייני נקודת עיגון","title":"מאפייני נקודת עיגון","name":"שם לנקודת עיגון","errorName":"יש להקליד שם לנקודת עיגון","remove":"מחיקת נקודת עיגון"},"anchorId":"עפ\"י זיהוי (ID) האלמנט","anchorName":"עפ\"י שם העוגן","charset":"קידוד המשאב המקושר","cssClasses":"גיליונות עיצוב קבוצות","download":"Force Download","displayText":"Display Text","emailAddress":"כתובת הדוא\"ל","emailBody":"גוף ההודעה","emailSubject":"נושא ההודעה","id":"זיהוי (ID)","info":"מידע על הקישור","langCode":"קוד שפה","langDir":"כיוון שפה","langDirLTR":"שמאל לימין (LTR)","langDirRTL":"ימין לשמאל (RTL)","menu":"מאפייני קישור","name":"שם","noAnchors":"(אין עוגנים זמינים בדף)","noEmail":"יש להקליד את כתובת הדוא\"ל","noUrl":"יש להקליד את כתובת הקישור (URL)","other":"<אחר>","popupDependent":"תלוי (Netscape)","popupFeatures":"תכונות החלון הקופץ","popupFullScreen":"מסך מלא (IE)","popupLeft":"מיקום צד שמאל","popupLocationBar":"סרגל כתובת","popupMenuBar":"סרגל תפריט","popupResizable":"שינוי גודל","popupScrollBars":"ניתן לגלילה","popupStatusBar":"סרגל חיווי","popupToolbar":"סרגל הכלים","popupTop":"מיקום צד עליון","rel":"קשר גומלין","selectAnchor":"בחירת עוגן","styles":"סגנון","tabIndex":"מספר טאב","target":"מטרה","targetFrame":"<מסגרת>","targetFrameName":"שם מסגרת היעד","targetPopup":"<חלון קופץ>","targetPopupName":"שם החלון הקופץ","title":"קישור","toAnchor":"עוגן בעמוד זה","toEmail":"דוא\"ל","toUrl":"כתובת (URL)","toolbar":"הוספת/עריכת קישור","type":"סוג קישור","unlink":"הסרת הקישור","upload":"העלאה"},"indent":{"indent":"הגדלת הזחה","outdent":"הקטנת הזחה"},"image":{"alt":"טקסט חלופי","border":"מסגרת","btnUpload":"שליחה לשרת","button2Img":"האם להפוך את תמונת הכפתור לתמונה פשוטה?","hSpace":"מרווח אופקי","img2Button":"האם להפוך את התמונה לכפתור תמונה?","infoTab":"מידע על התמונה","linkTab":"קישור","lockRatio":"נעילת היחס","menu":"תכונות התמונה","resetSize":"איפוס הגודל","title":"מאפייני התמונה","titleButton":"מאפיני כפתור תמונה","upload":"העלאה","urlMissing":"כתובת התמונה חסרה.","vSpace":"מרווח אנכי","validateBorder":"שדה המסגרת חייב להיות מספר שלם.","validateHSpace":"שדה המרווח האופקי חייב להיות מספר שלם.","validateVSpace":"שדה המרווח האנכי חייב להיות מספר שלם."},"horizontalrule":{"toolbar":"הוספת קו אופקי"},"format":{"label":"עיצוב","panelTitle":"עיצוב","tag_address":"כתובת","tag_div":"נורמלי (DIV)","tag_h1":"כותרת","tag_h2":"כותרת 2","tag_h3":"כותרת 3","tag_h4":"כותרת 4","tag_h5":"כותרת 5","tag_h6":"כותרת 6","tag_p":"נורמלי","tag_pre":"קוד"},"fakeobjects":{"anchor":"עוגן","flash":"סרטון פלאש","hiddenfield":"שדה חבוי","iframe":"חלון פנימי (iframe)","unknown":"אובייקט לא ידוע"},"elementspath":{"eleLabel":"עץ האלמנטים","eleTitle":"%1 אלמנט"},"contextmenu":{"options":"אפשרויות תפריט ההקשר"},"clipboard":{"copy":"העתקה","copyError":"הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).","cut":"גזירה","cutError":"הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).","paste":"הדבקה","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"1% (סומן)"},"blockquote":{"toolbar":"בלוק ציטוט"},"basicstyles":{"bold":"מודגש","italic":"נטוי","strike":"כתיב מחוק","subscript":"כתיב תחתון","superscript":"כתיב עליון","underline":"קו תחתון"},"about":{"copy":"Copyright © $1. כל הזכויות שמורות.","dlgTitle":"אודות CKEditor","help":"היכנסו ל$1 לעזרה.","moreInfo":"למידע נוסף בקרו באתרנו:","title":"אודות CKEditor","userGuide":"מדריך המשתמש של CKEditor"},"editor":"עורך טקסט עשיר","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"לחץ אלט ALT + 0 לעזרה","browseServer":"סייר השרת","url":"כתובת (URL)","protocol":"פרוטוקול","upload":"העלאה","uploadSubmit":"שליחה לשרת","image":"תמונה","flash":"פלאש","form":"טופס","checkbox":"תיבת סימון","radio":"לחצן אפשרויות","textField":"שדה טקסט","textarea":"איזור טקסט","hiddenField":"שדה חבוי","button":"כפתור","select":"שדה בחירה","imageButton":"כפתור תמונה","notSet":"<לא נקבע>","id":"זיהוי (ID)","name":"שם","langDir":"כיוון שפה","langDirLtr":"שמאל לימין (LTR)","langDirRtl":"ימין לשמאל (RTL)","langCode":"קוד שפה","longDescr":"קישור לתיאור מפורט","cssClass":"מחלקת עיצוב (CSS Class)","advisoryTitle":"כותרת מוצעת","cssStyle":"סגנון","ok":"אישור","cancel":"ביטול","close":"סגירה","preview":"תצוגה מקדימה","resize":"יש לגרור בכדי לשנות את הגודל","generalTab":"כללי","advancedTab":"אפשרויות מתקדמות","validateNumberFailed":"הערך חייב להיות מספרי.","confirmNewPage":"כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?","confirmCancel":"חלק מהאפשרויות שונו, האם לסגור את הדיאלוג?","options":"אפשרויות","target":"מטרה","targetNew":"חלון חדש (_blank)","targetTop":"החלון העליון ביותר (_top)","targetSelf":"אותו חלון (_self)","targetParent":"חלון האב (_parent)","langDirLTR":"שמאל לימין (LTR)","langDirRTL":"ימין לשמאל (RTL)","styles":"סגנון","cssClasses":"מחלקות גליונות סגנון","width":"רוחב","height":"גובה","align":"יישור","alignLeft":"לשמאל","alignRight":"לימין","alignCenter":"מרכז","alignJustify":"יישור לשוליים","alignTop":"למעלה","alignMiddle":"לאמצע","alignBottom":"לתחתית","alignNone":"None","invalidValue":"ערך לא חוקי.","invalidHeight":"הגובה חייב להיות מספר.","invalidWidth":"הרוחב חייב להיות מספר.","invalidCssLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, או pc).","invalidHtmlLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של HTML (px או %).","invalidInlineStyle":"הערך שצויין לשדה הסגנון חייב להכיל זוג ערכים אחד או יותר בפורמט \"שם : ערך\", מופרדים על ידי נקודה-פסיק.","cssLengthTooltip":"יש להכניס מספר המייצג פיקסלים או מספר עם יחידת גליונות סגנון תקינה (px, %, in, cm, mm, em, ex, pt, או pc).","unavailable":"%1<span class=\"cke_accessibility\">, לא זמין</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"מחק","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/hi.js b/vendor/unisharp/laravel-ckeditor/lang/hi.js deleted file mode 100644 index 861173b5a..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/hi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['hi']={"wsc":{"btnIgnore":"इग्नोर","btnIgnoreAll":"सभी इग्नोर करें","btnReplace":"रिप्लेस","btnReplaceAll":"सभी रिप्लेस करें","btnUndo":"अन्डू","changeTo":"इसमें बदलें","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?","manyChanges":"वर्तनी की जाँच : %1 शब्द बदले गये","noChanges":"वर्तनी की जाँच :कोई शब्द नहीं बदला गया","noMispell":"वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई","noSuggestions":"- कोई सुझाव नहीं -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"शब्दकोश में नहीं","oneChange":"वर्तनी की जाँच : एक शब्द बदला गया","progress":"वर्तनी की जाँच (स्पॅल-चॅक) जारी है...","title":"Spell Checker","toolbar":"वर्तनी (स्पेलिंग) जाँच"},"undo":{"redo":"रीडू","undo":"अन्डू"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"एडिटर टूलबार"},"table":{"border":"बॉर्डर साइज़","caption":"शीर्षक","cell":{"menu":"खाना","insertBefore":"पहले सैल डालें","insertAfter":"बाद में सैल डालें","deleteCell":"सैल डिलीट करें","merge":"सैल मिलायें","mergeRight":"बाँया विलय","mergeDown":"नीचे विलय करें","splitHorizontal":"सैल को क्षैतिज स्थिति में विभाजित करें","splitVertical":"सैल को लम्बाकार में विभाजित करें","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"सैल पैडिंग","cellSpace":"सैल अंतर","column":{"menu":"कालम","insertBefore":"पहले कालम डालें","insertAfter":"बाद में कालम डालें","deleteColumn":"कालम डिलीट करें"},"columns":"कालम","deleteTable":"टेबल डिलीट करें","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"टेबल प्रॉपर्टीज़","row":{"menu":"पंक्ति","insertBefore":"पहले पंक्ति डालें","insertAfter":"बाद में पंक्ति डालें","deleteRow":"पंक्तियाँ डिलीट करें"},"rows":"पंक्तियाँ","summary":"सारांश","title":"टेबल प्रॉपर्टीज़","toolbar":"टेबल","widthPc":"प्रतिशत","widthPx":"पिक्सैल","widthUnit":"width unit"},"stylescombo":{"label":"स्टाइल","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"विशेष चरित्र विकल्प","title":"विशेष करॅक्टर चुनें","toolbar":"विशेष करॅक्टर इन्सर्ट करें"},"sourcearea":{"toolbar":"सोर्स"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"फ़ॉर्मैट हटायें"},"pastetext":{"button":"पेस्ट (सादा टॅक्स्ट)","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"पेस्ट (वर्ड से)","toolbar":"पेस्ट (वर्ड से)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"मेक्सिमाईज़","minimize":"मिनिमाईज़"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"बुलॅट सूची","numberedlist":"अंकीय सूची"},"link":{"acccessKey":"ऍक्सॅस की","advanced":"ऍड्वान्स्ड","advisoryContentType":"परामर्श कन्टॅन्ट प्रकार","advisoryTitle":"परामर्श शीर्शक","anchor":{"toolbar":"ऐंकर इन्सर्ट/संपादन","menu":"ऐंकर प्रॉपर्टीज़","title":"ऐंकर प्रॉपर्टीज़","name":"ऐंकर का नाम","errorName":"ऐंकर का नाम टाइप करें","remove":"Remove Anchor"},"anchorId":"ऍलीमॅन्ट Id से","anchorName":"ऐंकर नाम से","charset":"लिंक रिसोर्स करॅक्टर सॅट","cssClasses":"स्टाइल-शीट क्लास","download":"Force Download","displayText":"Display Text","emailAddress":"ई-मेल पता","emailBody":"संदेश","emailSubject":"संदेश विषय","id":"Id","info":"लिंक ","langCode":"भाषा लिखने की दिशा","langDir":"भाषा लिखने की दिशा","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","menu":"लिंक संपादन","name":"नाम","noAnchors":"(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)","noEmail":"ई-मेल पता टाइप करें","noUrl":"लिंक URL टाइप करें","other":"<अन्य>","popupDependent":"डिपेन्डॅन्ट (Netscape)","popupFeatures":"पॉप-अप विन्डो फ़ीचर्स","popupFullScreen":"फ़ुल स्क्रीन (IE)","popupLeft":"बायीं तरफ","popupLocationBar":"लोकेशन बार","popupMenuBar":"मॅन्यू बार","popupResizable":"आकार बदलने लायक","popupScrollBars":"स्क्रॉल बार","popupStatusBar":"स्टेटस बार","popupToolbar":"टूल बार","popupTop":"दायीं तरफ","rel":"संबंध","selectAnchor":"ऐंकर चुनें","styles":"स्टाइल","tabIndex":"टैब इन्डॅक्स","target":"टार्गेट","targetFrame":"<फ़्रेम>","targetFrameName":"टार्गेट फ़्रेम का नाम","targetPopup":"<पॉप-अप विन्डो>","targetPopupName":"पॉप-अप विन्डो का नाम","title":"लिंक","toAnchor":"इस पेज का ऐंकर","toEmail":"ई-मेल","toUrl":"URL","toolbar":"लिंक इन्सर्ट/संपादन","type":"लिंक प्रकार","unlink":"लिंक हटायें","upload":"अपलोड"},"indent":{"indent":"इन्डॅन्ट बढ़ायें","outdent":"इन्डॅन्ट कम करें"},"image":{"alt":"वैकल्पिक टेक्स्ट","border":"बॉर्डर","btnUpload":"इसे सर्वर को भेजें","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"हॉरिज़ॉन्टल स्पेस","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"तस्वीर की जानकारी","linkTab":"लिंक","lockRatio":"लॉक अनुपात","menu":"तस्वीर प्रॉपर्टीज़","resetSize":"रीसॅट साइज़","title":"तस्वीर प्रॉपर्टीज़","titleButton":"तस्वीर बटन प्रॉपर्टीज़","upload":"अपलोड","urlMissing":"Image source URL is missing.","vSpace":"वर्टिकल स्पेस","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"हॉरिज़ॉन्टल रेखा इन्सर्ट करें"},"format":{"label":"फ़ॉर्मैट","panelTitle":"फ़ॉर्मैट","tag_address":"पता","tag_div":"शीर्षक (DIV)","tag_h1":"शीर्षक 1","tag_h2":"शीर्षक 2","tag_h3":"शीर्षक 3","tag_h4":"शीर्षक 4","tag_h5":"शीर्षक 5","tag_h6":"शीर्षक 6","tag_p":"साधारण","tag_pre":"फ़ॉर्मैटॅड"},"fakeobjects":{"anchor":"ऐंकर इन्सर्ट/संपादन","flash":"Flash Animation","hiddenfield":"गुप्त फ़ील्ड","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"कॉपी","copyError":"आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।","cut":"कट","cutError":"आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।","paste":"पेस्ट","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"ब्लॉक-कोट"},"basicstyles":{"bold":"बोल्ड","italic":"इटैलिक","strike":"स्ट्राइक थ्रू","subscript":"अधोलेख","superscript":"अभिलेख","underline":"रेखांकण"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"रिच टेक्स्ट एडिटर","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"मदद के लिये ALT 0 दबाए","browseServer":"सर्वर ब्राउज़ करें","url":"URL","protocol":"प्रोटोकॉल","upload":"अपलोड","uploadSubmit":"इसे सर्वर को भेजें","image":"तस्वीर","flash":"फ़्लैश","form":"फ़ॉर्म","checkbox":"चॅक बॉक्स","radio":"रेडिओ बटन","textField":"टेक्स्ट फ़ील्ड","textarea":"टेक्स्ट एरिया","hiddenField":"गुप्त फ़ील्ड","button":"बटन","select":"चुनाव फ़ील्ड","imageButton":"तस्वीर बटन","notSet":"<सॅट नहीं>","id":"Id","name":"नाम","langDir":"भाषा लिखने की दिशा","langDirLtr":"बायें से दायें (LTR)","langDirRtl":"दायें से बायें (RTL)","langCode":"भाषा कोड","longDescr":"अधिक विवरण के लिए URL","cssClass":"स्टाइल-शीट क्लास","advisoryTitle":"परामर्श शीर्शक","cssStyle":"स्टाइल","ok":"ठीक है","cancel":"रद्द करें","close":"Close","preview":"प्रीव्यू","resize":"Resize","generalTab":"सामान्य","advancedTab":"ऍड्वान्स्ड","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"टार्गेट","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","styles":"स्टाइल","cssClasses":"स्टाइल-शीट क्लास","width":"चौड़ाई","height":"ऊँचाई","align":"ऍलाइन","alignLeft":"दायें","alignRight":"दायें","alignCenter":"बीच में","alignJustify":"ब्लॉक जस्टीफ़ाई","alignTop":"ऊपर","alignMiddle":"मध्य","alignBottom":"नीचे","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/hr.js b/vendor/unisharp/laravel-ckeditor/lang/hr.js deleted file mode 100644 index 1ee63d24b..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['hr']={"wsc":{"btnIgnore":"Zanemari","btnIgnoreAll":"Zanemari sve","btnReplace":"Zamijeni","btnReplaceAll":"Zamijeni sve","btnUndo":"Vrati","changeTo":"Promijeni u","errorLoading":"Greška učitavanja aplikacije: %s.","ieSpellDownload":"Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?","manyChanges":"Provjera završena: Promijenjeno %1 riječi","noChanges":"Provjera završena: Nije napravljena promjena","noMispell":"Provjera završena: Nema grešaka","noSuggestions":"-Nema preporuke-","notAvailable":"Žao nam je, ali usluga trenutno nije dostupna.","notInDic":"Nije u rječniku","oneChange":"Provjera završena: Jedna riječ promjenjena","progress":"Provjera u tijeku...","title":"Provjera pravopisa","toolbar":"Provjeri pravopis"},"undo":{"redo":"Ponovi","undo":"Poništi"},"toolbar":{"toolbarCollapse":"Smanji alatnu traku","toolbarExpand":"Proširi alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"Međuspremnik/Poništi","editing":"Uređivanje","forms":"Forme","basicstyles":"Osnovni stilovi","paragraph":"Paragraf","links":"Veze","insert":"Umetni","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"Alatne trake uređivača teksta"},"table":{"border":"Veličina okvira","caption":"Naslov","cell":{"menu":"Ćelija","insertBefore":"Ubaci ćeliju prije","insertAfter":"Ubaci ćeliju poslije","deleteCell":"Izbriši ćelije","merge":"Spoji ćelije","mergeRight":"Spoji desno","mergeDown":"Spoji dolje","splitHorizontal":"Podijeli ćeliju vodoravno","splitVertical":"Podijeli ćeliju okomito","title":"Svojstva ćelije","cellType":"Vrsta ćelije","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Prelazak u novi red","hAlign":"Vodoravno poravnanje","vAlign":"Okomito poravnanje","alignBaseline":"Osnovna linija","bgColor":"Boja pozadine","borderColor":"Boja ruba","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"Ne","invalidWidth":"Širina ćelije mora biti broj.","invalidHeight":"Visina ćelije mora biti broj.","invalidRowSpan":"Rows span mora biti cijeli broj.","invalidColSpan":"Columns span mora biti cijeli broj.","chooseColor":"Odaberi"},"cellPad":"Razmak ćelija","cellSpace":"Prostornost ćelija","column":{"menu":"Kolona","insertBefore":"Ubaci kolonu prije","insertAfter":"Ubaci kolonu poslije","deleteColumn":"Izbriši kolone"},"columns":"Kolona","deleteTable":"Izbriši tablicu","headers":"Zaglavlje","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"Ništa","headersRow":"Prvi red","invalidBorder":"Debljina ruba mora biti broj.","invalidCellPadding":"Razmak ćelija mora biti broj.","invalidCellSpacing":"Prostornost ćelija mora biti broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tablice mora biti broj.","invalidRows":"Broj redova mora biti broj veći od 0.","invalidWidth":"Širina tablice mora biti broj.","menu":"Svojstva tablice","row":{"menu":"Red","insertBefore":"Ubaci red prije","insertAfter":"Ubaci red poslije","deleteRow":"Izbriši redove"},"rows":"Redova","summary":"Sažetak","title":"Svojstva tablice","toolbar":"Tablica","widthPc":"postotaka","widthPx":"piksela","widthUnit":"jedinica širine"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Block stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Object stilovi"},"specialchar":{"options":"Opcije specijalnih znakova","title":"Odaberite posebni karakter","toolbar":"Ubaci posebni znak"},"sourcearea":{"toolbar":"Kôd"},"scayt":{"btn_about":"O SCAYT","btn_dictionaries":"Rječnici","btn_disable":"Onemogući SCAYT","btn_enable":"Omogući SCAYT","btn_langs":"Jezici","btn_options":"Opcije","text_title":"Provjeri pravopis tijekom tipkanja (SCAYT)"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalijepi kao čisti tekst","pasteNotification":"Vaš preglednik Vam ne dozvoljava lijepljenje običnog teksta na ovaj način. Za lijepljenje, pritisnite %1."},"pastefromword":{"confirmCleanup":"Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?","error":"Nije moguće očistiti podatke za ljepljenje zbog interne greške","title":"Zalijepi iz Worda","toolbar":"Zalijepi iz Worda"},"notification":{"closed":"Obavijest zatvorena."},"maximize":{"maximize":"Povećaj","minimize":"Smanji"},"magicline":{"title":"Ubaci paragraf ovdje"},"list":{"bulletedlist":"Obična lista","numberedlist":"Brojčana lista"},"link":{"acccessKey":"Pristupna tipka","advanced":"Napredno","advisoryContentType":"Savjetodavna vrsta sadržaja","advisoryTitle":"Savjetodavni naslov","anchor":{"toolbar":"Ubaci/promijeni sidro","menu":"Svojstva sidra","title":"Svojstva sidra","name":"Ime sidra","errorName":"Molimo unesite ime sidra","remove":"Ukloni sidro"},"anchorId":"Po Id elementa","anchorName":"Po nazivu sidra","charset":"Kodna stranica povezanih resursa","cssClasses":"Stylesheet klase","download":"Preuzmi na silu","displayText":"Prikaži tekst","emailAddress":"E-Mail adresa","emailBody":"Sadržaj poruke","emailSubject":"Naslov","id":"Id","info":"Link Info","langCode":"Smjer jezika","langDir":"Smjer jezika","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","menu":"Promijeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra)","noEmail":"Molimo upišite e-mail adresu","noUrl":"Molimo upišite URL link","other":"<drugi>","popupDependent":"Ovisno (Netscape)","popupFeatures":"Mogućnosti popup prozora","popupFullScreen":"Cijeli ekran (IE)","popupLeft":"Lijeva pozicija","popupLocationBar":"Traka za lokaciju","popupMenuBar":"Izborna traka","popupResizable":"Promjenjiva veličina","popupScrollBars":"Scroll traka","popupStatusBar":"Statusna traka","popupToolbar":"Traka s alatima","popupTop":"Gornja pozicija","rel":"Veza","selectAnchor":"Odaberi sidro","styles":"Stil","tabIndex":"Tab Indeks","target":"Meta","targetFrame":"<okvir>","targetFrameName":"Ime ciljnog okvira","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Veza","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Ubaci/promijeni vezu","type":"Vrsta veze","unlink":"Ukloni vezu","upload":"Pošalji"},"indent":{"indent":"Pomakni udesno","outdent":"Pomakni ulijevo"},"image":{"alt":"Alternativni tekst","border":"Okvir","btnUpload":"Pošalji na server","button2Img":"Želite li promijeniti odabrani gumb u jednostavnu sliku?","hSpace":"HSpace","img2Button":"Želite li promijeniti odabranu sliku u gumb?","infoTab":"Info slike","linkTab":"Veza","lockRatio":"Zaključaj odnos","menu":"Svojstva slika","resetSize":"Obriši veličinu","title":"Svojstva slika","titleButton":"Image Button svojstva","upload":"Pošalji","urlMissing":"Nedostaje URL slike.","vSpace":"VSpace","validateBorder":"Okvir mora biti cijeli broj.","validateHSpace":"HSpace mora biti cijeli broj","validateVSpace":"VSpace mora biti cijeli broj."},"horizontalrule":{"toolbar":"Ubaci vodoravnu liniju"},"format":{"label":"Format","panelTitle":"Format paragrafa","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normalno","tag_pre":"Formatirano"},"fakeobjects":{"anchor":"Sidro","flash":"Flash animacija","hiddenfield":"Sakriveno polje","iframe":"IFrame","unknown":"Nepoznati objekt"},"elementspath":{"eleLabel":"Putanje elemenata","eleTitle":"%1 element"},"contextmenu":{"options":"Opcije izbornika"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"Vaš preglednik Vam ne dozvoljava lijepljenje na ovaj način. Za lijepljenje, pritisnite %1."},"button":{"selectedLabel":"%1 (Odabrano)"},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Podebljano","italic":"Ukošeno","strike":"Precrtano","subscript":"Subscript","superscript":"Superscript","underline":"Potcrtano"},"about":{"copy":"Autorsko pravo © $1. Sva prava pridržana.","dlgTitle":"O CKEditoru","help":"Provjeri $1 za pomoć.","moreInfo":"Za informacije o licencama posjetite našu web stranicu:","title":"O CKEditoru","userGuide":"Vodič za CKEditor korisnike"},"editor":"Bogati uređivač teksta, %1","editorPanel":"Ploča Bogatog Uređivača Teksta","common":{"editorHelp":"Pritisni ALT 0 za pomoć","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"Pošalji","uploadSubmit":"Pošalji na server","image":"Slika","flash":"Flash","form":"Forma","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smjer jezika","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Kôd jezika","longDescr":"Dugački opis URL","cssClass":"Klase stilova","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Poništi","close":"Zatvori","preview":"Pregledaj","resize":"Povuci za promjenu veličine","generalTab":"Općenito","advancedTab":"Napredno","validateNumberFailed":"Ova vrijednost nije broj.","confirmNewPage":"Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?","confirmCancel":"Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?","options":"Opcije","target":"Odredište","targetNew":"Novi prozor (_blank)","targetTop":"Vršni prozor (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Roditeljski prozor (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase stilova","width":"Širina","height":"Visina","align":"Poravnanje","alignLeft":"Lijevo","alignRight":"Desno","alignCenter":"Središnje","alignJustify":"Blok poravnanje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dolje","alignNone":"Bez poravnanja","invalidValue":"Neispravna vrijednost.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Širina mora biti broj.","invalidCssLength":"Vrijednost određena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).","invalidHtmlLength":"Vrijednost određena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih HTML mjernih jedinica (px ili %).","invalidInlineStyle":"Vrijednost za linijski stil mora sadržavati jednu ili više definicija s formatom \"naziv:vrijednost\", odvojenih točka-zarezom.","cssLengthTooltip":"Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupno</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Prečica na tipkovnici"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/hu.js b/vendor/unisharp/laravel-ckeditor/lang/hu.js deleted file mode 100644 index cc8869c8b..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['hu']={"wsc":{"btnIgnore":"Kihagyja","btnIgnoreAll":"Mindet kihagyja","btnReplace":"Csere","btnReplaceAll":"Összes cseréje","btnUndo":"Visszavonás","changeTo":"Módosítás","errorLoading":"Hiba a szolgáltatás host betöltése közben: %s.","ieSpellDownload":"A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?","manyChanges":"Helyesírás-ellenőrzés kész: %1 szó cserélve","noChanges":"Helyesírás-ellenőrzés kész: Nincs változtatott szó","noMispell":"Helyesírás-ellenőrzés kész: Nem találtam hibát","noSuggestions":"Nincs javaslat","notAvailable":"Sajnálom, de a szolgáltatás jelenleg nem elérhető.","notInDic":"Nincs a szótárban","oneChange":"Helyesírás-ellenőrzés kész: Egy szó cserélve","progress":"Helyesírás-ellenőrzés folyamatban...","title":"Helyesírás ellenörző","toolbar":"Helyesírás-ellenőrzés"},"undo":{"redo":"Ismétlés","undo":"Visszavonás"},"toolbar":{"toolbarCollapse":"Eszköztár összecsukása","toolbarExpand":"Eszköztár szétnyitása","toolbarGroups":{"document":"Dokumentum","clipboard":"Vágólap/Visszavonás","editing":"Szerkesztés","forms":"Űrlapok","basicstyles":"Alapstílusok","paragraph":"Bekezdés","links":"Hivatkozások","insert":"Beszúrás","styles":"Stílusok","colors":"Színek","tools":"Eszközök"},"toolbars":"Szerkesztő Eszköztár"},"table":{"border":"Szegélyméret","caption":"Felirat","cell":{"menu":"Cella","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteCell":"Cellák törlése","merge":"Cellák egyesítése","mergeRight":"Cellák egyesítése jobbra","mergeDown":"Cellák egyesítése lefelé","splitHorizontal":"Cellák szétválasztása vízszintesen","splitVertical":"Cellák szétválasztása függőlegesen","title":"Cella tulajdonságai","cellType":"Cella típusa","rowSpan":"Függőleges egyesítés","colSpan":"Vízszintes egyesítés","wordWrap":"Hosszú sorok törése","hAlign":"Vízszintes igazítás","vAlign":"Függőleges igazítás","alignBaseline":"Alapvonalra","bgColor":"Háttér színe","borderColor":"Keret színe","data":"Adat","header":"Fejléc","yes":"Igen","no":"Nem","invalidWidth":"A szélesség mezőbe csak számokat írhat.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidRowSpan":"A függőleges egyesítés mezőbe csak számokat írhat.","invalidColSpan":"A vízszintes egyesítés mezőbe csak számokat írhat.","chooseColor":"Válasszon"},"cellPad":"Cella belső margó","cellSpace":"Cella térköz","column":{"menu":"Oszlop","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteColumn":"Oszlopok törlése"},"columns":"Oszlopok","deleteTable":"Táblázat törlése","headers":"Fejlécek","headersBoth":"Mindkettő","headersColumn":"Első oszlop","headersNone":"Nincsenek","headersRow":"Első sor","invalidBorder":"A szegélyméret mezőbe csak számokat írhat.","invalidCellPadding":"A cella belső margó mezőbe csak számokat írhat.","invalidCellSpacing":"A cella térköz mezőbe csak számokat írhat.","invalidCols":"Az oszlopok számának nagyobbnak kell lenni mint 0.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidRows":"A sorok számának nagyobbnak kell lenni mint 0.","invalidWidth":"A szélesség mezőbe csak számokat írhat.","menu":"Táblázat tulajdonságai","row":{"menu":"Sor","insertBefore":"Beszúrás fölé","insertAfter":"Beszúrás alá","deleteRow":"Sorok törlése"},"rows":"Sorok","summary":"Leírás","title":"Táblázat tulajdonságai","toolbar":"Táblázat","widthPc":"százalék","widthPx":"képpont","widthUnit":"Szélesség egység"},"stylescombo":{"label":"Stílus","panelTitle":"Formázási stílusok","panelTitle1":"Blokk stílusok","panelTitle2":"Inline stílusok","panelTitle3":"Objektum stílusok"},"specialchar":{"options":"Speciális karakter opciók","title":"Speciális karakter választása","toolbar":"Speciális karakter beillesztése"},"sourcearea":{"toolbar":"Forráskód"},"scayt":{"btn_about":"SCAYT névjegy","btn_dictionaries":"Szótár","btn_disable":"SCAYT letiltása","btn_enable":"SCAYT engedélyezése","btn_langs":"Nyelvek","btn_options":"Beállítások","text_title":"Helyesírás ellenőrzés gépelés közben"},"removeformat":{"toolbar":"Formázás eltávolítása"},"pastetext":{"button":"Beillesztés formázatlan szövegként","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Úgy tűnik a beillesztett szöveget Word-ből másolt át. Meg szeretné tisztítani a szöveget? (ajánlott)","error":"Egy belső hiba miatt nem sikerült megtisztítani a szöveget","title":"Beillesztés Word-ből","toolbar":"Beillesztés Word-ből"},"notification":{"closed":"Értesítés bezárva."},"maximize":{"maximize":"Teljes méret","minimize":"Kis méret"},"magicline":{"title":"Szúrja be a bekezdést ide"},"list":{"bulletedlist":"Felsorolás","numberedlist":"Számozás"},"link":{"acccessKey":"Billentyűkombináció","advanced":"További opciók","advisoryContentType":"Súgó tartalomtípusa","advisoryTitle":"Súgócimke","anchor":{"toolbar":"Horgony beillesztése/szerkesztése","menu":"Horgony tulajdonságai","title":"Horgony tulajdonságai","name":"Horgony neve","errorName":"Kérem adja meg a horgony nevét","remove":"Horgony eltávolítása"},"anchorId":"Azonosító szerint","anchorName":"Horgony név szerint","charset":"Hivatkozott tartalom kódlapja","cssClasses":"Stíluskészlet","download":"Kötelező letöltés","displayText":"Megjelenített szöveg","emailAddress":"E-Mail cím","emailBody":"Üzenet","emailSubject":"Üzenet tárgya","id":"Id","info":"Alaptulajdonságok","langCode":"Írás iránya","langDir":"Írás iránya","langDirLTR":"Balról jobbra","langDirRTL":"Jobbról balra","menu":"Hivatkozás módosítása","name":"Név","noAnchors":"(Nincs horgony a dokumentumban)","noEmail":"Adja meg az E-Mail címet","noUrl":"Adja meg a hivatkozás webcímét","other":"<más>","popupDependent":"Szülőhöz kapcsolt (csak Netscape)","popupFeatures":"Felugró ablak jellemzői","popupFullScreen":"Teljes képernyő (csak IE)","popupLeft":"Bal pozíció","popupLocationBar":"Címsor","popupMenuBar":"Menü sor","popupResizable":"Átméretezés","popupScrollBars":"Gördítősáv","popupStatusBar":"Állapotsor","popupToolbar":"Eszköztár","popupTop":"Felső pozíció","rel":"Kapcsolat típusa","selectAnchor":"Horgony választása","styles":"Stílus","tabIndex":"Tabulátor index","target":"Tartalom megjelenítése","targetFrame":"<keretben>","targetFrameName":"Keret neve","targetPopup":"<felugró ablakban>","targetPopupName":"Felugró ablak neve","title":"Hivatkozás tulajdonságai","toAnchor":"Horgony az oldalon","toEmail":"E-Mail","toUrl":"URL","toolbar":"Hivatkozás beillesztése/módosítása","type":"Hivatkozás típusa","unlink":"Hivatkozás törlése","upload":"Feltöltés"},"indent":{"indent":"Behúzás növelése","outdent":"Behúzás csökkentése"},"image":{"alt":"Alternatív szöveg","border":"Keret","btnUpload":"Küldés a szerverre","button2Img":"A kiválasztott képgombból sima képet szeretne csinálni?","hSpace":"Vízsz. táv","img2Button":"A kiválasztott képből képgombot szeretne csinálni?","infoTab":"Alaptulajdonságok","linkTab":"Hivatkozás","lockRatio":"Arány megtartása","menu":"Kép tulajdonságai","resetSize":"Eredeti méret","title":"Kép tulajdonságai","titleButton":"Képgomb tulajdonságai","upload":"Feltöltés","urlMissing":"Hiányzik a kép URL-je","vSpace":"Függ. táv","validateBorder":"A keret méretének egész számot kell beírni!","validateHSpace":"Vízszintes távolságnak egész számot kell beírni!","validateVSpace":"Függőleges távolságnak egész számot kell beírni!"},"horizontalrule":{"toolbar":"Elválasztóvonal beillesztése"},"format":{"label":"Formátum","panelTitle":"Formátum","tag_address":"Címsor","tag_div":"Bekezdés (DIV)","tag_h1":"Fejléc 1","tag_h2":"Fejléc 2","tag_h3":"Fejléc 3","tag_h4":"Fejléc 4","tag_h5":"Fejléc 5","tag_h6":"Fejléc 6","tag_p":"Normál","tag_pre":"Formázott"},"fakeobjects":{"anchor":"Horgony","flash":"Flash animáció","hiddenfield":"Rejtett mezõ","iframe":"IFrame","unknown":"Ismeretlen objektum"},"elementspath":{"eleLabel":"Elem utak","eleTitle":"%1 elem"},"contextmenu":{"options":"Helyi menü opciók"},"clipboard":{"copy":"Másolás","copyError":"A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","cut":"Kivágás","cutError":"A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","paste":"Beillesztés","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Kiválasztva)"},"blockquote":{"toolbar":"Idézet blokk"},"basicstyles":{"bold":"Félkövér","italic":"Dőlt","strike":"Áthúzott","subscript":"Alsó index","superscript":"Felső index","underline":"Aláhúzott"},"about":{"copy":"Copyright © $1. Minden jog fenntartva.","dlgTitle":"CKEditor névjegy","help":"Itt találsz segítséget: $1","moreInfo":"Licenszelési információkért kérjük látogassa meg weboldalunkat:","title":"CKEditor névjegy","userGuide":"CKEditor Felhasználói útmutató"},"editor":"HTML szerkesztő","editorPanel":"Rich Text szerkesztő panel","common":{"editorHelp":"Segítségért nyomjon ALT 0","browseServer":"Böngészés a szerveren","url":"Hivatkozás","protocol":"Protokoll","upload":"Feltöltés","uploadSubmit":"Küldés a szerverre","image":"Kép","flash":"Flash","form":"Űrlap","checkbox":"Jelölőnégyzet","radio":"Választógomb","textField":"Szövegmező","textarea":"Szövegterület","hiddenField":"Rejtettmező","button":"Gomb","select":"Legördülő lista","imageButton":"Képgomb","notSet":"<nincs beállítva>","id":"Azonosító","name":"Név","langDir":"Írás iránya","langDirLtr":"Balról jobbra","langDirRtl":"Jobbról balra","langCode":"Nyelv kódja","longDescr":"Részletes leírás webcíme","cssClass":"Stíluskészlet","advisoryTitle":"Súgócimke","cssStyle":"Stílus","ok":"Rendben","cancel":"Mégsem","close":"Bezárás","preview":"Előnézet","resize":"Húzza az átméretezéshez","generalTab":"Általános","advancedTab":"További opciók","validateNumberFailed":"A mezőbe csak számokat írhat.","confirmNewPage":"Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?","confirmCancel":"Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?","options":"Beállítások","target":"Cél","targetNew":"Új ablak (_blank)","targetTop":"Legfelső ablak (_top)","targetSelf":"Aktuális ablakban (_self)","targetParent":"Szülő ablak (_parent)","langDirLTR":"Balról jobbra (LTR)","langDirRTL":"Jobbról balra (RTL)","styles":"Stílus","cssClasses":"Stíluslap osztály","width":"Szélesség","height":"Magasság","align":"Igazítás","alignLeft":"Bal","alignRight":"Jobbra","alignCenter":"Középre","alignJustify":"Sorkizárt","alignTop":"Tetejére","alignMiddle":"Középre","alignBottom":"Aljára","alignNone":"Semmi","invalidValue":"Érvénytelen érték.","invalidHeight":"A magasság mezőbe csak számokat írhat.","invalidWidth":"A szélesség mezőbe csak számokat írhat.","invalidCssLength":"\"%1\"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).","invalidHtmlLength":"\"%1\"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes HTML egységgel megjelölve(px vagy %).","invalidInlineStyle":"Az inline stílusnak megadott értéknek tartalmaznia kell egy vagy több rekordot a \"name : value\" formátumban, pontosvesszővel elválasztva.","cssLengthTooltip":"Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).","unavailable":"%1<span class=\"cke_accessibility\">, nem elérhető</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Gyorsbillentyű"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/id.js b/vendor/unisharp/laravel-ckeditor/lang/id.js deleted file mode 100644 index 8e9578aa6..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['id']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Kembali lakukan","undo":"Batalkan perlakuan"},"toolbar":{"toolbarCollapse":"Ciutkan Toolbar","toolbarExpand":"Bentangkan Toolbar","toolbarGroups":{"document":"Dokumen","clipboard":"Papan klip / Kembalikan perlakuan","editing":"Sunting","forms":"Formulir","basicstyles":"Gaya Dasar","paragraph":"Paragraf","links":"Tautan","insert":"Sisip","styles":"Gaya","colors":"Warna","tools":"Alat"},"toolbars":"Toolbar Penyunting"},"table":{"border":"Ukuran batas","caption":"Judul halaman","cell":{"menu":"Sel","insertBefore":"Sisip Sel Sebelum","insertAfter":"Sisip Sel Setelah","deleteCell":"Hapus Sel","merge":"Gabungkan Sel","mergeRight":"Gabungkan ke Kanan","mergeDown":"Gabungkan ke Bawah","splitHorizontal":"Pisahkan Sel Secara Horisontal","splitVertical":"Pisahkan Sel Secara Vertikal","title":"Properti Sel","cellType":"Tipe Sel","rowSpan":"Rentang antar baris","colSpan":"Rentang antar kolom","wordWrap":"Word Wrap","hAlign":"Jajaran Horisontal","vAlign":"Jajaran Vertikal","alignBaseline":"Dasar","bgColor":"Warna Latar Belakang","borderColor":"Warna Batasan","data":"Data","header":"Header","yes":"Ya","no":"Tidak","invalidWidth":"Lebar sel harus sebuah angka.","invalidHeight":"Tinggi sel harus sebuah angka","invalidRowSpan":"Rentang antar baris harus angka seluruhnya.","invalidColSpan":"Rentang antar kolom harus angka seluruhnya","chooseColor":"Pilih"},"cellPad":"Sel spasi dalam","cellSpace":"Spasi antar sel","column":{"menu":"Kolom","insertBefore":"Sisip Kolom Sebelum","insertAfter":"Sisip Kolom Sesudah","deleteColumn":"Hapus Kolom"},"columns":"Kolom","deleteTable":"Hapus Tabel","headers":"Headers","headersBoth":"Keduanya","headersColumn":"Kolom pertama","headersNone":"Tidak ada","headersRow":"Baris Pertama","invalidBorder":"Ukuran batasan harus sebuah angka","invalidCellPadding":"'Spasi dalam' sel harus angka positif.","invalidCellSpacing":"Spasi antar sel harus angka positif.","invalidCols":"Jumlah kolom harus sebuah angka lebih besar dari 0","invalidHeight":"Tinggi tabel harus sebuah angka.","invalidRows":"Jumlah barus harus sebuah angka dan lebih besar dari 0.","invalidWidth":"Lebar tabel harus sebuah angka.","menu":"Properti Tabel","row":{"menu":"Baris","insertBefore":"Sisip Baris Sebelum","insertAfter":"Sisip Baris Sesudah","deleteRow":"Hapus Baris"},"rows":"Baris","summary":"Intisari","title":"Properti Tabel","toolbar":"Tabe","widthPc":"persen","widthPx":"piksel","widthUnit":"lebar satuan"},"stylescombo":{"label":"Gaya","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Opsi spesial karakter","title":"Pilih spesial karakter","toolbar":"Sisipkan spesial karakter"},"sourcearea":{"toolbar":"Sumber"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Hapus Format"},"pastetext":{"button":"Tempel sebagai teks polos","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?","error":"Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal","title":"Tempel dari Word","toolbar":"Tempel dari Word"},"notification":{"closed":"Pemberitahuan ditutup"},"maximize":{"maximize":"Memperbesar","minimize":"Memperkecil"},"magicline":{"title":"Masukkan paragraf disini"},"list":{"bulletedlist":"Sisip/Hapus Daftar Bullet","numberedlist":"Sisip/Hapus Daftar Bernomor"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Penasehat Judul","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Kelas Stylesheet","download":"Force Download","displayText":"Display Text","emailAddress":"Alamat E-mail","emailBody":"Message Body","emailSubject":"Judul Pesan","id":"Id","info":"Link Info","langCode":"Kode Bahasa","langDir":"Arah Bahasa","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","menu":"Sunting Tautan","name":"Nama","noAnchors":"(No anchors available in the document)","noEmail":"Silahkan ketikkan alamat e-mail","noUrl":"Silahkan ketik URL tautan","other":"<lainnya>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Hubungan","selectAnchor":"Select an Anchor","styles":"Gaya","tabIndex":"Tab Index","target":"Sasaran","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Tautan","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Tautan","type":"Link Type","unlink":"Unlink","upload":"Unggah"},"indent":{"indent":"Tingkatkan Lekuk","outdent":"Kurangi Lekuk"},"image":{"alt":"Teks alternatif","border":"Batas","btnUpload":"Kirim ke Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Apakah anda ingin mengubah gambar yang dipilih pada tombol gambar?","infoTab":"Info Gambar","linkTab":"Tautan","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Atur Ulang Ukuran","title":"Image Properties","titleButton":"Image Button Properties","upload":"Unggah","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border harus berupa angka","validateHSpace":"HSpace harus berupa angka","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Sisip Garis Horisontal"},"format":{"label":"Bentuk","panelTitle":"Bentuk Paragraf","tag_address":"Alamat","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Membentuk"},"fakeobjects":{"anchor":"Anchor","flash":"Animasi Flash","hiddenfield":"Kolom Tersembunyi","iframe":"IFrame","unknown":"Obyek Tak Dikenal"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Opsi Konteks Pilihan"},"clipboard":{"copy":"Salin","copyError":"Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)","cut":"Potong","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Tempel","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1(Dipilih)"},"blockquote":{"toolbar":"Kutipan Blok"},"basicstyles":{"bold":"Huruf Tebal","italic":"Huruf Miring","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Garis Bawah"},"about":{"copy":"Hak cipta © $1. All rights reserved.","dlgTitle":"Tentang CKEditor","help":"Cel $1 untuk bantuan.","moreInfo":"Untuk informasi lisensi silahkan kunjungi web site kami:","title":"Tentang CKEditor","userGuide":"Petunjuk Pengguna CKEditor"},"editor":"Rich Text Editor","editorPanel":"Panel Rich Text Editor","common":{"editorHelp":"Tekan ALT 0 untuk bantuan.","browseServer":"Jelajah Server","url":"URL","protocol":"Protokol","upload":"Unggah","uploadSubmit":"Kirim ke Server","image":"Gambar","flash":"Flash","form":"Formulir","checkbox":"Kotak Cek","radio":"Tombol Radio","textField":"Kolom Teks","textarea":"Area Teks","hiddenField":"Kolom Tersembunyi","button":"Tombol","select":"Kolom Seleksi","imageButton":"Tombol Gambar","notSet":"<tidak diatur>","id":"Id","name":"Nama","langDir":"Arah Bahasa","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri","langCode":"Kode Bahasa","longDescr":"Deskripsi URL Panjang","cssClass":"Kelas Stylesheet","advisoryTitle":"Penasehat Judul","cssStyle":"Gaya","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Pratinjau","resize":"Ubah ukuran","generalTab":"Umum","advancedTab":"Lebih Lanjut","validateNumberFailed":"Nilai ini tidak sebuah angka","confirmNewPage":"Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?","confirmCancel":"Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?","options":"Opsi","target":"Sasaran","targetNew":"Jendela Baru (_blank)","targetTop":"Laman Atas (_top)","targetSelf":"Jendela yang Sama (_self)","targetParent":"Jendela Induk (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Gaya","cssClasses":"Kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Penjajaran","alignLeft":"Kiri","alignRight":"Kanan","alignCenter":"Tengah","alignJustify":"Rata kiri-kanan","alignTop":"Atas","alignMiddle":"Tengah","alignBottom":"Bawah","alignNone":"Tidak ada","invalidValue":"Nilai tidak sah.","invalidHeight":"Tinggi harus sebuah angka.","invalidWidth":"Lebar harus sebuah angka.","invalidCssLength":"Nilai untuk \"%1\" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Nilai yang dispesifikasian untuk kolom \"%1\" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.","invalidInlineStyle":"Nilai pada inline style merupakan pasangan nama dan nilai dengan format \"nama : nilai\", yang dipisahkan dengan titik dua.","cssLengthTooltip":"Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, tidak tersedia</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spasi","35":"End","36":"Home","46":"Hapus","224":"Command"},"keyboardShortcut":"Pintasan Keyboard"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/is.js b/vendor/unisharp/laravel-ckeditor/lang/is.js deleted file mode 100644 index 239f6044d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/is.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['is']={"wsc":{"btnIgnore":"Hunsa","btnIgnoreAll":"Hunsa allt","btnReplace":"Skipta","btnReplaceAll":"Skipta öllu","btnUndo":"Til baka","changeTo":"Tillaga","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Villuleit ekki sett upp.<br>Viltu setja hana upp?","manyChanges":"Villuleit lokið: %1 orðum breytt","noChanges":"Villuleit lokið: Engu orði breytt","noMispell":"Villuleit lokið: Engin villa fannst","noSuggestions":"- engar tillögur -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Ekki í orðabókinni","oneChange":"Villuleit lokið: Einu orði breytt","progress":"Villuleit í gangi...","title":"Spell Checker","toolbar":"Villuleit"},"undo":{"redo":"Hætta við afturköllun","undo":"Afturkalla"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Breidd ramma","caption":"Titill","cell":{"menu":"Reitur","insertBefore":"Skjóta inn reiti fyrir aftan","insertAfter":"Skjóta inn reiti fyrir framan","deleteCell":"Fella reit","merge":"Sameina reiti","mergeRight":"Sameina til hægri","mergeDown":"Sameina niður á við","splitHorizontal":"Kljúfa reit lárétt","splitVertical":"Kljúfa reit lóðrétt","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Reitaspássía","cellSpace":"Bil milli reita","column":{"menu":"Dálkur","insertBefore":"Skjóta inn dálki vinstra megin","insertAfter":"Skjóta inn dálki hægra megin","deleteColumn":"Fella dálk"},"columns":"Dálkar","deleteTable":"Fella töflu","headers":"Fyrirsagnir","headersBoth":"Hvort tveggja","headersColumn":"Fyrsti dálkur","headersNone":"Engar","headersRow":"Fyrsta röð","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Eigindi töflu","row":{"menu":"Röð","insertBefore":"Skjóta inn röð fyrir ofan","insertAfter":"Skjóta inn röð fyrir neðan","deleteRow":"Eyða röð"},"rows":"Raðir","summary":"Áfram","title":"Eigindi töflu","toolbar":"Tafla","widthPc":"prósent","widthPx":"myndeindir","widthUnit":"width unit"},"stylescombo":{"label":"Stílflokkur","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Velja tákn","toolbar":"Setja inn merki"},"sourcearea":{"toolbar":"Kóði"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Fjarlægja snið"},"pastetext":{"button":"Líma sem ósniðinn texta","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Líma úr Word","toolbar":"Líma úr Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktalisti","numberedlist":"Númeraður listi"},"link":{"acccessKey":"Skammvalshnappur","advanced":"Tæknilegt","advisoryContentType":"Tegund innihalds","advisoryTitle":"Titill","anchor":{"toolbar":"Stofna/breyta kaflamerki","menu":"Eigindi kaflamerkis","title":"Eigindi kaflamerkis","name":"Nafn bókamerkis","errorName":"Sláðu inn nafn bókamerkis!","remove":"Remove Anchor"},"anchorId":"Eftir auðkenni einingar","anchorName":"Eftir akkerisnafni","charset":"Táknróf","cssClasses":"Stílsniðsflokkur","download":"Force Download","displayText":"Display Text","emailAddress":"Netfang","emailBody":"Meginmál","emailSubject":"Efni","id":"Auðkenni","info":"Almennt","langCode":"Lesstefna","langDir":"Lesstefna","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","menu":"Breyta stiklu","name":"Nafn","noAnchors":"<Engin bókamerki á skrá>","noEmail":"Sláðu inn netfang!","noUrl":"Sláðu inn veffang stiklunnar!","other":"<annar>","popupDependent":"Háð venslum (Netscape)","popupFeatures":"Eigindi sprettiglugga","popupFullScreen":"Heilskjár (IE)","popupLeft":"Fjarlægð frá vinstri","popupLocationBar":"Fanglína","popupMenuBar":"Vallína","popupResizable":"Resizable","popupScrollBars":"Skrunstikur","popupStatusBar":"Stöðustika","popupToolbar":"Verkfærastika","popupTop":"Fjarlægð frá efri brún","rel":"Relationship","selectAnchor":"Veldu akkeri","styles":"Stíll","tabIndex":"Raðnúmer innsláttarreits","target":"Mark","targetFrame":"<rammi>","targetFrameName":"Nafn markglugga","targetPopup":"<sprettigluggi>","targetPopupName":"Nafn sprettiglugga","title":"Stikla","toAnchor":"Bókamerki á þessari síðu","toEmail":"Netfang","toUrl":"Vefslóð","toolbar":"Stofna/breyta stiklu","type":"Stikluflokkur","unlink":"Fjarlægja stiklu","upload":"Senda upp"},"indent":{"indent":"Minnka inndrátt","outdent":"Auka inndrátt"},"image":{"alt":"Baklægur texti","border":"Rammi","btnUpload":"Hlaða upp","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Vinstri bil","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Almennt","linkTab":"Stikla","lockRatio":"Festa stærðarhlutfall","menu":"Eigindi myndar","resetSize":"Reikna stærð","title":"Eigindi myndar","titleButton":"Eigindi myndahnapps","upload":"Hlaða upp","urlMissing":"Image source URL is missing.","vSpace":"Hægri bil","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Lóðrétt lína"},"format":{"label":"Stílsnið","panelTitle":"Stílsnið","tag_address":"Vistfang","tag_div":"Venjulegt (DIV)","tag_h1":"Fyrirsögn 1","tag_h2":"Fyrirsögn 2","tag_h3":"Fyrirsögn 3","tag_h4":"Fyrirsögn 4","tag_h5":"Fyrirsögn 5","tag_h6":"Fyrirsögn 6","tag_p":"Venjulegt letur","tag_pre":"Forsniðið"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Afrita","copyError":"Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).","cut":"Klippa","cutError":"Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).","paste":"Líma","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Inndráttur"},"basicstyles":{"bold":"Feitletrað","italic":"Skáletrað","strike":"Yfirstrikað","subscript":"Niðurskrifað","superscript":"Uppskrifað","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Fletta í skjalasafni","url":"Vefslóð","protocol":"Samskiptastaðall","upload":"Senda upp","uploadSubmit":"Hlaða upp","image":"Setja inn mynd","flash":"Flash","form":"Setja inn innsláttarform","checkbox":"Setja inn hökunarreit","radio":"Setja inn valhnapp","textField":"Setja inn textareit","textarea":"Setja inn textasvæði","hiddenField":"Setja inn falið svæði","button":"Setja inn hnapp","select":"Setja inn lista","imageButton":"Setja inn myndahnapp","notSet":"<ekkert valið>","id":"Auðkenni","name":"Nafn","langDir":"Lesstefna","langDirLtr":"Frá vinstri til hægri (LTR)","langDirRtl":"Frá hægri til vinstri (RTL)","langCode":"Tungumálakóði","longDescr":"Nánari lýsing","cssClass":"Stílsniðsflokkur","advisoryTitle":"Titill","cssStyle":"Stíll","ok":"Í lagi","cancel":"Hætta við","close":"Close","preview":"Forskoða","resize":"Resize","generalTab":"Almennt","advancedTab":"Tæknilegt","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Mark","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","styles":"Stíll","cssClasses":"Stílsniðsflokkur","width":"Breidd","height":"Hæð","align":"Jöfnun","alignLeft":"Vinstri","alignRight":"Hægri","alignCenter":"Miðjað","alignJustify":"Jafna báðum megin","alignTop":"Efst","alignMiddle":"Miðjuð","alignBottom":"Neðst","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/it.js b/vendor/unisharp/laravel-ckeditor/lang/it.js deleted file mode 100644 index d915d91ef..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['it']={"wsc":{"btnIgnore":"Ignora","btnIgnoreAll":"Ignora tutto","btnReplace":"Cambia","btnReplaceAll":"Cambia tutto","btnUndo":"Annulla","changeTo":"Cambia in","errorLoading":"Errore nel caricamento dell'host col servizio applicativo: %s.","ieSpellDownload":"Contollo ortografico non installato. Lo vuoi scaricare ora?","manyChanges":"Controllo ortografico completato: %1 parole cambiate","noChanges":"Controllo ortografico completato: nessuna parola cambiata","noMispell":"Controllo ortografico completato: nessun errore trovato","noSuggestions":"- Nessun suggerimento -","notAvailable":"Il servizio non è momentaneamente disponibile.","notInDic":"Non nel dizionario","oneChange":"Controllo ortografico completato: 1 parola cambiata","progress":"Controllo ortografico in corso","title":"Controllo ortografico","toolbar":"Correttore ortografico"},"undo":{"redo":"Ripristina","undo":"Annulla"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"table":{"border":"Dimensione bordo","caption":"Intestazione","cell":{"menu":"Cella","insertBefore":"Inserisci Cella Prima","insertAfter":"Inserisci Cella Dopo","deleteCell":"Elimina celle","merge":"Unisce celle","mergeRight":"Unisci a Destra","mergeDown":"Unisci in Basso","splitHorizontal":"Dividi Cella Orizzontalmente","splitVertical":"Dividi Cella Verticalmente","title":"Proprietà della cella","cellType":"Tipo di cella","rowSpan":"Su più righe","colSpan":"Su più colonne","wordWrap":"Ritorno a capo","hAlign":"Allineamento orizzontale","vAlign":"Allineamento verticale","alignBaseline":"Linea Base","bgColor":"Colore di Sfondo","borderColor":"Colore del Bordo","data":"Dati","header":"Intestazione","yes":"Si","no":"No","invalidWidth":"La larghezza della cella dev'essere un numero.","invalidHeight":"L'altezza della cella dev'essere un numero.","invalidRowSpan":"Il numero di righe dev'essere un numero intero.","invalidColSpan":"Il numero di colonne dev'essere un numero intero.","chooseColor":"Scegli"},"cellPad":"Padding celle","cellSpace":"Spaziatura celle","column":{"menu":"Colonna","insertBefore":"Inserisci Colonna Prima","insertAfter":"Inserisci Colonna Dopo","deleteColumn":"Elimina colonne"},"columns":"Colonne","deleteTable":"Cancella Tabella","headers":"Intestazione","headersBoth":"Entrambe","headersColumn":"Prima Colonna","headersNone":"Nessuna","headersRow":"Prima Riga","invalidBorder":"La dimensione del bordo dev'essere un numero.","invalidCellPadding":"Il paging delle celle dev'essere un numero","invalidCellSpacing":"La spaziatura tra le celle dev'essere un numero.","invalidCols":"Il numero di colonne dev'essere un numero maggiore di 0.","invalidHeight":"L'altezza della tabella dev'essere un numero.","invalidRows":"Il numero di righe dev'essere un numero maggiore di 0.","invalidWidth":"La larghezza della tabella dev'essere un numero.","menu":"Proprietà tabella","row":{"menu":"Riga","insertBefore":"Inserisci Riga Prima","insertAfter":"Inserisci Riga Dopo","deleteRow":"Elimina righe"},"rows":"Righe","summary":"Indice","title":"Proprietà tabella","toolbar":"Tabella","widthPc":"percento","widthPx":"pixel","widthUnit":"unità larghezza"},"stylescombo":{"label":"Stili","panelTitle":"Stili di formattazione","panelTitle1":"Stili per blocchi","panelTitle2":"Stili in linea","panelTitle3":"Stili per oggetti"},"specialchar":{"options":"Opzioni carattere speciale","title":"Seleziona carattere speciale","toolbar":"Inserisci carattere speciale"},"sourcearea":{"toolbar":"Sorgente"},"scayt":{"btn_about":"About COMS","btn_dictionaries":"Dizionari","btn_disable":"Disabilita COMS","btn_enable":"Abilita COMS","btn_langs":"Lingue","btn_options":"Opzioni","text_title":"Controllo Ortografico Mentre Scrivi"},"removeformat":{"toolbar":"Elimina formattazione"},"pastetext":{"button":"Incolla come testo semplice","pasteNotification":"Il browser non permette di incollare il testo semplice in questo modo. Premere %1 per incollare."},"pastefromword":{"confirmCleanup":"Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?","error":"Non è stato possibile eliminare il testo incollato a causa di un errore interno.","title":"Incolla da Word","toolbar":"Incolla da Word"},"notification":{"closed":"Notifica chiusa."},"maximize":{"maximize":"Massimizza","minimize":"Minimizza"},"magicline":{"title":"Inserisci paragrafo qui"},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"link":{"acccessKey":"Scorciatoia da tastiera","advanced":"Avanzate","advisoryContentType":"Tipo della risorsa collegata","advisoryTitle":"Titolo","anchor":{"toolbar":"Inserisci/Modifica Ancora","menu":"Proprietà ancora","title":"Proprietà ancora","name":"Nome ancora","errorName":"Inserici il nome dell'ancora","remove":"Rimuovi l'ancora"},"anchorId":"Per id elemento","anchorName":"Per Nome","charset":"Set di caretteri della risorsa collegata","cssClasses":"Nome classe CSS","download":"Forza scaricamento","displayText":"Mostra testo","emailAddress":"Indirizzo E-Mail","emailBody":"Corpo del messaggio","emailSubject":"Oggetto del messaggio","id":"Id","info":"Informazioni collegamento","langCode":"Direzione scrittura","langDir":"Direzione scrittura","langDirLTR":"Da Sinistra a Destra (LTR)","langDirRTL":"Da Destra a Sinistra (RTL)","menu":"Modifica collegamento","name":"Nome","noAnchors":"(Nessuna ancora disponibile nel documento)","noEmail":"Devi inserire un'indirizzo e-mail","noUrl":"Devi inserire l'URL del collegamento","other":"<altro>","popupDependent":"Dipendente (Netscape)","popupFeatures":"Caratteristiche finestra popup","popupFullScreen":"A tutto schermo (IE)","popupLeft":"Posizione da sinistra","popupLocationBar":"Barra degli indirizzi","popupMenuBar":"Barra del menu","popupResizable":"Ridimensionabile","popupScrollBars":"Barre di scorrimento","popupStatusBar":"Barra di stato","popupToolbar":"Barra degli strumenti","popupTop":"Posizione dall'alto","rel":"Relazioni","selectAnchor":"Scegli Ancora","styles":"Stile","tabIndex":"Ordine di tabulazione","target":"Destinazione","targetFrame":"<riquadro>","targetFrameName":"Nome del riquadro di destinazione","targetPopup":"<finestra popup>","targetPopupName":"Nome finestra popup","title":"Collegamento","toAnchor":"Ancora nel testo","toEmail":"E-Mail","toUrl":"URL","toolbar":"Collegamento","type":"Tipo di Collegamento","unlink":"Elimina collegamento","upload":"Carica"},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"image":{"alt":"Testo alternativo","border":"Bordo","btnUpload":"Invia al server","button2Img":"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?","hSpace":"HSpace","img2Button":"Vuoi trasferomare l'immagine selezionata in un bottone immagine?","infoTab":"Informazioni immagine","linkTab":"Collegamento","lockRatio":"Blocca rapporto","menu":"Proprietà immagine","resetSize":"Reimposta dimensione","title":"Proprietà immagine","titleButton":"Proprietà bottone immagine","upload":"Carica","urlMissing":"Manca l'URL dell'immagine.","vSpace":"VSpace","validateBorder":"Il campo Bordo deve essere un numero intero.","validateHSpace":"Il campo HSpace deve essere un numero intero.","validateVSpace":"Il campo VSpace deve essere un numero intero."},"horizontalrule":{"toolbar":"Inserisci riga orizzontale"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Indirizzo","tag_div":"Paragrafo (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normale","tag_pre":"Formattato"},"fakeobjects":{"anchor":"Ancora","flash":"Animazione Flash","hiddenfield":"Campo Nascosto","iframe":"IFrame","unknown":"Oggetto sconosciuto"},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opzioni del menù contestuale"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteNotification":"Il browser non permette di incollare in questo modo. Premere %1 per incollare."},"button":{"selectedLabel":"%1 (selezionato)"},"blockquote":{"toolbar":"Citazione"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"about":{"copy":"Copyright © $1. Tutti i diritti riservati.","dlgTitle":"Riguardo CKEditor","help":"Vedi $1 per l'aiuto.","moreInfo":"Per le informazioni sulla licenza si prega di visitare il nostro sito:","title":"Riguardo CKEditor","userGuide":"Guida Utente CKEditor"},"editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","flash":"Oggetto Flash","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?","options":"Opzioni","target":"Destinazione","targetNew":"Nuova finestra (_blank)","targetTop":"Finestra in primo piano (_top)","targetSelf":"Stessa finestra (_self)","targetParent":"Finestra Padre (_parent)","langDirLTR":"Da sinistra a destra (LTR)","langDirRTL":"Da destra a sinistra (RTL)","styles":"Stile","cssClasses":"Classi di stile","width":"Larghezza","height":"Altezza","align":"Allineamento","alignLeft":"Sinistra","alignRight":"Destra","alignCenter":"Centrato","alignJustify":"Giustifica","alignTop":"In Alto","alignMiddle":"Centrato","alignBottom":"In Basso","alignNone":"Nessuno","invalidValue":"Valore non valido.","invalidHeight":"L'altezza dev'essere un numero","invalidWidth":"La Larghezza dev'essere un numero","invalidCssLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).","invalidInlineStyle":"Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di \"name : value\", separati da semicolonne.","cssLengthTooltip":"Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, non disponibile</span>","keyboard":{"8":"Backspace","13":"Invio","16":"Maiusc","17":"Ctrl","18":"Alt","32":"Spazio","35":"Fine","36":"Inizio","46":"Canc","224":"Comando"},"keyboardShortcut":"Scorciatoia da tastiera"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ja.js b/vendor/unisharp/laravel-ckeditor/lang/ja.js deleted file mode 100644 index 4fdc30625..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ja']={"wsc":{"btnIgnore":"無視","btnIgnoreAll":"すべて無視","btnReplace":"置換","btnReplaceAll":"すべて置換","btnUndo":"やり直し","changeTo":"変更","errorLoading":"アプリケーションサービスホスト読込みエラー: %s.","ieSpellDownload":"スペルチェッカーがインストールされていません。今すぐダウンロードしますか?","manyChanges":"スペルチェック完了: %1 語句変更されました","noChanges":"スペルチェック完了: 語句は変更されませんでした","noMispell":"スペルチェック完了: スペルの誤りはありませんでした","noSuggestions":"- 該当なし -","notAvailable":"申し訳ありません、現在サービスを利用することができません","notInDic":"辞書にありません","oneChange":"スペルチェック完了: 1語句変更されました","progress":"スペルチェック処理中...","title":"スペルチェック","toolbar":"スペルチェック"},"undo":{"redo":"やり直す","undo":"元に戻す"},"toolbar":{"toolbarCollapse":"ツールバーを閉じる","toolbarExpand":"ツールバーを開く","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"編集ツールバー"},"table":{"border":"枠線の幅","caption":"キャプション","cell":{"menu":"セル","insertBefore":"セルを前に挿入","insertAfter":"セルを後に挿入","deleteCell":"セルを削除","merge":"セルを結合","mergeRight":"右に結合","mergeDown":"下に結合","splitHorizontal":"セルを水平方向に分割","splitVertical":"セルを垂直方向に分割","title":"セルのプロパティ","cellType":"セルの種類","rowSpan":"行の結合数","colSpan":"列の結合数","wordWrap":"単語の折り返し","hAlign":"水平方向の配置","vAlign":"垂直方向の配置","alignBaseline":"ベースライン","bgColor":"背景色","borderColor":"ボーダーカラー","data":"テーブルデータ (td)","header":"ヘッダ","yes":"はい","no":"いいえ","invalidWidth":"セル幅は数値で入力してください。","invalidHeight":"セル高さは数値で入力してください。","invalidRowSpan":"縦幅(行数)は数値で入力してください。","invalidColSpan":"横幅(列数)は数値で入力してください。","chooseColor":"色の選択"},"cellPad":"セル内間隔","cellSpace":"セル内余白","column":{"menu":"列","insertBefore":"列を左に挿入","insertAfter":"列を右に挿入","deleteColumn":"列を削除"},"columns":"列数","deleteTable":"表を削除","headers":"ヘッダ (th)","headersBoth":"両方","headersColumn":"最初の列のみ","headersNone":"なし","headersRow":"最初の行のみ","invalidBorder":"枠線の幅は数値で入力してください。","invalidCellPadding":"セル内余白は数値で入力してください。","invalidCellSpacing":"セル間余白は数値で入力してください。","invalidCols":"列数は0より大きな数値を入力してください。","invalidHeight":"高さは数値で入力してください。","invalidRows":"行数は0より大きな数値を入力してください。","invalidWidth":"幅は数値で入力してください。","menu":"表のプロパティ","row":{"menu":"行","insertBefore":"行を上に挿入","insertAfter":"行を下に挿入","deleteRow":"行を削除"},"rows":"行数","summary":"表の概要","title":"表のプロパティ","toolbar":"表","widthPc":"パーセント","widthPx":"ピクセル","widthUnit":"幅の単位"},"stylescombo":{"label":"スタイル","panelTitle":"スタイル","panelTitle1":"ブロックスタイル","panelTitle2":"インラインスタイル","panelTitle3":"オブジェクトスタイル"},"specialchar":{"options":"特殊文字オプション","title":"特殊文字の選択","toolbar":"特殊文字を挿入"},"sourcearea":{"toolbar":"ソース"},"scayt":{"btn_about":"SCAYTバージョン","btn_dictionaries":"辞書","btn_disable":"SCAYT無効","btn_enable":"SCAYT有効","btn_langs":"言語","btn_options":"オプション","text_title":"スペルチェック設定(SCAYT)"},"removeformat":{"toolbar":"書式を解除"},"pastetext":{"button":"プレーンテキストとして貼り付け","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"貼り付けを行うテキストはワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか?","error":"内部エラーにより貼り付けたデータをクリアできませんでした","title":"ワード文章から貼り付け","toolbar":"ワード文章から貼り付け"},"notification":{"closed":"通知を閉じました。"},"maximize":{"maximize":"最大化","minimize":"最小化"},"magicline":{"title":"ここに段落を挿入"},"list":{"bulletedlist":"番号無しリスト","numberedlist":"番号付きリスト"},"link":{"acccessKey":"アクセスキー","advanced":"高度な設定","advisoryContentType":"Content Type属性","advisoryTitle":"Title属性","anchor":{"toolbar":"アンカー挿入/編集","menu":"アンカーの編集","title":"アンカーのプロパティ","name":"アンカー名","errorName":"アンカー名を入力してください。","remove":"アンカーを削除"},"anchorId":"エレメントID","anchorName":"アンカー名","charset":"リンク先のcharset","cssClasses":"スタイルシートクラス","download":"強制的にダウンロード","displayText":"表示文字","emailAddress":"E-Mail アドレス","emailBody":"本文","emailSubject":"件名","id":"Id","info":"ハイパーリンク情報","langCode":"言語コード","langDir":"文字表記の方向","langDirLTR":"左から右 (LTR)","langDirRTL":"右から左 (RTL)","menu":"リンクを編集","name":"Name属性","noAnchors":"(このドキュメント内にアンカーはありません)","noEmail":"メールアドレスを入力してください。","noUrl":"リンクURLを入力してください。","other":"<その他の>","popupDependent":"開いたウィンドウに連動して閉じる (Netscape)","popupFeatures":"ポップアップウィンドウ特徴","popupFullScreen":"全画面モード(IE)","popupLeft":"左端からの座標で指定","popupLocationBar":"ロケーションバー","popupMenuBar":"メニューバー","popupResizable":"サイズ可変","popupScrollBars":"スクロールバー","popupStatusBar":"ステータスバー","popupToolbar":"ツールバー","popupTop":"上端からの座標で指定","rel":"関連リンク","selectAnchor":"アンカーを選択","styles":"スタイルシート","tabIndex":"タブインデックス","target":"ターゲット","targetFrame":"<フレーム>","targetFrameName":"ターゲットのフレーム名","targetPopup":"<ポップアップウィンドウ>","targetPopupName":"ポップアップウィンドウ名","title":"ハイパーリンク","toAnchor":"ページ内のアンカー","toEmail":"E-Mail","toUrl":"URL","toolbar":"リンク挿入/編集","type":"リンクタイプ","unlink":"リンクを削除","upload":"アップロード"},"indent":{"indent":"インデント","outdent":"インデント解除"},"image":{"alt":"代替テキスト","border":"枠線の幅","btnUpload":"サーバーに送信","button2Img":"選択した画像ボタンを画像に変換しますか?","hSpace":"水平間隔","img2Button":"選択した画像を画像ボタンに変換しますか?","infoTab":"画像情報","linkTab":"リンク","lockRatio":"比率を固定","menu":"画像のプロパティ","resetSize":"サイズをリセット","title":"画像のプロパティ","titleButton":"画像ボタンのプロパティ","upload":"アップロード","urlMissing":"画像のURLを入力してください。","vSpace":"垂直間隔","validateBorder":"枠線の幅は数値で入力してください。","validateHSpace":"水平間隔は数値で入力してください。","validateVSpace":"垂直間隔は数値で入力してください。"},"horizontalrule":{"toolbar":"水平線"},"format":{"label":"書式","panelTitle":"段落の書式","tag_address":"アドレス","tag_div":"標準 (DIV)","tag_h1":"見出し 1","tag_h2":"見出し 2","tag_h3":"見出し 3","tag_h4":"見出し 4","tag_h5":"見出し 5","tag_h6":"見出し 6","tag_p":"標準","tag_pre":"書式付き"},"fakeobjects":{"anchor":"アンカー","flash":"Flash Animation","hiddenfield":"不可視フィールド","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"要素パス","eleTitle":"%1 要素"},"contextmenu":{"options":"コンテキストメニューオプション"},"clipboard":{"copy":"コピー","copyError":"ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。","cut":"切り取り","cutError":"ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。","paste":"貼り付け","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (選択中)"},"blockquote":{"toolbar":"ブロック引用文"},"basicstyles":{"bold":"太字","italic":"斜体","strike":"打ち消し線","subscript":"下付き","superscript":"上付き","underline":"下線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"CKEditorについて","help":"$1 のヘルプを見てください。","moreInfo":"ライセンス情報の詳細はウェブサイトにて確認してください:","title":"CKEditorについて","userGuide":"CKEditor User's Guide"},"editor":"リッチテキストエディタ","editorPanel":"リッチテキストエディタパネル","common":{"editorHelp":"ヘルプは ALT 0 を押してください","browseServer":"サーバブラウザ","url":"URL","protocol":"プロトコル","upload":"アップロード","uploadSubmit":"サーバーに送信","image":"イメージ","flash":"Flash","form":"フォーム","checkbox":"チェックボックス","radio":"ラジオボタン","textField":"1行テキスト","textarea":"テキストエリア","hiddenField":"不可視フィールド","button":"ボタン","select":"選択フィールド","imageButton":"画像ボタン","notSet":"<なし>","id":"Id","name":"Name属性","langDir":"文字表記の方向","langDirLtr":"左から右 (LTR)","langDirRtl":"右から左 (RTL)","langCode":"言語コード","longDescr":"longdesc属性(長文説明)","cssClass":"スタイルシートクラス","advisoryTitle":"Title属性","cssStyle":"スタイルシート","ok":"OK","cancel":"キャンセル","close":"閉じる","preview":"プレビュー","resize":"ドラッグしてリサイズ","generalTab":"全般","advancedTab":"高度な設定","validateNumberFailed":"値が数値ではありません","confirmNewPage":"変更内容を保存せず、 新しいページを開いてもよろしいでしょうか?","confirmCancel":"オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか?","options":"オプション","target":"ターゲット","targetNew":"新しいウインドウ (_blank)","targetTop":"最上部ウィンドウ (_top)","targetSelf":"同じウィンドウ (_self)","targetParent":"親ウィンドウ (_parent)","langDirLTR":"左から右 (LTR)","langDirRTL":"右から左 (RTL)","styles":"スタイル","cssClasses":"スタイルシートクラス","width":"幅","height":"高さ","align":"行揃え","alignLeft":"左","alignRight":"右","alignCenter":"中央","alignJustify":"両端揃え","alignTop":"上","alignMiddle":"中央","alignBottom":"下","alignNone":"なし","invalidValue":"不正な値です。","invalidHeight":"高さは数値で入力してください。","invalidWidth":"幅は数値で入力してください。","invalidCssLength":"入力された \"%1\" 項目の値は、CSSの大きさ(px, %, in, cm, mm, em, ex, pt, または pc)が正しいものである/ないに関わらず、正の値である必要があります。","invalidHtmlLength":"入力された \"%1\" 項目の値は、HTMLの大きさ(px または %)が正しいものである/ないに関わらず、正の値である必要があります。","invalidInlineStyle":"入力されたインラインスタイルの値は、\"名前 : 値\" のフォーマットのセットで、複数の場合はセミコロンで区切られている形式である必要があります。","cssLengthTooltip":"ピクセル数もしくはCSSにセットできる数値を入力してください。(px,%,in,cm,mm,em,ex,pt,or pc)","unavailable":"%1<span class=\"cke_accessibility\">, 利用不可能</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"キーボードショートカット"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ka.js b/vendor/unisharp/laravel-ckeditor/lang/ka.js deleted file mode 100644 index f0608677f..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ka.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ka']={"wsc":{"btnIgnore":"უგულებელყოფა","btnIgnoreAll":"ყველას უგულებელყოფა","btnReplace":"შეცვლა","btnReplaceAll":"ყველას შეცვლა","btnUndo":"გაუქმება","changeTo":"შეცვლელი","errorLoading":"სერვისის გამოძახების შეცდომა: %s.","ieSpellDownload":"მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?","manyChanges":"მართლწერის შემოწმება: %1 სიტყვა შეიცვალა","noChanges":"მართლწერის შემოწმება: არაფერი შეცვლილა","noMispell":"მართლწერის შემოწმება: შეცდომა არ მოიძებნა","noSuggestions":"- არაა შემოთავაზება -","notAvailable":"უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.","notInDic":"არაა ლექსიკონში","oneChange":"მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა","progress":"მიმდინარეობს მართლწერის შემოწმება...","title":"მართლწერა","toolbar":"მართლწერა"},"undo":{"redo":"გამეორება","undo":"გაუქმება"},"toolbar":{"toolbarCollapse":"ხელსაწყოთა ზოლის შეწევა","toolbarExpand":"ხელსაწყოთა ზოლის გამოწევა","toolbarGroups":{"document":"დოკუმენტი","clipboard":"Clipboard/გაუქმება","editing":"რედაქტირება","forms":"ფორმები","basicstyles":"ძირითადი სტილები","paragraph":"აბზაცი","links":"ბმულები","insert":"ჩასმა","styles":"სტილები","colors":"ფერები","tools":"ხელსაწყოები"},"toolbars":"Editor toolbars"},"table":{"border":"ჩარჩოს ზომა","caption":"სათაური","cell":{"menu":"უჯრა","insertBefore":"უჯრის ჩასმა მანამდე","insertAfter":"უჯრის ჩასმა მერე","deleteCell":"უჯრების წაშლა","merge":"უჯრების შეერთება","mergeRight":"შეერთება მარჯვენასთან","mergeDown":"შეერთება ქვემოთასთან","splitHorizontal":"გაყოფა ჰორიზონტალურად","splitVertical":"გაყოფა ვერტიკალურად","title":"უჯრის პარამეტრები","cellType":"უჯრის ტიპი","rowSpan":"სტრიქონების ოდენობა","colSpan":"სვეტების ოდენობა","wordWrap":"სტრიქონის გადატანა (Word Wrap)","hAlign":"ჰორიზონტალური სწორება","vAlign":"ვერტიკალური სწორება","alignBaseline":"ძირითადი ხაზის გასწვრივ","bgColor":"ფონის ფერი","borderColor":"ჩარჩოს ფერი","data":"მონაცემები","header":"სათაური","yes":"დიახ","no":"არა","invalidWidth":"უჯრის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","invalidHeight":"უჯრის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidRowSpan":"სტრიქონების რაოდენობა მთელი რიცხვი უნდა იყოს.","invalidColSpan":"სვეტების რაოდენობა მთელი რიცხვი უნდა იყოს.","chooseColor":"არჩევა"},"cellPad":"უჯრის კიდე (padding)","cellSpace":"უჯრის სივრცე (spacing)","column":{"menu":"სვეტი","insertBefore":"სვეტის ჩამატება წინ","insertAfter":"სვეტის ჩამატება მერე","deleteColumn":"სვეტების წაშლა"},"columns":"სვეტი","deleteTable":"ცხრილის წაშლა","headers":"სათაურები","headersBoth":"ორივე","headersColumn":"პირველი სვეტი","headersNone":"არაფერი","headersRow":"პირველი სტრიქონი","invalidBorder":"ჩარჩოს ზომა რიცხვით უდნა იყოს წარმოდგენილი.","invalidCellPadding":"უჯრის კიდე (padding) რიცხვით უნდა იყოს წარმოდგენილი.","invalidCellSpacing":"უჯრის სივრცე (spacing) რიცხვით უნდა იყოს წარმოდგენილი.","invalidCols":"სვეტების რაოდენობა დადებითი რიცხვი უნდა იყოს.","invalidHeight":"ცხრილის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidRows":"სტრიქონების რაოდენობა დადებითი რიცხვი უნდა იყოს.","invalidWidth":"ცხრილის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","menu":"ცხრილის პარამეტრები","row":{"menu":"სტრიქონი","insertBefore":"სტრიქონის ჩამატება წინ","insertAfter":"სტრიქონის ჩამატება მერე","deleteRow":"სტრიქონების წაშლა"},"rows":"სტრიქონი","summary":"შეჯამება","title":"ცხრილის პარამეტრები","toolbar":"ცხრილი","widthPc":"პროცენტი","widthPx":"წერტილი","widthUnit":"საზომი ერთეული"},"stylescombo":{"label":"სტილები","panelTitle":"ფორმატირების სტილები","panelTitle1":"არის სტილები","panelTitle2":"თანდართული სტილები","panelTitle3":"ობიექტის სტილები"},"specialchar":{"options":"სპეციალური სიმბოლოს პარამეტრები","title":"სპეციალური სიმბოლოს არჩევა","toolbar":"სპეციალური სიმბოლოს ჩასმა"},"sourcearea":{"toolbar":"კოდები"},"scayt":{"btn_about":"SCAYT-ის შესახებ","btn_dictionaries":"ლექსიკონები","btn_disable":"SCAYT-ის გამორთვა","btn_enable":"SCAYT-ის ჩართვა","btn_langs":"ენები","btn_options":"პარამეტრები","text_title":"მართლწერის შემოწმება კრეფისას"},"removeformat":{"toolbar":"ფორმატირების მოხსნა"},"pastetext":{"button":"მხოლოდ ტექსტის ჩასმა","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?","error":"შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა","title":"ვორდიდან ჩასმა","toolbar":"ვორდიდან ჩასმა"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"გადიდება","minimize":"დაპატარავება"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ღილიანი სია","numberedlist":"გადანომრილი სია"},"link":{"acccessKey":"წვდომის ღილაკი","advanced":"დაწვრილებით","advisoryContentType":"შიგთავსის ტიპი","advisoryTitle":"სათაური","anchor":{"toolbar":"ღუზა","menu":"ღუზის რედაქტირება","title":"ღუზის პარამეტრები","name":"ღუზუს სახელი","errorName":"აკრიფეთ ღუზის სახელი","remove":"Remove Anchor"},"anchorId":"ელემენტის Id-თ","anchorName":"ღუზის სახელით","charset":"კოდირება","cssClasses":"CSS კლასი","download":"Force Download","displayText":"Display Text","emailAddress":"ელფოსტის მისამართები","emailBody":"წერილის ტექსტი","emailSubject":"წერილის სათაური","id":"Id","info":"ბმულის ინფორმაცია","langCode":"ენის კოდი","langDir":"ენის მიმართულება","langDirLTR":"მარცხნიდან მარჯვნივ (LTR)","langDirRTL":"მარჯვნიდან მარცხნივ (RTL)","menu":"ბმულის რედაქტირება","name":"სახელი","noAnchors":"(ამ დოკუმენტში ღუზა არაა)","noEmail":"აკრიფეთ ელფოსტის მისამართი","noUrl":"აკრიფეთ ბმულის URL","other":"<სხვა>","popupDependent":"დამოკიდებული (Netscape)","popupFeatures":"Popup ფანჯრის პარამეტრები","popupFullScreen":"მთელი ეკრანი (IE)","popupLeft":"მარცხენა პოზიცია","popupLocationBar":"ნავიგაციის ზოლი","popupMenuBar":"მენიუს ზოლი","popupResizable":"ცვალებადი ზომით","popupScrollBars":"გადახვევის ზოლები","popupStatusBar":"სტატუსის ზოლი","popupToolbar":"ხელსაწყოთა ზოლი","popupTop":"ზედა პოზიცია","rel":"კავშირი","selectAnchor":"აირჩიეთ ღუზა","styles":"CSS სტილი","tabIndex":"Tab-ის ინდექსი","target":"გახსნის ადგილი","targetFrame":"<frame>","targetFrameName":"Frame-ის სახელი","targetPopup":"<popup ფანჯარა>","targetPopupName":"Popup ფანჯრის სახელი","title":"ბმული","toAnchor":"ბმული ტექსტში ღუზაზე","toEmail":"ელფოსტა","toUrl":"URL","toolbar":"ბმული","type":"ბმულის ტიპი","unlink":"ბმულის მოხსნა","upload":"აქაჩვა"},"indent":{"indent":"მეტად შეწევა","outdent":"ნაკლებად შეწევა"},"image":{"alt":"სანაცვლო ტექსტი","border":"ჩარჩო","btnUpload":"სერვერისთვის გაგზავნა","button2Img":"გსურთ არჩეული სურათიანი ღილაკის გადაქცევა ჩვეულებრივ ღილაკად?","hSpace":"ჰორიზონტალური სივრცე","img2Button":"გსურთ არჩეული ჩვეულებრივი ღილაკის გადაქცევა სურათიან ღილაკად?","infoTab":"სურათის ინფორმცია","linkTab":"ბმული","lockRatio":"პროპორციის შენარჩუნება","menu":"სურათის პარამეტრები","resetSize":"ზომის დაბრუნება","title":"სურათის პარამეტრები","titleButton":"სურათიანი ღილაკის პარამეტრები","upload":"ატვირთვა","urlMissing":"სურათის URL არაა შევსებული.","vSpace":"ვერტიკალური სივრცე","validateBorder":"ჩარჩო მთელი რიცხვი უნდა იყოს.","validateHSpace":"ჰორიზონტალური სივრცე მთელი რიცხვი უნდა იყოს.","validateVSpace":"ვერტიკალური სივრცე მთელი რიცხვი უნდა იყოს."},"horizontalrule":{"toolbar":"ჰორიზონტალური ხაზის ჩასმა"},"format":{"label":"ფიორმატირება","panelTitle":"ფორმატირება","tag_address":"მისამართი","tag_div":"ჩვეულებრივი (DIV)","tag_h1":"სათაური 1","tag_h2":"სათაური 2","tag_h3":"სათაური 3","tag_h4":"სათაური 4","tag_h5":"სათაური 5","tag_h6":"სათაური 6","tag_p":"ჩვეულებრივი","tag_pre":"ფორმატირებული"},"fakeobjects":{"anchor":"ღუზა","flash":"Flash ანიმაცია","hiddenfield":"მალული ველი","iframe":"IFrame","unknown":"უცნობი ობიექტი"},"elementspath":{"eleLabel":"ელემეტის გზა","eleTitle":"%1 ელემენტი"},"contextmenu":{"options":"კონტექსტური მენიუს პარამეტრები"},"clipboard":{"copy":"ასლი","copyError":"თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).","cut":"ამოჭრა","cutError":"თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).","paste":"ჩასმა","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"ციტატა"},"basicstyles":{"bold":"მსხვილი","italic":"დახრილი","strike":"გადახაზული","subscript":"ინდექსი","superscript":"ხარისხი","underline":"გახაზული"},"about":{"copy":"Copyright © $1. ყველა უფლება დაცულია.","dlgTitle":"CKEditor-ის შესახებ","help":"დახმარებისთვის იხილეთ $1.","moreInfo":"ლიცენზიის ინფორმაციისთვის ეწვიეთ ჩვენს საიტს:","title":"CKEditor-ის შესახებ","userGuide":"CKEditor-ის მომხმარებლის სახელმძღვანელო"},"editor":"ტექსტის რედაქტორი","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"დააჭირეთ ALT 0-ს დახმარების მისაღებად","browseServer":"სერვერზე დათვალიერება","url":"URL","protocol":"პროტოკოლი","upload":"ატვირთვა","uploadSubmit":"სერვერზე გაგზავნა","image":"სურათი","flash":"Flash","form":"ფორმა","checkbox":"მონიშვნის ღილაკი","radio":"ამორჩევის ღილაკი","textField":"ტექსტური ველი","textarea":"ტექსტური არე","hiddenField":"მალული ველი","button":"ღილაკი","select":"არჩევის ველი","imageButton":"სურათიანი ღილაკი","notSet":"<არაფერი>","id":"Id","name":"სახელი","langDir":"ენის მიმართულება","langDirLtr":"მარცხნიდან მარჯვნივ (LTR)","langDirRtl":"მარჯვნიდან მარცხნივ (RTL)","langCode":"ენის კოდი","longDescr":"დიდი აღწერის URL","cssClass":"CSS კლასი","advisoryTitle":"სათაური","cssStyle":"CSS სტილი","ok":"დიახ","cancel":"გაუქმება","close":"დახურვა","preview":"გადახედვა","resize":"გაწიე ზომის შესაცვლელად","generalTab":"ინფორმაცია","advancedTab":"გაფართოებული","validateNumberFailed":"ეს მნიშვნელობა არაა რიცხვი.","confirmNewPage":"ამ დოკუმენტში ყველა ჩაუწერელი ცვლილება დაიკარგება. დარწმუნებული ხართ რომ ახალი გვერდის ჩატვირთვა გინდათ?","confirmCancel":"ზოგიერთი პარამეტრი შეცვლილია, დარწმუნებულილ ხართ რომ ფანჯრის დახურვა გსურთ?","options":"პარამეტრები","target":"გახსნის ადგილი","targetNew":"ახალი ფანჯარა (_blank)","targetTop":"ზედა ფანჯარა (_top)","targetSelf":"იგივე ფანჯარა (_self)","targetParent":"მშობელი ფანჯარა (_parent)","langDirLTR":"მარცხნიდან მარჯვნივ (LTR)","langDirRTL":"მარჯვნიდან მარცხნივ (RTL)","styles":"სტილი","cssClasses":"CSS კლასი","width":"სიგანე","height":"სიმაღლე","align":"სწორება","alignLeft":"მარცხენა","alignRight":"მარჯვენა","alignCenter":"შუა","alignJustify":"両端揃え","alignTop":"ზემოთა","alignMiddle":"შუა","alignBottom":"ქვემოთა","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.","invalidWidth":"სიგანე რიცხვით უნდა იყოს წარმოდგენილი.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, მიუწვდომელია</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/km.js b/vendor/unisharp/laravel-ckeditor/lang/km.js deleted file mode 100644 index a9de18184..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['km']={"wsc":{"btnIgnore":"មិនផ្លាស់ប្តូរ","btnIgnoreAll":"មិនផ្លាស់ប្តូរ ទាំងអស់","btnReplace":"ជំនួស","btnReplaceAll":"ជំនួសទាំងអស់","btnUndo":"សារឡើងវិញ","changeTo":"ផ្លាស់ប្តូរទៅ","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?","manyChanges":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ","noChanges":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ","noMispell":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស","noSuggestions":"- គ្មានសំណើរ -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"គ្មានក្នុងវចនានុក្រម","oneChange":"ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ","progress":"កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...","title":"Spell Checker","toolbar":"ពិនិត្យអក្ខរាវិរុទ្ធ"},"undo":{"redo":"ធ្វើ​ឡើង​វិញ","undo":"មិន​ធ្វើ​វិញ"},"toolbar":{"toolbarCollapse":"បង្រួម​របារ​ឧបករណ៍","toolbarExpand":"ពង្រីក​របារ​ឧបករណ៍","toolbarGroups":{"document":"ឯកសារ","clipboard":"Clipboard/មិន​ធ្វើ​វិញ","editing":"ការ​កែ​សម្រួល","forms":"បែបបទ","basicstyles":"រចនាបថ​មូលដ្ឋាន","paragraph":"កថាខណ្ឌ","links":"តំណ","insert":"បញ្ចូល","styles":"រចនាបថ","colors":"ពណ៌","tools":"ឧបករណ៍"},"toolbars":"របារ​ឧបករណ៍​កែ​សម្រួល"},"table":{"border":"ទំហំ​បន្ទាត់​ស៊ុម","caption":"ចំណងជើង","cell":{"menu":"ក្រឡា","insertBefore":"បញ្ចូល​ក្រឡា​ពីមុខ","insertAfter":"បញ្ចូល​ក្រឡា​ពី​ក្រោយ","deleteCell":"លុប​ក្រឡា","merge":"បញ្ចូល​ក្រឡា​ចូល​គ្នា","mergeRight":"បញ្ចូល​គ្នា​ខាង​ស្ដាំ","mergeDown":"បញ្ចូល​គ្នា​ចុះ​ក្រោម","splitHorizontal":"ពុះ​ក្រឡា​ផ្ដេក","splitVertical":"ពុះ​ក្រឡា​បញ្ឈរ","title":"លក្ខណៈ​ក្រឡា","cellType":"ប្រភេទ​ក្រឡា","rowSpan":"ចំនួន​ជួរ​ដេក​លាយ​ចូល​គ្នា","colSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា","wordWrap":"រុំ​ពាក្យ","hAlign":"ការ​តម្រឹម​ផ្ដេក","vAlign":"ការ​តម្រឹម​បញ្ឈរ","alignBaseline":"ខ្សែ​បន្ទាត់​គោល","bgColor":"ពណ៌​ផ្ទៃ​ក្រោយ","borderColor":"ពណ៌​បន្ទាត់​ស៊ុម","data":"ទិន្នន័យ","header":"ក្បាល","yes":"ព្រម","no":"ទេ","invalidWidth":"ទទឹង​ក្រឡា​ត្រូវ​តែ​ជា​លេខ។","invalidHeight":"កម្ពស់​ក្រឡា​ត្រូវ​តែ​ជា​លេខ។","invalidRowSpan":"ចំនួន​ជួរ​ដេក​លាយ​ចូល​គ្នា​ត្រូវ​តែ​ជា​លេខ​ទាំង​អស់។","invalidColSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា​ត្រូវ​តែ​ជា​លេខ​ទាំង​អស់។","chooseColor":"រើស"},"cellPad":"ចន្លោះ​ក្រឡា","cellSpace":"គម្លាត​ក្រឡា","column":{"menu":"ជួរ​ឈរ","insertBefore":"បញ្ចូល​ជួរ​ឈរ​ពីមុខ","insertAfter":"បញ្ចូល​ជួរ​ឈរ​ពី​ក្រោយ","deleteColumn":"លុប​ជួរ​ឈរ"},"columns":"ជួរឈរ","deleteTable":"លុប​តារាង","headers":"ក្បាល","headersBoth":"ទាំង​ពីរ","headersColumn":"ជួរ​ឈរ​ដំបូង","headersNone":"មិន​មាន","headersRow":"ជួរ​ដេក​ដំបូង","invalidBorder":"ទំហំ​បន្ទាត់​ស៊ុម​ត្រូវ​តែ​ជា​លេខ។","invalidCellPadding":"ចន្លោះ​ក្រឡា​ត្រូវ​តែជា​លេខ​វិជ្ជមាន។","invalidCellSpacing":"គម្លាត​ក្រឡា​ត្រូវ​តែ​ជា​លេខ​វិជ្ជមាន។","invalidCols":"ចំនួន​ជួរ​ឈរ​ត្រូវ​តែ​ជា​លេខ​ធំ​ជាង 0។","invalidHeight":"កម្ពស់​តារាង​ត្រូវ​តែ​ជា​លេខ","invalidRows":"ចំនួន​ជួរ​ដេក​ត្រូវ​តែ​ជា​លេខ​ធំ​ជាង 0។","invalidWidth":"ទទឹង​តារាង​ត្រូវ​តែ​ជា​លេខ។","menu":"លក្ខណៈ​តារាង","row":{"menu":"ជួរ​ដេក","insertBefore":"បញ្ចូល​ជួរ​ដេក​ពីមុខ","insertAfter":"បញ្ចូល​ជួរ​ដេក​ពី​ក្រោយ","deleteRow":"លុប​ជួរ​ដេក"},"rows":"ជួរ​ដេក","summary":"សេចក្តី​សង្ខេប","title":"លក្ខណៈ​តារាង","toolbar":"តារាង","widthPc":"ភាគរយ","widthPx":"ភីកសែល","widthUnit":"ឯកតា​ទទឹង"},"stylescombo":{"label":"រចនាបថ","panelTitle":"ទ្រង់ទ្រាយ​រចនាបថ","panelTitle1":"រចនាបថ​ប្លក់","panelTitle2":"រចនាបថ​ក្នុង​ជួរ","panelTitle3":"រចនាបថ​វត្ថុ"},"specialchar":{"options":"ជម្រើស​តួ​អក្សរ​ពិសេស","title":"រើស​តួអក្សរ​ពិសេស","toolbar":"បន្ថែមអក្សរពិសេស"},"sourcearea":{"toolbar":"អក្សរ​កូដ"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"ជម្រះ​ទ្រង់​ទ្រាយ"},"pastetext":{"button":"បិទ​ភ្ជាប់​ជា​អត្ថបទ​ធម្មតា","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"អត្ថបទ​ដែល​អ្នក​ចង់​បិទ​ភ្ជាប់​នេះ ទំនង​ដូច​ជា​ចម្លង​មក​ពី Word។ តើ​អ្នក​ចង់​សម្អាត​វា​មុន​បិទ​ភ្ជាប់​ទេ?","error":"ដោយ​សារ​មាន​បញ្ហា​ផ្នែក​ក្នុង​ធ្វើ​ឲ្យ​មិន​អាច​សម្អាត​ទិន្នន័យ​ដែល​បាន​បិទ​ភ្ជាប់","title":"បិទ​ភ្ជាប់​ពី Word","toolbar":"បិទ​ភ្ជាប់​ពី Word"},"notification":{"closed":"បាន​បិទ​ការ​ផ្ដល់​ដំណឹង។"},"maximize":{"maximize":"ពង្រីក​អតិបរមា","minimize":"បង្រួម​អប្បបរមា"},"magicline":{"title":"បញ្ចូល​កថាខណ្ឌ​នៅ​ទីនេះ"},"list":{"bulletedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​ចំណុច​មូល","numberedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​លេខ"},"link":{"acccessKey":"សោរ​ចូល","advanced":"កម្រិត​ខ្ពស់","advisoryContentType":"ប្រភេទអត្ថបទ​ប្រឹក្សា","advisoryTitle":"ចំណងជើង​ប្រឹក្សា","anchor":{"toolbar":"យុថ្កា","menu":"កែ​យុថ្កា","title":"លក្ខណៈ​យុថ្កា","name":"ឈ្មោះ​យុថ្កា","errorName":"សូម​បញ្ចូល​ឈ្មោះ​យុថ្កា","remove":"ដក​យុថ្កា​ចេញ"},"anchorId":"តាម ID ធាតុ","anchorName":"តាម​ឈ្មោះ​យុថ្កា","charset":"លេខកូតអក្សររបស់ឈ្នាប់","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"អាសយដ្ឋាន​អ៊ីមែល","emailBody":"តួ​អត្ថបទ","emailSubject":"ប្រធានបទ​សារ","id":"Id","info":"ព័ត៌មាន​ពី​តំណ","langCode":"កូដ​ភាសា","langDir":"ទិសដៅភាសា","langDirLTR":"ពីឆ្វេងទៅស្តាំ(LTR)","langDirRTL":"ពីស្តាំទៅឆ្វេង(RTL)","menu":"កែ​តំណ","name":"ឈ្មោះ","noAnchors":"(មិន​មាន​យុថ្កា​នៅ​ក្នុង​ឯកសារ​អត្ថថបទ​ទេ)","noEmail":"សូម​បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល","noUrl":"សូម​បញ្ចូល​តំណ URL","other":"<ផ្សេង​ទៀត>","popupDependent":"Dependent (Netscape)","popupFeatures":"មុខ​ងារ​ផុស​ផ្ទាំង​វីនដូ​ឡើង","popupFullScreen":"ពេញ​អេក្រង់ (IE)","popupLeft":"ទីតាំងខាងឆ្វេង","popupLocationBar":"របារ​ទីតាំង","popupMenuBar":"របារ​ម៉ឺនុយ","popupResizable":"អាច​ប្ដូរ​ទំហំ","popupScrollBars":"របារ​រំកិល","popupStatusBar":"របារ​ស្ថានភាព","popupToolbar":"របារ​ឧបករណ៍","popupTop":"ទីតាំង​កំពូល","rel":"សម្ពន្ធ​ភាព","selectAnchor":"រើស​យក​យុថ្កា​មួយ","styles":"ស្ទីល","tabIndex":"លេខ Tab","target":"គោលដៅ","targetFrame":"<ស៊ុម>","targetFrameName":"ឈ្មោះ​ស៊ុម​ជា​គោល​ដៅ","targetPopup":"<វីនដូ​ផុស​ឡើង>","targetPopupName":"ឈ្មោះ​វីនដូត​ផុស​ឡើង","title":"តំណ","toAnchor":"ត​ភ្ជាប់​ទៅ​យុថ្កា​ក្នុង​អត្ថបទ","toEmail":"អ៊ីមែល","toUrl":"URL","toolbar":"តំណ","type":"ប្រភេទ​តំណ","unlink":"ផ្ដាច់​តំណ","upload":"ផ្ទុក​ឡើង"},"indent":{"indent":"បន្ថែមការចូលបន្ទាត់","outdent":"បន្ថយការចូលបន្ទាត់"},"image":{"alt":"អត្ថបទជំនួស","border":"ស៊ុម","btnUpload":"ផ្ញើ​ទៅ​ម៉ាស៊ីន​បម្រើ","button2Img":"តើ​អ្នក​ចង់​ផ្លាស់​ប្ដូរ​ប៊ូតុង​រូបភាព​ដែល​បាន​ជ្រើស នៅ​លើ​រូបភាព​ធម្មតា​មួយ​មែនទេ?","hSpace":"គម្លាត​ផ្ដេក","img2Button":"តើ​អ្នក​ចង់​ផ្លាស់​ប្ដូរ​រូបភាព​ដែល​បាន​ជ្រើស នៅ​លើ​ប៊ូតុង​រូបភាព​មែនទេ?","infoTab":"ពត៌មានអំពីរូបភាព","linkTab":"តំណ","lockRatio":"ចាក់​សោ​ផល​ធៀប","menu":"លក្ខណៈ​រូបភាព","resetSize":"កំណត់ទំហំឡើងវិញ","title":"លក្ខណៈ​រូបភាព","titleButton":"លក្ខណៈ​ប៊ូតុង​រូបភាព","upload":"ផ្ទុកឡើង","urlMissing":"ខ្វះ URL ប្រភព​រូប​ភាព។","vSpace":"គម្លាត​បញ្ឈរ","validateBorder":"ស៊ុម​ត្រូវ​តែ​ជា​លេខ។","validateHSpace":"គម្លាត​ផ្ដេក​ត្រូវ​តែ​ជា​លេខ។","validateVSpace":"គម្លាត​បញ្ឈរ​ត្រូវ​តែ​ជា​លេខ។"},"horizontalrule":{"toolbar":"បន្ថែមបន្ទាត់ផ្តេក"},"format":{"label":"ទម្រង់","panelTitle":"ទម្រង់​កថាខណ្ឌ","tag_address":"អាសយដ្ឋាន","tag_div":"ធម្មតា (DIV)","tag_h1":"ចំណង​ជើង 1","tag_h2":"ចំណង​ជើង 2","tag_h3":"ចំណង​ជើង 3","tag_h4":"ចំណង​ជើង 4","tag_h5":"ចំណង​ជើង 5","tag_h6":"ចំណង​ជើង 6","tag_p":"ធម្មតា","tag_pre":"Formatted"},"fakeobjects":{"anchor":"យុថ្កា","flash":"Flash មាន​ចលនា","hiddenfield":"វាល​កំបាំង","iframe":"IFrame","unknown":"វត្ថុ​មិន​ស្គាល់"},"elementspath":{"eleLabel":"ទីតាំង​ធាតុ","eleTitle":"ធាតុ %1"},"contextmenu":{"options":"ជម្រើស​ម៉ឺនុយ​បរិបទ"},"clipboard":{"copy":"ចម្លង","copyError":"ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។","cut":"កាត់យក","cutError":"ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។","paste":"បិទ​ភ្ជាប់","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (បាន​ជ្រើស​រើស)"},"blockquote":{"toolbar":"ប្លក់​ពាក្យ​សម្រង់"},"basicstyles":{"bold":"ដិត","italic":"ទ្រេត","strike":"គូស​បន្ទាត់​ចំ​កណ្ដាល","subscript":"អក្សរតូចក្រោម","superscript":"អក្សរតូចលើ","underline":"គូស​បន្ទាត់​ក្រោម"},"about":{"copy":"រក្សាសិទ្ធិ © $1។ រក្សា​សិទ្ធិ​គ្រប់​បែប​យ៉ាង។","dlgTitle":"អំពី CKEditor","help":"ពិនិត្យ $1 សម្រាប់​ជំនួយ។","moreInfo":"សម្រាប់​ព័ត៌មាន​អំពី​អាជ្ញាបណញណ សូម​មើល​ក្នុង​គេហទំព័រ​របស់​យើង៖","title":"អំពី CKEditor","userGuide":"វិធី​ប្រើ​ប្រាស់ CKEditor"},"editor":"ឧបករណ៍​សរសេរ​អត្ថបទ​សម្បូរ​បែប","editorPanel":"ផ្ទាំង​ឧបករណ៍​សរសេរ​អត្ថបទ​សម្បូរ​បែប","common":{"editorHelp":"ចុច ALT 0 សម្រាប់​ជំនួយ","browseServer":"រក​មើល​ក្នុង​ម៉ាស៊ីន​បម្រើ","url":"URL","protocol":"ពិធីការ","upload":"ផ្ទុក​ឡើង","uploadSubmit":"បញ្ជូនទៅកាន់ម៉ាស៊ីន​បម្រើ","image":"រូបភាព","flash":"Flash","form":"បែបបទ","checkbox":"ប្រអប់​ធីក","radio":"ប៊ូតុង​មូល","textField":"វាល​អត្ថបទ","textarea":"Textarea","hiddenField":"វាល​កំបាំង","button":"ប៊ូតុង","select":"វាល​ជម្រើស","imageButton":"ប៊ូតុង​រូបភាព","notSet":"<មិនកំណត់>","id":"Id","name":"ឈ្មោះ","langDir":"ទិសដៅភាសា","langDirLtr":"ពីឆ្វេងទៅស្តាំ (LTR)","langDirRtl":"ពីស្តាំទៅឆ្វេង (RTL)","langCode":"លេខ​កូដ​ភាសា","longDescr":"URL អធិប្បាយ​វែង","cssClass":"Stylesheet Classes","advisoryTitle":"ចំណង​ជើង​ណែនាំ","cssStyle":"រចនាបថ","ok":"ព្រម","cancel":"បោះបង់","close":"បិទ","preview":"មើល​ជា​មុន","resize":"ប្ដូរ​ទំហំ","generalTab":"ទូទៅ","advancedTab":"កម្រិត​ខ្ពស់","validateNumberFailed":"តម្លៃ​នេះ​ពុំ​មែន​ជា​លេខ​ទេ។","confirmNewPage":"រាល់​បន្លាស់​ប្ដូរ​នានា​ដែល​មិន​ទាន់​រក្សា​ទុក​ក្នុង​មាតិកា​នេះ នឹង​ត្រូវ​បាត់​បង់។ តើ​អ្នក​ពិត​ជា​ចង់​ផ្ទុក​ទំព័រ​ថ្មី​មែនទេ?","confirmCancel":"ការ​កំណត់​មួយ​ចំនួន​ត្រូ​វ​បាន​ផ្លាស់​ប្ដូរ។ តើ​អ្នក​ពិត​ជា​ចង់​បិទ​ប្រអប់​នេះ​មែនទេ?","options":"ការ​កំណត់","target":"គោលដៅ","targetNew":"វីនដូ​ថ្មី (_blank)","targetTop":"វីនដូ​លើ​គេ (_top)","targetSelf":"វីនដូ​ដូច​គ្នា (_self)","targetParent":"វីនដូ​មេ (_parent)","langDirLTR":"ពីឆ្វេងទៅស្តាំ(LTR)","langDirRTL":"ពីស្តាំទៅឆ្វេង(RTL)","styles":"រចនាបថ","cssClasses":"Stylesheet Classes","width":"ទទឹង","height":"កំពស់","align":"កំណត់​ទីតាំង","alignLeft":"ខាងឆ្វង","alignRight":"ខាងស្តាំ","alignCenter":"កណ្តាល","alignJustify":"តំរឹមសងខាង","alignTop":"ខាងលើ","alignMiddle":"កណ្តាល","alignBottom":"ខាងក្រោម","alignNone":"គ្មាន","invalidValue":"តម្លៃ​មិន​ត្រឹម​ត្រូវ។","invalidHeight":"តម្លៃ​កំពស់​ត្រូវ​តែ​ជា​លេខ។","invalidWidth":"តម្លៃ​ទទឹង​ត្រូវ​តែ​ជា​លេខ។","invalidCssLength":"តម្លៃ​កំណត់​សម្រាប់​វាល \"%1\" ត្រូវ​តែ​ជា​លេខ​វិជ្ជមាន​ ដោយ​ភ្ជាប់ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកតា​រង្វាស់​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","invalidHtmlLength":"តម្លៃ​កំណត់​សម្រាប់​វាល \"%1\" ត្រូវ​តែ​ជា​លេខ​វិជ្ជមាន ដោយ​ភ្ជាប់​ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកតា​រង្វាស់​របស់ HTML (px ឬ %) ។","invalidInlineStyle":"តម្លៃ​កំណត់​សម្រាប់​រចនាបថ​ក្នុង​តួ ត្រូវ​តែ​មាន​មួយ​ឬ​ធាតុ​ច្រើន​ដោយ​មាន​ទ្រង់ទ្រាយ​ជា \"ឈ្មោះ : តម្លៃ\" ហើយ​ញែក​ចេញ​ពី​គ្នា​ដោយ​ចុច​ក្បៀស។","cssLengthTooltip":"បញ្ចូល​លេខ​សម្រាប់​តម្លៃ​ជា​ភិចសែល ឬ​លេខ​ដែល​មាន​ឯកតា​ត្រឹមត្រូវ​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","unavailable":"%1<span class=\"cke_accessibility\">, មិន​មាន</span>","keyboard":{"8":"លុបថយក្រោយ","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"ចុង","36":"ផ្ទះ","46":"លុប","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ko.js b/vendor/unisharp/laravel-ckeditor/lang/ko.js deleted file mode 100644 index 81782d501..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ko']={"wsc":{"btnIgnore":"건너뜀","btnIgnoreAll":"모두 건너뜀","btnReplace":"변경","btnReplaceAll":"모두 변경","btnUndo":"취소","changeTo":"변경할 단어","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?","manyChanges":"철자검사 완료: %1 단어가 변경되었습니다.","noChanges":"철자검사 완료: 변경된 단어가 없습니다.","noMispell":"철자검사 완료: 잘못된 철자가 없습니다.","noSuggestions":"- 추천단어 없음 -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"사전에 없는 단어","oneChange":"철자검사 완료: 단어가 변경되었습니다.","progress":"철자검사를 진행중입니다...","title":"Spell Check","toolbar":"철자검사"},"undo":{"redo":"다시 실행","undo":"실행 취소"},"toolbar":{"toolbarCollapse":"툴바 줄이기","toolbarExpand":"툴바 확장","toolbarGroups":{"document":"문서","clipboard":"클립보드/실행 취소","editing":"편집","forms":"폼","basicstyles":"기본 스타일","paragraph":"단락","links":"링크","insert":"삽입","styles":"스타일","colors":"색상","tools":"도구"},"toolbars":"에디터 툴바"},"table":{"border":"테두리 두께","caption":"주석","cell":{"menu":"셀","insertBefore":"앞에 셀 삽입","insertAfter":"뒤에 셀 삽입","deleteCell":"셀 삭제","merge":"셀 합치기","mergeRight":"오른쪽 합치기","mergeDown":"왼쪽 합치기","splitHorizontal":"수평 나누기","splitVertical":"수직 나누기","title":"셀 속성","cellType":"셀 종류","rowSpan":"행 간격","colSpan":"열 간격","wordWrap":"줄 끝 단어 줄 바꿈","hAlign":"가로 정렬","vAlign":"세로 정렬","alignBaseline":"영문 글꼴 기준선","bgColor":"배경색","borderColor":"테두리 색","data":"자료","header":"머릿칸","yes":"예","no":"아니오","invalidWidth":"셀 너비는 숫자여야 합니다.","invalidHeight":"셀 높이는 숫자여야 합니다.","invalidRowSpan":"행 간격은 정수여야 합니다.","invalidColSpan":"열 간격은 정수여야 합니다.","chooseColor":"선택"},"cellPad":"셀 여백","cellSpace":"셀 간격","column":{"menu":"열","insertBefore":"왼쪽에 열 삽입","insertAfter":"오른쪽에 열 삽입","deleteColumn":"열 삭제"},"columns":"열","deleteTable":"표 삭제","headers":"머릿칸","headersBoth":"모두","headersColumn":"첫 열","headersNone":"없음","headersRow":"첫 행","invalidBorder":"테두리 두께는 숫자여야 합니다.","invalidCellPadding":"셀 여백은 0 이상이어야 합니다.","invalidCellSpacing":"셀 간격은 0 이상이어야 합니다.","invalidCols":"열 번호는 0보다 커야 합니다.","invalidHeight":"표 높이는 숫자여야 합니다.","invalidRows":"행 번호는 0보다 커야 합니다.","invalidWidth":"표의 너비는 숫자여야 합니다.","menu":"표 속성","row":{"menu":"행","insertBefore":"위에 행 삽입","insertAfter":"아래에 행 삽입","deleteRow":"행 삭제"},"rows":"행","summary":"요약","title":"표 속성","toolbar":"표","widthPc":"백분율","widthPx":"픽셀","widthUnit":"너비 단위"},"stylescombo":{"label":"스타일","panelTitle":"전체 구성 스타일","panelTitle1":"블록 스타일","panelTitle2":"인라인 스타일","panelTitle3":"객체 스타일"},"specialchar":{"options":"특수문자 옵션","title":"특수문자 선택","toolbar":"특수문자 삽입"},"sourcearea":{"toolbar":"소스"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"형식 지우기"},"pastetext":{"button":"텍스트로 붙여넣기","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"붙여 넣을 내용은 MS Word에서 복사 한 것입니다. 붙여 넣기 전에 정리 하시겠습니까?","error":"내부 오류로 붙여 넣은 데이터를 정리 할 수 없습니다.","title":"MS Word 에서 붙여넣기","toolbar":"MS Word 에서 붙여넣기"},"notification":{"closed":"알림이 닫힘."},"maximize":{"maximize":"최대화","minimize":"최소화"},"magicline":{"title":"여기에 단락 삽입"},"list":{"bulletedlist":"순서 없는 목록","numberedlist":"순서 있는 목록"},"link":{"acccessKey":"액세스 키","advanced":"고급","advisoryContentType":"보조 콘텐츠 유형","advisoryTitle":"보조 제목","anchor":{"toolbar":"책갈피","menu":"책갈피 편집","title":"책갈피 속성","name":"책갈피 이름","errorName":"책갈피 이름을 입력하십시오","remove":"책갈피 제거"},"anchorId":"책갈피 ID","anchorName":"책갈피 이름","charset":"링크된 자료 문자열 인코딩","cssClasses":"스타일시트 클래스","download":"강제 다운로드","displayText":"보이는 글자","emailAddress":"이메일 주소","emailBody":"메시지 내용","emailSubject":"메시지 제목","id":"ID","info":"링크 정보","langCode":"언어 코드","langDir":"언어 방향","langDirLTR":"왼쪽에서 오른쪽 (LTR)","langDirRTL":"오른쪽에서 왼쪽 (RTL)","menu":"링크 수정","name":"이름","noAnchors":"(문서에 책갈피가 없습니다.)","noEmail":"이메일 주소를 입력하십시오","noUrl":"링크 주소(URL)를 입력하십시오","other":"<기타>","popupDependent":"Dependent (Netscape)","popupFeatures":"팝업창 속성","popupFullScreen":"전체화면 (IE)","popupLeft":"왼쪽 위치","popupLocationBar":"주소 표시줄","popupMenuBar":"메뉴 바","popupResizable":"크기 조절 가능","popupScrollBars":"스크롤 바","popupStatusBar":"상태 바","popupToolbar":"툴바","popupTop":"위쪽 위치","rel":"관계","selectAnchor":"책갈피 선택","styles":"스타일","tabIndex":"탭 순서","target":"타겟","targetFrame":"<프레임>","targetFrameName":"타겟 프레임 이름","targetPopup":"<팝업 창>","targetPopupName":"팝업 창 이름","title":"링크","toAnchor":"책갈피","toEmail":"이메일","toUrl":"주소(URL)","toolbar":"링크 삽입/변경","type":"링크 종류","unlink":"링크 지우기","upload":"업로드"},"indent":{"indent":"들여쓰기","outdent":"내어쓰기"},"image":{"alt":"대체 문자열","border":"테두리","btnUpload":"서버로 전송","button2Img":"단순 이미지에서 선택한 이미지 버튼을 변환하시겠습니까?","hSpace":"가로 여백","img2Button":"이미지 버튼에 선택한 이미지를 변환하시겠습니까?","infoTab":"이미지 정보","linkTab":"링크","lockRatio":"비율 유지","menu":"이미지 속성","resetSize":"원래 크기로","title":"이미지 속성","titleButton":"이미지 버튼 속성","upload":"업로드","urlMissing":"이미지 원본 주소(URL)가 없습니다.","vSpace":"세로 여백","validateBorder":"테두리 두께는 정수여야 합니다.","validateHSpace":"가로 길이는 정수여야 합니다.","validateVSpace":"세로 길이는 정수여야 합니다."},"horizontalrule":{"toolbar":"가로 줄 삽입"},"format":{"label":"문단","panelTitle":"문단 형식","tag_address":"글쓴이","tag_div":"기본 (DIV)","tag_h1":"제목 1","tag_h2":"제목 2","tag_h3":"제목 3","tag_h4":"제목 4","tag_h5":"제목 5","tag_h6":"제목 6","tag_p":"본문","tag_pre":"정형 문단"},"fakeobjects":{"anchor":"책갈피","flash":"플래시 애니메이션","hiddenfield":"숨은 입력 칸","iframe":"아이프레임","unknown":"알 수 없는 객체"},"elementspath":{"eleLabel":"요소 경로","eleTitle":"%1 요소"},"contextmenu":{"options":"컨텍스트 메뉴 옵션"},"clipboard":{"copy":"복사","copyError":"브라우저의 보안설정 때문에 복사할 수 없습니다. 키보드(Ctrl/Cmd+C)를 이용해서 복사하십시오.","cut":"잘라내기","cutError":"브라우저의 보안설정 때문에 잘라내기 기능을 실행할 수 없습니다. 키보드(Ctrl/Cmd+X)를 이용해서 잘라내기 하십시오","paste":"붙여넣기","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (선택됨)"},"blockquote":{"toolbar":"인용 단락"},"basicstyles":{"bold":"굵게","italic":"기울임꼴","strike":"취소선","subscript":"아래 첨자","superscript":"위 첨자","underline":"밑줄"},"about":{"copy":"저작권 © $1 . 판권 소유.","dlgTitle":"CKEditor 에 대하여","help":"도움이 필요하시면 $1 를 확인하세요.","moreInfo":"라이선스에 대한 정보는 저희 웹 사이트를 참고하세요:","title":"CKEditor에 대하여","userGuide":"CKEditor 사용설명서"},"editor":"리치 텍스트 편집기","editorPanel":"리치 텍스트 편집기 패널","common":{"editorHelp":"도움이 필요하면 ALT 0 을 누르세요","browseServer":"서버 탐색","url":"URL","protocol":"프로토콜","upload":"업로드","uploadSubmit":"서버로 전송","image":"이미지","flash":"플래시","form":"폼","checkbox":"체크 박스","radio":"라디오 버튼","textField":"한 줄 입력 칸","textarea":"여러 줄 입력 칸","hiddenField":"숨은 입력 칸","button":"버튼","select":"선택 목록","imageButton":"이미지 버튼","notSet":"<설정 안 됨>","id":"ID","name":"이름","langDir":"언어 방향","langDirLtr":"왼쪽에서 오른쪽 (LTR)","langDirRtl":"오른쪽에서 왼쪽 (RTL)","langCode":"언어 코드","longDescr":"웹 주소 설명","cssClass":"스타일 시트 클래스","advisoryTitle":"보조 제목","cssStyle":"스타일","ok":"확인","cancel":"취소","close":"닫기","preview":"미리보기","resize":"크기 조절","generalTab":"일반","advancedTab":"자세히","validateNumberFailed":"이 값은 숫자가 아닙니다.","confirmNewPage":"저장하지 않은 모든 변경사항은 유실됩니다. 정말로 새로운 페이지를 부르겠습니까?","confirmCancel":"일부 옵션이 변경 되었습니다. 정말로 창을 닫겠습니까?","options":"옵션","target":"타겟","targetNew":"새 창 (_blank)","targetTop":"최상위 창 (_top)","targetSelf":"같은 창 (_self)","targetParent":"부모 창 (_parent)","langDirLTR":"왼쪽에서 오른쪽 (LTR)","langDirRTL":"오른쪽에서 왼쪽 (RTL)","styles":"스타일","cssClasses":"스타일 시트 클래스","width":"너비","height":"높이","align":"정렬","alignLeft":"왼쪽","alignRight":"오른쪽","alignCenter":"가운데","alignJustify":"양쪽 맞춤","alignTop":"위","alignMiddle":"중간","alignBottom":"아래","alignNone":"기본","invalidValue":"잘못된 값.","invalidHeight":"높이는 숫자여야 합니다.","invalidWidth":"넓이는 숫자여야 합니다.","invalidCssLength":"\"%1\" 값은 유효한 CSS 측정 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 포함하거나 포함하지 않은 양수 여야 합니다.","invalidHtmlLength":"\"%1\" 값은 유효한 HTML 측정 단위(px or %)를 포함하거나 포함하지 않은 양수여야 합니다.","invalidInlineStyle":"인라인 스타일에 설정된 값은 \"name : value\" 형식을 가진 하나 이상의 투플(tuples)이 세미콜론(;)으로 구분되어 구성되어야 합니다.","cssLengthTooltip":"픽셀 단위의 숫자만 입력하시거나 유효한 CSS 단위(px, %, in, cm, mm, em, ex, pt, or pc)와 함께 숫자를 입력해주세요.","unavailable":"%1<span class=\"cke_accessibility\">, 사용불가</span>","keyboard":{"8":"백스페이스","13":"엔터","16":"시프트","17":"컨트롤","18":"알트","32":"간격","35":"엔드","36":"홈","46":"딜리트","224":"커맨드"},"keyboardShortcut":"키보드 단축키"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ku.js b/vendor/unisharp/laravel-ckeditor/lang/ku.js deleted file mode 100644 index 80852126d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ku']={"wsc":{"btnIgnore":"پشتگوێ کردن","btnIgnoreAll":"پشتگوێکردنی ههمووی","btnReplace":"لهبریدانن","btnReplaceAll":"لهبریدانانی ههمووی","btnUndo":"پووچکردنهوه","changeTo":"گۆڕینی بۆ","errorLoading":"ههڵه لههێنانی داخوازینامهی خانهخۆێی ڕاژه: %s.","ieSpellDownload":"پشکنینی ڕێنووس دانهمزراوه. دهتهوێت ئێستا دایبگریت?","manyChanges":"پشکنینی ڕێنووس کۆتای هات: لهسهدا %1 ی وشهکان گۆڕدرا","noChanges":"پشکنینی ڕێنووس کۆتای هات: هیچ وشهیهك نۆگۆڕدرا","noMispell":"پشکنینی ڕێنووس کۆتای هات: هیچ ههڵهیهکی ڕێنووس نهدۆزراوه","noSuggestions":"- هیچ پێشنیارێك -","notAvailable":"ببووره، لهمکاتهدا ڕاژهکه لهبهردهستا نیه.","notInDic":"لهفهرههنگ دانیه","oneChange":"پشکنینی ڕێنووس کۆتای هات: یهك وشه گۆڕدرا","progress":"پشکنینی ڕێنووس لهبهردهوامبوون دایه...","title":"پشکنینی ڕێنووس","toolbar":"پشکنینی ڕێنووس"},"undo":{"redo":"هەڵگەڕاندنەوە","undo":"پووچکردنەوە"},"toolbar":{"toolbarCollapse":"شاردنەوی هێڵی تووڵامراز","toolbarExpand":"نیشاندانی هێڵی تووڵامراز","toolbarGroups":{"document":"پەڕه","clipboard":"بڕین/پووچکردنەوە","editing":"چاکسازی","forms":"داڕشتە","basicstyles":"شێوازی بنچینەیی","paragraph":"بڕگە","links":"بەستەر","insert":"خستنە ناو","styles":"شێواز","colors":"ڕەنگەکان","tools":"ئامرازەکان"},"toolbars":"تووڵامرازی دەسکاریکەر"},"table":{"border":"گەورەیی پەراوێز","caption":"سەردێڕ","cell":{"menu":"خانه","insertBefore":"دانانی خانه لەپێش","insertAfter":"دانانی خانه لەپاش","deleteCell":"سڕینەوەی خانه","merge":"تێکەڵکردنی خانە","mergeRight":"تێکەڵکردنی لەگەڵ ڕاست","mergeDown":"تێکەڵکردنی لەگەڵ خوارەوە","splitHorizontal":"دابەشکردنی خانەی ئاسۆیی","splitVertical":"دابەشکردنی خانەی ئەستونی","title":"خاسیەتی خانه","cellType":"جۆری خانه","rowSpan":"ماوەی نێوان ڕیز","colSpan":"بستی ئەستونی","wordWrap":"پێچانەوەی وشە","hAlign":"ڕیزکردنی ئاسۆیی","vAlign":"ڕیزکردنی ئەستونی","alignBaseline":"هێڵەبنەڕەت","bgColor":"ڕەنگی پاشبنەما","borderColor":"ڕەنگی پەراوێز","data":"داتا","header":"سەرپەڕه","yes":"بەڵێ","no":"نەخێر","invalidWidth":"پانی خانه دەبێت بەتەواوی ژماره بێت.","invalidHeight":"درێژی خانه بەتەواوی دەبێت ژمارە بێت.","invalidRowSpan":"ماوەی نێوان ڕیز بەتەواوی دەبێت ژمارە بێت.","invalidColSpan":"ماوەی نێوان ئەستونی بەتەواوی دەبێت ژمارە بێت.","chooseColor":"هەڵبژێرە"},"cellPad":"بۆشایی ناوپۆش","cellSpace":"بۆشایی خانه","column":{"menu":"ئەستون","insertBefore":"دانانی ئەستون لەپێش","insertAfter":"دانانی ئەستوون لەپاش","deleteColumn":"سڕینەوەی ئەستوون"},"columns":"ستوونەکان","deleteTable":"سڕینەوەی خشتە","headers":"سەرپەڕه","headersBoth":"هەردووك","headersColumn":"یەکەم ئەستوون","headersNone":"هیچ","headersRow":"یەکەم ڕیز","invalidBorder":"ژمارەی پەراوێز دەبێت تەنها ژماره بێت.","invalidCellPadding":"ناوپۆشی خانه دەبێت ژمارەکی درووست بێت.","invalidCellSpacing":"بۆشایی خانه دەبێت ژمارەکی درووست بێت.","invalidCols":"ژمارەی ئەستوونی دەبێت گەورەتر بێت لەژمارەی 0.","invalidHeight":"درێژی خشته دهبێت تهنها ژماره بێت.","invalidRows":"ژمارەی ڕیز دەبێت گەورەتر بێت لەژمارەی 0.","invalidWidth":"پانی خشته دەبێت تەنها ژماره بێت.","menu":"خاسیەتی خشتە","row":{"menu":"ڕیز","insertBefore":"دانانی ڕیز لەپێش","insertAfter":"دانانی ڕیز لەپاش","deleteRow":"سڕینەوەی ڕیز"},"rows":"ڕیز","summary":"کورتە","title":"خاسیەتی خشتە","toolbar":"خشتە","widthPc":"لەسەدا","widthPx":"وێنەخاڵ - پیکسل","widthUnit":"پانی یەکە"},"stylescombo":{"label":"شێواز","panelTitle":"شێوازی ڕازاندنەوە","panelTitle1":"شێوازی خشت","panelTitle2":"شێوازی ناوهێڵ","panelTitle3":"شێوازی بەرکار"},"specialchar":{"options":"هەڵبژاردەی نووسەی تایبەتی","title":"هەڵبژاردنی نووسەی تایبەتی","toolbar":"دانانی نووسەی تایبەتی"},"sourcearea":{"toolbar":"سەرچاوە"},"scayt":{"btn_about":"دهربارهی SCAYT","btn_dictionaries":"فهرههنگهکان","btn_disable":"ناچالاککردنی SCAYT","btn_enable":"چالاککردنی SCAYT","btn_langs":"زمانهکان","btn_options":"ههڵبژارده","text_title":"پشکنینی نووسه لهکاتی نووسین"},"removeformat":{"toolbar":"لابردنی داڕشتەکە"},"pastetext":{"button":"لکاندنی وەك دەقی ڕوون","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه پێش ئەوەی بیلکێنی؟","error":"هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی","title":"لکاندنی لەلایەن Word","toolbar":"لکاندنی لەڕێی Word"},"notification":{"closed":"ئاگادارکەرەوەکە داخرا."},"maximize":{"maximize":"ئەوپەڕی گەورەیی","minimize":"ئەوپەڕی بچووکی"},"magicline":{"title":"بڕگە لێرە دابنێ"},"list":{"bulletedlist":"دانان/لابردنی خاڵی لیست","numberedlist":"دانان/لابردنی ژمارەی لیست"},"link":{"acccessKey":"کلیلی دەستپێگەیشتن","advanced":"پێشکەوتوو","advisoryContentType":"جۆری ناوەڕۆکی ڕاویژکار","advisoryTitle":"ڕاوێژکاری سەردێڕ","anchor":{"toolbar":"دانان/چاکسازی لەنگەر","menu":"چاکسازی لەنگەر","title":"خاسیەتی لەنگەر","name":"ناوی لەنگەر","errorName":"تکایه ناوی لەنگەر بنووسه","remove":"لابردنی لەنگەر"},"anchorId":"بەپێی ناسنامەی توخم","anchorName":"بەپێی ناوی لەنگەر","charset":"بەستەری سەرچاوەی نووسە","cssClasses":"شێوازی چینی پەڕه","download":"داگرتنی بەهێز","displayText":"پیشاندانی دەق","emailAddress":"ناونیشانی ئیمەیل","emailBody":"ناوەڕۆکی نامە","emailSubject":"بابەتی نامە","id":"ناسنامە","info":"زانیاری بەستەر","langCode":"هێمای زمان","langDir":"ئاراستەی زمان","langDirLTR":"چەپ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ چەپ (RTL)","menu":"چاکسازی بەستەر","name":"ناو","noAnchors":"(هیچ جۆرێکی لەنگەر ئامادە نیە لەم پەڕەیه)","noEmail":"تکایە ناونیشانی ئیمەیل بنووسە","noUrl":"تکایە ناونیشانی بەستەر بنووسە","other":"<هیتر>","popupDependent":"پێوەبەستراو (Netscape)","popupFeatures":"خاسیەتی پەنجەرەی سەرهەڵدەر","popupFullScreen":"پڕ بەپڕی شاشە (IE)","popupLeft":"جێگای چەپ","popupLocationBar":"هێڵی ناونیشانی بەستەر","popupMenuBar":"هێڵی لیسته","popupResizable":"توانای گۆڕینی قەباره","popupScrollBars":"هێڵی هاتووچۆپێکردن","popupStatusBar":"هێڵی دۆخ","popupToolbar":"هێڵی تووڵامراز","popupTop":"جێگای سەرەوە","rel":"پەیوەندی","selectAnchor":"هەڵبژاردنی لەنگەرێك","styles":"شێواز","tabIndex":"بازدەری تابی ئیندێکس","target":"ئامانج","targetFrame":"<چووارچێوە>","targetFrameName":"ناوی ئامانجی چووارچێوە","targetPopup":"<پەنجەرەی سەرهەڵدەر>","targetPopupName":"ناوی پەنجەرەی سەرهەڵدەر","title":"بەستەر","toAnchor":"بەستەر بۆ لەنگەر له دەق","toEmail":"ئیمەیل","toUrl":"ناونیشانی بەستەر","toolbar":"دانان/ڕێکخستنی بەستەر","type":"جۆری بەستەر","unlink":"لابردنی بەستەر","upload":"بارکردن"},"indent":{"indent":"زیادکردنی بۆشایی","outdent":"کەمکردنەوەی بۆشایی"},"image":{"alt":"جێگرەوەی دەق","border":"پەراوێز","btnUpload":"ناردنی بۆ ڕاژه","button2Img":"تۆ دەتەوێت دوگمەی وێنەی دیاریکراو بگۆڕیت بۆ وێنەیەکی ئاسایی؟","hSpace":"بۆشایی ئاسۆیی","img2Button":"تۆ دەتەوێت وێنەی دیاریکراو بگۆڕیت بۆ دوگمەی وێنه؟","infoTab":"زانیاری وێنه","linkTab":"بەستەر","lockRatio":"داخستنی ڕێژه","menu":"خاسیەتی وێنه","resetSize":"ڕێکخستنەوەی قەباره","title":"خاسیەتی وێنه","titleButton":"خاسیەتی دوگمەی وێنه","upload":"بارکردن","urlMissing":"سەرچاوەی بەستەری وێنه بزره","vSpace":"بۆشایی ئەستونی","validateBorder":"پەراوێز دەبێت بەتەواوی تەنها ژماره بێت.","validateHSpace":"بۆشایی ئاسۆیی دەبێت بەتەواوی تەنها ژمارە بێت.","validateVSpace":"بۆشایی ئەستونی دەبێت بەتەواوی تەنها ژماره بێت."},"horizontalrule":{"toolbar":"دانانی هێلی ئاسۆیی"},"format":{"label":"ڕازاندنەوە","panelTitle":"بەشی ڕازاندنەوه","tag_address":"ناونیشان","tag_div":"(DIV)-ی ئاسایی","tag_h1":"سەرنووسەی ١","tag_h2":"سەرنووسەی ٢","tag_h3":"سەرنووسەی ٣","tag_h4":"سەرنووسەی ٤","tag_h5":"سەرنووسەی ٥","tag_h6":"سەرنووسەی ٦","tag_p":"ئاسایی","tag_pre":"شێوازکراو"},"fakeobjects":{"anchor":"لەنگەر","flash":"فلاش","hiddenfield":"شاردنەوەی خانه","iframe":"لەچوارچێوە","unknown":"بەرکارێکی نەناسراو"},"elementspath":{"eleLabel":"ڕێڕەوی توخمەکان","eleTitle":"%1 توخم"},"contextmenu":{"options":"هەڵبژاردەی لیستەی کلیکی دەستی ڕاست"},"clipboard":{"copy":"لەبەرگرتنەوە","copyError":"پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).","cut":"بڕین","cutError":"پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).","paste":"لکاندن","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (هەڵبژێردراو)"},"blockquote":{"toolbar":"بەربەستکردنی ووتەی وەرگیراو"},"basicstyles":{"bold":"قەڵەو","italic":"لار","strike":"لێدان","subscript":"ژێرنووس","superscript":"سەرنووس","underline":"ژێرهێڵ"},"about":{"copy":"مافی لەبەرگەرتنەوەی © $1. گشتی پارێزراوه. ورگێڕانی بۆ کوردی لەلایەن هۆژە کۆیی.","dlgTitle":"دەربارەی CKEditor","help":"سەیری $1 بکه بۆ یارمەتی.","moreInfo":"بۆ زانیاری زیاتر دەربارەی مۆڵەتی بەکارهێنان، تکایه سەردانی ماڵپەڕەکەمان بکه:","title":"دەربارەی CKEditor","userGuide":"ڕێپیشاندەری CKEditors"},"editor":"سەرنووسەی دەقی تەواو","editorPanel":"بڕگەی سەرنووسەی دەقی تەواو","common":{"editorHelp":"کلیکی ALT لەگەڵ 0 بکه‌ بۆ یارمەتی","browseServer":"هێنانی ڕاژە","url":"ناونیشانی بەستەر","protocol":"پڕۆتۆکۆڵ","upload":"بارکردن","uploadSubmit":"ناردنی بۆ ڕاژە","image":"وێنە","flash":"فلاش","form":"داڕشتە","checkbox":"خانەی نیشانکردن","radio":"جێگرەوەی دوگمە","textField":"خانەی دەق","textarea":"ڕووبەری دەق","hiddenField":"شاردنەوی خانە","button":"دوگمە","select":"هەڵبژاردەی خانە","imageButton":"دوگمەی وێنە","notSet":"<هیچ دانەدراوە>","id":"ناسنامە","name":"ناو","langDir":"ئاراستەی زمان","langDirLtr":"چەپ بۆ ڕاست (LTR)","langDirRtl":"ڕاست بۆ چەپ (RTL)","langCode":"هێمای زمان","longDescr":"پێناسەی درێژی بەستەر","cssClass":"شێوازی چینی په‌ڕە","advisoryTitle":"ڕاوێژکاری سەردێڕ","cssStyle":"شێواز","ok":"باشە","cancel":"پاشگەزبوونەوە","close":"داخستن","preview":"پێشبینین","resize":"گۆڕینی ئەندازە","generalTab":"گشتی","advancedTab":"پەرەسەندوو","validateNumberFailed":"ئەم نرخە ژمارە نیە، تکایە نرخێکی ژمارە بنووسە.","confirmNewPage":"سەرجەم گۆڕانکاریەکان و پێکهاتەکانی ناووەوە لەدەست دەدەی گەر بێتوو پاشکەوتی نەکەی یەکەم جار، تۆ هەر دڵنیایی لەکردنەوەی پەنجەرەکی نوێ؟","confirmCancel":"هەندێك هەڵبژاردە گۆڕدراوە. تۆ دڵنیایی لە داخستنی ئەم دیالۆگە؟","options":"هەڵبژاردەکان","target":"ئامانج","targetNew":"پەنجەرەیەکی نوێ (_blank)","targetTop":"لووتکەی پەنجەرە (_top)","targetSelf":"لەهەمان پەنجەرە (_self)","targetParent":"پەنجەرەی باوان (_parent)","langDirLTR":"چەپ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ چەپ (RTL)","styles":"شێواز","cssClasses":"شێوازی چینی پەڕە","width":"پانی","height":"درێژی","align":"ڕێککەرەوە","alignLeft":"چەپ","alignRight":"ڕاست","alignCenter":"ناوەڕاست","alignJustify":"هاوستوونی","alignTop":"سەرەوە","alignMiddle":"ناوەند","alignBottom":"ژێرەوە","alignNone":"هیچ","invalidValue":"نرخێکی نادرووست.","invalidHeight":"درێژی دەبێت ژمارە بێت.","invalidWidth":"پانی دەبێت ژمارە بێت.","invalidCssLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).","invalidHtmlLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی HTML (px یان %).","invalidInlineStyle":"دانەی نرخی شێوازی ناوهێڵ دەبێت پێکهاتبێت لەیەك یان زیاتری داڕشتە \"ناو : نرخ\", جیاکردنەوەی بە فاریزە و خاڵ","cssLengthTooltip":"ژمارەیەك بنووسه‌ بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).","unavailable":"%1<span class=\"cke_accessibility\">, ئامادە نیە</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"فەرمان"},"keyboardShortcut":"کورتبڕی تەختەکلیل"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/lt.js b/vendor/unisharp/laravel-ckeditor/lang/lt.js deleted file mode 100644 index 87db2279d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['lt']={"wsc":{"btnIgnore":"Ignoruoti","btnIgnoreAll":"Ignoruoti visus","btnReplace":"Pakeisti","btnReplaceAll":"Pakeisti visus","btnUndo":"Atšaukti","changeTo":"Pakeisti į","errorLoading":"Klaida įkraunant servisą: %s.","ieSpellDownload":"Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?","manyChanges":"Rašybos tikrinimas baigtas: Pakeista %1 žodžių","noChanges":"Rašybos tikrinimas baigtas: Nėra pakeistų žodžių","noMispell":"Rašybos tikrinimas baigtas: Nerasta rašybos klaidų","noSuggestions":"- Nėra pasiūlymų -","notAvailable":"Atleiskite, šiuo metu servisas neprieinamas.","notInDic":"Žodyne nerastas","oneChange":"Rašybos tikrinimas baigtas: Vienas žodis pakeistas","progress":"Vyksta rašybos tikrinimas...","title":"Tikrinti klaidas","toolbar":"Rašybos tikrinimas"},"undo":{"redo":"Atstatyti","undo":"Atšaukti"},"toolbar":{"toolbarCollapse":"Apjungti įrankių juostą","toolbarExpand":"Išplėsti įrankių juostą","toolbarGroups":{"document":"Dokumentas","clipboard":"Atmintinė/Atgal","editing":"Redagavimas","forms":"Formos","basicstyles":"Pagrindiniai stiliai","paragraph":"Paragrafas","links":"Nuorodos","insert":"Įterpti","styles":"Stiliai","colors":"Spalvos","tools":"Įrankiai"},"toolbars":"Redaktoriaus įrankiai"},"table":{"border":"Rėmelio dydis","caption":"Antraštė","cell":{"menu":"Langelis","insertBefore":"Įterpti langelį prieš","insertAfter":"Įterpti langelį po","deleteCell":"Šalinti langelius","merge":"Sujungti langelius","mergeRight":"Sujungti su dešine","mergeDown":"Sujungti su apačia","splitHorizontal":"Skaidyti langelį horizontaliai","splitVertical":"Skaidyti langelį vertikaliai","title":"Cell nustatymai","cellType":"Cell rūšis","rowSpan":"Eilučių Span","colSpan":"Stulpelių Span","wordWrap":"Sutraukti raides","hAlign":"Horizontalus lygiavimas","vAlign":"Vertikalus lygiavimas","alignBaseline":"Apatinė linija","bgColor":"Fono spalva","borderColor":"Rėmelio spalva","data":"Data","header":"Antraštė","yes":"Taip","no":"Ne","invalidWidth":"Reikšmė turi būti skaičius.","invalidHeight":"Reikšmė turi būti skaičius.","invalidRowSpan":"Reikšmė turi būti skaičius.","invalidColSpan":"Reikšmė turi būti skaičius.","chooseColor":"Pasirinkite"},"cellPad":"Tarpas nuo langelio rėmo iki teksto","cellSpace":"Tarpas tarp langelių","column":{"menu":"Stulpelis","insertBefore":"Įterpti stulpelį prieš","insertAfter":"Įterpti stulpelį po","deleteColumn":"Šalinti stulpelius"},"columns":"Stulpeliai","deleteTable":"Šalinti lentelę","headers":"Antraštės","headersBoth":"Abu","headersColumn":"Pirmas stulpelis","headersNone":"Nėra","headersRow":"Pirma eilutė","invalidBorder":"Reikšmė turi būti nurodyta skaičiumi.","invalidCellPadding":"Reikšmė turi būti nurodyta skaičiumi.","invalidCellSpacing":"Reikšmė turi būti nurodyta skaičiumi.","invalidCols":"Skaičius turi būti didesnis nei 0.","invalidHeight":"Reikšmė turi būti nurodyta skaičiumi.","invalidRows":"Skaičius turi būti didesnis nei 0.","invalidWidth":"Reikšmė turi būti nurodyta skaičiumi.","menu":"Lentelės savybės","row":{"menu":"Eilutė","insertBefore":"Įterpti eilutę prieš","insertAfter":"Įterpti eilutę po","deleteRow":"Šalinti eilutes"},"rows":"Eilutės","summary":"Santrauka","title":"Lentelės savybės","toolbar":"Lentelė","widthPc":"procentais","widthPx":"taškais","widthUnit":"pločio vienetas"},"stylescombo":{"label":"Stilius","panelTitle":"Stilių formatavimas","panelTitle1":"Blokų stiliai","panelTitle2":"Vidiniai stiliai","panelTitle3":"Objektų stiliai"},"specialchar":{"options":"Specialaus simbolio nustatymai","title":"Pasirinkite specialų simbolį","toolbar":"Įterpti specialų simbolį"},"sourcearea":{"toolbar":"Šaltinis"},"scayt":{"btn_about":"Apie SCAYT","btn_dictionaries":"Žodynai","btn_disable":"Išjungti SCAYT","btn_enable":"Įjungti SCAYT","btn_langs":"Kalbos","btn_options":"Parametrai","text_title":"Tikrinti klaidas kai rašoma"},"removeformat":{"toolbar":"Panaikinti formatą"},"pastetext":{"button":"Įdėti kaip gryną tekstą","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Tekstas, kurį įkeliate yra kopijuojamas iš Word. Ar norite jį išvalyti prieš įkeliant?","error":"Dėl vidinių sutrikimų, nepavyko išvalyti įkeliamo teksto","title":"Įdėti iš Word","toolbar":"Įdėti iš Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Išdidinti","minimize":"Sumažinti"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Suženklintas sąrašas","numberedlist":"Numeruotas sąrašas"},"link":{"acccessKey":"Prieigos raktas","advanced":"Papildomas","advisoryContentType":"Konsultacinio turinio tipas","advisoryTitle":"Konsultacinė antraštė","anchor":{"toolbar":"Įterpti/modifikuoti žymę","menu":"Žymės savybės","title":"Žymės savybės","name":"Žymės vardas","errorName":"Prašome įvesti žymės vardą","remove":"Pašalinti žymę"},"anchorId":"Pagal žymės Id","anchorName":"Pagal žymės vardą","charset":"Susietų išteklių simbolių lentelė","cssClasses":"Stilių lentelės klasės","download":"Force Download","displayText":"Display Text","emailAddress":"El.pašto adresas","emailBody":"Žinutės turinys","emailSubject":"Žinutės tema","id":"Id","info":"Nuorodos informacija","langCode":"Teksto kryptis","langDir":"Teksto kryptis","langDirLTR":"Iš kairės į dešinę (LTR)","langDirRTL":"Iš dešinės į kairę (RTL)","menu":"Taisyti nuorodą","name":"Vardas","noAnchors":"(Šiame dokumente žymių nėra)","noEmail":"Prašome įvesti el.pašto adresą","noUrl":"Prašome įvesti nuorodos URL","other":"<kitas>","popupDependent":"Priklausomas (Netscape)","popupFeatures":"Išskleidžiamo lango savybės","popupFullScreen":"Visas ekranas (IE)","popupLeft":"Kairė pozicija","popupLocationBar":"Adreso juosta","popupMenuBar":"Meniu juosta","popupResizable":"Kintamas dydis","popupScrollBars":"Slinkties juostos","popupStatusBar":"Būsenos juosta","popupToolbar":"Mygtukų juosta","popupTop":"Viršutinė pozicija","rel":"Sąsajos","selectAnchor":"Pasirinkite žymę","styles":"Stilius","tabIndex":"Tabuliavimo indeksas","target":"Paskirties vieta","targetFrame":"<kadras>","targetFrameName":"Paskirties kadro vardas","targetPopup":"<išskleidžiamas langas>","targetPopupName":"Paskirties lango vardas","title":"Nuoroda","toAnchor":"Žymė šiame puslapyje","toEmail":"El.paštas","toUrl":"Nuoroda","toolbar":"Įterpti/taisyti nuorodą","type":"Nuorodos tipas","unlink":"Panaikinti nuorodą","upload":"Siųsti"},"indent":{"indent":"Padidinti įtrauką","outdent":"Sumažinti įtrauką"},"image":{"alt":"Alternatyvus Tekstas","border":"Rėmelis","btnUpload":"Siųsti į serverį","button2Img":"Ar norite mygtuką paversti paprastu paveiksliuku?","hSpace":"Hor.Erdvė","img2Button":"Ar norite paveiksliuką paversti mygtuku?","infoTab":"Vaizdo informacija","linkTab":"Nuoroda","lockRatio":"Išlaikyti proporciją","menu":"Vaizdo savybės","resetSize":"Atstatyti dydį","title":"Vaizdo savybės","titleButton":"Vaizdinio mygtuko savybės","upload":"Nusiųsti","urlMissing":"Paveiksliuko nuorodos nėra.","vSpace":"Vert.Erdvė","validateBorder":"Reikšmė turi būti sveikas skaičius.","validateHSpace":"Reikšmė turi būti sveikas skaičius.","validateVSpace":"Reikšmė turi būti sveikas skaičius."},"horizontalrule":{"toolbar":"Įterpti horizontalią liniją"},"format":{"label":"Šrifto formatas","panelTitle":"Šrifto formatas","tag_address":"Kreipinio","tag_div":"Normalus (DIV)","tag_h1":"Antraštinis 1","tag_h2":"Antraštinis 2","tag_h3":"Antraštinis 3","tag_h4":"Antraštinis 4","tag_h5":"Antraštinis 5","tag_h6":"Antraštinis 6","tag_p":"Normalus","tag_pre":"Formuotas"},"fakeobjects":{"anchor":"Žymė","flash":"Flash animacija","hiddenfield":"Paslėptas laukas","iframe":"IFrame","unknown":"Nežinomas objektas"},"elementspath":{"eleLabel":"Elemento kelias","eleTitle":"%1 elementas"},"contextmenu":{"options":"Kontekstinio meniu parametrai"},"clipboard":{"copy":"Kopijuoti","copyError":"Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).","cut":"Iškirpti","cutError":"Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).","paste":"Įdėti","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Pasirinkta)"},"blockquote":{"toolbar":"Citata"},"basicstyles":{"bold":"Pusjuodis","italic":"Kursyvas","strike":"Perbrauktas","subscript":"Apatinis indeksas","superscript":"Viršutinis indeksas","underline":"Pabrauktas"},"about":{"copy":"Copyright © $1. Visos teiss saugomos.","dlgTitle":"Apie CKEditor","help":"Patikrinkite $1 dėl pagalbos.","moreInfo":"Dėl licencijavimo apsilankykite mūsų svetainėje:","title":"Apie CKEditor","userGuide":"CKEditor Vartotojo Gidas"},"editor":"Pilnas redaktorius","editorPanel":"Pilno redagtoriaus skydelis","common":{"editorHelp":"Spauskite ALT 0 dėl pagalbos","browseServer":"Naršyti po serverį","url":"URL","protocol":"Protokolas","upload":"Siųsti","uploadSubmit":"Siųsti į serverį","image":"Vaizdas","flash":"Flash","form":"Forma","checkbox":"Žymimasis langelis","radio":"Žymimoji akutė","textField":"Teksto laukas","textarea":"Teksto sritis","hiddenField":"Nerodomas laukas","button":"Mygtukas","select":"Atrankos laukas","imageButton":"Vaizdinis mygtukas","notSet":"<nėra nustatyta>","id":"Id","name":"Vardas","langDir":"Teksto kryptis","langDirLtr":"Iš kairės į dešinę (LTR)","langDirRtl":"Iš dešinės į kairę (RTL)","langCode":"Kalbos kodas","longDescr":"Ilgas aprašymas URL","cssClass":"Stilių lentelės klasės","advisoryTitle":"Konsultacinė antraštė","cssStyle":"Stilius","ok":"OK","cancel":"Nutraukti","close":"Uždaryti","preview":"Peržiūrėti","resize":"Pavilkite, kad pakeistumėte dydį","generalTab":"Bendros savybės","advancedTab":"Papildomas","validateNumberFailed":"Ši reikšmė nėra skaičius.","confirmNewPage":"Visas neišsaugotas turinys bus prarastas. Ar tikrai norite įkrauti naują puslapį?","confirmCancel":"Kai kurie parametrai pasikeitė. Ar tikrai norite užverti langą?","options":"Parametrai","target":"Tikslinė nuoroda","targetNew":"Naujas langas (_blank)","targetTop":"Viršutinis langas (_top)","targetSelf":"Esamas langas (_self)","targetParent":"Paskutinis langas (_parent)","langDirLTR":"Iš kairės į dešinę (LTR)","langDirRTL":"Iš dešinės į kairę (RTL)","styles":"Stilius","cssClasses":"Stilių klasės","width":"Plotis","height":"Aukštis","align":"Lygiuoti","alignLeft":"Kairę","alignRight":"Dešinę","alignCenter":"Centrą","alignJustify":"Lygiuoti abi puses","alignTop":"Viršūnę","alignMiddle":"Vidurį","alignBottom":"Apačią","alignNone":"Niekas","invalidValue":"Neteisinga reikšmė.","invalidHeight":"Aukštis turi būti nurodytas skaičiais.","invalidWidth":"Plotis turi būti nurodytas skaičiais.","invalidCssLength":"Reikšmė nurodyta \"%1\" laukui, turi būti teigiamas skaičius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).","invalidHtmlLength":"Reikšmė nurodyta \"%1\" laukui, turi būti teigiamas skaičius su arba be tinkamo HTML matavimo vieneto (px arba %).","invalidInlineStyle":"Reikšmė nurodyta vidiniame stiliuje turi būti sudaryta iš vieno šių reikšmių \"vardas : reikšmė\", atskirta kabliataškiais.","cssLengthTooltip":"Įveskite reikšmę pikseliais arba skaičiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).","unavailable":"%1<span class=\"cke_accessibility\">, netinkamas</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/lv.js b/vendor/unisharp/laravel-ckeditor/lang/lv.js deleted file mode 100644 index ab2b4ce5e..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['lv']={"wsc":{"btnIgnore":"Ignorēt","btnIgnoreAll":"Ignorēt visu","btnReplace":"Aizvietot","btnReplaceAll":"Aizvietot visu","btnUndo":"Atcelt","changeTo":"Nomainīt uz","errorLoading":"Kļūda ielādējot aplikācijas servisa adresi: %s.","ieSpellDownload":"Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?","manyChanges":"Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti","noChanges":"Pareizrakstības pārbaude pabeigta: nekas netika labots","noMispell":"Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas","noSuggestions":"- Nav ieteikumu -","notAvailable":"Atvainojiet, bet serviss šobrīd nav pieejams.","notInDic":"Netika atrasts vārdnīcā","oneChange":"Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts","progress":"Notiek pareizrakstības pārbaude...","title":"Pārbaudīt gramatiku","toolbar":"Pareizrakstības pārbaude"},"undo":{"redo":"Atkārtot","undo":"Atcelt"},"toolbar":{"toolbarCollapse":"Aizvērt rīkjoslu","toolbarExpand":"Atvērt rīkjoslu","toolbarGroups":{"document":"Dokuments","clipboard":"Starpliktuve/Atcelt","editing":"Labošana","forms":"Formas","basicstyles":"Pamata stili","paragraph":"Paragrāfs","links":"Saites","insert":"Ievietot","styles":"Stili","colors":"Krāsas","tools":"Rīki"},"toolbars":"Redaktora rīkjoslas"},"table":{"border":"Rāmja izmērs","caption":"Leģenda","cell":{"menu":"Šūna","insertBefore":"Pievienot šūnu pirms","insertAfter":"Pievienot šūnu pēc","deleteCell":"Dzēst rūtiņas","merge":"Apvienot rūtiņas","mergeRight":"Apvieno pa labi","mergeDown":"Apvienot uz leju","splitHorizontal":"Sadalīt šūnu horizontāli","splitVertical":"Sadalīt šūnu vertikāli","title":"Šūnas uzstādījumi","cellType":"Šūnas tips","rowSpan":"Apvienotas rindas","colSpan":"Apvienotas kolonas","wordWrap":"Vārdu pārnese","hAlign":"Horizontālais novietojums","vAlign":"Vertikālais novietojums","alignBaseline":"Pamatrinda","bgColor":"Fona krāsa","borderColor":"Rāmja krāsa","data":"Dati","header":"Virsraksts","yes":"Jā","no":"Nē","invalidWidth":"Šūnas platumam jābūt skaitlim","invalidHeight":"Šūnas augstumam jābūt skaitlim","invalidRowSpan":"Apvienojamo rindu skaitam jābūt veselam skaitlim","invalidColSpan":"Apvienojamo kolonu skaitam jābūt veselam skaitlim","chooseColor":"Izvēlēties"},"cellPad":"Rūtiņu nobīde","cellSpace":"Rūtiņu atstatums","column":{"menu":"Kolonna","insertBefore":"Ievietot kolonu pirms","insertAfter":"Ievieto kolonu pēc","deleteColumn":"Dzēst kolonnas"},"columns":"Kolonnas","deleteTable":"Dzēst tabulu","headers":"Virsraksti","headersBoth":"Abi","headersColumn":"Pirmā kolona","headersNone":"Nekas","headersRow":"Pirmā rinda","invalidBorder":"Rāmju izmēram jābūt skaitlim","invalidCellPadding":"Šūnu atkāpēm jābūt pozitīvam skaitlim","invalidCellSpacing":"Šūnu atstarpēm jābūt pozitīvam skaitlim","invalidCols":"Kolonu skaitam jābūt lielākam par 0","invalidHeight":"Tabulas augstumam jābūt skaitlim","invalidRows":"Rindu skaitam jābūt lielākam par 0","invalidWidth":"Tabulas platumam jābūt skaitlim","menu":"Tabulas īpašības","row":{"menu":"Rinda","insertBefore":"Ievietot rindu pirms","insertAfter":"Ievietot rindu pēc","deleteRow":"Dzēst rindas"},"rows":"Rindas","summary":"Anotācija","title":"Tabulas īpašības","toolbar":"Tabula","widthPc":"procentuāli","widthPx":"pikseļos","widthUnit":"platuma mērvienība"},"stylescombo":{"label":"Stils","panelTitle":"Formatēšanas stili","panelTitle1":"Bloka stili","panelTitle2":"iekļautie stili","panelTitle3":"Objekta stili"},"specialchar":{"options":"Speciālo simbolu uzstādījumi","title":"Ievietot īpašu simbolu","toolbar":"Ievietot speciālo simbolu"},"sourcearea":{"toolbar":"HTML kods"},"scayt":{"btn_about":"Par SCAYT","btn_dictionaries":"Vārdnīcas","btn_disable":"Atslēgt SCAYT","btn_enable":"Ieslēgt SCAYT","btn_langs":"Valodas","btn_options":"Uzstādījumi","text_title":"Pārbaudīt gramatiku rakstot"},"removeformat":{"toolbar":"Noņemt stilus"},"pastetext":{"button":"Ievietot kā vienkāršu tekstu","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Teksts, kuru vēlaties ielīmēt, izskatās ir nokopēts no Word. Vai vēlaties to iztīrīt pirms ielīmēšanas?","error":"Iekšējas kļūdas dēļ, neizdevās iztīrīt ielīmētos datus.","title":"Ievietot no Worda","toolbar":"Ievietot no Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimizēt","minimize":"Minimizēt"},"magicline":{"title":"Ievietot šeit rindkopu"},"list":{"bulletedlist":"Pievienot/Noņemt vienkāršu sarakstu","numberedlist":"Numurēts saraksts"},"link":{"acccessKey":"Pieejas taustiņš","advanced":"Izvērstais","advisoryContentType":"Konsultatīvs satura tips","advisoryTitle":"Konsultatīvs virsraksts","anchor":{"toolbar":"Ievietot/Labot iezīmi","menu":"Labot iezīmi","title":"Iezīmes uzstādījumi","name":"Iezīmes nosaukums","errorName":"Lūdzu norādiet iezīmes nosaukumu","remove":"Noņemt iezīmi"},"anchorId":"Pēc elementa ID","anchorName":"Pēc iezīmes nosaukuma","charset":"Pievienotā resursa kodējums","cssClasses":"Stilu saraksta klases","download":"Force Download","displayText":"Display Text","emailAddress":"E-pasta adrese","emailBody":"Ziņas saturs","emailSubject":"Ziņas tēma","id":"ID","info":"Hipersaites informācija","langCode":"Valodas kods","langDir":"Valodas lasīšanas virziens","langDirLTR":"No kreisās uz labo (LTR)","langDirRTL":"No labās uz kreiso (RTL)","menu":"Labot hipersaiti","name":"Nosaukums","noAnchors":"(Šajā dokumentā nav iezīmju)","noEmail":"Lūdzu norādi e-pasta adresi","noUrl":"Lūdzu norādi hipersaiti","other":"<cits>","popupDependent":"Atkarīgs (Netscape)","popupFeatures":"Uznirstošā loga nosaukums īpašības","popupFullScreen":"Pilnā ekrānā (IE)","popupLeft":"Kreisā koordināte","popupLocationBar":"Atrašanās vietas josla","popupMenuBar":"Izvēlnes josla","popupResizable":"Mērogojams","popupScrollBars":"Ritjoslas","popupStatusBar":"Statusa josla","popupToolbar":"Rīku josla","popupTop":"Augšējā koordināte","rel":"Relācija","selectAnchor":"Izvēlēties iezīmi","styles":"Stils","tabIndex":"Ciļņu indekss","target":"Mērķis","targetFrame":"<ietvars>","targetFrameName":"Mērķa ietvara nosaukums","targetPopup":"<uznirstošā logā>","targetPopupName":"Uznirstošā loga nosaukums","title":"Hipersaite","toAnchor":"Iezīme šajā lapā","toEmail":"E-pasts","toUrl":"Adrese","toolbar":"Ievietot/Labot hipersaiti","type":"Hipersaites tips","unlink":"Noņemt hipersaiti","upload":"Augšupielādēt"},"indent":{"indent":"Palielināt atkāpi","outdent":"Samazināt atkāpi"},"image":{"alt":"Alternatīvais teksts","border":"Rāmis","btnUpload":"Nosūtīt serverim","button2Img":"Vai vēlaties pārveidot izvēlēto attēla pogu uz attēla?","hSpace":"Horizontālā telpa","img2Button":"Vai vēlaties pārveidot izvēlēto attēlu uz attēla pogas?","infoTab":"Informācija par attēlu","linkTab":"Hipersaite","lockRatio":"Nemainīga Augstuma/Platuma attiecība","menu":"Attēla īpašības","resetSize":"Atjaunot sākotnējo izmēru","title":"Attēla īpašības","titleButton":"Attēlpogas īpašības","upload":"Augšupielādēt","urlMissing":"Trūkst attēla atrašanās adrese.","vSpace":"Vertikālā telpa","validateBorder":"Apmalei jābūt veselam skaitlim","validateHSpace":"HSpace jābūt veselam skaitlim","validateVSpace":"VSpace jābūt veselam skaitlim"},"horizontalrule":{"toolbar":"Ievietot horizontālu Atdalītājsvītru"},"format":{"label":"Formāts","panelTitle":"Formāts","tag_address":"Adrese","tag_div":"Rindkopa (DIV)","tag_h1":"Virsraksts 1","tag_h2":"Virsraksts 2","tag_h3":"Virsraksts 3","tag_h4":"Virsraksts 4","tag_h5":"Virsraksts 5","tag_h6":"Virsraksts 6","tag_p":"Normāls teksts","tag_pre":"Formatēts teksts"},"fakeobjects":{"anchor":"Iezīme","flash":"Flash animācija","hiddenfield":"Slēpts lauks","iframe":"Iframe","unknown":"Nezināms objekts"},"elementspath":{"eleLabel":"Elementa ceļš","eleTitle":"%1 elements"},"contextmenu":{"options":"Uznirstošās izvēlnes uzstādījumi"},"clipboard":{"copy":"Kopēt","copyError":"Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.","cut":"Izgriezt","cutError":"Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.","paste":"Ielīmēt","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Bloka citāts"},"basicstyles":{"bold":"Treknināts","italic":"Kursīvs","strike":"Pārsvītrots","subscript":"Apakšrakstā","superscript":"Augšrakstā","underline":"Pasvītrots"},"about":{"copy":"Kopēšanas tiesības © $1. Visas tiesības rezervētas.","dlgTitle":"Par CKEditor","help":"Pārbaudiet $1 palīdzībai.","moreInfo":"Informācijai par licenzēšanu apmeklējiet mūsu mājas lapu:","title":"Par CKEditor","userGuide":"CKEditor Lietotāja pamācība"},"editor":"Bagātinātā teksta redaktors","editorPanel":"Bagātinātā teksta redaktora panelis","common":{"editorHelp":"Palīdzībai, nospiediet ALT 0 ","browseServer":"Skatīt servera saturu","url":"URL","protocol":"Protokols","upload":"Augšupielādēt","uploadSubmit":"Nosūtīt serverim","image":"Attēls","flash":"Flash","form":"Forma","checkbox":"Atzīmēšanas kastīte","radio":"Izvēles poga","textField":"Teksta rinda","textarea":"Teksta laukums","hiddenField":"Paslēpta teksta rinda","button":"Poga","select":"Iezīmēšanas lauks","imageButton":"Attēlpoga","notSet":"<nav iestatīts>","id":"Id","name":"Nosaukums","langDir":"Valodas lasīšanas virziens","langDirLtr":"No kreisās uz labo (LTR)","langDirRtl":"No labās uz kreiso (RTL)","langCode":"Valodas kods","longDescr":"Gara apraksta Hipersaite","cssClass":"Stilu saraksta klases","advisoryTitle":"Konsultatīvs virsraksts","cssStyle":"Stils","ok":"Darīts!","cancel":"Atcelt","close":"Aizvērt","preview":"Priekšskatījums","resize":"Mērogot","generalTab":"Vispārīgi","advancedTab":"Izvērstais","validateNumberFailed":"Šī vērtība nav skaitlis","confirmNewPage":"Jebkuras nesaglabātās izmaiņas tiks zaudētas. Vai tiešām vēlaties atvērt jaunu lapu?","confirmCancel":"Daži no uzstādījumiem ir mainīti. Vai tiešām vēlaties aizvērt šo dialogu?","options":"Uzstādījumi","target":"Mērķis","targetNew":"Jauns logs (_blank)","targetTop":"Virsējais logs (_top)","targetSelf":"Tas pats logs (_self)","targetParent":"Avota logs (_parent)","langDirLTR":"Kreisais uz Labo (LTR)","langDirRTL":"Labais uz Kreiso (RTL)","styles":"Stils","cssClasses":"Stilu klases","width":"Platums","height":"Augstums","align":"Nolīdzināt","alignLeft":"Pa kreisi","alignRight":"Pa labi","alignCenter":"Centrēti","alignJustify":"Izlīdzināt malas","alignTop":"Augšā","alignMiddle":"Vertikāli centrēts","alignBottom":"Apakšā","alignNone":"Nekas","invalidValue":"Nekorekta vērtība","invalidHeight":"Augstumam jābūt skaitlim.","invalidWidth":"Platumam jābūt skaitlim","invalidCssLength":"Laukam \"%1\" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām CSS mērvienībām (px, %, in, cm, mm, em, ex, pt, vai pc).","invalidHtmlLength":"Laukam \"%1\" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām HTML mērvienībām (px vai %).","invalidInlineStyle":"Iekļautajā stilā norādītajai vērtībai jāsastāv no viena vai vairākiem pāriem pēc forma'ta \"nosaukums: vērtība\", atdalītiem ar semikolu.","cssLengthTooltip":"Ievadiet vērtību pikseļos vai skaitli ar derīgu CSS mērvienību (px, %, in, cm, mm, em, ex, pt, vai pc).","unavailable":"%1<span class=\"cke_accessibility\">, nav pieejams</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/mk.js b/vendor/unisharp/laravel-ckeditor/lang/mk.js deleted file mode 100644 index 5db9d94e6..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/mk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['mk']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Код на јазик","langDir":"Насока на јазик","langDirLTR":"Лево кон десно","langDirRTL":"Десно кон лево","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Стил","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Врска","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Врска","type":"Link Type","unlink":"Unlink","upload":"Прикачи"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Алтернативен текст","border":"Раб","btnUpload":"Прикачи на сервер","button2Img":"Дали сакате да направите сликата-копче да биде само слика?","hSpace":"Хоризонтален простор","img2Button":"Дали сакате да ја претворите сликата во слика-копче?","infoTab":"Информации за сликата","linkTab":"Врска","lockRatio":"Зачувај пропорција","menu":"Својства на сликата","resetSize":"Ресетирај големина","title":"Својства на сликата","titleButton":"Својства на копче-сликата","upload":"Прикачи","urlMissing":"Недостасува URL-то на сликата.","vSpace":"Вертикален простор","validateBorder":"Работ мора да биде цел број.","validateHSpace":"Хор. простор мора да биде цел број.","validateVSpace":"Верт. простор мора да биде цел број."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Скриено поле","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Контекст-мени опции"},"clipboard":{"copy":"Копирај (Copy)","copyError":"Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши копирање. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)","cut":"Исечи (Cut)","cutError":"Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши сечење. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)","paste":"Залепи (Paste)","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Одвоен цитат"},"basicstyles":{"bold":"Здебелено","italic":"Накривено","strike":"Прецртано","subscript":"Долен индекс","superscript":"Горен индекс","underline":"Подвлечено"},"about":{"copy":"Авторски права © $1. Сите права се задржани.","dlgTitle":"За CKEditor","help":"Отворете $1 за помош.","moreInfo":"За информации околу лиценцата, ве молиме посетете го нашиот веб-сајт: ","title":"За CKEditor","userGuide":"CKEditor упатство за корисници"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Притисни ALT 0 за помош","browseServer":"Пребарај низ серверот","url":"URL","protocol":"Протокол","upload":"Прикачи","uploadSubmit":"Прикачи на сервер","image":"Слика","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Поле за текст","textarea":"Големо поле за текст","hiddenField":"Скриено поле","button":"Button","select":"Selection Field","imageButton":"Копче-слика","notSet":"<not set>","id":"Id","name":"Name","langDir":"Насока на јазик","langDirLtr":"Лево кон десно","langDirRtl":"Десно кон лево","langCode":"Код на јазик","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Стил","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"Општо","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Опции","target":"Target","targetNew":"Нов прозорец (_blank)","targetTop":"Најгорниот прозорец (_top)","targetSelf":"Истиот прозорец (_self)","targetParent":"Прозорец-родител (_parent)","langDirLTR":"Лево кон десно","langDirRTL":"Десно кон лево","styles":"Стил","cssClasses":"Stylesheet Classes","width":"Широчина","height":"Височина","align":"Alignment","alignLeft":"Лево","alignRight":"Десно","alignCenter":"Во средина","alignJustify":"Justify","alignTop":"Горе","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"Никое","invalidValue":"Невалидна вредност","invalidHeight":"Височината мора да биде број.","invalidWidth":"Широчината мора да биде број.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/mn.js b/vendor/unisharp/laravel-ckeditor/lang/mn.js deleted file mode 100644 index 7a833d6f0..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/mn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['mn']={"wsc":{"btnIgnore":"Зөвшөөрөх","btnIgnoreAll":"Бүгдийг зөвшөөрөх","btnReplace":"Солих","btnReplaceAll":"Бүгдийг Дарж бичих","btnUndo":"Буцаах","changeTo":"Өөрчлөх","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?","manyChanges":"Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн","noChanges":"Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй","noMispell":"Дүрэм шалгаад дууссан: Алдаа олдсонгүй","noSuggestions":"- Тайлбаргүй -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Толь бичиггүй","oneChange":"Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн","progress":"Дүрэм шалгаж байгаа үйл явц...","title":"Spell Checker","toolbar":"Үгийн дүрэх шалгах"},"undo":{"redo":"Өмнөх үйлдлээ сэргээх","undo":"Хүчингүй болгох"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Холбоосууд","insert":"Оруулах","styles":"Загварууд","colors":"Онгөнүүд","tools":"Хэрэгслүүд"},"toolbars":"Болосруулагчийн хэрэгслийн самбар"},"table":{"border":"Хүрээний хэмжээ","caption":"Тайлбар","cell":{"menu":"Нүх/зай","insertBefore":"Нүх/зай өмнө нь оруулах","insertAfter":"Нүх/зай дараа нь оруулах","deleteCell":"Нүх устгах","merge":"Нүх нэгтэх","mergeRight":"Баруун тийш нэгтгэх","mergeDown":"Доош нэгтгэх","splitHorizontal":"Нүх/зайг босоогоор нь тусгаарлах","splitVertical":"Нүх/зайг хөндлөнгөөр нь тусгаарлах","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Хэвтээд тэгшлэх арга","vAlign":"Босоод тэгшлэх арга","alignBaseline":"Baseline","bgColor":"Дэвсгэр өнгө","borderColor":"Хүрээний өнгө","data":"Data","header":"Header","yes":"Тийм","no":"Үгүй","invalidWidth":"Нүдний өргөн нь тоо байх ёстой.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сонгох"},"cellPad":"Нүх доторлох(padding)","cellSpace":"Нүх хоорондын зай (spacing)","column":{"menu":"Багана","insertBefore":"Багана өмнө нь оруулах","insertAfter":"Багана дараа нь оруулах","deleteColumn":"Багана устгах"},"columns":"Багана","deleteTable":"Хүснэгт устгах","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Хүснэгтийн өргөн нь тоо байх ёстой.","menu":"Хүснэгт","row":{"menu":"Мөр","insertBefore":"Мөр өмнө нь оруулах","insertAfter":"Мөр дараа нь оруулах","deleteRow":"Мөр устгах"},"rows":"Мөр","summary":"Тайлбар","title":"Хүснэгт","toolbar":"Хүснэгт","widthPc":"хувь","widthPx":"цэг","widthUnit":"өргөний нэгж"},"stylescombo":{"label":"Загвар","panelTitle":"Загвар хэлбэржүүлэх","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Онцгой тэмдэгт сонгох","toolbar":"Онцгой тэмдэгт оруулах"},"sourcearea":{"toolbar":"Код"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Толь бичгүүд","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Хэлүүд","btn_options":"Сонголт","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Параргафын загварыг авч хаях"},"pastetext":{"button":"Энгийн бичвэрээр буулгах","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word-оос буулгах","toolbar":"Word-оос буулгах"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Дэлгэц дүүргэх","minimize":"Цонхыг багсгаж харуулах"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Цэгтэй жагсаалт","numberedlist":"Дугаарлагдсан жагсаалт"},"link":{"acccessKey":"Холбох түлхүүр","advanced":"Нэмэлт","advisoryContentType":"Зөвлөлдөх төрлийн агуулга","advisoryTitle":"Зөвлөлдөх гарчиг","anchor":{"toolbar":"Зангуу","menu":"Зангууг болосруулах","title":"Зангуугийн шинж чанар","name":"Зангуугийн нэр","errorName":"Зангуугийн нэрийг оруулна уу","remove":"Зангууг устгах"},"anchorId":"Элемэнтйн Id нэрээр","anchorName":"Зангуугийн нэрээр","charset":"Тэмдэгт оноох нөөцөд холбогдсон","cssClasses":"Stylesheet классууд","download":"Force Download","displayText":"Display Text","emailAddress":"Э-шуудангийн хаяг","emailBody":"Зурвасны их бие","emailSubject":"Зурвасны гарчиг","id":"Id","info":"Холбоосын тухай мэдээлэл","langCode":"Хэлний код","langDir":"Хэлний чиглэл","langDirLTR":"Зүүнээс баруун (LTR)","langDirRTL":"Баруунаас зүүн (RTL)","menu":"Холбоос засварлах","name":"Нэр","noAnchors":"(Баримт бичиг зангуугүй байна)","noEmail":"Э-шуудангий хаягаа шивнэ үү","noUrl":"Холбоосны URL хаягийг шивнэ үү","other":"<other>","popupDependent":"Хамаатай (Netscape)","popupFeatures":"Popup цонхны онцлог","popupFullScreen":"Цонх дүүргэх (Internet Explorer)","popupLeft":"Зүүн байрлал","popupLocationBar":"Location хэсэг","popupMenuBar":"Цэсний самбар","popupResizable":"Resizable","popupScrollBars":"Скрол хэсэгүүд","popupStatusBar":"Статус хэсэг","popupToolbar":"Багажны самбар","popupTop":"Дээд байрлал","rel":"Relationship","selectAnchor":"Нэг зангууг сонгоно уу","styles":"Загвар","tabIndex":"Tab индекс","target":"Байрлал","targetFrame":"<Агуулах хүрээ>","targetFrameName":"Очих фремын нэр","targetPopup":"<popup цонх>","targetPopupName":"Popup цонхны нэр","title":"Холбоос","toAnchor":"Энэ бичвэр дэх зангуу руу очих холбоос","toEmail":"Э-захиа","toUrl":"цахим хуудасны хаяг (URL)","toolbar":"Холбоос","type":"Линкийн төрөл","unlink":"Холбоос авч хаях","upload":"Хуулах"},"indent":{"indent":"Догол мөр хасах","outdent":"Догол мөр нэмэх"},"image":{"alt":"Зургийг орлох бичвэр","border":"Хүрээ","btnUpload":"Үүнийг сервэррүү илгээ","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Хөндлөн зай","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Зурагны мэдээлэл","linkTab":"Холбоос","lockRatio":"Радио түгжих","menu":"Зураг","resetSize":"хэмжээ дахин оноох","title":"Зураг","titleButton":"Зурган товчны шинж чанар","upload":"Хуулах","urlMissing":"Зургийн эх сурвалжийн хаяг (URL) байхгүй байна.","vSpace":"Босоо зай","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Хөндлөн зураас оруулах"},"format":{"label":"Параргафын загвар","panelTitle":"Параргафын загвар","tag_address":"Хаяг","tag_div":"Paragraph (DIV)","tag_h1":"Гарчиг 1","tag_h2":"Гарчиг 2","tag_h3":"Гарчиг 3","tag_h4":"Гарчиг 4","tag_h5":"Гарчиг 5","tag_h6":"Гарчиг 6","tag_p":"Хэвийн","tag_pre":"Formatted"},"fakeobjects":{"anchor":"Зангуу","flash":"Flash Animation","hiddenfield":"Нууц талбар","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Хуулах","copyError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.","cut":"Хайчлах","cutError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.","paste":"Буулгах","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Ишлэл хэсэг"},"basicstyles":{"bold":"Тод бүдүүн","italic":"Налуу","strike":"Дундуур нь зураастай болгох","subscript":"Суурь болгох","superscript":"Зэрэг болгох","underline":"Доогуур нь зураастай болгох"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Хэлбэрт бичвэр боловсруулагч","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Үйлчлэгч тооцоолуур (сервэр)-ийг үзэх","url":"цахим хуудасны хаяг (URL)","protocol":"Протокол","upload":"Илгээж ачаалах","uploadSubmit":"Үүнийг үйлчлэгч тооцоолуур (сервер) лүү илгээх","image":"Зураг","flash":"Флаш хөдөлгөөнтэй зураг","form":"Маягт","checkbox":"Тэмдэглээний нүд","radio":"Радио товчлуур","textField":"Бичвэрийн талбар","textarea":"Бичвэрийн зай","hiddenField":"Далд талбар","button":"Товчлуур","select":"Сонголтын талбар","imageButton":"Зургий товчуур","notSet":"<тохируулаагүй>","id":"Id (техникийн нэр)","name":"Нэр","langDir":"Хэлний чиглэл","langDirLtr":"Зүүнээс баруун (LTR)","langDirRtl":"Баруунаас зүүн (RTL)","langCode":"Хэлний код","longDescr":"Урт тайлбарын вэб хаяг","cssClass":"Хэлбэрийн хуудасны ангиуд","advisoryTitle":"Зөвлөх гарчиг","cssStyle":"Загвар","ok":"За","cancel":"Болих","close":"Хаах","preview":"Урьдчилан харах","resize":"Resize","generalTab":"Ерөнхий","advancedTab":"Гүнзгий","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Сонголт","target":"Бай","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Зүүн талаас баруун тийшээ (LTR)","langDirRTL":"Баруун талаас зүүн тийшээ (RTL)","styles":"Загвар","cssClasses":"Хэлбэрийн хуудасны ангиуд","width":"Өргөн","height":"Өндөр","align":"Эгнээ","alignLeft":"Зүүн","alignRight":"Баруун","alignCenter":"Төвд","alignJustify":"Тэгшлэх","alignTop":"Дээд талд","alignMiddle":"Дунд","alignBottom":"Доод талд","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Өндөр нь тоо байх ёстой.","invalidWidth":"Өргөн нь тоо байх ёстой.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ms.js b/vendor/unisharp/laravel-ckeditor/lang/ms.js deleted file mode 100644 index 94e42d5a4..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ms.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ms']={"wsc":{"btnIgnore":"Biar","btnIgnoreAll":"Biarkan semua","btnReplace":"Ganti","btnReplaceAll":"Gantikan Semua","btnUndo":"Batalkan","changeTo":"Tukarkan kepada","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?","manyChanges":"Pemeriksaan ejaan siap: %1 perkataan diubah","noChanges":"Pemeriksaan ejaan siap: Tiada perkataan diubah","noMispell":"Pemeriksaan ejaan siap: Tiada salah ejaan","noSuggestions":"- Tiada cadangan -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Tidak terdapat didalam kamus","oneChange":"Pemeriksaan ejaan siap: Satu perkataan telah diubah","progress":"Pemeriksaan ejaan sedang diproses...","title":"Spell Checker","toolbar":"Semak Ejaan"},"undo":{"redo":"Ulangkan","undo":"Batalkan"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Saiz Border","caption":"Keterangan","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Buangkan Sel-sel","merge":"Cantumkan Sel-sel","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Tambahan Ruang Sel","cellSpace":"Ruangan Antara Sel","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Buangkan Lajur"},"columns":"Jaluran","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Ciri-ciri Jadual","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Buangkan Baris"},"rows":"Barisan","summary":"Summary","title":"Ciri-ciri Jadual","toolbar":"Jadual","widthPc":"peratus","widthPx":"piksel-piksel","widthUnit":"width unit"},"stylescombo":{"label":"Stail","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Sila pilih huruf istimewa","toolbar":"Masukkan Huruf Istimewa"},"sourcearea":{"toolbar":"Sumber"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Buang Format"},"pastetext":{"button":"Tampal sebagai text biasa","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Tampal dari Word","toolbar":"Tampal dari Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Senarai tidak bernombor","numberedlist":"Senarai bernombor"},"link":{"acccessKey":"Kunci Akses","advanced":"Advanced","advisoryContentType":"Jenis Kandungan Makluman","advisoryTitle":"Tajuk Makluman","anchor":{"toolbar":"Masukkan/Sunting Pautan","menu":"Ciri-ciri Pautan","title":"Ciri-ciri Pautan","name":"Nama Pautan","errorName":"Sila taip nama pautan","remove":"Remove Anchor"},"anchorId":"dengan menggunakan ID elemen","anchorName":"dengan menggunakan nama pautan","charset":"Linked Resource Charset","cssClasses":"Kelas-kelas Stylesheet","download":"Force Download","displayText":"Display Text","emailAddress":"Alamat E-Mail","emailBody":"Isi Kandungan Mesej","emailSubject":"Subjek Mesej","id":"Id","info":"Butiran Sambungan","langCode":"Arah Tulisan","langDir":"Arah Tulisan","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","menu":"Sunting Sambungan","name":"Nama","noAnchors":"(Tiada pautan terdapat dalam dokumen ini)","noEmail":"Sila taip alamat e-mail","noUrl":"Sila taip sambungan URL","other":"<lain>","popupDependent":"Bergantungan (Netscape)","popupFeatures":"Ciri Tetingkap Popup","popupFullScreen":"Skrin Penuh (IE)","popupLeft":"Posisi Kiri","popupLocationBar":"Bar Lokasi","popupMenuBar":"Bar Menu","popupResizable":"Resizable","popupScrollBars":"Bar-bar skrol","popupStatusBar":"Bar Status","popupToolbar":"Toolbar","popupTop":"Posisi Atas","rel":"Relationship","selectAnchor":"Sila pilih pautan","styles":"Stail","tabIndex":"Indeks Tab ","target":"Sasaran","targetFrame":"<bingkai>","targetFrameName":"Nama Bingkai Sasaran","targetPopup":"<tetingkap popup>","targetPopupName":"Nama Tetingkap Popup","title":"Sambungan","toAnchor":"Pautan dalam muka surat ini","toEmail":"E-Mail","toUrl":"URL","toolbar":"Masukkan/Sunting Sambungan","type":"Jenis Sambungan","unlink":"Buang Sambungan","upload":"Muat Naik"},"indent":{"indent":"Tambahkan Inden","outdent":"Kurangkan Inden"},"image":{"alt":"Text Alternatif","border":"Border","btnUpload":"Hantar ke Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Ruang Melintang","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info Imej","linkTab":"Sambungan","lockRatio":"Tetapkan Nisbah","menu":"Ciri-ciri Imej","resetSize":"Saiz Set Semula","title":"Ciri-ciri Imej","titleButton":"Ciri-ciri Butang Bergambar","upload":"Muat Naik","urlMissing":"Image source URL is missing.","vSpace":"Ruang Menegak","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Masukkan Garisan Membujur"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Alamat","tag_div":"Perenggan (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Telah Diformat"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Salin","copyError":"Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).","cut":"Potong","cutError":"Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).","paste":"Tampal","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Muat Naik","uploadSubmit":"Hantar ke Server","image":"Gambar","flash":"Flash","form":"Borang","checkbox":"Checkbox","radio":"Butang Radio","textField":"Text Field","textarea":"Textarea","hiddenField":"Field Tersembunyi","button":"Butang","select":"Field Pilihan","imageButton":"Butang Bergambar","notSet":"<tidak di set>","id":"Id","name":"Nama","langDir":"Arah Tulisan","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri (RTL)","langCode":"Kod Bahasa","longDescr":"Butiran Panjang URL","cssClass":"Kelas-kelas Stylesheet","advisoryTitle":"Tajuk Makluman","cssStyle":"Stail","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Prebiu","resize":"Resize","generalTab":"Umum","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Sasaran","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Stail","cssClasses":"Kelas-kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Jajaran","alignLeft":"Kiri","alignRight":"Kanan","alignCenter":"Tengah","alignJustify":"Jajaran Blok","alignTop":"Atas","alignMiddle":"Pertengahan","alignBottom":"Bawah","alignNone":"None","invalidValue":"Nilai tidak sah.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/nb.js b/vendor/unisharp/laravel-ckeditor/lang/nb.js deleted file mode 100644 index 91597662b..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['nb']={"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer alle","btnReplace":"Erstatt","btnReplaceAll":"Erstatt alle","btnUndo":"Angre","changeTo":"Endre til","errorLoading":"Feil under lasting av applikasjonstjenestetjener: %s.","ieSpellDownload":"Stavekontroll er ikke installert. Vil du laste den ned nå?","manyChanges":"Stavekontroll fullført: %1 ord endret","noChanges":"Stavekontroll fullført: ingen ord endret","noMispell":"Stavekontroll fullført: ingen feilstavinger funnet","noSuggestions":"- Ingen forslag -","notAvailable":"Beklager, tjenesten er utilgjenglig nå.","notInDic":"Ikke i ordboken","oneChange":"Stavekontroll fullført: Ett ord endret","progress":"Stavekontroll pågår...","title":"Stavekontroll","toolbar":"Stavekontroll"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"Slå sammen celler","mergeRight":"Slå sammen høyre","mergeDown":"Slå sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde må være et tall.","invalidHeight":"Cellehøyde må være et tall.","invalidRowSpan":"Radspenn må være et heltall.","invalidColSpan":"Kolonnespenn må være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","invalidBorder":"Rammestørrelse må være et tall.","invalidCellPadding":"Cellepolstring må være et positivt tall.","invalidCellSpacing":"Cellemarg må være et positivt tall.","invalidCols":"Antall kolonner må være et tall større enn 0.","invalidHeight":"Tabellhøyde må være et tall.","invalidRows":"Antall rader må være et tall større enn 0.","invalidWidth":"Tabellbredde må være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcearea":{"toolbar":"Kilde"},"scayt":{"btn_about":"Om SCAYT","btn_dictionaries":"Ordbøker","btn_disable":"Slå av SCAYT","btn_enable":"Slå på SCAYT","btn_langs":"Språk","btn_options":"Valg","text_title":"Stavekontroll mens du skriver"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Nettleseren din lar deg ikke lime inn ren tekst på denne måten. Trykk %1 for å lime inn."},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Varsling lukket."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til / fjern punktliste","numberedlist":"Legg til / fjern nummerert liste"},"link":{"acccessKey":"Aksessknapp","advanced":"Avansert","advisoryContentType":"Type","advisoryTitle":"Tittel","anchor":{"toolbar":"Anker","menu":"Rediger anker","title":"Egenskaper for anker","name":"Ankernavn","errorName":"Vennligst skriv inn ankernavnet","remove":"Fjern anker"},"anchorId":"Element etter ID","anchorName":"Anker etter navn","charset":"Lenket tegnsett","cssClasses":"Stilarkklasser","download":"Tving nedlasting","displayText":"Tekst som skal vises","emailAddress":"E-postadresse","emailBody":"Melding","emailSubject":"Meldingsemne","id":"Id","info":"Lenkeinfo","langCode":"Språkkode","langDir":"Språkretning","langDirLTR":"Venstre til høyre (LTR)","langDirRTL":"Høyre til venstre (RTL)","menu":"Rediger lenke","name":"Navn","noAnchors":"(Ingen anker i dokumentet)","noEmail":"Vennligst skriv inn e-postadressen","noUrl":"Vennligst skriv inn lenkens URL","other":"<annen>","popupDependent":"Avhenging (Netscape)","popupFeatures":"Egenskaper for popup-vindu","popupFullScreen":"Fullskjerm (IE)","popupLeft":"Venstre posisjon","popupLocationBar":"Adresselinje","popupMenuBar":"Menylinje","popupResizable":"Skalerbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Verktøylinje","popupTop":"Topp-posisjon","rel":"Relasjon (rel)","selectAnchor":"Velg et anker","styles":"Stil","tabIndex":"Tabindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Målramme","targetPopup":"<popup-vindu>","targetPopupName":"Navn på popup-vindu","title":"Lenke","toAnchor":"Lenke til anker i teksten","toEmail":"E-post","toUrl":"URL","toolbar":"Lenke","type":"Lenketype","unlink":"Fjern lenke","upload":"Last opp"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image":{"alt":"Alternativ tekst","border":"Ramme","btnUpload":"Send det til serveren","button2Img":"Vil du endre den valgte bildeknappen til et vanlig bilde?","hSpace":"HMarg","img2Button":"Vil du endre det valgte bildet til en bildeknapp?","infoTab":"Bildeinformasjon","linkTab":"Lenke","lockRatio":"Lås forhold","menu":"Bildeegenskaper","resetSize":"Tilbakestill størrelse","title":"Bildeegenskaper","titleButton":"Egenskaper for bildeknapp","upload":"Last opp","urlMissing":"Bildets adresse mangler.","vSpace":"VMarg","validateBorder":"Ramme må være et heltall.","validateHSpace":"HMarg må være et heltall.","validateVSpace":"VMarg må være et heltall."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"fakeobjects":{"anchor":"Anker","flash":"Flash-animasjon","hiddenfield":"Skjult felt","iframe":"IFrame","unknown":"Ukjent objekt"},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Nettleseren din lar deg ikke lime inn på denne måten. Trykk %1 for å lime inn."},"button":{"selectedLabel":"%1 (Valgt)"},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor","help":"Se $1 for hjelp.","moreInfo":"For lisensieringsinformasjon, vennligst besøk vårt nettsted:","title":"Om CKEditor","userGuide":"CKEditors brukerveiledning"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla gjennom tjener","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"Tekstområde","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"Språkretning","langDirLtr":"Venstre til høyre (LTR)","langDirRtl":"Høyre til venstre (RTL)","langCode":"Språkkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"Forhåndsvis","resize":"Dra for å skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil gå tapt. Er du sikker på at du vil laste en ny side?","confirmCancel":"Du har endret noen alternativer. Er du sikker på at du vil lukke dialogvinduet?","options":"Valg","target":"Mål","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vinduet (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","alignLeft":"Venstre","alignRight":"Høyre","alignCenter":"Midtjuster","alignJustify":"Blokkjuster","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde må være et tall.","invalidWidth":"Bredde må være et tall.","invalidCssLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil må bestå av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellomrom","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Tastatursnarvei"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/nl.js b/vendor/unisharp/laravel-ckeditor/lang/nl.js deleted file mode 100644 index 5094e9e5f..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['nl']={"wsc":{"btnIgnore":"Negeren","btnIgnoreAll":"Alles negeren","btnReplace":"Vervangen","btnReplaceAll":"Alles vervangen","btnUndo":"Ongedaan maken","changeTo":"Wijzig in","errorLoading":"Er is een fout opgetreden bij het laden van de dienst: %s.","ieSpellDownload":"De spellingscontrole is niet geïnstalleerd. Wilt u deze nu downloaden?","manyChanges":"Klaar met spellingscontrole: %1 woorden aangepast","noChanges":"Klaar met spellingscontrole: geen woorden aangepast","noMispell":"Klaar met spellingscontrole: geen fouten gevonden","noSuggestions":"- Geen suggesties -","notAvailable":"Excuses, deze dienst is momenteel niet beschikbaar.","notInDic":"Niet in het woordenboek","oneChange":"Klaar met spellingscontrole: één woord aangepast","progress":"Bezig met spellingscontrole...","title":"Spellingscontrole","toolbar":"Spellingscontrole"},"undo":{"redo":"Opnieuw uitvoeren","undo":"Ongedaan maken"},"toolbar":{"toolbarCollapse":"Werkbalk inklappen","toolbarExpand":"Werkbalk uitklappen","toolbarGroups":{"document":"Document","clipboard":"Klembord/Ongedaan maken","editing":"Bewerken","forms":"Formulieren","basicstyles":"Basisstijlen","paragraph":"Paragraaf","links":"Links","insert":"Invoegen","styles":"Stijlen","colors":"Kleuren","tools":"Toepassingen"},"toolbars":"Werkbalken"},"table":{"border":"Randdikte","caption":"Titel","cell":{"menu":"Cel","insertBefore":"Voeg cel in voor","insertAfter":"Voeg cel in na","deleteCell":"Cellen verwijderen","merge":"Cellen samenvoegen","mergeRight":"Voeg samen naar rechts","mergeDown":"Voeg samen naar beneden","splitHorizontal":"Splits cel horizontaal","splitVertical":"Splits cel vertikaal","title":"Celeigenschappen","cellType":"Celtype","rowSpan":"Rijen samenvoegen","colSpan":"Kolommen samenvoegen","wordWrap":"Automatische terugloop","hAlign":"Horizontale uitlijning","vAlign":"Verticale uitlijning","alignBaseline":"Tekstregel","bgColor":"Achtergrondkleur","borderColor":"Randkleur","data":"Gegevens","header":"Kop","yes":"Ja","no":"Nee","invalidWidth":"De celbreedte moet een getal zijn.","invalidHeight":"De celhoogte moet een getal zijn.","invalidRowSpan":"Rijen samenvoegen moet een heel getal zijn.","invalidColSpan":"Kolommen samenvoegen moet een heel getal zijn.","chooseColor":"Kies"},"cellPad":"Celopvulling","cellSpace":"Celafstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Kolommen verwijderen"},"columns":"Kolommen","deleteTable":"Tabel verwijderen","headers":"Koppen","headersBoth":"Beide","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste rij","invalidBorder":"De randdikte moet een getal zijn.","invalidCellPadding":"Celopvulling moet een getal zijn.","invalidCellSpacing":"Celafstand moet een getal zijn.","invalidCols":"Het aantal kolommen moet een getal zijn groter dan 0.","invalidHeight":"De tabelhoogte moet een getal zijn.","invalidRows":"Het aantal rijen moet een getal zijn groter dan 0.","invalidWidth":"De tabelbreedte moet een getal zijn.","menu":"Tabeleigenschappen","row":{"menu":"Rij","insertBefore":"Voeg rij in voor","insertAfter":"Voeg rij in na","deleteRow":"Rijen verwijderen"},"rows":"Rijen","summary":"Samenvatting","title":"Tabeleigenschappen","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"eenheid breedte"},"stylescombo":{"label":"Stijl","panelTitle":"Opmaakstijlen","panelTitle1":"Blok stijlen","panelTitle2":"Inline stijlen","panelTitle3":"Object stijlen"},"specialchar":{"options":"Speciale tekens opties","title":"Selecteer speciaal teken","toolbar":"Speciaal teken invoegen"},"sourcearea":{"toolbar":"Broncode"},"scayt":{"btn_about":"Over SCAYT","btn_dictionaries":"Woordenboeken","btn_disable":"SCAYT uitschakelen","btn_enable":"SCAYT inschakelen","btn_langs":"Talen","btn_options":"Opties","text_title":"Controleer de spelling tijdens het typen"},"removeformat":{"toolbar":"Opmaak verwijderen"},"pastetext":{"button":"Plakken als platte tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?","error":"Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout","title":"Plakken vanuit Word","toolbar":"Plakken vanuit Word"},"notification":{"closed":"Melding gesloten."},"maximize":{"maximize":"Maximaliseren","minimize":"Minimaliseren"},"magicline":{"title":"Hier paragraaf invoeren"},"list":{"bulletedlist":"Opsomming invoegen","numberedlist":"Genummerde lijst invoegen"},"link":{"acccessKey":"Toegangstoets","advanced":"Geavanceerd","advisoryContentType":"Aanbevolen content-type","advisoryTitle":"Adviserende titel","anchor":{"toolbar":"Interne link","menu":"Eigenschappen interne link","title":"Eigenschappen interne link","name":"Naam interne link","errorName":"Geef de naam van de interne link op","remove":"Interne link verwijderen"},"anchorId":"Op kenmerk interne link","anchorName":"Op naam interne link","charset":"Karakterset van gelinkte bron","cssClasses":"Stylesheet-klassen","download":"Download forceren","displayText":"Weergavetekst","emailAddress":"E-mailadres","emailBody":"Inhoud bericht","emailSubject":"Onderwerp bericht","id":"Id","info":"Linkomschrijving","langCode":"Taalcode","langDir":"Schrijfrichting","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","menu":"Link wijzigen","name":"Naam","noAnchors":"(Geen interne links in document gevonden)","noEmail":"Geef een e-mailadres","noUrl":"Geef de link van de URL","other":"<ander>","popupDependent":"Afhankelijk (Netscape)","popupFeatures":"Instellingen popupvenster","popupFullScreen":"Volledig scherm (IE)","popupLeft":"Positie links","popupLocationBar":"Locatiemenu","popupMenuBar":"Menubalk","popupResizable":"Herschaalbaar","popupScrollBars":"Schuifbalken","popupStatusBar":"Statusbalk","popupToolbar":"Werkbalk","popupTop":"Positie boven","rel":"Relatie","selectAnchor":"Kies een interne link","styles":"Stijl","tabIndex":"Tabvolgorde","target":"Doelvenster","targetFrame":"<frame>","targetFrameName":"Naam doelframe","targetPopup":"<popupvenster>","targetPopupName":"Naam popupvenster","title":"Link","toAnchor":"Interne link in pagina","toEmail":"E-mail","toUrl":"URL","toolbar":"Link invoegen/wijzigen","type":"Linktype","unlink":"Link verwijderen","upload":"Upload"},"indent":{"indent":"Inspringing vergroten","outdent":"Inspringing verkleinen"},"image":{"alt":"Alternatieve tekst","border":"Rand","btnUpload":"Naar server verzenden","button2Img":"Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?","hSpace":"HSpace","img2Button":"Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?","infoTab":"Informatie afbeelding","linkTab":"Link","lockRatio":"Afmetingen vergrendelen","menu":"Eigenschappen afbeelding","resetSize":"Afmetingen resetten","title":"Eigenschappen afbeelding","titleButton":"Eigenschappen afbeeldingsknop","upload":"Upload","urlMissing":"De URL naar de afbeelding ontbreekt.","vSpace":"VSpace","validateBorder":"Rand moet een heel nummer zijn.","validateHSpace":"HSpace moet een heel nummer zijn.","validateVSpace":"VSpace moet een heel nummer zijn."},"horizontalrule":{"toolbar":"Horizontale lijn invoegen"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Kop 1","tag_h2":"Kop 2","tag_h3":"Kop 3","tag_h4":"Kop 4","tag_h5":"Kop 5","tag_h6":"Kop 6","tag_p":"Normaal","tag_pre":"Met opmaak"},"fakeobjects":{"anchor":"Interne link","flash":"Flash animatie","hiddenfield":"Verborgen veld","iframe":"IFrame","unknown":"Onbekend object"},"elementspath":{"eleLabel":"Elementenpad","eleTitle":"%1 element"},"contextmenu":{"options":"Contextmenu opties"},"clipboard":{"copy":"Kopiëren","copyError":"De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.","cut":"Knippen","cutError":"De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.","paste":"Plakken","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Geselecteerd)"},"blockquote":{"toolbar":"Citaatblok"},"basicstyles":{"bold":"Vet","italic":"Cursief","strike":"Doorhalen","subscript":"Subscript","superscript":"Superscript","underline":"Onderstrepen"},"about":{"copy":"Copyright © $1. Alle rechten voorbehouden.","dlgTitle":"Over CKEditor","help":"Bekijk de $1 voor hulp.","moreInfo":"Bezoek onze website voor licentieinformatie:","title":"Over CKEditor","userGuide":"CKEditor gebruiksaanwijzing"},"editor":"Tekstverwerker","editorPanel":"Tekstverwerker beheerpaneel","common":{"editorHelp":"Druk ALT 0 voor hulp","browseServer":"Bladeren op server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Naar server verzenden","image":"Afbeelding","flash":"Flash","form":"Formulier","checkbox":"Selectievinkje","radio":"Keuzerondje","textField":"Tekstveld","textarea":"Tekstvak","hiddenField":"Verborgen veld","button":"Knop","select":"Selectieveld","imageButton":"Afbeeldingsknop","notSet":"<niet ingevuld>","id":"Id","name":"Naam","langDir":"Schrijfrichting","langDirLtr":"Links naar rechts (LTR)","langDirRtl":"Rechts naar links (RTL)","langCode":"Taalcode","longDescr":"Lange URL-omschrijving","cssClass":"Stylesheet-klassen","advisoryTitle":"Adviserende titel","cssStyle":"Stijl","ok":"OK","cancel":"Annuleren","close":"Sluiten","preview":"Voorbeeld","resize":"Sleep om te herschalen","generalTab":"Algemeen","advancedTab":"Geavanceerd","validateNumberFailed":"Deze waarde is geen geldig getal.","confirmNewPage":"Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?","confirmCancel":"Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?","options":"Opties","target":"Doelvenster","targetNew":"Nieuw venster (_blank)","targetTop":"Hele venster (_top)","targetSelf":"Zelfde venster (_self)","targetParent":"Origineel venster (_parent)","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","styles":"Stijl","cssClasses":"Stylesheet-klassen","width":"Breedte","height":"Hoogte","align":"Uitlijning","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Centreren","alignJustify":"Uitvullen","alignTop":"Boven","alignMiddle":"Midden","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde.","invalidHeight":"De hoogte moet een getal zijn.","invalidWidth":"De breedte moet een getal zijn.","invalidCssLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).","invalidHtmlLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).","invalidInlineStyle":"Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat \"naam : waarde\", gescheiden door puntkomma's.","cssLengthTooltip":"Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, niet beschikbaar</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spatie","35":"End","36":"Home","46":"Verwijderen","224":"Command"},"keyboardShortcut":"Sneltoets"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/no.js b/vendor/unisharp/laravel-ckeditor/lang/no.js deleted file mode 100644 index f8cf75f51..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['no']={"wsc":{"btnIgnore":"Ignorer","btnIgnoreAll":"Ignorer alle","btnReplace":"Erstatt","btnReplaceAll":"Erstatt alle","btnUndo":"Angre","changeTo":"Endre til","errorLoading":"Feil under lasting av applikasjonstjenestetjener: %s.","ieSpellDownload":"Stavekontroll er ikke installert. Vil du laste den ned nå?","manyChanges":"Stavekontroll fullført: %1 ord endret","noChanges":"Stavekontroll fullført: ingen ord endret","noMispell":"Stavekontroll fullført: ingen feilstavinger funnet","noSuggestions":"- Ingen forslag -","notAvailable":"Beklager, tjenesten er utilgjenglig nå.","notInDic":"Ikke i ordboken","oneChange":"Stavekontroll fullført: Ett ord endret","progress":"Stavekontroll pågår...","title":"Stavekontroll","toolbar":"Stavekontroll"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"Slå sammen celler","mergeRight":"Slå sammen høyre","mergeDown":"Slå sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde må være et tall.","invalidHeight":"Cellehøyde må være et tall.","invalidRowSpan":"Radspenn må være et heltall.","invalidColSpan":"Kolonnespenn må være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","invalidBorder":"Rammestørrelse må være et tall.","invalidCellPadding":"Cellepolstring må være et positivt tall.","invalidCellSpacing":"Cellemarg må være et positivt tall.","invalidCols":"Antall kolonner må være et tall større enn 0.","invalidHeight":"Tabellhøyde må være et tall.","invalidRows":"Antall rader må være et tall større enn 0.","invalidWidth":"Tabellbredde må være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcearea":{"toolbar":"Kilde"},"scayt":{"btn_about":"Om SCAYT","btn_dictionaries":"Ordbøker","btn_disable":"Slå av SCAYT","btn_enable":"Slå på SCAYT","btn_langs":"Språk","btn_options":"Valg","text_title":"Stavekontroll mens du skriver"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til/Fjern punktmerket liste","numberedlist":"Legg til/Fjern nummerert liste"},"link":{"acccessKey":"Aksessknapp","advanced":"Avansert","advisoryContentType":"Type","advisoryTitle":"Tittel","anchor":{"toolbar":"Sett inn/Rediger anker","menu":"Egenskaper for anker","title":"Egenskaper for anker","name":"Ankernavn","errorName":"Vennligst skriv inn ankernavnet","remove":"Fjern anker"},"anchorId":"Element etter ID","anchorName":"Anker etter navn","charset":"Lenket tegnsett","cssClasses":"Stilarkklasser","download":"Force Download","displayText":"Tekst som skal vises","emailAddress":"E-postadresse","emailBody":"Melding","emailSubject":"Meldingsemne","id":"Id","info":"Lenkeinfo","langCode":"Språkkode","langDir":"Språkretning","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","menu":"Rediger lenke","name":"Navn","noAnchors":"(Ingen anker i dokumentet)","noEmail":"Vennligst skriv inn e-postadressen","noUrl":"Vennligst skriv inn lenkens URL","other":"<annen>","popupDependent":"Avhenging (Netscape)","popupFeatures":"Egenskaper for popup-vindu","popupFullScreen":"Fullskjerm (IE)","popupLeft":"Venstre posisjon","popupLocationBar":"Adresselinje","popupMenuBar":"Menylinje","popupResizable":"Skalerbar","popupScrollBars":"Scrollbar","popupStatusBar":"Statuslinje","popupToolbar":"Verktøylinje","popupTop":"Topp-posisjon","rel":"Relasjon (rel)","selectAnchor":"Velg et anker","styles":"Stil","tabIndex":"Tabindeks","target":"Mål","targetFrame":"<ramme>","targetFrameName":"Målramme","targetPopup":"<popup-vindu>","targetPopupName":"Navn på popup-vindu","title":"Lenke","toAnchor":"Lenke til anker i teksten","toEmail":"E-post","toUrl":"URL","toolbar":"Sett inn/Rediger lenke","type":"Lenketype","unlink":"Fjern lenke","upload":"Last opp"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image":{"alt":"Alternativ tekst","border":"Ramme","btnUpload":"Send det til serveren","button2Img":"Vil du endre den valgte bildeknappen til et vanlig bilde?","hSpace":"HMarg","img2Button":"Vil du endre det valgte bildet til en bildeknapp?","infoTab":"Bildeinformasjon","linkTab":"Lenke","lockRatio":"Lås forhold","menu":"Bildeegenskaper","resetSize":"Tilbakestill størrelse","title":"Bildeegenskaper","titleButton":"Egenskaper for bildeknapp","upload":"Last opp","urlMissing":"Bildets adresse mangler.","vSpace":"VMarg","validateBorder":"Ramme må være et heltall.","validateHSpace":"HMarg må være et heltall.","validateVSpace":"VMarg må være et heltall."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"fakeobjects":{"anchor":"Anker","flash":"Flash-animasjon","hiddenfield":"Skjult felt","iframe":"IFrame","unknown":"Ukjent objekt"},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Valgt)"},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor","help":"Se $1 for hjelp.","moreInfo":"For lisensieringsinformasjon, vennligst besøk vårt nettsted:","title":"Om CKEditor","userGuide":"CKEditors brukerveiledning"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla igjennom server","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"Tekstområde","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"Språkretning","langDirLtr":"Venstre til høyre (VTH)","langDirRtl":"Høyre til venstre (HTV)","langCode":"Språkkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"Forhåndsvis","resize":"Dra for å skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?","confirmCancel":"Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?","options":"Valg","target":"Mål","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vindu (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","alignLeft":"Venstre","alignRight":"Høyre","alignCenter":"Midtjuster","alignJustify":"Blokkjuster","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde må være et tall.","invalidWidth":"Bredde må være et tall.","invalidCssLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" må være et positivt tall med eller uten en gyldig HTML-målingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil må bestå av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/oc.js b/vendor/unisharp/laravel-ckeditor/lang/oc.js deleted file mode 100644 index d5da457ef..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['oc']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Refar","undo":"Restablir"},"toolbar":{"toolbarCollapse":"Enrotlar la barra d'aisinas","toolbarExpand":"Desenrotlar la barra d'aisinas","toolbarGroups":{"document":"Document","clipboard":"Quichapapièr/Desfar","editing":"Edicion","forms":"Formularis","basicstyles":"Estils de basa","paragraph":"Paragraf","links":"Ligams","insert":"Inserir","styles":"Estils","colors":"Colors","tools":"Aisinas"},"toolbars":"Barras d'aisinas de l'editor"},"table":{"border":"Talha de la bordadura","caption":"Títol del tablèu","cell":{"menu":"Cellula","insertBefore":"Inserir una cellula abans","insertAfter":"Inserir una cellula aprèp","deleteCell":"Suprimir las cellulas","merge":"Fusionar las cellulas","mergeRight":"Fusionar cap a dreita","mergeDown":"Fusionar cap aval","splitHorizontal":"Separar la cellula orizontalament","splitVertical":"Separar la cellula verticalament","title":"Proprietats de la cellula","cellType":"Tipe de cellula","rowSpan":"Linhas ocupadas","colSpan":"Colomnas ocupadas","wordWrap":"Cesura","hAlign":"Alinhament orizontal","vAlign":"Alinhament vertical","alignBaseline":"Linha de basa","bgColor":"Color de rèireplan","borderColor":"Color de bordadura","data":"Donadas","header":"Entèsta","yes":"Òc","no":"Non","invalidWidth":"La largor de la cellula deu èsser un nombre.","invalidHeight":"La nautor de la cellula deu èsser un nombre.","invalidRowSpan":"Lo nombre de linhas ocupadas deu èsser un nombre entièr.","invalidColSpan":"Lo nombre de colomnas ocupadas deu èsser un nombre entièr.","chooseColor":"Causir"},"cellPad":"Marge intèrne de las cellulas","cellSpace":"Espaçament entre las cellulas","column":{"menu":"Colomna","insertBefore":"Inserir una colomna abans","insertAfter":"Inserir una colomna aprèp","deleteColumn":"Suprimir las colomnas"},"columns":"Colomnas","deleteTable":"Suprimir lo tablèu","headers":"Entèstas","headersBoth":"Los dos","headersColumn":"Primièra colomna","headersNone":"Pas cap","headersRow":"Primièra linha","invalidBorder":"La talha de la bordadura deu èsser un nombre.","invalidCellPadding":"Lo marge intèrne de las cellulas deu èsser un nombre positiu.","invalidCellSpacing":"L'espaçament entre las cellulas deu èsser un nombre positiu.","invalidCols":"Lo nombre de colomnas deu èsser superior a 0.","invalidHeight":"La nautor del tablèu deu èsser un nombre.","invalidRows":"Lo nombre de linhas deu èsser superior a 0.","invalidWidth":"La largor del tablèu deu èsser un nombre.","menu":"Proprietats del tablèu","row":{"menu":"Linha","insertBefore":"Inserir una linha abans","insertAfter":"Inserir una linha aprèp","deleteRow":"Suprimir las linhas"},"rows":"Linhas","summary":"Resumit (descripcion)","title":"Proprietats del tablèu","toolbar":"Tablèu","widthPc":"per cent","widthPx":"pixèls","widthUnit":"unitat de largor"},"stylescombo":{"label":"Estils","panelTitle":"Estils de mesa en pagina","panelTitle1":"Estils de blòt","panelTitle2":"Estils en linha","panelTitle3":"Estils d'objècte"},"specialchar":{"options":"Opcions dels caractèrs especials","title":"Seleccionar un caractèr","toolbar":"Inserir un caractèr especial"},"sourcearea":{"toolbar":"Font"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Suprimir la mesa en forma"},"pastetext":{"button":"Pegar coma tèxte brut","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Sembla que lo tèxte de pegar proven de Word. Lo volètz netejar abans de lo pegar ?","error":"Las donadas pegadas an pas pogut èsser netejadas a causa d'una error intèrna","title":"Pegar dempuèi Word","toolbar":"Pegar dempuèi Word"},"notification":{"closed":"Notificacion tampada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir un paragraf aicí"},"list":{"bulletedlist":"Inserir/Suprimir una lista amb de piuses","numberedlist":"Inserir/Suprimir una lista numerotada"},"link":{"acccessKey":"Tòca d'accessibilitat","advanced":"Avançat","advisoryContentType":"Tipe de contengut (indicatiu)","advisoryTitle":"Infobulla","anchor":{"toolbar":"Ancòra","menu":"Modificar l'ancòra","title":"Proprietats de l'ancòra","name":"Nom de l'ancòra","errorName":"Entratz lo nom de l'ancòra","remove":"Suprimir l'ancòra"},"anchorId":"Per ID d'element","anchorName":"Per nom d'ancòra","charset":"Encodatge de la ressorsa ligada","cssClasses":"Classas d'estil","download":"Forçar lo telecargament","displayText":"Afichar lo tèxte","emailAddress":"Adreça electronica","emailBody":"Còs del messatge","emailSubject":"Subjècte del messatge","id":"Id","info":"Informacions sul ligam","langCode":"Còdi de lenga","langDir":"Sens d'escritura","langDirLTR":"Esquèrra a dreita (LTR)","langDirRTL":"Dreita a esquèrra (RTL)","menu":"Modificar lo ligam","name":"Nom","noAnchors":"(Cap d'ancòra pas disponibla dins aqueste document)","noEmail":"Entratz l'adreça electronica","noUrl":"Entratz l'URL del ligam","other":"<autre>","popupDependent":"Dependenta (Netscape)","popupFeatures":"Caracteristicas de la fenèstra sorgissenta","popupFullScreen":"Ecran complet (IE)","popupLeft":"A esquèrra","popupLocationBar":"Barra d'adreça","popupMenuBar":"Barra de menú","popupResizable":"Redimensionable","popupScrollBars":"Barras de desfilament","popupStatusBar":"Barra d'estat","popupToolbar":"Barra d'aisinas","popupTop":"Amont","rel":"Relacion","selectAnchor":"Seleccionar una ancòra","styles":"Estil","tabIndex":"Indici de tabulacion","target":"Cibla","targetFrame":"<quadre>","targetFrameName":"Nom del quadre afectat","targetPopup":"<fenèstra sorgissenta>","targetPopupName":"Nom de la fenèstra sorgissenta","title":"Ligam","toAnchor":"Ancòra","toEmail":"Corrièl","toUrl":"URL","toolbar":"Ligam","type":"Tipe de ligam","unlink":"Suprimir lo ligam","upload":"Mandar"},"indent":{"indent":"Aumentar l'alinèa","outdent":"Dmesir l'alinèa"},"image":{"alt":"Tèxte alternatiu","border":"Bordadura","btnUpload":"Mandar sul servidor","button2Img":"Volètz transformar lo boton amb imatge seleccionat en imatge simple ?","hSpace":"Espaçament orizontal","img2Button":"Volètz transformar l'imatge seleccionat en boton amb imatge ?","infoTab":"Informacions sus l'imatge","linkTab":"Ligam","lockRatio":"Conservar las proporcions","menu":"Proprietats de l'imatge","resetSize":"Reïnicializar la talha","title":"Proprietats de l'imatge","titleButton":"Proprietats del boton amb imatge","upload":"Mandar","urlMissing":"L'URL font de l'imatge es mancanta.","vSpace":"Espaçament vertical","validateBorder":"La bordadura deu èsser un nombre entièr.","validateHSpace":"L'espaçament orizontal deu èsser un nombre entièr.","validateVSpace":"L'espaçament vertical deu èsser un nombre entièr."},"horizontalrule":{"toolbar":"Inserir una linha orizontala"},"format":{"label":"Format","panelTitle":"Format de paragraf","tag_address":"Adreça","tag_div":"Division (DIV)","tag_h1":"Títol 1","tag_h2":"Títol 2","tag_h3":"Títol 3","tag_h4":"Títol 4","tag_h5":"Títol 5","tag_h6":"Títol 6","tag_p":"Normal","tag_pre":"Preformatat"},"fakeobjects":{"anchor":"Ancòra","flash":"Animacion Flash","hiddenfield":"Camp invisible","iframe":"Quadre de contengut incorporat","unknown":"Objècte desconegut"},"elementspath":{"eleLabel":"Camin dels elements","eleTitle":"Element %1"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Copiar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+C).","cut":"Talhar","cutError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Talhar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Seleccionat)"},"blockquote":{"toolbar":"Citacion"},"basicstyles":{"bold":"Gras","italic":"Italica","strike":"Raiat","subscript":"Indici","superscript":"Exponent","underline":"Solinhat"},"about":{"copy":"Copyright © $1. Totes los dreits reservats.","dlgTitle":"A prepaus de CKEditor","help":"Consultar $1 per obténer d'ajuda.","moreInfo":"Per las informacions de licéncia, visitatz nòstre site web :","title":"A prepaus de CKEditor","userGuide":"Guida de l'utilizaire CKEditor (en anglés)"},"editor":"Editor de tèxte enriquit","editorPanel":"Tablèu de bòrd de l'editor de tèxte enriquit","common":{"editorHelp":"Utilisatz l'acorchi Alt-0 per obténer d'ajuda","browseServer":"Percórrer lo servidor","url":"URL","protocol":"Protocòl","upload":"Mandar","uploadSubmit":"Mandar sul servidor","image":"Imatge","flash":"Flash","form":"Formulari","checkbox":"Casa de marcar","radio":"Boton ràdio","textField":"Camp tèxte","textarea":"Zòna de tèxte","hiddenField":"Camp invisible","button":"Boton","select":"Lista desenrotlanta","imageButton":"Boton amb imatge","notSet":"<indefinit>","id":"Id","name":"Nom","langDir":"Sens d'escritura","langDirLtr":"Esquèrra a dreita (LTR)","langDirRtl":"Dreita a esquèrra (RTL)","langCode":"Còdi de lenga","longDescr":"URL de descripcion longa","cssClass":"Classas d'estil","advisoryTitle":"Infobulla","cssStyle":"Estil","ok":"D'acòrdi","cancel":"Anullar","close":"Tampar","preview":"Previsualizar","resize":"Redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquesta valor es pas un nombre.","confirmNewPage":"Los cambiaments pas salvats seràn perduts. Sètz segur que volètz cargar una novèla pagina ?","confirmCancel":"Certanas opcions son estadas modificadas. Sètz segur que volètz tampar ?","options":"Opcions","target":"Cibla","targetNew":"Novèla fenèstra (_blank)","targetTop":"Fenèstra superiora (_top)","targetSelf":"Meteissa fenèstra (_self)","targetParent":"Fenèstra parent (_parent)","langDirLTR":"Esquèrra a dreita (LTR)","langDirRTL":"Dreita a esquèrra (RTL)","styles":"Estil","cssClasses":"Classas d'estil","width":"Largor","height":"Nautor","align":"Alinhament","alignLeft":"Esquèrra","alignRight":"Dreita","alignCenter":"Centrar","alignJustify":"Justificar","alignTop":"Naut","alignMiddle":"Mitan","alignBottom":"Bas","alignNone":"Pas cap","invalidValue":"Valor invalida.","invalidHeight":"La nautor deu èsser un nombre.","invalidWidth":"La largor deu èsser un nombre.","invalidCssLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura CSS valid (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura HTML valid (px o %).","invalidInlineStyle":"La valor especificada per l'estil en linha deu èsser compausada d'un o mantun parelh al format « nom : valor », separats per de punts-virgulas.","cssLengthTooltip":"Entrar un nombre per una valor en pixèls o un nombre amb una unitat de mesura CSS valida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retorn","13":"Entrada","16":"Majuscula","17":"Ctrl","18":"Alt","32":"Espaci","35":"Fin","36":"Origina","46":"Suprimir","224":"Comanda"},"keyboardShortcut":"Acorchi de clavièr"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/pl.js b/vendor/unisharp/laravel-ckeditor/lang/pl.js deleted file mode 100644 index 0cc15f897..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['pl']={"wsc":{"btnIgnore":"Ignoruj","btnIgnoreAll":"Ignoruj wszystkie","btnReplace":"Zmień","btnReplaceAll":"Zmień wszystkie","btnUndo":"Cofnij","changeTo":"Zmień na","errorLoading":"Błąd wczytywania hosta aplikacji usługi: %s.","ieSpellDownload":"Słownik nie jest zainstalowany. Czy chcesz go pobrać?","manyChanges":"Sprawdzanie zakończone: zmieniono %l słów","noChanges":"Sprawdzanie zakończone: nie zmieniono żadnego słowa","noMispell":"Sprawdzanie zakończone: nie znaleziono błędów","noSuggestions":"- Brak sugestii -","notAvailable":"Przepraszamy, ale usługa jest obecnie niedostępna.","notInDic":"Słowa nie ma w słowniku","oneChange":"Sprawdzanie zakończone: zmieniono jedno słowo","progress":"Trwa sprawdzanie...","title":"Sprawdź pisownię","toolbar":"Sprawdź pisownię"},"undo":{"redo":"Ponów","undo":"Cofnij"},"toolbar":{"toolbarCollapse":"Zwiń pasek narzędzi","toolbarExpand":"Rozwiń pasek narzędzi","toolbarGroups":{"document":"Dokument","clipboard":"Schowek/Wstecz","editing":"Edycja","forms":"Formularze","basicstyles":"Style podstawowe","paragraph":"Akapit","links":"Hiperłącza","insert":"Wstawianie","styles":"Style","colors":"Kolory","tools":"Narzędzia"},"toolbars":"Paski narzędzi edytora"},"table":{"border":"Grubość obramowania","caption":"Tytuł","cell":{"menu":"Komórka","insertBefore":"Wstaw komórkę z lewej","insertAfter":"Wstaw komórkę z prawej","deleteCell":"Usuń komórki","merge":"Połącz komórki","mergeRight":"Połącz z komórką z prawej","mergeDown":"Połącz z komórką poniżej","splitHorizontal":"Podziel komórkę poziomo","splitVertical":"Podziel komórkę pionowo","title":"Właściwości komórki","cellType":"Typ komórki","rowSpan":"Scalenie wierszy","colSpan":"Scalenie komórek","wordWrap":"Zawijanie słów","hAlign":"Wyrównanie poziome","vAlign":"Wyrównanie pionowe","alignBaseline":"Linia bazowa","bgColor":"Kolor tła","borderColor":"Kolor obramowania","data":"Dane","header":"Nagłówek","yes":"Tak","no":"Nie","invalidWidth":"Szerokość komórki musi być liczbą.","invalidHeight":"Wysokość komórki musi być liczbą.","invalidRowSpan":"Scalenie wierszy musi być liczbą całkowitą.","invalidColSpan":"Scalenie komórek musi być liczbą całkowitą.","chooseColor":"Wybierz"},"cellPad":"Dopełnienie komórek","cellSpace":"Odstęp pomiędzy komórkami","column":{"menu":"Kolumna","insertBefore":"Wstaw kolumnę z lewej","insertAfter":"Wstaw kolumnę z prawej","deleteColumn":"Usuń kolumny"},"columns":"Liczba kolumn","deleteTable":"Usuń tabelę","headers":"Nagłówki","headersBoth":"Oba","headersColumn":"Pierwsza kolumna","headersNone":"Brak","headersRow":"Pierwszy wiersz","invalidBorder":"Wartość obramowania musi być liczbą.","invalidCellPadding":"Dopełnienie komórek musi być liczbą dodatnią.","invalidCellSpacing":"Odstęp pomiędzy komórkami musi być liczbą dodatnią.","invalidCols":"Liczba kolumn musi być większa niż 0.","invalidHeight":"Wysokość tabeli musi być liczbą.","invalidRows":"Liczba wierszy musi być większa niż 0.","invalidWidth":"Szerokość tabeli musi być liczbą.","menu":"Właściwości tabeli","row":{"menu":"Wiersz","insertBefore":"Wstaw wiersz powyżej","insertAfter":"Wstaw wiersz poniżej","deleteRow":"Usuń wiersze"},"rows":"Liczba wierszy","summary":"Podsumowanie","title":"Właściwości tabeli","toolbar":"Tabela","widthPc":"%","widthPx":"piksele","widthUnit":"jednostka szerokości"},"stylescombo":{"label":"Styl","panelTitle":"Style formatujące","panelTitle1":"Style blokowe","panelTitle2":"Style liniowe","panelTitle3":"Style obiektowe"},"specialchar":{"options":"Opcje znaków specjalnych","title":"Wybierz znak specjalny","toolbar":"Wstaw znak specjalny"},"sourcearea":{"toolbar":"Źródło dokumentu"},"scayt":{"btn_about":"Informacje o SCAYT","btn_dictionaries":"Słowniki","btn_disable":"Wyłącz SCAYT","btn_enable":"Włącz SCAYT","btn_langs":"Języki","btn_options":"Opcje","text_title":"Sprawdź pisownię podczas pisania (SCAYT)"},"removeformat":{"toolbar":"Usuń formatowanie"},"pastetext":{"button":"Wklej jako czysty tekst","pasteNotification":"Twoja przeglądarka nie pozwala na wklejanie treści w ten sposób. Naciśnij %1 by wkleić tekst."},"pastefromword":{"confirmCleanup":"Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyścić przed wklejeniem?","error":"Wyczyszczenie wklejonych danych nie było możliwe z powodu wystąpienia błędu.","title":"Wklej z programu MS Word","toolbar":"Wklej z programu MS Word"},"notification":{"closed":"Powiadomienie zostało zamknięte."},"maximize":{"maximize":"Maksymalizuj","minimize":"Minimalizuj"},"magicline":{"title":"Wstaw nowy akapit"},"list":{"bulletedlist":"Lista wypunktowana","numberedlist":"Lista numerowana"},"link":{"acccessKey":"Klawisz dostępu","advanced":"Zaawansowane","advisoryContentType":"Typ MIME obiektu docelowego","advisoryTitle":"Opis obiektu docelowego","anchor":{"toolbar":"Wstaw/edytuj kotwicę","menu":"Właściwości kotwicy","title":"Właściwości kotwicy","name":"Nazwa kotwicy","errorName":"Wpisz nazwę kotwicy","remove":"Usuń kotwicę"},"anchorId":"Wg identyfikatora","anchorName":"Wg nazwy","charset":"Kodowanie znaków obiektu docelowego","cssClasses":"Nazwa klasy CSS","download":"Wymuś pobieranie","displayText":"Wyświetlany tekst","emailAddress":"Adres e-mail","emailBody":"Treść","emailSubject":"Temat","id":"Id","info":"Informacje ","langCode":"Kod języka","langDir":"Kierunek tekstu","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","menu":"Edytuj odnośnik","name":"Nazwa","noAnchors":"(W dokumencie nie zdefiniowano żadnych kotwic)","noEmail":"Podaj adres e-mail","noUrl":"Podaj adres URL","other":"<inny>","popupDependent":"Okno zależne (Netscape)","popupFeatures":"Właściwości wyskakującego okna","popupFullScreen":"Pełny ekran (IE)","popupLeft":"Pozycja w poziomie","popupLocationBar":"Pasek adresu","popupMenuBar":"Pasek menu","popupResizable":"Skalowalny","popupScrollBars":"Paski przewijania","popupStatusBar":"Pasek statusu","popupToolbar":"Pasek narzędzi","popupTop":"Pozycja w pionie","rel":"Relacja","selectAnchor":"Wybierz kotwicę","styles":"Styl","tabIndex":"Indeks kolejności","target":"Obiekt docelowy","targetFrame":"<ramka>","targetFrameName":"Nazwa ramki docelowej","targetPopup":"<wyskakujące okno>","targetPopupName":"Nazwa wyskakującego okna","title":"Odnośnik","toAnchor":"Odnośnik wewnątrz strony (kotwica)","toEmail":"Adres e-mail","toUrl":"Adres URL","toolbar":"Wstaw/edytuj odnośnik","type":"Typ odnośnika","unlink":"Usuń odnośnik","upload":"Wyślij"},"indent":{"indent":"Zwiększ wcięcie","outdent":"Zmniejsz wcięcie"},"image":{"alt":"Tekst zastępczy","border":"Obramowanie","btnUpload":"Wyślij","button2Img":"Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?","hSpace":"Odstęp poziomy","img2Button":"Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?","infoTab":"Informacje o obrazku","linkTab":"Hiperłącze","lockRatio":"Zablokuj proporcje","menu":"Właściwości obrazka","resetSize":"Przywróć rozmiar","title":"Właściwości obrazka","titleButton":"Właściwości przycisku graficznego","upload":"Wyślij","urlMissing":"Podaj adres URL obrazka.","vSpace":"Odstęp pionowy","validateBorder":"Wartość obramowania musi być liczbą całkowitą.","validateHSpace":"Wartość odstępu poziomego musi być liczbą całkowitą.","validateVSpace":"Wartość odstępu pionowego musi być liczbą całkowitą."},"horizontalrule":{"toolbar":"Wstaw poziomą linię"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adres","tag_div":"Normalny (DIV)","tag_h1":"Nagłówek 1","tag_h2":"Nagłówek 2","tag_h3":"Nagłówek 3","tag_h4":"Nagłówek 4","tag_h5":"Nagłówek 5","tag_h6":"Nagłówek 6","tag_p":"Normalny","tag_pre":"Tekst sformatowany"},"fakeobjects":{"anchor":"Kotwica","flash":"Animacja Flash","hiddenfield":"Pole ukryte","iframe":"IFrame","unknown":"Nieznany obiekt"},"elementspath":{"eleLabel":"Ścieżka elementów","eleTitle":"element %1"},"contextmenu":{"options":"Opcje menu kontekstowego"},"clipboard":{"copy":"Kopiuj","copyError":"Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.","cut":"Wytnij","cutError":"Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.","paste":"Wklej","pasteNotification":"Twoja przeglądarka nie pozwala na wklejanie treści w ten sposób. Naciśnij %1 by wkleić tekst."},"button":{"selectedLabel":"%1 (Wybrany)"},"blockquote":{"toolbar":"Cytat"},"basicstyles":{"bold":"Pogrubienie","italic":"Kursywa","strike":"Przekreślenie","subscript":"Indeks dolny","superscript":"Indeks górny","underline":"Podkreślenie"},"about":{"copy":"Copyright © $1. Wszelkie prawa zastrzeżone.","dlgTitle":"Informacje o programie CKEditor","help":"Pomoc znajdziesz w $1.","moreInfo":"Informacje na temat licencji można znaleźć na naszej stronie:","title":"Informacje o programie CKEditor","userGuide":"podręczniku użytkownika programu CKEditor"},"editor":"Edytor tekstu sformatowanego","editorPanel":"Panel edytora tekstu sformatowanego","common":{"editorHelp":"W celu uzyskania pomocy naciśnij ALT 0","browseServer":"Przeglądaj","url":"Adres URL","protocol":"Protokół","upload":"Wyślij","uploadSubmit":"Wyślij","image":"Obrazek","flash":"Flash","form":"Formularz","checkbox":"Pole wyboru (checkbox)","radio":"Przycisk opcji (radio)","textField":"Pole tekstowe","textarea":"Obszar tekstowy","hiddenField":"Pole ukryte","button":"Przycisk","select":"Lista wyboru","imageButton":"Przycisk graficzny","notSet":"<nie ustawiono>","id":"Id","name":"Nazwa","langDir":"Kierunek tekstu","langDirLtr":"Od lewej do prawej (LTR)","langDirRtl":"Od prawej do lewej (RTL)","langCode":"Kod języka","longDescr":"Adres URL długiego opisu","cssClass":"Nazwa klasy CSS","advisoryTitle":"Opis obiektu docelowego","cssStyle":"Styl","ok":"OK","cancel":"Anuluj","close":"Zamknij","preview":"Podgląd","resize":"Przeciągnij, aby zmienić rozmiar","generalTab":"Ogólne","advancedTab":"Zaawansowane","validateNumberFailed":"Ta wartość nie jest liczbą.","confirmNewPage":"Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?","confirmCancel":"Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?","options":"Opcje","target":"Obiekt docelowy","targetNew":"Nowe okno (_blank)","targetTop":"Okno najwyżej w hierarchii (_top)","targetSelf":"To samo okno (_self)","targetParent":"Okno nadrzędne (_parent)","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","styles":"Style","cssClasses":"Klasy arkusza stylów","width":"Szerokość","height":"Wysokość","align":"Wyrównaj","alignLeft":"Do lewej","alignRight":"Do prawej","alignCenter":"Do środka","alignJustify":"Wyjustuj","alignTop":"Do góry","alignMiddle":"Do środka","alignBottom":"Do dołu","alignNone":"Brak","invalidValue":"Nieprawidłowa wartość.","invalidHeight":"Wysokość musi być liczbą.","invalidWidth":"Szerokość musi być liczbą.","invalidCssLength":"Wartość podana dla pola \"%1\" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","invalidHtmlLength":"Wartość podana dla pola \"%1\" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z HTML (px lub %).","invalidInlineStyle":"Wartość podana dla stylu musi składać się z jednej lub większej liczby krotek w formacie \"nazwa : wartość\", rozdzielonych średnikami.","cssLengthTooltip":"Wpisz liczbę dla wartości w pikselach lub liczbę wraz z jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","unavailable":"%1<span class=\"cke_accessibility\">, niedostępne</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"spacja","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Skrót klawiszowy"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/lang/pt-br.js deleted file mode 100644 index e7844c36a..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['pt-br']={"wsc":{"btnIgnore":"Ignorar uma vez","btnIgnoreAll":"Ignorar Todas","btnReplace":"Alterar","btnReplaceAll":"Alterar Todas","btnUndo":"Desfazer","changeTo":"Alterar para","errorLoading":"Erro carregando servidor de aplicação: %s.","ieSpellDownload":"A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?","manyChanges":"Verificação ortográfica encerrada: %1 palavras foram alteradas","noChanges":"Verificação ortográfica encerrada: Não houve alterações","noMispell":"Verificação encerrada: Não foram encontrados erros de ortografia","noSuggestions":"-sem sugestões de ortografia-","notAvailable":"Desculpe, o serviço não está disponível no momento.","notInDic":"Não encontrada","oneChange":"Verificação ortográfica encerrada: Uma palavra foi alterada","progress":"Verificação ortográfica em andamento...","title":"Corretor Ortográfico","toolbar":"Verificar Ortografia"},"undo":{"redo":"Refazer","undo":"Desfazer"},"toolbar":{"toolbarCollapse":"Diminuir Barra de Ferramentas","toolbarExpand":"Aumentar Barra de Ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Clipboard/Desfazer","editing":"Edição","forms":"Formulários","basicstyles":"Estilos Básicos","paragraph":"Paragrafo","links":"Links","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barra de Ferramentas do Editor"},"table":{"border":"Borda","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula a esquerda","insertAfter":"Inserir célula a direita","deleteCell":"Remover Células","merge":"Mesclar Células","mergeRight":"Mesclar com célula a direita","mergeDown":"Mesclar com célula abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas cobertas","colSpan":"Colunas cobertas","wordWrap":"Quebra de palavra","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Patamar de alinhamento","bgColor":"Cor de fundo","borderColor":"Cor das bordas","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula tem que ser um número.","invalidHeight":"A altura da célula tem que ser um número.","invalidRowSpan":"Linhas cobertas tem que ser um número inteiro.","invalidColSpan":"Colunas cobertas tem que ser um número inteiro.","chooseColor":"Escolher"},"cellPad":"Margem interna","cellSpace":"Espaçamento","column":{"menu":"Coluna","insertBefore":"Inserir coluna a esquerda","insertAfter":"Inserir coluna a direita","deleteColumn":"Remover Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalho","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","invalidBorder":"O tamanho da borda tem que ser um número.","invalidCellPadding":"A margem interna das células tem que ser um número.","invalidCellSpacing":"O espaçamento das células tem que ser um número.","invalidCols":"O número de colunas tem que ser um número maior que 0.","invalidHeight":"A altura da tabela tem que ser um número.","invalidRows":"O número de linhas tem que ser um número maior que 0.","invalidWidth":"A largura da tabela tem que ser um número.","menu":"Formatar Tabela","row":{"menu":"Linha","insertBefore":"Inserir linha acima","insertAfter":"Inserir linha abaixo","deleteRow":"Remover Linhas"},"rows":"Linhas","summary":"Resumo","title":"Formatar Tabela","toolbar":"Tabela","widthPc":"%","widthPx":"pixels","widthUnit":"unidade largura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos de texto corrido","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opções de Caractere Especial","title":"Selecione um Caractere Especial","toolbar":"Inserir Caractere Especial"},"sourcearea":{"toolbar":"Código-Fonte"},"scayt":{"btn_about":"Sobre a correção ortográfica durante a digitação","btn_dictionaries":"Dicionários","btn_disable":"Desabilitar correção ortográfica durante a digitação","btn_enable":"Habilitar correção ortográfica durante a digitação","btn_langs":"Idiomas","btn_options":"Opções","text_title":"Correção ortográfica durante a digitação"},"removeformat":{"toolbar":"Remover Formatação"},"pastetext":{"button":"Colar como Texto sem Formatação","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?","error":"Não foi possível limpar os dados colados devido a um erro interno","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação fechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimize"},"magicline":{"title":"Insera um parágrafo aqui"},"list":{"bulletedlist":"Lista sem números","numberedlist":"Lista numerada"},"link":{"acccessKey":"Chave de Acesso","advanced":"Avançado","advisoryContentType":"Tipo de Conteúdo","advisoryTitle":"Título","anchor":{"toolbar":"Inserir/Editar Âncora","menu":"Formatar Âncora","title":"Formatar Âncora","name":"Nome da Âncora","errorName":"Por favor, digite o nome da âncora","remove":"Remover Âncora"},"anchorId":"Id da âncora","anchorName":"Nome da âncora","charset":"Charset do Link","cssClasses":"Classe de CSS","download":"Forçar Download","displayText":"Exibir Texto","emailAddress":"Endereço E-Mail","emailBody":"Corpo da Mensagem","emailSubject":"Assunto da Mensagem","id":"Id","info":"Informações","langCode":"Direção do idioma","langDir":"Direção do idioma","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","menu":"Editar Link","name":"Nome","noAnchors":"(Não há âncoras no documento)","noEmail":"Por favor, digite o endereço de e-mail","noUrl":"Por favor, digite o endereço do Link","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Propriedades da Janela Pop-up","popupFullScreen":"Modo Tela Cheia (IE)","popupLeft":"Esquerda","popupLocationBar":"Barra de Endereços","popupMenuBar":"Barra de Menus","popupResizable":"Redimensionável","popupScrollBars":"Barras de Rolagem","popupStatusBar":"Barra de Status","popupToolbar":"Barra de Ferramentas","popupTop":"Topo","rel":"Tipo de Relação","selectAnchor":"Selecione uma âncora","styles":"Estilos","tabIndex":"Índice de Tabulação","target":"Destino","targetFrame":"<frame>","targetFrameName":"Nome do Frame de Destino","targetPopup":"<janela popup>","targetPopupName":"Nome da Janela Pop-up","title":"Editar Link","toAnchor":"Âncora nesta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserir/Editar Link","type":"Tipo de hiperlink","unlink":"Remover Link","upload":"Enviar ao Servidor"},"indent":{"indent":"Aumentar Recuo","outdent":"Diminuir Recuo"},"image":{"alt":"Texto Alternativo","border":"Borda","btnUpload":"Enviar para o Servidor","button2Img":"Deseja transformar o botão de imagem em uma imagem comum?","hSpace":"HSpace","img2Button":"Deseja transformar a imagem em um botão de imagem?","infoTab":"Informações da Imagem","linkTab":"Link","lockRatio":"Travar Proporções","menu":"Formatar Imagem","resetSize":"Redefinir para o Tamanho Original","title":"Formatar Imagem","titleButton":"Formatar Botão de Imagem","upload":"Enviar","urlMissing":"URL da imagem está faltando.","vSpace":"VSpace","validateBorder":"A borda deve ser um número inteiro.","validateHSpace":"O HSpace deve ser um número inteiro.","validateVSpace":"O VSpace deve ser um número inteiro."},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"format":{"label":"Formatação","panelTitle":"Formatação","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"Título 1","tag_h2":"Título 2","tag_h3":"Título 3","tag_h4":"Título 4","tag_h5":"Título 5","tag_h6":"Título 6","tag_p":"Normal","tag_pre":"Formatado"},"fakeobjects":{"anchor":"Âncora","flash":"Animação em Flash","hiddenfield":"Campo Oculto","iframe":"IFrame","unknown":"Objeto desconhecido"},"elementspath":{"eleLabel":"Caminho dos Elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opções Menu de Contexto"},"clipboard":{"copy":"Copiar","copyError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).","cut":"Recortar","cutError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selecionado)"},"blockquote":{"toolbar":"Citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Tachado","subscript":"Subscrito","superscript":"Sobrescrito","underline":"Sublinhado"},"about":{"copy":"Copyright © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Verifique o $1 para obter ajuda.","moreInfo":"Para informações sobre a licença por favor visite o nosso site:","title":"Sobre o CKEditor","userGuide":"Guia do Usuário do CKEditor"},"editor":"Editor de Rich Text","editorPanel":"Painel do editor de Rich Text","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Localizar no Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar ao Servidor","uploadSubmit":"Enviar para o Servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Caixa de Texto","textarea":"Área de Texto","hiddenField":"Campo Oculto","button":"Botão","select":"Caixa de Listagem","imageButton":"Botão de Imagem","notSet":"<não ajustado>","id":"Id","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para Direita (LTR)","langDirRtl":"Direita para Esquerda (RTL)","langCode":"Idioma","longDescr":"Descrição da URL","cssClass":"Classe de CSS","advisoryTitle":"Título","cssStyle":"Estilos","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Visualizar","resize":"Arraste para redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um número.","confirmNewPage":"Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?","confirmCancel":"Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela de Cima (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Pai (_parent)","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","styles":"Estilo","cssClasses":"Classes","width":"Largura","height":"Altura","align":"Alinhamento","alignLeft":"Esquerda","alignRight":"Direita","alignCenter":"Centralizado","alignJustify":"Justificar","alignTop":"Superior","alignMiddle":"Centralizado","alignBottom":"Inferior","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura tem que ser um número","invalidWidth":"A largura tem que ser um número.","invalidCssLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","invalidHtmlLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px ou %).","invalidInlineStyle":"O valor válido para estilo deve conter uma ou mais tuplas no formato \"nome : valor\", separados por ponto e vírgula.","cssLengthTooltip":"Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponível</span>","keyboard":{"8":"Tecla Retroceder","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tecla Espaço","35":"End","36":"Home","46":"Delete","224":"Comando"},"keyboardShortcut":"Atalho do teclado"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/pt.js b/vendor/unisharp/laravel-ckeditor/lang/pt.js deleted file mode 100644 index 84a4a308e..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['pt']={"wsc":{"btnIgnore":"Ignorar","btnIgnoreAll":"Ignorar Tudo","btnReplace":"Substituir","btnReplaceAll":"Substituir Tudo","btnUndo":"Anular","changeTo":"Mudar para","errorLoading":"Error loading application service host: %s.","ieSpellDownload":" Verificação ortográfica não instalada. Quer descarregar agora?","manyChanges":"Verificação ortográfica completa: %1 palavras alteradas","noChanges":"Verificação ortográfica completa: não houve alteração de palavras","noMispell":"Verificação ortográfica completa: não foram encontrados erros","noSuggestions":"- Sem sugestões -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Não está num directório","oneChange":"Verificação ortográfica completa: uma palavra alterada","progress":"Verificação ortográfica em progresso…","title":"Spell Checker","toolbar":"Verificação Ortográfica"},"undo":{"redo":"Refazer","undo":"Anular"},"toolbar":{"toolbarCollapse":"Ocultar barra de ferramentas","toolbarExpand":"Expandir barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Área de transferência/Anular","editing":"Edição","forms":"Formulários","basicstyles":"Estilos básicos","paragraph":"Parágrafo","links":"Hiperligações","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Editor de barras de ferramentas"},"table":{"border":"Tamanho do contorno","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula antes","insertAfter":"Inserir célula depois","deleteCell":"Apagar células","merge":"Unir células","mergeRight":"Unir à direita","mergeDown":"Fundir abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas na célula","colSpan":"Colunas na célula","wordWrap":"Moldar texto","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Linha base","bgColor":"Cor de fundo","borderColor":"Cor da margem","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula deve ser um número.","invalidHeight":"A altura da célula deve ser um número.","invalidRowSpan":"As linhas da célula devem ser um número inteiro.","invalidColSpan":"As colunas da célula devem ter um número inteiro.","chooseColor":"Escolher"},"cellPad":"Espaço interior","cellSpace":"Espaçamento de célula","column":{"menu":"Coluna","insertBefore":"Inserir coluna antes","insertAfter":"Inserir coluna depois","deleteColumn":"Apagar colunas"},"columns":"Colunas","deleteTable":"Apagar tabela","headers":"Cabeçalhos","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","invalidBorder":"O tamanho da margem tem de ser um número.","invalidCellPadding":"A criação do espaço na célula deve ser um número positivo.","invalidCellSpacing":"O espaçamento da célula deve ser um número positivo.","invalidCols":"O número de colunas tem de ser um número maior que 0.","invalidHeight":"A altura da tabela tem de ser um número.","invalidRows":"O número de linhas tem de ser maior que 0.","invalidWidth":"A largura da tabela tem de ser um número.","menu":"Propriedades da tabela","row":{"menu":"Linha","insertBefore":"Inserir linha antes","insertAfter":"Inserir linha depois","deleteRow":"Apagar linhas"},"rows":"Linhas","summary":"Resumo","title":"Propriedades da tabela","toolbar":"Tabela","widthPc":"percentagem","widthPx":"pixéis","widthUnit":"unidade da largura"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos nas etiquetas","panelTitle3":"Estilos em objeto"},"specialchar":{"options":"Opções de caracteres especiais","title":"Selecione um caracter especial","toolbar":"Inserir carácter especial"},"sourcearea":{"toolbar":"Fonte"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Limpar formatação"},"pastetext":{"button":"Colar como texto simples","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"O texto que pretende colar parece ter sido copiado do Word. Deseja limpar o código antes de o colar?","error":"Não foi possível limpar a informação colada devido a um erro interno.","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação encerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir parágrafo aqui"},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"link":{"acccessKey":"Chave de acesso","advanced":"Avançado","advisoryContentType":"Tipo de conteúdo","advisoryTitle":"Título","anchor":{"toolbar":" Inserir/Editar âncora","menu":"Propriedades da âncora","title":"Propriedades da âncora","name":"Nome da âncora","errorName":"Por favor, introduza o nome da âncora","remove":"Remover âncora"},"anchorId":"Por ID do elemento","anchorName":"Por Nome de Referência","charset":"Fonte de caracteres vinculado","cssClasses":"Classes de Estilo","download":"Force Download","displayText":"Mostrar texto","emailAddress":"Endereço de email","emailBody":"Corpo da mensagem","emailSubject":"Título de mensagem","id":"ID","info":"Informação da hiperligação","langCode":"Código de idioma","langDir":"Orientação de idioma","langDirLTR":"Esquerda para a Direita (EPD)","langDirRTL":"Direita para a Esquerda (DPE)","menu":"Editar hiperligação","name":"Nome","noAnchors":"(Não existem âncoras no documento)","noEmail":"Por favor, escreva o endereço de email","noUrl":"Por favor, introduza o endereço URL","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Características de janela flutuante","popupFullScreen":"Janela completa (IE)","popupLeft":"Posição esquerda","popupLocationBar":"Barra de localização","popupMenuBar":"Barra de menu","popupResizable":"Redimensionável","popupScrollBars":"Barras de deslocamento","popupStatusBar":"Barra de estado","popupToolbar":"Barra de ferramentas","popupTop":"Posição topo","rel":"Relação","selectAnchor":"Selecionar âncora","styles":"Estilo","tabIndex":"Índice de tabulação","target":"Alvo","targetFrame":"<frame>","targetFrameName":"Nome da janela de destino","targetPopup":"<janela de popup>","targetPopupName":"Nome da janela flutuante","title":"Hiperligação","toAnchor":"Ligar a âncora no texto","toEmail":"Email","toUrl":"URL","toolbar":"Hiperligação","type":"Tipo de hiperligação","unlink":"Eliminar hiperligação","upload":"Carregar"},"indent":{"indent":"Aumentar avanço","outdent":"Diminuir avanço"},"image":{"alt":"Texto alternativo","border":"Limite","btnUpload":"Enviar para o servidor","button2Img":"Deseja transformar o botão com imagem selecionado numa imagem simples?","hSpace":"Esp. Horiz","img2Button":"Deseja transformar a imagem selecionada num botão com imagem?","infoTab":"Informação da imagem","linkTab":"Hiperligação","lockRatio":"Proporcional","menu":"Propriedades da Imagem","resetSize":"Tamanho original","title":"Propriedades da imagem","titleButton":"Propriedades do botão de imagem","upload":"Carregar","urlMissing":"O URL de origem da imagem está em falta.","vSpace":"Esp. Vert","validateBorder":"A borda tem de ser um número inteiro.","validateHSpace":"HSpace tem de ser um numero.","validateVSpace":"VSpace tem de ser um numero."},"horizontalrule":{"toolbar":"Inserir linha horizontal"},"format":{"label":"Formatar","panelTitle":"Formatar Parágrafo","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"Título 1","tag_h2":"Título 2","tag_h3":"Título 3","tag_h4":"Título 4","tag_h5":"Título 5","tag_h6":"Título 6","tag_p":"Normal","tag_pre":"Formatado"},"fakeobjects":{"anchor":" Inserir/Editar âncora","flash":"Animação Flash","hiddenfield":"Campo oculto","iframe":"IFrame","unknown":"Objeto desconhecido"},"elementspath":{"eleLabel":"Caminho dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Menu de opções de contexto"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selecionado)"},"blockquote":{"toolbar":"Bloco de citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à linha","superscript":"Superior à linha","underline":"Sublinhado"},"about":{"copy":"Direitos de Autor © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor","help":"Doar $1 para ajudar.","moreInfo":"Para informação sobre licenciamento visite o nosso sítio web:","title":"Sobre o CKEditor","userGuide":"CKEditor - Guia do utilizador"},"editor":"Editor de texto enriquecido","editorPanel":"Painel do editor de texto enriquecido","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Navegar no servidor","url":"URL","protocol":"Protocolo","upload":"Carregar","uploadSubmit":"Enviar para o servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de verificação","radio":"Botão","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo oculto","button":"Botão","select":"Campo de seleção","imageButton":"Botão da imagem","notSet":"<Não definido>","id":"ID","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código do idioma","longDescr":"Descrição completa do URL","cssClass":"Classes de estilo das folhas","advisoryTitle":"Título consultivo","cssStyle":"Estilo","ok":"CONFIRMAR","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um numero.","confirmNewPage":"Irão ser perdidas quaisquer alterações não guardadas. Tem a certeza que deseja carregar a nova página?","confirmCancel":"Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?","options":"Opções","target":"Destino","targetNew":"Nova janela (_blank)","targetTop":"Janela superior (_top)","targetSelf":"Mesma janela (_self)","targetParent":"Janela dependente (_parent)","langDirLTR":"Esquerda para a Direita (EPD)","langDirRTL":"Direita para a Esquerda (DPE)","styles":"Estilo","cssClasses":"Classes de folhas de estilo","width":"Largura","height":"Altura","align":"Alinhamento","alignLeft":"Esquerda","alignRight":"Direita","alignCenter":"Centrado","alignJustify":"Justificado","alignTop":"Topo","alignMiddle":"Centro","alignBottom":"Base","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura deve ser um número.","invalidWidth":"A largura deve ser um número. ","invalidCssLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida HTML válida (px ou %).","invalidInlineStyle":"O valor especificado para o estilo em linha deve constituir um ou mais conjuntos de valores com o formato de \"nome : valor\", separados por ponto e vírgula.","cssLengthTooltip":"Insira um número para um valor em pontos ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponível</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Espaço","35":"Fim","36":"Entrada","46":"Eliminar","224":"Comando"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ro.js b/vendor/unisharp/laravel-ckeditor/lang/ro.js deleted file mode 100644 index 6cca16c07..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ro']={"wsc":{"btnIgnore":"Ignoră","btnIgnoreAll":"Ignoră toate","btnReplace":"Înlocuieşte","btnReplaceAll":"Înlocuieşte tot","btnUndo":"Starea anterioară (undo)","changeTo":"Schimbă în","errorLoading":"Eroare în lansarea aplicației service host %s.","ieSpellDownload":"Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?","manyChanges":"Verificarea textului terminată: 1% cuvinte modificate","noChanges":"Verificarea textului terminată: Niciun cuvânt modificat","noMispell":"Verificarea textului terminată: Nicio greşeală găsită","noSuggestions":"- Fără sugestii -","notAvailable":"Scuzați, dar serviciul nu este disponibil momentan.","notInDic":"Nu e în dicţionar","oneChange":"Verificarea textului terminată: Un cuvânt modificat","progress":"Verificarea textului în desfăşurare...","title":"Spell Checker","toolbar":"Verifică scrierea textului"},"undo":{"redo":"Starea ulterioară (redo)","undo":"Starea anterioară (undo)"},"toolbar":{"toolbarCollapse":"Micșorează Bara","toolbarExpand":"Mărește Bara","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editează bara de unelte"},"table":{"border":"Mărimea marginii","caption":"Titlu (Caption)","cell":{"menu":"Celulă","insertBefore":"Inserează celulă înainte","insertAfter":"Inserează celulă după","deleteCell":"Şterge celule","merge":"Uneşte celule","mergeRight":"Uneşte la dreapta","mergeDown":"Uneşte jos","splitHorizontal":"Împarte celula pe orizontală","splitVertical":"Împarte celula pe verticală","title":"Proprietăți celulă","cellType":"Tipul celulei","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Aliniament orizontal","vAlign":"Aliniament vertical","alignBaseline":"Baseline","bgColor":"Culoare fundal","borderColor":"Culoare bordură","data":"Data","header":"Antet","yes":"Da","no":"Nu","invalidWidth":"Lățimea celulei trebuie să fie un număr.","invalidHeight":"Înălțimea celulei trebuie să fie un număr.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Alege"},"cellPad":"Spaţiu în cadrul celulei","cellSpace":"Spaţiu între celule","column":{"menu":"Coloană","insertBefore":"Inserează coloană înainte","insertAfter":"Inserează coloană după","deleteColumn":"Şterge celule"},"columns":"Coloane","deleteTable":"Şterge tabel","headers":"Antente","headersBoth":"Ambele","headersColumn":"Prima coloană","headersNone":"Nimic","headersRow":"Primul rând","invalidBorder":"Dimensiunea bordurii trebuie să aibe un număr.","invalidCellPadding":"Spațierea celulei trebuie sa fie un număr pozitiv","invalidCellSpacing":"Spațierea celului trebuie să fie un număr pozitiv.","invalidCols":"Numărul coloanelor trebuie să fie mai mare decât 0.","invalidHeight":"Inaltimea celulei trebuie sa fie un numar.","invalidRows":"Numărul rândurilor trebuie să fie mai mare decât 0.","invalidWidth":"Lățimea tabelului trebuie să fie un număr.","menu":"Proprietăţile tabelului","row":{"menu":"Rând","insertBefore":"Inserează rând înainte","insertAfter":"Inserează rând după","deleteRow":"Şterge rânduri"},"rows":"Rânduri","summary":"Rezumat","title":"Proprietăţile tabelului","toolbar":"Tabel","widthPc":"procente","widthPx":"pixeli","widthUnit":"unitate lățime"},"stylescombo":{"label":"Stil","panelTitle":"Formatarea stilurilor","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Opțiuni caractere speciale","title":"Selectează caracter special","toolbar":"Inserează caracter special"},"sourcearea":{"toolbar":"Sursa"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Înlătură formatarea"},"pastetext":{"button":"Adaugă ca text simplu (Plain Text)","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Textul pe care doriți să-l lipiți este din Word. Doriți curățarea textului înante de a-l adăuga?","error":"Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne","title":"Adaugă din Word","toolbar":"Adaugă din Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Mărește","minimize":"Micșorează"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Inserează / Elimină Listă cu puncte","numberedlist":"Inserează / Elimină Listă numerotată"},"link":{"acccessKey":"Tasta de acces","advanced":"Avansat","advisoryContentType":"Tipul consultativ al titlului","advisoryTitle":"Titlul consultativ","anchor":{"toolbar":"Inserează/Editează ancoră","menu":"Proprietăţi ancoră","title":"Proprietăţi ancoră","name":"Numele ancorei","errorName":"Vă rugăm scrieţi numele ancorei","remove":"Elimină ancora"},"anchorId":"după Id-ul elementului","anchorName":"după numele ancorei","charset":"Setul de caractere al resursei legate","cssClasses":"Clasele cu stilul paginii (CSS)","download":"Force Download","displayText":"Display Text","emailAddress":"Adresă de e-mail","emailBody":"Opțiuni Meniu Contextual","emailSubject":"Subiectul mesajului","id":"Id","info":"Informaţii despre link (Legătură web)","langCode":"Direcţia cuvintelor","langDir":"Direcţia cuvintelor","langDirLTR":"stânga-dreapta (LTR)","langDirRTL":"dreapta-stânga (RTL)","menu":"Editează Link","name":"Nume","noAnchors":"(Nicio ancoră disponibilă în document)","noEmail":"Vă rugăm să scrieţi adresa de e-mail","noUrl":"Vă rugăm să scrieţi URL-ul","other":"<alt>","popupDependent":"Dependent (Netscape)","popupFeatures":"Proprietăţile ferestrei popup","popupFullScreen":"Tot ecranul (Full Screen)(IE)","popupLeft":"Poziţia la stânga","popupLocationBar":"Bara de locaţie","popupMenuBar":"Bara de meniu","popupResizable":"Redimensionabil","popupScrollBars":"Bare de derulare","popupStatusBar":"Bara de status","popupToolbar":"Bara de opţiuni","popupTop":"Poziţia la dreapta","rel":"Relație","selectAnchor":"Selectaţi o ancoră","styles":"Stil","tabIndex":"Indexul tabului","target":"Ţintă (Target)","targetFrame":"<frame>","targetFrameName":"Numele frameului ţintă","targetPopup":"<fereastra popup>","targetPopupName":"Numele ferestrei popup","title":"Link (Legătură web)","toAnchor":"Ancoră în această pagină","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserează/Editează link (legătură web)","type":"Tipul link-ului (al legăturii web)","unlink":"Înlătură link (legătură web)","upload":"Încarcă"},"indent":{"indent":"Creşte indentarea","outdent":"Scade indentarea"},"image":{"alt":"Text alternativ","border":"Margine","btnUpload":"Trimite la server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Informaţii despre imagine","linkTab":"Link (Legătură web)","lockRatio":"Păstrează proporţiile","menu":"Proprietăţile imaginii","resetSize":"Resetează mărimea","title":"Proprietăţile imaginii","titleButton":"Proprietăţi buton imagine (Image Button)","upload":"Încarcă","urlMissing":"Sursa URL a imaginii lipsește.","vSpace":"VSpace","validateBorder":"Bordura trebuie să fie un număr întreg.","validateHSpace":"Hspace trebuie să fie un număr întreg.","validateVSpace":"Vspace trebuie să fie un număr întreg."},"horizontalrule":{"toolbar":"Inserează linie orizontală"},"format":{"label":"Formatare","panelTitle":"Formatare","tag_address":"Adresă","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatat"},"fakeobjects":{"anchor":"Inserează/Editează ancoră","flash":"Flash Animation","hiddenfield":"Câmp ascuns (HiddenField)","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Calea elementelor","eleTitle":"%1 element"},"contextmenu":{"options":"Opțiuni Meniu Contextual"},"clipboard":{"copy":"Copiază","copyError":"Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).","cut":"Taie","cutError":"Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).","paste":"Adaugă","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selectat)"},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Îngroşat (bold)","italic":"Înclinat (italic)","strike":"Tăiat (strike through)","subscript":"Indice (subscript)","superscript":"Putere (superscript)","underline":"Subliniat (underline)"},"about":{"copy":"Copyright © $1. Toate drepturile rezervate.","dlgTitle":"Despre CKEeditor","help":"Citește $1 pentru ajutor.","moreInfo":"Pentru informații despre licență, vă rugăm vizitați web site-ul nostru:","title":"Despre CKEditor","userGuide":"CKEditor Ghid Utilizator"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Apasă ALT 0 pentru ajutor","browseServer":"Răsfoieşte server","url":"URL","protocol":"Protocol","upload":"Încarcă","uploadSubmit":"Trimite la server","image":"Imagine","flash":"Flash","form":"Formular (Form)","checkbox":"Bifă (Checkbox)","radio":"Buton radio (RadioButton)","textField":"Câmp text (TextField)","textarea":"Suprafaţă text (Textarea)","hiddenField":"Câmp ascuns (HiddenField)","button":"Buton","select":"Câmp selecţie (SelectionField)","imageButton":"Buton imagine (ImageButton)","notSet":"<nesetat>","id":"Id","name":"Nume","langDir":"Direcţia cuvintelor","langDirLtr":"stânga-dreapta (LTR)","langDirRtl":"dreapta-stânga (RTL)","langCode":"Codul limbii","longDescr":"Descrierea lungă URL","cssClass":"Clasele cu stilul paginii (CSS)","advisoryTitle":"Titlul consultativ","cssStyle":"Stil","ok":"OK","cancel":"Anulare","close":"Închide","preview":"Previzualizare","resize":"Trage pentru a redimensiona","generalTab":"General","advancedTab":"Avansat","validateNumberFailed":"Această valoare nu este un număr.","confirmNewPage":"Orice modificări nesalvate ale acestui conținut, vor fi pierdute. Sigur doriți încărcarea unei noi pagini?","confirmCancel":"Câteva opțiuni au fost schimbate. Sigur doriți să închideți dialogul?","options":"Opțiuni","target":"Țintă","targetNew":"Fereastră nouă (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"În aceeași fereastră (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Stânga spre Dreapta (LTR)","langDirRTL":"Dreapta spre Stânga (RTL)","styles":"Stil","cssClasses":"Stylesheet Classes","width":"Lăţime","height":"Înălţime","align":"Aliniere","alignLeft":"Mărește Bara","alignRight":"Dreapta","alignCenter":"Centru","alignJustify":"Aliniere în bloc (Block Justify)","alignTop":"Sus","alignMiddle":"Mijloc","alignBottom":"Jos","alignNone":"None","invalidValue":"Valoare invalidă","invalidHeight":"Înălțimea trebuie să fie un număr.","invalidWidth":"Lățimea trebuie să fie un număr.","invalidCssLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","invalidHtmlLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură HTML (px sau %).","invalidInlineStyle":"Valoarea specificată pentru stil trebuie să conțină una sau mai multe construcții de tipul \"name : value\", separate prin punct și virgulă.","cssLengthTooltip":"Introduceți un număr în pixeli sau un număr cu o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","unavailable":"%1<span class=\"cke_accessibility\">, nu este disponibil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ru.js b/vendor/unisharp/laravel-ckeditor/lang/ru.js deleted file mode 100644 index a1804a933..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ru']={"wsc":{"btnIgnore":"Пропустить","btnIgnoreAll":"Пропустить всё","btnReplace":"Заменить","btnReplaceAll":"Заменить всё","btnUndo":"Отменить","changeTo":"Изменить на","errorLoading":"Произошла ошибка при подключении к серверу проверки орфографии: %s.","ieSpellDownload":"Модуль проверки орфографии не установлен. Хотите скачать его?","manyChanges":"Проверка орфографии завершена. Изменено слов: %1","noChanges":"Проверка орфографии завершена. Не изменено ни одного слова","noMispell":"Проверка орфографии завершена. Ошибок не найдено","noSuggestions":"- Варианты отсутствуют -","notAvailable":"Извините, но в данный момент сервис недоступен.","notInDic":"Отсутствует в словаре","oneChange":"Проверка орфографии завершена. Изменено одно слово","progress":"Орфография проверяется...","title":"Проверка орфографии","toolbar":"Проверить орфографию"},"undo":{"redo":"Повторить","undo":"Отменить"},"toolbar":{"toolbarCollapse":"Свернуть панель инструментов","toolbarExpand":"Развернуть панель инструментов","toolbarGroups":{"document":"Документ","clipboard":"Буфер обмена / Отмена действий","editing":"Корректировка","forms":"Формы","basicstyles":"Простые стили","paragraph":"Абзац","links":"Ссылки","insert":"Вставка","styles":"Стили","colors":"Цвета","tools":"Инструменты"},"toolbars":"Панели инструментов редактора"},"table":{"border":"Размер границ","caption":"Заголовок","cell":{"menu":"Ячейка","insertBefore":"Вставить ячейку слева","insertAfter":"Вставить ячейку справа","deleteCell":"Удалить ячейки","merge":"Объединить ячейки","mergeRight":"Объединить с правой","mergeDown":"Объединить с нижней","splitHorizontal":"Разделить ячейку по вертикали","splitVertical":"Разделить ячейку по горизонтали","title":"Свойства ячейки","cellType":"Тип ячейки","rowSpan":"Объединяет строк","colSpan":"Объединяет колонок","wordWrap":"Перенос по словам","hAlign":"Горизонтальное выравнивание","vAlign":"Вертикальное выравнивание","alignBaseline":"По базовой линии","bgColor":"Цвет фона","borderColor":"Цвет границ","data":"Данные","header":"Заголовок","yes":"Да","no":"Нет","invalidWidth":"Ширина ячейки должна быть числом.","invalidHeight":"Высота ячейки должна быть числом.","invalidRowSpan":"Количество объединяемых строк должно быть задано числом.","invalidColSpan":"Количество объединяемых колонок должно быть задано числом.","chooseColor":"Выберите"},"cellPad":"Внутренний отступ ячеек","cellSpace":"Внешний отступ ячеек","column":{"menu":"Колонка","insertBefore":"Вставить колонку слева","insertAfter":"Вставить колонку справа","deleteColumn":"Удалить колонки"},"columns":"Колонки","deleteTable":"Удалить таблицу","headers":"Заголовки","headersBoth":"Сверху и слева","headersColumn":"Левая колонка","headersNone":"Без заголовков","headersRow":"Верхняя строка","invalidBorder":"Размер границ должен быть числом.","invalidCellPadding":"Внутренний отступ ячеек (cellpadding) должен быть числом.","invalidCellSpacing":"Внешний отступ ячеек (cellspacing) должен быть числом.","invalidCols":"Количество столбцов должно быть больше 0.","invalidHeight":"Высота таблицы должна быть числом.","invalidRows":"Количество строк должно быть больше 0.","invalidWidth":"Ширина таблицы должна быть числом.","menu":"Свойства таблицы","row":{"menu":"Строка","insertBefore":"Вставить строку сверху","insertAfter":"Вставить строку снизу","deleteRow":"Удалить строки"},"rows":"Строки","summary":"Итоги","title":"Свойства таблицы","toolbar":"Таблица","widthPc":"процентов","widthPx":"пикселей","widthUnit":"единица измерения"},"stylescombo":{"label":"Стили","panelTitle":"Стили форматирования","panelTitle1":"Стили блока","panelTitle2":"Стили элемента","panelTitle3":"Стили объекта"},"specialchar":{"options":"Выбор специального символа","title":"Выберите специальный символ","toolbar":"Вставить специальный символ"},"sourcearea":{"toolbar":"Источник"},"scayt":{"btn_about":"О SCAYT","btn_dictionaries":"Словари","btn_disable":"Отключить SCAYT","btn_enable":"Включить SCAYT","btn_langs":"Языки","btn_options":"Настройки","text_title":"Проверка орфографии по мере ввода (SCAYT)"},"removeformat":{"toolbar":"Убрать форматирование"},"pastetext":{"button":"Вставить только текст","pasteNotification":"Ваш браузер не поддерживает данный метод вставки. Для вставки нажмите %1"},"pastefromword":{"confirmCleanup":"Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?","error":"Невозможно очистить вставленные данные из-за внутренней ошибки","title":"Вставить из Word","toolbar":"Вставить из Word"},"notification":{"closed":"Уведомление закрыто"},"maximize":{"maximize":"Развернуть","minimize":"Свернуть"},"magicline":{"title":"Вставить здесь параграф"},"list":{"bulletedlist":"Вставить / удалить маркированный список","numberedlist":"Вставить / удалить нумерованный список"},"link":{"acccessKey":"Клавиша доступа","advanced":"Дополнительно","advisoryContentType":"Тип содержимого","advisoryTitle":"Заголовок","anchor":{"toolbar":"Вставить / редактировать якорь","menu":"Изменить якорь","title":"Свойства якоря","name":"Имя якоря","errorName":"Пожалуйста, введите имя якоря","remove":"Удалить якорь"},"anchorId":"По идентификатору","anchorName":"По имени","charset":"Кодировка ресурса","cssClasses":"Классы CSS","download":"Скачать как файл","displayText":"Отображаемый текст","emailAddress":"Email адрес","emailBody":"Текст сообщения","emailSubject":"Тема сообщения","id":"Идентификатор","info":"Информация о ссылке","langCode":"Код языка","langDir":"Направление текста","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","menu":"Редактировать ссылку","name":"Имя","noAnchors":"(В документе нет ни одного якоря)","noEmail":"Пожалуйста, введите email адрес","noUrl":"Пожалуйста, введите ссылку","other":"<другой>","popupDependent":"Зависимое (Netscape)","popupFeatures":"Параметры всплывающего окна","popupFullScreen":"Полноэкранное (IE)","popupLeft":"Отступ слева","popupLocationBar":"Панель адреса","popupMenuBar":"Панель меню","popupResizable":"Изменяемый размер","popupScrollBars":"Полосы прокрутки","popupStatusBar":"Строка состояния","popupToolbar":"Панель инструментов","popupTop":"Отступ сверху","rel":"Отношение","selectAnchor":"Выберите якорь","styles":"Стиль","tabIndex":"Последовательность перехода","target":"Цель","targetFrame":"<фрейм>","targetFrameName":"Имя целевого фрейма","targetPopup":"<всплывающее окно>","targetPopupName":"Имя всплывающего окна","title":"Ссылка","toAnchor":"Ссылка на якорь в тексте","toEmail":"Email","toUrl":"Ссылка","toolbar":"Вставить/Редактировать ссылку","type":"Тип ссылки","unlink":"Убрать ссылку","upload":"Загрузка"},"indent":{"indent":"Увеличить отступ","outdent":"Уменьшить отступ"},"image":{"alt":"Альтернативный текст","border":"Граница","btnUpload":"Загрузить на сервер","button2Img":"Вы желаете преобразовать это изображение-кнопку в обычное изображение?","hSpace":"Гориз. отступ","img2Button":"Вы желаете преобразовать это обычное изображение в изображение-кнопку?","infoTab":"Данные об изображении","linkTab":"Ссылка","lockRatio":"Сохранять пропорции","menu":"Свойства изображения","resetSize":"Вернуть обычные размеры","title":"Свойства изображения","titleButton":"Свойства изображения-кнопки","upload":"Загрузить","urlMissing":"Не указана ссылка на изображение.","vSpace":"Вертик. отступ","validateBorder":"Размер границ должен быть задан числом.","validateHSpace":"Горизонтальный отступ должен быть задан числом.","validateVSpace":"Вертикальный отступ должен быть задан числом."},"horizontalrule":{"toolbar":"Вставить горизонтальную линию"},"format":{"label":"Форматирование","panelTitle":"Форматирование","tag_address":"Адрес","tag_div":"Обычное (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Обычное","tag_pre":"Моноширинное"},"fakeobjects":{"anchor":"Якорь","flash":"Flash анимация","hiddenfield":"Скрытое поле","iframe":"iFrame","unknown":"Неизвестный объект"},"elementspath":{"eleLabel":"Путь элементов","eleTitle":"Элемент %1"},"contextmenu":{"options":"Параметры контекстного меню"},"clipboard":{"copy":"Копировать","copyError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).","cut":"Вырезать","cutError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).","paste":"Вставить","pasteNotification":"Ваш браузер не поддерживает данный метод вставки. Для вставки нажмите %1"},"button":{"selectedLabel":"%1 (Выбрано)"},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Полужирный","italic":"Курсив","strike":"Зачеркнутый","subscript":"Подстрочный индекс","superscript":"Надстрочный индекс","underline":"Подчеркнутый"},"about":{"copy":"Copyright © $1. Все права защищены.","dlgTitle":"О CKEditor","help":"$1 содержит подробную справку по использованию.","moreInfo":"Для получения информации о лицензии, пожалуйста, перейдите на наш сайт:","title":"О CKEditor","userGuide":"Руководство пользователя CKEditor"},"editor":"Визуальный текстовый редактор","editorPanel":"Визуальный редактор текста","common":{"editorHelp":"Нажмите ALT-0 для открытия справки","browseServer":"Выбор на сервере","url":"Ссылка","protocol":"Протокол","upload":"Загрузка файла","uploadSubmit":"Загрузить на сервер","image":"Изображение","flash":"Flash","form":"Форма","checkbox":"Чекбокс","radio":"Радиокнопка","textField":"Текстовое поле","textarea":"Многострочное текстовое поле","hiddenField":"Скрытое поле","button":"Кнопка","select":"Выпадающий список","imageButton":"Кнопка-изображение","notSet":"<не указано>","id":"Идентификатор","name":"Имя","langDir":"Направление текста","langDirLtr":"Слева направо (LTR)","langDirRtl":"Справа налево (RTL)","langCode":"Код языка","longDescr":"Длинное описание ссылки","cssClass":"Класс CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль","ok":"ОК","cancel":"Отмена","close":"Закрыть","preview":"Предпросмотр","resize":"Перетащите для изменения размера","generalTab":"Основное","advancedTab":"Дополнительно","validateNumberFailed":"Это значение не является числом.","confirmNewPage":"Несохранённые изменения будут потеряны! Вы действительно желаете перейти на другую страницу?","confirmCancel":"Некоторые параметры были изменены. Вы уверены, что желаете закрыть без сохранения?","options":"Параметры","target":"Цель","targetNew":"Новое окно (_blank)","targetTop":"Главное окно (_top)","targetSelf":"Текущее окно (_self)","targetParent":"Родительское окно (_parent)","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","styles":"Стиль","cssClasses":"CSS классы","width":"Ширина","height":"Высота","align":"Выравнивание","alignLeft":"По левому краю","alignRight":"По правому краю","alignCenter":"По центру","alignJustify":"По ширине","alignTop":"Поверху","alignMiddle":"Посередине","alignBottom":"Понизу","alignNone":"Нет","invalidValue":"Недопустимое значение.","invalidHeight":"Высота задается числом.","invalidWidth":"Ширина задается числом.","invalidCssLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","invalidHtmlLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры HTML (px или %).","invalidInlineStyle":"Значение, указанное для стиля элемента, должно состоять из одной или нескольких пар данных в формате \"параметр : значение\", разделённых точкой с запятой.","cssLengthTooltip":"Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоступно</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Пробел","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Комбинация клавиш"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/si.js b/vendor/unisharp/laravel-ckeditor/lang/si.js deleted file mode 100644 index 28ad434fe..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['si']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"නැවත කිරීම","undo":"වෙනස් කිරීම"},"toolbar":{"toolbarCollapse":"මෙවලම් තීරුව හැකුලුම.","toolbarExpand":"මෙවලම් තීරුව දීගහැරුම","toolbarGroups":{"document":"ලිපිය","clipboard":"ඇමිණුම වෙනස් කිරීම","editing":"සංස්කරණය","forms":"පෝරමය","basicstyles":"මුලික විලාසය","paragraph":"චේදය","links":"සබැඳිය","insert":"ඇතුලත් කිරීම","styles":"විලාසය","colors":"වර්ණය","tools":"මෙවලම්"},"toolbars":"සංස්කරණ මෙවලම් තීරුව"},"table":{"border":"සීමාවවල විශාලත්වය","caption":"Caption","cell":{"menu":"කොටුව","insertBefore":"පෙර කොටුවක් ඇතුල්කිරිම","insertAfter":"පසුව කොටුවක් ඇතුලත් ","deleteCell":"කොටුව මැකීම","merge":"කොටු එකට යාකිරිම","mergeRight":"දකුණට ","mergeDown":"පහලට ","splitHorizontal":"තිරස්ව කොටු පැතිරීම","splitVertical":"සිරස්ව කොටු පැතිරීම","title":"කොටු ","cellType":"කොටු වර්ගය","rowSpan":"පේළි පළල","colSpan":"සිරස් පළල","wordWrap":"වචන ගැලපුම","hAlign":"තිරස්ව ","vAlign":"සිරස්ව ","alignBaseline":"පාද රේඛාව","bgColor":"පසුබිම් වර්ණය","borderColor":"මායිම් ","data":"Data","header":"ශීර්ෂක","yes":"ඔව්","no":"නැත","invalidWidth":"කොටු පළල සංඛ්‍ය්ත්මක වටිනාකමක් විය යුතුය","invalidHeight":"කොටු උස සංඛ්‍ය්ත්මක වටිනාකමක් විය යුතුය","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"තෝරන්න"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"සිරස් ","deleteTable":"වගුව මකන්න","headers":"ශීර්ෂක","headersBoth":"දෙකම","headersColumn":"පළමූ සිරස් තීරුව","headersNone":"කිසිවක්ම නොවේ","headersRow":"පළමූ පේළිය","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"විලාසය","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"විශේෂ ගුණාංග වීකල්ප","title":"විශේෂ ගුණාංග ","toolbar":"විශේෂ ගුණාංග ඇතුලත් "},"sourcearea":{"toolbar":"මුලාශ්‍රය"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"සැකසීම වෙනස් කරන්න"},"pastetext":{"button":"සාමාන්‍ය අක්ෂර ලෙස අලවන්න","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"වචන වලින් අලවන්න","toolbar":"වචන වලින් අලවන්න"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"විශාල කිරීම","minimize":"කුඩා කිරීම"},"magicline":{"title":"චේදය ඇතුලත් කරන්න"},"list":{"bulletedlist":"ඇතුලත් / ඉවත් කිරීම ලඉස්තුව","numberedlist":"ඇතුලත් / ඉවත් කිරීම අන්න්කිත ලඉස්තුව"},"link":{"acccessKey":"ප්‍රවේශ යතුර","advanced":"දීය","advisoryContentType":"උපදේශාත්මක අන්තර්ගත ආකාරය","advisoryTitle":"උපදේශාත්මක නාමය","anchor":{"toolbar":"ආධාරය","menu":"ආධාරය වෙනස් කිරීම","title":"ආධාරක ","name":"ආධාරකයේ නාමය","errorName":"කරුණාකර ආධාරකයේ නාමය ඇතුල් කරන්න","remove":"ආධාරකය ඉවත් කිරීම"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"විලාසපත්‍ර පන්තිය","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"අංකය","info":"Link Info","langCode":"භාෂා කේතය","langDir":"භාෂා දිශාව","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","menu":"Edit Link","name":"නම","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"විලාසය","tabIndex":"Tab Index","target":"අරමුණ","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"සබැඳිය","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"සබැඳිය","type":"Link Type","unlink":"Unlink","upload":"උඩුගතකිරීම"},"indent":{"indent":"අතර පරතරය වැඩිකරන්න","outdent":"අතර පරතරය අඩුකරන්න"},"image":{"alt":"විකල්ප ","border":"සීමාවවල ","btnUpload":"සේවාදායකය වෙත යොමුකිරිම","button2Img":"ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්‍යද?","hSpace":"HSpace","img2Button":"ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්‍යද?","infoTab":"රුපයේ තොරතුරු","linkTab":"සබැඳිය","lockRatio":"නවතන අනුපාතය ","menu":"රුපයේ ගුණ","resetSize":"නැවතත් විශාලත්වය වෙනස් කිරීම","title":"රුපයේ ","titleButton":"රුප බොත්තමේ ගුණ","upload":"උඩුගතකිරීම","urlMissing":"රුප මුලාශ්‍ර URL නැත.","vSpace":"VSpace","validateBorder":"මාඉම් සම්පුර්ණ සංක්‍යාවක් විය යුතුය.","validateHSpace":"HSpace සම්පුර්ණ සංක්‍යාවක් විය යුතුය","validateVSpace":"VSpace සම්පුර්ණ සංක්‍යාවක් විය යුතුය."},"horizontalrule":{"toolbar":"තිරස් රේඛාවක් ඇතුලත් කරන්න"},"format":{"label":"ආකෘතිය","panelTitle":"චේදයේ ","tag_address":"ලිපිනය","tag_div":"සාමාන්‍ය(DIV)","tag_h1":"ශීර්ෂය 1","tag_h2":"ශීර්ෂය 2","tag_h3":"ශීර්ෂය 3","tag_h4":"ශීර්ෂය 4","tag_h5":"ශීර්ෂය 5","tag_h6":"ශීර්ෂය 6","tag_p":"සාමාන්‍ය","tag_pre":"ආකෘතියන්"},"fakeobjects":{"anchor":"ආධාරය","flash":"Flash Animation","hiddenfield":"සැඟවුණු ප්‍රදේශය","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"මුලද්‍රව්‍ය මාර්ගය","eleTitle":"%1 මුල"},"contextmenu":{"options":"අනතර්ග ලේඛණ විකල්ප"},"clipboard":{"copy":"පිටපත් කරන්න","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"කපාගන්න","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"අලවන්න","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"උද්ධෘත කොටස"},"basicstyles":{"bold":"තද අකුරින් ලියනලද","italic":"බැධීඅකුරින් ලියන ලද","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"යටින් ඉරි අදින ලද"},"about":{"copy":"පිටපත් අයිතිය සහ පිටපත් කිරීම;$1 .සියලුම හිමිකම් ඇවිරිණි.","dlgTitle":"CKEditor ගැන විස්තර","help":"උදව් සඳහා $1 ","moreInfo":"බලපත්‍ර තොරතුරු සදහා කරුණාකර අපගේ විද්‍යුත් ලිපිනයට පිවිසෙන්න:","title":"CKEditor ගැන විස්තර","userGuide":"CKEditor භාවිතා කිරීම පිළිබඳ "},"editor":"පොහොසත් වචන සංස්කරණ","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"උදව් ලබා ගැනීමට ALT බොත්තම ඔබන්න","browseServer":"සෙවුම් සේවාදායකය","url":"URL","protocol":"මුලාපත්‍රය","upload":"උඩුගතකිරීම","uploadSubmit":"සේවාදායකය වෙත යොමුකිරිම","image":"රුපය","flash":"දීප්තිය","form":"පෝරමය","checkbox":"ලකුණුකිරීමේ කොටුව","radio":"තේරීම් ","textField":"ලියන ප්‍රදේශය","textarea":"අකුරු ","hiddenField":"සැඟවුණු ප්‍රදේශය","button":"බොත්තම","select":"තෝරන්න ","imageButton":"රුප ","notSet":"<යොදා >","id":"අංකය","name":"නම","langDir":"භාෂා දිශාව","langDirLtr":"වමේසිට දකුණුට","langDirRtl":"දකුණේ සිට වමට","langCode":"භාෂා කේතය","longDescr":"සම්පුර්න පැහැදිලි කිරීම","cssClass":"විලාශ පත්‍ර පන්තිය","advisoryTitle":"උපදෙස් ","cssStyle":"විලාසය","ok":"නිරදි","cancel":"අවලංගු කිරීම","close":"වැසීම","preview":"නැවත ","resize":"විශාලත්වය නැවත වෙනස් කිරීම","generalTab":"පොදු කරුණු.","advancedTab":"දීය","validateNumberFailed":"මෙම වටිනාකම අංකයක් නොවේ","confirmNewPage":"ආරක්ෂා නොකළ සියලුම දත්තයන් මැකියනුලැබේ. ඔබට නව පිටුවක් ලබා ගැනීමට අවශ්‍යද?","confirmCancel":"ඇතම් විකල්පයන් වෙනස් කර ඇත. ඔබට මින් නික්මීමට අවශ්‍යද?","options":" විකල්ප","target":"අරමුණ","targetNew":"නව කව්ළුව","targetTop":"වැදගත් කව්ළුව","targetSelf":"එම කව්ළුව(_තම\\\\)","targetParent":"මව් කව්ළුව(_)","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","styles":"විලාසය","cssClasses":"විලාසපත්‍ර පන්තිය","width":"පළල","height":"උස","align":"ගැලපුම","alignLeft":"වම","alignRight":"දකුණ","alignCenter":"මධ්‍ය","alignJustify":"Justify","alignTop":"ඉ","alignMiddle":"මැද","alignBottom":"පහල","alignNone":"None","invalidValue":"වැරදී වටිනාකමකි","invalidHeight":"උස අංකයක් විය යුතුය","invalidWidth":"පළල අංකයක් විය යුතුය","invalidCssLength":"වටිනාකමක් නිරූපණය කිරීම \"%1\" ප්‍රදේශය ධන සංක්‍යාත්මක වටිනාකමක් හෝ නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)","invalidHtmlLength":"වටිනාකමක් නිරූපණය කිරීම \"%1\" ප්‍රදේශය ධන සංක්‍යාත්මක වටිනාකමක් හෝ නිවරදි නොවන HTML මිනුම් එකක (px හෝ %).","invalidInlineStyle":"වටිනාකමක් නිරූපණය කිරීම පේළි විලාසයයට ආකෘතිය අනතර්ග විය යුතය \"නම : වටිනාකම\", තිත් කොමාවකින් වෙන් වෙන ලද.","cssLengthTooltip":"සංක්‍යා ඇතුලත් කිරීමේදී වටිනාකම තිත් ප්‍රමාණය නිවරදි CSS ඒකක(තිත්, %, අඟල්,සෙමි, mm, em, ex, pt, pc)","unavailable":"%1<span පන්තිය=\"ළඟා වියහැකි ද බලන්න\">, නොමැතිනම්</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sk.js b/vendor/unisharp/laravel-ckeditor/lang/sk.js deleted file mode 100644 index f5d104401..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sk']={"wsc":{"btnIgnore":"Ignorovať","btnIgnoreAll":"Ignorovať všetko","btnReplace":"Prepísat","btnReplaceAll":"Prepísat všetko","btnUndo":"Späť","changeTo":"Zmeniť na","errorLoading":"Chyba pri načítaní slovníka z adresy: %s.","ieSpellDownload":"Kontrola pravopisu nie je naištalovaná. Chcete ju teraz stiahnuť?","manyChanges":"Kontrola pravopisu dokončená: Bolo zmenených %1 slov","noChanges":"Kontrola pravopisu dokončená: Neboli zmenené žiadne slová","noMispell":"Kontrola pravopisu dokončená: Neboli nájdené žiadne chyby pravopisu","noSuggestions":"- Žiadny návrh -","notAvailable":"Prepáčte, ale služba je momentálne nedostupná.","notInDic":"Nie je v slovníku","oneChange":"Kontrola pravopisu dokončená: Bolo zmenené jedno slovo","progress":"Prebieha kontrola pravopisu...","title":"Skontrolovať pravopis","toolbar":"Kontrola pravopisu"},"undo":{"redo":"Znovu","undo":"Späť"},"toolbar":{"toolbarCollapse":"Zbaliť lištu nástrojov","toolbarExpand":"Rozbaliť lištu nástrojov","toolbarGroups":{"document":"Dokument","clipboard":"Schránka pre kopírovanie/Späť","editing":"Upravovanie","forms":"Formuláre","basicstyles":"Základné štýly","paragraph":"Odsek","links":"Odkazy","insert":"Vložiť","styles":"Štýly","colors":"Farby","tools":"Nástroje"},"toolbars":"Lišty nástrojov editora"},"table":{"border":"Šírka orámovania","caption":"Popis","cell":{"menu":"Bunka","insertBefore":"Vložiť bunku pred","insertAfter":"Vložiť bunku za","deleteCell":"Vymazať bunky","merge":"Zlúčiť bunky","mergeRight":"Zlúčiť doprava","mergeDown":"Zlúčiť dole","splitHorizontal":"Rozdeliť bunky horizontálne","splitVertical":"Rozdeliť bunky vertikálne","title":"Vlastnosti bunky","cellType":"Typ bunky","rowSpan":"Rozsah riadkov","colSpan":"Rozsah stĺpcov","wordWrap":"Zalamovanie riadkov","hAlign":"Horizontálne zarovnanie","vAlign":"Vertikálne zarovnanie","alignBaseline":"Základná čiara (baseline)","bgColor":"Farba pozadia","borderColor":"Farba orámovania","data":"Dáta","header":"Hlavička","yes":"Áno","no":"Nie","invalidWidth":"Šírka bunky musí byť číslo.","invalidHeight":"Výška bunky musí byť číslo.","invalidRowSpan":"Rozsah riadkov musí byť celé číslo.","invalidColSpan":"Rozsah stĺpcov musí byť celé číslo.","chooseColor":"Vybrať"},"cellPad":"Odsadenie obsahu (cell padding)","cellSpace":"Vzdialenosť buniek (cell spacing)","column":{"menu":"Stĺpec","insertBefore":"Vložiť stĺpec pred","insertAfter":"Vložiť stĺpec po","deleteColumn":"Zmazať stĺpce"},"columns":"Stĺpce","deleteTable":"Vymazať tabuľku","headers":"Hlavička","headersBoth":"Obe","headersColumn":"Prvý stĺpec","headersNone":"Žiadne","headersRow":"Prvý riadok","invalidBorder":"Šírka orámovania musí byť číslo.","invalidCellPadding":"Odsadenie v bunkách (cell padding) musí byť kladné číslo.","invalidCellSpacing":"Medzera mädzi bunkami (cell spacing) musí byť kladné číslo.","invalidCols":"Počet stĺpcov musí byť číslo väčšie ako 0.","invalidHeight":"Výška tabuľky musí byť číslo.","invalidRows":"Počet riadkov musí byť číslo väčšie ako 0.","invalidWidth":"Širka tabuľky musí byť číslo.","menu":"Vlastnosti tabuľky","row":{"menu":"Riadok","insertBefore":"Vložiť riadok pred","insertAfter":"Vložiť riadok po","deleteRow":"Vymazať riadky"},"rows":"Riadky","summary":"Prehľad","title":"Vlastnosti tabuľky","toolbar":"Tabuľka","widthPc":"percent","widthPx":"pixelov","widthUnit":"jednotka šírky"},"stylescombo":{"label":"Štýly","panelTitle":"Formátovanie štýlov","panelTitle1":"Štýly bloku","panelTitle2":"Vnútroriadkové (inline) štýly","panelTitle3":"Štýly objeku"},"specialchar":{"options":"Možnosti špeciálneho znaku","title":"Výber špeciálneho znaku","toolbar":"Vložiť špeciálny znak"},"sourcearea":{"toolbar":"Zdroj"},"scayt":{"btn_about":"O KPPP (Kontrola pravopisu počas písania)","btn_dictionaries":"Slovníky","btn_disable":"Zakázať KPPP (Kontrola pravopisu počas písania)","btn_enable":"Povoliť KPPP (Kontrola pravopisu počas písania)","btn_langs":"Jazyky","btn_options":"Možnosti","text_title":"Kontrola pravopisu počas písania"},"removeformat":{"toolbar":"Odstrániť formátovanie"},"pastetext":{"button":"Vložiť ako čistý text","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Zdá sa, že vkladaný text pochádza z programu MS Word. Chcete ho pred vkladaním automaticky vyčistiť?","error":"Kvôli internej chybe nebolo možné vložené dáta vyčistiť","title":"Vložiť z Wordu","toolbar":"Vložiť z Wordu"},"notification":{"closed":"Notifikácia zatvorená."},"maximize":{"maximize":"Maximalizovať","minimize":"Minimalizovať"},"magicline":{"title":"Odsek vložiť sem"},"list":{"bulletedlist":"Vložiť/odstrániť zoznam s odrážkami","numberedlist":"Vložiť/odstrániť číslovaný zoznam"},"link":{"acccessKey":"Prístupový kľúč","advanced":"Rozšírené","advisoryContentType":"Pomocný typ obsahu","advisoryTitle":"Pomocný titulok","anchor":{"toolbar":"Kotva","menu":"Upraviť kotvu","title":"Vlastnosti kotvy","name":"Názov kotvy","errorName":"Zadajte prosím názov kotvy","remove":"Odstrániť kotvu"},"anchorId":"Podľa Id objektu","anchorName":"Podľa mena kotvy","charset":"Priradená znaková sada","cssClasses":"Triedy štýlu","download":"Vynútené sťahovanie.","displayText":"Zobraziť text","emailAddress":"E-Mailová adresa","emailBody":"Telo správy","emailSubject":"Predmet správy","id":"Id","info":"Informácie o odkaze","langCode":"Orientácia jazyka","langDir":"Orientácia jazyka","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","menu":"Upraviť odkaz","name":"Názov","noAnchors":"(V dokumente nie sú dostupné žiadne kotvy)","noEmail":"Zadajte prosím e-mailovú adresu","noUrl":"Zadajte prosím URL odkazu","other":"<iný>","popupDependent":"Závislosť (Netscape)","popupFeatures":"Vlastnosti vyskakovacieho okna","popupFullScreen":"Celá obrazovka (IE)","popupLeft":"Ľavý okraj","popupLocationBar":"Panel umiestnenia (location bar)","popupMenuBar":"Panel ponuky (menu bar)","popupResizable":"Meniteľná veľkosť (resizable)","popupScrollBars":"Posuvníky (scroll bars)","popupStatusBar":"Stavový riadok (status bar)","popupToolbar":"Panel nástrojov (toolbar)","popupTop":"Horný okraj","rel":"Vzťah (rel)","selectAnchor":"Vybrať kotvu","styles":"Štýl","tabIndex":"Poradie prvku (tab index)","target":"Cieľ","targetFrame":"<rámec>","targetFrameName":"Názov rámu cieľa","targetPopup":"<vyskakovacie okno>","targetPopupName":"Názov vyskakovacieho okna","title":"Odkaz","toAnchor":"Odkaz na kotvu v texte","toEmail":"E-mail","toUrl":"URL","toolbar":"Odkaz","type":"Typ odkazu","unlink":"Odstrániť odkaz","upload":"Nahrať"},"indent":{"indent":"Zväčšiť odsadenie","outdent":"Zmenšiť odsadenie"},"image":{"alt":"Alternatívny text","border":"Rám (border)","btnUpload":"Odoslať to na server","button2Img":"Chcete zmeniť vybrané obrázkové tlačidlo na jednoduchý obrázok?","hSpace":"H-medzera","img2Button":"Chcete zmeniť vybraný obrázok na obrázkové tlačidlo?","infoTab":"Informácie o obrázku","linkTab":"Odkaz","lockRatio":"Pomer zámky","menu":"Vlastnosti obrázka","resetSize":"Pôvodná veľkosť","title":"Vlastnosti obrázka","titleButton":"Vlastnosti obrázkového tlačidla","upload":"Nahrať","urlMissing":"Chýba URL zdroja obrázka.","vSpace":"V-medzera","validateBorder":"Rám (border) musí byť celé číslo.","validateHSpace":"H-medzera musí byť celé číslo.","validateVSpace":"V-medzera musí byť celé číslo."},"horizontalrule":{"toolbar":"Vložiť vodorovnú čiaru"},"format":{"label":"Formát","panelTitle":"Odsek","tag_address":"Adresa","tag_div":"Normálny (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normálny","tag_pre":"Formátovaný"},"fakeobjects":{"anchor":"Kotva","flash":"Flash animácia","hiddenfield":"Skryté pole","iframe":"IFrame","unknown":"Neznámy objekt"},"elementspath":{"eleLabel":"Cesta prvkov","eleTitle":"%1 prvok"},"contextmenu":{"options":"Možnosti kontextového menu"},"clipboard":{"copy":"Kopírovať","copyError":"Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Použite na to klávesnicu (Ctrl/Cmd+C).","cut":"Vystrihnúť","cutError":"Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Použite na to klávesnicu (Ctrl/Cmd+X).","paste":"Vložiť","pasteNotification":"Váš prehliadač nepovoľuje prilepiť text takýmto spôsobom. Pre prilepenie stlačte %1."},"button":{"selectedLabel":"%1 (Vybrané)"},"blockquote":{"toolbar":"Citácia"},"basicstyles":{"bold":"Tučné","italic":"Kurzíva","strike":"Prečiarknuté","subscript":"Dolný index","superscript":"Horný index","underline":"Podčiarknuté"},"about":{"copy":"Copyright © $1. Všetky práva vyhradené.","dlgTitle":"O CKEditor-e","help":"Zaškrtnite $1 pre pomoc.","moreInfo":"Pre informácie o licenciách, prosíme, navštívte našu web stránku:","title":"O CKEditor-e","userGuide":"Používateľská príručka KCEditor-a"},"editor":"Editor formátovaného textu","editorPanel":"Panel editora formátovaného textu","common":{"editorHelp":"Stlačením ALT 0 spustiť pomocníka","browseServer":"Prehliadať server","url":"URL","protocol":"Protokol","upload":"Odoslať","uploadSubmit":"Odoslať na server","image":"Obrázok","flash":"Flash","form":"Formulár","checkbox":"Zaškrtávacie pole","radio":"Prepínač","textField":"Textové pole","textarea":"Textová oblasť","hiddenField":"Skryté pole","button":"Tlačidlo","select":"Rozbaľovací zoznam","imageButton":"Obrázkové tlačidlo","notSet":"<nenastavené>","id":"Id","name":"Meno","langDir":"Orientácia jazyka","langDirLtr":"Zľava doprava (LTR)","langDirRtl":"Sprava doľava (RTL)","langCode":"Kód jazyka","longDescr":"Dlhý popis URL","cssClass":"Trieda štýlu","advisoryTitle":"Pomocný titulok","cssStyle":"Štýl","ok":"OK","cancel":"Zrušiť","close":"Zatvorit","preview":"Náhľad","resize":"Zmeniť veľkosť","generalTab":"Hlavné","advancedTab":"Rozšírené","validateNumberFailed":"Hodnota nie je číslo.","confirmNewPage":"Prajete si načítat novú stránku? Všetky neuložené zmeny budú stratené. ","confirmCancel":"Niektore možnosti boli zmenené. Naozaj chcete zavrieť okno?","options":"Možnosti","target":"Cieľ","targetNew":"Nové okno (_blank)","targetTop":"Najvrchnejšie okno (_top)","targetSelf":"To isté okno (_self)","targetParent":"Rodičovské okno (_parent)","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","styles":"Štýl","cssClasses":"Triedy štýlu","width":"Šírka","height":"Výška","align":"Zarovnanie","alignLeft":"Vľavo","alignRight":"Vpravo","alignCenter":"Na stred","alignJustify":"Zarovnať do bloku","alignTop":"Nahor","alignMiddle":"Na stred","alignBottom":"Dole","alignNone":"Žiadne","invalidValue":"Neplatná hodnota.","invalidHeight":"Výška musí byť číslo.","invalidWidth":"Šírka musí byť číslo.","invalidCssLength":"Špecifikovaná hodnota pre pole \"%1\" musí byť kladné číslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).","invalidHtmlLength":"Špecifikovaná hodnota pre pole \"%1\" musí byť kladné číslo s alebo bez platnej HTML mernej jednotky (px alebo %).","invalidInlineStyle":"Zadaná hodnota pre inline štýl musí pozostávať s jedného, alebo viac dvojíc formátu \"názov: hodnota\", oddelených bodkočiarkou.","cssLengthTooltip":"Vložte číslo pre hodnotu v pixeloch alebo číslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupný</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Medzerník","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Klávesová skratka"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sl.js b/vendor/unisharp/laravel-ckeditor/lang/sl.js deleted file mode 100644 index 7defff582..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sl']={"wsc":{"btnIgnore":"Prezri","btnIgnoreAll":"Prezri vse","btnReplace":"Zamenjaj","btnReplaceAll":"Zamenjaj vse","btnUndo":"Razveljavi","changeTo":"Spremeni v","errorLoading":"Napaka pri nalaganju storitve programa na naslovu %s.","ieSpellDownload":"Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?","manyChanges":"Črkovanje je končano: Spremenjenih je bilo %1 besed","noChanges":"Črkovanje je končano: Nobena beseda ni bila spremenjena","noMispell":"Črkovanje je končano: Brez napak","noSuggestions":"- Ni predlogov -","notAvailable":"Oprostite, storitev trenutno ni dosegljiva.","notInDic":"Ni v slovarju","oneChange":"Črkovanje je končano: Spremenjena je bila ena beseda","progress":"Preverjanje črkovanja se izvaja...","title":"Črkovalnik","toolbar":"Preveri črkovanje"},"undo":{"redo":"Uveljavi","undo":"Razveljavi"},"toolbar":{"toolbarCollapse":"Skrči orodno vrstico","toolbarExpand":"Razširi orodno vrstico","toolbarGroups":{"document":"Dokument","clipboard":"Odložišče/Razveljavi","editing":"Urejanje","forms":"Obrazci","basicstyles":"Osnovni slogi","paragraph":"Odstavek","links":"Povezave","insert":"Vstavi","styles":"Slogi","colors":"Barve","tools":"Orodja"},"toolbars":"Orodne vrstice urejevalnika"},"table":{"border":"Velikost obrobe","caption":"Napis","cell":{"menu":"Celica","insertBefore":"Vstavi celico pred","insertAfter":"Vstavi celico za","deleteCell":"Izbriši celice","merge":"Združi celice","mergeRight":"Združi desno","mergeDown":"Združi navzdol","splitHorizontal":"Razdeli celico vodoravno","splitVertical":"Razdeli celico navpično","title":"Lastnosti celice","cellType":"Vrsta celice","rowSpan":"Razpon vrstic","colSpan":"Razpon stolpcev","wordWrap":"Prelom besedila","hAlign":"Vodoravna poravnava","vAlign":"Navpična poravnava","alignBaseline":"Osnovnica","bgColor":"Barva ozadja","borderColor":"Barva obrobe","data":"Podatki","header":"Glava","yes":"Da","no":"Ne","invalidWidth":"Širina celice mora biti število.","invalidHeight":"Višina celice mora biti število.","invalidRowSpan":"Razpon vrstic mora biti celo število.","invalidColSpan":"Razpon stolpcev mora biti celo število.","chooseColor":"Izberi"},"cellPad":"Odmik znotraj celic","cellSpace":"Razmik med celicami","column":{"menu":"Stolpec","insertBefore":"Vstavi stolpec pred","insertAfter":"Vstavi stolpec za","deleteColumn":"Izbriši stolpce"},"columns":"Stolpci","deleteTable":"Izbriši tabelo","headers":"Glave","headersBoth":"Oboje","headersColumn":"Prvi stolpec","headersNone":"Brez","headersRow":"Prva vrstica","invalidBorder":"Širina obrobe mora biti število.","invalidCellPadding":"Odmik znotraj celic mora biti pozitivno število.","invalidCellSpacing":"Razmik med celicami mora biti pozitivno število.","invalidCols":"Število stolpcev mora biti večje od 0.","invalidHeight":"Višina tabele mora biti število.","invalidRows":"Število vrstic mora biti večje od 0.","invalidWidth":"Širina tabele mora biti število.","menu":"Lastnosti tabele","row":{"menu":"Vrstica","insertBefore":"Vstavi vrstico pred","insertAfter":"Vstavi vrstico za","deleteRow":"Izbriši vrstice"},"rows":"Vrstice","summary":"Povzetek","title":"Lastnosti tabele","toolbar":"Tabela","widthPc":"odstotkov","widthPx":"pik","widthUnit":"enota širine"},"stylescombo":{"label":"Slog","panelTitle":"Oblikovalni Stili","panelTitle1":"Slogi odstavkov","panelTitle2":"Slogi besedila","panelTitle3":"Slogi objektov"},"specialchar":{"options":"Možnosti posebnih znakov","title":"Izberi posebni znak","toolbar":"Vstavi posebni znak"},"sourcearea":{"toolbar":"Izvorna koda"},"scayt":{"btn_about":"O storitvi SCAYT","btn_dictionaries":"Slovarji","btn_disable":"Onemogoči SCAYT","btn_enable":"Omogoči SCAYT","btn_langs":"Jeziki","btn_options":"Možnosti","text_title":"Črkovanje med tipkanjem"},"removeformat":{"toolbar":"Odstrani oblikovanje"},"pastetext":{"button":"Prilepi kot golo besedilo","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Besedilo, ki ga želite prilepiti, je kopirano iz Worda. Ali ga želite očistiti, preden ga prilepite?","error":"Ni bilo mogoče očistiti prilepljenih podatkov zaradi notranje napake","title":"Prilepi iz Worda","toolbar":"Prilepi iz Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimiraj","minimize":"Minimiraj"},"magicline":{"title":"Vstavite odstavek tukaj"},"list":{"bulletedlist":"Vstavi/odstrani neoštevilčen seznam","numberedlist":"Vstavi/odstrani oštevilčen seznam"},"link":{"acccessKey":"Tipka za dostop","advanced":"Napredno","advisoryContentType":"Predlagana vrsta vsebine","advisoryTitle":"Predlagani naslov","anchor":{"toolbar":"Sidro","menu":"Uredi sidro","title":"Lastnosti sidra","name":"Ime sidra","errorName":"Prosimo, vnesite ime sidra","remove":"Odstrani sidro"},"anchorId":"Po ID-ju elementa","anchorName":"Po imenu sidra","charset":"Nabor znakov povezanega vira","cssClasses":"Razredi slogovne predloge","download":"Force Download","displayText":"Display Text","emailAddress":"E-poštni naslov","emailBody":"Telo sporočila","emailSubject":"Zadeva sporočila","id":"Id","info":"Podatki o povezavi","langCode":"Koda jezika","langDir":"Smer jezika","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","menu":"Uredi povezavo","name":"Ime","noAnchors":"(V tem dokumentu ni sider)","noEmail":"Vnesite e-poštni naslov","noUrl":"Vnesite URL povezave","other":"<drugo>","popupDependent":"Podokno (Netscape)","popupFeatures":"Značilnosti pojavnega okna","popupFullScreen":"Celozaslonsko (IE)","popupLeft":"Lega levo","popupLocationBar":"Naslovna vrstica","popupMenuBar":"Menijska vrstica","popupResizable":"Spremenljive velikosti","popupScrollBars":"Drsniki","popupStatusBar":"Vrstica stanja","popupToolbar":"Orodna vrstica","popupTop":"Lega na vrhu","rel":"Odnos","selectAnchor":"Izberite sidro","styles":"Slog","tabIndex":"Številka tabulatorja","target":"Cilj","targetFrame":"<okvir>","targetFrameName":"Ime ciljnega okvirja","targetPopup":"<pojavno okno>","targetPopupName":"Ime pojavnega okna","title":"Povezava","toAnchor":"Sidro na tej strani","toEmail":"E-pošta","toUrl":"URL","toolbar":"Vstavi/uredi povezavo","type":"Vrsta povezave","unlink":"Odstrani povezavo","upload":"Naloži"},"indent":{"indent":"Povečaj zamik","outdent":"Zmanjšaj zamik"},"image":{"alt":"Nadomestno besedilo","border":"Obroba","btnUpload":"Pošlji na strežnik","button2Img":"Želite pretvoriti izbrani gumb s sliko v preprosto sliko?","hSpace":"Vodoravni odmik","img2Button":"Želite pretvoriti izbrano sliko v gumb s sliko?","infoTab":"Podatki o sliki","linkTab":"Povezava","lockRatio":"Zakleni razmerje","menu":"Lastnosti slike","resetSize":"Ponastavi velikost","title":"Lastnosti slike","titleButton":"Lastnosti gumba s sliko","upload":"Naloži","urlMissing":"Manjka URL vira slike.","vSpace":"Navpični odmik","validateBorder":"Meja mora biti celo število.","validateHSpace":"Vodoravni odmik mora biti celo število.","validateVSpace":"VSpace mora biti celo število."},"horizontalrule":{"toolbar":"Vstavi vodoravno črto"},"format":{"label":"Oblika","panelTitle":"Oblika odstavka","tag_address":"Napis","tag_div":"Navaden (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Navaden","tag_pre":"Oblikovan"},"fakeobjects":{"anchor":"Sidro","flash":"Animacija flash","hiddenfield":"Skrito polje","iframe":"IFrame","unknown":"Neznan objekt"},"elementspath":{"eleLabel":"Pot elementov","eleTitle":"Element %1"},"contextmenu":{"options":"Možnosti kontekstnega menija"},"clipboard":{"copy":"Kopiraj","copyError":"Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).","paste":"Prilepi","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Izbrano)"},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Krepko","italic":"Ležeče","strike":"Prečrtano","subscript":"Podpisano","superscript":"Nadpisano","underline":"Podčrtano"},"about":{"copy":"Copyright © $1. Vse pravice pridržane.","dlgTitle":"O programu CKEditor","help":"Oglejte si $1 za pomoč.","moreInfo":"Za informacije o licenciranju prosimo obiščite našo spletno stran:","title":"O programu CKEditor","userGuide":"Uporabniški vodnik CKEditor"},"editor":"Urejevalnik obogatenega besedila","editorPanel":"Plošča urejevalnika obogatenega besedila","common":{"editorHelp":"Pritisnite ALT 0 za pomoč","browseServer":"Prebrskaj na strežniku","url":"URL","protocol":"Protokol","upload":"Naloži","uploadSubmit":"Pošlji na strežnik","image":"Slika","flash":"Flash","form":"Obrazec","checkbox":"Potrditveno polje","radio":"Izbirno polje","textField":"Besedilno polje","textarea":"Besedilno območje","hiddenField":"Skrito polje","button":"Gumb","select":"Spustno polje","imageButton":"Slikovni gumb","notSet":"<ni določen>","id":"Id","name":"Ime","langDir":"Smer jezika","langDirLtr":"Od leve proti desni (LTR)","langDirRtl":"Od desne proti levi (RTL)","langCode":"Koda jezika","longDescr":"Dolg opis URL-ja","cssClass":"Razredi slogovne predloge","advisoryTitle":"Predlagani naslov","cssStyle":"Slog","ok":"V redu","cancel":"Prekliči","close":"Zapri","preview":"Predogled","resize":"Potegni za spremembo velikosti","generalTab":"Splošno","advancedTab":"Napredno","validateNumberFailed":"Vrednost ni število.","confirmNewPage":"Vse neshranjene spremembe vsebine bodo izgubljene. Ali res želite naložiti novo stran?","confirmCancel":"Spremenili ste nekaj možnosti. Ali res želite zapreti okno?","options":"Možnosti","target":"Cilj","targetNew":"Novo okno (_blank)","targetTop":"Vrhovno okno (_top)","targetSelf":"Isto okno (_self)","targetParent":"Starševsko okno (_parent)","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","styles":"Slog","cssClasses":"Razredi slogovne predloge","width":"Širina","height":"Višina","align":"Poravnava","alignLeft":"Levo","alignRight":"Desno","alignCenter":"Sredinsko","alignJustify":"Obojestranska poravnava","alignTop":"Na vrh","alignMiddle":"V sredino","alignBottom":"Na dno","alignNone":"Brez poravnave","invalidValue":"Neveljavna vrednost.","invalidHeight":"Višina mora biti število.","invalidWidth":"Širina mora biti število.","invalidCssLength":"Vrednost, določena za polje »%1«, mora biti pozitivno število z ali brez veljavne CSS-enote za merjenje (px, %, in, cm, mm, em, ex, pt ali pc).","invalidHtmlLength":"Vrednost, določena za polje »%1«, mora biti pozitivno število z ali brez veljavne HTML-enote za merjenje (px ali %).","invalidInlineStyle":"Vrednost, določena za slog v vrstici, mora biti sestavljena iz ene ali več dvojic oblike »ime : vrednost«, ločenih s podpičji.","cssLengthTooltip":"Vnesite število za vrednost v slikovnih pikah ali število z veljavno CSS-enoto (px, %, in, cm, mm, em, ex, pt ali pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedosegljiv</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sq.js b/vendor/unisharp/laravel-ckeditor/lang/sq.js deleted file mode 100644 index 92706f4d0..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sq']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Ribëje","undo":"Rizhbëje"},"toolbar":{"toolbarCollapse":"Zvogëlo Shiritin","toolbarExpand":"Zgjero Shiritin","toolbarGroups":{"document":"Dokument","clipboard":"Tabela Punës/Ribëje","editing":"Duke Redaktuar","forms":"Formular","basicstyles":"Stili Bazë","paragraph":"Paragraf","links":"Nyjet","insert":"Shto","styles":"Stil","colors":"Ngjyrat","tools":"Mjetet"},"toolbars":"Shiritet e Redaktuesit"},"table":{"border":"Madhësia e kornizave","caption":"Titull","cell":{"menu":"Qeli","insertBefore":"Shto Qeli Para","insertAfter":"Shto Qeli Prapa","deleteCell":"Gris Qelitë","merge":"Bashko Qelitë","mergeRight":"Bashko Djathtas","mergeDown":"Bashko Poshtë","splitHorizontal":"Ndaj Qelinë Horizontalisht","splitVertical":"Ndaj Qelinë Vertikalisht","title":"Rekuizitat e Qelisë","cellType":"Lloji i Qelisë","rowSpan":"Bashko Rreshtat","colSpan":"Bashko Kolonat","wordWrap":"Fund i Fjalës","hAlign":"Bashkimi Horizontal","vAlign":"Bashkimi Vertikal","alignBaseline":"Baza","bgColor":"Ngjyra e Prapavijës","borderColor":"Ngjyra e Kornizave","data":"Të dhënat","header":"Koka","yes":"Po","no":"Jo","invalidWidth":"Gjerësia e qelisë duhet të jetë numër.","invalidHeight":"Lartësia e qelisë duhet të jetë numër.","invalidRowSpan":"Hapësira e rreshtave duhet të jetë numër i plotë.","invalidColSpan":"Hapësira e kolonave duhet të jetë numër i plotë.","chooseColor":"Përzgjidh"},"cellPad":"Mbushja e qelisë","cellSpace":"Hapësira e qelisë","column":{"menu":"Kolona","insertBefore":"Vendos Kolonë Para","insertAfter":"Vendos Kolonë Pas","deleteColumn":"Gris Kolonat"},"columns":"Kolonat","deleteTable":"Gris Tabelën","headers":"Kokat","headersBoth":"Së bashku","headersColumn":"Kolona e parë","headersNone":"Asnjë","headersRow":"Rreshti i Parë","invalidBorder":"Madhësia e kufinjve duhet të jetë numër.","invalidCellPadding":"Mbushja e qelisë duhet të jetë numër pozitiv.","invalidCellSpacing":"Hapësira e qelisë duhet të jetë numër pozitiv.","invalidCols":"Numri i kolonave duhet të jetë numër më i madh se 0.","invalidHeight":"Lartësia e tabelës duhet të jetë numër.","invalidRows":"Numri i rreshtave duhet të jetë numër më i madh se 0.","invalidWidth":"Gjerësia e tabelës duhet të jetë numër.","menu":"Karakteristikat e Tabelës","row":{"menu":"Rreshti","insertBefore":"Shto Rresht Para","insertAfter":"Shto Rresht Prapa","deleteRow":"Gris Rreshtat"},"rows":"Rreshtat","summary":"Përmbledhje","title":"Karakteristikat e Tabelës","toolbar":"Tabela","widthPc":"përqind","widthPx":"piksell","widthUnit":"njësia e gjerësisë"},"stylescombo":{"label":"Stil","panelTitle":"Stilet e Formatimit","panelTitle1":"Stilet e Bllokut","panelTitle2":"Stili i Brendshëm","panelTitle3":"Stilet e Objektit"},"specialchar":{"options":"Mundësitë për Karaktere Speciale","title":"Përzgjidh Karakter Special","toolbar":"Vendos Karakter Special"},"sourcearea":{"toolbar":"Burimi"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Largo Formatin"},"pastetext":{"button":"Hidhe si tekst të thjeshtë","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?","error":"Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm","title":"Hidhe nga Word-i","toolbar":"Hidhe nga Word-i"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Zmadho","minimize":"Zvogëlo"},"magicline":{"title":"Vendos paragraf këtu"},"list":{"bulletedlist":"Vendos/Largo Listën me Pika","numberedlist":"Vendos/Largo Listën me Numra"},"link":{"acccessKey":"Sipas ID-së së Elementit","advanced":"Të përparuara","advisoryContentType":"Lloji i Përmbajtjes Këshillimore","advisoryTitle":"Titull","anchor":{"toolbar":"Spirancë","menu":"Redakto Spirancën","title":"Anchor Properties","name":"Emri i Spirancës","errorName":"Ju lutemi shkruani emrin e spirancës","remove":"Largo Spirancën"},"anchorId":"Sipas ID-së së Elementit","anchorName":"Sipas Emrit të Spirancës","charset":"Seti i Karaktereve të Burimeve të Nëdlidhura","cssClasses":"Klasa stili CSS","download":"Force Download","displayText":"Display Text","emailAddress":"Posta Elektronike","emailBody":"Trupi i Porosisë","emailSubject":"Titulli i Porosisë","id":"Id","info":"Informacione të Nyjes","langCode":"Kod gjuhe","langDir":"Drejtim teksti","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","menu":"Redakto Nyjen","name":"Emër","noAnchors":"(Nuk ka asnjë spirancë në dokument)","noEmail":"Ju lutemi shkruani postën elektronike","noUrl":"Ju lutemi shkruani URL-në e nyjes","other":"<tjetër>","popupDependent":"E Varur (Netscape)","popupFeatures":"Karakteristikat e Dritares së Dialogut","popupFullScreen":"Ekran i Plotë (IE)","popupLeft":"Pozita Majtas","popupLocationBar":"Shiriti i Lokacionit","popupMenuBar":"Shiriti i Menysë","popupResizable":"I ndryshueshëm","popupScrollBars":"Shiritat zvarritës","popupStatusBar":"Shiriti i Statutit","popupToolbar":"Shiriti i Mejteve","popupTop":"Top Pozita","rel":"Marrëdhëniet","selectAnchor":"Përzgjidh një Spirancë","styles":"Stil","tabIndex":"Indeksi i fletave","target":"Objektivi","targetFrame":"<frame>","targetFrameName":"Emri i Kornizës së Synuar","targetPopup":"<popup window>","targetPopupName":"Emri i Dritares së Dialogut","title":"Nyja","toAnchor":"Lidhu me spirancën në tekst","toEmail":"Posta Elektronike","toUrl":"URL","toolbar":"Nyja","type":"Lloji i Nyjes","unlink":"Largo Nyjen","upload":"Ngarko"},"indent":{"indent":"Rrite Identin","outdent":"Zvogëlo Identin"},"image":{"alt":"Tekst Alternativ","border":"Korniza","btnUpload":"Dërgo në server","button2Img":"Dëshironi të e ndërroni pullën e fotos së selektuar në një foto të thjeshtë?","hSpace":"HSpace","img2Button":"Dëshironi të ndryshoni foton e përzgjedhur në pullë?","infoTab":"Informacione mbi Fotografinë","linkTab":"Nyja","lockRatio":"Mbyll Racionin","menu":"Karakteristikat e Fotografisë","resetSize":"Rikthe Madhësinë","title":"Karakteristikat e Fotografisë","titleButton":"Karakteristikat e Pullës së Fotografisë","upload":"Ngarko","urlMissing":"Mungon URL e burimit të fotografisë.","vSpace":"Hapësira Vertikale","validateBorder":"Korniza duhet të jetë numër i plotë.","validateHSpace":"Hapësira horizontale duhet të jetë numër i plotë.","validateVSpace":"Hapësira vertikale duhet të jetë numër i plotë."},"horizontalrule":{"toolbar":"Vendos Vijë Horizontale"},"format":{"label":"Formati","panelTitle":"Formati i Paragrafit","tag_address":"Adresa","tag_div":"Normal (DIV)","tag_h1":"Titulli 1","tag_h2":"Titulli 2","tag_h3":"Titulli 3","tag_h4":"Titulli 4","tag_h5":"Titulli 5","tag_h6":"Titulli 6","tag_p":"Normal","tag_pre":"Formatuar"},"fakeobjects":{"anchor":"Spirancë","flash":"Objekt flash","hiddenfield":"Fushë e fshehur","iframe":"IFrame","unknown":"Objekt i Panjohur"},"elementspath":{"eleLabel":"Rruga e elementeve","eleTitle":"%1 element"},"contextmenu":{"options":"Mundësitë e Menysë së Kontekstit"},"clipboard":{"copy":"Kopjo","copyError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).","cut":"Preje","cutError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).","paste":"Hidhe","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Përzgjedhur)"},"blockquote":{"toolbar":"Citatet"},"basicstyles":{"bold":"Trash","italic":"Pjerrët","strike":"Nëpërmes","subscript":"Nën-skriptë","superscript":"Super-skriptë","underline":"Nënvijëzuar"},"about":{"copy":"Të drejtat e kopjimit © $1. Të gjitha të drejtat e rezervuara.","dlgTitle":"Rreth CKEditor","help":"Kontrollo $1 për ndihmë.","moreInfo":"Për informacione rreth licencave shih faqen tonë:","title":"Rreth CKEditor","userGuide":"Udhëzuesi i Shfrytëzuesit të CKEditor"},"editor":"Redaktues i Pasur Teksti","editorPanel":"Paneli i redaktuesit të tekstit të plotë","common":{"editorHelp":"Shtyp ALT 0 për ndihmë","browseServer":"Shfleto në Server","url":"URL","protocol":"Protokolli","upload":"Ngarko","uploadSubmit":"Dërgo në server","image":"Imazh","flash":"Objekt flash","form":"Formular","checkbox":"Checkbox","radio":"Buton radio","textField":"Fushë tekst","textarea":"Hapësirë tekst","hiddenField":"Fushë e fshehur","button":"Buton","select":"Menu zgjedhjeje","imageButton":"Buton imazhi","notSet":"<e pazgjedhur>","id":"Id","name":"Emër","langDir":"Kod gjuhe","langDirLtr":"Nga e majta në të djathtë (LTR)","langDirRtl":"Nga e djathta në të majtë (RTL)","langCode":"Kod gjuhe","longDescr":"Përshkrim i hollësishëm","cssClass":"Klasa stili CSS","advisoryTitle":"Titull","cssStyle":"Stil","ok":"OK","cancel":"Anulo","close":"Mbyll","preview":"Parashiko","resize":"Ripërmaso","generalTab":"Të përgjithshme","advancedTab":"Të përparuara","validateNumberFailed":"Vlera e futur nuk është një numër","confirmNewPage":"Çdo ndryshim që nuk është ruajtur do humbasë. Je i sigurtë që dëshiron të krijosh një faqe të re?","confirmCancel":"Disa opsione kanë ndryshuar. Je i sigurtë që dëshiron ta mbyllësh dritaren?","options":"Opsione","target":"Objektivi","targetNew":"Dritare e re (_blank)","targetTop":"Dritare në plan të parë (_top)","targetSelf":"E njëjta dritare (_self)","targetParent":"Dritarja prind (_parent)","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","styles":"Stil","cssClasses":"Klasa Stili CSS","width":"Gjerësi","height":"Lartësi","align":"Rreshtim","alignLeft":"Majtas","alignRight":"Djathtas","alignCenter":"Qendër","alignJustify":"Zgjero","alignTop":"Lart","alignMiddle":"Në mes","alignBottom":"Poshtë","alignNone":"Asnjë","invalidValue":"Vlerë e pavlefshme","invalidHeight":"Lartësia duhet të jetë një numër","invalidWidth":"Gjerësia duhet të jetë një numër","invalidCssLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).","invalidHtmlLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme HTML (px ose %)","invalidInlineStyle":"Stili inline duhet të jetë një apo disa vlera të formatit \"emër: vlerë\", ndarë nga pikëpresje.","cssLengthTooltip":"Fut një numër për vlerën në pixel apo një numër me një njësi të vlefshme CSS (px, %, in, cm, mm, ex, pt, ose pc).","unavailable":"%1<span class=\"cke_accessibility\">, i padisponueshëm</span>","keyboard":{"8":"Prapa","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Grise","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/lang/sr-latn.js deleted file mode 100644 index c6cda7a40..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sr-latn']={"wsc":{"btnIgnore":"Ignoriši","btnIgnoreAll":"Ignoriši sve","btnReplace":"Zameni","btnReplaceAll":"Zameni sve","btnUndo":"Vrati akciju","changeTo":"Izmeni","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?","manyChanges":"Provera spelovanja završena: %1 reč(i) je izmenjeno","noChanges":"Provera spelovanja završena: Nije izmenjena nijedna rec","noMispell":"Provera spelovanja završena: greške nisu pronadene","noSuggestions":"- Bez sugestija -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Nije u rečniku","oneChange":"Provera spelovanja završena: Izmenjena je jedna reč","progress":"Provera spelovanja u toku...","title":"Spell Checker","toolbar":"Proveri spelovanje"},"undo":{"redo":"Ponovi akciju","undo":"Poni�ti akciju"},"toolbar":{"toolbarCollapse":"Suzi alatnu traku","toolbarExpand":"Proširi alatnu traku","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Alatne trake"},"table":{"border":"Veličina okvira","caption":"Naslov tabele","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Obriši ćelije","merge":"Spoj celije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Razmak ćelija","cellSpace":"Ćelijski prostor","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Obriši kolone"},"columns":"Kolona","deleteTable":"Izbriši tabelu","headers":"Zaglavlja","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"None","headersRow":"Prvi red","invalidBorder":"Veličina okvira mora biti broj.","invalidCellPadding":"Padding polja mora biti pozitivan broj.","invalidCellSpacing":"Razmak između ćelija mora biti pozitivan broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tabele mora biti broj.","invalidRows":"Broj redova mora biti veći od 0.","invalidWidth":"Širina tabele mora biti broj.","menu":"Osobine tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Obriši redove"},"rows":"Redova","summary":"Sažetak","title":"Osobine tabele","toolbar":"Tabela","widthPc":"procenata","widthPx":"piksela","widthUnit":"jedinica za širinu"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Odaberite specijalni karakter","toolbar":"Unesi specijalni karakter"},"sourcearea":{"toolbar":"Kôd"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalepi kao čist tekst","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalepi iz Worda","toolbar":"Zalepi iz Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Nenabrojiva lista","numberedlist":"Nabrojiva lista"},"link":{"acccessKey":"Pristupni taster","advanced":"Napredni tagovi","advisoryContentType":"Advisory vrsta sadržaja","advisoryTitle":"Advisory naslov","anchor":{"toolbar":"Unesi/izmeni sidro","menu":"Osobine sidra","title":"Osobine sidra","name":"Naziv sidra","errorName":"Unesite naziv sidra","remove":"Ukloni sidro"},"anchorId":"Po Id-u elementa","anchorName":"Po nazivu sidra","charset":"Linked Resource Charset","cssClasses":"Stylesheet klase","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail adresa","emailBody":"Sadržaj poruke","emailSubject":"Naslov","id":"Id","info":"Link Info","langCode":"Smer jezika","langDir":"Smer jezika","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","menu":"Izmeni link","name":"Naziv","noAnchors":"(Nema dostupnih sidra)","noEmail":"Otkucajte adresu elektronske pote","noUrl":"Unesite URL linka","other":"<остало>","popupDependent":"Zavisno (Netscape)","popupFeatures":"Mogućnosti popup prozora","popupFullScreen":"Prikaz preko celog ekrana (IE)","popupLeft":"Od leve ivice ekrana (px)","popupLocationBar":"Lokacija","popupMenuBar":"Kontekstni meni","popupResizable":"Promenljive veličine","popupScrollBars":"Scroll bar","popupStatusBar":"Statusna linija","popupToolbar":"Toolbar","popupTop":"Od vrha ekrana (px)","rel":"Odnos","selectAnchor":"Odaberi sidro","styles":"Stil","tabIndex":"Tab indeks","target":"Meta","targetFrame":"<okvir>","targetFrameName":"Naziv odredišnog frejma","targetPopup":"<popup prozor>","targetPopupName":"Naziv popup prozora","title":"Link","toAnchor":"Sidro na ovoj stranici","toEmail":"E-Mail","toUrl":"URL","toolbar":"Unesi/izmeni link","type":"Vrsta linka","unlink":"Ukloni link","upload":"Pošalji"},"indent":{"indent":"Uvećaj levu marginu","outdent":"Smanji levu marginu"},"image":{"alt":"Alternativni tekst","border":"Okvir","btnUpload":"Pošalji na server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Info slike","linkTab":"Link","lockRatio":"Zaključaj odnos","menu":"Osobine slika","resetSize":"Resetuj veličinu","title":"Osobine slika","titleButton":"Osobine dugmeta sa slikom","upload":"Pošalji","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"Unesi horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normal","tag_pre":"Formatirano"},"fakeobjects":{"anchor":"Unesi/izmeni sidro","flash":"Flash Animation","hiddenfield":"Skriveno polje","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).","cut":"Iseci","cutError":"Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).","paste":"Zalepi","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Podebljano","italic":"Kurziv","strike":"Precrtano","subscript":"Indeks","superscript":"Stepen","underline":"Podvučeno"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Bogati uređivač teksta","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"Pošalji","uploadSubmit":"Pošalji na server","image":"Slika","flash":"Fleš","form":"Forma","checkbox":"Polje za potvrdu","radio":"Radio-dugme","textField":"Tekstualno polje","textarea":"Zona teksta","hiddenField":"Skriveno polje","button":"Dugme","select":"Izborno polje","imageButton":"Dugme sa slikom","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smer jezika","langDirLtr":"S leva na desno (LTR)","langDirRtl":"S desna na levo (RTL)","langCode":"Kôd jezika","longDescr":"Pun opis URL","cssClass":"Stylesheet klase","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Otkaži","close":"Zatvori","preview":"Izgled stranice","resize":"Resize","generalTab":"Opšte","advancedTab":"Napredni tagovi","validateNumberFailed":"Ova vrednost nije broj.","confirmNewPage":"Nesačuvane promene ovog sadržaja će biti izgubljene. Jeste li sigurni da želita da učitate novu stranu?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Opcije","target":"Meta","targetNew":"Novi prozor (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","styles":"Stil","cssClasses":"Stylesheet klase","width":"Širina","height":"Visina","align":"Ravnanje","alignLeft":"Levo","alignRight":"Desno","alignCenter":"Sredina","alignJustify":"Obostrano ravnanje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dole","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Širina mora biti broj.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sr.js b/vendor/unisharp/laravel-ckeditor/lang/sr.js deleted file mode 100644 index f8cd207d7..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sr']={"wsc":{"btnIgnore":"Игнориши","btnIgnoreAll":"Игнориши све","btnReplace":"Замени","btnReplaceAll":"Замени све","btnUndo":"Врати акцију","changeTo":"Измени","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?","manyChanges":"Провера спеловања завршена: %1 реч(и) је измењено","noChanges":"Провера спеловања завршена: Није измењена ниједна реч","noMispell":"Провера спеловања завршена: грешке нису пронађене","noSuggestions":"- Без сугестија -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Није у речнику","oneChange":"Провера спеловања завршена: Измењена је једна реч","progress":"Провера спеловања у току...","title":"Spell Checker","toolbar":"Провери спеловање"},"undo":{"redo":"Понови акцију","undo":"Поништи акцију"},"toolbar":{"toolbarCollapse":"Склопи алатну траку","toolbarExpand":"Прошири алатну траку","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Едитор алатне траке"},"table":{"border":"Величина оквира","caption":"Наслов табеле","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Обриши ћелије","merge":"Спој ћелије","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Размак ћелија","cellSpace":"Ћелијски простор","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Обриши колоне"},"columns":"Kолона","deleteTable":"Обриши таблу","headers":"Поглавља","headersBoth":"Оба","headersColumn":"Прва колона","headersNone":"None","headersRow":"Први ред","invalidBorder":"Величина ивице треба да буде цифра.","invalidCellPadding":"Пуњење ћелије треба да буде позитивна цифра.","invalidCellSpacing":"Размак ћелије треба да буде позитивна цифра.","invalidCols":"Број колона треба да буде цифра већа од 0.","invalidHeight":"Висина табеле треба да буде цифра.","invalidRows":"Број реда треба да буде цифра већа од 0.","invalidWidth":"Ширина табеле треба да буде цифра.","menu":"Особине табеле","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Обриши редове"},"rows":"Редова","summary":"Резиме","title":"Особине табеле","toolbar":"Табела","widthPc":"процената","widthPx":"пиксела","widthUnit":"јединица ширине"},"stylescombo":{"label":"Стил","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Опције специјалног карактера","title":"Одаберите специјални карактер","toolbar":"Унеси специјални карактер"},"sourcearea":{"toolbar":"Kôд"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Уклони форматирање"},"pastetext":{"button":"Залепи као чист текст","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Залепи из Worda","toolbar":"Залепи из Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Ненабројива листа","numberedlist":"Набројиву листу"},"link":{"acccessKey":"Приступни тастер","advanced":"Напредни тагови","advisoryContentType":"Advisory врста садржаја","advisoryTitle":"Advisory наслов","anchor":{"toolbar":"Унеси/измени сидро","menu":"Особине сидра","title":"Особине сидра","name":"Име сидра","errorName":"Молимо Вас да унесете име сидра","remove":"Remove Anchor"},"anchorId":"Пo Ид-jу елемента","anchorName":"По називу сидра","charset":"Linked Resource Charset","cssClasses":"Stylesheet класе","download":"Force Download","displayText":"Display Text","emailAddress":"Адреса електронске поште","emailBody":"Садржај поруке","emailSubject":"Наслов","id":"Ид","info":"Линк инфо","langCode":"Смер језика","langDir":"Смер језика","langDirLTR":"С лева на десно (LTR)","langDirRTL":"С десна на лево (RTL)","menu":"Промени линк","name":"Назив","noAnchors":"(Нема доступних сидра)","noEmail":"Откуцајте адресу електронске поште","noUrl":"Унесите УРЛ линка","other":"<друго>","popupDependent":"Зависно (Netscape)","popupFeatures":"Могућности искачућег прозора","popupFullScreen":"Приказ преко целог екрана (ИE)","popupLeft":"Од леве ивице екрана (пиксела)","popupLocationBar":"Локација","popupMenuBar":"Контекстни мени","popupResizable":"Величина се мења","popupScrollBars":"Скрол бар","popupStatusBar":"Статусна линија","popupToolbar":"Toolbar","popupTop":"Од врха екрана (пиксела)","rel":"Однос","selectAnchor":"Одабери сидро","styles":"Стил","tabIndex":"Таб индекс","target":"Meтa","targetFrame":"<оквир>","targetFrameName":"Назив одредишног фрејма","targetPopup":"<искачући прозор>","targetPopupName":"Назив искачућег прозора","title":"Линк","toAnchor":"Сидро на овој страници","toEmail":"Eлектронска пошта","toUrl":"УРЛ","toolbar":"Унеси/измени линк","type":"Врста линка","unlink":"Уклони линк","upload":"Пошаљи"},"indent":{"indent":"Увећај леву маргину","outdent":"Смањи леву маргину"},"image":{"alt":"Алтернативни текст","border":"Оквир","btnUpload":"Пошаљи на сервер","button2Img":"Да ли желите да промените одабрану слику дугмета као једноставну слику?","hSpace":"HSpace","img2Button":"Да ли желите да промените одабрану слику у слику дугмета?","infoTab":"Инфо слике","linkTab":"Линк","lockRatio":"Закључај однос","menu":"Особине слика","resetSize":"Ресетуј величину","title":"Особине слика","titleButton":"Особине дугмета са сликом","upload":"Пошаљи","urlMissing":"Недостаје УРЛ слике.","vSpace":"VSpace","validateBorder":"Ивица треба да буде цифра.","validateHSpace":"HSpace треба да буде цифра.","validateVSpace":"VSpace треба да буде цифра."},"horizontalrule":{"toolbar":"Унеси хоризонталну линију"},"format":{"label":"Формат","panelTitle":"Формат","tag_address":"Adresa","tag_div":"Нормално (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatirano"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Копирај","copyError":"Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).","cut":"Исеци","cutError":"Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).","paste":"Залепи","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Подебљано","italic":"Курзив","strike":"Прецртано","subscript":"Индекс","superscript":"Степен","underline":"Подвучено"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Претражи сервер","url":"УРЛ","protocol":"Протокол","upload":"Пошаљи","uploadSubmit":"Пошаљи на сервер","image":"Слика","flash":"Флеш елемент","form":"Форма","checkbox":"Поље за потврду","radio":"Радио-дугме","textField":"Текстуално поље","textarea":"Зона текста","hiddenField":"Скривено поље","button":"Дугме","select":"Изборно поље","imageButton":"Дугме са сликом","notSet":"<није постављено>","id":"Ид","name":"Назив","langDir":"Смер језика","langDirLtr":"С лева на десно (LTR)","langDirRtl":"С десна на лево (RTL)","langCode":"Kôд језика","longDescr":"Пун опис УРЛ","cssClass":"Stylesheet класе","advisoryTitle":"Advisory наслов","cssStyle":"Стил","ok":"OK","cancel":"Oткажи","close":"Затвори","preview":"Изглед странице","resize":"Resize","generalTab":"Опште","advancedTab":"Напредни тагови","validateNumberFailed":"Ова вредност није цигра.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Опције","target":"Meтa","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"С лева на десно (LTR)","langDirRTL":"С десна на лево (RTL)","styles":"Стил","cssClasses":"Stylesheet класе","width":"Ширина","height":"Висина","align":"Равнање","alignLeft":"Лево","alignRight":"Десно","alignCenter":"Средина","alignJustify":"Обострано равнање","alignTop":"Врх","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/sv.js b/vendor/unisharp/laravel-ckeditor/lang/sv.js deleted file mode 100644 index 00f2e46f7..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['sv']={"wsc":{"btnIgnore":"Ignorera","btnIgnoreAll":"Ignorera alla","btnReplace":"Ersätt","btnReplaceAll":"Ersätt alla","btnUndo":"Ångra","changeTo":"Ändra till","errorLoading":"Tjänsten är ej tillgänglig: %s.","ieSpellDownload":"Stavningskontrollen är ej installerad. Vill du göra det nu?","manyChanges":"Stavningskontroll slutförd: %1 ord rättades.","noChanges":"Stavningskontroll slutförd: Inga ord rättades.","noMispell":"Stavningskontroll slutförd: Inga stavfel påträffades.","noSuggestions":"- Förslag saknas -","notAvailable":"Tyvärr är tjänsten ej tillgänglig nu","notInDic":"Saknas i ordlistan","oneChange":"Stavningskontroll slutförd: Ett ord rättades.","progress":"Stavningskontroll pågår...","title":"Kontrollera stavning","toolbar":"Stavningskontroll"},"undo":{"redo":"Gör om","undo":"Ångra"},"toolbar":{"toolbarCollapse":"Dölj verktygsfält","toolbarExpand":"Visa verktygsfält","toolbarGroups":{"document":"Dokument","clipboard":"Urklipp/ångra","editing":"Redigering","forms":"Formulär","basicstyles":"Basstilar","paragraph":"Paragraf","links":"Länkar","insert":"Infoga","styles":"Stilar","colors":"Färger","tools":"Verktyg"},"toolbars":"Editorns verktygsfält"},"table":{"border":"Kantstorlek","caption":"Rubrik","cell":{"menu":"Cell","insertBefore":"Lägg till cell före","insertAfter":"Lägg till cell efter","deleteCell":"Radera celler","merge":"Sammanfoga celler","mergeRight":"Sammanfoga höger","mergeDown":"Sammanfoga ner","splitHorizontal":"Dela cell horisontellt","splitVertical":"Dela cell vertikalt","title":"Egenskaper för cell","cellType":"Celltyp","rowSpan":"Rad spann","colSpan":"Kolumnen spann","wordWrap":"Radbrytning","hAlign":"Horisontell justering","vAlign":"Vertikal justering","alignBaseline":"Baslinje","bgColor":"Bakgrundsfärg","borderColor":"Ramfärg","data":"Data","header":"Rubrik","yes":"Ja","no":"Nej","invalidWidth":"Cellens bredd måste vara ett nummer.","invalidHeight":"Cellens höjd måste vara ett nummer.","invalidRowSpan":"Radutvidgning måste vara ett heltal.","invalidColSpan":"Kolumn måste vara ett heltal.","chooseColor":"Välj"},"cellPad":"Cellutfyllnad","cellSpace":"Cellavstånd","column":{"menu":"Kolumn","insertBefore":"Lägg till kolumn före","insertAfter":"Lägg till kolumn efter","deleteColumn":"Radera kolumn"},"columns":"Kolumner","deleteTable":"Radera tabell","headers":"Rubriker","headersBoth":"Båda","headersColumn":"Första kolumnen","headersNone":"Ingen","headersRow":"Första raden","invalidBorder":"Ram måste vara ett nummer.","invalidCellPadding":"Luft i cell måste vara ett nummer.","invalidCellSpacing":"Luft i cell måste vara ett nummer.","invalidCols":"Antal kolumner måste vara ett nummer större än 0.","invalidHeight":"Tabellens höjd måste vara ett nummer.","invalidRows":"Antal rader måste vara större än 0.","invalidWidth":"Tabell måste vara ett nummer.","menu":"Tabellegenskaper","row":{"menu":"Rad","insertBefore":"Lägg till rad före","insertAfter":"Lägg till rad efter","deleteRow":"Radera rad"},"rows":"Rader","summary":"Sammanfattning","title":"Tabellegenskaper","toolbar":"Tabell","widthPc":"procent","widthPx":"pixlar","widthUnit":"enhet bredd"},"stylescombo":{"label":"Stilar","panelTitle":"Formateringsstilar","panelTitle1":"Blockstilar","panelTitle2":"Inbäddade stilar","panelTitle3":"Objektstilar"},"specialchar":{"options":"Alternativ för utökade tecken","title":"Välj utökat tecken","toolbar":"Klistra in utökat tecken"},"sourcearea":{"toolbar":"Källa"},"scayt":{"btn_about":"Om SCAYT","btn_dictionaries":"Ordlistor","btn_disable":"Inaktivera SCAYT","btn_enable":"Aktivera SCAYT","btn_langs":"Språk","btn_options":"Inställningar","text_title":"Stavningskontroll medan du skriver"},"removeformat":{"toolbar":"Radera formatering"},"pastetext":{"button":"Klistra in som vanlig text","pasteNotification":"Din webbläsare tillåter dig inte att klistra in vanlig text på detta vis. Tryck på %1 för att klistra in."},"pastefromword":{"confirmCleanup":"Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa den innan du klistrar in den?","error":"Det var inte möjligt att städa upp den inklistrade data på grund av ett internt fel","title":"Klistra in från Word","toolbar":"Klistra in från Word"},"notification":{"closed":"Notifiering stängd."},"maximize":{"maximize":"Maximera","minimize":"Minimera"},"magicline":{"title":"Infoga paragraf här"},"list":{"bulletedlist":"Infoga/ta bort punktlista","numberedlist":"Infoga/ta bort numrerad lista"},"link":{"acccessKey":"Behörighetsnyckel","advanced":"Avancerad","advisoryContentType":"Innehållstyp","advisoryTitle":"Titel","anchor":{"toolbar":"Infoga/Redigera ankarlänk","menu":"Egenskaper för ankarlänk","title":"Egenskaper för ankarlänk","name":"Ankarnamn","errorName":"Var god ange ett ankarnamn","remove":"Radera ankare"},"anchorId":"Efter element-id","anchorName":"Efter ankarnamn","charset":"Teckenuppställning","cssClasses":"Stilmall","download":"Tvinga nerladdning","displayText":"Visningstext","emailAddress":"E-postadress","emailBody":"Innehåll","emailSubject":"Ämne","id":"Id","info":"Länkinformation","langCode":"Språkkod","langDir":"Språkriktning","langDirLTR":"Vänster till höger (VTH)","langDirRTL":"Höger till vänster (HTV)","menu":"Redigera länk","name":"Namn","noAnchors":"(Inga ankare kunde hittas)","noEmail":"Var god ange e-postadress","noUrl":"Var god ange länkens URL","other":"<annan>","popupDependent":"Beroende (endast Netscape)","popupFeatures":"Popup-fönstrets egenskaper","popupFullScreen":"Helskärm (endast IE)","popupLeft":"Position från vänster","popupLocationBar":"Adressfält","popupMenuBar":"Menyfält","popupResizable":"Skalbart","popupScrollBars":"Scrolllista","popupStatusBar":"Statusfält","popupToolbar":"Verktygsfält","popupTop":"Position från sidans topp","rel":"Förhållande","selectAnchor":"Välj ett ankare","styles":"Stilmall","tabIndex":"Tabindex","target":"Mål","targetFrame":"<ram>","targetFrameName":"Målets ramnamn","targetPopup":"<popup-fönster>","targetPopupName":"Popup-fönstrets namn","title":"Länk","toAnchor":"Länk till ankare i texten","toEmail":"E-post","toUrl":"URL","toolbar":"Infoga/Redigera länk","type":"Länktyp","unlink":"Radera länk","upload":"Ladda upp"},"indent":{"indent":"Öka indrag","outdent":"Minska indrag"},"image":{"alt":"Alternativ text","border":"Kant","btnUpload":"Skicka till server","button2Img":"Vill du omvandla den valda bildknappen på en enkel bild?","hSpace":"Horis. marginal","img2Button":"Vill du omvandla den valda bildknappen på en enkel bild?","infoTab":"Bildinformation","linkTab":"Länk","lockRatio":"Lås höjd/bredd förhållanden","menu":"Bildegenskaper","resetSize":"Återställ storlek","title":"Bildegenskaper","titleButton":"Egenskaper för bildknapp","upload":"Ladda upp","urlMissing":"Bildkällans URL saknas.","vSpace":"Vert. marginal","validateBorder":"Kantlinje måste vara ett heltal.","validateHSpace":"HSpace måste vara ett heltal.","validateVSpace":"VSpace måste vara ett heltal."},"horizontalrule":{"toolbar":"Infoga horisontal linje"},"format":{"label":"Teckenformat","panelTitle":"Teckenformat","tag_address":"Adress","tag_div":"Normal (DIV)","tag_h1":"Rubrik 1","tag_h2":"Rubrik 2","tag_h3":"Rubrik 3","tag_h4":"Rubrik 4","tag_h5":"Rubrik 5","tag_h6":"Rubrik 6","tag_p":"Normal","tag_pre":"Formaterad"},"fakeobjects":{"anchor":"Ankare","flash":"Flashanimation","hiddenfield":"Gömt fält","iframe":"iFrame","unknown":"Okänt objekt"},"elementspath":{"eleLabel":"Elementets sökväg","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiera","copyError":"Säkerhetsinställningar i din webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.","cut":"Klipp ut","cutError":"Säkerhetsinställningar i din webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.","paste":"Klistra in","pasteNotification":"Din webbläsare tillåter dig inte att klistra in på detta vis. Tryck på %1 för att klistra in."},"button":{"selectedLabel":"%1 (Vald)"},"blockquote":{"toolbar":"Blockcitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Genomstruken","subscript":"Nedsänkta tecken","superscript":"Upphöjda tecken","underline":"Understruken"},"about":{"copy":"Copyright © $1. Alla rättigheter reserverade.","dlgTitle":"Om CKEditor","help":"Se $1 för hjälp.","moreInfo":"För information om licensiering besök vår hemsida:","title":"Om CKEditor","userGuide":"CKEditor användarmanual"},"editor":"Rich Text-editor","editorPanel":"Panel till Rich Text-editor","common":{"editorHelp":"Tryck ALT 0 för hjälp","browseServer":"Bläddra på server","url":"URL","protocol":"Protokoll","upload":"Ladda upp","uploadSubmit":"Skicka till server","image":"Bild","flash":"Flash","form":"Formulär","checkbox":"Kryssruta","radio":"Alternativknapp","textField":"Textfält","textarea":"Textruta","hiddenField":"Dolt fält","button":"Knapp","select":"Flervalslista","imageButton":"Bildknapp","notSet":"<ej angivet>","id":"Id","name":"Namn","langDir":"Språkriktning","langDirLtr":"Vänster till Höger (VTH)","langDirRtl":"Höger till Vänster (HTV)","langCode":"Språkkod","longDescr":"URL-beskrivning","cssClass":"Stilmall","advisoryTitle":"Titel","cssStyle":"Stilmall","ok":"OK","cancel":"Avbryt","close":"Stäng","preview":"Förhandsgranska","resize":"Dra för att ändra storlek","generalTab":"Allmänt","advancedTab":"Avancerad","validateNumberFailed":"Värdet är inte ett nummer.","confirmNewPage":"Alla ändringar i innehållet kommer att förloras. Är du säker på att du vill ladda en ny sida?","confirmCancel":"Några av alternativen har ändrats. Är du säker på att du vill stänga dialogrutan?","options":"Alternativ","target":"Mål","targetNew":"Nytt fönster (_blank)","targetTop":"Översta fönstret (_top)","targetSelf":"Samma fönster (_self)","targetParent":"Föregående fönster (_parent)","langDirLTR":"Vänster till höger (LTR)","langDirRTL":"Höger till vänster (RTL)","styles":"Stil","cssClasses":"Stilmallar","width":"Bredd","height":"Höjd","align":"Justering","alignLeft":"Vänster","alignRight":"Höger","alignCenter":"Centrerad","alignJustify":"Justera till marginaler","alignTop":"Överkant","alignMiddle":"Mitten","alignBottom":"Nederkant","alignNone":"Ingen","invalidValue":"Felaktigt värde.","invalidHeight":"Höjd måste vara ett nummer.","invalidWidth":"Bredd måste vara ett nummer.","invalidCssLength":"Värdet för fältet \"%1\" måste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Värdet för fältet \"%1\" måste vara ett positivt nummer med eller utan godkända HTML-mätenheter (px eller %).","invalidInlineStyle":"Det angivna värdet för style måste innehålla en eller flera tupler separerade med semikolon i följande format: \"name : value\"","cssLengthTooltip":"Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, Ej tillgänglig</span>","keyboard":{"8":"Backsteg","13":"Retur","16":"Skift","17":"Ctrl","18":"Alt","32":"Mellanslag","35":"Slut","36":"Hem","46":"Radera","224":"Kommando"},"keyboardShortcut":"Kortkommando"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/th.js b/vendor/unisharp/laravel-ckeditor/lang/th.js deleted file mode 100644 index 25f92626c..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/th.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['th']={"wsc":{"btnIgnore":"ยกเว้น","btnIgnoreAll":"ยกเว้นทั้งหมด","btnReplace":"แทนที่","btnReplaceAll":"แทนที่ทั้งหมด","btnUndo":"ยกเลิก","changeTo":"แก้ไขเป็น","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?","manyChanges":"ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ","noChanges":"ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ","noMispell":"ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด","noSuggestions":"- ไม่มีคำแนะนำใดๆ -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"ไม่พบในดิกชันนารี","oneChange":"ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ","progress":"กำลังตรวจสอบคำสะกด...","title":"Spell Checker","toolbar":"ตรวจการสะกดคำ"},"undo":{"redo":"ทำซ้ำคำสั่ง","undo":"ยกเลิกคำสั่ง"},"toolbar":{"toolbarCollapse":"ซ่อนแถบเครื่องมือ","toolbarExpand":"เปิดแถบเครื่องมือ","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"แถบเครื่องมือช่วยพิมพ์ข้อความ"},"table":{"border":"ขนาดเส้นขอบ","caption":"หัวเรื่องของตาราง","cell":{"menu":"ช่องตาราง","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"ลบช่อง","merge":"ผสานช่อง","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ระยะแนวตั้ง","cellSpace":"ระยะแนวนอนน","column":{"menu":"คอลัมน์","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"ลบสดมน์"},"columns":"สดมน์","deleteTable":"ลบตาราง","headers":"ส่วนหัว","headersBoth":"ทั้งสองอย่าง","headersColumn":"คอลัมน์แรก","headersNone":"None","headersRow":"แถวแรก","invalidBorder":"ขนาดเส้นกรอบต้องเป็นจำนวนตัวเลข","invalidCellPadding":"ช่องว่างภายในเซลล์ต้องเลขจำนวนบวก","invalidCellSpacing":"ช่องว่างภายในเซลล์ต้องเป็นเลขจำนวนบวก","invalidCols":"จำนวนคอลัมน์ต้องเป็นจำนวนมากกว่า 0","invalidHeight":"ส่วนสูงของตารางต้องเป็นตัวเลข","invalidRows":"จำนวนของแถวต้องเป็นจำนวนมากกว่า 0","invalidWidth":"ความกว้างตารางต้องเป็นตัวเลข","menu":"คุณสมบัติของ ตาราง","row":{"menu":"แถว","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"ลบแถว"},"rows":"แถว","summary":"สรุปความ","title":"คุณสมบัติของ ตาราง","toolbar":"ตาราง","widthPc":"เปอร์เซ็น","widthPx":"จุดสี","widthUnit":"หน่วยความกว้าง"},"stylescombo":{"label":"ลักษณะ","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"แทรกตัวอักษรพิเศษ","toolbar":"แทรกตัวอักษรพิเศษ"},"sourcearea":{"toolbar":"ดูรหัส HTML"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"ล้างรูปแบบ"},"pastetext":{"button":"วางแบบตัวอักษรธรรมดา","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"ข้อความที่คุณต้องการวางลงไปเป็นข้อความที่คัดลอกมาจากโปรแกรมไมโครซอฟท์เวิร์ด คุณต้องการล้างค่าข้อความดังกล่าวก่อนวางลงไปหรือไม่?","error":"ไม่สามารถล้างข้อมูลที่ต้องการวางได้เนื่องจากเกิดข้อผิดพลาดภายในระบบ","title":"วางสำเนาจากตัวอักษรเวิร์ด","toolbar":"วางสำเนาจากตัวอักษรเวิร์ด"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"ขยายใหญ่","minimize":"ย่อขนาด"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ลำดับรายการแบบสัญลักษณ์","numberedlist":"ลำดับรายการแบบตัวเลข"},"link":{"acccessKey":"แอคเซส คีย์","advanced":"ขั้นสูง","advisoryContentType":"ชนิดของคำเกริ่นนำ","advisoryTitle":"คำเกริ่นนำ","anchor":{"toolbar":"แทรก/แก้ไข Anchor","menu":"รายละเอียด Anchor","title":"รายละเอียด Anchor","name":"ชื่อ Anchor","errorName":"กรุณาระบุชื่อของ Anchor","remove":"Remove Anchor"},"anchorId":"ไอดี","anchorName":"ชื่อ","charset":"ลิงค์เชื่อมโยงไปยังชุดตัวอักษร","cssClasses":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","download":"Force Download","displayText":"Display Text","emailAddress":"อีเมล์ (E-Mail)","emailBody":"ข้อความ","emailSubject":"หัวเรื่อง","id":"ไอดี","info":"รายละเอียด","langCode":"การเขียน-อ่านภาษา","langDir":"การเขียน-อ่านภาษา","langDirLTR":"จากซ้ายไปขวา (LTR)","langDirRTL":"จากขวามาซ้าย (RTL)","menu":"แก้ไข ลิงค์","name":"ชื่อ","noAnchors":"(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)","noEmail":"กรุณาระบุอีเมล์ (E-mail)","noUrl":"กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)","other":"<อื่น ๆ>","popupDependent":"แสดงเต็มหน้าจอ (Netscape)","popupFeatures":"คุณสมบัติของหน้าจอเล็ก (Pop-up)","popupFullScreen":"แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)","popupLeft":"พิกัดซ้าย (Left Position)","popupLocationBar":"แสดงที่อยู่ของไฟล์","popupMenuBar":"แสดงแถบเมนู","popupResizable":"สามารถปรับขนาดได้","popupScrollBars":"แสดงแถบเลื่อน","popupStatusBar":"แสดงแถบสถานะ","popupToolbar":"แสดงแถบเครื่องมือ","popupTop":"พิกัดบน (Top Position)","rel":"ความสัมพันธ์","selectAnchor":"ระบุข้อมูลของจุดเชื่อมโยง (Anchor)","styles":"ลักษณะการแสดงผล","tabIndex":"ลำดับของ แท็บ","target":"การเปิดหน้าลิงค์","targetFrame":"<เปิดในเฟรม>","targetFrameName":"ชื่อทาร์เก็ตเฟรม","targetPopup":"<เปิดหน้าจอเล็ก (Pop-up)>","targetPopupName":"ระบุชื่อหน้าจอเล็ก (Pop-up)","title":"ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ","toAnchor":"จุดเชื่อมโยง (Anchor)","toEmail":"ส่งอีเมล์ (E-Mail)","toUrl":"ที่อยู่อ้างอิง URL","toolbar":"แทรก/แก้ไข ลิงค์","type":"ประเภทของลิงค์","unlink":"ลบ ลิงค์","upload":"อัพโหลดไฟล์"},"indent":{"indent":"เพิ่มระยะย่อหน้า","outdent":"ลดระยะย่อหน้า"},"image":{"alt":"คำประกอบรูปภาพ","border":"ขนาดขอบรูป","btnUpload":"อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"ระยะแนวนอน","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"ข้อมูลของรูปภาพ","linkTab":"ลิ้งค์","lockRatio":"กำหนดอัตราส่วน กว้าง-สูง แบบคงที่","menu":"คุณสมบัติของ รูปภาพ","resetSize":"กำหนดรูปเท่าขนาดจริง","title":"คุณสมบัติของ รูปภาพ","titleButton":"คุณสมบัติของ ปุ่มแบบรูปภาพ","upload":"อัพโหลดไฟล์","urlMissing":"Image source URL is missing.","vSpace":"ระยะแนวตั้ง","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"horizontalrule":{"toolbar":"แทรกเส้นคั่นบรรทัด"},"format":{"label":"รูปแบบ","panelTitle":"รูปแบบ","tag_address":"Address","tag_div":"Paragraph (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"fakeobjects":{"anchor":"แทรก/แก้ไข Anchor","flash":"ภาพอนิเมชั่นแฟลช","hiddenfield":"ฮิดเดนฟิลด์","iframe":"IFrame","unknown":"วัตถุไม่ทราบชนิด"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"สำเนา","copyError":"ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).","cut":"ตัด","cutError":"ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).","paste":"วาง","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"ตัวหนา","italic":"ตัวเอียง","strike":"ตัวขีดเส้นทับ","subscript":"ตัวห้อย","superscript":"ตัวยก","underline":"ตัวขีดเส้นใต้"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"กด ALT 0 หากต้องการความช่วยเหลือ","browseServer":"เปิดหน้าต่างจัดการไฟล์อัพโหลด","url":"ที่อยู่อ้างอิง URL","protocol":"โปรโตคอล","upload":"อัพโหลดไฟล์","uploadSubmit":"อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)","image":"รูปภาพ","flash":"ไฟล์ Flash","form":"แบบฟอร์ม","checkbox":"เช็คบ๊อก","radio":"เรดิโอบัตตอน","textField":"เท็กซ์ฟิลด์","textarea":"เท็กซ์แอเรีย","hiddenField":"ฮิดเดนฟิลด์","button":"ปุ่ม","select":"แถบตัวเลือก","imageButton":"ปุ่มแบบรูปภาพ","notSet":"<ไม่ระบุ>","id":"ไอดี","name":"ชื่อ","langDir":"การเขียน-อ่านภาษา","langDirLtr":"จากซ้ายไปขวา (LTR)","langDirRtl":"จากขวามาซ้าย (RTL)","langCode":"รหัสภาษา","longDescr":"คำอธิบายประกอบ URL","cssClass":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","advisoryTitle":"คำเกริ่นนำ","cssStyle":"ลักษณะการแสดงผล","ok":"ตกลง","cancel":"ยกเลิก","close":"ปิด","preview":"ดูหน้าเอกสารตัวอย่าง","resize":"ปรับขนาด","generalTab":"ทั่วไป","advancedTab":"ขั้นสูง","validateNumberFailed":"ค่านี้ไม่ใช่ตัวเลข","confirmNewPage":"การเปลี่ยนแปลงใดๆ ในเนื้อหานี้ ที่ไม่ได้ถูกบันทึกไว้ จะสูญหายทั้งหมด คุณแน่ใจว่าจะเรียกหน้าใหม่?","confirmCancel":"ตัวเลือกบางตัวมีการเปลี่ยนแปลง คุณแน่ใจว่าจะปิดกล่องโต้ตอบนี้?","options":"ตัวเลือก","target":"การเปิดหน้าลิงค์","targetNew":"หน้าต่างใหม่ (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"หน้าต่างเดียวกัน (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"จากซ้ายไปขวา (LTR)","langDirRTL":"จากขวามาซ้าย (RTL)","styles":"ลักษณะการแสดงผล","cssClasses":"คลาสของไฟล์กำหนดลักษณะการแสดงผล","width":"ความกว้าง","height":"ความสูง","align":"การจัดวาง","alignLeft":"ชิดซ้าย","alignRight":"ชิดขวา","alignCenter":"กึ่งกลาง","alignJustify":"நியாயப்படுத்தவும்","alignTop":"บนสุด","alignMiddle":"กึ่งกลางแนวตั้ง","alignBottom":"ชิดด้านล่าง","alignNone":"None","invalidValue":"ค่าไม่ถูกต้อง","invalidHeight":"ความสูงต้องเป็นตัวเลข","invalidWidth":"ความกว้างต้องเป็นตัวเลข","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/tr.js b/vendor/unisharp/laravel-ckeditor/lang/tr.js deleted file mode 100644 index 75072fa1d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['tr']={"wsc":{"btnIgnore":"Yoksay","btnIgnoreAll":"Tümünü Yoksay","btnReplace":"Değiştir","btnReplaceAll":"Tümünü Değiştir","btnUndo":"Geri Al","changeTo":"Şuna değiştir:","errorLoading":"Uygulamada yüklerken hata oluştu: %s.","ieSpellDownload":"Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?","manyChanges":"Yazım denetimi tamamlandı: %1 kelime değiştirildi","noChanges":"Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi","noMispell":"Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı","noSuggestions":"- Öneri Yok -","notAvailable":"Üzügünüz, bu servis şuanda hizmet dışıdır.","notInDic":"Sözlükte Yok","oneChange":"Yazım denetimi tamamlandı: Bir kelime değiştirildi","progress":"Yazım denetimi işlemde...","title":"Yazımı Denetle","toolbar":"Yazım Denetimi"},"undo":{"redo":"Tekrarla","undo":"Geri Al"},"toolbar":{"toolbarCollapse":"Araç çubuklarını topla","toolbarExpand":"Araç çubuklarını aç","toolbarGroups":{"document":"Belge","clipboard":"Pano/Geri al","editing":"Düzenleme","forms":"Formlar","basicstyles":"Temel Stiller","paragraph":"Paragraf","links":"Bağlantılar","insert":"Ekle","styles":"Stiller","colors":"Renkler","tools":"Araçlar"},"toolbars":"Araç çubukları Editörü"},"table":{"border":"Kenar Kalınlığı","caption":"Başlık","cell":{"menu":"Hücre","insertBefore":"Hücre Ekle - Önce","insertAfter":"Hücre Ekle - Sonra","deleteCell":"Hücre Sil","merge":"Hücreleri Birleştir","mergeRight":"Birleştir - Sağdaki İle ","mergeDown":"Birleştir - Aşağıdaki İle ","splitHorizontal":"Hücreyi Yatay Böl","splitVertical":"Hücreyi Dikey Böl","title":"Hücre Özellikleri","cellType":"Hücre Tipi","rowSpan":"Satırlar Mesafesi (Span)","colSpan":"Sütünlar Mesafesi (Span)","wordWrap":"Kelime Kaydırma","hAlign":"Düşey Hizalama","vAlign":"Yataş Hizalama","alignBaseline":"Tabana","bgColor":"Arkaplan Rengi","borderColor":"Çerçeve Rengi","data":"Veri","header":"Başlık","yes":"Evet","no":"Hayır","invalidWidth":"Hücre genişliği sayı olmalıdır.","invalidHeight":"Hücre yüksekliği sayı olmalıdır.","invalidRowSpan":"Satırların mesafesi tam sayı olmalıdır.","invalidColSpan":"Sütünların mesafesi tam sayı olmalıdır.","chooseColor":"Seçiniz"},"cellPad":"Izgara yazı arası","cellSpace":"Izgara kalınlığı","column":{"menu":"Sütun","insertBefore":"Kolon Ekle - Önce","insertAfter":"Kolon Ekle - Sonra","deleteColumn":"Sütun Sil"},"columns":"Sütunlar","deleteTable":"Tabloyu Sil","headers":"Başlıklar","headersBoth":"Her İkisi","headersColumn":"İlk Sütun","headersNone":"Yok","headersRow":"İlk Satır","invalidBorder":"Çerceve büyüklüklüğü sayı olmalıdır.","invalidCellPadding":"Hücre aralığı (padding) sayı olmalıdır.","invalidCellSpacing":"Hücre boşluğu (spacing) sayı olmalıdır.","invalidCols":"Sütün sayısı 0 sayısından büyük olmalıdır.","invalidHeight":"Tablo yüksekliği sayı olmalıdır.","invalidRows":"Satır sayısı 0 sayısından büyük olmalıdır.","invalidWidth":"Tablo genişliği sayı olmalıdır.","menu":"Tablo Özellikleri","row":{"menu":"Satır","insertBefore":"Satır Ekle - Önce","insertAfter":"Satır Ekle - Sonra","deleteRow":"Satır Sil"},"rows":"Satırlar","summary":"Özet","title":"Tablo Özellikleri","toolbar":"Tablo","widthPc":"yüzde","widthPx":"piksel","widthUnit":"genişlik birimi"},"stylescombo":{"label":"Biçem","panelTitle":"Stilleri Düzenliyor","panelTitle1":"Blok Stilleri","panelTitle2":"Inline Stilleri","panelTitle3":"Nesne Stilleri"},"specialchar":{"options":"Özel Karakter Seçenekleri","title":"Özel Karakter Seç","toolbar":"Özel Karakter Ekle"},"sourcearea":{"toolbar":"Kaynak"},"scayt":{"btn_about":"SCAYT'ı hakkında","btn_dictionaries":"Sözlükler","btn_disable":"SCAYT'ı pasifleştir","btn_enable":"SCAYT'ı etkinleştir","btn_langs":"Diller","btn_options":"Seçenekler","text_title":"Girmiş olduğunuz kelime denetimi"},"removeformat":{"toolbar":"Biçimi Kaldır"},"pastetext":{"button":"Düz Metin Olarak Yapıştır","pasteNotification":"Web tarayıcınız bu şekilde düz metni yapıştırmanıza izin vermiyor. Yapıştırmak için %1 basınız."},"pastefromword":{"confirmCleanup":"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?","error":"Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir","title":"Word'den Yapıştır","toolbar":"Word'den Yapıştır"},"notification":{"closed":"Uyarılar kapatıldı."},"maximize":{"maximize":"Büyült","minimize":"Küçült"},"magicline":{"title":"Parağrafı buraya ekle"},"list":{"bulletedlist":"Simgeli Liste","numberedlist":"Numaralı Liste"},"link":{"acccessKey":"Erişim Tuşu","advanced":"Gelişmiş","advisoryContentType":"Danışma İçerik Türü","advisoryTitle":"Danışma Başlığı","anchor":{"toolbar":"Bağlantı Ekle/Düzenle","menu":"Bağlantı Özellikleri","title":"Bağlantı Özellikleri","name":"Bağlantı Adı","errorName":"Lütfen bağlantı için ad giriniz","remove":"Bağlantıyı Kaldır"},"anchorId":"Eleman Kimlik Numarası ile","anchorName":"Bağlantı Adı ile","charset":"Bağlı Kaynak Karakter Gurubu","cssClasses":"Biçem Sayfası Sınıfları","download":"İndirmeye Zorla","displayText":"Gösterim Metni","emailAddress":"E-Posta Adresi","emailBody":"İleti Gövdesi","emailSubject":"İleti Konusu","id":"Id","info":"Link Bilgisi","langCode":"Dil Yönü","langDir":"Dil Yönü","langDirLTR":"Soldan Sağa (LTR)","langDirRTL":"Sağdan Sola (RTL)","menu":"Link Düzenle","name":"Ad","noAnchors":"(Bu belgede hiç çapa yok)","noEmail":"Lütfen E-posta adresini yazın","noUrl":"Lütfen Link URL'sini yazın","other":"<diğer>","popupDependent":"Bağımlı (Netscape)","popupFeatures":"Yeni Açılan Pencere Özellikleri","popupFullScreen":"Tam Ekran (IE)","popupLeft":"Sola Göre Konum","popupLocationBar":"Yer Çubuğu","popupMenuBar":"Menü Çubuğu","popupResizable":"Resizable","popupScrollBars":"Kaydırma Çubukları","popupStatusBar":"Durum Çubuğu","popupToolbar":"Araç Çubuğu","popupTop":"Yukarıya Göre Konum","rel":"İlişki","selectAnchor":"Bağlantı Seç","styles":"Biçem","tabIndex":"Sekme İndeksi","target":"Hedef","targetFrame":"<çerçeve>","targetFrameName":"Hedef Çerçeve Adı","targetPopup":"<yeni açılan pencere>","targetPopupName":"Yeni Açılan Pencere Adı","title":"Link","toAnchor":"Bu sayfada çapa","toEmail":"E-Posta","toUrl":"URL","toolbar":"Link Ekle/Düzenle","type":"Link Türü","unlink":"Köprü Kaldır","upload":"Karşıya Yükle"},"indent":{"indent":"Sekme Arttır","outdent":"Sekme Azalt"},"image":{"alt":"Alternatif Yazı","border":"Kenar","btnUpload":"Sunucuya Yolla","button2Img":"Seçili resim butonunu basit resime çevirmek istermisiniz?","hSpace":"Yatay Boşluk","img2Button":"Seçili olan resimi, resimli butona çevirmek istermisiniz?","infoTab":"Resim Bilgisi","linkTab":"Köprü","lockRatio":"Oranı Kilitle","menu":"Resim Özellikleri","resetSize":"Boyutu Başa Döndür","title":"Resim Özellikleri","titleButton":"Resimli Düğme Özellikleri","upload":"Karşıya Yükle","urlMissing":"Resmin URL kaynağı eksiktir.","vSpace":"Dikey Boşluk","validateBorder":"Çerçeve tam sayı olmalıdır.","validateHSpace":"HSpace tam sayı olmalıdır.","validateVSpace":"VSpace tam sayı olmalıdır."},"horizontalrule":{"toolbar":"Yatay Satır Ekle"},"format":{"label":"Biçim","panelTitle":"Biçim","tag_address":"Adres","tag_div":"Paragraf (DIV)","tag_h1":"Başlık 1","tag_h2":"Başlık 2","tag_h3":"Başlık 3","tag_h4":"Başlık 4","tag_h5":"Başlık 5","tag_h6":"Başlık 6","tag_p":"Normal","tag_pre":"Biçimli"},"fakeobjects":{"anchor":"Bağlantı","flash":"Flash Animasyonu","hiddenfield":"Gizli Alan","iframe":"IFrame","unknown":"Bilinmeyen Nesne"},"elementspath":{"eleLabel":"Elementlerin yolu","eleTitle":"%1 elementi"},"contextmenu":{"options":"İçerik Menüsü Seçenekleri"},"clipboard":{"copy":"Kopyala","copyError":"Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.","cut":"Kes","cutError":"Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.","paste":"Yapıştır","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Seçilmiş)"},"blockquote":{"toolbar":"Blok Oluştur"},"basicstyles":{"bold":"Kalın","italic":"İtalik","strike":"Üstü Çizgili","subscript":"Alt Simge","superscript":"Üst Simge","underline":"Altı Çizgili"},"about":{"copy":"Copyright © $1. Tüm hakları saklıdır.","dlgTitle":"CKEditor Hakkında","help":"Yardım için $1 kontrol edin.","moreInfo":"Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:","title":"CKEditor Hakkında","userGuide":"CKEditor Kullanıcı Kılavuzu"},"editor":"Zengin Metin Editörü","editorPanel":"Zengin Metin Editör Paneli","common":{"editorHelp":"Yardım için ALT 0 tuşlarına basın","browseServer":"Sunucuya Gözat","url":"URL","protocol":"Protokol","upload":"Karşıya Yükle","uploadSubmit":"Sunucuya Gönder","image":"Resim","flash":"Flash","form":"Form","checkbox":"Onay Kutusu","radio":"Seçenek Düğmesi","textField":"Metin Kutusu","textarea":"Metin Alanı","hiddenField":"Gizli Alan","button":"Düğme","select":"Seçme Alanı","imageButton":"Resim Düğmesi","notSet":"<tanımlanmamış>","id":"Kimlik","name":"İsim","langDir":"Dil Yönü","langDirLtr":"Soldan Sağa (LTR)","langDirRtl":"Sağdan Sola (RTL)","langCode":"Dil Kodlaması","longDescr":"Uzun Tanımlı URL","cssClass":"Biçem Sayfası Sınıfları","advisoryTitle":"Öneri Başlığı","cssStyle":"Biçem","ok":"Tamam","cancel":"İptal","close":"Kapat","preview":"Önizleme","resize":"Yeniden Boyutlandır","generalTab":"Genel","advancedTab":"Gelişmiş","validateNumberFailed":"Bu değer bir sayı değildir.","confirmNewPage":"Bu içerikle ilgili kaydedilmemiş tüm bilgiler kaybolacaktır. Yeni bir sayfa yüklemek istediğinizden emin misiniz?","confirmCancel":"Bazı seçenekleri değiştirdiniz. İletişim penceresini kapatmak istediğinizden emin misiniz?","options":"Seçenekler","target":"Hedef","targetNew":"Yeni Pencere (_blank)","targetTop":"En Üstteki Pencere (_top)","targetSelf":"Aynı Pencere (_self)","targetParent":"Üst Pencere (_parent)","langDirLTR":"Soldan Sağa (LTR)","langDirRTL":"Sağdan Sola (RTL)","styles":"Biçem","cssClasses":"Biçem Sayfası Sınıfları","width":"Genişlik","height":"Yükseklik","align":"Hizalama","alignLeft":"Sol","alignRight":"Sağ","alignCenter":"Ortala","alignJustify":"İki Kenara Yaslanmış","alignTop":"Üst","alignMiddle":"Orta","alignBottom":"Alt","alignNone":"Hiçbiri","invalidValue":"Geçersiz değer.","invalidHeight":"Yükseklik değeri bir sayı olmalıdır.","invalidWidth":"Genişlik değeri bir sayı olmalıdır.","invalidCssLength":"\"%1\" alanı için verilen değer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.","invalidHtmlLength":"Belirttiğiniz sayı \"%1\" alanı için pozitif bir sayı HTML birim değeri olmalıdır (px veya %).","invalidInlineStyle":"Satıriçi biçem için verilen değer, \"isim : değer\" biçiminde birbirinden noktalı virgüllerle ayrılan bir veya daha fazla değişkenler grubundan oluşmalıdır.","cssLengthTooltip":"Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.","unavailable":"%1<span class=\"cke_accessibility\">, kullanılamaz</span>","keyboard":{"8":"Silme Tuşu","13":"Giriş Tuşu","16":"Üst Karater Tuşu","17":"Kontrol Tuşu","18":"Alt Tuşu","32":"Boşluk Tuşu","35":"En Sona Tuşu","36":"En Başa Tuşu","46":"Silme Tuşu","224":"Komut Tuşu"},"keyboardShortcut":"Klavye Kısayolu"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/tt.js b/vendor/unisharp/laravel-ckeditor/lang/tt.js deleted file mode 100644 index 1c110d6f0..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['tt']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Кабатлау","undo":"Кайтару"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Документ","clipboard":"Алмашу буферы/Кайтару","editing":"Төзәтү","forms":"Формалар","basicstyles":"Төп стильләр","paragraph":"Параграф","links":"Сылталамалар","insert":"Өстәү","styles":"Стильләр","colors":"Төсләр","tools":"Кораллар"},"toolbars":"Editor toolbars"},"table":{"border":"Чик калынлыгы","caption":"Исем","cell":{"menu":"Күзәнәк","insertBefore":"Алдына күзәнәк өстәү","insertAfter":"Артына күзәнәк өстәү","deleteCell":"Күзәнәкләрне бетерү","merge":"Күзәнәкләрне берләштерү","mergeRight":"Уң яктагы белән берләштерү","mergeDown":"Астагы белән берләштерү","splitHorizontal":"Күзәнәкне юлларга бүлү","splitVertical":"Күзәнәкне баганаларга бүлү","title":"Күзәнәк үзлекләре","cellType":"Күзәнәк төре","rowSpan":"Юлларны берләштерү","colSpan":"Баганаларны берләштерү","wordWrap":"Текстны күчерү","hAlign":"Ятма тигезләү","vAlign":"Асма тигезләү","alignBaseline":"Таяныч сызыгы","bgColor":"Фон төсе","borderColor":"Чик төсе","data":"Мәгълүмат","header":"Башлык","yes":"Әйе","no":"Юк","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сайлау"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Багана","insertBefore":"Сулдан баганалар өстәү","insertAfter":"Уңнан баганалар өстәү","deleteColumn":"Баганаларны бетерү"},"columns":"Баганалар","deleteTable":"Таблицаны бетерү","headers":"Башлыклар","headersBoth":"Икесе дә","headersColumn":"Беренче багана","headersNone":"Һичбер","headersRow":"Беренче юл","invalidBorder":"Чик киңлеге сан булырга тиеш.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Күзәнәкләр аралары уңай сан булырга тиеш.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Таблица биеклеге сан булырга тиеш.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Таблица киңлеге сан булырга тиеш","menu":"Таблица үзлекләре","row":{"menu":"Юл","insertBefore":"Өстән юллар өстәү","insertAfter":"Астан юллар өстәү","deleteRow":"Юлларны бетерү"},"rows":"Юллар","summary":"Йомгаклау","title":"Таблица үзлекләре","toolbar":"Таблица","widthPc":"процент","widthPx":"Нокталар","widthUnit":"киңлек берәмлеге"},"stylescombo":{"label":"Стильләр","panelTitle":"Форматлау стильләре","panelTitle1":"Блоклар стильләре","panelTitle2":"Эчке стильләр","panelTitle3":"Объектлар стильләре"},"specialchar":{"options":"Махсус символ үзлекләре","title":"Махсус символ сайлау","toolbar":"Махсус символ өстәү"},"sourcearea":{"toolbar":"Чыганак"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"removeformat":{"toolbar":"Форматлауны бетерү"},"pastetext":{"button":"Форматлаусыз текст өстәү","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word'тан өстәү","toolbar":"Word'тан өстәү"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Зурайту","minimize":"Кечерәйтү"},"magicline":{"title":"Бирегә параграф өстәү"},"list":{"bulletedlist":"Маркерлы тезмә өстәү/бетерү","numberedlist":" Номерланган тезмә өстәү/бетерү"},"link":{"acccessKey":"Access Key","advanced":"Киңәйтелгән көйләүләр","advisoryContentType":"Advisory Content Type","advisoryTitle":"Киңәш исем","anchor":{"toolbar":"Якорь","menu":"Якорьне үзгәртү","title":"Якорь үзлекләре","name":"Якорь исеме","errorName":"Якорьнең исемен языгыз","remove":"Якорьне бетерү"},"anchorId":"Элемент идентификаторы буенча","anchorName":"Якорь исеме буенча","charset":"Linked Resource Charset","cssClasses":"Стильләр класслары","download":"Force Download","displayText":"Display Text","emailAddress":"Электрон почта адресы","emailBody":"Хат эчтәлеге","emailSubject":"Хат темасы","id":"Идентификатор","info":"Сылталама тасвирламасы","langCode":"Тел коды","langDir":"Язылыш юнəлеше","langDirLTR":"Сулдан уңга язылыш (LTR)","langDirRTL":"Уңнан сулга язылыш (RTL)","menu":"Сылталамаyны үзгәртү","name":"Исем","noAnchors":"(Әлеге документта якорьләр табылмады)","noEmail":"Электрон почта адресын языгыз","noUrl":"Сылталаманы языгыз","other":"<бүтән>","popupDependent":"Бәйле (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Тулы экран (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Бәйләнеш","selectAnchor":"Якорьне сайлау","styles":"Стиль","tabIndex":"Tab Index","target":"Максат","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Попап тәрәзәсе исеме","title":"Сылталама","toAnchor":"Якорьне текст белән бәйләү","toEmail":"Электрон почта","toUrl":"Сылталама","toolbar":"Сылталама","type":"Сылталама төре","unlink":"Сылталаманы бетерү","upload":"Йөкләү"},"indent":{"indent":"Отступны арттыру","outdent":"Отступны кечерәйтү"},"image":{"alt":"Альтернатив текст","border":"Чик","btnUpload":"Серверга җибәрү","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"Горизонталь ара","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Рәсем тасвирламасы","linkTab":"Сылталама","lockRatio":"Lock Ratio","menu":"Рәсем үзлекләре","resetSize":"Баштагы зурлык","title":"Рәсем үзлекләре","titleButton":"Рәсемле төймə үзлекләре","upload":"Йөкләү","urlMissing":"Image source URL is missing.","vSpace":"Вертикаль ара","validateBorder":"Чик киңлеге сан булырга тиеш.","validateHSpace":"Горизонталь ара бөтен сан булырга тиеш.","validateVSpace":"Вертикаль ара бөтен сан булырга тиеш."},"horizontalrule":{"toolbar":"Ятма сызык өстәү"},"format":{"label":"Форматлау","panelTitle":"Параграф форматлавы","tag_address":"Адрес","tag_div":"Гади (DIV)","tag_h1":"Башлам 1","tag_h2":"Башлам 2","tag_h3":"Башлам 3","tag_h4":"Башлам 4","tag_h5":"Башлам 5","tag_h6":"Башлам 6","tag_p":"Гади","tag_pre":"Форматлаулы"},"fakeobjects":{"anchor":"Якорь","flash":"Флеш анимациясы","hiddenfield":"Яшерен кыр","iframe":"IFrame","unknown":"Танылмаган объект"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 элемент"},"contextmenu":{"options":"Контекст меню үзлекләре"},"clipboard":{"copy":"Күчермәләү","copyError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","cut":"Кисеп алу","cutError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","paste":"Өстәү","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Сайланган)"},"blockquote":{"toolbar":"Өземтә блогы"},"basicstyles":{"bold":"Калын","italic":"Курсив","strike":"Сызылган","subscript":"Аскы индекс","superscript":"Өске индекс","underline":"Астына сызылган"},"about":{"copy":"Copyright © $1. Бар хокуклар сакланган","dlgTitle":"CKEditor турында","help":"Ярдәм өчен $1 тикшереп карагыз.","moreInfo":"For licensing information please visit our web site:","title":"CKEditor турында","userGuide":"CKEditor кулланмасы"},"editor":"Форматлаулы текст өлкәсе","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Ярдәм өчен ALT 0 басыгыз","browseServer":"Сервер карап чыгу","url":"Сылталама","protocol":"Протокол","upload":"Йөкләү","uploadSubmit":"Серверга җибәрү","image":"Рәсем","flash":"Флеш","form":"Форма","checkbox":"Чекбокс","radio":"Радио төймә","textField":"Текст кыры","textarea":"Текст мәйданы","hiddenField":"Яшерен кыр","button":"Төймə","select":"Сайлау кыры","imageButton":"Рәсемле төймə","notSet":"<билгеләнмәгән>","id":"Id","name":"Исем","langDir":"Язылыш юнəлеше","langDirLtr":"Сулдан уңга язылыш (LTR)","langDirRtl":"Уңнан сулга язылыш (RTL)","langCode":"Тел коды","longDescr":"Җентекле тасвирламага сылталама","cssClass":"Стильләр класслары","advisoryTitle":"Киңәш исем","cssStyle":"Стиль","ok":"Тәмам","cancel":"Баш тарту","close":"Чыгу","preview":"Карап алу","resize":"Зурлыкны үзгәртү","generalTab":"Төп","advancedTab":"Киңәйтелгән көйләүләр","validateNumberFailed":"Әлеге кыйммәт сан түгел.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Үзлекләр","target":"Максат","targetNew":"Яңа тәрәзә (_blank)","targetTop":"Өске тәрәзә (_top)","targetSelf":"Шул үк тәрәзә (_self)","targetParent":"Ана тәрәзә (_parent)","langDirLTR":"Сулдан уңга язылыш (LTR)","langDirRTL":"Уңнан сулга язылыш (RTL)","styles":"Стиль","cssClasses":"Стильләр класслары","width":"Киңлек","height":"Биеклек","align":"Тигезләү","alignLeft":"Сул якка","alignRight":"Уң якка","alignCenter":"Үзәккә","alignJustify":"Киңлеккә карап тигезләү","alignTop":"Өскә","alignMiddle":"Уртага","alignBottom":"Аска","alignNone":"Һичбер","invalidValue":"Дөрес булмаган кыйммәт.","invalidHeight":"Биеклек сан булырга тиеш.","invalidWidth":"Киңлек сан булырга тиеш.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Кайтару","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Бетерү","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/ug.js b/vendor/unisharp/laravel-ckeditor/lang/ug.js deleted file mode 100644 index 5955c7121..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['ug']={"wsc":{"btnIgnore":"پەرۋا قىلما","btnIgnoreAll":"ھەممىگە پەرۋا قىلما","btnReplace":"ئالماشتۇر","btnReplaceAll":"ھەممىنى ئالماشتۇر","btnUndo":"يېنىۋال","changeTo":"ئۆزگەرت","errorLoading":"لازىملىق مۇلازىمېتىرنى يۈكلىگەندە خاتالىق كۆرۈلدى: %s.","ieSpellDownload":"ئىملا تەكشۈرۈش قىستۇرمىسى تېخى ئورنىتىلمىغان، ھازىرلا چۈشۈرەمسىز؟","manyChanges":"ئىملا تەكشۈرۈش تامام: %1 سۆزنى ئۆزگەرتتى","noChanges":"ئىملا تەكشۈرۈش تامام: ھېچقانداق سۆزنى ئۆزگەرتمىدى","noMispell":"ئىملا تەكشۈرۈش تامام: ئىملا خاتالىقى بايقالمىدى","noSuggestions":"-تەكلىپ يوق-","notAvailable":"كەچۈرۈڭ، مۇلازىمېتىرنى ۋاقتىنچە ئىشلەتكىلى بولمايدۇ","notInDic":"لۇغەتتە يوق","oneChange":"ئىملا تەكشۈرۈش تامام: بىر سۆزنى ئۆزگەرتتى","progress":"ئىملا تەكشۈرۈۋاتىدۇ…","title":"ئىملا تەكشۈر","toolbar":"ئىملا تەكشۈر"},"undo":{"redo":"قايتىلا ","undo":"يېنىۋال"},"toolbar":{"toolbarCollapse":"قورال بالداقنى قاتلا","toolbarExpand":"قورال بالداقنى ياي","toolbarGroups":{"document":"پۈتۈك","clipboard":"چاپلاش تاختىسى/يېنىۋال","editing":"تەھرىر","forms":"جەدۋەل","basicstyles":"ئاساسىي ئۇسلۇب","paragraph":"ئابزاس","links":"ئۇلانما","insert":"قىستۇر","styles":"ئۇسلۇب","colors":"رەڭ","tools":"قورال"},"toolbars":"قورال بالداق"},"table":{"border":"گىرۋەك","caption":"ماۋزۇ","cell":{"menu":"كاتەكچە","insertBefore":"سولغا كاتەكچە قىستۇر","insertAfter":"ئوڭغا كاتەكچە قىستۇر","deleteCell":"كەتەكچە ئۆچۈر","merge":"كاتەكچە بىرلەشتۈر","mergeRight":"كاتەكچىنى ئوڭغا بىرلەشتۈر","mergeDown":"كاتەكچىنى ئاستىغا بىرلەشتۈر","splitHorizontal":"كاتەكچىنى توغرىسىغا بىرلەشتۈر","splitVertical":"كاتەكچىنى بويىغا بىرلەشتۈر","title":"كاتەكچە خاسلىقى","cellType":"كاتەكچە تىپى","rowSpan":"بويىغا چات ئارىسى قۇر سانى","colSpan":"توغرىسىغا چات ئارىسى ئىستون سانى","wordWrap":"ئۆزلۈكىدىن قۇر قاتلا","hAlign":"توغرىسىغا توغرىلا","vAlign":"بويىغا توغرىلا","alignBaseline":"ئاساسىي سىزىق","bgColor":"تەگلىك رەڭگى","borderColor":"گىرۋەك رەڭگى","data":"سانلىق مەلۇمات","header":"جەدۋەل باشى","yes":"ھەئە","no":"ياق","invalidWidth":"كاتەكچە كەڭلىكى چوقۇم سان بولىدۇ","invalidHeight":"كاتەكچە ئېگىزلىكى چوقۇم سان بولىدۇ","invalidRowSpan":"قۇر چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ ","invalidColSpan":"ئىستون چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ","chooseColor":"تاللاڭ"},"cellPad":"يان ئارىلىق","cellSpace":"ئارىلىق","column":{"menu":"ئىستون","insertBefore":"سولغا ئىستون قىستۇر","insertAfter":"ئوڭغا ئىستون قىستۇر","deleteColumn":"ئىستون ئۆچۈر"},"columns":"ئىستون سانى","deleteTable":"جەدۋەل ئۆچۈر","headers":"ماۋزۇ كاتەكچە","headersBoth":"بىرىنچى ئىستون ۋە بىرىنچى قۇر","headersColumn":"بىرىنچى ئىستون","headersNone":"يوق","headersRow":"بىرىنچى قۇر","invalidBorder":"گىرۋەك توملۇقى چوقۇم سان بولىدۇ","invalidCellPadding":"كاتەكچىگە چوقۇم سان تولدۇرۇلىدۇ","invalidCellSpacing":"كاتەكچە ئارىلىقى چوقۇم سان بولىدۇ","invalidCols":"بەلگىلەنگەن قۇر سانى چوقۇم نۆلدىن چوڭ بولىدۇ","invalidHeight":"جەدۋەل ئېگىزلىكى چوقۇم سان بولىدۇ","invalidRows":"بەلگىلەنگەن ئىستون سانى چوقۇم نۆلدىن چوڭ بولىدۇ","invalidWidth":"جەدۋەل كەڭلىكى چوقۇم سان بولىدۇ","menu":"جەدۋەل خاسلىقى","row":{"menu":"قۇر","insertBefore":"ئۈستىگە قۇر قىستۇر","insertAfter":"ئاستىغا قۇر قىستۇر","deleteRow":"قۇر ئۆچۈر"},"rows":"قۇر سانى","summary":"ئۈزۈندە","title":"جەدۋەل خاسلىقى","toolbar":"جەدۋەل","widthPc":"پىرسەنت","widthPx":"پىكسېل","widthUnit":"كەڭلىك بىرلىكى"},"stylescombo":{"label":"ئۇسلۇب","panelTitle":"ئۇسلۇب","panelTitle1":"بۆلەك دەرىجىسىدىكى ئېلېمېنت ئۇسلۇبى","panelTitle2":"ئىچكى باغلانما ئېلېمېنت ئۇسلۇبى","panelTitle3":"نەڭ (Object) ئېلېمېنت ئۇسلۇبى"},"specialchar":{"options":"ئالاھىدە ھەرپ تاللانمىسى","title":"ئالاھىدە ھەرپ تاللاڭ","toolbar":"ئالاھىدە ھەرپ قىستۇر"},"sourcearea":{"toolbar":"مەنبە"},"scayt":{"btn_about":"شۇئان ئىملا تەكشۈرۈش ھەققىدە","btn_dictionaries":"لۇغەت","btn_disable":"شۇئان ئىملا تەكشۈرۈشنى چەكلە","btn_enable":"شۇئان ئىملا تەكشۈرۈشنى قوزغات","btn_langs":"تىل","btn_options":"تاللانما","text_title":"شۇئان ئىملا تەكشۈر"},"removeformat":{"toolbar":"پىچىمنى چىقىرىۋەت"},"pastetext":{"button":"پىچىمى يوق تېكىست سۈپىتىدە چاپلا","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن كېيىن ئاندىن چاپلامدۇ؟","error":"ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ","title":"MS Word تىن چاپلا","toolbar":"MS Word تىن چاپلا"},"notification":{"closed":"ئوقتۇرۇش تاقالدى."},"maximize":{"maximize":"چوڭايت","minimize":"كىچىكلەت"},"magicline":{"title":"بۇ جايغا ئابزاس قىستۇر"},"list":{"bulletedlist":"تۈر بەلگە تىزىمى","numberedlist":"تەرتىپ نومۇر تىزىمى"},"link":{"acccessKey":"زىيارەت كۇنۇپكا","advanced":"ئالىي","advisoryContentType":"مەزمۇن تىپى","advisoryTitle":"ماۋزۇ","anchor":{"toolbar":"لەڭگەرلىك نۇقتا ئۇلانمىسى قىستۇر/تەھرىرلە","menu":"لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى","title":"لەڭگەرلىك نۇقتا ئۇلانما خاسلىقى","name":"لەڭگەرلىك نۇقتا ئاتى","errorName":"لەڭگەرلىك نۇقتا ئاتىنى كىرگۈزۈڭ","remove":"لەڭگەرلىك نۇقتا ئۆچۈر"},"anchorId":"لەڭگەرلىك نۇقتا ID سى بويىچە","anchorName":"لەڭگەرلىك نۇقتا ئاتى بويىچە","charset":"ھەرپ كودلىنىشى","cssClasses":"ئۇسلۇب خىلى ئاتى","download":"Force Download","displayText":"Display Text","emailAddress":"ئادرېس","emailBody":"مەزمۇن","emailSubject":"ماۋزۇ","id":"ID","info":"ئۇلانما ئۇچۇرى","langCode":"تىل كودى","langDir":"تىل يۆنىلىشى","langDirLTR":"سولدىن ئوڭغا (LTR)","langDirRTL":"ئوڭدىن سولغا (RTL)","menu":"ئۇلانما تەھرىر","name":"ئات","noAnchors":"(بۇ پۈتۈكتە ئىشلەتكىلى بولىدىغان لەڭگەرلىك نۇقتا يوق)","noEmail":"ئېلخەت ئادرېسىنى كىرگۈزۈڭ","noUrl":"ئۇلانما ئادرېسىنى كىرگۈزۈڭ","other":"‹باشقا›","popupDependent":"تەۋە (NS)","popupFeatures":"قاڭقىش كۆزنەك خاسلىقى","popupFullScreen":"پۈتۈن ئېكران (IE)","popupLeft":"سول","popupLocationBar":"ئادرېس بالداق","popupMenuBar":"تىزىملىك بالداق","popupResizable":"چوڭلۇقى ئۆزگەرتىشچان","popupScrollBars":"دومىلىما سۈرگۈچ","popupStatusBar":"ھالەت بالداق","popupToolbar":"قورال بالداق","popupTop":"ئوڭ","rel":"باغلىنىش","selectAnchor":"بىر لەڭگەرلىك نۇقتا تاللاڭ","styles":"قۇر ئىچىدىكى ئۇسلۇبى","tabIndex":"Tab تەرتىپى","target":"نىشان","targetFrame":"‹كاندۇك›","targetFrameName":"نىشان كاندۇك ئاتى","targetPopup":"‹قاڭقىش كۆزنەك›","targetPopupName":"قاڭقىش كۆزنەك ئاتى","title":"ئۇلانما","toAnchor":"بەت ئىچىدىكى لەڭگەرلىك نۇقتا ئۇلانمىسى","toEmail":"ئېلخەت","toUrl":"ئادرېس","toolbar":"ئۇلانما قىستۇر/تەھرىرلە","type":"ئۇلانما تىپى","unlink":"ئۇلانما بىكار قىل","upload":"يۈكلە"},"indent":{"indent":"تارايت","outdent":"كەڭەيت"},"image":{"alt":"تېكىست ئالماشتۇر","border":"گىرۋەك چوڭلۇقى","btnUpload":"مۇلازىمېتىرغا يۈكلە","button2Img":"نۆۋەتتىكى توپچىنى سۈرەتكە ئۆزگەرتەمسىز؟","hSpace":"توغرىسىغا ئارىلىقى","img2Button":"نۆۋەتتىكى سۈرەتنى توپچىغا ئۆزگەرتەمسىز؟","infoTab":"سۈرەت","linkTab":"ئۇلانما","lockRatio":"نىسبەتنى قۇلۇپلا","menu":"سۈرەت خاسلىقى","resetSize":"ئەسلى چوڭلۇق","title":"سۈرەت خاسلىقى","titleButton":"سۈرەت دائىرە خاسلىقى","upload":"يۈكلە","urlMissing":"سۈرەتنىڭ ئەسلى ھۆججەت ئادرېسى كەم","vSpace":"بويىغا ئارىلىقى","validateBorder":"گىرۋەك چوڭلۇقى چوقۇم سان بولىدۇ","validateHSpace":"توغرىسىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ","validateVSpace":"بويىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ"},"horizontalrule":{"toolbar":"توغرا سىزىق قىستۇر"},"format":{"label":"پىچىم","panelTitle":"پىچىم","tag_address":"ئادرېس","tag_div":"ئابزاس (DIV)","tag_h1":"ماۋزۇ 1","tag_h2":"ماۋزۇ 2","tag_h3":"ماۋزۇ 3","tag_h4":"ماۋزۇ 4","tag_h5":"ماۋزۇ 5","tag_h6":"ماۋزۇ 6","tag_p":"ئادەتتىكى","tag_pre":"تىزىلغان پىچىم"},"fakeobjects":{"anchor":"لەڭگەرلىك نۇقتا","flash":"Flash جانلاندۇرۇم","hiddenfield":"يوشۇرۇن دائىرە","iframe":"IFrame","unknown":"يوچۇن نەڭ"},"elementspath":{"eleLabel":"ئېلېمېنت يولى","eleTitle":"%1 ئېلېمېنت"},"contextmenu":{"options":"قىسقا يول تىزىملىك تاللانمىسى"},"clipboard":{"copy":"كۆچۈر","copyError":"تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ","cut":"كەس","cutError":"تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ","paste":"چاپلا","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (تاللاندى)"},"blockquote":{"toolbar":"بۆلەك نەقىل"},"basicstyles":{"bold":"توم","italic":"يانتۇ","strike":"ئۆچۈرۈش سىزىقى","subscript":"تۆۋەن ئىندېكس","superscript":"يۇقىرى ئىندېكس","underline":"ئاستى سىزىق"},"about":{"copy":"Copyright © $1. نەشر ھوقۇقىغا ئىگە","dlgTitle":"CKEditor ھەققىدە","help":"$1 نى زىيارەت قىلىپ ياردەمگە ئېرىشىڭ","moreInfo":"تور تۇرايىمىزنى زىيارەت قىلىپ كېلىشىمگە ئائىت تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىڭ","title":"CKEditor ھەققىدە","userGuide":"CKEditor ئىشلەتكۈچى قوللانمىسى"},"editor":"تەھرىرلىگۈچ","editorPanel":"مول تېكست تەھرىرلىگۈچ تاختىسى","common":{"editorHelp":"ALT+0 نى بېسىپ ياردەمنى كۆرۈڭ","browseServer":"كۆرسىتىش مۇلازىمېتىر","url":"ئەسلى ھۆججەت","protocol":"كېلىشىم","upload":"يۈكلە","uploadSubmit":"مۇلازىمېتىرغا يۈكلە","image":"سۈرەت","flash":"Flash","form":"جەدۋەل","checkbox":"كۆپ تاللاش رامكىسى","radio":"يەككە تاللاش توپچىسى","textField":"يەككە قۇر تېكىست","textarea":"كۆپ قۇر تېكىست","hiddenField":"يوشۇرۇن دائىرە","button":"توپچا","select":"تىزىم/تىزىملىك","imageButton":"سۈرەت دائىرە","notSet":"‹تەڭشەلمىگەن›","id":"ID","name":"ئات","langDir":"تىل يۆنىلىشى","langDirLtr":"سولدىن ئوڭغا (LTR)","langDirRtl":"ئوڭدىن سولغا (RTL)","langCode":"تىل كودى","longDescr":"تەپسىلىي چۈشەندۈرۈش ئادرېسى","cssClass":"ئۇسلۇب خىلىنىڭ ئاتى","advisoryTitle":"ماۋزۇ","cssStyle":"قۇر ئىچىدىكى ئۇسلۇبى","ok":"جەزملە","cancel":"ۋاز كەچ","close":"تاقا","preview":"ئالدىن كۆزەت","resize":"چوڭلۇقىنى ئۆزگەرت","generalTab":"ئادەتتىكى","advancedTab":"ئالىي","validateNumberFailed":"سان پىچىمىدا كىرگۈزۈش زۆرۈر","confirmNewPage":"نۆۋەتتىكى پۈتۈك مەزمۇنى ساقلانمىدى، يېڭى پۈتۈك قۇرامسىز؟","confirmCancel":"قىسمەن ئۆزگەرتىش ساقلانمىدى، بۇ سۆزلەشكۈنى تاقامسىز؟","options":"تاللانما","target":"نىشان كۆزنەك","targetNew":"يېڭى كۆزنەك (_blank)","targetTop":"پۈتۈن بەت (_top)","targetSelf":"مەزكۇر كۆزنەك (_self)","targetParent":"ئاتا كۆزنەك (_parent)","langDirLTR":"سولدىن ئوڭغا (LTR)","langDirRTL":"ئوڭدىن سولغا (RTL)","styles":"ئۇسلۇبلار","cssClasses":"ئۇسلۇب خىللىرى","width":"كەڭلىك","height":"ئېگىزلىك","align":"توغرىلىنىشى","alignLeft":"سول","alignRight":"ئوڭ","alignCenter":"ئوتتۇرا","alignJustify":"ئىككى تەرەپتىن توغرىلا","alignTop":"ئۈستى","alignMiddle":"ئوتتۇرا","alignBottom":"ئاستى","alignNone":"يوق","invalidValue":"ئىناۋەتسىز قىممەت.","invalidHeight":"ئېگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidWidth":"كەڭلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidCssLength":"بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)","invalidHtmlLength":"بۇ سۆز بۆلىكى چوقۇم بىرىكمە HTML ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px ياكى %)","invalidInlineStyle":"ئىچكى باغلانما ئۇسلۇبى چوقۇم چېكىتلىك پەش بىلەن ئايرىلغان بىر ياكى كۆپ «خاسلىق ئاتى:خاسلىق قىممىتى» پىچىمىدا بولۇشى لازىم","cssLengthTooltip":"بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)","unavailable":"%1<span class=\\\\\"cke_accessibility\\\\\">، ئىشلەتكىلى بولمايدۇ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"ئۆچۈر","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/uk.js b/vendor/unisharp/laravel-ckeditor/lang/uk.js deleted file mode 100644 index 0d543b420..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['uk']={"wsc":{"btnIgnore":"Пропустити","btnIgnoreAll":"Пропустити все","btnReplace":"Замінити","btnReplaceAll":"Замінити все","btnUndo":"Назад","changeTo":"Замінити на","errorLoading":"Помилка завантаження : %s.","ieSpellDownload":"Модуль перевірки орфографії не встановлено. Бажаєте завантажити його зараз?","manyChanges":"Перевірку орфографії завершено: 1% слів(ова) змінено","noChanges":"Перевірку орфографії завершено: жодне слово не змінено","noMispell":"Перевірку орфографії завершено: помилок не знайдено","noSuggestions":"- немає варіантів -","notAvailable":"Вибачте, але сервіс наразі недоступний.","notInDic":"Немає в словнику","oneChange":"Перевірку орфографії завершено: змінено одне слово","progress":"Виконується перевірка орфографії...","title":"Перевірка орфографії","toolbar":"Перевірити орфографію"},"undo":{"redo":"Повторити","undo":"Повернути"},"toolbar":{"toolbarCollapse":"Згорнути панель інструментів","toolbarExpand":"Розгорнути панель інструментів","toolbarGroups":{"document":"Документ","clipboard":"Буфер обміну / Скасувати","editing":"Редагування","forms":"Форми","basicstyles":"Основний Стиль","paragraph":"Параграф","links":"Посилання","insert":"Вставити","styles":"Стилі","colors":"Кольори","tools":"Інструменти"},"toolbars":"Панель інструментів редактора"},"table":{"border":"Розмір рамки","caption":"Заголовок таблиці","cell":{"menu":"Комірки","insertBefore":"Вставити комірку перед","insertAfter":"Вставити комірку після","deleteCell":"Видалити комірки","merge":"Об'єднати комірки","mergeRight":"Об'єднати справа","mergeDown":"Об'єднати донизу","splitHorizontal":"Розділити комірку по горизонталі","splitVertical":"Розділити комірку по вертикалі","title":"Властивості комірки","cellType":"Тип комірки","rowSpan":"Об'єднання рядків","colSpan":"Об'єднання стовпців","wordWrap":"Автоперенесення тексту","hAlign":"Гориз. вирівнювання","vAlign":"Верт. вирівнювання","alignBaseline":"По базовій лінії","bgColor":"Колір фону","borderColor":"Колір рамки","data":"Дані","header":"Заголовок","yes":"Так","no":"Ні","invalidWidth":"Ширина комірки повинна бути цілим числом.","invalidHeight":"Висота комірки повинна бути цілим числом.","invalidRowSpan":"Кількість об'єднуваних рядків повинна бути цілим числом.","invalidColSpan":"Кількість об'єднуваних стовбців повинна бути цілим числом.","chooseColor":"Обрати"},"cellPad":"Внутр. відступ","cellSpace":"Проміжок","column":{"menu":"Стовбці","insertBefore":"Вставити стовбець перед","insertAfter":"Вставити стовбець після","deleteColumn":"Видалити стовбці"},"columns":"Стовбці","deleteTable":"Видалити таблицю","headers":"Заголовки стовбців/рядків","headersBoth":"Стовбці і рядки","headersColumn":"Стовбці","headersNone":"Без заголовків","headersRow":"Рядки","invalidBorder":"Розмір рамки повинен бути цілим числом.","invalidCellPadding":"Внутр. відступ комірки повинен бути цілим числом.","invalidCellSpacing":"Проміжок між комірками повинен бути цілим числом.","invalidCols":"Кількість стовбців повинна бути більшою 0.","invalidHeight":"Висота таблиці повинна бути цілим числом.","invalidRows":"Кількість рядків повинна бути більшою 0.","invalidWidth":"Ширина таблиці повинна бути цілим числом.","menu":"Властивості таблиці","row":{"menu":"Рядки","insertBefore":"Вставити рядок перед","insertAfter":"Вставити рядок після","deleteRow":"Видалити рядки"},"rows":"Рядки","summary":"Детальний опис заголовку таблиці","title":"Властивості таблиці","toolbar":"Таблиця","widthPc":"відсотків","widthPx":"пікселів","widthUnit":"Одиниці вимір."},"stylescombo":{"label":"Стиль","panelTitle":"Стилі форматування","panelTitle1":"Блочні стилі","panelTitle2":"Рядкові стилі","panelTitle3":"Об'єктні стилі"},"specialchar":{"options":"Опції","title":"Оберіть спеціальний символ","toolbar":"Спеціальний символ"},"sourcearea":{"toolbar":"Джерело"},"scayt":{"btn_about":"Про SCAYT","btn_dictionaries":"Словники","btn_disable":"Вимкнути SCAYT","btn_enable":"Ввімкнути SCAYT","btn_langs":"Мови","btn_options":"Опції","text_title":"Перефірка орфографії по мірі набору"},"removeformat":{"toolbar":"Видалити форматування"},"pastetext":{"button":"Вставити тільки текст","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Текст, що Ви намагаєтесь вставити, схожий на скопійований з Word. Бажаєте очистити його форматування перед вставлянням?","error":"Неможливо очистити форматування через внутрішню помилку.","title":"Вставити з Word","toolbar":"Вставити з Word"},"notification":{"closed":"Сповіщення закрито."},"maximize":{"maximize":"Максимізувати","minimize":"Мінімізувати"},"magicline":{"title":"Вставити абзац"},"list":{"bulletedlist":"Маркірований список","numberedlist":"Нумерований список"},"link":{"acccessKey":"Гаряча клавіша","advanced":"Додаткове","advisoryContentType":"Тип вмісту","advisoryTitle":"Заголовок","anchor":{"toolbar":"Вставити/Редагувати якір","menu":"Властивості якоря","title":"Властивості якоря","name":"Ім'я якоря","errorName":"Будь ласка, вкажіть ім'я якоря","remove":"Прибрати якір"},"anchorId":"За ідентифікатором елементу","anchorName":"За ім'ям елементу","charset":"Кодування","cssClasses":"Клас CSS","download":"Force Download","displayText":"Display Text","emailAddress":"Адреса ел. пошти","emailBody":"Тіло повідомлення","emailSubject":"Тема листа","id":"Ідентифікатор","info":"Інформація посилання","langCode":"Код мови","langDir":"Напрямок мови","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","menu":"Вставити посилання","name":"Ім'я","noAnchors":"(В цьому документі немає якорів)","noEmail":"Будь ласка, вкажіть адрес ел. пошти","noUrl":"Будь ласка, вкажіть URL посилання","other":"<інший>","popupDependent":"Залежний (Netscape)","popupFeatures":"Властивості випливаючого вікна","popupFullScreen":"Повний екран (IE)","popupLeft":"Позиція зліва","popupLocationBar":"Панель локації","popupMenuBar":"Панель меню","popupResizable":"Масштабоване","popupScrollBars":"Стрічки прокрутки","popupStatusBar":"Рядок статусу","popupToolbar":"Панель інструментів","popupTop":"Позиція зверху","rel":"Зв'язок","selectAnchor":"Оберіть якір","styles":"Стиль CSS","tabIndex":"Послідовність переходу","target":"Ціль","targetFrame":"<фрейм>","targetFrameName":"Ім'я цільового фрейму","targetPopup":"<випливаюче вікно>","targetPopupName":"Ім'я випливаючого вікна","title":"Посилання","toAnchor":"Якір на цю сторінку","toEmail":"Ел. пошта","toUrl":"URL","toolbar":"Вставити/Редагувати посилання","type":"Тип посилання","unlink":"Видалити посилання","upload":"Надіслати"},"indent":{"indent":"Збільшити відступ","outdent":"Зменшити відступ"},"image":{"alt":"Альтернативний текст","border":"Рамка","btnUpload":"Надіслати на сервер","button2Img":"Бажаєте перетворити обрану кнопку-зображення на просте зображення?","hSpace":"Гориз. відступ","img2Button":"Бажаєте перетворити обране зображення на кнопку-зображення?","infoTab":"Інформація про зображення","linkTab":"Посилання","lockRatio":"Зберегти пропорції","menu":"Властивості зображення","resetSize":"Очистити поля розмірів","title":"Властивості зображення","titleButton":"Властивості кнопки із зображенням","upload":"Надіслати","urlMissing":"Вкажіть URL зображення.","vSpace":"Верт. відступ","validateBorder":"Ширина рамки повинна бути цілим числом.","validateHSpace":"Гориз. відступ повинен бути цілим числом.","validateVSpace":"Верт. відступ повинен бути цілим числом."},"horizontalrule":{"toolbar":"Горизонтальна лінія"},"format":{"label":"Форматування","panelTitle":"Форматування параграфа","tag_address":"Адреса","tag_div":"Нормальний (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Нормальний","tag_pre":"Форматований"},"fakeobjects":{"anchor":"Якір","flash":"Flash-анімація","hiddenfield":"Приховані Поля","iframe":"IFrame","unknown":"Невідомий об'єкт"},"elementspath":{"eleLabel":"Шлях","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опції контекстного меню"},"clipboard":{"copy":"Копіювати","copyError":"Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).","cut":"Вирізати","cutError":"Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)","paste":"Вставити","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Вибрано)"},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Жирний","italic":"Курсив","strike":"Закреслений","subscript":"Нижній індекс","superscript":"Верхній індекс","underline":"Підкреслений"},"about":{"copy":"Copyright © $1. Всі права застережено.","dlgTitle":"Про CKEditor","help":"Перевірте $1 для допомоги.","moreInfo":"Щодо інформації з ліцензування завітайте на наш сайт:","title":"Про CKEditor","userGuide":"Інструкція Користувача для CKEditor"},"editor":"Текстовий редактор","editorPanel":"Панель розширеного текстового редактора","common":{"editorHelp":"натисніть ALT 0 для довідки","browseServer":"Огляд Сервера","url":"URL","protocol":"Протокол","upload":"Надіслати","uploadSubmit":"Надіслати на сервер","image":"Зображення","flash":"Flash","form":"Форма","checkbox":"Галочка","radio":"Кнопка вибору","textField":"Текстове поле","textarea":"Текстова область","hiddenField":"Приховане поле","button":"Кнопка","select":"Список","imageButton":"Кнопка із зображенням","notSet":"<не визначено>","id":"Ідентифікатор","name":"Ім'я","langDir":"Напрямок мови","langDirLtr":"Зліва направо (LTR)","langDirRtl":"Справа наліво (RTL)","langCode":"Код мови","longDescr":"Довгий опис URL","cssClass":"Клас CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль CSS","ok":"ОК","cancel":"Скасувати","close":"Закрити","preview":"Попередній перегляд","resize":"Потягніть для зміни розмірів","generalTab":"Основне","advancedTab":"Додаткове","validateNumberFailed":"Значення не є цілим числом.","confirmNewPage":"Всі незбережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?","confirmCancel":"Деякі опції змінено. Закрити вікно без збереження змін?","options":"Опції","target":"Ціль","targetNew":"Нове вікно (_blank)","targetTop":"Поточне вікно (_top)","targetSelf":"Поточний фрейм/вікно (_self)","targetParent":"Батьківський фрейм/вікно (_parent)","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","styles":"Стиль CSS","cssClasses":"Клас CSS","width":"Ширина","height":"Висота","align":"Вирівнювання","alignLeft":"По лівому краю","alignRight":"По правому краю","alignCenter":"По центру","alignJustify":"По ширині","alignTop":"По верхньому краю","alignMiddle":"По середині","alignBottom":"По нижньому краю","alignNone":"Нема","invalidValue":"Невірне значення.","invalidHeight":"Висота повинна бути цілим числом.","invalidWidth":"Ширина повинна бути цілим числом.","invalidCssLength":"Значення, вказане для \"%1\" в полі повинно бути позитивним числом або без дійсного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).","invalidHtmlLength":"Значення, вказане для \"%1\" в полі повинно бути позитивним числом або без дійсного виміру HTML блоку (px або %).","invalidInlineStyle":"Значення, вказане для вбудованого стилю повинне складатися з одного чи кількох кортежів у форматі \"ім'я : значення\", розділених крапкою з комою.","cssLengthTooltip":"Введіть номер значення в пікселях або число з дійсною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).","unavailable":"%1<span class=\"cke_accessibility\">, не доступне</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Видалити","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/vi.js b/vendor/unisharp/laravel-ckeditor/lang/vi.js deleted file mode 100644 index b553612eb..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['vi']={"wsc":{"btnIgnore":"Bỏ qua","btnIgnoreAll":"Bỏ qua tất cả","btnReplace":"Thay thế","btnReplaceAll":"Thay thế tất cả","btnUndo":"Phục hồi lại","changeTo":"Chuyển thành","errorLoading":"Lỗi khi đang nạp dịch vụ ứng dụng: %s.","ieSpellDownload":"Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?","manyChanges":"Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi","noChanges":"Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi","noMispell":"Hoàn tất kiểm tra chính tả: Không có lỗi chính tả","noSuggestions":"- Không đưa ra gợi ý về từ -","notAvailable":"Xin lỗi, dịch vụ này hiện tại không có.","notInDic":"Không có trong từ điển","oneChange":"Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi","progress":"Đang tiến hành kiểm tra chính tả...","title":"Kiểm tra chính tả","toolbar":"Kiểm tra chính tả"},"undo":{"redo":"Làm lại thao tác","undo":"Khôi phục thao tác"},"toolbar":{"toolbarCollapse":"Thu gọn thanh công cụ","toolbarExpand":"Mở rộng thnah công cụ","toolbarGroups":{"document":"Tài liệu","clipboard":"Clipboard/Undo","editing":"Chỉnh sửa","forms":"Bảng biểu","basicstyles":"Kiểu cơ bản","paragraph":"Đoạn","links":"Liên kết","insert":"Chèn","styles":"Kiểu","colors":"Màu sắc","tools":"Công cụ"},"toolbars":"Thanh công cụ"},"table":{"border":"Kích thước đường viền","caption":"Đầu đề","cell":{"menu":"Ô","insertBefore":"Chèn ô Phía trước","insertAfter":"Chèn ô Phía sau","deleteCell":"Xoá ô","merge":"Kết hợp ô","mergeRight":"Kết hợp sang phải","mergeDown":"Kết hợp xuống dưới","splitHorizontal":"Phân tách ô theo chiều ngang","splitVertical":"Phân tách ô theo chiều dọc","title":"Thuộc tính của ô","cellType":"Kiểu của ô","rowSpan":"Kết hợp hàng","colSpan":"Kết hợp cột","wordWrap":"Chữ liền hàng","hAlign":"Canh lề ngang","vAlign":"Canh lề dọc","alignBaseline":"Đường cơ sở","bgColor":"Màu nền","borderColor":"Màu viền","data":"Dữ liệu","header":"Đầu đề","yes":"Có","no":"Không","invalidWidth":"Chiều rộng của ô phải là một số nguyên.","invalidHeight":"Chiều cao của ô phải là một số nguyên.","invalidRowSpan":"Số hàng kết hợp phải là một số nguyên.","invalidColSpan":"Số cột kết hợp phải là một số nguyên.","chooseColor":"Chọn màu"},"cellPad":"Khoảng đệm giữ ô và nội dung","cellSpace":"Khoảng cách giữa các ô","column":{"menu":"Cột","insertBefore":"Chèn cột phía trước","insertAfter":"Chèn cột phía sau","deleteColumn":"Xoá cột"},"columns":"Số cột","deleteTable":"Xóa bảng","headers":"Đầu đề","headersBoth":"Cả hai","headersColumn":"Cột đầu tiên","headersNone":"Không có","headersRow":"Hàng đầu tiên","invalidBorder":"Kích cỡ của đường biên phải là một số nguyên.","invalidCellPadding":"Khoảng đệm giữa ô và nội dung phải là một số nguyên.","invalidCellSpacing":"Khoảng cách giữa các ô phải là một số nguyên.","invalidCols":"Số lượng cột phải là một số lớn hơn 0.","invalidHeight":"Chiều cao của bảng phải là một số nguyên.","invalidRows":"Số lượng hàng phải là một số lớn hơn 0.","invalidWidth":"Chiều rộng của bảng phải là một số nguyên.","menu":"Thuộc tính bảng","row":{"menu":"Hàng","insertBefore":"Chèn hàng phía trước","insertAfter":"Chèn hàng phía sau","deleteRow":"Xoá hàng"},"rows":"Số hàng","summary":"Tóm lược","title":"Thuộc tính bảng","toolbar":"Bảng","widthPc":"Phần trăm (%)","widthPx":"Điểm ảnh (px)","widthUnit":"Đơn vị"},"stylescombo":{"label":"Kiểu","panelTitle":"Phong cách định dạng","panelTitle1":"Kiểu khối","panelTitle2":"Kiểu trực tiếp","panelTitle3":"Kiểu đối tượng"},"specialchar":{"options":"Tùy chọn các ký tự đặc biệt","title":"Hãy chọn ký tự đặc biệt","toolbar":"Chèn ký tự đặc biệt"},"sourcearea":{"toolbar":"Mã HTML"},"scayt":{"btn_about":"Thông tin về SCAYT","btn_dictionaries":"Từ điển","btn_disable":"Tắt SCAYT","btn_enable":"Bật SCAYT","btn_langs":"Ngôn ngữ","btn_options":"Tùy chọn","text_title":"Kiểm tra chính tả ngay khi gõ chữ (SCAYT)"},"removeformat":{"toolbar":"Xoá định dạng"},"pastetext":{"button":"Dán theo định dạng văn bản thuần","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?","error":"Không thể để làm sạch các dữ liệu dán do một lỗi nội bộ","title":"Dán với định dạng Word","toolbar":"Dán với định dạng Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Phóng to tối đa","minimize":"Thu nhỏ"},"magicline":{"title":"Chèn đoạn vào đây"},"list":{"bulletedlist":"Chèn/Xoá Danh sách không thứ tự","numberedlist":"Chèn/Xoá Danh sách có thứ tự"},"link":{"acccessKey":"Phím hỗ trợ truy cập","advanced":"Mở rộng","advisoryContentType":"Nội dung hướng dẫn","advisoryTitle":"Nhan đề hướng dẫn","anchor":{"toolbar":"Chèn/Sửa điểm neo","menu":"Thuộc tính điểm neo","title":"Thuộc tính điểm neo","name":"Tên của điểm neo","errorName":"Hãy nhập vào tên của điểm neo","remove":"Xóa neo"},"anchorId":"Theo định danh thành phần","anchorName":"Theo tên điểm neo","charset":"Bảng mã của tài nguyên được liên kết đến","cssClasses":"Lớp Stylesheet","download":"Force Download","displayText":"Display Text","emailAddress":"Thư điện tử","emailBody":"Nội dung thông điệp","emailSubject":"Tiêu đề thông điệp","id":"Định danh","info":"Thông tin liên kết","langCode":"Mã ngôn ngữ","langDir":"Hướng ngôn ngữ","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","menu":"Sửa liên kết","name":"Tên","noAnchors":"(Không có điểm neo nào trong tài liệu)","noEmail":"Hãy đưa vào địa chỉ thư điện tử","noUrl":"Hãy đưa vào đường dẫn liên kết (URL)","other":"<khác>","popupDependent":"Phụ thuộc (Netscape)","popupFeatures":"Đặc điểm của cửa sổ Popup","popupFullScreen":"Toàn màn hình (IE)","popupLeft":"Vị trí bên trái","popupLocationBar":"Thanh vị trí","popupMenuBar":"Thanh Menu","popupResizable":"Có thể thay đổi kích cỡ","popupScrollBars":"Thanh cuộn","popupStatusBar":"Thanh trạng thái","popupToolbar":"Thanh công cụ","popupTop":"Vị trí phía trên","rel":"Quan hệ","selectAnchor":"Chọn một điểm neo","styles":"Kiểu (style)","tabIndex":"Chỉ số của Tab","target":"Đích","targetFrame":"<khung>","targetFrameName":"Tên khung đích","targetPopup":"<cửa sổ popup>","targetPopupName":"Tên cửa sổ Popup","title":"Liên kết","toAnchor":"Neo trong trang này","toEmail":"Thư điện tử","toUrl":"URL","toolbar":"Chèn/Sửa liên kết","type":"Kiểu liên kết","unlink":"Xoá liên kết","upload":"Tải lên"},"indent":{"indent":"Dịch vào trong","outdent":"Dịch ra ngoài"},"image":{"alt":"Chú thích ảnh","border":"Đường viền","btnUpload":"Tải lên máy chủ","button2Img":"Bạn có muốn chuyển nút bấm bằng ảnh được chọn thành ảnh?","hSpace":"Khoảng đệm ngang","img2Button":"Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?","infoTab":"Thông tin của ảnh","linkTab":"Tab liên kết","lockRatio":"Giữ nguyên tỷ lệ","menu":"Thuộc tính của ảnh","resetSize":"Kích thước gốc","title":"Thuộc tính của ảnh","titleButton":"Thuộc tính nút của ảnh","upload":"Tải lên","urlMissing":"Thiếu đường dẫn hình ảnh","vSpace":"Khoảng đệm dọc","validateBorder":"Chiều rộng của đường viền phải là một số nguyên dương","validateHSpace":"Khoảng đệm ngang phải là một số nguyên dương","validateVSpace":"Khoảng đệm dọc phải là một số nguyên dương"},"horizontalrule":{"toolbar":"Chèn đường phân cách ngang"},"format":{"label":"Định dạng","panelTitle":"Định dạng","tag_address":"Address","tag_div":"Bình thường (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Bình thường (P)","tag_pre":"Đã thiết lập"},"fakeobjects":{"anchor":"Điểm neo","flash":"Flash","hiddenfield":"Trường ẩn","iframe":"IFrame","unknown":"Đối tượng không rõ ràng"},"elementspath":{"eleLabel":"Nhãn thành phần","eleTitle":"%1 thành phần"},"contextmenu":{"options":"Tùy chọn menu bổ xung"},"clipboard":{"copy":"Sao chép","copyError":"Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).","cut":"Cắt","cutError":"Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).","paste":"Dán","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (Đã chọn)"},"blockquote":{"toolbar":"Khối trích dẫn"},"basicstyles":{"bold":"Đậm","italic":"Nghiêng","strike":"Gạch xuyên ngang","subscript":"Chỉ số dưới","superscript":"Chỉ số trên","underline":"Gạch chân"},"about":{"copy":"Bản quyền © $1. Giữ toàn quyền.","dlgTitle":"Thông tin về CKEditor","help":"Kiểm tra $1 để được giúp đỡ.","moreInfo":"Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:","title":"Thông tin về CKEditor","userGuide":"Hướng dẫn sử dụng CKEditor"},"editor":"Bộ soạn thảo văn bản có định dạng","editorPanel":"Bảng điều khiển Rich Text Editor","common":{"editorHelp":"Nhấn ALT + 0 để được giúp đỡ","browseServer":"Duyệt máy chủ","url":"URL","protocol":"Giao thức","upload":"Tải lên","uploadSubmit":"Tải lên máy chủ","image":"Hình ảnh","flash":"Flash","form":"Biểu mẫu","checkbox":"Nút kiểm","radio":"Nút chọn","textField":"Trường văn bản","textarea":"Vùng văn bản","hiddenField":"Trường ẩn","button":"Nút","select":"Ô chọn","imageButton":"Nút hình ảnh","notSet":"<không thiết lập>","id":"Định danh","name":"Tên","langDir":"Hướng ngôn ngữ","langDirLtr":"Trái sang phải (LTR)","langDirRtl":"Phải sang trái (RTL)","langCode":"Mã ngôn ngữ","longDescr":"Mô tả URL","cssClass":"Lớp Stylesheet","advisoryTitle":"Nhan đề hướng dẫn","cssStyle":"Kiểu ","ok":"Đồng ý","cancel":"Bỏ qua","close":"Đóng","preview":"Xem trước","resize":"Kéo rê để thay đổi kích cỡ","generalTab":"Tab chung","advancedTab":"Tab mở rộng","validateNumberFailed":"Giá trị này không phải là số.","confirmNewPage":"Mọi thay đổi không được lưu lại, nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?","confirmCancel":"Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?","options":"Tùy chọn","target":"Đích đến","targetNew":"Cửa sổ mới (_blank)","targetTop":"Cửa sổ trên cùng (_top)","targetSelf":"Tại trang (_self)","targetParent":"Cửa sổ cha (_parent)","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","styles":"Kiểu","cssClasses":"Lớp CSS","width":"Chiều rộng","height":"Chiều cao","align":"Vị trí","alignLeft":"Trái","alignRight":"Phải","alignCenter":"Giữa","alignJustify":"Sắp chữ","alignTop":"Trên","alignMiddle":"Giữa","alignBottom":"Dưới","alignNone":"Không","invalidValue":"Giá trị không hợp lệ.","invalidHeight":"Chiều cao phải là số nguyên.","invalidWidth":"Chiều rộng phải là số nguyên.","invalidCssLength":"Giá trị quy định cho trường \"%1\" phải là một số dương có hoặc không có một đơn vị đo CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","invalidHtmlLength":"Giá trị quy định cho trường \"%1\" phải là một số dương có hoặc không có một đơn vị đo HTML hợp lệ (px hoặc %).","invalidInlineStyle":"Giá trị quy định cho kiểu nội tuyến phải bao gồm một hoặc nhiều dữ liệu với định dạng \"tên:giá trị\", cách nhau bằng dấu chấm phẩy.","cssLengthTooltip":"Nhập một giá trị theo pixel hoặc một số với một đơn vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","unavailable":"%1<span class=\"cke_accessibility\">, không có</span>","keyboard":{"8":"Phím Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Xóa","224":"Command"},"keyboardShortcut":"Keyboard shortcut"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/lang/zh-cn.js deleted file mode 100644 index a27367b93..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['zh-cn']={"wsc":{"btnIgnore":"忽略","btnIgnoreAll":"全部忽略","btnReplace":"替换","btnReplaceAll":"全部替换","btnUndo":"撤消","changeTo":"更改为","errorLoading":"加载应该服务主机时出错: %s.","ieSpellDownload":"拼写检查插件还没安装, 您是否想现在就下载?","manyChanges":"拼写检查完成: 更改了 %1 个单词","noChanges":"拼写检查完成: 没有更改任何单词","noMispell":"拼写检查完成: 没有发现拼写错误","noSuggestions":"- 没有建议 -","notAvailable":"抱歉, 服务目前暂不可用","notInDic":"没有在字典里","oneChange":"拼写检查完成: 更改了一个单词","progress":"正在进行拼写检查...","title":"拼写检查","toolbar":"拼写检查"},"undo":{"redo":"重做","undo":"撤消"},"toolbar":{"toolbarCollapse":"折叠工具栏","toolbarExpand":"展开工具栏","toolbarGroups":{"document":"文档","clipboard":"剪贴板/撤销","editing":"编辑","forms":"表单","basicstyles":"基本格式","paragraph":"段落","links":"链接","insert":"插入","styles":"样式","colors":"颜色","tools":"工具"},"toolbars":"工具栏"},"table":{"border":"边框","caption":"标题","cell":{"menu":"单元格","insertBefore":"在左侧插入单元格","insertAfter":"在右侧插入单元格","deleteCell":"删除单元格","merge":"合并单元格","mergeRight":"向右合并单元格","mergeDown":"向下合并单元格","splitHorizontal":"水平拆分单元格","splitVertical":"垂直拆分单元格","title":"单元格属性","cellType":"单元格类型","rowSpan":"纵跨行数","colSpan":"横跨列数","wordWrap":"自动换行","hAlign":"水平对齐","vAlign":"垂直对齐","alignBaseline":"基线","bgColor":"背景颜色","borderColor":"边框颜色","data":"数据","header":"表头","yes":"是","no":"否","invalidWidth":"单元格宽度必须为数字格式","invalidHeight":"单元格高度必须为数字格式","invalidRowSpan":"行跨度必须为整数格式","invalidColSpan":"列跨度必须为整数格式","chooseColor":"选择"},"cellPad":"边距","cellSpace":"间距","column":{"menu":"列","insertBefore":"在左侧插入列","insertAfter":"在右侧插入列","deleteColumn":"删除列"},"columns":"列数","deleteTable":"删除表格","headers":"标题单元格","headersBoth":"第一列和第一行","headersColumn":"第一列","headersNone":"无","headersRow":"第一行","invalidBorder":"边框粗细必须为数字格式","invalidCellPadding":"单元格填充必须为数字格式","invalidCellSpacing":"单元格间距必须为数字格式","invalidCols":"指定的行数必须大于零","invalidHeight":"表格高度必须为数字格式","invalidRows":"指定的列数必须大于零","invalidWidth":"表格宽度必须为数字格式","menu":"表格属性","row":{"menu":"行","insertBefore":"在上方插入行","insertAfter":"在下方插入行","deleteRow":"删除行"},"rows":"行数","summary":"摘要","title":"表格属性","toolbar":"表格","widthPc":"百分比","widthPx":"像素","widthUnit":"宽度单位"},"stylescombo":{"label":"样式","panelTitle":"样式","panelTitle1":"块级元素样式","panelTitle2":"内联元素样式","panelTitle3":"对象元素样式"},"specialchar":{"options":"特殊符号选项","title":"选择特殊符号","toolbar":"插入特殊符号"},"sourcearea":{"toolbar":"源码"},"scayt":{"btn_about":"关于即时拼写检查","btn_dictionaries":"字典","btn_disable":"禁用即时拼写检查","btn_enable":"启用即时拼写检查","btn_langs":"语言","btn_options":"选项","text_title":"即时拼写检查"},"removeformat":{"toolbar":"清除格式"},"pastetext":{"button":"粘贴为无格式文本","pasteNotification":"您的浏览器不允许用此方式粘贴成纯文本,要粘贴请按 %1。"},"pastefromword":{"confirmCleanup":"您要粘贴的内容好像是来自 MS Word,是否要清除 MS Word 格式后再粘贴?","error":"由于内部错误无法清理要粘贴的数据","title":"从 MS Word 粘贴","toolbar":"从 MS Word 粘贴"},"notification":{"closed":"通知已关闭"},"maximize":{"maximize":"全屏","minimize":"最小化"},"magicline":{"title":"在这插入段落"},"list":{"bulletedlist":"项目列表","numberedlist":"编号列表"},"link":{"acccessKey":"访问键","advanced":"高级","advisoryContentType":"内容类型","advisoryTitle":"标题","anchor":{"toolbar":"插入/编辑锚点链接","menu":"锚点链接属性","title":"锚点链接属性","name":"锚点名称","errorName":"请输入锚点名称","remove":"删除锚点"},"anchorId":"按锚点 ID","anchorName":"按锚点名称","charset":"字符编码","cssClasses":"样式类名称","download":"强制下载","displayText":"显示文本","emailAddress":"地址","emailBody":"内容","emailSubject":"主题","id":"ID","info":"超链接信息","langCode":"语言代码","langDir":"语言方向","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","menu":"编辑超链接","name":"名称","noAnchors":"(此文档没有可用的锚点)","noEmail":"请输入电子邮件地址","noUrl":"请输入超链接地址","other":"<其他>","popupDependent":"依附 (NS)","popupFeatures":"弹出窗口属性","popupFullScreen":"全屏 (IE)","popupLeft":"左","popupLocationBar":"地址栏","popupMenuBar":"菜单栏","popupResizable":"可缩放","popupScrollBars":"滚动条","popupStatusBar":"状态栏","popupToolbar":"工具栏","popupTop":"右","rel":"关联","selectAnchor":"选择一个锚点","styles":"行内样式","tabIndex":"Tab 键次序","target":"目标","targetFrame":"<框架>","targetFrameName":"目标框架名称","targetPopup":"<弹出窗口>","targetPopupName":"弹出窗口名称","title":"超链接","toAnchor":"页内锚点链接","toEmail":"电子邮件","toUrl":"地址","toolbar":"插入/编辑超链接","type":"超链接类型","unlink":"取消超链接","upload":"上传"},"indent":{"indent":"增加缩进量","outdent":"减少缩进量"},"image":{"alt":"替换文本","border":"边框大小","btnUpload":"上传到服务器","button2Img":"确定要把当前图像按钮转换为普通图像吗?","hSpace":"水平间距","img2Button":"确定要把当前图像改变为图像按钮吗?","infoTab":"图像信息","linkTab":"链接","lockRatio":"锁定比例","menu":"图像属性","resetSize":"原始尺寸","title":"图像属性","titleButton":"图像域属性","upload":"上传","urlMissing":"缺少图像源文件地址","vSpace":"垂直间距","validateBorder":"边框大小必须为整数格式","validateHSpace":"水平间距必须为整数格式","validateVSpace":"垂直间距必须为整数格式"},"horizontalrule":{"toolbar":"插入水平线"},"format":{"label":"格式","panelTitle":"格式","tag_address":"地址","tag_div":"段落(DIV)","tag_h1":"标题 1","tag_h2":"标题 2","tag_h3":"标题 3","tag_h4":"标题 4","tag_h5":"标题 5","tag_h6":"标题 6","tag_p":"普通","tag_pre":"已编排格式"},"fakeobjects":{"anchor":"锚点","flash":"Flash 动画","hiddenfield":"隐藏域","iframe":"IFrame","unknown":"未知对象"},"elementspath":{"eleLabel":"元素路径","eleTitle":"%1 元素"},"contextmenu":{"options":"快捷菜单选项"},"clipboard":{"copy":"复制","copyError":"您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。","cut":"剪切","cutError":"您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。","paste":"粘贴","pasteNotification":"您的浏览器不允许用此方式粘贴,要粘贴请按 %1。"},"button":{"selectedLabel":"已选中 %1 项"},"blockquote":{"toolbar":"块引用"},"basicstyles":{"bold":"加粗","italic":"倾斜","strike":"删除线","subscript":"下标","superscript":"上标","underline":"下划线"},"about":{"copy":"版权所有 © $1。<br />保留所有权利。","dlgTitle":"关于 CKEditor","help":"访问 $1 以获取帮助。","moreInfo":"相关授权许可信息请访问我们的网站:","title":"关于 CKEditor","userGuide":"CKEditor 用户向导"},"editor":"所见即所得编辑器","editorPanel":"所见即所得编辑器面板","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"浏览服务器","url":"URL","protocol":"协议","upload":"上传","uploadSubmit":"上传到服务器","image":"图像","flash":"Flash","form":"表单","checkbox":"复选框","radio":"单选按钮","textField":"单行文本","textarea":"多行文本","hiddenField":"隐藏域","button":"按钮","select":"列表/菜单","imageButton":"图像按钮","notSet":"<没有设置>","id":"ID","name":"名称","langDir":"语言方向","langDirLtr":"从左到右 (LTR)","langDirRtl":"从右到左 (RTL)","langCode":"语言代码","longDescr":"详细说明 URL","cssClass":"样式类名称","advisoryTitle":"标题","cssStyle":"行内样式","ok":"确定","cancel":"取消","close":"关闭","preview":"预览","resize":"拖拽以改变大小","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需要输入数字格式","confirmNewPage":"当前文档内容未保存,是否确认新建文档?","confirmCancel":"部分修改尚未保存,是否确认关闭对话框?","options":"选项","target":"目标窗口","targetNew":"新窗口 (_blank)","targetTop":"整页 (_top)","targetSelf":"本窗口 (_self)","targetParent":"父窗口 (_parent)","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","styles":"样式","cssClasses":"样式类","width":"宽度","height":"高度","align":"对齐方式","alignLeft":"左对齐","alignRight":"右对齐","alignCenter":"居中","alignJustify":"两端对齐","alignTop":"顶端","alignMiddle":"居中","alignBottom":"底部","alignNone":"无","invalidValue":"无效的值。","invalidHeight":"高度必须为数字格式","invalidWidth":"宽度必须为数字格式","invalidCssLength":"此“%1”字段的值必须为正数,可以包含或不包含一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)","invalidHtmlLength":"此“%1”字段的值必须为正数,可以包含或不包含一个有效的 HTML 长度单位(px 或 %)","invalidInlineStyle":"内联样式必须为格式是以分号分隔的一个或多个“属性名 : 属性值”。","cssLengthTooltip":"输入一个表示像素值的数字,或加上一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,不可用</span>","keyboard":{"8":"退格键","13":"回车键","16":"Shift","17":"Ctrl","18":"Alt","32":"空格键","35":"行尾键","36":"行首键","46":"删除键","224":"Command"},"keyboardShortcut":"快捷键"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/lang/zh.js b/vendor/unisharp/laravel-ckeditor/lang/zh.js deleted file mode 100644 index e83caad9d..000000000 --- a/vendor/unisharp/laravel-ckeditor/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.lang['zh']={"wsc":{"btnIgnore":"忽略","btnIgnoreAll":"全部忽略","btnReplace":"取代","btnReplaceAll":"全部取代","btnUndo":"復原","changeTo":"更改為","errorLoading":"無法聯系侍服器: %s.","ieSpellDownload":"尚未安裝拼字檢查元件。您是否想要現在下載?","manyChanges":"拼字檢查完成:更改了 %1 個單字","noChanges":"拼字檢查完成:未更改任何單字","noMispell":"拼字檢查完成:未發現拼字錯誤","noSuggestions":"- 無建議值 -","notAvailable":"抱歉,服務目前暫不可用","notInDic":"不在字典中","oneChange":"拼字檢查完成:更改了 1 個單字","progress":"進行拼字檢查中…","title":"拼字檢查","toolbar":"拼字檢查"},"undo":{"redo":"取消復原","undo":"復原"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯選項","forms":"格式","basicstyles":"基本樣式","paragraph":"段落","links":"連結","insert":"插入","styles":"樣式","colors":"顏色","tools":"工具"},"toolbars":"編輯器工具列"},"table":{"border":"框線大小","caption":"標題","cell":{"menu":"儲存格","insertBefore":"前方插入儲存格","insertAfter":"後方插入儲存格","deleteCell":"刪除儲存格","merge":"合併儲存格","mergeRight":"向右合併","mergeDown":"向下合併","splitHorizontal":"水平分割儲存格","splitVertical":"垂直分割儲存格","title":"儲存格屬性","cellType":"儲存格類型","rowSpan":"列全長","colSpan":"行全長","wordWrap":"自動斷行","hAlign":"水平對齊","vAlign":"垂直對齊","alignBaseline":"基準線","bgColor":"背景顏色","borderColor":"框線顏色","data":"資料","header":"頁首","yes":"是","no":"否","invalidWidth":"儲存格寬度必須為數字。","invalidHeight":"儲存格高度必須為數字。","invalidRowSpan":"列全長必須是整數。","invalidColSpan":"行全長必須是整數。","chooseColor":"選擇"},"cellPad":"儲存格邊距","cellSpace":"儲存格間距","column":{"menu":"行","insertBefore":"左方插入行","insertAfter":"右方插入行","deleteColumn":"刪除行"},"columns":"行","deleteTable":"刪除表格","headers":"頁首","headersBoth":"同時","headersColumn":"第一行","headersNone":"無","headersRow":"第一列","invalidBorder":"框線大小必須是整數。","invalidCellPadding":"儲存格邊距必須為正數。","invalidCellSpacing":"儲存格間距必須為正數。","invalidCols":"行數須為大於 0 的正整數。","invalidHeight":"表格高度必須為數字。","invalidRows":"列數須為大於 0 的正整數。","invalidWidth":"表格寬度必須為數字。","menu":"表格屬性","row":{"menu":"列","insertBefore":"上方插入列","insertAfter":"下方插入列","deleteRow":"刪除列"},"rows":"列","summary":"總結","title":"表格屬性","toolbar":"表格","widthPc":"百分比","widthPx":"像素","widthUnit":"寬度單位"},"stylescombo":{"label":"樣式","panelTitle":"格式化樣式","panelTitle1":"區塊樣式","panelTitle2":"內嵌樣式","panelTitle3":"物件樣式"},"specialchar":{"options":"特殊字元選項","title":"選取特殊字元","toolbar":"插入特殊字元"},"sourcearea":{"toolbar":"原始碼"},"scayt":{"btn_about":"關於即時拼寫檢查","btn_dictionaries":"字典","btn_disable":"關閉即時拼寫檢查","btn_enable":"啟用即時拼寫檢查","btn_langs":"語言","btn_options":"選項","text_title":"即時拼寫檢查"},"removeformat":{"toolbar":"移除格式"},"pastetext":{"button":"貼成純文字","pasteNotification":"Your browser does not allow you to paste plain text this way. Press %1 to paste."},"pastefromword":{"confirmCleanup":"您想貼上的文字似乎是自 Word 複製而來,請問您是否要先清除 Word 的格式後再行貼上?","error":"由於發生內部錯誤,無法清除清除 Word 的格式。","title":"自 Word 貼上","toolbar":"自 Word 貼上"},"notification":{"closed":"通知已關閉。"},"maximize":{"maximize":"最大化","minimize":"最小化"},"magicline":{"title":"在此插入段落"},"list":{"bulletedlist":"插入/移除項目符號清單","numberedlist":"插入/移除編號清單清單"},"link":{"acccessKey":"便捷鍵","advanced":"進階","advisoryContentType":"建議內容類型","advisoryTitle":"標題","anchor":{"toolbar":"錨點","menu":"編輯錨點","title":"錨點內容","name":"錨點名稱","errorName":"請輸入錨點名稱","remove":"移除錨點"},"anchorId":"依元件編號","anchorName":"依錨點名稱","charset":"連結資源的字元集","cssClasses":"樣式表類別","download":"強制下載","displayText":"顯示文字","emailAddress":"電子郵件地址","emailBody":"郵件本文","emailSubject":"郵件主旨","id":"ID","info":"連結資訊","langCode":"語言碼","langDir":"語言方向","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","menu":"編輯連結","name":"名稱","noAnchors":"(本文件中無可用之錨點)","noEmail":"請輸入電子郵件","noUrl":"請輸入連結 URL","other":"<其他>","popupDependent":"獨立 (Netscape)","popupFeatures":"快顯視窗功能","popupFullScreen":"全螢幕 (IE)","popupLeft":"左側位置","popupLocationBar":"位置列","popupMenuBar":"功能表列","popupResizable":"可調大小","popupScrollBars":"捲軸","popupStatusBar":"狀態列","popupToolbar":"工具列","popupTop":"頂端位置","rel":"關係","selectAnchor":"選取一個錨點","styles":"樣式","tabIndex":"定位順序","target":"目標","targetFrame":"<框架>","targetFrameName":"目標框架名稱","targetPopup":"<快顯視窗>","targetPopupName":"快顯視窗名稱","title":"連結","toAnchor":"文字中的錨點連結","toEmail":"電子郵件","toUrl":"網址","toolbar":"連結","type":"連結類型","unlink":"取消連結","upload":"上傳"},"indent":{"indent":"增加縮排","outdent":"減少縮排"},"image":{"alt":"替代文字","border":"框線","btnUpload":"傳送到伺服器","button2Img":"請問您確定要將「圖片按鈕」轉換成「圖片」嗎?","hSpace":"HSpace","img2Button":"請問您確定要將「圖片」轉換成「圖片按鈕」嗎?","infoTab":"影像資訊","linkTab":"連結","lockRatio":"固定比例","menu":"影像屬性","resetSize":"重設大小","title":"影像屬性","titleButton":"影像按鈕屬性","upload":"上傳","urlMissing":"遺失圖片來源之 URL ","vSpace":"VSpace","validateBorder":"框線必須是整數。","validateHSpace":"HSpace 必須是整數。","validateVSpace":"VSpace 必須是整數。"},"horizontalrule":{"toolbar":"插入水平線"},"format":{"label":"格式","panelTitle":"段落格式","tag_address":"地址","tag_div":"標準 (DIV)","tag_h1":"標題 1","tag_h2":"標題 2","tag_h3":"標題 3","tag_h4":"標題 4","tag_h5":"標題 5","tag_h6":"標題 6","tag_p":"標準","tag_pre":"格式設定"},"fakeobjects":{"anchor":"錨點","flash":"Flash 動畫","hiddenfield":"隱藏欄位","iframe":"IFrame","unknown":"無法辨識的物件"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"contextmenu":{"options":"內容功能表選項"},"clipboard":{"copy":"複製","copyError":"瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"button":{"selectedLabel":"%1 (已選取)"},"blockquote":{"toolbar":"引用段落"},"basicstyles":{"bold":"粗體","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"關於 CKEditor","help":"檢閱 $1 尋求幫助。","moreInfo":"關於授權資訊,請參閱我們的網站:","title":"關於 CKEditor","userGuide":"CKEditor 使用者手冊"},"editor":"RTF 編輯器","editorPanel":"RTF 編輯器面板","common":{"editorHelp":"按下 ALT 0 取得說明。","browseServer":"瀏覽伺服器","url":"URL","protocol":"通訊協定","upload":"上傳","uploadSubmit":"傳送至伺服器","image":"圖像","flash":"Flash","form":"表格","checkbox":"核取方塊","radio":"選項按鈕","textField":"文字欄位","textarea":"文字區域","hiddenField":"隱藏欄位","button":"按鈕","select":"選取欄位","imageButton":"影像按鈕","notSet":"<未設定>","id":"ID","name":"名稱","langDir":"語言方向","langDirLtr":"由左至右 (LTR)","langDirRtl":"由右至左 (RTL)","langCode":"語言代碼","longDescr":"完整描述 URL","cssClass":"樣式表類別","advisoryTitle":"標題","cssStyle":"樣式","ok":"確定","cancel":"取消","close":"關閉","preview":"預覽","resize":"調整大小","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"此值不是數值。","confirmNewPage":"現存的修改尚未儲存,要開新檔案?","confirmCancel":"部份選項尚未儲存,要關閉對話框?","options":"選項","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相同視窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","styles":"樣式","cssClasses":"樣式表類別","width":"寬度","height":"高度","align":"對齊方式","alignLeft":"靠左對齊","alignRight":"靠右對齊","alignCenter":"置中對齊","alignJustify":"左右對齊","alignTop":"頂端","alignMiddle":"中間對齊","alignBottom":"底端","alignNone":"無","invalidValue":"無效值。","invalidHeight":"高度必須為數字。","invalidWidth":"寬度必須為數字。","invalidCssLength":"「%1」的值應為正數,並可包含有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。","invalidHtmlLength":"「%1」的值應為正數,並可包含有效的 HTML 單位 (px 或 %)。","invalidInlineStyle":"行內樣式的值應包含一個以上的變數值組,其格式如「名稱:值」,並以分號區隔之。","cssLengthTooltip":"請輸入數值,單位是像素或有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,無法使用</span>","keyboard":{"8":"退格鍵","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"空白鍵","35":"End","36":"Home","46":"刪除","224":"Command 鍵"},"keyboardShortcut":"鍵盤快捷鍵"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/package.json b/vendor/unisharp/laravel-ckeditor/package.json deleted file mode 100644 index 23c9213c6..000000000 --- a/vendor/unisharp/laravel-ckeditor/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "ckeditor", - "version": "4.7.2", - "description": "JavaScript WYSIWYG web text editor.", - "main": "ckeditor.js", - "repository": { - "type": "git", - "url": "git+https://github.com/ckeditor/ckeditor-releases.git" - }, - "keywords": [ - "ckeditor", - "fckeditor", - "editor", - "wysiwyg", - "html", - "richtext", - "text", - "javascript" - ], - "author": "CKSource (http://cksource.com/)", - "license": "(GPL-2.0 OR LGPL-2.1 OR MPL-1.1)", - "bugs": { - "url": "http://dev.ckeditor.com" - }, - "homepage": "http://ckeditor.com" -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js deleted file mode 100644 index 0b2c0f14b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("a11yHelp",function(e){var a=e.lang.a11yhelp,b=e.lang.common.keyboard,q=CKEDITOR.tools.getNextId(),d={8:b[8],9:a.tab,13:b[13],16:b[16],17:b[17],18:b[18],19:a.pause,20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:b[35],36:b[36],37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:b[46],91:a.leftWindowKey,92:a.rightWindowKey,93:a.selectKey,96:a.numpad0,97:a.numpad1,98:a.numpad2,99:a.numpad3,100:a.numpad4,101:a.numpad5,102:a.numpad6,103:a.numpad7,104:a.numpad8, -105:a.numpad9,106:a.multiply,107:a.add,109:a.subtract,110:a.decimalPoint,111:a.divide,112:a.f1,113:a.f2,114:a.f3,115:a.f4,116:a.f5,117:a.f6,118:a.f7,119:a.f8,120:a.f9,121:a.f10,122:a.f11,123:a.f12,144:a.numLock,145:a.scrollLock,186:a.semiColon,187:a.equalSign,188:a.comma,189:a.dash,190:a.period,191:a.forwardSlash,192:a.graveAccent,219:a.openBracket,220:a.backSlash,221:a.closeBracket,222:a.singleQuote};d[CKEDITOR.ALT]=b[18];d[CKEDITOR.SHIFT]=b[16];d[CKEDITOR.CTRL]=CKEDITOR.env.mac?b[224]:b[17];var k= -[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL],r=/\$\{(.*?)\}/g,t=function(a,b){var c=e.getCommandKeystroke(b);if(c){for(var l,f,h=[],g=0;g<k.length;g++)f=k[g],l=c/k[g],1<l&&2>=l&&(c-=f,h.push(d[f]));h.push(d[c]||String.fromCharCode(c));c=h.join("+")}else c=a;return c};return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:e.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()},html:function(){for(var b= -'\x3cdiv class\x3d"cke_accessibility_legend" role\x3d"document" aria-labelledby\x3d"'+q+'_arialbl" tabIndex\x3d"-1"\x3e%1\x3c/div\x3e\x3cspan id\x3d"'+q+'_arialbl" class\x3d"cke_voice_label"\x3e'+a.contents+" \x3c/span\x3e",d=[],c=a.legend,l=c.length,f=0;f<l;f++){for(var h=c[f],g=[],e=h.items,k=e.length,p=0;p<k;p++){var m=e[p],n=CKEDITOR.env.edge&&m.legendEdge?m.legendEdge:m.legend,n=n.replace(r,t);n.match(r)||g.push("\x3cdt\x3e%1\x3c/dt\x3e\x3cdd\x3e%2\x3c/dd\x3e".replace("%1",m.name).replace("%2", -n))}d.push("\x3ch1\x3e%1\x3c/h1\x3e\x3cdl\x3e%2\x3c/dl\x3e".replace("%1",h.name).replace("%2",g.join("")))}return b.replace("%1",d.join(""))}()+'\x3cstyle type\x3d"text/css"\x3e.cke_accessibility_legend{width:600px;height:400px;padding-right:5px;overflow-y:auto;overflow-x:hidden;}.cke_browser_quirks .cke_accessibility_legend,{height:390px}.cke_accessibility_legend *{white-space:normal;}.cke_accessibility_legend h1{font-size: 20px;border-bottom: 1px solid #AAA;margin: 5px 0px 15px;}.cke_accessibility_legend dl{margin-left: 5px;}.cke_accessibility_legend dt{font-size: 13px;font-weight: bold;}.cke_accessibility_legend dd{margin:10px}\x3c/style\x3e'}]}], -buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt deleted file mode 100644 index 58f07c35c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license - -cs.js Found: 30 Missing: 0 -cy.js Found: 30 Missing: 0 -da.js Found: 12 Missing: 18 -de.js Found: 30 Missing: 0 -el.js Found: 25 Missing: 5 -eo.js Found: 30 Missing: 0 -fa.js Found: 30 Missing: 0 -fi.js Found: 30 Missing: 0 -fr.js Found: 30 Missing: 0 -gu.js Found: 12 Missing: 18 -he.js Found: 30 Missing: 0 -it.js Found: 30 Missing: 0 -mk.js Found: 5 Missing: 25 -nb.js Found: 30 Missing: 0 -nl.js Found: 30 Missing: 0 -no.js Found: 30 Missing: 0 -pt-br.js Found: 30 Missing: 0 -ro.js Found: 6 Missing: 24 -tr.js Found: 30 Missing: 0 -ug.js Found: 27 Missing: 3 -vi.js Found: 6 Missing: 24 -zh-cn.js Found: 30 Missing: 0 diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/af.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/af.js deleted file mode 100644 index a56a5cb98..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/af.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","af",{title:"Toeganglikheid instruksies",contents:"Hulp inhoud. Druk ESC om toe te maak.",legend:[{name:"Algemeen",items:[{name:"Bewerker balk",legend:"Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig."},{name:"Bewerker dialoog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Bewerkerinhoudmenu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pouse",capslock:"Hoofletterslot",escape:"Ontsnap",pageUp:"Blaaiop",pageDown:"Blaaiaf",leftArrow:"Linkspyl",upArrow:"Oppyl",rightArrow:"Regterpyl",downArrow:"Afpyl",insert:"Toevoeg",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Nommerblok 0",numpad1:"Nommerblok 1", -numpad2:"Nommerblok 2",numpad3:"Nommerblok 3",numpad4:"Nommerblok 4",numpad5:"Nommerblok 5",numpad6:"Nommerblok 6",numpad7:"Nommerblok 7",numpad8:"Nommerblok 8",numpad9:"Nommerblok 9",multiply:"Maal",add:"Plus",subtract:"Minus",decimalPoint:"Desimaalepunt",divide:"Gedeeldeur",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nommervergrendel",scrollLock:"Rolvergrendel",semiColon:"Kommapunt",equalSign:"Isgelykaan",comma:"Komma",dash:"Koppelteken", -period:"Punt",forwardSlash:"Skuinsstreep",graveAccent:"Aksentteken",openBracket:"Oopblokhakkie",backSlash:"Trustreep",closeBracket:"Toeblokhakkie",singleQuote:"Enkelaanhaalingsteken"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ar.js deleted file mode 100644 index 7326021fa..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"إضافة",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"فاصلة",dash:"Dash",period:"نقطة",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/az.js deleted file mode 100644 index 3298732b9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/az.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","az",{title:"Əlillərə dəstək üzrə təlimat",contents:"Kömək. Pəncərəni bağlamaq üçün ESC basın.",legend:[{name:"Əsas",items:[{name:"Düzəliş edənin alətlər çubuğu",legend:"Panelə keçmək üçün ${toolbarFocus} basın. Növbəti panelə TAB, əvvəlki panelə isə SHIFT+TAB düyməsi vasitəsi ilə keçə bilərsiz. Paneldəki düymələr arasında sol və sağ ox düyməsi ilə keçid edə bilərsiz. Seçilmiş düyməsi SPACE və ya ENTER ilə işlədə bilərsiniz."},{name:"Redaktorun pəncərəsi",legend:"Pəncərə içində növbəti element seçmək üçün TAB düyməni basın, əvvəlki isə - SHIFT+TAB. Təsdiq edilməsi üçün ENTER, imtina edilməsi isə ESC diymələri istifadə edin. Pəncərədə bir neçə vərəq olanda olnarın siyahı ALT+F10 ilə aça bilərsiz. Vərəqlərin siyahı fokus altında olanda ox düymələr vasitəsi ilə onların arasında keçid edə bilərsiz."}, -{name:"Redaktorun seçimlərin menyusu",legend:"Seçimləri redaktə etmək üçün ${contextMenu} ya da APPLICATION KEY basın. Növbəti seçimə keçmək üçün TAB ya AŞAĞI OX düyməsini basın, əvvəlki isə - SHIFT+TAB ya YUXARI OX. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Alt menyunu açmaq üçün SPACE, ENTER ya SAĞA OX basın. ESC ya SOLA OX ilə geriyə qayıda bilərsiz. Bütün menyunu ESC ilə bağlıyın."},{name:"Düzəliş edənin siyahı qutusu",legend:"Siyahı qutusu içində növbəti bənd seçmək üçün TAB ya AŞAĞI OX, əvvəlki isə SHIFT+TAB ya YUXARI OX basın. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Siyahı qutusu ESC ilə bağlıyın."}, -{name:"Redaktor elementin cığır paneli",legend:"Elementin cığır paneli seçmək üçün ${elementsPathFocus} basın. Növbəti element seçmək üçün TAB ya SAĞA OX, əvvəlki isə SHIFT+TAB ya SOLA OX istifadə edin. Elementi arımaq SPACE ya ENTER düymələri mövcuddur."}]},{name:"Əmrlər",items:[{name:"Əmri geri qaytar",legend:"${undo} basın"},{name:"Geri əmri",legend:"${redo} basın"},{name:"Qalın əmri",legend:"${bold} basın"},{name:"Kursiv əmri",legend:"${italic} basın"},{name:"Altdan xətt əmri",legend:"${underline} basın"}, -{name:"Link əmri",legend:"${link} basın"},{name:"Paneli gizlət əmri",legend:"${toolbarCollapse} basın"},{name:"Əvvəlki fokus sahəsi seç əmrı",legend:"Kursordan əvvəl ən yaxın əlçatmaz yerə dəymək üçün ${accessPreviousSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın."},{name:"Növbəti fokus sahəsi seç əmrı",legend:"Kursordan sonra ən yaxın əlçatmaz yerə dəymək üçün ${accessNextSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın."}, -{name:"Hərtərəfli Kömək",legend:"${a11yHelp} basın"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Sola ox işarəsi",upArrow:"Yuxarı ox işarəsi",rightArrow:"Sağa ox işarəsi",downArrow:"Aşağı ox işarəsi",insert:"Insert",leftWindowKey:"Soldaki Windows düyməsi",rightWindowKey:"Sağdaki Windows düyməsi",selectKey:"Düyməni seçin", -numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vurma",add:"Əlavə et",subtract:"Çıxma",decimalPoint:"Onluq kəsri tam ədəddən ayıran nöqtə",divide:"Bölüşdürmə",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Nöqtəli verqül",equalSign:"Barəbərlik işarəsi", -comma:"Vergül",dash:"Defis",period:"Nöqtə",forwardSlash:"Çəp xətt",graveAccent:"Vurğu işarəsi",openBracket:"Açılan mötərizə",backSlash:"Tərs çəpəki xətt",closeBracket:"Bağlanan mötərizə",singleQuote:"Tək dırnaq"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/bg.js deleted file mode 100644 index 6f5d04439..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Общо",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ca.js deleted file mode 100644 index d48552ad6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ca",{title:"Instruccions d'Accessibilitat",contents:"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.",legend:[{name:"General",items:[{name:"Editor de barra d'eines",legend:"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines."}, -{name:"Editor de quadre de diàleg",legend:"Dins d'un quadre de diàleg, premi la tecla TAB per desplaçar-se fins al següent element del quadre de diàleg, premi la tecla Shift + TAB per desplaçar-se a l'anterior element del quadre de diàleg, premi la tecla ENTER per confirmar el quadre de diàleg, premi la tecla ESC per cancel·lar el quadre de diàleg. Quan un quadre de diàleg té diverses pestanyes, la llista de pestanyes pot ser assolit ja sigui amb ALT + F10 o TAB, com a part de l'ordre de tabulació del quadre de diàleg. Amb la llista de pestanyes seleccionada, pot anar a la fitxa següent i anterior amb la tecla FLETXA DRETA i ESQUERRA, respectivament."}, -{name:"Editor de menú contextual",legend:"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC."},{name:"Editor de caixa de llista",legend:"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista."}, -{name:"Editor de barra de ruta de l'element",legend:"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor."}]},{name:"Ordres",items:[{name:"Desfer ordre",legend:"Premi ${undo}"},{name:"Refer ordre",legend:"Premi ${redo}"},{name:"Ordre negreta",legend:"Premi ${bold}"},{name:"Ordre cursiva",legend:"Premi ${italic}"}, -{name:"Ordre subratllat",legend:"Premi ${underline}"},{name:"Ordre enllaç",legend:"Premi ${link}"},{name:"Ordre amagar barra d'eines",legend:"Premi ${toolbarCollapse}"},{name:"Ordre per accedir a l'anterior espai enfocat",legend:"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ordre per accedir al següent espai enfocat", -legend:"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ajuda d'accessibilitat",legend:"Premi ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulació",pause:"Pausa",capslock:"Bloqueig de majúscules",escape:"Escape",pageUp:"Pàgina Amunt", -pageDown:"Pàgina Avall",leftArrow:"Fletxa Esquerra",upArrow:"Fletxa Amunt",rightArrow:"Fletxa Dreta",downArrow:"Fletxa Avall",insert:"Inserir",leftWindowKey:"Tecla Windows Esquerra",rightWindowKey:"Tecla Windows Dreta",selectKey:"Tecla Seleccionar",numpad0:"Teclat Numèric 0",numpad1:"Teclat Numèric 1",numpad2:"Teclat Numèric 2",numpad3:"Teclat Numèric 3",numpad4:"Teclat Numèric 4",numpad5:"Teclat Numèric 5",numpad6:"Teclat Numèric 6",numpad7:"Teclat Numèric 7",numpad8:"Teclat Numèric 8",numpad9:"Teclat Numèric 9", -multiply:"Multiplicació",add:"Suma",subtract:"Resta",decimalPoint:"Punt Decimal",divide:"Divisió",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloqueig Teclat Numèric",scrollLock:"Bloqueig de Desplaçament",semiColon:"Punt i Coma",equalSign:"Símbol Igual",comma:"Coma",dash:"Guió",period:"Punt",forwardSlash:"Barra Diagonal",graveAccent:"Accent Obert",openBracket:"Claudàtor Obert",backSlash:"Barra Invertida",closeBracket:"Claudàtor Tancat", -singleQuote:"Cometa Simple"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cs.js deleted file mode 100644 index 3c4e5956a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","cs",{title:"Instrukce pro přístupnost",contents:"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.",legend:[{name:"Obecné",items:[{name:"Panel nástrojů editoru",legend:"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete."},{name:"Dialogové okno editoru", -legend:"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO."},{name:"Kontextové menu editoru",legend:"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC."}, -{name:"Rámeček seznamu editoru",legend:"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu."},{name:"Lišta cesty prvku v editoru",legend:"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru."}]}, -{name:"Příkazy",items:[{name:" Příkaz Zpět",legend:"Stiskněte ${undo}"},{name:" Příkaz Znovu",legend:"Stiskněte ${redo}"},{name:" Příkaz Tučné",legend:"Stiskněte ${bold}"},{name:" Příkaz Kurzíva",legend:"Stiskněte ${italic}"},{name:" Příkaz Podtržení",legend:"Stiskněte ${underline}"},{name:" Příkaz Odkaz",legend:"Stiskněte ${link}"},{name:" Příkaz Skrýt panel nástrojů",legend:"Stiskněte ${toolbarCollapse}"},{name:"Příkaz pro přístup k předchozímu prostoru zaměření",legend:"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."}, -{name:"Příkaz pro přístup k dalšímu prostoru zaměření",legend:"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:" Nápověda přístupnosti",legend:"Stiskněte ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulátor",pause:"Pauza",capslock:"Caps lock", -escape:"Escape",pageUp:"Stránka nahoru",pageDown:"Stránka dolů",leftArrow:"Šipka vlevo",upArrow:"Šipka nahoru",rightArrow:"Šipka vpravo",downArrow:"Šipka dolů",insert:"Vložit",leftWindowKey:"Levá klávesa Windows",rightWindowKey:"Pravá klávesa Windows",selectKey:"Vyberte klávesu",numpad0:"Numerická klávesa 0",numpad1:"Numerická klávesa 1",numpad2:"Numerická klávesa 2",numpad3:"Numerická klávesa 3",numpad4:"Numerická klávesa 4",numpad5:"Numerická klávesa 5",numpad6:"Numerická klávesa 6",numpad7:"Numerická klávesa 7", -numpad8:"Numerická klávesa 8",numpad9:"Numerická klávesa 9",multiply:"Numerická klávesa násobení",add:"Přidat",subtract:"Numerická klávesa odečítání",decimalPoint:"Desetinná tečka",divide:"Numerická klávesa dělení",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num lock",scrollLock:"Scroll lock",semiColon:"Středník",equalSign:"Rovnítko",comma:"Čárka",dash:"Pomlčka",period:"Tečka",forwardSlash:"Lomítko",graveAccent:"Přízvuk",openBracket:"Otevřená hranatá závorka", -backSlash:"Obrácené lomítko",closeBracket:"Uzavřená hranatá závorka",singleQuote:"Jednoduchá uvozovka"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cy.js deleted file mode 100644 index e89739a5c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","cy",{title:"Canllawiau Hygyrchedd",contents:"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.",legend:[{name:"Cyffredinol",items:[{name:"Bar Offer y Golygydd",legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:"Deialog y Golygydd",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Dewislen Cyd-destun y Golygydd",legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT+TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."}, -{name:"Blwch Rhestr y Golygydd",legend:"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:"Bar Llwybr Elfen y Golygydd",legend:"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]}, -{name:"Gorchmynion",items:[{name:"Gorchymyn dadwneud",legend:"Pwyswch ${undo}"},{name:"Gorchymyn ailadrodd",legend:"Pwyswch ${redo}"},{name:"Gorchymyn Bras",legend:"Pwyswch ${bold}"},{name:"Gorchymyn italig",legend:"Pwyswch ${italig}"},{name:"Gorchymyn tanlinellu",legend:"Pwyso ${underline}"},{name:"Gorchymyn dolen",legend:"Pwyswch ${link}"},{name:"Gorchymyn Cwympo'r Dewislen",legend:"Pwyswch ${toolbarCollapse}"},{name:"Myned i orchymyn bwlch ffocws blaenorol",legend:"Pwyswch ${accessPreviousSpace} i fyned i'r \"blwch ffocws sydd methu ei gyrraedd\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell."}, -{name:"Ewch i'r gorchymyn blwch ffocws nesaf",legend:"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell."},{name:"Cymorth Hygyrchedd",legend:"Pwyswch ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape", -pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", -divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/da.js deleted file mode 100644 index 6b5107ba9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/da.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","da",{title:"Tilgængelighedsinstrukser",contents:"Onlinehjælp. For at lukke dette vindue klik ESC",legend:[{name:"Generelt",items:[{name:"Editor værktøjslinje",legend:"Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen."},{name:"Editor dialogboks", -legend:"Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast."},{name:"Redaktør kontekstmenu",legend:"Tryk ${contextMenu} eller APPLICATION KEY for at åbne kontekstmenuen. Flyt derefter til næste menuvalg med TAB eller PIL NED. Flyt til forrige valg med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge menu-muligheder. Åben under-menu af aktuelle valg med MELLEMRUM eller RETUR eller HØJRE PIL. Gå tilbage til overliggende menu-emne med ESC eller VENSTRE PIL. Luk kontekstmenu med ESC."}, -{name:"Redaktør listeboks",legend:"Flyt til næste emne med TAB eller PIL NED inde i en listeboks. Flyt til forrige listeemne med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge liste-muligheder. Tryk ESC for at lukke liste-boksen."},{name:"Redaktør elementsti-bar",legend:"Tryk ${elementsPathFocus} for at navigere til elementernes sti-bar. Flyt til næste element-knap med TAB eller HØJRE PIL. Flyt til forrige knap med SHIFT+TAB eller VENSTRE PIL. Klik MELLEMRUM eller RETUR for at vælge element i editoren."}]}, -{name:"Kommandoer",items:[{name:"Fortryd kommando",legend:"Klik på ${undo}"},{name:"Gentag kommando",legend:"Klik ${redo}"},{name:"Fed kommando",legend:"Klik ${bold}"},{name:"Kursiv kommando",legend:"Klik ${italic}"},{name:"Understregnings kommando",legend:"Klik ${underline}"},{name:"Link kommando",legend:"Klik ${link}"},{name:"Klap værktøjslinje sammen kommando ",legend:"Klik ${toolbarCollapse}"},{name:"Adgang til forrige fokusområde kommando",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Tilgængelighedshjælp",legend:"Kilk ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", -leftArrow:"Venstre pil",upArrow:"Pil op",rightArrow:"Højre pil",downArrow:"Pil ned",insert:"Insert",leftWindowKey:"Venstre Windows tast",rightWindowKey:"Højre Windows tast",selectKey:"Select-knap",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Gange",add:"Plus",subtract:"Minus",decimalPoint:"Komma",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4", -f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lighedstegn",comma:"Komma",dash:"Bindestreg",period:"Punktum",forwardSlash:"Skråstreg",graveAccent:"Accent grave",openBracket:"Start klamme",backSlash:"Omvendt skråstreg",closeBracket:"Slut klamme",singleQuote:"Enkelt citationstegn"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js deleted file mode 100644 index d4f5e4921..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","de-ch",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, -{name:"Editordialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor-Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."}, -{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]}, -{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, -{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Feststell",escape:"Escape", -pageUp:"Bild auf",pageDown:"Bild ab",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8",numpad9:"Ziffernblock 9", -multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich",closeBracket:"Schliessende eckige Klammer", -singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de.js deleted file mode 100644 index 66891fc6c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/de.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","de",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, -{name:"Editordialog",legend:"Drücke innerhalb eines Dialogs TAB, um zum nächsten Element zu springen. Drücke SHIFT+TAB, um zum vorigen Element zu springen, drücke ENTER um das Formular im Dialog abzusenden, drücke ESC, um den Dialog zu schließen. Hat der Dialog mehrere Tabs, dann kannst du durch ALT+F10 die Tab-Liste aufrufen or mittels TAB als Teil der Dialog-Tab-Reihenfolge. Ist die Tab-Liste fokussiert, dann mithilfe der Pfeiltasten (LINKS und RECHTS) zwischen den Tabs gewechselt werden."},{name:"Editor-Kontextmenü", -legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."},{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."}, -{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]},{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl", -legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, -{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"},{name:"Einfügen als unformatierter Text. ",legend:"Drücke ${pastetext}",legendEdge:"Drücke ${pastetext} und anschließend ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Feststell", -escape:"Escape",pageUp:"Bild auf",pageDown:"Bild ab",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8", -numpad9:"Ziffernblock 9",multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich", -closeBracket:"Schließende eckige Klammer",singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/el.js deleted file mode 100644 index 9eeb0b6c2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/el.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","el",{title:"Οδηγίες Προσβασιμότητας",contents:"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.",legend:[{name:"Γενικά",items:[{name:"Εργαλειοθήκη Επεξεργαστή",legend:"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου."},{name:"Παράθυρο Διαλόγου Επεξεργαστή", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Αναδυόμενο Μενού Επεξεργαστή",legend:"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC."}, -{name:"Κουτί Λίστας Επεξεργαστών",legend:"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας."},{name:"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή",legend:"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή."}]}, -{name:"Εντολές",items:[{name:"Εντολή αναίρεσης",legend:"Πατήστε ${undo}"},{name:"Εντολή επανάληψης",legend:"Πατήστε ${redo}"},{name:"Εντολή έντονης γραφής",legend:"Πατήστε ${bold}"},{name:"Εντολή πλάγιας γραφής",legend:"Πατήστε ${italic}"},{name:"Εντολή υπογράμμισης",legend:"Πατήστε ${underline}"},{name:"Εντολή συνδέσμου",legend:"Πατήστε ${link}"},{name:"Εντολή Σύμπτηξης Εργαλειοθήκης",legend:"Πατήστε ${toolbarCollapse}"},{name:"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ",legend:"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. "}, -{name:"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης",legend:"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. "},{name:"Βοήθεια Προσβασιμότητας",legend:"Πατήστε ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape", -pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Αριστερό Βέλος",upArrow:"Πάνω Βέλος",rightArrow:"Δεξί Βέλος",downArrow:"Κάτω Βέλος",insert:"Insert ",leftWindowKey:"Αριστερό Πλήκτρο Windows",rightWindowKey:"Δεξί Πλήκτρο Windows",selectKey:"Πλήκτρο Select",numpad0:"Αριθμητικό πληκτρολόγιο 0",numpad1:"Αριθμητικό Πληκτρολόγιο 1",numpad2:"Αριθμητικό πληκτρολόγιο 2",numpad3:"Αριθμητικό πληκτρολόγιο 3",numpad4:"Αριθμητικό πληκτρολόγιο 4",numpad5:"Αριθμητικό πληκτρολόγιο 5",numpad6:"Αριθμητικό πληκτρολόγιο 6", -numpad7:"Αριθμητικό πληκτρολόγιο 7",numpad8:"Αριθμητικό πληκτρολόγιο 8",numpad9:"Αριθμητικό πληκτρολόγιο 9",multiply:"Πολλαπλασιασμός",add:"Πρόσθεση",subtract:"Αφαίρεση",decimalPoint:"Υποδιαστολή",divide:"Διαίρεση",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"6",f7:"7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ερωτηματικό",equalSign:"Σύμβολο Ισότητας",comma:"Κόμμα",dash:"Παύλα",period:"Τελεία",forwardSlash:"Κάθετος",graveAccent:"Βαρεία",openBracket:"Άνοιγμα Παρένθεσης", -backSlash:"Ανάστροφη Κάθετος",closeBracket:"Κλείσιμο Παρένθεσης",singleQuote:"Απόστροφος"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js deleted file mode 100644 index 9b0b32de9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en.js deleted file mode 100644 index 7b10bafae..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/en.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eo.js deleted file mode 100644 index 426be4068..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",contents:"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.",legend:[{name:"Ĝeneralaĵoj",items:[{name:"Ilbreto de la redaktilo",legend:"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon."}, -{name:"Redaktildialogo",legend:"En dialogo, premu la TABAN klavon por navigi al la sekva dialogelemento, premu la MAJUSKLIGAN+TABAN klavon por iri al la antaŭa dialogelemento, premu la ENEN klavon por sendi la dialogon, premu la ESKAPAN klavon por nuligi la dialogon. Kiam dialogo havas multajn langetojn, eblas atingi la langetliston aŭ per ALT+F10 aŭ per la TABA klavo kiel parton de la dialoga taba ordo. En langetlisto, moviĝu al la sekva kaj antaŭa langeto per la klavoj SAGO DEKSTREN KAJ MALDEKSTREN respektive."}, -{name:"Kunteksta menuo de la redaktilo",legend:"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo."}, -{name:"Fallisto de la redaktilo",legend:"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon."},{name:"Breto indikanta la vojon al la redaktilelementoj",legend:"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo."}]}, -{name:"Komandoj",items:[{name:"Komando malfari",legend:"Premu ${undo}"},{name:"Komando refari",legend:"Premu ${redo}"},{name:"Komando grasa",legend:"Premu ${bold}"},{name:"Komando kursiva",legend:"Premu ${italic}"},{name:"Komando substreki",legend:"Premu ${underline}"},{name:"Komando ligilo",legend:"Premu ${link}"},{name:"Komando faldi la ilbreton",legend:"Premu ${toolbarCollapse}"},{name:"Komando por atingi la antaŭan fokusan spacon",legend:"Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn."}, -{name:"Komando por atingi la sekvan fokusan spacon",legend:"Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn"},{name:"Helpilo pri atingeblo",legend:"Premu ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabo",pause:"Paŭzo",capslock:"Majuskla baskulo",escape:"Eskapa klavo", -pageUp:"Antaŭa Paĝo",pageDown:"Sekva Paĝo",leftArrow:"Sago Maldekstren",upArrow:"Sago Supren",rightArrow:"Sago Dekstren",downArrow:"Sago Suben",insert:"Enmeti",leftWindowKey:"Maldekstra Windows-klavo",rightWindowKey:"Dekstra Windows-klavo",selectKey:"Selektklavo",numpad0:"Nombra Klavaro 0",numpad1:"Nombra Klavaro 1",numpad2:"Nombra Klavaro 2",numpad3:"Nombra Klavaro 3",numpad4:"Nombra Klavaro 4",numpad5:"Nombra Klavaro 5",numpad6:"Nombra Klavaro 6",numpad7:"Nombra Klavaro 7",numpad8:"Nombra Klavaro 8", -numpad9:"Nombra Klavaro 9",multiply:"Obligi",add:"Almeti",subtract:"Subtrahi",decimalPoint:"Dekuma Punkto",divide:"Dividi",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nombra Baskulo",scrollLock:"Ruluma Baskulo",semiColon:"Punktokomo",equalSign:"Egalsigno",comma:"Komo",dash:"Haltostreko",period:"Punkto",forwardSlash:"Oblikvo",graveAccent:"Malakuto",openBracket:"Malferma Krampo",backSlash:"Retroklino",closeBracket:"Ferma Krampo",singleQuote:"Citilo"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js deleted file mode 100644 index 784f0e073..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","es-mx",{title:"Instrucciones de accesibilidad",contents:"Contenidos de ayuda. Para cerrar este cuadro de diálogo presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:"Presione ${toolbarFocus} para navegar a la barra de herramientas. Desplácese al grupo de barras de herramientas siguiente y anterior con SHIFT + TAB. Desplácese al botón siguiente y anterior de la barra de herramientas con FLECHA DERECHA o FLECHA IZQUIERDA. Presione SPACE o ENTER para activar el botón de la barra de herramientas."}, -{name:"Editor de diálogo",legend:"Dentro de un cuadro de diálogo, pulse TAB para desplazarse hasta el siguiente elemento de diálogo, pulse MAYÚS + TAB para desplazarse al elemento de diálogo anterior, pulse ENTER para enviar el diálogo, pulse ESC para cancelar el diálogo. Cuando un cuadro de diálogo tiene varias pestañas, se puede acceder a la lista de pestañas con ALT + F10 o con TAB como parte del orden de tabulación del diálogo. Con la lista de tabuladores enfocada, mueva a la pestaña siguiente y anterior con las flechas DERECHA y IZQUIERDA, respectivamente."}, -{name:"Menú contextual del editor",legend:"Presione ${contextMenu} o CLAVE DE APLICACIÓN para abrir el menú contextual. A continuación, vaya a la siguiente opción del menú con TAB o DOWN ARROW. Desplácese a la opción anterior con SHIFT + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción del menú. Abra el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Vuelva al elemento de menú principal con ESC o FLECHA IZQUIERDA. Cerrar el menú contextual con ESC."},{name:"Editor de cuadro de lista", -legend:"Dentro de un cuadro de lista, mueva al siguiente elemento de lista con TAB O FLECHA ABAJO. Mueva al elemento anterior de la lista con MAYÚS + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción de lista. Presione ESC para cerrar el cuadro de lista."},{name:"Barra de ruta del elemento del editor",legend:"Presione ${elementsPathFocus} para navegar a la barra de ruta de elementos. Desplácese al siguiente botón de elemento con TAB o FLECHA DERECHA. Desplácese al botón anterior con SHIFT + TAB o FLECHA IZQUIERDA. Presione SPACE o ENTER para seleccionar el elemento en el editor."}]}, -{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando cursiva",legend:"Presiona {italic}"},{name:"Comando subrayado",legend:"Presiona ${underline}"},{name:"Comando enlace",legend:"Presiona ${link}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Acceda al comando de espacio de enfoque anterior",legend:"Presione ${accessPreviousSpace} para acceder al espacio de enfoque inaccesible más cercano antes del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes."}, -{name:"Acceder al siguiente comando de espacio de enfoque",legend:"Pulse ${accessNextSpace} para acceder al espacio de enfoque más cercano inaccesible después del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes."},{name:"Ayuda de accesibilidad",legend:"Presiona ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulador",pause:"Pausa", -capslock:"Mayúsculas",escape:"Escape",pageUp:"Página arriba",pageDown:"Página abajo",leftArrow:"Flecha izquierda",upArrow:"Flecha arriba",rightArrow:"Flecha derecha",downArrow:"Flecha abajo",insert:"Insertar",leftWindowKey:"Tecla izquierda de Windows",rightWindowKey:"Tecla derecha de Windows",selectKey:"Tecla de selección",numpad0:"Teclado numérico 0",numpad1:"Teclado numérico 1",numpad2:"Teclado numérico 2",numpad3:"Teclado numérico 3",numpad4:"Teclado numérico 4",numpad5:"Teclado numérico 5",numpad6:"Teclado numérico 6", -numpad7:"Teclado numérico 7",numpad8:"Teclado numérico 8",numpad9:"Teclado numérico 9",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Números",scrollLock:"Bloqueo de desplazamiento",semiColon:"punto y coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Espacio",forwardSlash:"Diagonal",graveAccent:"Acento grave",openBracket:"Abrir paréntesis", -backSlash:"Diagonal invertida",closeBracket:"Cerrar paréntesis",singleQuote:"Comillas simple"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es.js deleted file mode 100644 index b4708ba7e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/es.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","es",{title:"Instrucciones de accesibilidad",contents:"Ayuda. Para cerrar presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.'},{name:"Editor de diálogo", -legend:"Dentro del diálogo, presione TAB para navegar a los siguientes elementos de diálogo, presione SHIFT+TAB para moverse a los anteriores elementos de diálogo, presione ENTER para enviar el diálogo, presiona ESC para cancelar el diálogo. Cuando el diálogo tiene multiples pestañas, la lista de pestañas puede ser abarcada con ALT + F10 or con TAB como parte del orden de pestañas del diálogo. ECon la pestaña enfocada, puede moverse a la siguiente o anterior pestaña con las FLECHAS IZQUIRDA y DERECHA respectivamente."}, -{name:"Editor del menú contextual",legend:"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC."},{name:"Lista del Editor", -legend:"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista."},{name:"Barra de Ruta del Elemento en el Editor",legend:"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor."}]}, -{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando itálica",legend:"Presiona ${italic}"},{name:"Comando subrayar",legend:"Presiona ${underline}"},{name:"Comando liga",legend:"Presiona ${liga}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Comando accesar el anterior espacio de foco",legend:"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."}, -{name:"Comando accesar el siguiente spacio de foco",legend:"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},{name:"Ayuda de Accesibilidad",legend:"Presiona ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulador",pause:"Pausa",capslock:"Bloq. Mayús.", -escape:"Escape",pageUp:"Regresar Página",pageDown:"Avanzar Página",leftArrow:"Flecha Izquierda",upArrow:"Flecha Arriba",rightArrow:"Flecha Derecha",downArrow:"Flecha Abajo",insert:"Insertar",leftWindowKey:"Tecla Windows Izquierda",rightWindowKey:"Tecla Windows Derecha",selectKey:"Tecla de Selección",numpad0:"Tecla 0 del teclado numérico",numpad1:"Tecla 1 del teclado numérico",numpad2:"Tecla 2 del teclado numérico",numpad3:"Tecla 3 del teclado numérico",numpad4:"Tecla 4 del teclado numérico",numpad5:"Tecla 5 del teclado numérico", -numpad6:"Tecla 6 del teclado numérico",numpad7:"Tecla 7 del teclado numérico",numpad8:"Tecla 8 del teclado numérico",numpad9:"Tecla 9 del teclado numérico",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto Decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Punto y coma",equalSign:"Signo de Igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Diagonal", -graveAccent:"Acento Grave",openBracket:"Abrir llave",backSlash:"Diagonal Invertida",closeBracket:"Cerrar llave",singleQuote:"Comillas simples"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/et.js deleted file mode 100644 index aa2c79107..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/et.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","et",{title:"Accessibility Instructions",contents:"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.",legend:[{name:"Üldine",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eu.js deleted file mode 100644 index e80d8daad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/eu.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","eu",{title:"Erabilerraztasunaren argibideak",contents:"Laguntzaren edukiak. Elkarrizketa-koadro hau ixteko sakatu ESC.",legend:[{name:"Orokorra",items:[{name:"Editorearen tresna-barra",legend:"Sakatu ${toolbarFocus} tresna-barrara nabigatzeko. Tresna-barrako aurreko eta hurrengo taldera joateko erabili TAB eta MAIUS+TAB. Tresna-barrako aurreko eta hurrengo botoira joateko erabili ESKUIN-GEZIA eta EZKER-GEZIA. Sakatu ZURIUNEA edo SARTU tresna-barrako botoia aktibatzeko."}, -{name:"Editorearen elkarrizketa-koadroa",legend:"Elkarrizketa-koadro baten barruan sakatu TAB hurrengo elementura nabigatzeko, sakatu MAIUS+TAB aurreko elementura joateko, sakatu SARTU elkarrizketa-koadroa bidaltzeko eta sakatu ESC uzteko. Elkarrizketa-koadro batek hainbat fitxa dituenean, ALT+F10 erabiliz irits daiteke fitxen zerrendara, edo TAB erabiliz. Fokoa fitxen zerrendak duenean, aurreko eta hurrengo fitxetara joateko erabili EZKER-GEZIA eta ESKUIN-GEZIA."},{name:"Editorearen testuinguru-menua", -legend:"Sakatu ${contextMenu} edo APLIKAZIO TEKLA testuinguru-menua irekitzeko. Menuko hurrengo aukerara joateko erabili TAB edo BEHERA GEZIA. Aurreko aukerara nabigatzeko erabili MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU menuko aukera hautatzeko. Ireki uneko aukeraren azpi-menua ZURIUNEA edo SARTU edo ESKUIN-GEZIA erabiliz. Menuko aukera gurasora itzultzeko erabili ESC edo EZKER-GEZIA. Testuinguru-menua ixteko sakatu ESC."},{name:"Editorearen zerrenda-koadroa",legend:"Zerrenda-koadro baten barruan, zerrendako hurrengo elementura joateko erabili TAB edo BEHERA GEZIA. Zerrendako aurreko elementura nabigatzeko MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU zerrendako aukera hautatzeko. Sakatu ESC zerrenda-koadroa ixteko."}, -{name:"Editorearen elementuaren bide-barra",legend:"Sakatu ${elementsPathFocus} elementuaren bide-barrara nabigatzeko. Hurrengo elementuaren botoira joateko erabili TAB edo ESKUIN-GEZIA. Aurreko botoira joateko aldiz erabili MAIUS+TAB edo EZKER-GEZIA. Elementua editorean hautatzeko sakatu ZURIUNEA edo SARTU."}]},{name:"Komandoak",items:[{name:"Desegin komandoa",legend:"Sakatu ${undo}"},{name:"Berregin komandoa",legend:"Sakatu ${redo}"},{name:"Lodia komandoa",legend:"Sakatu ${bold}"},{name:"Etzana komandoa", -legend:"Sakatu ${italic}"},{name:"Azpimarratu komandoa",legend:"Sakatu ${underline}"},{name:"Esteka komandoa",legend:"Sakatu ${link}"},{name:"Tolestu tresna-barra komandoa",legend:"Sakatu ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"Erabilerraztasunaren laguntza",legend:"Sakatu ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabuladorea",pause:"Pausatu",capslock:"Blok Maius",escape:"Ihes",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Ezker-gezia",upArrow:"Gora gezia",rightArrow:"Eskuin-gezia",downArrow:"Behera gezia",insert:"Txertatu",leftWindowKey:"Ezkerreko Windows tekla",rightWindowKey:"Eskuineko Windows tekla",selectKey:"Hautatu tekla", -numpad0:"Zenbakizko teklatua 0",numpad1:"Zenbakizko teklatua 1",numpad2:"Zenbakizko teklatua 2",numpad3:"Zenbakizko teklatua 3",numpad4:"Zenbakizko teklatua 4",numpad5:"Zenbakizko teklatua 5",numpad6:"Zenbakizko teklatua 6",numpad7:"Zenbakizko teklatua 7",numpad8:"Zenbakizko teklatua 8",numpad9:"Zenbakizko teklatua 9",multiply:"Biderkatu",add:"Gehitu",subtract:"Kendu",decimalPoint:"Koma hamartarra",divide:"Zatitu",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11", -f12:"F12",numLock:"Blok Zenb",scrollLock:"Blok Korr",semiColon:"Puntu eta koma",equalSign:"Berdin zeinua",comma:"Koma",dash:"Marratxoa",period:"Puntua",forwardSlash:"Barra",graveAccent:"Azentu kamutsa",openBracket:"Parentesia ireki",backSlash:"Alderantzizko barra",closeBracket:"Itxi parentesia",singleQuote:"Komatxo bakuna"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fa.js deleted file mode 100644 index 728032685..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fa",{title:"دستورالعمل‌های دسترسی",contents:"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.",legend:[{name:"عمومی",items:[{name:"نوار ابزار ویرایشگر",legend:"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."}, -{name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]}, -{name:"فرمان‌ها",items:[{name:"بازگشت به آخرین فرمان",legend:"فشردن ${undo}"},{name:"انجام مجدد فرمان",legend:"فشردن ${redo}"},{name:"فرمان درشت کردن متن",legend:"فشردن ${bold}"},{name:"فرمان کج کردن متن",legend:"فشردن ${italic}"},{name:"فرمان زیرخطدار کردن متن",legend:"فشردن ${underline}"},{name:"فرمان پیوند دادن",legend:"فشردن ${link}"},{name:"بستن نوار ابزار فرمان",legend:"فشردن ${toolbarCollapse}"},{name:"دسترسی به فرمان محل تمرکز قبلی",legend:"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور."}, -{name:"دسترسی به فضای دستور بعدی",legend:"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید."},{name:"راهنمای دسترسی",legend:"فشردن ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"برگه",pause:"توقف",capslock:"Caps Lock",escape:"گریز",pageUp:"صفحه به بالا",pageDown:"صفحه به پایین", -leftArrow:"پیکان چپ",upArrow:"پیکان بالا",rightArrow:"پیکان راست",downArrow:"پیکان پایین",insert:"ورود",leftWindowKey:"کلید چپ ویندوز",rightWindowKey:"کلید راست ویندوز",selectKey:"انتخاب کلید",numpad0:"کلید شماره 0",numpad1:"کلید شماره 1",numpad2:"کلید شماره 2",numpad3:"کلید شماره 3",numpad4:"کلید شماره 4",numpad5:"کلید شماره 5",numpad6:"کلید شماره 6",numpad7:"کلید شماره 7",numpad8:"کلید شماره 8",numpad9:"کلید شماره 9",multiply:"ضرب",add:"افزودن",subtract:"تفریق",decimalPoint:"نقطه‌ی اعشار",divide:"جدا کردن", -f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"علامت تساوی",comma:"کاما",dash:"خط تیره",period:"دوره",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fi.js deleted file mode 100644 index a307eb8e4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fi",{title:"Saavutettavuus ohjeet",contents:"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.",legend:[{name:"Yleinen",items:[{name:"Editorin työkalupalkki",legend:"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen."}, -{name:"Editorin dialogi",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editorin oheisvalikko",legend:"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella."}, -{name:"Editorin listalaatikko",legend:"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon."},{name:"Editorin elementtipolun palkki",legend:"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa."}]}, -{name:"Komennot",items:[{name:"Peruuta komento",legend:"Paina ${undo}"},{name:"Tee uudelleen komento",legend:"Paina ${redo}"},{name:"Lihavoi komento",legend:"Paina ${bold}"},{name:"Kursivoi komento",legend:"Paina ${italic}"},{name:"Alleviivaa komento",legend:"Paina ${underline}"},{name:"Linkki komento",legend:"Paina ${link}"},{name:"Pienennä työkalupalkki komento",legend:"Paina ${toolbarCollapse}"},{name:"Siirry aiempaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."}, -{name:"Siirry seuraavaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},{name:"Saavutettavuus ohjeet",legend:"Paina ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape", -pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numeronäppäimistö 0",numpad1:"Numeronäppäimistö 1",numpad2:"Numeronäppäimistö 2",numpad3:"Numeronäppäimistö 3",numpad4:"Numeronäppäimistö 4",numpad5:"Numeronäppäimistö 5",numpad6:"Numeronäppäimistö 6",numpad7:"Numeronäppäimistö 7",numpad8:"Numeronäppäimistö 8", -numpad9:"Numeronäppäimistö 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puolipiste",equalSign:"Equal Sign",comma:"Pilkku",dash:"Dash",period:"Piste",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fo.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fo.js deleted file mode 100644 index 564a8b2f5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js deleted file mode 100644 index 4f25ec39e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fr-ca",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur ESC.",legend:[{name:"Général",items:[{name:"Barre d'outil de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."}, -{name:"Dialogue de l'éditeur",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."}, -{name:"Menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]}, -{name:"Commandes",items:[{name:"Annuler",legend:"Appuyer sur ${undo}"},{name:"Refaire",legend:"Appuyer sur ${redo}"},{name:"Gras",legend:"Appuyer sur ${bold}"},{name:"Italique",legend:"Appuyer sur ${italic}"},{name:"Souligné",legend:"Appuyer sur ${underline}"},{name:"Lien",legend:"Appuyer sur ${link}"},{name:"Enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à l'objet de focus précédent",legend:"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."}, -{name:"Accéder au prochain objet de focus",legend:"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},{name:"Aide d'accessibilité",legend:"Appuyer sur ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up", -pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide", -f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr.js deleted file mode 100644 index b56e5b156..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","fr",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur la touche Échap.",legend:[{name:"Général",items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers le groupe suivant ou précédent de la barre d'outils avec les touches Tab et Maj+Tab. Se déplacer vers le bouton suivant ou précédent de la barre d'outils avec les touches Flèche droite et Flèche gauche. Appuyer sur la barre d'espace ou la touche Entrée pour activer le bouton de barre d'outils."}, -{name:"Fenêtre de l'éditeur",legend:"Dans une boîte de dialogue, appuyer sur Tab pour passer à l'élément suivant, appuyer sur Maj+Tab pour passer à l'élément précédent, appuyer sur Entrée pour valider, appuyer sur Échap pour annuler. Quand une boîte de dialogue possède des onglets, la liste peut être atteinte avec Alt+F10 ou avec Tab. Dans la liste des onglets, se déplacer vers le suivant et le précédent avec les touches Flèche droite et Flèche gauche respectivement."},{name:"Menu contextuel de l'éditeur", -legend:"Appuyer sur ${contextMenu} ou sur la touche Menu pour ouvrir le menu contextuel. Se déplacer ensuite vers l'option suivante du menu avec les touches Tab ou Flèche bas. Se déplacer vers l'option précédente avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d'espace ou la touche Entrée pour sélectionner l'option du menu. Appuyer sur la barre d'espace, la touche Entrée ou Flèche droite pour ouvrir le sous-menu de l'option sélectionnée. Revenir à l'élément de menu parent avec la touche Échap ou Flèche gauche. Fermer le menu contextuel avec Échap."}, -{name:"Zone de liste de l'éditeur",legend:"Dans une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches Tab ou Flèche bas. Se déplacer vers l'élément précédent de la liste avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d'espace ou sur Entrée pour sélectionner l'option dans la liste. Appuyer sur Échap pour fermer le menu déroulant."},{name:"Barre du chemin d'éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre du fil d'Ariane des éléments. Se déplacer vers le bouton de l'élément suivant avec les touches Tab ou Flèche droite. Se déplacer vers le bouton précédent avec les touches Maj+Tab ou Flèche gauche. Appuyer sur la barre d'espace ou sur Entrée pour sélectionner l'élément dans l'éditeur."}]}, -{name:"Commandes",items:[{name:" Annuler la commande",legend:"Appuyer sur ${undo}"},{name:"Commande restaurer",legend:"Appuyer sur ${redo}"},{name:" Commande gras",legend:"Appuyer sur ${bold}"},{name:" Commande italique",legend:"Appuyer sur ${italic}"},{name:" Commande souligné",legend:"Appuyer sur ${underline}"},{name:" Commande lien",legend:"Appuyer sur ${link}"},{name:" Commande enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Commande d'accès à l'élément sélectionnable précédent", -legend:"Appuyer sur ${accessNextSpace} pour accéder à l'élément sélectionnable inatteignable le plus proche avant le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables précédents."},{name:"Commande d'accès à l'élément sélectionnable suivant",legend:"Appuyer sur ${accessNextSpace} pour accéder à l'élément sélectionnable inatteignable le plus proche après le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables suivants."}, -{name:" Aide sur l'accessibilité",legend:"Appuyer sur ${a11yHelp}"},{name:"Coller comme texte sans mise en forme",legend:"Appuyer sur ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulation",pause:"Pause",capslock:"Verr. Maj.",escape:"Échap",pageUp:"Page supérieure",pageDown:"Page suivante",leftArrow:"Flèche gauche",upArrow:"Flèche haut",rightArrow:"Flèche droite",downArrow:"Flèche basse",insert:"Inser",leftWindowKey:"Touche Windows gauche",rightWindowKey:"Touche Windows droite", -selectKey:"Touche Sélectionner",numpad0:"0 du pavé numérique",numpad1:"1 du pavé numérique",numpad2:"2 du pavé numérique",numpad3:"3 du pavé numérique",numpad4:"4 du pavé numérique",numpad5:"5 du pavé numérique",numpad6:"6 du pavé numérique",numpad7:"7 du pavé numérique",numpad8:"Pavé numérique 8",numpad9:"9 du pavé numérique",multiply:"Multiplier",add:"Plus",subtract:"Moins",decimalPoint:"Point décimal",divide:"Diviser",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10", -f11:"F11",f12:"F12",numLock:"Verr. Num.",scrollLock:"Arrêt défil.",semiColon:"Point-virgule",equalSign:"Signe égal",comma:"Virgule",dash:"Tiret",period:"Point",forwardSlash:"Barre oblique",graveAccent:"Accent grave",openBracket:"Parenthèse ouvrante",backSlash:"Barre oblique inverse",closeBracket:"Parenthèse fermante",singleQuote:"Apostrophe"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gl.js deleted file mode 100644 index 8d1084be9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","gl",{title:"Instrucións de accesibilidade",contents:"Axuda. Para pechar este diálogo prema ESC.",legend:[{name:"Xeral",items:[{name:"Barra de ferramentas do editor",legend:"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas."}, -{name:"Editor de diálogo",legend:"Dentro do diálogo, prema TAB para navegar cara os seguintes elementos de diálogo, prema MAIÚS+TAB para moverse cara os anteriores elementos de diálogo, prema INTRO para enviar o diálogo, prema ESC para cancelar o diálogo. Cando o diálogo ten múltiples lapelas, a lista de lapelas pode cinguirse con ALT+F10 ou con TAB como parte da orde de lapelas do diálogo. Coa lapela en foco, pode moverse cara a seguinte ou a anterior lapela coas FRECHAS ESQUERDA e DEREICHA respectivamente."}, -{name:"Editor do menú contextual",legend:"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC."},{name:"Lista do editor",legend:"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista."}, -{name:"Barra da ruta ao elemento no editor",legend:"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor."}]},{name:"Ordes",items:[{name:"Orde «desfacer»",legend:"Prema ${undo}"},{name:"Orde «refacer»",legend:"Prema ${redo}"},{name:"Orde «negra»",legend:"Prema ${bold}"},{name:"Orde «cursiva»",legend:"Prema ${italic}"}, -{name:"Orde «subliñar»",legend:"Prema ${underline}"},{name:"Orde «ligazón»",legend:"Prema ${link}"},{name:"Orde «contraer a barra de ferramentas»",legend:"Prema ${toolbarCollapse}"},{name:"Orde «acceder ao anterior espazo en foco»",legend:"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Orde «acceder ao seguinte espazo en foco»", -legend:"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Axuda da accesibilidade",legend:"Prema ${a11yHelp}"},{name:"Pegar como texto simple",legend:"Prema ${pastetext}",legendEdge:"Prema ${pastetext}, seguido de ${paste}"}]}],tab:"Tabulador",pause:"Pausa",capslock:"Bloq. Maiús",escape:"Escape",pageUp:"Páxina arriba",pageDown:"Páxina abaixo", -leftArrow:"Frecha esquerda",upArrow:"Frecha arriba",rightArrow:"Frecha dereita",downArrow:"Frecha abaixo",insert:"Inserir",leftWindowKey:"Tecla Windows esquerda",rightWindowKey:"Tecla Windows dereita",selectKey:"Escolla a tecla",numpad0:"Tec. numérico 0",numpad1:"Tec. numérico 1",numpad2:"Tec. numérico 2",numpad3:"Tec. numérico 3",numpad4:"Tec. numérico 4",numpad5:"Tec. numérico 5",numpad6:"Tec. numérico 6",numpad7:"Tec. numérico 7",numpad8:"Tec. numérico 8",numpad9:"Tec. numérico 9",multiply:"Multiplicar", -add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloq. num.",scrollLock:"Bloq. despraz.",semiColon:"Punto e coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Barra inclinada",graveAccent:"Acento grave",openBracket:"Abrir corchete",backSlash:"Barra invertida",closeBracket:"Pechar corchete",singleQuote:"Comiña simple"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gu.js deleted file mode 100644 index aa203e3df..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"એક્ક્ષેબિલિટી ની વિગતો",contents:"હેલ્પ. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"એડિટર ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"એડિટર ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"કમાંડસ",items:[{name:"અન્ડું કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલ્દનો કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/he.js deleted file mode 100644 index 576584f6e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/he.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","he",{title:"הוראות נגישות",contents:"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).",legend:[{name:"כללי",items:[{name:"סרגל הכלים",legend:"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר."},{name:"דיאלוגים (חלונות תשאול)",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"תפריט ההקשר (Context Menu)",legend:"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC)."},{name:"תפריטים צפים (List boxes)",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"עץ אלמנטים (Elements Path)",legend:"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך."}]},{name:"פקודות",items:[{name:" ביטול צעד אחרון",legend:"לחץ ${undo}"},{name:" חזרה על צעד אחרון",legend:"לחץ ${redo}"},{name:" הדגשה",legend:"לחץ ${bold}"},{name:" הטייה",legend:"לחץ ${italic}"},{name:" הוספת קו תחתון",legend:"לחץ ${underline}"},{name:" הוספת לינק", -legend:"לחץ ${link}"},{name:" כיווץ סרגל הכלים",legend:"לחץ ${toolbarCollapse}"},{name:"גישה למיקום המיקוד הקודם",legend:"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},{name:"גישה למיקום המיקוד הבא",legend:"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."}, -{name:" הוראות נגישות",legend:"לחץ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"חץ שמאלה",upArrow:"חץ למעלה",rightArrow:"חץ ימינה",downArrow:"חץ למטה",insert:"הכנס",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"בחר מקש",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2", -numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"הוסף",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"סלאש",graveAccent:"Grave Accent", -openBracket:"Open Bracket",backSlash:"סלאש הפוך",closeBracket:"Close Bracket",singleQuote:"ציטוט יחיד"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hi.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hi.js deleted file mode 100644 index a5aafeb45..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामान्य",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hr.js deleted file mode 100644 index e71fbdaf6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hr",{title:"Upute dostupnosti",contents:"Sadržaj pomoći. Za zatvaranje pritisnite ESC.",legend:[{name:"Općenito",items:[{name:"Alatna traka",legend:"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake."},{name:"Dijalog", -legend:"Unutar dijaloga, pritisnite TAB kako bi navigirali do sljedećeg elementa dijaloga, pritisnite SHIFT+TAB kako bi se pomaknuli do prethodnog elementa, pritisnite ENTER kako bi poslali dijalog, pritisnite ESC za gašenje dijaloga. Kada dijalog ima više kartica, listi kartica se može pristupiti pomoću ALT+F10 ili sa TAB. Kada je fokusirana lista kartica, pomaknite se naprijed ili nazad pomoću strelica LIJEVO ili DESNO."},{name:"Kontekstni izbornik",legend:"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC."}, -{name:"Lista",legend:"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje."},{name:"Traka putanje elemenata",legend:"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa."}]}, -{name:"Naredbe",items:[{name:"Vrati naredbu",legend:"Pritisni ${undo}"},{name:"Ponovi naredbu",legend:"Pritisni ${redo}"},{name:"Bold naredba",legend:"Pritisni ${bold}"},{name:"Italic naredba",legend:"Pritisni ${italic}"},{name:"Underline naredba",legend:"Pritisni ${underline}"},{name:"Link naredba",legend:"Pritisni ${link}"},{name:"Smanji alatnu traku naredba",legend:"Pritisni ${toolbarCollapse}"},{name:"Naredba za pristupi prethodnom prostoru fokusa",legend:"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."}, -{name:"Naredba za pristup sljedećem prostoru fokusa",legend:"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},{name:"Pomoć za dostupnost",legend:"Pritisni ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", -leftArrow:"Lijev strelica",upArrow:"Strelica gore",rightArrow:"Desna strelica",downArrow:"Strelica dolje",insert:"Insert",leftWindowKey:"Lijeva Windows tipka",rightWindowKey:"Desna Windows tipka",selectKey:"Tipka Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"umpad 8",numpad9:"Numpad 9",multiply:"Množenje",add:"Zbrajanje",subtract:"Oduzimanje",decimalPoint:"Decimalna točka",divide:"Dijeljenje", -f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Točka zarez",equalSign:"Jednako",comma:"Zarez",dash:"Crtica",period:"Točka",forwardSlash:"Kosa crta",graveAccent:"Akcent",openBracket:"Otvorena uglata zagrada",backSlash:"Obrnuta kosa crta",closeBracket:"Zatvorena uglata zagrada",singleQuote:"Jednostruki navodnik"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hu.js deleted file mode 100644 index fbbba9839..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","hu",{title:"Kisegítő utasítások",contents:"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.",legend:[{name:"Általános",items:[{name:"Szerkesztő Eszköztár",legend:"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot."},{name:"Szerkesző párbeszéd ablak", -legend:"Párbeszédablakban nyomjon TAB-ot a következő párbeszédmezőhöz ugráshoz, nyomjon SHIFT + TAB-ot az előző mezőhöz ugráshoz, nyomjon ENTER-t a párbeszédablak elfogadásához, nyomjon ESC-et a párbeszédablak elvetéséhez. Azokhoz a párbeszédablakokhoz, amik több fület tartalmaznak, nyomjon ALT + F10-et vagy TAB-ot hogy a fülekre ugorjon. Ezután a TAB-al vagy a JOBB NYÍLLAL a következő fülre ugorhat."},{name:"Szerkesztő helyi menü",legend:"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges."}, -{name:"Szerkesztő lista",legend:"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát."},{name:"Szerkesztő elem utak sáv",legend:"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben."}]}, -{name:"Parancsok",items:[{name:"Parancs visszavonása",legend:"Nyomj ${undo}"},{name:"Parancs megismétlése",legend:"Nyomjon ${redo}"},{name:"Félkövér parancs",legend:"Nyomjon ${bold}"},{name:"Dőlt parancs",legend:"Nyomjon ${italic}"},{name:"Aláhúzott parancs",legend:"Nyomjon ${underline}"},{name:"Link parancs",legend:"Nyomjon ${link}"},{name:"Szerkesztősáv összecsukása parancs",legend:"Nyomjon ${toolbarCollapse}"},{name:"Hozzáférés az előző fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."}, -{name:"Hozzáférés a következő fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},{name:"Kisegítő súgó",legend:"Nyomjon ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape", -pageUp:"Page Up",pageDown:"Page Down",leftArrow:"balra nyíl",upArrow:"felfelé nyíl",rightArrow:"jobbra nyíl",downArrow:"lefelé nyíl",insert:"Insert",leftWindowKey:"bal Windows-billentyű",rightWindowKey:"jobb Windows-billentyű",selectKey:"Billentyű választása",numpad0:"Számbillentyűk 0",numpad1:"Számbillentyűk 1",numpad2:"Számbillentyűk 2",numpad3:"Számbillentyűk 3",numpad4:"Számbillentyűk 4",numpad5:"Számbillentyűk 5",numpad6:"Számbillentyűk 6",numpad7:"Számbillentyűk 7",numpad8:"Számbillentyűk 8", -numpad9:"Számbillentyűk 9",multiply:"Szorzás",add:"Hozzáadás",subtract:"Kivonás",decimalPoint:"Tizedespont",divide:"Osztás",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Pontosvessző",equalSign:"Egyenlőségjel",comma:"Vessző",dash:"Kötőjel",period:"Pont",forwardSlash:"Perjel",graveAccent:"Visszafelé dőlő ékezet",openBracket:"Nyitó szögletes zárójel",backSlash:"fordított perjel",closeBracket:"Záró szögletes zárójel", -singleQuote:"szimpla idézőjel"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/id.js deleted file mode 100644 index ca157b0ae..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/id.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","id",{title:"Instruksi Accessibility",contents:"Bantuan. Tekan ESC untuk menutup dialog ini.",legend:[{name:"Umum",items:[{name:"Toolbar Editor",legend:"Tekan ${toolbarFocus} untuk berpindah ke toolbar. Untuk berpindah ke group toolbar selanjutnya dan sebelumnya gunakan TAB dan SHIFT+TAB. Untuk berpindah ke tombol toolbar selanjutnya dan sebelumnya gunakan RIGHT ARROW atau LEFT ARROW. Tekan SPASI atau ENTER untuk mengaktifkan tombol toolbar."},{name:"Dialog Editor", -legend:"Pada jendela dialog, tekan TAB untuk berpindah pada elemen dialog selanjutnya, tekan SHIFT+TAB untuk berpindah pada elemen dialog sebelumnya, tekan ENTER untuk submit dialog, tekan ESC untuk membatalkan dialog. Pada dialog dengan multi tab, daftar tab dapat diakses dengan ALT+F10 ataupun dengan tombol TAB sesuai urutan tab pada dialog. Jika daftar tab aktif terpilih, untuk berpindah tab dapat menggunakan RIGHT dan LEFT ARROW."},{name:"Context Menu Editor",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, -{name:"List Box Editor",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, -{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", -leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", -f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/it.js deleted file mode 100644 index 4887edbe0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/it.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",contents:"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.",legend:[{name:"Generale",items:[{name:"Barra degli strumenti Editor",legend:"Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti."}, -{name:"Finestra Editor",legend:"All'interno di una finestra di dialogo è possibile premere TAB per passare all'elemento successivo della finestra, MAIUSC+TAB per passare a quello precedente; premere INVIO per inviare i dati della finestra, oppure ESC per annullare l'operazione. Quando una finestra di dialogo ha più schede, è possibile passare all'elenco delle schede sia con ALT+F10 che con TAB, in base all'ordine delle tabulazioni della finestra. Quando l'elenco delle schede è attivo, premere la FRECCIA DESTRA o la FRECCIA SINISTRA per passare rispettivamente alla scheda successiva o a quella precedente."}, -{name:"Menù contestuale Editor",legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."}, -{name:"Box Lista Editor",legend:"All'interno di un elenco di opzioni, per spostarsi all'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l'elemento della lista. Premere ESC per chiudere l'elenco di opzioni."},{name:"Barra percorso elementi editor",legend:"Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l'elemento nell'editor."}]}, -{name:"Comandi",items:[{name:" Annulla comando",legend:"Premi ${undo}"},{name:" Ripeti comando",legend:"Premi ${redo}"},{name:" Comando Grassetto",legend:"Premi ${bold}"},{name:" Comando Corsivo",legend:"Premi ${italic}"},{name:" Comando Sottolineato",legend:"Premi ${underline}"},{name:" Comando Link",legend:"Premi ${link}"},{name:" Comando riduci barra degli strumenti",legend:"Premi ${toolbarCollapse}"},{name:"Comando di accesso al precedente spazio di focus",legend:"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."}, -{name:"Comando di accesso al prossimo spazio di focus",legend:"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},{name:" Aiuto Accessibilità",legend:"Premi ${a11yHelp}"},{name:"Incolla come testo semplice",legend:"Premi ${pastetext}",legendEdge:"Premi ${pastetext}, seguito da ${paste}"}]}],tab:"Tab",pause:"Pausa",capslock:"Bloc Maiusc", -escape:"Esc",pageUp:"Pagina sù",pageDown:"Pagina giù",leftArrow:"Freccia sinistra",upArrow:"Freccia su",rightArrow:"Freccia destra",downArrow:"Freccia giù",insert:"Ins",leftWindowKey:"Tasto di Windows sinistro",rightWindowKey:"Tasto di Windows destro",selectKey:"Tasto di selezione",numpad0:"0 sul tastierino numerico",numpad1:"1 sul tastierino numerico",numpad2:"2 sul tastierino numerico",numpad3:"3 sul tastierino numerico",numpad4:"4 sul tastierino numerico",numpad5:"5 sul tastierino numerico",numpad6:"6 sul tastierino numerico", -numpad7:"7 sul tastierino numerico",numpad8:"8 sul tastierino numerico",numpad9:"9 sul tastierino numerico",multiply:"Moltiplicazione",add:"Più",subtract:"Sottrazione",decimalPoint:"Punto decimale",divide:"Divisione",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloc Num",scrollLock:"Bloc Scorr",semiColon:"Punto-e-virgola",equalSign:"Segno di uguale",comma:"Virgola",dash:"Trattino",period:"Punto",forwardSlash:"Barra",graveAccent:"Accento grave", -openBracket:"Parentesi quadra aperta",backSlash:"Barra rovesciata",closeBracket:"Parentesi quadra chiusa",singleQuote:"Apostrofo"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ja.js deleted file mode 100644 index 892dca090..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ja",{title:"ユーザー補助の説明",contents:"ヘルプ このダイアログを閉じるには ESCを押してください。",legend:[{name:"全般",items:[{name:"エディターツールバー",legend:"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。"},{name:"編集ダイアログ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"エディターのメニュー",legend:"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。"},{name:"エディターリストボックス",legend:"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。"},{name:"エディター要素パスバー",legend:"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。"}]}, -{name:"コマンド",items:[{name:"元に戻す",legend:"${undo} をクリック"},{name:"やり直し",legend:"${redo} をクリック"},{name:"太字",legend:"${bold} をクリック"},{name:"斜体 ",legend:"${italic} をクリック"},{name:"下線",legend:"${underline} をクリック"},{name:"リンク",legend:"${link} をクリック"},{name:"ツールバーをたたむ",legend:"${toolbarCollapse} をクリック"},{name:"前のカーソル移動のできないポイントへ",legend:"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},{name:"次のカーソルポイントへ移動する",legend:"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"}, -{name:"ユーザー補助ヘルプ",legend:"${a11yHelp} をクリック"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"左矢印",upArrow:"上矢印",rightArrow:"右矢印",downArrow:"下矢印",insert:"Insert",leftWindowKey:"左Windowキー",rightWindowKey:"右のWindowキー",selectKey:"Select",numpad0:"Num 0",numpad1:"Num 1",numpad2:"Num 2",numpad3:"Num 3",numpad4:"Num 4",numpad5:"Num 5", -numpad6:"Num 6",numpad7:"Num 7",numpad8:"Num 8",numpad9:"Num 9",multiply:"掛ける",add:"足す",subtract:"引く",decimalPoint:"小数点",divide:"割る",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"セミコロン",equalSign:"イコール記号",comma:"カンマ",dash:"ダッシュ",period:"ピリオド",forwardSlash:"フォワードスラッシュ",graveAccent:"グレイヴアクセント",openBracket:"開きカッコ",backSlash:"バックスラッシュ",closeBracket:"閉じカッコ",singleQuote:"シングルクォート"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/km.js deleted file mode 100644 index 7d28f05b7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/km.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិត",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រេត",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម", -legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​តំណ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចេញ",pageUp:"ទំព័រ​លើ",pageDown:"ទំព័រ​ក្រោម",leftArrow:"ព្រួញ​ឆ្វេង",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ថែម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent", -openBracket:"តង្កៀប​បើក",backSlash:"Backslash",closeBracket:"តង្កៀប​បិទ",singleQuote:"បន្តក់​មួយ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ko.js deleted file mode 100644 index e76eabfc8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ko",{title:"접근성 설명",contents:"도움말. 이 창을 닫으시려면 ESC 를 누르세요.",legend:[{name:"일반",items:[{name:"편집기 툴바",legend:"툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요."},{name:"편집기 다이얼로그",legend:"TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다."}, -{name:"편집기 환경 메뉴",legend:"${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다."},{name:"편집기 목록 박스",legend:"리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다."}, -{name:"편집기 요소 경로 막대",legend:"${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다."}]},{name:"명령",items:[{name:" 명령 실행 취소",legend:"${undo} 누르시오"},{name:" 명령 다시 실행",legend:"${redo} 누르시오"},{name:" 굵게 명령",legend:"${bold} 누르시오"},{name:" 기울임 꼴 명령",legend:"${italic} 누르시오"},{name:" 밑줄 명령",legend:"${underline} 누르시오"},{name:" 링크 명령",legend:"${link} 누르시오"},{name:" 툴바 줄이기 명령",legend:"${toolbarCollapse} 누르시오"}, -{name:" 이전 포커스 공간 접근 명령",legend:"탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다."},{name:"다음 포커스 공간 접근 명령",legend:"탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. "},{name:" 접근성 도움말",legend:"${a11yHelp} 누르시오"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}], -tab:"탭 키",pause:"일시정지 키",capslock:"캡스 록 키",escape:"이스케이프 키",pageUp:"페이지 업 키",pageDown:"페이지 다운 키",leftArrow:"왼쪽 화살표 키",upArrow:"위쪽 화살표 키",rightArrow:"오른쪽 화살표 키",downArrow:"아래쪽 화살표 키",insert:"인서트 키",leftWindowKey:"왼쪽 윈도우 키",rightWindowKey:"오른쪽 윈도우 키",selectKey:"셀렉트 키",numpad0:"숫자 패드 0 키",numpad1:"숫자 패드 1 키",numpad2:"숫자 패드 2 키",numpad3:"숫자 패드 3 키",numpad4:"숫자 패드 4 키",numpad5:"숫자 패드 5 키",numpad6:"숫자 패드 6 키",numpad7:"숫자 패드 7 키",numpad8:"숫자 패드 8 키",numpad9:"숫자 패드 9 키",multiply:"곱셈(*) 키",add:"덧셈(+) 키",subtract:"뺄셈(-) 키", -decimalPoint:"온점(.) 키",divide:"나눗셈(/) 키",f1:"F1 키",f2:"F2 키",f3:"F3 키",f4:"F4 키",f5:"F5 키",f6:"F6 키",f7:"F7 키",f8:"F8 키",f9:"F9 키",f10:"F10 키",f11:"F11 키",f12:"F12 키",numLock:"Num Lock 키",scrollLock:"Scroll Lock 키",semiColon:"세미콜론(;) 키",equalSign:"등호(\x3d) 키",comma:"쉼표(,) 키",dash:"대시(-) 키",period:"온점(.) 키",forwardSlash:"슬래시(/) 키",graveAccent:"억음 악센트(`) 키",openBracket:"브라켓 열기([) 키",backSlash:"역슬래시(\\\\) 키",closeBracket:"브라켓 닫기(]) 키",singleQuote:"외 따옴표(') 키"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ku.js deleted file mode 100644 index d0689e1a3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ku",{title:"ڕێنمای لەبەردەستدابوون",contents:"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.",legend:[{name:"گشتی",items:[{name:"تووڵامرازی دەستكاریكەر",legend:"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز."},{name:"دیالۆگی دەستكاریكەر", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"پێڕستی سەرنووسەر",legend:"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە."}, -{name:"لیستی سنووقی سەرنووسەر",legend:"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست."},{name:"تووڵامرازی توخم",legend:"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه."}]}, -{name:"فەرمانەکان",items:[{name:"پووچکردنەوەی فەرمان",legend:"کلیك ${undo}"},{name:"هەڵگەڕانەوەی فەرمان",legend:"کلیك ${redo}"},{name:"فەرمانی دەقی قەڵەو",legend:"کلیك ${bold}"},{name:"فەرمانی دەقی لار",legend:"کلیك ${italic}"},{name:"فەرمانی ژێرهێڵ",legend:"کلیك ${underline}"},{name:"فەرمانی به‌ستەر",legend:"کلیك ${link}"},{name:"شاردەنەوەی تووڵامراز",legend:"کلیك ${toolbarCollapse}"},{name:"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی",legend:"کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی",legend:"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"دەستپێگەیشتنی یارمەتی",legend:"کلیك ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", -leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"پەنجەرەی چەپ",rightWindowKey:"پەنجەرەی ڕاست",selectKey:"Select",numpad0:"Numpad 0",numpad1:"1",numpad2:"2",numpad3:"3",numpad4:"4",numpad5:"5",numpad6:"6",numpad7:"7",numpad8:"8",numpad9:"9",multiply:"*",add:"+",subtract:"-",decimalPoint:".",divide:"/",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock", -semiColon:";",equalSign:"\x3d",comma:",",dash:"-",period:".",forwardSlash:"/",graveAccent:"`",openBracket:"[",backSlash:"\\\\",closeBracket:"}",singleQuote:"'"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lt.js deleted file mode 100644 index 89c90bccd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybės",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lv.js deleted file mode 100644 index 24e60079a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",contents:"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.",legend:[{name:"Galvenais",items:[{name:"Redaktora rīkjosla",legend:"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu."}, -{name:"Redaktora dialoga logs",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Redaktora satura izvēle",legend:"Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC."}, -{name:"Redaktora saraksta lauks",legend:"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku."},{name:"Redaktora elementa ceļa josla",legend:"Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā."}]}, -{name:"Komandas",items:[{name:"Komanda atcelt darbību",legend:"Nospiediet ${undo}"},{name:"Komanda atkārtot darbību",legend:"Nospiediet ${redo}"},{name:"Treknraksta komanda",legend:"Nospiediet ${bold}"},{name:"Kursīva komanda",legend:"Nospiediet ${italic}"},{name:"Apakšsvītras komanda ",legend:"Nospiediet ${underline}"},{name:"Hipersaites komanda",legend:"Nospiediet ${link}"},{name:"Rīkjoslas aizvēršanas komanda",legend:"Nospiediet ${toolbarCollapse}"},{name:"Piekļūt iepriekšējai fokusa vietas komandai", -legend:"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},{name:"Piekļūt nākošā fokusa apgabala komandai",legend:"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."}, -{name:"Pieejamības palīdzība",legend:"Nospiediet ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mk.js deleted file mode 100644 index ec2bdc626..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"Инструкции за пристапност",contents:"Содржина на делот за помош. За да го затворите овој дијалог притиснете ESC.",legend:[{name:"Општо",items:[{name:"Мени за уредувачот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Контекст-мени на уредувачот",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, -{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, -{name:"Наредби",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Пауза",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Up", -leftArrow:"Стрелка лево",upArrow:"Стрелка горе",rightArrow:"Стрелка десно",downArrow:"Стрелка доле",insert:"Insert",leftWindowKey:"Лево Windows копче",rightWindowKey:"Десно Windows копче",selectKey:"Select копче",numpad0:"Нум. таст. 0",numpad1:"Нум. таст. 1",numpad2:"Нум. таст. 2",numpad3:"Нум. таст. 3",numpad4:"Нум. таст. 4",numpad5:"Нум. таст. 5",numpad6:"Нум. таст. 6",numpad7:"Нум. таст. 7",numpad8:"Нум. таст. 8",numpad9:"Нум. таст. 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", -divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mn.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mn.js deleted file mode 100644 index 09c4bd2b4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nb.js deleted file mode 100644 index 95293a343..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","nb",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", -legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, -{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, -{name:"Hurtigtaster",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Lenke",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, -{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulator",pause:"Pause",capslock:"Caps Lock", -escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Venstre piltast",upArrow:"Opp-piltast",rightArrow:"Høyre piltast",downArrow:"Ned-piltast",insert:"Insert",leftWindowKey:"Venstre Windows-tast",rightWindowKey:"Høyre Windows-tast",selectKey:"Velg nøkkel",numpad0:"Numerisk tastatur 0",numpad1:"Numerisk tastatur 1",numpad2:"Numerisk tastatur 2",numpad3:"Numerisk tastatur 3",numpad4:"Numerisk tastatur 4",numpad5:"Numerisk tastatur 5",numpad6:"Numerisk tastatur 6",numpad7:"Numerisk tastatur 7", -numpad8:"Numerisk tastatur 8",numpad9:"Numerisk tastatur 9",multiply:"Multipliser",add:"Legg til",subtract:"Trekk fra",decimalPoint:"Desimaltegn",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Likhetstegn",comma:"Komma",dash:"Bindestrek",period:"Punktum",forwardSlash:"Forover skråstrek",graveAccent:"Grav aksent",openBracket:"Åpne parentes",backSlash:"Bakover skråstrek", -closeBracket:"Lukk parentes",singleQuote:"Enkelt sitattegn"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nl.js deleted file mode 100644 index 0f35b3e2f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","nl",{title:"Toegankelijkheidsinstructies",contents:"Help-inhoud. Druk op ESC om dit dialoog te sluiten.",legend:[{name:"Algemeen",items:[{name:"Werkbalk tekstverwerker",legend:"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren."}, -{name:"Dialoog tekstverwerker",legend:"In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Bij dialoogvensters met meerdere tabbladen kan de tabset bereikt worden met ALT+F10 of met TAB als onderdeel van de tabvolgorde in het dialoogvenster. Als de tabset focus heeft, kun je schakalen naar het volgende en vorige tabblad met respectievelijk PIJL RECHTS en PIJL LINKS."}, -{name:"Contextmenu tekstverwerker",legend:"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC."},{name:"Keuzelijst tekstverwerker",legend:"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten."}, -{name:"Elementenpad werkbalk tekstverwerker",legend:"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker."}]},{name:"Opdrachten",items:[{name:"Ongedaan maken opdracht",legend:"Druk op ${undo}"},{name:"Opnieuw uitvoeren opdracht",legend:"Druk op ${redo}"},{name:"Vetgedrukt opdracht", -legend:"Druk op ${bold}"},{name:"Cursief opdracht",legend:"Druk op ${italic}"},{name:"Onderstrepen opdracht",legend:"Druk op ${underline}"},{name:"Link opdracht",legend:"Druk op ${link}"},{name:"Werkbalk inklappen opdracht",legend:"Druk op ${toolbarCollapse}"},{name:"Ga naar vorige focus spatie commando",legend:"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."}, -{name:"Ga naar volgende focus spatie commando",legend:"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},{name:"Toegankelijkheidshulp",legend:"Druk op ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock", -escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Pijl naar links",upArrow:"Pijl omhoog",rightArrow:"Pijl naar rechts",downArrow:"Pijl naar beneden",insert:"Invoegen",leftWindowKey:"Linker Windows-toets",rightWindowKey:"Rechter Windows-toets",selectKey:"Selecteer toets",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vermenigvuldigen", -add:"Toevoegen",subtract:"Aftrekken",decimalPoint:"Decimaalteken",divide:"Delen",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puntkomma",equalSign:"Is gelijk-teken",comma:"Komma",dash:"Koppelteken",period:"Punt",forwardSlash:"Slash",graveAccent:"Accent grave",openBracket:"Vierkant haakje openen",backSlash:"Backslash",closeBracket:"Vierkant haakje sluiten",singleQuote:"Apostrof"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/no.js deleted file mode 100644 index b1e01d42c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/no.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","no",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, -{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, -{name:"Kommandoer",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Link",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, -{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock", -escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", -divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/oc.js deleted file mode 100644 index abab681b1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/oc.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","oc",{title:"Instruccions d'accessibilitat",contents:"Contengut de l'ajuda. Per tampar aquesta fenèstra, quichatz sus la tòca Escap.",legend:[{name:"General",items:[{name:"Barra d'aisinas de l'editor",legend:"Quichar sus ${toolbarFocus} per accedir a la barra d'aisinas. Se desplaçar cap al groupe seguent o precedent de la barra d'aisinas amb las tòcas Tab e Maj+Tab. Se desplaçar cap al boton seguent o precedent de la barra d'aisinas amb las tòcas Sageta dreita e Sageta esquèrra. Quichar sus la barra d'espaci o la tòca Entrada per activer lo boton de barra d'aisinas."}, -{name:"Fenèstra de l'editor",legend:"Dins una bóstia de dialòg, quichar sus Tab per passar a l'element seguent, quichar sus Maj+Tab per passar a l'element precedent, quichar sus Entrada per validar, quichar sus Escap per anullar. Quand una bóstia de dialòg possedís des onglets, la lista pòt èsser atenta amb Alt+F10 o amb Tab. Dins la lista dels onglets, se desplaçar cap al seguent e lo precedent amb las tòcas Sageta dreita e Sageta esquèrra respectivament."},{name:"Menú contextual de l'editor",legend:"Quichar sus ${contextMenu} o sus la tòca Menú per dobrir lo menú contextual. Se desplaçar ensuite cap a l'opcion seguenta del menú amb las tòcas Tab o Sageta bas. Se desplaçar cap a l'opcion precedenta amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d'espaci o la tòca Entrada per seleccionar l'opcion del menu. Quichar sus la barra d'espaci, la tòca Entrada o Sageta dreita per dobrir lo sosmenú de l'opcion seleccionada. Tornar a l'element de menú parent amb la tòca Escap o Sageta esquèrra. Tampar lo menú contextual amb Escap."}, -{name:"Zòna de lista de l'editor",legend:"Dins una lista en menú desenrotlant, se desplaçar cap a l'element seguent de la lista amb las tòcas Tab o Sageta bas. Se desplaçar cap a l'element precedent de la lista amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d'espaci o sus Entrada per seleccionar l'opcion dins la lista. Quichar sus Escap per tampar lo menú desenrotlant."},{name:"Barra del camin d'elements de l'editor",legend:"Quichar sus ${elementsPathFocus} per naviguer cap a la barra del fial d'Ariana dels elements. Se desplaçar cap al boton de l'element seguent amb las tòcas Tab o Sageta dreita. Se desplaçar cap al boton precedent amb las tòcas Maj+Tab o Sageta esquèrra. Quichar sus la barra d'espaci o sus Entrada per seleccionar l'element dins l'editor."}]}, -{name:"Comandas",items:[{name:"Anullar la comanda",legend:"Quichar sus ${undo}"},{name:"Comanda restablir",legend:"Quichar sus ${redo}"},{name:" Comanda gras",legend:"Quichar sus ${bold}"},{name:" Comanda italica",legend:"Quichar sus ${italic}"},{name:" Comanda solinhat",legend:"Quichar sus ${underline}"},{name:" Comanda ligam",legend:"Quichar sus ${link}"},{name:"Comanda enrotlar la barra d'aisinas",legend:"Quichar sus ${toolbarCollapse}"},{name:"Comanda d'accès a l'element seleccionable precedent", -legend:"Quichar sus ${accessNextSpace} per accedir a l'element seleccionable inategnible lo mai pròche abans lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables precedents."},{name:"Comanda d'accès a l'element seleccionable seguent",legend:"Quichar sus ${accessNextSpace} per accedir a l'element seleccionable inatenhible lo mai pròche aprèp lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables seguents."}, -{name:" Ajuda sus l'accessibilitat",legend:"Quichar sus ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulacion",pause:"Pausa",capslock:"Verr. Maj.",escape:"Escap",pageUp:"Pagina superiora",pageDown:"Pagina seguenta",leftArrow:"Sageta esquèrra",upArrow:"Sageta naut",rightArrow:"Sageta dreita",downArrow:"Sageta bassa",insert:"Inser",leftWindowKey:"Tòca Windows esquèrra",rightWindowKey:"Tòca Windows dreita",selectKey:"Tòca Seleccionar", -numpad0:"0 del pavat numeric",numpad1:"1 del pavat numeric",numpad2:"2 del pavat numeric",numpad3:"3 del pavat numeric",numpad4:"4 del pavat numeric",numpad5:"5 del pavat numeric",numpad6:"6 del pavat numeric",numpad7:"7 del pavat numeric",numpad8:"Pavat numeric 8",numpad9:"9 del pavat numeric",multiply:"Multiplicar",add:"Plus",subtract:"Mens",decimalPoint:"Punt decimal",divide:"Devesir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Verr. Num.", -scrollLock:"Arrèst desfil.",semiColon:"Punt-virgula",equalSign:"Signe egal",comma:"Virgula",dash:"Jonhent",period:"Punt",forwardSlash:"Barra oblica",graveAccent:"Accent grèu",openBracket:"Parentèsi dobèrta",backSlash:"Barra oblica invèrsa",closeBracket:"Parentèsi tampanta",singleQuote:"Apostròfa"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pl.js deleted file mode 100644 index 0c59c9181..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pl",{title:"Instrukcje dotyczące dostępności",contents:"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.",legend:[{name:"Informacje ogólne",items:[{name:"Pasek narzędzi edytora",legend:"Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi."}, -{name:"Okno dialogowe edytora",legend:"Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO."}, -{name:"Menu kontekstowe edytora",legend:"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC."},{name:"Lista w edytorze", -legend:"Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę."},{name:"Pasek ścieżki elementów edytora",legend:"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER."}]}, -{name:"Polecenia",items:[{name:"Polecenie Cofnij",legend:"Naciśnij ${undo}"},{name:"Polecenie Ponów",legend:"Naciśnij ${redo}"},{name:"Polecenie Pogrubienie",legend:"Naciśnij ${bold}"},{name:"Polecenie Kursywa",legend:"Naciśnij ${italic}"},{name:"Polecenie Podkreślenie",legend:"Naciśnij ${underline}"},{name:"Polecenie Wstaw/ edytuj odnośnik",legend:"Naciśnij ${link}"},{name:"Polecenie schowaj pasek narzędzi",legend:"Naciśnij ${toolbarCollapse}"},{name:"Przejdź do poprzedniego miejsca, w którym można ustawić focus", -legend:"Naciśnij ${accessPreviousSpace}, aby przejść do najbliższego niedostępnego miejsca przed kursorem, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc."},{name:"Przejdź do następnego miejsca, w którym można ustawić focus",legend:"Naciśnij ${accessNextSpace}, aby przejść do najbliższego niedostępnego miejsca po kursorze, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc."}, -{name:"Pomoc dotycząca dostępności",legend:"Naciśnij ${a11yHelp}"},{name:"Wklej jako tekst",legend:"Naciśnij ${pastetext}",legendEdge:"Naciśnij ${pastetext}, a następnie ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Strzałka w lewo",upArrow:"Strzałka w górę",rightArrow:"Strzałka w prawo",downArrow:"Strzałka w dół",insert:"Insert",leftWindowKey:"Lewy klawisz Windows",rightWindowKey:"Prawy klawisz Windows",selectKey:"Klawisz wyboru", -numpad0:"Klawisz 0 na klawiaturze numerycznej",numpad1:"Klawisz 1 na klawiaturze numerycznej",numpad2:"Klawisz 2 na klawiaturze numerycznej",numpad3:"Klawisz 3 na klawiaturze numerycznej",numpad4:"Klawisz 4 na klawiaturze numerycznej",numpad5:"Klawisz 5 na klawiaturze numerycznej",numpad6:"Klawisz 6 na klawiaturze numerycznej",numpad7:"Klawisz 7 na klawiaturze numerycznej",numpad8:"Klawisz 8 na klawiaturze numerycznej",numpad9:"Klawisz 9 na klawiaturze numerycznej",multiply:"Przemnóż",add:"Plus", -subtract:"Minus",decimalPoint:"Separator dziesiętny",divide:"Podziel",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Średnik",equalSign:"Znak równości",comma:"Przecinek",dash:"Pauza",period:"Kropka",forwardSlash:"Ukośnik prawy",graveAccent:"Akcent słaby",openBracket:"Nawias kwadratowy otwierający",backSlash:"Ukośnik lewy",closeBracket:"Nawias kwadratowy zamykający",singleQuote:"Apostrof"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js deleted file mode 100644 index 317e571f7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilidade",contents:"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, -{name:"Diálogo do Editor",legend:"Dentro de um diálogo, pressione TAB para navegar para o próximo elemento. Pressione SHIFT+TAB para mover para o elemento anterior. Pressione ENTER ara enviar o diálogo. pressione ESC para cancelar o diálogo. Quando um diálogo tem múltiplas abas, a lista de abas pode ser acessada com ALT+F10 ou TAB, como parte da ordem de tabulação do diálogo. Com a lista de abas em foco, mova para a próxima aba e para a aba anterior com a SETA DIREITA ou SETA ESQUERDA, respectivamente."}, -{name:"Menu de Contexto do Editor",legend:"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC."},{name:"Caixa de Lista do Editor",legend:"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista."}, -{name:"Barra de Caminho do Elementos do Editor",legend:"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]},{name:"Comandos",items:[{name:" Comando Desfazer",legend:"Pressione ${undo}"},{name:" Comando Refazer",legend:"Pressione ${redo}"},{name:" Comando Negrito",legend:"Pressione ${bold}"}, -{name:" Comando Itálico",legend:"Pressione ${italic}"},{name:" Comando Sublinhado",legend:"Pressione ${underline}"},{name:" Comando Link",legend:"Pressione ${link}"},{name:" Comando Fechar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acessar o comando anterior de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."}, -{name:"Acessar próximo fomando de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},{name:" Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tecla Tab",pause:"Pause",capslock:"Caps Lock", -escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Seta à Esquerda",upArrow:"Seta à Cima",rightArrow:"Seta à Direita",downArrow:"Seta à Baixo",insert:"Insert",leftWindowKey:"Tecla do Windows Esquerda",rightWindowKey:"Tecla do Windows Direita",selectKey:"Tecla Selecionar",numpad0:"0 do Teclado Numérico",numpad1:"1 do Teclado Numérico",numpad2:"2 do Teclado Numérico",numpad3:"3 do Teclado Numérico",numpad4:"4 do Teclado Numérico",numpad5:"5 do Teclado Numérico",numpad6:"6 do Teclado Numérico", -numpad7:"7 do Teclado Numérico",numpad8:"8 do Teclado Numérico",numpad9:"9 do Teclado Numérico",multiply:"Multiplicar",add:"Mais",subtract:"Subtrair",decimalPoint:"Ponto",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto-e-vírgula",equalSign:"Igual",comma:"Vírgula",dash:"Hífen",period:"Ponto",forwardSlash:"Barra",graveAccent:"Acento Grave",openBracket:"Abrir Conchetes", -backSlash:"Contra-barra",closeBracket:"Fechar Colchetes",singleQuote:"Aspas Simples"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt.js deleted file mode 100644 index a8c788dfb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","pt",{title:"Instruções de acessibilidade",contents:"Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.",legend:[{name:"Geral",items:[{name:"Barra de ferramentas do editor",legend:"Clique em ${toolbarFocus} para navegar na barra de ferramentas. Para navegar entre o grupo da barra de ferramentas anterior e seguinte use TAB e SHIFT+TAB. Para navegar entre o botão da barra de ferramentas seguinte e anterior use a SETA DIREITA ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, -{name:"Janela do editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu de contexto do editor",legend:"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. Vá para o item do menu contentor com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC."}, -{name:"Editor de caixa em lista",legend:"Dentro de uma lista, para navegar para o item seguinte da lista use TAB ou SETA PARA BAIXO. Para o item anterior da lista use SHIFT+TAB ou SETA PARA BAIXO. Carregue em ESPAÇO ou ENTER para selecionar a opção lista. Carregue em ESC para fechar a caixa da lista."},{name:"Editor da barra de caminho dos elementos",legend:"Clique em ${elementsPathFocus} para navegar na barra de caminho dos elementos. Para o botão do elemento seguinte use TAB ou SETA DIREITA. para o botão anterior use SHIFT+TAB ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para selecionar o elemento no editor."}]}, -{name:"Comandos",items:[{name:"Comando de anular",legend:"Carregar ${undo}"},{name:"Comando de refazer",legend:"Clique ${redo}"},{name:"Comando de negrito",legend:"Pressione ${bold}"},{name:"Comando de itálico",legend:"Pressione ${italic}"},{name:"Comando de sublinhado",legend:"Pressione ${underline}"},{name:"Comando de hiperligação",legend:"Pressione ${link}"},{name:"Comando de ocultar barra de ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Aceder ao comando espaço de foco anterior", -legend:"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},{name:"Acesso comando do espaço focus seguinte",legend:"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."}, -{name:"Ajuda a acessibilidade",legend:"Pressione ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Separador",pause:"Pausa",capslock:"Maiúsculas",escape:"Esc",pageUp:"Subir página",pageDown:"Descer página",leftArrow:"Seta esquerda",upArrow:"Seta para cima",rightArrow:"Seta direita",downArrow:"Seta para baixo",insert:"Inserir",leftWindowKey:"Tecla esquerda Windows",rightWindowKey:"Tecla direita Windows",selectKey:"Selecionar tecla", -numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiplicar",add:"Adicionar",subtract:"Subtrair",decimalPoint:"Ponto decimal",divide:"Separar",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto e vírgula",equalSign:"Sinald e igual",comma:"Vírgula", -dash:"Cardinal",period:"Ponto",forwardSlash:"Forward Slash",graveAccent:"Acento grave",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Plica"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ro.js deleted file mode 100644 index 72f91d466..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ro",{title:"Instrucțiuni de accesibilitate",contents:"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.",legend:[{name:"General",items:[{name:"Editează bara instrumente.",legend:"Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului."}, -{name:"Dialog editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor meniu contextual",legend:"Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC."}, -{name:"Editor Casetă Listă",legend:"În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, -{name:"Comenzi",items:[{name:" Undo command",legend:"Apasă ${undo}"},{name:"Comanda precedentă",legend:"Apasă ${redo}"},{name:"Comanda Îngroșat",legend:"Apasă ${bold}"},{name:"Comanda Inclinat",legend:"Apasă ${italic}"},{name:"Comanda Subliniere",legend:"Apasă ${underline}"},{name:"Comanda Legatură",legend:"Apasă ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", -leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", -f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ru.js deleted file mode 100644 index 6381aaee0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ru",{title:"Горячие клавиши",contents:"Помощь. Для закрытия этого окна нажмите ESC.",legend:[{name:"Основное",items:[{name:"Панель инструментов",legend:"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов."},{name:"Диалоги",legend:'Внутри диалога, нажмите TAB чтобы перейти к следующему элементу диалога, нажмите SHIFT+TAB чтобы перейти к предыдущему элементу диалога, нажмите ENTER чтобы отправить диалог, нажмите ESC чтобы отменить диалог. Когда диалоговое окно имеет несколько вкладок, получить доступ к панели вкладок как части диалога можно нажатием или сочетания ALT+F10 или TAB, при этом активные элементы диалога будут перебираться с учетом порядка табуляции. При активной панели вкладок, переход к следующей или предыдущей вкладке осуществляется нажатием стрелки "ВПРАВО" или стрелки "ВЛЕВО" соответственно.'}, -{name:"Контекстное меню",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.'},{name:"Редактор списка", -legend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:"Путь к элементу",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]}, -{name:"Команды",items:[{name:"Отменить",legend:"Нажмите ${undo}"},{name:"Повторить",legend:"Нажмите ${redo}"},{name:"Полужирный",legend:"Нажмите ${bold}"},{name:"Курсив",legend:"Нажмите ${italic}"},{name:"Подчеркнутый",legend:"Нажмите ${underline}"},{name:"Гиперссылка",legend:"Нажмите ${link}"},{name:"Свернуть панель инструментов",legend:"Нажмите ${toolbarCollapse}"},{name:"Команды доступа к предыдущему фокусному пространству",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'}, -{name:"Команды доступа к следующему фокусному пространству",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Справка по горячим клавишам",legend:"Нажмите ${a11yHelp}"},{name:"Вставить только текст",legend:"Нажмите ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up", -pageDown:"Page Down",leftArrow:"Стрелка влево",upArrow:"Стрелка вверх",rightArrow:"Стрелка вправо",downArrow:"Стрелка вниз",insert:"Insert",leftWindowKey:"Левая клавиша Windows",rightWindowKey:"Правая клавиша Windows",selectKey:"Выбрать",numpad0:"Цифра 0",numpad1:"Цифра 1",numpad2:"Цифра 2",numpad3:"Цифра 3",numpad4:"Цифра 4",numpad5:"Цифра 5",numpad6:"Цифра 6",numpad7:"Цифра 7",numpad8:"Цифра 8",numpad9:"Цифра 9",multiply:"Умножить",add:"Плюс",subtract:"Вычесть",decimalPoint:"Десятичная точка",divide:"Делить", -f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Точка с запятой",equalSign:"Равно",comma:"Запятая",dash:"Тире",period:"Точка",forwardSlash:"Наклонная черта",graveAccent:"Апостроф",openBracket:"Открыть скобку",backSlash:"Обратная наклонная черта",closeBracket:"Закрыть скобку",singleQuote:"Одинарная кавычка"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/si.js deleted file mode 100644 index 0f21a5fb2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/si.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","si",{title:"ළඟා වියහැකි ",contents:"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න",legend:[{name:"පොදු කරුණු",items:[{name:"සංස්කරණ මෙවලම් ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."},{name:"සංස්කරණ ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"සංස්කරණ අඩංගුවට ",legend:"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න."},{name:"සංස්කරණ තේරුම් ",legend:"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න."}, -{name:"සංස්කරණ අංග සහිත ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."}]},{name:"විධාන",items:[{name:"විධානය වෙනස් ",legend:"ඔබන්න ${වෙනස් කිරීම}"},{name:"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.",legend:"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}"},{name:"තද අකුරින් විධාන",legend:"ඔබන්න ${තද }"}, -{name:"බැධී අකුරු විධාන",legend:"ඔබන්න ${බැධී අකුරු }"},{name:"යටින් ඉරි ඇද ඇති විධාන.",legend:"ඔබන්න ${යටින් ඉරි ඇද ඇති}"},{name:"සම්බන්ධිත විධාන",legend:"ඔබන්න ${සම්බන්ධ }"},{name:"මෙවලම් තීරු හැකුලුම් විධාන",legend:"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }"},{name:"යොමුවීමට පෙර වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"යොමුවීමට ඊළග වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"ප්‍රවේශ ",legend:"ඔබන්න ${a11y }"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}], -tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply", -add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sk.js deleted file mode 100644 index dc59887d6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sk",{title:"Inštrukcie prístupnosti",contents:"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.",legend:[{name:"Všeobecne",items:[{name:"Lišta nástrojov editora",legend:"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov."}, -{name:"Editorový dialóg",legend:"V dialógovom okne stlačte TAB pre presun na ďalší prvok, SHIFT+TAB pre presun na predchádzajúci prvok, ENTER pre odoslanie, ESC pre zrušenie. Keď má dialógové okno viacero kariet, zoznam kariet dosiahnete buď stlačením ALT+F10 alebo s TAB v príslušnom poradí kariet. So zameraným zoznamom kariet sa pohybujte k ďalšej alebo predchádzajúcej karte cez PRAVÚ a ĽAVÚ ŠÍPKU."},{name:"Editorové kontextové menu",legend:"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC."}, -{name:"Editorov box zoznamu",legend:"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu."},{name:"Editorove pásmo cesty prvku",legend:"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore."}]}, -{name:"Príkazy",items:[{name:"Vrátiť príkazy",legend:"Stlačte ${undo}"},{name:"Nanovo vrátiť príkaz",legend:"Stlačte ${redo}"},{name:"Príkaz na stučnenie",legend:"Stlačte ${bold}"},{name:"Príkaz na kurzívu",legend:"Stlačte ${italic}"},{name:"Príkaz na podčiarknutie",legend:"Stlačte ${underline}"},{name:"Príkaz na odkaz",legend:"Stlačte ${link}"},{name:"Príkaz na zbalenie lišty nástrojov",legend:"Stlačte ${toolbarCollapse}"},{name:"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu",legend:"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."}, -{name:"Prejsť na ďalší ",legend:"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},{name:"Pomoc prístupnosti",legend:"Stlačte ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Stránka hore", -pageDown:"Stránka dole",leftArrow:"Šípka naľavo",upArrow:"Šípka hore",rightArrow:"Šípka napravo",downArrow:"Šípka dole",insert:"Insert",leftWindowKey:"Ľavé Windows tlačidlo",rightWindowKey:"Pravé Windows tlačidlo",selectKey:"Tlačidlo Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Násobenie",add:"Sčítanie",subtract:"Odčítanie",decimalPoint:"Desatinná čiarka", -divide:"Delenie",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Bodkočiarka",equalSign:"Rovná sa",comma:"Čiarka",dash:"Pomĺčka",period:"Bodka",forwardSlash:"Lomítko",graveAccent:"Zdôrazňovanie prízvuku",openBracket:"Hranatá zátvorka otváracia",backSlash:"Backslash",closeBracket:"Hranatá zátvorka zatváracia",singleQuote:"Jednoduché úvodzovky"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sl.js deleted file mode 100644 index 2df296aa0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sl",{title:"Navodila za dostopnost",contents:"Vsebina pomoči. Če želite zapreti pogovorno okno, pritisnite ESC.",legend:[{name:"Splošno",items:[{name:"Orodna vrstica urejevalnika",legend:"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice."}, -{name:"Urejevalno Pogovorno Okno",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstni meni urejevalnika",legend:"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC."}, -{name:"Urejevalno Seznamsko Polje",legend:"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam."},{name:"Urejevalna vrstica poti elementa",legend:"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku."}]}, -{name:"Ukazi",items:[{name:"Razveljavi ukaz",legend:"Pritisnite ${undo}"},{name:"Ponovi ukaz",legend:"Pritisnite ${redo}"},{name:"Krepki ukaz",legend:"Pritisnite ${bold}"},{name:"Ležeči ukaz",legend:"Pritisnite ${italic}"},{name:"Poudarni ukaz",legend:"Pritisnite ${underline}"},{name:"Ukaz povezave",legend:"Pritisnite ${link}"},{name:"Skrči Orodno Vrstico Ukaz",legend:"Pritisnite ${toolbarCollapse}"},{name:"Dostop do prejšnjega ukaza ostrenja",legend:"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."}, -{name:"Dostop do naslednjega ukaza ostrenja",legend:"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},{name:"Pomoč dostopnosti",legend:"Pritisnite ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape", -pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Puščica levo",upArrow:"Puščica gor",rightArrow:"Puščica desno",downArrow:"Puščica dol",insert:"Insert",leftWindowKey:"Leva tipka Windows",rightWindowKey:"Desna tipka Windows",selectKey:"Select tipka",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Zmnoži",add:"Dodaj",subtract:"Odštej",decimalPoint:"Decimalna vejica", -divide:"Deli",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Podpičje",equalSign:"Enačaj",comma:"Vejica",dash:"Vezaj",period:"Pika",forwardSlash:"Desna poševnica",graveAccent:"Krativec",openBracket:"Oklepaj",backSlash:"Leva poševnica",closeBracket:"Zaklepaj",singleQuote:"Opuščaj"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sq.js deleted file mode 100644 index 77db830b5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sq",{title:"Udhëzimet e Qasjes",contents:"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.",legend:[{name:"Të përgjithshme",items:[{name:"Shiriti i Redaktuesit",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialogu i Redaktuesit",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Komandat",items:[{name:"Rikthe komandën",legend:"Shtyp ${undo}"},{name:"Ribëj komandën",legend:"Shtyp ${redo}"},{name:"Komanda e trashjes së tekstit",legend:"Shtyp ${bold}"},{name:"Komanda kursive",legend:"Shtyp ${italic}"}, -{name:"Komanda e nënvijëzimit",legend:"Shtyp ${underline}"},{name:"Komanda e Nyjes",legend:"Shtyp ${link}"},{name:" Toolbar Collapse command",legend:"Shtyp ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"Ndihmë Qasjeje",legend:"Shtyp ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Fletë",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Shenja majtas",upArrow:"Shenja sipër",rightArrow:"Shenja djathtas",downArrow:"Shenja poshtë",insert:"Shto",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Shto",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Presje",dash:"vizë",period:"Pikë",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Hape kllapën",backSlash:"Backslash",closeBracket:"Mbylle kllapën",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js deleted file mode 100644 index da9a17f3f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sr-latn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Opšte",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr.js deleted file mode 100644 index 7d7c87d84..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sr",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Опште",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sv.js deleted file mode 100644 index 8180336f3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","sv",{title:"Hjälpmedelsinstruktioner",contents:"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.",legend:[{name:"Allmänt",items:[{name:"Editor verktygsfält",legend:"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet."}, -{name:"Dialogeditor",legend:"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL."},{name:"Editor för innehållsmeny",legend:"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC."}, -{name:"Editor för list-box",legend:"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen."},{name:"Editor för elementens sökväg",legend:"Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren."}]}, -{name:"Kommandon",items:[{name:"Ångra kommando",legend:"Tryck på ${undo}"},{name:"Gör om kommando",legend:"Tryck på ${redo}"},{name:"Kommandot fet stil",legend:"Tryck på ${bold}"},{name:"Kommandot kursiv",legend:"Tryck på ${italic}"},{name:"Kommandot understruken",legend:"Tryck på ${underline}"},{name:"Kommandot länk",legend:"Tryck på ${link}"},{name:"Verktygsfält Dölj kommandot",legend:"Tryck på ${toolbarCollapse}"},{name:"Gå till föregående fokus plats",legend:"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa."}, -{name:"Tillgå nästa fokuskommandots utrymme",legend:"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen."},{name:"Hjälp om tillgänglighet",legend:"Tryck ${a11yHelp}"},{name:"Klistra in som vanlig text",legend:"Tryck ${pastetext}",legendEdge:"Tryck ${pastetext}, följt av ${paste}"}]}],tab:"Tab",pause:"Paus",capslock:"Caps lock",escape:"Escape",pageUp:"Sida Up", -pageDown:"Sida Ned",leftArrow:"Vänsterpil",upArrow:"Uppil",rightArrow:"Högerpil",downArrow:"Nedåtpil",insert:"Infoga",leftWindowKey:"Vänster Windowstangent",rightWindowKey:"Höger Windowstangent",selectKey:"Välj tangent",numpad0:"Nummer 0",numpad1:"Nummer 1",numpad2:"Nummer 2",numpad3:"Nummer 3",numpad4:"Nummer 4",numpad5:"Nummer 5",numpad6:"Nummer 6",numpad7:"Nummer 7",numpad8:"Nummer 8",numpad9:"Nummer 9",multiply:"Multiplicera",add:"Addera",subtract:"Minus",decimalPoint:"Decimalpunkt",divide:"Dividera", -f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lika med tecken",comma:"Komma",dash:"Minus",period:"Punkt",forwardSlash:"Snedstreck framåt",graveAccent:"Accent",openBracket:"Öppningsparentes",backSlash:"Snedstreck bakåt",closeBracket:"Slutparentes",singleQuote:"Enkelt Citattecken"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/th.js deleted file mode 100644 index c2df8db66..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/th.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"คำสั่ง",items:[{name:"เลิกทำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเอียง",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้", -legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงก์",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tr.js deleted file mode 100644 index 699f0db0a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",contents:"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.",legend:[{name:"Genel",items:[{name:"Düzenleyici Araç Çubuğu",legend:"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın."}, -{name:"Diyalog Düzenleyici",legend:"Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın."}, -{name:"İçerik Menü Editörü",legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:"Liste Kutusu Editörü",legend:"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın."}, -{name:"Element Yol Çubuğu Editörü",legend:"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın."}]},{name:"Komutlar",items:[{name:"Komutu geri al",legend:"$(undo)'ya basın"},{name:"Komutu geri al",legend:"${redo} basın"},{name:" Kalın komut",legend:"${bold} basın"},{name:" İtalik komutu",legend:"${italic} basın"}, -{name:" Alttan çizgi komutu",legend:"${underline} basın"},{name:" Bağlantı komutu",legend:"${link} basın"},{name:" Araç çubuğu Toplama komutu",legend:"${toolbarCollapse} basın"},{name:"Önceki komut alanına odaklan",legend:"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},{name:"Sonraki komut alanına odaklan",legend:"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."}, -{name:"Erişilebilirlik Yardımı",legend:"${a11yHelp}'e basın"},{name:"Düz Metin Olarak Yapıştır",legend:"${pastetext} basın",legendEdge:"Önce ${pastetext} ardından${paste} basın"}]}],tab:"Sekme tuşu",pause:"Durdurma tuşu",capslock:"Büyük harf tuşu",escape:"Vazgeç tuşu",pageUp:"Sayfa Yukarı",pageDown:"Sayfa Aşağı",leftArrow:"Sol ok",upArrow:"Yukarı ok",rightArrow:"Sağ ok",downArrow:"Aşağı ok",insert:"Araya gir",leftWindowKey:"Sol windows tuşu",rightWindowKey:"Sağ windows tuşu",selectKey:"Seçme tuşu", -numpad0:"Nümerik 0",numpad1:"Nümerik 1",numpad2:"Nümerik 2",numpad3:"Nümerik 3",numpad4:"Nümerik 4",numpad5:"Nümerik 5",numpad6:"Nümerik 6",numpad7:"Nümerik 7",numpad8:"Nümerik 8",numpad9:"Nümerik 9",multiply:"Çarpma",add:"Toplama",subtract:"Çıkarma",decimalPoint:"Ondalık işareti",divide:"Bölme",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lk",scrollLock:"Scr Lk",semiColon:"Noktalı virgül",equalSign:"Eşittir",comma:"Virgül",dash:"Eksi", -period:"Nokta",forwardSlash:"İleri eğik çizgi",graveAccent:"Üst tırnak",openBracket:"Parantez aç",backSlash:"Ters eğik çizgi",closeBracket:"Parantez kapa",singleQuote:"Tek tırnak"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tt.js deleted file mode 100644 index ff239fdc6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} басыгыз"},{name:"Кабатлау",legend:"${redo} басыгыз"},{name:"Калын",legend:"${bold} басыгыз"},{name:"Курсив",legend:"${italic} басыгыз"},{name:"Астына сызылган",legend:"${underline} басыгыз"}, -{name:"Сылталама",legend:"${link} басыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} басыгыз"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"${a11yHelp} басыгыз"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Сул якка ук",upArrow:"Өскә таба ук",rightArrow:"Уң якка ук",downArrow:"Аска таба ук",insert:"Өстәү",leftWindowKey:"Сул Windows төймəсе",rightWindowKey:"Уң Windows төймəсе",selectKey:"Select төймəсе",numpad0:"Numpad 0", -numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Алу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Нокталы өтер",equalSign:"Тигезлек билгесе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә", -forwardSlash:"Кыек сызык",graveAccent:"Гравис",openBracket:"Җәя ачу",backSlash:"Кире кыек сызык",closeBracket:"Җәя ябу",singleQuote:"Бер иңле куштырнаклар"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ug.js deleted file mode 100644 index cf81a7039..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","ug",{title:"قوشۇمچە چۈشەندۈرۈش",contents:"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.",legend:[{name:"ئادەتتىكى",items:[{name:"قورال بالداق تەھرىر",legend:"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ."},{name:"تەھرىرلىگۈچ سۆزلەشكۈسى",legend:"سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT+TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT+F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛SHIFT+ TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ."}, -{name:"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى",legend:"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ."},{name:"تەھرىرلىگۈچ تىزىمى", -legend:"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ."},{name:"تەھرىرلىگۈچ ئېلېمېنت يول بالداق",legend:"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ."}]}, -{name:"بۇيرۇق",items:[{name:"بۇيرۇقتىن يېنىۋال",legend:"${undo} نى بېسىڭ"},{name:"قايتىلاش بۇيرۇقى",legend:"${redo} نى بېسىڭ"},{name:"توملىتىش بۇيرۇقى",legend:"${bold} نى بېسىڭ"},{name:"يانتۇ بۇيرۇقى",legend:"${italic} نى بېسىڭ"},{name:"ئاستى سىزىق بۇيرۇقى",legend:"${underline} نى بېسىڭ"},{name:"ئۇلانما بۇيرۇقى",legend:"${link} نى بېسىڭ"},{name:"قورال بالداق قاتلاش بۇيرۇقى",legend:"${toolbarCollapse} نى بېسىڭ"},{name:"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."}, -{name:"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},{name:"توسالغۇسىز لايىھە چۈشەندۈرۈشى",legend:"${a11yHelp} نى بېسىڭ"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab", -pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"سول يا ئوق",upArrow:"ئۈستى يا ئوق",rightArrow:"ئوڭ يا ئوق",downArrow:"ئاستى يا ئوق",insert:"قىستۇر",leftWindowKey:"سول Windows كۇنۇپكىسى",rightWindowKey:"ئوڭ Windows كۇنۇپكىسى",selectKey:"تاللاش كۇنۇپكىسى",numpad0:"سان تاختا 0",numpad1:"سان تاختا 1",numpad2:"سان تاختا 2",numpad3:"سان تاختا 3",numpad4:"سان تاختا 4",numpad5:"سان تاختا 5",numpad6:"سان تاختا 6",numpad7:"سان تاختا 7",numpad8:"سان تاختا 8", -numpad9:"سان تاختا 9",multiply:"يۇلتۇز كۇنۇپكىسى",add:"قوشۇش",subtract:"ئېلىش",decimalPoint:"كەسىر چېكىت",divide:"بۆلۈش",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"سان قۇلۇپ كۇنۇپكىسى",scrollLock:"سۈرگۈچ قۇلۇپ كۇنۇپكىسى",semiColon:"چېكىتلىك پەش",equalSign:"تەڭلىك بەلگىسى",comma:"پەش",dash:"سىزىقچە",period:"چېكىت",forwardSlash:"سولغا يانتۇ سىزىق",graveAccent:"ئۇرغۇ بەلگىسى",openBracket:"ئېچىلغان تىرناق",backSlash:"ئوڭغا يانتۇ سىزىق", -closeBracket:"يېپىلغان تىرناق",singleQuote:"يالاڭ پەش"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/uk.js deleted file mode 100644 index 1bed30b7e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","uk",{title:"Спеціальні Інструкції",contents:"Довідка. Натисніть ESC і вона зникне.",legend:[{name:"Основне",items:[{name:"Панель Редактора",legend:"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів."},{name:"Діалог Редактора", -legend:'Усередині діалогу, натисніть TAB щоб перейти до наступного елементу діалогу, натисніть SHIFT+TAB щоб перейти до попереднього елемента діалогу, натисніть ENTER щоб відправити діалог, натисніть ESC щоб скасувати діалог. Коли діалогове вікно має декілька вкладок, отримати доступ до панелі вкладок як частині діалогу можна натисканням або поєднання ALT+F10 або TAB, при цьому активні елементи діалогу будуть перебиратися з урахуванням порядку табуляції. При активній панелі вкладок, перехід до наступної або попередньої вкладці здійснюється натисканням стрілки "ВПРАВО" або стрілки "ВЛЕВО" відповідно.'}, -{name:"Контекстне Меню Редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC."},{name:"Скринька Списків Редактора",legend:"Усередині списку, перехід до наступного пункту списку виконується клавішею TAB або СТРІЛКА ВНИЗ. Перехід до попереднього елемента списку клавішею SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список."}, -{name:"Шлях до елемента редактора",legend:"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі."}]},{name:"Команди",items:[{name:"Відмінити команду",legend:"Натисніть ${undo}"},{name:"Повторити",legend:"Натисніть ${redo}"},{name:"Жирний",legend:"Натисніть ${bold}"},{name:"Курсив",legend:"Натисніть ${italic}"}, -{name:"Підкреслений",legend:"Натисніть ${underline}"},{name:"Посилання",legend:"Натисніть ${link}"},{name:"Згорнути панель інструментів",legend:"Натисніть ${toolbarCollapse}"},{name:"Доступ до попереднього місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},{name:"Доступ до наступного місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."}, -{name:"Допомога з доступності",legend:"Натисніть ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Ліва стрілка",upArrow:"Стрілка вгору",rightArrow:"Права стрілка",downArrow:"Стрілка вниз",insert:"Вставити",leftWindowKey:"Ліва клавіша Windows",rightWindowKey:"Права клавіша Windows",selectKey:"Виберіть клавішу",numpad0:"Numpad 0", -numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Множення",add:"Додати",subtract:"Віднімання",decimalPoint:"Десяткова кома",divide:"Ділення",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Крапка з комою",equalSign:"Знак рівності",comma:"Кома",dash:"Тире",period:"Період", -forwardSlash:"Коса риска",graveAccent:"Гравіс",openBracket:"Відкрити дужку",backSlash:"Зворотна коса риска",closeBracket:"Закрити дужку",singleQuote:"Одинарні лапки"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/vi.js deleted file mode 100644 index de188615b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","vi",{title:"Hướng dẫn trợ năng",contents:"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.",legend:[{name:"Chung",items:[{name:"Thanh công cụ soạn thảo",legend:"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ."},{name:"Hộp thoại Biên t",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Trình đơn Ngữ cảnh cBộ soạn thảo",legend:"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh."}, -{name:"Hộp danh sách trình biên tập",legend:"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn."},{name:"Thanh đường dẫn các đối tượng",legend:"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo."}]}, -{name:"Lệnh",items:[{name:"Làm lại lện",legend:"Ấn ${undo}"},{name:"Làm lại lệnh",legend:"Ấn ${redo}"},{name:"Lệnh in đậm",legend:"Ấn ${bold}"},{name:"Lệnh in nghiêng",legend:"Ấn ${italic}"},{name:"Lệnh gạch dưới",legend:"Ấn ${underline}"},{name:"Lệnh liên kết",legend:"Nhấn ${link}"},{name:"Lệnh hiển thị thanh công cụ",legend:"Nhấn${toolbarCollapse}"},{name:"Truy cập đến lệnh tập trung vào khoảng cách trước đó",legend:"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."}, -{name:"Truy cập phần đối tượng lệnh khoảng trống",legend:"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},{name:"Trợ giúp liên quan",legend:"Nhấn ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Phím Tab",pause:"Phím Pause",capslock:"Phím Caps Lock", -escape:"Phím Escape",pageUp:"Phím Page Up",pageDown:"Phím Page Down",leftArrow:"Phím Left Arrow",upArrow:"Phím Up Arrow",rightArrow:"Phím Right Arrow",downArrow:"Phím Down Arrow",insert:"Chèn",leftWindowKey:"Phím Left Windows",rightWindowKey:"Phím Right Windows ",selectKey:"Chọn phím",numpad0:"Phím 0",numpad1:"Phím 1",numpad2:"Phím 2",numpad3:"Phím 3",numpad4:"Phím 4",numpad5:"Phím 5",numpad6:"Phím 6",numpad7:"Phím 7",numpad8:"Phím 8",numpad9:"Phím 9",multiply:"Nhân",add:"Thêm",subtract:"Trừ",decimalPoint:"Điểm số thập phân", -divide:"Chia",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Dấu chấm phẩy",equalSign:"Đăng nhập bằng",comma:"Dấu phẩy",dash:"Dấu gạch ngang",period:"Phím .",forwardSlash:"Phím /",graveAccent:"Phím `",openBracket:"Open Bracket",backSlash:"Dấu gạch chéo ngược",closeBracket:"Gần giá đỡ",singleQuote:"Trích dẫn"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js deleted file mode 100644 index 5c7898330..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"}, -{name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"}, -{name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"},{name:"粘贴为纯文本",legend:"按 ${pastetext}",legendEdge:"按 ${pastetext},然后再按 ${paste}"}]}],tab:"Tab 键",pause:"暂停键",capslock:"大写锁定键",escape:"Esc 键",pageUp:"上翻页键",pageDown:"下翻页键",leftArrow:"向左箭头键",upArrow:"向上箭头键",rightArrow:"向右箭头键",downArrow:"向下箭头键",insert:"插入键", -leftWindowKey:"左 WIN 键",rightWindowKey:"右 WIN 键",selectKey:"选择键",numpad0:"小键盘 0 键",numpad1:"小键盘 1 键",numpad2:"小键盘 2 键",numpad3:"小键盘 3 键",numpad4:"小键盘 4 键",numpad5:"小键盘 5 键",numpad6:"小键盘 6 键",numpad7:"小键盘 7 键",numpad8:"小键盘 8 键",numpad9:"小键盘 9 键",multiply:"星号键",add:"加号键",subtract:"减号键",decimalPoint:"小数点键",divide:"除号键",f1:"F1 键",f2:"F2 键",f3:"F3 键",f4:"F4 键",f5:"F5 键",f6:"F6 键",f7:"F7 键",f8:"F8 键",f9:"F9 键",f10:"F10 键",f11:"F11 键",f12:"F12 键",numLock:"数字锁定键",scrollLock:"滚动锁定键",semiColon:"分号键",equalSign:"等号键", -comma:"逗号键",dash:"短划线键",period:"句号键",forwardSlash:"斜杠键",graveAccent:"重音符键",openBracket:"左中括号键",backSlash:"反斜杠键",closeBracket:"右中括号键",singleQuote:"单引号键"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh.js deleted file mode 100644 index 10bf41c0a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。"},{name:"編輯器內容功能表",legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"}, -{name:"編輯器清單方塊",legend:"在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。"},{name:"編輯器元件路徑工具列",legend:"請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令",legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"}, -{name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up", -pageDown:"Page Down",leftArrow:"向左箭號",upArrow:"向上鍵號",rightArrow:"向右鍵號",downArrow:"向下鍵號",insert:"插入",leftWindowKey:"左方 Windows 鍵",rightWindowKey:"右方 Windows 鍵",selectKey:"選擇鍵",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"乘號",add:"新增",subtract:"減號",decimalPoint:"小數點",divide:"除號",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9", -f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"分號",equalSign:"等號",comma:"逗號",dash:"虛線",period:"句點",forwardSlash:"斜線",graveAccent:"抑音符號",openBracket:"左方括號",backSlash:"反斜線",closeBracket:"右方括號",singleQuote:"單引號"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/about.js b/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/about.js deleted file mode 100644 index 14eba697c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/about.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("about",function(a){a=a.lang.about;var b=CKEDITOR.getUrl(CKEDITOR.plugins.get("about").path+"dialogs/"+(CKEDITOR.env.hidpi?"hidpi/":"")+"logo_ckeditor.png");return{title:CKEDITOR.env.ie?a.dlgTitle:a.title,minWidth:390,minHeight:230,contents:[{id:"tab1",label:"",title:"",expand:!0,padding:0,elements:[{type:"html",html:'\x3cstyle type\x3d"text/css"\x3e.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+ -b+");"+(CKEDITOR.env.hidpi?"background-size:163px 58px;":"")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}\x3c/style\x3e\x3cdiv class\x3d"cke_about_container"\x3e\x3cdiv class\x3d"cke_about_logo"\x3e\x3c/div\x3e\x3cp\x3eCKEditor '+CKEDITOR.version+" (revision "+CKEDITOR.revision+')\x3cbr\x3e\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"http://ckeditor.com/"\x3ehttp://ckeditor.com\x3c/a\x3e\x3c/p\x3e\x3cp\x3e'+ -a.help.replace("$1",'\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"http://docs.ckeditor.com/user"\x3e'+a.userGuide+"\x3c/a\x3e")+"\x3c/p\x3e\x3cp\x3e"+a.moreInfo+'\x3cbr\x3e\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"http://ckeditor.com/about/license"\x3ehttp://ckeditor.com/about/license\x3c/a\x3e\x3c/p\x3e\x3cp\x3e'+a.copy.replace("$1",'\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"http://cksource.com/"\x3eCKSource\x3c/a\x3e - Frederico Knabben')+ -"\x3c/p\x3e\x3c/div\x3e"}]}],buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png b/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png deleted file mode 100644 index 10cc7368ad1bb65b16d037fa31e494906d60695e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13339 zcmW+-1y~ea7bc}dVCk0bQ0Y`8q`O%Vsl}zc8<9r3yQI6jLvrcv?r#41{(YX=*_yrQ zo_tSCu#$olCOQc^92^{`^fz%8I5>Do;I#wl8{qjKl(GSwknF{z)lh+l2deRJ;60kn zH*I_1_p|>U@M4T9F2IMx4iZ`ps@A3s&W3g-aL&%o?B-Tbdm}>|6LxDmvy>Ad5;(Z` zaMI#m)Lc@J(_B-@OlsRR4lHj5d15L8qN1V#;NVFhnd?;pp!eC?4OuG~T*#<<y<pof z#?6FkN}YE(5NsTL+gs)Uc_rd5>|Ygh#&o_V)wD^T`321@tCZ@~U@%yHSs3<7`0K&F zhXD9`MnC3$l>e0f)Rm43i6W=FpCWMivThn}9jiEZ6i+O<0KHNPzmTaXQjLo3wDj1* z(`X{wZnY>VC<tv3w{NoQDvlhU>H`Oz^eJIcgGQjgI+YS~q1bz*!o(SM3Ym~C6SfKd zLA%vv;DTQaVKl~r(B{Ic`vQzV0^D@DiP#5?MR52r*d$$r7}*si#bPCz>Jhq*7bRtO zqLD#CC`dz|h`5+&cW22rKc#>7GQ~w|-scXhXU*gzV_`#ve=(we&MYN;EX;R=4?>rI z((%h%$zZ~Yyx7zZLq1F5K5nDR<wvzGL!T`YW94EMt9~y~TCg~%&)f51(^S^pK-6R= z|D$MGP`^l|*@p$2{hg7*ua2tf>LEpiuXMEg)c@ish(nb!b%W!t!@eC5&~BBGW;4Dm zR#7>H6HzJKy*WD@KVy|lW8pa}`_{EC_Kgzfcd=UMl-}?t9+xlKAxH76k}(pj#cK8x zqOXXI;9JWuA{Te>=;Cq&JE|twtX*u%+lq3FQtH(fv#AYnU^QL>8`hnOm(`j@d^EeJ zBsrWbCsj7LZ#T-P1c_7IqE@uYmG^dc`+I&PD)%5}&UaP>N!zwCpPN(l6ksC-P<-J* z8o%Rf{HOinn*w$(ZOM$IAmM@}gl^wsO={a!mV$!fjKVpuy`h%n_Zb_un1>Q-nKI5} z^P8`e>{ZQzsoIoD7?v4}0}tV2qe&cAjEBXSXLALvifEhR&Cas^{&A0aYS#`_4J!Dl zrYv#|Qc;*Jlk%LU!3$1eP==P9?4-2C-<eLE`$1Rn=jv|2CgmWS50XA<&)m}DTKFDf zze9%AsF-18Me?iZ^m4?!JT!9imZpRY*b>#ldW9Irdy*+LBmH}~u3TqNTJ4HhSXkj` z3}N+0C$|N^avQ}!vVlX~%s;Gj^#1uF5*v20it#)L5f~29{!FPeLo2nVkX@xE$m$hI zV~~Yd25LU=rE|Ku#D?3R%B(gZG9&tjcl9$B$;jdV_^Z2`4xOxpuId}I*SKdpRsI!> zc)YsSq=haj=ySGt^HEToD);5}-gUQrRTujfs;;i5h7Zy#^m9{pB+@rCgBK8wJuYef z0fq=B%wzXn*%HhyjRe-oo+{%^X9ak_sjx3uZ4C<Q=L7XM-@H?ozGEjSoXxTe81KTa zV=rjs+{VpXdiugZC{X-5UI91gG>fTxO>_S8>!+#u{k$mNnh(0@bJ5y%*_UKN6s>vw z4xfV~v6NE9;mcI?C#Qej*nk|jo%6iwoC}$Quki7$9PIhY!K<K#ai`6A49BE)KIlh6 zE;T`s)x%|fz1IA=QL5<|efg8-ZP)ZA*O{!{u->tb?rs`V1AY!K=UpXvm5bKWu5b+~ z$KrKu<rTVZR$w)TB_W%WU6OxvPu4Viyj<x<tTg@<ipReD-)rfzF&ASn@-4ZD{~&z( zw!n^Ajc0oGt@l%@t<i+L%aLsC$Pc|4`EU4tXVs~82;)d0l}(b-g_dTHB!{2;yt*8z zB8rRGelNVIVxsY3g0Ht+>5d_PmP32cT2LBUp^CFaly;(xCQ~DRucz6`a8oY(x_!T! z?p5YtlrZwVxb=<X*3ZFZaXzSwVlg8uC`f9a6{McqR)qdx)gn*(@rKLS1}kyy&DQ|} z4g2riKh;Szbl|kKaH;i3sr3jqe4<v*SDrz7qGssLK`LC%?=Cv(%2*AT$5Yn!BSdDd z=o@TTxI8-ksuls)Y>lJ`7(GN9w&rJOgJj_qiG+pv605YrME5%x@>G_Ku%}(w1cTZ{ zW?#Nag>p7q{v7XD=Kd1#7tK~&J_;SBUJFhaB_<c?AL{+z$y?oN;Q?;z+Qyr&D}2@@ zgrkMXYv*<PBK1wRnO79g1s7IQyHDC1IXTa`=Vxb}ssy1E2`X5sgTJ$Dy*Y=g?0+xp z&>QML9^1`&qV8xSYwO{z?ImM>Vo5FSf>%G2arWCO`=a51IUfHl3%%3U5&!8l3l`;* zbI7cvME=83k(!sfOxFj?>QDw_lRunWuKcXp=>2}8o3T*+=oeLnR&^ANX4zNOv$Hds zY}T$svC_Wjz|lH5dp)@$@d16U!)K6`TA&uN=-I*dg@x)I?mruOCts4A-)K(@_hc%4 zvTE{5BW!--+R_?%dG+mz;ih<7msG&+WVIo|u@&uQYN0zQe>PePIXHH}@s@22lF9ZE zft=2E{huOsCsm>51njB*sbUi(g>t|OAktF=^i*`ZT6AksGNMvy$b8uX1FVF_O2{)e zn3Yw6ow8tm3m#VfKb{KE)h$Y0cUYIp&eTsYvZdjOPUCpwM5k3>>oUvTyjH}LQ`vEm z*r8)pF7R+ijl+lkTtXO=$-Yrb@h5K8!h`1f>?$i9lS{We+R8$Kj&*hTcg5&Rn?LYx za*@h!=(Xn4GV{!$PI4JDtv~WozrX^+$<#IBJ2sC!J)oX~gJK!|`Kwb}yqs+GQ%Z$) zWBb+pFDTpVm60mxg;!DD&1c2@I6wL)sNS(((Ps3RU*n5I(-0Zp7C}rpZlD?m2CYS2 zaZn5$B-m8&THUln^Z2qjP1xK}s6LB?5_74c(w{wM934s3-|Jl|8t8L&UUi1Bv|&hY zbL04aT$HuV9^7}`;FUJO2q=c)`|tdhgIA0Fu&@eH{R7sznBr2EaC@wCf~4W04?$Yf zf;}w4XgaumYv#gh`m!s*AU~7PeES;qh|ILt(sU&9uS}*IZxXeM-$RDH)sUBJU3s0Y z7UV-LhNteBww}1S;Gh4U*zdkp#h$MIUuI~V<juIJgnsSs`nR8^YGk^mJ4-Gd^8mKJ zJO8<gZGD3|kpbf07YfY1on!c;E1|kr(8XZ;`1D30Sx<YadbQ0QSm0nl=JZ2_R%o9a z?1b)8k)jU@1XZFpCb)fz&R7b#%*V*#Mm%U+DD**mrR=dHV>jX<41%~VbDsvHbc_v5 z;%jxjQ|3rOp1*k*-WZRjYsmY{tGLLZKB)LbDatfI3NyvwrmxB^X2v5Jue}d}yHous zv3QSxOZSB1;^M-mRQHGD8H`V!wb0qhELV54sV&t^l&!_q`IlaKi7#qPO7LOQoZBhR z<>-N4y_rYWyI}KaVh6$<1!AtZTo_>^6-?A6-xz4ZPW#Hdh!Sl<PL$2|hnfxv11k2! z?(yCcp0d`9l5)8`-JR!DK~%O)RFO#(!*^EZ7We;#W+6dqm55pNJxR6JLeMZ-cfWtH z@=zM>WPVzzYt9Py{UB;7U7}IdUBLDNgJRiMa?-U&Mb<C$!B`rmf44sdbEalzujySJ zq<ACiud9j#WANCKTIN3uR5{<|XS}BNk=%Mo$ohBOW`WwgfLKa6qyv_Uo)RV6Fk?{D z7`D=v=<5IrM&)wQO|n-{M^}#y{zws5sGCa@EKNQgP3j6Nn6+6hk$ze)e7>K0ag>DX zQHG>J#ZAjar)Of?UI(^h=#ee-+rt?TRyAcg+VzqNPuJJiWwZlr8MnQ=M;5AeoYeE1 zmp?`g;nPbw^UXHN*5}PiD1duO+I!SL9X8s3K~(h<G0WmUnRc)|bVSmz>;wBt!y!cX z5My!^;M5RGv|9FU%_I-fxUK>bFHl*-u*Fak^7*|6{!~2!((%`y4|CG+OwLHbwbmb7 z(^mrtI<_)z1O#H3hXJw8hR79dB}k2~4KziyjwhELY8WZwpQ*W<YD`s={;V?iEiaYR zD1GPAk9Dc;?&5;?MLQ7ZGyVpJ86lT$fKCjtVJgMd_Km!XICgJU8Tywz3huHCX%A}{ zMVSsv5=xESQInZr5+uKyD;?(=$m5*s7bfv2t}972W>H9$mT<BsW)_A0s_mzFvcCQ& zs0t$|%0qEpeX1_>V|@~9-#kA2z^+&`8XLhZxI+*zIfe8>dg_r*!x77__dvsG@5DM# zaigr8gdeI?TRcv3;u$YnDhji2e*CuAtw$o}74di0?mbu!Vt?3s{aRmkB>D*}@>am) zl}<KfOE9^OA2n={+QW=fLPaxFpuOj4$Y=29uv6A0dg(wzeP1ol4QAdci=KfmwjU5{ z*$tM5G{9Uyq$kH9xgQVHan9-m72+&}-_ok<&%rX<M&~iPUBM7s5vGoRI4xFKSdj>f z&73Pu2Bpl{?H{CK?Nyz*vWS$Bp^u+7Y8wO~AbR%%eg;1aLavEf-lS2_zSyFg!V{uz zcKf8wb0yZd(l)RxOfu2G)CJ`#_>H&LdW&n)s-ijkmQr8mLbCrJ9~rio0*g=siyS<4 z9Ubh<fd8S6LOlnszJx*%8a-XL0+^t}MuSPE!kYr+j%IJ-#ThhlVsmR6YU!i(E*{u< z_B8U4mN?7d4IYFvvPSAOFp-R}Ke3mU8@mZ$4z4KRX=7|8|1c;6+@@_9hM^qV#F2*4 z1S?<pjcL!}S_qt@7ZZbUpOtZF3WjA#`LS$;ELNS`BV9y!`2c9)Mm(BjWl6$YCZ?!y z`U`s+|6mqKu?_>1*mrR*Va+n8BRL25j@`k{AE|$e%>cY!lL7$20b;@~t!3?IDSVY; zFm~^P^{hZ{6_}6%jjxD)kK$>7re@~aJL%zdg|}2d3gY~hw$Xh!{YoT5&;|W5@Tu<0 z`(g~s9W>RdTOf4ft%()P(&6xBuO%F=uPbwHiV<0BA&C_ZAN74$yrwKW7`Z~G0OQ&n zrTjxxr~e!coi}Md8A}Q{uVGTZqlLz5pLNu+&m6`>YYjGjeI-S=%Nk)BmOr^7h80y0 z#cY!qDNCW9uXnBf$DT@nJyY1;|0=iSPRg|tHLi`9_GzGgceJF0B=()ZEfVJ0>TOMS z-?uWcu|ZTi`lU>#l1dbg1-=%o{klHhcjv3G`~}O`C}30Fe1R#NUe?IFKfq@HV&3uD z%BbHgR`Abh#jY{$&yPs7f&r0t5%YF2{+&!-lHqBbNyDxv6P3=eicr6&CD1@72Sa9Q zk4n6xz*hllZKdG-$A_nqK>#({KhSF)k*`HIe~h_ZZpr+U*|-+~^FJ5^z{Xgz<ZLQT z>+r!#{N`dxI{3vruuT_OXM>2h>+X5p5sm6RyA;E6pHdFJvsjqkxrxVE`gD-I-a>w7 z)ch0qW#}=u<PcUe+2j++F_Io#DKI!?-{SfeW%&V;I<NkvjQhskHf!Xt@i{Esh-?~P zZQ5Cd>U7#@RZMx~i$w64?Y#bR%?Qoc`GXG&e`JD9I?xo@YYcIU5cK!uZB$w{QqJcV zu(9TD<Vg;@lp)7IS&PJMhWnPEo(7(ye6U6fxBsLqmn<!2Ob5;JByQY<lP}d|;`oe> zr4P|8Hcj3~IQim!QcQjz#wtboP#`csPcyhAt@r8h75T})*4pI=O)5Lo=N0Z9T>e3Z zTPDUHoD<@4hiu1C{7!!CaHAFC4KMd~Ef+6XILuuDuYsb%>FA|3uW`Q~E(C-H9~vTD zk0};!R35)3<f<Hd=igB<@iskG0V)x!38%;;^AuS{)@;OjVxIl6EI`@MOl1oz3N<rN z(09(@ai3Ca-OO#EKcX{M{v<mTBYa+XwC!X#&Hu?&6N@rgITXpmd4-GJ#WjV!ia6`} zzD_~J>9erZjJnc#%w0xz{$+5yWn*8ue0M}AZMh?6RfGO;8-GD%d`1%WN?njiL*dP7 zv8V7Zhf10=6W01S2ef3H4EQ6>o~*R>Z&&=^wPo#Ln>>pgNCb(uC?TLe8(KH)Gduu8 z?=!89<zFNEXom3D<A#7TScWU*^Y}C==+{q>*%1{G6jWke>RJ1}c;4KqIZ=3CO^l}t zyTAKTPZu*-Dq`S>`1T6yIIUhP`Kai1VdE(waSFfL7x#t;RYo`P{eEnrr9$Jr%-<5; za5erqp4jboX3hQgfiq?K8|2ofS+dS?gi`@`<%oy&=;E~MowF-H<uT^8F}YJkmnRJv zOAr#Y-K&H*6$&ni!BgWcgB-|Y;QUH@vS1ltPuVuK4<FC?&ZI+dCC0rfMLQV7PXOtL zcf@RkY_$7e)p7A+M)W!Qs!Hv*Am=ci6Z<sIo%_1p+%m~{yzH$^&yCN|^GifO%}Pgm zC(+(}vq`@kKD`Vz`hGsp^!<FMeA$MN@9+FA+Pk*_)c0sQgMojpR7aPPvIr?D=lX9u zWnCZG3b3=}L(}$k$iGT^HSimCf_dH1VJryR)GR)6?kFx0sF_>4E&-Q{Npjn`0$w<e z{lX}dYVqHjdscUy$bXqK8>t?r4y>qB*)X4eA1PlOG==#X?}QEDgBYJ}W8GA^k&a0~ zHQSbQCa>Tl!`4)tjQQ&@8sPR&yih#)%?%`iGvHdj{h7IQ*}fR&Sfv}TEdK0<t;G(U z%UUj~Gy^|_{912U+)u@Pf+*YyC8HBjj)*nOxZwPP0<jZJSsN{&V;0Y?OKEEx`^j;R z#+Ff0irJ!hraj{`CQbwksj-ys?JG0A5}$tZXP5brv`1QxrS+MuE+ttep?At3E@}(p z#G8K+MNvn-zo3FOn0q#tUYl9DHCAUth=-U{iQ<a{!}8THwV;tH6A*zv4H|wX$j5>* z0W=f1KC98tKw<|(>-`Mwhg*S6l98YM*ol~_C}d@nuoV0FKg&kkI^IVg;^m8d>~)h< zn(QNovgPBAG8ngo;}EqYgv%Mv={jVzBj#V~0b5k=z<{)>jYV!h$H7ZS_dKt)Bi%i8 zeBRiMrlr6UYw}t`%Q*{<qn7B4uEyo?^i+MtCjZI|^Aiz^?%7Cw&mw?gPdz{!I&MW) zSIhQDgx^^|TYvdz^sa}Y6Zz9mR~L8gF~=)YwBz(FJl<01Zdtb(oXvHo>fHzsHm;Ky zZieMIKZMMBJ^8r7#dFP^-OlLwGxfVoiLHhfQR;$wT|*!2-w`2p{n<P35cOeB8L@_6 zMWiq{x3W7x@f@sq!WU+=qdJpBJN<z41kcx7WzKD*09b7LQqD^AfZdUStJB{udYemq zlf^nq??vy|BwnG1y`0rpTK1cJ55jzvjR)Ip8N`1}AM;f4k2phh1t34PHGSijldQ5f z!zxEKSa4&;e~7+@YP*EDNz*7*7eReij|R4QR;n_6eH3LdN;^5~9WN$V;6E4d-?azH z^9m=mf*E`m7Dmhk8}Gxc2(l>m852fwB>6yT!2~50A=&62xO^>uXPjlvPW%dx`T(fu zA|R$0{cQIuL@Y#E))XE%Gr*PB#%%~t;3kk-HBd203$>al?m8ARx7yE}Bsg~S4H<DY ztUG)@i&<h)J1!8hJQ+eY$}Q`fF{yLRA`jph1~bGQ-ieY5&V9-?iT+pm?tETb^=&cc zz!EHB_DHP!L#H{c=>F`*QTuW3+(FmiArUBPkty%$(@;M)O-hsrMk1_#<3fFkJDMUM zU)srI8<DRkp!uEig%1?x;|_oLIFFDzKe<$6baXmoBt$K};gzBI@QXI@<kLc58Ye>G znP#`isOI~PxO5~mFk^nu6IrTy%gljFia5S|R&AQ25~S>+lvH5y_AZcLHAx%)U*j!r z6H4Q0T9~ubrJv+a#OP8+5=(cWrgA#s(rsEi(HY2NpLf-hsL1O{Y*Ujb50_#4t(pl% z^mDV~r^N~J^R$mkky1&-Bp1RIsCOsaGl6GdOq=`dgmUS;TnuAvD}*T8^I+TAe$>o| z7^uX@Pb?Wm;S%59)47xicG|kJf6r};4)^@3J)__EP)!^Z?g?tV)+zEausqzrMVYcc z%9Sa40@brawmuctnT00!=<+(8Wj!AxD&u@_4}n`vob9-_uKh931~qim#bVgs%u4`t zxm%tb8TmWXltyu<<afEHE*n}Mc#mOI*a*N)?>cizdqAt5eK@p|7sr=&!%Z6UvXx_9 zu-W|Dh!Wql6nn2kZ_icus{)|~=^xU{pKYzSOw~c9*gL#6)aPna7fdaN;Sc=*FG9P; z;_eap+7ZVU7R3l6Z&{Ic;6|#*9?z#W4XR)*tN5CF3qM#5T(?a)h=vmkyzWD6nZmF} zEXf|GbdO*0z7?1vf2+VqMAbhck;B*wj$yu=9z7}f9M0`$k<k>h%)75<bPk2;XnS?B zK7mqsTjQ%qp;hQ(2o4PDZMAinCY3wpL)G+`!<K0!Cv~}lNwL<hP>$8K^6*T4FFX7g z|CgG>^p)iwY$VX=HN3URZr9oFwT}Zy`i6uyi$vhnI3OCiu1U&XQmh>TmcR|L!4L3C z+K}M$&<U@<UwN9Z8D*Yu)<m=;N*OPn&}|yq+&~p#)~l3kM0D_8Fscmo*gHC&0+Oih zL})}&b`NxX(sL9pg7)_HZHG^Gk0xR{!Y#prPzcCdR7dk2#2fB(a?!sd;flu|<+T-W zu)!e@UghqDEw?Y5d98QU_sTYCHlXlEI%$&(;X`8%*v_8#_<`Qwm}1S>`8L1Yd9iC> zjY#!5I85u=ON#e(sWh(-nKqb`jE9E&VAwX&cUsurf_xk_^Bf(|m|m+`hGDtD2tH}4 z+|q-<oTOy!Rkf)%O##8v?X}a=H~G*3x?uE?)tV33q>V)ID<a$d6AaP?VF-b%{ruMD zi}D5*lT1t7Z`tjeXGkiFoTO|8uhgrUTgvsOKzn0$4+jblLjB>cQ*uEei0$-RrDpfO zIJ?J;@QjTAO&WWTx5Oi&B|$H*3IEL)!e~-&1HPp6Z|}LWS86-f#^Yc--K#-BvB^XS zL20A2no0eEb)z3$7JoS{T>ogSF81><9GzlSp2GGpxn}?6@I}y820uf{MkNBnvd_Xb zU9gqjIjE#M#eiT}Q}q1Ts`;u4PK0>zc%QKDeK*8FkP-kJ-5s9B1<6<0$o~3OqD4=@ zE)gNF{sk$?^*PVc-dM+26G@QxaSmVJ!KXV>%o3H@25!-6ts9hdnCOmS)S}$+PGspg zqf83`f^QMgIlo#fWHpXpA-sm0e$hu-LU<w{S>$vPJ&Vrn2_<35ZJr*B8Wh<>^77|- zIN16zYQo75Huq5rv<@QrMyK{=U^KjLho^0vzoRp5fwCF*kj1qsXRPjXz~x>-7>4C> z3Ks(Ruj!d2wfoT~9xu0m9eEG0Q8kMBl{hB2tm-n}PT`bWo8{EMa7%pcf7)wrDtQ0c z{ux22Z>dcfemD6-lrgR3Z{QcZ-{jO!^sUI7U1#G8Vn?!I;QGn4V@J8Ij0Iqb#oDZK zvo9i~`{@Oo-aHhU-6M+llp5yy(MMxxL#m3bTJk#M1NklGgKbdeb(U~`qy{ko0FII6 z3jxy)hKOOF32H}xH3#?|cyFvB)K+KoHo>g@8Vh6>?#~TyXP9e?5CTg?ovcs{0PwVQ zNZnCjPb4J3zp@QiQYAcJezaoiTc!9YfhsNZy>4j<UA*PHU4de%+FxxO^U!gi?Les0 z{G;yId$hGb$KZW)B^D1*y{;WWxTp2%+#jbuq+(ueo)CZYa*OoE<$j-ZB7VBP-3Dp( z6ZV>Yq3Edion_lCGAr1P2B7Fvw%N*5WWkaX51J!oyVy3$K(K>tHx@tbX-s$;d!ZO0 zMZ|B<rSW7Z2Bzn>65TN^M0&qTX2jprNJ!3z#_7d76YZ#cmz^jXZzQc9v5b`JL!X<8 zwnY;H;>c~9IPW05-ZtsrroopW>hD5*A8-ZT4L+`BYo2Y!z1qXCEI{&PEkVn>wPgmI z>bmxuEDveU)<jS7wv=c6!Z4ls5!d_@J2X3MOg)(}n)>fUOo?QIq=C$~LH<UqEQ$TH zdGm|(^CQV1i5;Ub%yK~^@<BcAuNW@UWvC2%hK0G+gRZL;lV}L2T!K{6{P%rK$6yti zuI?VcG5-vZ2tWtKSFxn*Rr|>#g1uwqlu*`wXh(Q{jW<Fj+>Y9wW9g_g*1MO6Y$Ph? zuuERzQHbOAMnC<bs4wI4`SzDhtV+u{%4CpuBM#(8D2T#uUle}<O4Azz`Y$&*;0i(= z=&DIyAkT8l{)@)#+w7L=gfR*sWFK8Zh28y|m8)3fH?Ok`-ME&mK(^|y=ts$#+?m8u zH<#`V#3r*tzXoGBHr_Jm@O=M^$%p!bIY(~J_T0@dHm-%5R&yASM!*23iqOR5($yo# zVE4O3FxD>N$y)$6LSZk+A3bf{eTRRg)FC_(l~PYU{&Ic#Jq}(^k(b9BwmYit=1*Yl ze{+2jnBa?EGnK9gkG0LO2FDvOgJ+nk8|GV|?_BK1R>n;*sO2M{PrDz(pt*zebJD8D z21lnDgRKg@$BML6m*t=4ud}w>F$8Cj1Qp%v(40MzX&zjcj??=H6REguV1ly;8b&A@ z0<XtaE0J4@aoJVjq)u48E75sluuGzTx+df+302rGp#P2yyRhE1k2T6t+iQqE%IOv? zHpkx-=!YwL2S;O`W#EIJW#f&kBe$9~`f52}ZgSq!URyPjgeIZd^)*2k1bqyP*-Fqp zaIZNN!N;ry@)R7*WgFB>jcIc=xZU6pO#S-T3}4Y`{acXNL~?YAv)%Vslqi(a$N3@1 zrI=yUmni3ZsvhJrM2Ywqozp3=aY!4t3b&MFcqkn314STxGwjDbi?%WS6nk<R`sHnY z?TBZ)TwaFZO16$t8sRZc{*{_1bpWOd+gCnemx6FR){*7<&q6_ZpF(YqWe`!<A5*Y5 zB2po?3k$<qPVUiuyzU?}ZBj8Y`-0cpgfqL7;+p&u<K~I|$BLETT|{VbaJXUr%>pEt z-(v|j-Hj#1@HrOoU>@9JrF0^5w5H5U88kp)Rw7=Xg@e?B63MRYH~l2bygV5+;(>~A zg@&w_sIwc}ZTsPcw|rt7?f%F8O3c}i%bjoy&fMwzQoQZgAbG&Xd4cHm0tucl{V%Ju zq_Zn_9<n>S0;Qr<1*z;5JE*?R6Vm*Um{G9j@kP*>Kc89V$#spBYxDS9%~~uuT8%&^ zor#`q7~J33rWFCJc{a4i)qK}1#UvGzO4MbTT@~9zSlwLXxJH}BkhYM?Pj1TPb`i5x zplh`~O>B8T<r`yHAdm0YFK^PXkf9+z@a?^GLyLK9RdUvkVpBr@<%;eq^qkRch<f+P zolj8rABZ*rh&?edmsXWwuSF)^YEQY#C7nk*!jfg(b>y^9fPM8J@XoQ(f|6iUpNLY> ztvwfeLz>rlPVfDO0llG+xm_O5E|(Ul)-qs*&&-#-rtu5h;dQEne+rPj5)PF1Jv+E_ zcuy37<HjXNb8jaC9edMXu53Dfwnt`eDPb<{&<75gE7a>F96jI?0_k1Vi|9{tE17IM zOkLbY79Y_-nu$O3pA({$aU``PuHg=49oxjl3uHN8uoG0aN_XvX`@rmrzeXAeCE?V+ zg@Akb78hXRmX_9jU^fKE($)TnzE~8Eg!wO8p|)A2P-lyy?<pb(W|9&<)}zpli1JeN zJjF;oO2NO;n+#^U;nGxhOQeFX=GLOC;MsWGZ5{&wDN?$!idKmEU68yk{`RpMQf6M` zUqY=A4d{fN@R=5n*9hJ?n+#h#>t=?tGSPLv+jxt6Io3Kg%abu?=|$3fl7{n%DnJ=@ zAc|31Stu4S=y?#!teY?|trhB+H6riH6la}Sv^P+lZ)5B!F>1K@Ci=-v*EAxL#Z-P& zdg}!?YBlO&h_Skwh&I;{S~EePrhGp~s$ld(N*vI&W=LFPsfPnsnI@~-`aIp14$dbZ z20;HHPM`2(nqSzIAFNQDk)9@c^qyP(Pf_Vze;f1zJ+pr)!o!gsr1>v;`f?gtdOA<- zf>TdeTE#m60$n74mxZRw@|NxZIW`NNi!N62dOig{PUq1~u_ridRYGqfcaE%_t_j-l zBE;=wBNKc9<SO5Bzm;E3h9Fd?7^1H5Z=x=`@y;zUmDtspmCY1tS()7<%dfxsWTnw~ zRDX)TDN4YNu8w~$=hMUbt5JCe-yMZ$>UkX~0>3MK8}=`-4o5;TY^J=-O5Q;9V<WS0 zMyP8BW-D6V0j&L(2gtt2Ue#lXeZxW+9b0eBDFo*Nw}#5ulw^SITAfEHIYq}OGRi$e z3f_ALDia?{0JCGdRFHLKzoeBYvu_`;v%pHSy-<hbP09q`yDl-)9J8-;!{ks6k+6SD zk*QjVJNf<wf}?DHC9FXHZyl|@S@ZY~0*;avWK1~`$>KovET{gHXgTiHz@^RTp&MI} zFkOR&+s!;enTAl4gj4%SKF2SbiOBFFiJ&iljA9_$B_-vDTx+ur9-P}9LK!3XZpzat zXMaFx{T9eG{3mhi<@wvua@ARk=jO&mn3!-@U+FOJYnhYLXu_D(!EsK`5_Jv4Kg`&% z&#__zJs)a{O4_9B5pekN_QZ7WJNw>Ic+|&eHos|bmbIeTn99sBcU>}jzIew{HiDvY zEk`-xhrnwjdV7iJc3*D$A4T0AnwC7^-x@aG|NYsXD>g2APwwaG=cc@;nyoJ|dAXOU zT9uDi(eAo(WPJcDkBH64cBO(Fi~QcORguKmb?32_sgFNnhBP6pytp*xva!W1)|Uuf z!VnMZ3FNV+P(se|wr42du{4w)`#$<-b~H(>*1-LlJUI4P#3_64KrAIbfR^0My_ycN zBy*NCv>HE5(<0y1AesrmtA%ir0-!kX*pbGQvIW!{tK}cHY+B9l?L$DKo(&9>7}Lx& zZ8YSqXZ|?E|5(DR$lTNA+U>FL0<(M4LXLJMls70*{-yUj2f3I1;WP|ThAUh$(lnaT zc`qh$X5}4?>8ax^ou{}VE<C@uP_V}s!gE;mh-aIg2ZJ{5to_};rnEZ96x>%aANqoK zT=xFTTg~$9xiCw!{64#ThXc_Xps_rFM)@(7juf!6|0;>s0FghWtv+@qj3038+?(=& zp7nyu;|PIZmi~_s2hAn3V`y3%K=26icvzDu(R7WSVS=7v`ba#K1`IIXMxq9LK3^h< zV9Iw(Mn4~NSo?=m6z#iEX?#9=vf?U_o^aH#V4sKm4VWcXEe>VJHnb$NqRi^d;-)G~ z6Am<>uz#=aRchdV*nxd(HJEnkIrp6EmV@-lBwS~x#-Lyg0JRS~c|^?*&Y#9*7V80L z3I<~DJU}-LI2r-ko%le)9Av@z1QFux#1Z1&z?nBw{h$$((R?&ZpW_15Q6{n(`JYRP z{7}DX1c}l0jbFTL%I?7!{Q_j3wh&*k?xqLa8)C%nb?xV7iqfJw7Png;i=Ry-T3Hxi zeLT7o)!4g)iJ}9dK$#hprW4<6;#;G<k-|G3^r@QR)bh_gpU6G+vNU@{s<V<0XLa-- z1sLHSfjp}FF?W&X)2!wt+e>{U@2ceLAAZil5!PGe7&tcS;IP*Oe(qJG_GyL0g#q5D z8K5u}a*dp}bCX!+t-x|tL+9KLRFy!$cEz}4M}(rq5WIlwOz_GloE+cH<nT|0e!S6s zt{PA`m@MFS0hNlD65M%*fL>8`+V@DEJfT3{0ZlL1G>^EwT^{0yc3iTto*9KB0B9KK z%uG9i?#dnYU@YpT9Vnd|Fv@rk*u<<jkeyX!_gEu&S)~n*Ii%-|Hwh?wuv~cO@j2co zZN{iC1dT3?MS+jgaVf<4l{uiHgVjo5;vg;!(Sc6=08s=O7~rp=@6i?ZmuMRA@}wMg zeOL0fBDXT04hH43{K>8E<(~6Yzu4RWG%v35^enm!8^%qi-siA~!2ww`2M|1aI~+T> z=MorLetAr*{gMEZ5NANVSn}Wg<?#4*Py#%9B-;s^kCbbCT?fGn{KEu5dmiKYrf+*D zz6>0n)aw<C%#&kHmMs|a!|QEQW<aO4PcZ=Lfr=^4%8!ROeU;cd=I7*?iI+V(e7ZL6 zRTF{*%0~S7O)HJqyG2OcAj`xr;}!I!BF1wtgx~}Uc@>TLQd|#_PjiF6t6=T7D=rSB z!X1ixgB{(l%KEF$s<tg%4S6hSY5!KfnBo`4F|{0m2Pl=ZG34~0b>{xoe2IuByEBD| zzdb3`UR)V&#QpL9ie>S4Yg3vRsWNLz1`Lc>E26zx*fePhxc!?NF5YE0vM`?g3DJom zNBplK%a+T+5iks>)Zy|a{6ob9fb}WR<LG46tD_8}H349bWXjN0GXw#m6iA=1nLSM_ zlwzT5fg-{*T&WllZBmO@>X7^eF0sIy%%25tHbf&jPoXBTw>89w?Y}gxHnplGD#=T& zAFk{|spU9BaXzD-w=mPHV)wT8ZK#sBKExs}pvE-wp0W=G)-5`#jE^N@0vcVoUD8LA z|0eA*$vv8R%;D;yLBH31_Iti}OB7?x2-}XtYJoXqU#$5dI44BJ^uE6%62NJ6Hq;9q z6yY6e&#M0P2<}&kC>0<rAWbn&cw>CVTZL?@H9Z6<{0v~@d2=X{?3hy7v)&phQ!h9v z$K8fGi$b(jPNk&ybY8qV%oED_k^IL$;an(2s2_7irr?($&ov6Y{;H7Y<dh1na-Q27 zu=0jkcJLe;<m=Tt3Ecbo<%rqP5icd>jsENrL?fYLgpbM9C~UUwaWD7&to`V0bty=7 zdt*PyNew``V)VKsie$GJ?|!|(O%qeHzWPKWy&zc>;o91FnsdK3KXn*qCGv2g@sg$c zhri1>M@|yfwSW$kzikwZ*cjx>x=w$DTJFhLw3H@nTMBa>?=xhDq*jiX;aC$AHhqUG z|Niu5wS7-}xA`g&6)?Sb$%pss<2pkZ&qm=C5~6SSfE2U&{)U4ASAhtgK(u}Pu?XAX zW5`!6WEHKM@(jUns2P+=n=K8|V=d3w9)UswTG>@Ft*$qzH4Jow{}tJl4Mzd(&eMG( zpprMd=r%u>FtDH>%eb&4dn1DUo4N!wUxne;V-0n7en&`1=qM?w%S9X}$bhO2HY}@5 zB#=_|MKx;ufcJfysTziC@Y>oO8EP<}&a|6{F##V3KWbjGo+^3Ufz~nFNvl|MeIc%k zHCA(*Hx>sCB$$uX631I$4nv6gPVTk(2XU8uK*J1Zvic=ub~QB0$WJ6}ijktNQmel2 zn%ix@ByD(DlcV;wme~#zel9tb<^(#IehcXD{yNp6tHZN_5rrlex-aVV^$&;saTtAv zZioNDDCH1&@3E2G;~M(WaTcII#8eDD2Z{A=c850*J5(*^J$m)@x4Q2L9@bxs+=^gg zdvZlWurlpH#k$)`kwj@07DhKA9(D&%18J`An|SsbNgZJ!p<kT=p)&sYXqSNvq<7{k z8@2fZ7xlAsmG+#2j`sN<d#R#Z>KHmN>L}77r`x^4&$JR&#!Z<6Ht^mylGuS>I9l|y z=W<<R8kNQqJ&%Vw>mMSLq6la@{Jh(QdFguI2oegwP7^B$sAxWlphXlFZ@u-*{yXCN z6#!!ue>uKDsog7lr$=g87s|eRK`RHmdY!%}`G}(a(fQPH_4~&qB0yot_b&9!R5RX3 zk3y#6;nd~+z4QUgICd#R=1Rtew8g4O^vN9NC$Wn>jkmwYt!!6>QmTQWrm#1-8bt8# zT&-X^Ma=9nvsyK|C#Wd0CF9~JUH;Vh*XvSQt8liF*lpV{Q{x02(|z4J9&!UBl8EZR zQIPdw%lm#1@MP~*q%4{)%1ea&NKndi_Y}EyMm^VAy$^k0ILTlHW=#lib%-Q}ZvCRB zY?X~BZeHwkU+BN+t-U%M6gA7Yyv`wvZmh3=n301RUft(KP^ljgaMo^d6M)4hoSfZp z9ciK)bURi9Ich6UQ)&8I#DVE>sdKqK5lJ7!j1`+u=AP@F3HCQ9{C+b>pNBtmA8L}p z*@~W}#Ez{_w*T-dZ^)|H1qP^yMCDuzh1T{l`-{X%9ArkM%NNCkWVXaa83G<Yp`~Mh zmga3&T7sX&0AAA9v0!HA=kf-|f?Mg^F^)GVcAc~8;crnp4W901kA<yQ3JLwLf&bK{ zZ|Ozld>*V7RSCRuH4@Ii02}{Q0J)&LXnmU;Ite*W+qi;Bd5i%QNt+3`0h|i%8>Iqh z286Ny0=>|H9>1#J)Qp1lKpHSp-s>(#1WyuQ9*P$HSVe+SPq64~5<Ns2bEoN?!8=B3 zx4T}6b(xMM>GM~yL{Qn!8{StayAYv0ftEr|eLqlP{qon6tBXr6Fn>)0vEnW|^%vWa z%`F(jLt9g)vK19`qfV5uvJ&?G!@D&K4CKY%rgD;e`}`aO^(#WnbJI^OcDoPwZ*J-$ z9bXa{|B77yNOeK<`g}S&?1`}%p{l_D@l^r%zFSOZ;wkzvcOb7H<&KRqL%w;;bl$AG zeeB{q$8|ykRzH?6|IstdQO<JCW6_X2o{e?5=<i62)k|Gnp4@RCgGqI26>G|3>dlAv ze)Q{r&B#kVP$XJEL?`T*67m26|D{_cWicZGbD~BTS7=TeXEHMAs8?Alepy68EK%{P zBzu?EFVG{Jr$2cSFl`4JrZ5okM0H3;t?>71%LZzl-;U<`V+>ImhBfH9>e%7df>brQ zp9PCKGxp|d=`8CQ$m>#OOIMv1g;~aoGV<}dh&r_IQtRf~2wAe7`n3Y9l$@6ioOW@) zF?^}P?fQW<&g!7CZig!(SXqrLR=`uR84XP1`-h1WU7~?IE-LHpFUeE~UV730R;G`U z*B?f58O=s&{f1jW(--+Le0xl5=j69r6WKUo{cw}AAS`r4{EH>bDn4_WAw#K&{FFXX zp}#S>D248Ds=)jt2+5u5AA`ev&xm|U*tXBhF|Q}-@Q%B@PW*Ann#XgIDXq}qgc0Qr zzOKC+pj}X@V=!Z>5TC3I*So(t!=PR0qbmX9s|W6m*f1f;_n65aAG3DqEghql8!OdW z@vXG->~~sR@}daz5c-b}nlQ<;&(uaAk`hKVV($rAw$F|UkexvIM)PImW24cZdPcB0 z>tAF9WhdOc@5^>)c=^Z@_*O-%Jj0z%T69AqRaXlErR}x>o8uF8@smqP;1UT=peDAJ z{-uG3)$4v{Fc4pqzgv31PqQOWn{+%vnk;RfXiDYiP_g*lYrZP>K(*X67pmfZq#8zh zM?KzSi|S6rQlmI_P)5M)VKt+lMXgo%zG?fz&an2sgz`PSLZ+DqvIvvpa>c1`ql{d< zeSxUwP_;08-pQ*J4}?8Db9S}2p*WJ4RVn!94iZF`3MZCX_hC-_VS%V-(MODpgq}BN z<4kd!$(1^!_a#kmHygXA@Fc^aMlnY1IzcqUwlzeaRnyd8h&!bBKWgcZktRo*{_V!^ zKJpy{gHwivTmcgyFpf;sj&23GOKrcvhW<cF!^-<QcEND34{ggxprg`n^*v`|tiv7z f1%QL{ee&Md*L6T}cDe;_<bjixP!KN@`|kHYUm#tn diff --git a/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/logo_ckeditor.png b/vendor/unisharp/laravel-ckeditor/plugins/about/dialogs/logo_ckeditor.png deleted file mode 100644 index f186eb87a09f826311e422cbf08cf6c98f1b2d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6757 zcmV-r8k*&aP)<h;3K|Lk000e1NJLTq005%^0024&1^@s6+y&_i00004b3#c}2nYxW zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H18RAJqK~#90?VWj)Rn?XMKl|MG?t3*+Oa;oIh%yKoWEOA$jcAM} z+G&W1Lo-!5#$GWFNle6AwrTS-(X7OFs7a&gXwY9L(N5yjY8+6Y1QkUTL_rXtCTf1e zy=V6yuc~;j>QNL_6==G?Yu$B+ch0$I-}QZapS{mM_lm0WWx%|b2spW)k5%mXp3gUY z%Wxn2Sj6@2Sa;H>J%_u0eds>qi%Lcj<U8wk4{20;nvdjrR?qUS;#tMl#NJcIw;BmJ z&WKerhF2Z#KKG$}_(GBK@|`;~>uW=k)cP02V3}_<)89)vJWVDeZKU*-Kdhf~)J2E8 z|9$8l4l5Z8!F={<?J-`|p5v>%#<Ps~l~nDQblgrOrtC8_s@(FaQ{#tCm_BqHfkS=6 zYj)HR3i!;5t6l8-{F7D1D)=f`O%TqukgV;v-9CA1y;d8^9Sgj7sO9NH&!N}Jc<p9F zIay5;eQUqvS*{2w13jA{U@MtY$Ywhyo!_>BZ%Gi@g7wY$^pWvPjovWR^7EaMkx}7H zMX!vjPVYG0>%{b?j0N{?mRp^f*5kP9j&1Xf9nsUm^x@E<N62_LWH`0n?3iya^{ig( zs|M1K_ee{q&PdnaF^tO!GQcss(-7so`e=u;t!*?#$*ua@adkcLT>5Yr&@D49AotXH zH;dKV;x^T6`r2}wvhUpVwq7?V@s{JCj~U3Z8Ns%DK3CPm4I3*GX1ZPbt}9c47rXmV z`fzyAEi&Fy>)q%nw<XB1e<#CF-t69MnFhX+6Jm0<%am-FegT65*L_&U&6}#p4H{g5 zQ~HPb_7OQO8s3k4x9#cJzHh%v9~r;2IA}9n2!R2$Uevd0x-=G4#ZNNR!-IyeWCfX& z6=Y0C5F@b1v#hR*@_u8CuMNtif57ma^`BE8w|J_c@aUu?$a5V|d1D(*o=s_ARby52 z$AuFm`|xGML2Jf52*<3Nz1pdxSxzyb2xBuHPRI;!VrG#3E!uBOv&V{xMpo5D+1MCs zBk+cX7!Mqu$I@Z__~j=x*cNhMw{bUDj_i-u(spb639gDe=!Fl5amLskJ@}0JaENfw zWUPQlP73Kd#sdXqW>$cySwW5s1#ko+R(ZE6&YSfy*3?I-iurBY&2Nc0S_|(s#CW?t z%6E>;Vdb6(<+TwStk0&#IM;62-C>;BhM3L+e%AxfrVoc0-SVdItct$iEA!Hs<v{`A zio8s69ih^*ywwnAU1OXLjWHrN-Sl3^S(oE7g4}a_9=QS2;ojeWe;1GKsKc|0vez!F z@@n<jV^2M3q55#x&@D3lyfSu?r}oj-v0y8StW|z|WG1<e;jeolJXIYb)|F|!G`|fG z2RMIl7Nar(d>-|wjC-6mAd?ewLY(^gRz7NsB@+>VnmR9}3ns+6|9JXvDA6r%+Nk@I z)kud~l;J_cfPmq@Ya%>Z9Z5T_mwepc5pFnU06U@{4}Mn1&WPVO7W}v=&Rw6>q-f2j zG8=f|<fAw@FPq;qRwp{s_McJ)<T&Gjce?dt`f$k6(f%C(Zp>qsZ#80Dv|;N$+|p{j zpBm0dc5qt9hF0N}+zck?g!t;fOiCsUVQglw(|PF)4N*RAjx#?mYp+&J+ADmcJ972m z@Ss~{R8WhS`Knm<Iy04V3xFkwc*(Iyo2nr_Rg6I4mTKY(MH7c``hbjm%vmSedcLxe z>HWirm}HVx1VFf|J972m@Ss~{1h8rzP0YIN)m)#)d>VaaY}o0b)zWFYH|rt*<OU3v zt>49_#yEG4&*Oq2*?VVo+7bHM%0>br%o~)|(i2VAjz<oBeoJn5W$VMCMYqWqHQ{yb z3FfJ?zA4TLnL!{;mQA~u<j2h(RdJuGIUy=y9!uW+oRu}r+<fdn@?56_fdO8wY9eBl zv+@#TOflCA*7v7(SGGPJT6CL?cMhddm5<s7yWeVzlVOB0;b2?3SUSzvYO2fYqD;#T zVXe~STYmasC4%tdV+W>`Zw=!_tnx}#6JH&ig`}BqQS~qBu55icwCFY&0erRhv^TwP zH^#8Qq^w}uc&{_3<b|px1_d3?8JvYx*dFot_0}5B8<NeO0hw)M#pL1Pvz3kHxeh1g zhFdQs2C@Lc#RAe3^7Y}+phr^3uGvvP*2e4y?c<0)8QG5<$8gQ2s(q)BCB+!;pE!hL zGlI-tvz^+w55V81kH8T)b>&uKR#Re%M`Z+f>$K6_vAL2vKB{VCYHOLe2^`fl|JYBv zEnpJHj5#-y*}ry-1LF{_G&c5Ld3kwda+%4qW{twiNk-LwbM@;_rE6#Q?AaO3ahZ=% zaeP}@UjD|bWo2bKk%-AkSAH*=8m_wPs)hsUb5T*zcoAoDe*V&%0168W&9Gr3FU-$h z^8XK{o!&-|XvW>cb3RHo(XA<DZ`Q{c9&*SFIw>h+`!dzHZLXq!(D1LL`s1q-vz8xi z+|99>F4v42&>^_JwK>iQ4KdEj%WmsS^4Kwee@0KpH*em&z~mXTub(n=_NJTxdm0_l z^@u(Jykw1AF=fW=&!^6qRn%HuEa!;wM@1e_*WR>g(}EFSpAgYMiSnRtoCW~j*V}?Y ze`jZ#>xLdU(Ef`!CjmFMo(~%~@@mj0ii#ebnOyGfyC2Uu(6$d0MMXuy;^NXJMMb5T z7ZsJASz1~;1E9FL^r{{q;|lP7<*zo$qqeH7sZUITOv!fBFEL08^H^0jH^nL2UdJWF zav7iH;w!vb-OLj^>$q<8AdboirrK%XnTiIc<c7%$Ivrw;qV~$}$~JA<$*0scM%M}4 ziE<oJ5Bi264}m-hd=3m%WPDfJ6A@!g=n+)T6{t5>&sn$nwYQRrG^ujozBbU}?#dJl znn!>i7ZfaB)q1U@q~xEov+MrU-M06Kf`WoL*tM!`1wGF9nNwC)HcW)`du$DiMN53u zbCZd-H4<lc%x8MP5dT%tn382<(<I<pRet?RHRlb<;`VWQoVVsvd{u7wu#)+C+5G$X zA$)i34wAz-&r~*Y?J)y6GcSurccdnHTgy!O+vbpd?YQW{$TV%*teMuBmjDOYgYtv5 zYgU$ZEO+Wr;2qhOHm6KK`F=&e4Kyio-kaqsSG6k=FDO{rtE5=8Xwe?v-;=MY%2$Cy z8V(Z?5wV|po?Zq#-y@n4KsE4cx)ie2^-)gD3KA6Bg4dlT-ZpraTR*I1YHpZ?!}<ZR zE9&vH&6S*!m&G|rvn~LuYMQC@EN8cv>b<5sag?Qc{K3dGX3V)EEAk)-B5n%c9iNVf z0OjScY%4E+y*;TqVCsz7cPf$(L{;qtYgfPa^1<}&%MMko7IAi{@`1JX&&IG7%=#YF zjAh4VSA2J4RfAQ{PWF;l)kZmQP$nm3xxBKcIW^lmjaO|I{(E-=FIF{i%b3CZWmf|= zai7v{d$@RbE_WP1gcqwDiTDZa=vn1|DjPXtP!^6zA_+GMV)O#wt+bu)1pNlq-lEF! zfEsI;tS(>ud3T=A)S0txR^)mhF6e@_Yu<RSJMAT-tgI}@S}s)8Nve!7hIc^!ZmoT- zprD|sefi?z;;~?^h{b}p2ZND15$8JKBvpnL6_xxDKt#O!{H4E0u6O_a4-Ypcex5N* zQk9XQ8%6Z(P$=}rOE0~&F}du2{KvzCTsQv1K)~F$c=6&b4?IwMrZJo^B2rLL@UQK< z^eFU@1Jep0eV{$T)-^<lT4iQ#C}mzc{TdnCmL%Nt{%&#{!%xQyhL+#2->{3389}Ze zJt!rN^K3;Uxk1B>{w*P%7D6V<=)sK}Rlfxw$nVR`-*~k<&t>ZL*;lK|zmZrTe(}CM z?1MpZaq-!{ukWgAG3Z<oty5*Ls{9e0jb&wJ<J#9zH4}jEJC4n99A`3cB`{Hhp(1jH zh+F~WC)X({DJgKA_y!Svp~{IZ_c>El$|8~2`jV286lXCQjN}2=`@TP<xVZEdV|WJi zB(RU}OO_s8H|@pzC)6=NNFEbLedW#iC@1HJ_d7M1tSz@R#rVx9HGKb=fjqLkmbJAJ zR_|%%ciU_E-l%~*x}%QGjR^<oxrzo9I6E(!*QyhWV6QWyL;C+^{eV4RKe48(a?G1I zFRXA}OFOH(^Gv2ppK~d~ZvaJDvToJNv>x`spt!hfA(%e^&jkYJl*Nk|w}r8aii&c< zxySeQ72vn~YGdirrK^Ea#l@xf11II@FFm<^nWCbS+ePHZB9s^-*DYDHq`vjHl9G~R zROPp-@_cD&={J`yU7GSoQ<a6lMIw6QvSrKO?@XQ^C8INN=-bgfyA#A>FX>k9i7-1i z%rO}OK4^$_G|_E&kb48$3f#4&iUmjJ@XHB9IrEKA@D*<Tu!8f3X7h^)L;2>K#IxTW z^I2OPVSZi~w|tP=Cj~qwI0Ja5t8&!WM<!sz0Z{cjeSrIci)a~%;QK9WSFL=w3w6Rp zMJ2bU|4H6zb#Csx_n{+PSMOEjPx<*vFKl13prD`@xU{&q^jE<32P;5HNy*6~a+9hS z=I1Z#(6437mVI1USU7jsuo2H&%LDh_ci*d5UU_BmAOHKRW@>)^;{86y9yQY|M$qi5 zZb&AWugYtCngN*8KO;4TERBgyUP2J@l^<=aU{b#ji%0ecpepWj>xUK09hAw1N944X zeWs#;i8&!ggo7PIJl1mAfykkb3~M_Pr#r9P^AUEm^kvbE88eRPLLFB`7Ny&akyBa= z1%v*zs+d5)6m-^DFzEac*nF@8sLCzC`kgy>{M)|DEMLCds``t7T*q<q+x@({pkVRZ zuH36f$p~Oo?rER5xHIarsVUB!{;8%q-TQPPHE{j6-3>fb(ZEl}<T2QFK;hv}YboCo z;b-HAkkzsz;pyFpNs0M+?Iti1YW5;2EbOwZKK_SE5{*6BX94)WHD?1=0;4^gr>9Mu zw!iR6U4H)3QR%j2%a*ihI1wfTuPk1?xT3Sh7A;y75s|+htN<<dd2;#k<z8py3JMCg ziBR5Bz74AS$FAP1$H_=M`fNHc`Q@5szLFgx+mR0A!}duK2_ae=OgJ-PBiuG_2$0B= zyl%rTjtB*~>gWNeDsR<BSXq<E<e{~lz4O#2JbmHFu8J`B=%YUZB8jSWDVV)4yuIet z4-h#YXa<>Njr-)hdGo^EX%oO&CaUVYT`8+dm&&zAX=&*|RgUOt{X{vPn0!q{y1Y`e z$H_Qz>d24NIVFFuZpH}A8IaMIO4fdBH@QM<aC>WWoV&JEanZ1T%o>oGv3k2M!ut9M zOGfr5Ac?%4`EP9FKX=roUo@@et6i00#flX^urYBamz;3IyzEXZ><4RCz4p2!0^L4v zT5VJGv4sm4I^Ahggq_C7@UE0qwOuOL9{u|Ds|A|6dLLjo$j;PDc6V3r*W+Yd4%VtX z(cV<QQx~Bo?sM9JjI<tfGFo+8vbp}%mTI;%#rW}<!EM*xsA*<cI6$83bR?jrntK)h z>H`u)<@T1NQNhgU9S2l54c=V+`csNr+0vnJZr-}RXg^gt@1DwA)^ajk$V?KE*<ENd z0-Bk8VZnk0KJYH+e(M(&76yRnw2SGANNpGH4fKYY27Ix<ZSO6|Re8C(nNtU50-cN# z+hyLgB5IX|Z|>k{n<^7Y5F$*>3E`;{wR=mam}mA9Tad}}&`Vu5k89Vw_5|o-00LJ{ znLg*&<4-vyXMgoN!@AY46|3s4EnQkNWyY-Tko++b#+H<nwGSYtps1+y0^qDJv{wl- zu7y->5Rpe!`RAgdvU#0VKJv)nKLLhXn?5<DE9f0EMs;P!wJz{NRTKRKhDkZ$6s?)g zJf|GBl-bl6V`WV<VI$me{18qVn8`z*)>74yZr0w5PCiqG;NYPX4n&Ti*lR%F1_aUX zWyb7=sWa!?I(5dZZ%>(d>ZB<%W}iM~=B(?c%$WV3Q)kZpe_d&F-I~`66<V~S+%#q8 ztm_V>Ppv2@Sn{F>_p92Um6VjFjTRIa7oROcu`28K*Pe)e0=P#Wd34J3>5d(r{u+2q zM1NOY{NU;7>J}B1UM?ax19xA3`I7PjmnMN;d0FVnStF{az42+aRR$&}LA+eugr~~9 zL7A+qX-YNEN?P;WdNLv$<m@3?%+Jf>^nsaVIEF{I*K*VQyHani9S>XgB6=*)r7#1) zs#UA17A{;k^`nose@}%%V1%kJ2Lbh48c$eBRk}Q@GG^3>t2TeK;|S1ipz@0;GiO&O z#UL|FN=hH<tbQ~a{K3^%Use?gxi>^2@&2m%+v4J~e-YtnRsVfeGfG5G2lG#=dSi<d zvCo+g0AtLbeP0_z{FjP~N*)H;83@RI%a<>&FDfd!Sj71~*cXe6N>>=8uZYMt-{*K^ z___$Efj%4z27cPrXOOlJ-KpFed~5G-?=9EFeadSioRgQuUh0u{9}r>ofD8)9<+1XV zQM@;IG<QuH%A|f_{_t5H-&p-ASFPXKW}^3Ho|AWCOqa(mtyr;Qh5zQ7mA^7JFkX=Y z&|d;i0ULmqK}uA)QN-NYR>_*m7LEG$zS;~2^df{mgT90Ey-CyOoX|p=4XT{9uMHS` z_0^YE16+FPrH%RdOTG*8O;AzQAA)&GgdeG@Zwwa{6fFBCNF4aM_5Q}F0=rz-w!P?J z$&w}Y#&8Dkj)+_$!gbBf0T&Wso6kPmewr%Rig2{5{M=fe6yXLS4svdO{<42rv}jSJ zwLKBBpgVvLbL0C$uf1UYE3a;wYO&?*-#+%OBXYQV!VqrXRLNZ*Cl=thb|KF-oH00y z`FYu#F*u9dfWa!Pt&Q+ZMFUS)H1Kv^G<EKojzmnHYD(J*b+IPR`$vD%L}_X1z@<x< zR`=#T3JVL(;K9cXxcchLdh~NAy++0{n>U97I|GsSOA(B~s@bE+3pw1kwT327ag8u{ zP$rXe!w69CSzf4Y<mrk=o~vk}BIb8U4eKyIOrsT(%=``~!1Ttmk8c-t=))HYz53~m zaj$GC_bgM}uXQ;l)8+S*hjCn%+g5f{V~l4j8hNIof!C{>iK})r;YoenmsU(7VjXb5 zRap`L`uMf&6lWj4fap~+j(PdxrJl7VEgufTvwLS+0LEsyWIBdz%`qxtNgi<ra<v@q z$2<%A7f&d0iM&?-waJ}Mll9??hhF{khIRBg-)nu(cf0o}DtyooBc1o0?(dO~h$`~2 z5&Ik8%3q?5<3G{`_`M}dA9^3XO2#eEKeB!JoQthb;tjX3Z|}L|Nk{Xn5L2|wDvw4Q zb*(O#a6n5o`|!m^uYay>*#B&P#It%yvUyHUg6Mqg2f(Y=^Y7P?^J3Fk<97Cq{r+*$ z>tD$7)I4C-yCmH#OFAN|>Mp_D8xZ|dO})SIA3YS)hrQ@^%_txPpWCz+)srAO?$;Iv zv?!0M=))!)UR5)<@7vM;S8+(bsw$7;4D9#e%?LNBl8x||we~&<^X#6#kKd-tvAy1j zK78Tvh5FufAO3HnyJN<-T)M)-LRr3iIRKA8{<r`vSg?SXUV14d-!3O7r$heTmMvSl z^tQ0kqepl6=hWBNw_Te%cdkDEcp`&o!GZ<a(l3@TU!FQs*oQA9WW|aVUCKDlo;*1) zu&OE)2n5`SF>Wv(4;f=z-!~x<&-F!IV@(JMiVy_fwIV?Q7YHH}L^S{eRgGiNfQmYb zaRh5bL{!CqO(LdIRaIk9Rk0%KTPwbZ^%3y|Jgj)2aUhN%t`Jv<scI|$aaAW~9Zj68 z#yrP~x~ehH^P=&1W-KEk7TvOCOP61N(voo6hh9LZnsM~#(Iyg!gu~%*C{|Gs@?AHK z=Y@>pgn+OIAtQvWF(JoFNR17NN=OZ1!MLIl0_&<uNDvp)RS{QIU4<ZsD`)_f0ANsc zM5HZ~NKq9->j$`ez(Z_YAucL0MPrJ_j3K5fQMDQq(I}XhBSd}Gs2CeDzKyCeQ6Oqm zqt@D}4Fn>tG)KXS9Cg%D(NHK9ZEkLkZr{GW&wD>i*e4k$PMqk})YOE+;c&?FyfC3q z*tIt76ATG9EFxinkQF~{tO={wkYd7OG>l5fs)j{u2qcUlj1mS3qY?rQAsQAWtU?F~ zs}e#8X{#npth<V#5(AA2M6g7RNJNDwsu6^!C=pbnszgL20vZ9Lsv1F!tJomM1XVTY ziv+~O@eGb6(&tPJjHsG;JTAVUEh9#ZppTG;2m2)Bd+)vHj~Fq+Yi@P}!Jrpc5r@P} zkc=kwj)E9<j2bJdh=_`+3W5rP2&yV-P^+jfsD}^(Vv30>wn>yA2{RrL2q<b$5kwV4 zQS}i#5_RLM#8BcQ5>?fh8ltF)Vl;}{sH#LoY*f`m#b{KlL@gQ<k*HOTNg}r|4#ZV8 zt`J8xZjA9n>O9vCce*6A550#@&2)=~h_#Lvn_V~L`ms<D$Mt+C<T!rFcQj;t<EpVC zz!f#F#kzvJinyY<RwW1omBb#^fH4|S#X-dpgQJR3)QE^A+@h8YYQ(Cl6;Z1qK8h!z zzM>uw7bTA1iE2zCZjcy43`vX=Q4<xFxHUFvtP^z{8x^ZD&zNY?n5d1#Vp&;P(dz2z zXhlUupL25<(Is!XVcj~f0X(1)5@X5C%z#^07j%u$pg7I0u?eCXV_Y8zI;sIrHHc_1 z00C=_gQEdebqvN))KPH6V6b9TtO$s9SnX!jU@U^Fsud%?Dpo{%vEun+eF0Cb@g+c9 zJ@N2cw4V~UE^${i1}5&S7xR6MH#axODk>`CJ^U>D&`ta=;|2bZ8>E>800000NkvXX Hu0mjf?$$BB diff --git a/vendor/unisharp/laravel-ckeditor/plugins/adobeair/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/adobeair/plugin.js deleted file mode 100644 index 17de17b4d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/adobeair/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function f(a){a=a.getElementsByTag("*");for(var c=a.count(),b,d=0;d<c;d++)b=a.getItem(d),function(a){for(var b=0;b<l.length;b++)(function(b){var d=a.getAttribute("on"+b);a.hasAttribute("on"+b)&&(a.removeAttribute("on"+b),a.on(b,function(b){var c=/(return\s*)?CKEDITOR\.tools\.callFunction\(([^)]+)\)/.exec(d),k=c&&c[1],e=c&&c[2].split(","),c=/return false;/.test(d);if(e){for(var m=e.length,h,g=0;g<m;g++){e[g]=h=CKEDITOR.tools.trim(e[g]);var f=h.match(/^(["'])([^"']*?)\1$/);if(f)e[g]=f[2]; -else if(h.match(/\d+/))e[g]=parseInt(h,10);else switch(h){case "this":e[g]=a.$;break;case "event":e[g]=b.data.$;break;case "null":e[g]=null}}e=CKEDITOR.tools.callFunction.apply(window,e);k&&!1===e&&(c=1)}c&&b.data.preventDefault()}))})(l[b])}(b)}var l="click keydown mousedown keypress mouseover mouseout".split(" ");CKEDITOR.plugins.add("adobeair",{onLoad:function(){CKEDITOR.env.air&&(CKEDITOR.dom.document.prototype.write=CKEDITOR.tools.override(CKEDITOR.dom.document.prototype.write,function(a){function c(b, -a,c,k){a=b.append(a);(c=CKEDITOR.htmlParser.fragment.fromHtml(c).children[0].attributes)&&a.setAttributes(c);k&&a.append(b.getDocument().createText(k))}return function(b){if(this.getBody()){var d=this,f=this.getHead();b=b.replace(/(<style[^>]*>)([\s\S]*?)<\/style>/gi,function(a,b,d){c(f,"style",b,d);return""});b=b.replace(/<base\b[^>]*\/>/i,function(b){c(f,"base",b);return""});b=b.replace(/<title>([\s\S]*)<\/title>/i,function(b,a){d.$.title=a;return""});b=b.replace(/<head>([\s\S]*)<\/head>/i,function(b){var a= -new CKEDITOR.dom.element("div",d);a.setHtml(b);a.moveChildren(f);return""});b.replace(/(<body[^>]*>)([\s\S]*)(?=$|<\/body>)/i,function(b,a,c){d.getBody().setHtml(c);(b=CKEDITOR.htmlParser.fragment.fromHtml(a).children[0].attributes)&&d.getBody().setAttributes(b)})}else a.apply(this,arguments)}}),CKEDITOR.addCss("body.cke_editable { padding: 8px }"),CKEDITOR.ui.on("ready",function(a){a=a.data;if(a._.panel){var c=a._.panel._.panel,b;(function(){c.isLoaded?(b=c._.holder,f(b)):setTimeout(arguments.callee, -30)})()}else a instanceof CKEDITOR.dialog&&f(a._.element)}))},init:function(a){CKEDITOR.env.air&&(a.on("uiReady",function(){f(a.container);a.on("elementsPathUpdate",function(a){f(a.data.space)})}),a.on("contentDom",function(){a.document.on("click",function(a){a.data.preventDefault(!0)})}))}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/ajax/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/ajax/plugin.js deleted file mode 100644 index b3a2f0a19..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/ajax/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.plugins.add("ajax",{requires:"xml"});CKEDITOR.ajax=function(){function g(){if(!CKEDITOR.env.ie||"file:"!=location.protocol)try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(b){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(f){}return null}function h(a){return 4==a.readyState&&(200<=a.status&&300>a.status||304==a.status||0===a.status||1223==a.status)}function k(a){return h(a)?a.responseText:null}function m(a){if(h(a)){var b= -a.responseXML;return new CKEDITOR.xml(b&&b.firstChild?b:a.responseText)}return null}function l(a,b,f){var d=!!b,c=g();if(!c)return null;c.open("GET",a,d);d&&(c.onreadystatechange=function(){4==c.readyState&&(b(f(c)),c=null)});c.send(null);return d?"":f(c)}function n(a,b,f,d,c){var e=g();if(!e)return null;e.open("POST",a,!0);e.onreadystatechange=function(){4==e.readyState&&(d&&d(c(e)),e=null)};e.setRequestHeader("Content-type",f||"application/x-www-form-urlencoded; charset\x3dUTF-8");e.send(b)}return{load:function(a, -b){return l(a,b,k)},post:function(a,b,f,d){return n(a,b,f,d,k)},loadXml:function(a,b){return l(a,b,m)}}}()})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/az.js deleted file mode 100644 index 3a96fdf92..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","az",{embeddingInProgress:"Dahil etdiyiniz link yerləşdirilir...",embeddingFailed:"Bu cür linki avtomatik yerləşdirmək mövcud deyil."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ca.js deleted file mode 100644 index 9414525a2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ca",{embeddingInProgress:"Provant d'incrustar URL copiada...",embeddingFailed:"Aquesta URL no es pot incrustar automàticament."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/cs.js deleted file mode 100644 index ad3848fdf..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","cs",{embeddingInProgress:"Pokus o vnoření vložené URL",embeddingFailed:"Tato URL nemůže být automaticky vnořena."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de-ch.js deleted file mode 100644 index f1695125d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","de-ch",{embeddingInProgress:"Einbetten der eingefügten URL wird versucht...",embeddingFailed:"Diese URL konnte nicht automatisch eingebettet werden."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de.js deleted file mode 100644 index 9252be41d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","de",{embeddingInProgress:"Einbetten der eingefügten URL wird versucht...",embeddingFailed:"Diese URL konnte nicht automatisch eingebettet werden."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/en.js deleted file mode 100644 index 548ac8646..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","en",{embeddingInProgress:"Trying to embed pasted URL...",embeddingFailed:"This URL could not be automatically embedded."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eo.js deleted file mode 100644 index 59d4e3ce3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","eo",{embeddingInProgress:"Provas enkorpigi la algluitan URL ...",embeddingFailed:"Ne eblis enkorpigi aŭtomate tiun URL."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es-mx.js deleted file mode 100644 index 9434eff8f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","es-mx",{embeddingInProgress:"Tratando de empotrar la URL pegada...",embeddingFailed:"Esta URL no puede ser empotrada automáticamente."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es.js deleted file mode 100644 index f4c33efe3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","es",{embeddingInProgress:"Intentando incrustar URL pegada...",embeddingFailed:"Está URL no pudo ser automáticamente incrustada."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eu.js deleted file mode 100644 index 4c44cfdff..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","eu",{embeddingInProgress:"Itsatsitako URLa txertatzen saiatzen...",embeddingFailed:"URL hau ezin izan da automatikoki txertatu."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/fr.js deleted file mode 100644 index adce7b94c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","fr",{embeddingInProgress:"Incorporation de l'URL collée...",embeddingFailed:"Cette URL n'a pas pu être incorporée automatiquement."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/gl.js deleted file mode 100644 index 15fb750d6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","gl",{embeddingInProgress:"Tentando incrustar URL pegado...",embeddingFailed:"Non foi posíbel incrustar automaticamente este URL."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hr.js deleted file mode 100644 index 6055fae86..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","hr",{embeddingInProgress:"Pokušavam umetnuti URL...",embeddingFailed:"URL nije moguće umetnuti automatski."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hu.js deleted file mode 100644 index abdb08dfc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","hu",{embeddingInProgress:"A beillesztett URL beágyazásának megkísérlése...",embeddingFailed:"Ezt az URL-t nem lehet automatikusan beágyazni."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/it.js deleted file mode 100644 index a0a53099d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","it",{embeddingInProgress:"Prova a incorporare l'URL incollato...",embeddingFailed:"Non è stato possibile incorporare automaticamente questo URL."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ja.js deleted file mode 100644 index 8c76dff9e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ja",{embeddingInProgress:"貼り付けられたURLを埋め込み中...",embeddingFailed:"このURLは自動的に埋め込むことが出来ません。"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/km.js deleted file mode 100644 index 2d66a74d7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","km",{embeddingInProgress:"កំពុង​ព្យាយាម​បង្កប់ URL ដែល​បាន​បិទភ្ជាប់...",embeddingFailed:"មិន​អាច​បង្កប់ URL នេះ​ដោយ​ស្វ័យប្រវត្តិ​ទេ។"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ko.js deleted file mode 100644 index ab6863d2a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ko",{embeddingInProgress:"붙여넣은 URL 첨부 시도 중...",embeddingFailed:"이 URL은 자동으로 첨부할 수 없습니다."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ku.js deleted file mode 100644 index 248a3227a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ku",{embeddingInProgress:"لەهەوڵی لکاندنی بەستەری ناونیشانە...",embeddingFailed:"ئەم بەستەرە خۆکارانە ناتواندرێت بخرێتە ناوێ."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/mk.js deleted file mode 100644 index 4902f1a37..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","mk",{embeddingInProgress:"Обид за вметнување копирано URL...",embeddingFailed:"Ова URL не може да биде вметнато автоматски."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nb.js deleted file mode 100644 index 9792bff9a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","nb",{embeddingInProgress:"Prøver å bygge inn innlimt URL...",embeddingFailed:"URL-en kunne ikke bli automatisk bygget inn."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nl.js deleted file mode 100644 index 2f144f7a1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","nl",{embeddingInProgress:"De geplakte URL wordt ingesloten...",embeddingFailed:"Deze URL kon niet automatisch ingesloten worden."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/oc.js deleted file mode 100644 index c72fd9aad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","oc",{embeddingInProgress:"Incorporacion de l'URL pegada...",embeddingFailed:"Aquesta URL a pas pogut èsser incorporada automaticament."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pl.js deleted file mode 100644 index 171151800..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","pl",{embeddingInProgress:"Osadzanie wklejonego adresu URL...",embeddingFailed:"Ten adres URL multimediów nie może być automatycznie osadzony."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt-br.js deleted file mode 100644 index 1c3a823b0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","pt-br",{embeddingInProgress:"Tentando embutir a URL colada...",embeddingFailed:"Esta URL não pode ser embutida automaticamente."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt.js deleted file mode 100644 index a27751ad7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","pt",{embeddingInProgress:"Trying to embed pasted URL...",embeddingFailed:"Não foi possível embeber diretamente este URL."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ru.js deleted file mode 100644 index be321357a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ru",{embeddingInProgress:"Пытаемся встроить вставленный URL...",embeddingFailed:"Данный URL не может быть встроен автоматически."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sk.js deleted file mode 100644 index 2c1b91e15..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","sk",{embeddingInProgress:"Snažím sa vložiť skopírovanú URL...",embeddingFailed:"Túto URL nebolo možné automaticky vložiť."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sv.js deleted file mode 100644 index b2c6fcaed..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","sv",{embeddingInProgress:"Försöker bädda in inklistrad URL...",embeddingFailed:"Denna URL kunde inte automatiskt bäddas in."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/tr.js deleted file mode 100644 index 514a6784b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","tr",{embeddingInProgress:"Yapıştırdığınız URL gömülmeye çalışılıyor...",embeddingFailed:"Bu URL otomatik olarak gömülemedi."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ug.js deleted file mode 100644 index eadaee77c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","ug",{embeddingInProgress:"سىڭدۈرۈلگەن چاپلانغان URL نى سىناۋاتىدۇ…",embeddingFailed:"بۇ URL نى ئۆزلۈكىدىن سىڭدۈرەلمەيدۇ."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/uk.js deleted file mode 100644 index 34ac53a05..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","uk",{embeddingInProgress:"Намагаюсь вбудувати вставлене URL посилання...",embeddingFailed:"Це URl посилання не може бути автоматично вбудовано."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh-cn.js deleted file mode 100644 index 959fc45d7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","zh-cn",{embeddingInProgress:"正在尝试嵌入粘贴的 URL 里的媒体内容...",embeddingFailed:"此 URL 无法自动嵌入媒体内容"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh.js deleted file mode 100644 index 5480c9d9c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("autoembed","zh",{embeddingInProgress:"正在嘗試嵌入已貼上的 URL...",embeddingFailed:"這個 URL 無法被自動嵌入。"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/autoembed/plugin.js deleted file mode 100644 index 05be32c83..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autoembed/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function p(a,g){var b=a.editable().findOne('a[data-cke-autoembed\x3d"'+g+'"]'),c=a.lang.autoembed,d;if(b&&b.data("cke-saved-href")){var b=b.data("cke-saved-href"),e=CKEDITOR.plugins.autoEmbed.getWidgetDefinition(a,b);if(e){var f="function"==typeof e.defaults?e.defaults():e.defaults,f=CKEDITOR.dom.element.createFromHtml(e.template.output(f)),h,m=a.widgets.wrapElement(f,e.name),n=new CKEDITOR.dom.documentFragment(m.getDocument());n.append(m);(h=a.widgets.initOn(f,e))?(d=a.showNotification(c.embeddingInProgress, -"info"),h.loadContent(b,{noNotifications:!0,callback:function(){var b=a.editable().findOne('a[data-cke-autoembed\x3d"'+g+'"]');if(b){var c=a.getSelection(),e=a.createRange(),f=a.editable();a.fire("saveSnapshot");a.fire("lockSnapshot",{dontUpdate:!0});var l=c.createBookmarks(!1)[0],k=l.startNode,h=l.endNode||k;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&!l.endNode&&k.equals(b.getNext())&&b.append(k);e.setStartBefore(b);e.setEndAfter(b);f.insertElement(m,e);f.contains(k)&&f.contains(h)?c.selectBookmarks([l]): -(k.remove(),h.remove());a.fire("unlockSnapshot")}d.hide();a.widgets.finalizeCreation(n)},errorCallback:function(){d.hide();a.widgets.destroy(h,!0);a.showNotification(c.embeddingFailed,"info")}})):a.widgets.finalizeCreation(n)}else CKEDITOR.warn("autoembed-no-widget-def")}}var q=/^<a[^>]+href="([^"]+)"[^>]*>([^<]+)<\/a>$/i;CKEDITOR.plugins.add("autoembed",{requires:"autolink,undo",lang:"az,ca,cs,de,de-ch,en,eo,es,es-mx,eu,fr,gl,hr,hu,it,ja,km,ko,ku,mk,nb,nl,oc,pl,pt,pt-br,ru,sk,sv,tr,ug,uk,zh,zh-cn", -init:function(a){var g=1,b;a.on("paste",function(c){if(c.data.dataTransfer.getTransferType(a)==CKEDITOR.DATA_TRANSFER_INTERNAL)b=0;else{var d=c.data.dataValue.match(q);if(b=null!=d&&decodeURI(d[1])==decodeURI(d[2]))c.data.dataValue='\x3ca data-cke-autoembed\x3d"'+ ++g+'"'+c.data.dataValue.substr(2)}},null,null,20);a.on("afterPaste",function(){b&&p(a,g)})}});CKEDITOR.plugins.autoEmbed={getWidgetDefinition:function(a,g){var b=a.config.autoEmbed_widget||"embed,embedSemantic",c,d=a.widgets.registered; -if("string"==typeof b)for(b=b.split(",");c=b.shift();){if(d[c])return d[c]}else if("function"==typeof b)return d[b(g)];return null}}})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autogrow/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/autogrow/plugin.js deleted file mode 100644 index 77ea6ad3e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autogrow/plugin.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function h(a){function m(){e=a.document;n=e[CKEDITOR.env.ie?"getBody":"getDocumentElement"]();c=CKEDITOR.env.quirks?e.getBody():e.getDocumentElement();var d=CKEDITOR.env.quirks?c:c.findOne("body");d&&(d.setStyle("height","auto"),d.setStyle("min-height",CKEDITOR.env.safari?"0%":"auto"));f=CKEDITOR.dom.element.createFromHtml('\x3cspan style\x3d"margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;"\x3e'+(CKEDITOR.env.webkit?"\x26nbsp;":"")+"\x3c/span\x3e",e)}function g(){k&& -c.setStyle("overflow-y","hidden");var d=a.window.getViewPaneSize().height,b;n.append(f);b=f.getDocumentPosition(e).y+f.$.offsetHeight;f.remove();b+=h;b=Math.max(b,r);b=Math.min(b,p);b!=d&&l!=b&&(b=a.fire("autoGrow",{currentHeight:d,newHeight:b}).newHeight,a.resize(a.container.getStyle("width"),b,!0),l=b);k||(b<p&&c.$.scrollHeight>c.$.clientHeight?c.setStyle("overflow-y","hidden"):c.removeStyle("overflow-y"))}var l,e,n,c,f,h=a.config.autoGrow_bottomSpace||0,r=void 0!==a.config.autoGrow_minHeight?a.config.autoGrow_minHeight: -200,p=a.config.autoGrow_maxHeight||Infinity,k=!a.config.autoGrow_maxHeight;a.addCommand("autogrow",{exec:g,modes:{wysiwyg:1},readOnly:1,canUndo:!1,editorFocus:!1});var t={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1},q;for(q in t)a.on(q,function(d){"wysiwyg"==d.editor.mode&&setTimeout(function(){var b=a.getCommand("maximize");!a.window||b&&b.state==CKEDITOR.TRISTATE_ON?l=null:(g(),k||g())},100)});a.on("afterCommandExec",function(a){"maximize"==a.data.name&&"wysiwyg"==a.editor.mode&& -(a.data.command.state==CKEDITOR.TRISTATE_ON?c.removeStyle("overflow-y"):g())});a.on("contentDom",m);m();a.config.autoGrow_onStartup&&a.editable().isVisible()&&a.execCommand("autogrow")}CKEDITOR.plugins.add("autogrow",{init:function(a){if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE)a.on("instanceReady",function(){a.editable().isInline()?a.ui.space("contents").setStyle("height","auto"):h(a)})}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/autolink/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/autolink/plugin.js deleted file mode 100644 index 0c4687aff..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/autolink/plugin.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var d=/^(https?|ftp):\/\/(-\.)?([^\s\/?\.#]+\.?)+(\/[^\s]*)?[^\s\.,]$/ig,e=/"/g;CKEDITOR.plugins.add("autolink",{requires:"clipboard",init:function(c){c.on("paste",function(b){var a=b.data.dataValue;b.data.dataTransfer.getTransferType(c)==CKEDITOR.DATA_TRANSFER_INTERNAL||-1<a.indexOf("\x3c")||(a=a.replace(d,'\x3ca href\x3d"'+a.replace(e,"%22")+'"\x3e$\x26\x3c/a\x3e'),a!=b.data.dataValue&&(b.data.type="html"),b.data.dataValue=a)})}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/plugin.js deleted file mode 100644 index 7f7f23774..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/plugin.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var t=!1;CKEDITOR.plugins.add("balloonpanel",{init:function(){t||(CKEDITOR.document.appendStyleSheet(this.path+"skins/"+CKEDITOR.skinName+"/balloonpanel.css"),t=!0)}});CKEDITOR.ui.balloonPanel=function(a,b){this.editor=a;CKEDITOR.tools.extend(this,{width:360,height:"auto",triangleWidth:20,triangleHeight:20,triangleMinDistance:40},b,!0);this.templates={};for(var c in this.templateDefinitions)this.templates[c]=new CKEDITOR.template(this.templateDefinitions[c]);this.parts={};this.focusables= -{};this.showListeners={};this.activeShowListeners={};this.rect={visible:!1};this.build();a.on("destroy",function(){this.destroy()},this)};CKEDITOR.ui.balloonPanel.prototype={templateDefinitions:{panel:'\x3cdiv class\x3d"cke {id} cke_reset_all cke_chrome cke_balloon cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"dialog" style\x3d"{style}" tabindex\x3d"-1" aria-labelledby\x3d"cke_{name}_arialbl"\x3e\x3c/div\x3e', -content:'\x3cdiv class\x3d"cke_balloon_content"\x3e{content}\x3c/div\x3e',title:'\x3cdiv class\x3d"cke_balloon_title" role\x3d"presentation"\x3e{title}\x3c/div\x3e',close:'\x3ca class\x3d"cke_balloon_close_button" href\x3d"javascript:void(0)" title\x3d"Close" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e',triangleOuter:'\x3cspan class\x3d"cke_balloon_triangle cke_balloon_triangle_outer"\x3e\x3c/span\x3e',triangleInner:'\x3cspan class\x3d"cke_balloon_triangle cke_balloon_triangle_inner"\x3e\x26#8203;\x3c/span\x3e'}, -build:function(){var a=this.editor;this.parts={title:CKEDITOR.dom.element.createFromHtml(this.templates.title.output({title:this.title})),close:CKEDITOR.dom.element.createFromHtml(this.templates.close.output()),panel:CKEDITOR.dom.element.createFromHtml(this.templates.panel.output({id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:"display:none;",voiceLabel:a.lang.editorPanel+", "+a.name})),content:CKEDITOR.dom.element.createFromHtml(this.templates.content.output({content:this.content|| -""})),triangleOuter:CKEDITOR.dom.element.createFromHtml(this.templates.triangleOuter.output()),triangleInner:CKEDITOR.dom.element.createFromHtml(this.templates.triangleInner.output())};this.parts.panel.append(this.parts.title,1);this.parts.panel.append(this.parts.close,1);this.parts.panel.append(this.parts.triangleOuter);this.parts.panel.append(this.parts.content);this.parts.triangleOuter.append(this.parts.triangleInner);this.registerFocusable(this.parts.panel);this.registerFocusable(this.parts.close); -this.parts.title.unselectable();this.parts.close.unselectable();CKEDITOR.document.getBody().append(this.parts.panel);this.resize(this.width,this.height);this.on("show",this.activateShowListeners,this);this.on("hide",this.deactivateShowListeners,this);this.parts.close.on("click",function(a){this.hide();a.data.preventDefault()},this)},show:function(){this.rect.visible||(this.rect.visible=!0,this.parts.panel.show(),this.fire("show"))},hide:function(){this.rect.visible&&(this.rect.visible=!1,this.parts.panel.hide(), -this.blur(),this.fire("hide"))},blur:function(){this.editor.focus()},move:function(a,b){this.rect.left=b;this.rect.top=a;this.parts.panel.setStyles({left:CKEDITOR.tools.cssLength(b),top:CKEDITOR.tools.cssLength(a)})},attach:function(){function a(a){var d=a.getClientRect(),k=b.getScrollPosition();r||a.equals(c)?(d.top+=k.y,d.left+=k.x):(a=c.getClientRect(),d.top=a.top+d.top+k.y,d.left=a.left+d.left+k.x);d.right=d.left+d.width;d.bottom=d.top+d.height;return d}var b,c,p,r,t={right:"left",top:"bottom", -topLeft:"bottomLeft",topRight:"bottomRight",bottom:"top",bottomLeft:"topLeft",bottomRight:"topRight",left:"right"};return function(w,d){this.show();this.fire("attach");b=CKEDITOR.document.getWindow();c=this.editor.window.getFrame();p=this.editor.editable();r=p.isInline();var k=this.getWidth(),v=this.getHeight(),g=a(w),m=a(r?p:c),h=b.getViewPaneSize(),e=b.getScrollPosition(),h={top:Math.max(m.top,e.y),left:Math.max(m.left,e.x),right:Math.min(m.right,h.width+e.x),bottom:Math.min(m.bottom,h.height+e.y)}; -r&&(h=this._getViewPaneRect(b),h.right+=this.triangleWidth,h.bottom+=this.triangleHeight);this._adjustElementRect(g,r?h:m);var m=k*v,g=this._getAlignments(g,k,v),f,l,n;for(n in g){e=v;l={top:g[n].top,left:g[n].left};l.right=l.left+k;l.bottom=l.top+e;var e=g[n],q=l,u=h;l=Math.max(0,Math.min(q.right,u.right)-Math.max(q.left,u.left));q=Math.max(0,Math.min(q.bottom,u.bottom)-Math.max(q.top,u.top));e=e.areaDifference=m-l*q;if(0===e){f=n;break}f||(f=n);e<g[f].areaDifference&&(f=n)}this.move(g[f].top,g[f].left); -f=f.split(" ");this.setTriangle(t[f[0]],f[1]);!1!==d&&(d||this.parts.panel).focus()}}(),resize:function(a,b){this.rect.width=a;this.rect.height=b;this.parts.panel.setStyles({width:CKEDITOR.tools.cssLength(a),height:CKEDITOR.tools.cssLength(b)})},getWidth:function(){return"auto"===this.rect.width?this.parts.panel.getClientRect().width:this.rect.width},getHeight:function(){return"auto"===this.rect.height?this.parts.panel.getClientRect().height:this.rect.height},setTriangle:function(a,b){var c=this.parts.triangleOuter, -p=this.parts.triangleInner;this.triangleSide&&(c.removeClass("cke_balloon_triangle_"+this.triangleSide),c.removeClass("cke_balloon_triangle_align_"+this.triangleAlign),p.removeClass("cke_balloon_triangle_"+this.triangleSide));this.triangleSide=a;this.triangleAlign=b;c.addClass("cke_balloon_triangle_"+a);c.addClass("cke_balloon_triangle_align_"+b);p.addClass("cke_balloon_triangle_"+a)},registerFocusable:function(a){this.editor.focusManager.add(a);this.focusables[a.getUniqueId()]=a},deregisterFocusable:function(a){this.editor.focusManager.remove(a); -delete this.focusables[a.getUniqueId()]},addShowListener:function(a){var b=CKEDITOR.tools.getNextNumber();this.showListeners[b]=a;this.rect.visible&&this.activateShowListener(b);var c=this;return{removeListener:function(){c.removeShowListener(b)}}},removeShowListener:function(a){this.deactivateShowListener(a);delete this.showListeners[a]},activateShowListener:function(a){this.activeShowListeners[a]=this.showListeners[a].call(this)},deactivateShowListener:function(a){this.activeShowListeners[a]&&this.activeShowListeners[a].removeListener(); -delete this.activeShowListeners[a]},activateShowListeners:function(){for(var a in this.showListeners)this.activateShowListener(a)},deactivateShowListeners:function(){for(var a in this.activeShowListeners)this.deactivateShowListener(a)},destroy:function(){this.deactivateShowListeners();this.parts.panel.remove()},setTitle:function(a){this.parts.title.setHtml(a)},_getAlignments:function(a,b,c){return{"right vcenter":{top:a.top+a.height/2-c/2,left:a.right+this.triangleWidth},"left vcenter":{top:a.top+ -a.height/2-c/2,left:a.left-b-this.triangleWidth},"top hcenter":{top:a.top-c-this.triangleHeight,left:a.left+a.width/2-b/2},"top left":{top:a.top-c-this.triangleHeight,left:a.left+a.width/2-this.triangleMinDistance},"top right":{top:a.top-c-this.triangleHeight,left:a.right-a.width/2-b+this.triangleMinDistance},"bottom hcenter":{top:a.bottom+this.triangleHeight,left:a.left+a.width/2-b/2},"bottom left":{top:a.bottom+this.triangleHeight,left:a.left+a.width/2-this.triangleMinDistance},"bottom right":{top:a.bottom+ -this.triangleHeight,left:a.right-a.width/2-b+this.triangleMinDistance}}},_adjustElementRect:function(a,b){a.left=Math.max(b.left,Math.min(b.right-1,a.left));a.right=Math.max(b.left,Math.min(b.right,a.right));a.top=Math.max(b.top,Math.min(b.bottom-1,a.top));a.bottom=Math.max(b.top,Math.min(b.bottom,a.bottom))},_getViewPaneRect:function(a){var b=a.getScrollPosition();a=a.getViewPaneSize();return{top:b.y,bottom:b.y+a.height,left:b.x,right:b.x+a.width}}};CKEDITOR.event.implementOn(CKEDITOR.ui.balloonPanel.prototype)})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css deleted file mode 100644 index 6088150dd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css +++ /dev/null @@ -1,220 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ - -.cke_balloon -{ - position: absolute; - z-index: 10000; - - background: #fff; - border: 1px solid #b2b2b2; - border-bottom-color: #999; - - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, .15); - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); - box-shadow: 0 0 3px rgba(0, 0, 0, .15); - - outline: none; -} - -.cke_balloon_title -{ - font-weight: bold; - font-size: 14px; - cursor: default; - - color: #474747; - text-shadow: 0 1px 0 rgba(255,255,255,.75); - - padding: 3px 3px 8px; - border-bottom: 1px solid #eee; - - -moz-border-radius: 2px 2px 0 0; - -webkit-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; - - -moz-box-shadow: 0 1px 0 #fff inset; - -webkit-box-shadow: 0 1px 0 #fff inset; - box-shadow: 0 1px 0 #fff inset; -} - -/* The close button at the top of the panel. */ -a.cke_balloon_close_button -{ - background-image: url(../../../../skins/kama/images/sprites.png); - background-repeat: no-repeat; - background-position: 0 -1022px; - position: absolute; - cursor: pointer; - text-align: center; - height: 20px; - width: 20px; - top: 5px; -} - -a.cke_balloon_close_button:hover { - background-position: 0 -1045px; -} - -.cke_balloon_content -{ - overflow: hidden; - min-height: 68px; -} - -.cke_balloon_close_button:hover -{ - opacity: 1; - filter: alpha(opacity = 100); -} - -.cke_balloon_close_button span -{ - display: none; -} - -.cke_ltr .cke_balloon_close_button -{ - right: 5px; -} - -.cke_rtl .cke_balloon_close_button -{ - left: 6px; -} - -.cke_balloon_triangle -{ - position: absolute; - border-style: solid; - display: block; - width: 0; - height: 0; -} - -.cke_balloon_triangle_inner -{ - z-index: 0; -} - -.cke_balloon_triangle_outer -{ - z-index: 0; -} - -/* side: [ bottom, top ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, - .cke_balloon_triangle_outer.cke_balloon_triangle_top - { - border-color: #6B6B6B transparent; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_bottom, - .cke_balloon_triangle_inner.cke_balloon_triangle_top - { - left: -20px; - } - -/* side: [ bottom ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_bottom - { - border-width: 20px 20px 0; - bottom: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_bottom - { - border-color: #fff transparent; - border-width: 20px 20px 0; - top: -21px; - } - -/* side: [ top ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_top - { - border-width: 0 20px 20px; - top: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_top - { - border-color: #fff transparent; - border-width: 0 20px 20px; - top: 1px; - } - -/* side: [ left, right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_left, - .cke_balloon_triangle_outer.cke_balloon_triangle_right - { - border-color: transparent #6B6B6B; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_left, - .cke_balloon_triangle_inner.cke_balloon_triangle_right - { - border-color: transparent #fff; - top: -20px; - } - -/* side: [ left ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_left - { - border-width: 20px 20px 20px 0; - left: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_left - { - border-color: transparent #fff; - border-width: 20px 20px 20px 0; - left: 1px; - } - -/* side: [ right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_right - { - border-width: 20px 0 20px 20px; - right: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_right - { - border-width: 20px 0 20px 20px; - right: 1px; - } - - -/* align: [ hcenter ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter - { - left: 50%; - margin-left: -20px; - } - -/* align: [ left ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_left - { - left: 20px; - margin-left: 0; - } - -/* align: [ right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_right - { - right: 20px; - margin-left: 0; - } - -/* align: [ vcenter ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter - { - top: 50%; - margin-top: -20px; - } diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css deleted file mode 100644 index ee7420ce6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css +++ /dev/null @@ -1,223 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ - -.cke_balloon -{ - position: absolute; - z-index: 10000; - - background: #fff; - border: 2px solid #aaa; - outline: none; -} - -.cke_balloon_title -{ - font-weight: bold; - font-size: 12px; - cursor: default; - - color: #484848; - - padding: 12px 30px 12px 12px; /* Let's the title and close don't overlap each other - padding-right. */ - background: #f8f8f8; -} - -/* The close button at the top of the panel. */ -a.cke_balloon_close_button -{ - background-image: url(images/close.png); - background-repeat: no-repeat; - background-position: 50% -1px; - position: absolute; - cursor: pointer; - text-align: center; - height: 16px; - width: 16px; - top: 8px; - z-index: 5; - opacity: 0.7; - filter: alpha(opacity = 70); - border: 2px solid transparent; - border-radius: 2px; -} - -a.cke_balloon_close_button:focus, -a.cke_balloon_close_button:active -{ - outline: none; - border: 2px solid #0079f7; -} - -.cke_balloon_content -{ - overflow: hidden; - min-height: 68px; - padding: 0 6px 6px 6px; -} - -.cke_balloon_close_button:hover -{ - opacity: 1; - filter: alpha(opacity = 100); -} - -.cke_balloon_close_button:focus:hover -{ - opacity: 1; - filter: alpha(opacity = 100); - border: 2px solid #139FF7; -} - -.cke_hidpi .cke_balloon_close_button -{ - background-image: url(images/hidpi/close.png); - background-size: 16px; -} - -.cke_balloon_close_button span -{ - display: none; -} - -.cke_ltr .cke_balloon_close_button -{ - right: 10px; -} - -.cke_rtl .cke_balloon_close_button -{ - left: 10px; -} - -.cke_balloon_triangle -{ - position: absolute; - border-style: solid; - display: block; - width: 0; - height: 0; -} - -.cke_balloon_triangle_inner -{ - z-index: 0; -} - -.cke_balloon_triangle_outer -{ - z-index: 0; -} - -/* side: [ bottom, top ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_bottom, -.cke_balloon_triangle_outer.cke_balloon_triangle_top -{ - border-color: #999 transparent; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_bottom, -.cke_balloon_triangle_inner.cke_balloon_triangle_top -{ - left: -20px; -} - -/* side: [ bottom ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_bottom -{ - border-width: 20px 20px 0; - bottom: -20px; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_bottom -{ - border-color: #fff transparent; - border-width: 20px 20px 0; - top: -22px; -} - -/* side: [ top ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_top -{ - border-width: 0 20px 20px; - top: -20px; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_top -{ - border-color: #f8f8f8 transparent; - border-width: 0 20px 20px; - top: 2px; -} - -/* side: [ left, right ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_left, -.cke_balloon_triangle_outer.cke_balloon_triangle_right -{ - border-color: transparent #999; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_left, -.cke_balloon_triangle_inner.cke_balloon_triangle_right -{ - border-color: transparent #fff; - top: -20px; -} - -/* side: [ left ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_left -{ - border-width: 20px 20px 20px 0; - left: -20px; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_left -{ - border-color: transparent #fff; - border-width: 20px 20px 20px 0; - left: 2px; -} - -/* side: [ right ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_right -{ - border-width: 20px 0 20px 20px; - right: -20px; -} - -.cke_balloon_triangle_inner.cke_balloon_triangle_right -{ - border-width: 20px 0 20px 20px; - right: 2px; -} - - -/* align: [ hcenter ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter -{ - left: 50%; - margin-left: -20px; -} - -/* align: [ left ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_align_left -{ - left: 20px; - margin-left: 0; -} - -/* align: [ right ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_align_right -{ - right: 20px; - margin-left: 0; -} - -/* align: [ vcenter ] */ -.cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter -{ - top: 50%; - margin-top: -20px; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png deleted file mode 100644 index 40caa6ddfd01c2a26947761de218e4ce8f5e361e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU<~tgaSX9I-5czfb=ZMN zCiD7(8dZG`mFZ$kN86niOmKerzA8t-a*ESJ+pm+@RnDK-%Drt#oKE%Y8%wQju9nPP za&zgbRSy!=!tbB?^Ll>A1op@M5>3aOmOBJL-|3|^OV7Yn$}BPM-7dk4;tau8cTbEB zVOVq2VrTe-pr)C+XL-*25p&w{RY|c$I<(f*c*aemrB}2+@TEpJ&78kybw|w+iRXsL zc6QXHdC8sL^yZ3dsB5%j+BccxKY6pB9X)fw<gBK=^06NZO4i}aR_$ft7rZIzy0K`{ z^X^3vPgBnK-(yzV_2iv^V8@G3_p3Lod;QC1&(zY``HXAabKk5oyw6-wUc`|o=oFDs zU6F6t_ukz@)6s?R<~DPsB9V#8#`#9&e0j<Y8&;K>F<ESVvUb(G+cy`ks!qGNZO-J| zD^@L7wQ5(cuwal^+#4;M=MhRyGIp15=9GP9`!r{=?SJOoX15=O)R`Ou2D)mAYeY#( zVo9o1a#1RfVlXl=G}ARO*EO^ZF*LR^Hn1`=(l#)%GBA*sP+ozeAvZrIGp!Q0hRn0) Rj{r3=c)I$ztaD0e0sv6L>9YU; diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png deleted file mode 100644 index 0e4aa2efbeb3f7c1850fc0b51d8b151a0d5c9b08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1259 zcmZ{jdsGs36vuxkVp>!lE!4^-M>F&w_*f+6g9H^Dre>)mh_AvV711!W<<T8SOS73S z4Rp;%Zd2P~hDzj+2slkW=J1h~SgfTY<O9nr)8U`{W9Q!Q{haf?_xtC)5*ZN+w|2A! z0Kmy%#Ap-uZfFzCG&uzYOC~_i5GVuygcX}tlPortDPhqR018|IC@KM9W!=OX0P?T^ z=okRtYXCrGRVFGzOt-M)qoG8wzEQV(T5gyetL(6N4gi~NHv|E<1okG=GM7vtS-!Ni zg*&;U1Lhq7Fn>lS5@O=yhS-6KUF7X+zZM+s6e6@D=S4q+8`E~{2l#ae`+Xx4`VjN- zIgFs~bBZeNDN1dVseMMoPa5ml6$G(9?Wm*J|K0kDyx48?fuB`G1wvUfR?T}bcR3XI ziJOyC>EMjS`V{X4KEcG>qEg;#fuODq0<Kk5aJJSsREN8&DU~j25kyd5ZwAZ~VM_a^ zbZZ-kjm-Xr|6TpiP?RTAveV`fTcAb<lOes?2Z_5?nxF*p0N$1ToS3ifOus<OG#aPO z%*@_d9kWc9BVKZJA63&%U5M?fsd9bq0E%X3GeEwz{0YE{sO>Wu?um?d1wB^152gdk zReuZGX8U#(dBG$S2`otN?jIO9c;#o2X9{4vIcZ1YxEVvFlQ?l(ZLE2Axq>a2%~w73 z_mKu$oy*EvM<JI3V(yL7o5u54J3OkbK@c%VirKUFWG0uYpoT;Z-<L=}jlC^S{_UHj z?msM9%B{xZ+o4!xQ7vb{w=QB%GLczI?0SBwODJS#?de`5LTy%F@6*BTyUWaSC-03W zRz+X_^nSr$Fv#-{?>ntrTU#qRR?55X@)*%Pj9aer*kxCp5FLJL$M=K%t0RjfXn&b6 zWoT|0ZsSZ*C#1xOA{XOPc_;Kjfq=H#$?2inhvaDtj+f_xj0}I}I`1(#YF=bC8Vk3z zp)6`vzN_WZz8<&wrOM34;B6eqIM3MxdKuU_KCOp7d97jk?iMTL5fODF-t*>h?g6_Q ztrmI8l4L&HP(L_z{E&g=_FQCG^`*1~r0V<kN1rT~F(M1-(&5g5ekDHnP20i?*f5oU zUNYf{=Nj&ZN%3Xi_CzL^$9xm~*uP2d!yh<}{3{+u;y|{1E8kIi;_Lzbp^kBuj>GK0 z)K;n6+uQ5Br$*fnb@%6S{DEcT%4!QH1u%Ub+d~?M78lCB@(T-B#bWV_=FG)rsAA@1 z>j?g;LK`Z?uzKWJJ$mO=l_Gh;zBFkN-^F`+hd($KcveJJjoFGpjh~9wz`S*5CLCVt zK(1WU9;|=LrOuLj=yT)aujmRQG|G-bo6@lL_%58oG1^a}w-y8}YO!JeEoS@0w6TtV za>Py$gzl_JH_?Gyj6!{h(#1uGQ;4q{G4m$V-!E1vY~H(REj!~2sLT@ik$yh7Q%YQ- zq29^hz0ZF4*02+{1Z8}N7O^NdT;d5$tRGv_KUTE1is<6bn?EotkaWM+2ZRsP=)}m{ zM>3g=Uq+RuEq~4{`LnsNukWx~mTLx&hjlDBb+~k!=7<z%>%t0yyPcJ$$9K&o#pR|Z z<)-0Na?(ry-dL{#Xe<ux<rm}SgZIJWeZ4)f-gqq5{yI1RKY?>usp+RL{C^;QVDOPC O0LY{W;@u;R;(q~!2{T{- diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css deleted file mode 100644 index a84daa67e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css +++ /dev/null @@ -1,237 +0,0 @@ -/* -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ - -.cke_balloon -{ - position: absolute; - z-index: 10000; - - background: #fff; - border: 1px solid #b2b2b2; - border-bottom-color: #999; - - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, .15); - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); - box-shadow: 0 0 3px rgba(0, 0, 0, .15); - - outline: none; -} - -.cke_balloon_title -{ - font-weight: bold; - font-size: 13px; - cursor: default; - - color: #474747; - text-shadow: 0 1px 0 rgba(255,255,255,.75); - - border-bottom: 1px solid #999; - padding: 6px 10px; - - -moz-border-radius: 2px 2px 0 0; - -webkit-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; - - -moz-box-shadow: 0 1px 0 #fff inset; - -webkit-box-shadow: 0 1px 0 #fff inset; - box-shadow: 0 1px 0 #fff inset; - - /* Let's the title and close don't overlap each other */ - padding-right: 30px; - - background: #cfd1cf; - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#cfd1cf)); - background-image: -moz-linear-gradient(top, #f5f5f5, #cfd1cf); - background-image: -webkit-linear-gradient(top, #f5f5f5, #cfd1cf); - background-image: -o-linear-gradient(top, #f5f5f5, #cfd1cf); - background-image: -ms-linear-gradient(top, #f5f5f5, #cfd1cf); - background-image: linear-gradient(top, #f5f5f5, #cfd1cf); - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf'); -} - -/* The close button at the top of the panel. */ -a.cke_balloon_close_button -{ - background-image: url(images/close.png); - background-repeat: no-repeat; - background-position: 50%; - position: absolute; - cursor: pointer; - text-align: center; - height: 20px; - width: 20px; - top: 3px; - z-index: 5; - opacity: 0.8; - filter: alpha(opacity = 80); -} - -.cke_balloon_content -{ - overflow: hidden; - min-height: 68px; -} - -.cke_balloon_close_button:hover -{ - opacity: 1; - filter: alpha(opacity = 100); -} - -.cke_hidpi .cke_balloon_close_button -{ - background-image: url(images/hidpi/close.png); - background-size: 16px; -} - -.cke_balloon_close_button span -{ - display: none; -} - -.cke_ltr .cke_balloon_close_button -{ - right: 5px; -} - -.cke_rtl .cke_balloon_close_button -{ - left: 6px; -} - -.cke_balloon_triangle -{ - position: absolute; - border-style: solid; - display: block; - width: 0; - height: 0; -} - -.cke_balloon_triangle_inner -{ - z-index: 0; -} - -.cke_balloon_triangle_outer -{ - z-index: 0; -} - -/* side: [ bottom, top ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, - .cke_balloon_triangle_outer.cke_balloon_triangle_top - { - border-color: #6B6B6B transparent; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_bottom, - .cke_balloon_triangle_inner.cke_balloon_triangle_top - { - left: -20px; - } - -/* side: [ bottom ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_bottom - { - border-width: 20px 20px 0; - bottom: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_bottom - { - border-color: #fff transparent; - border-width: 20px 20px 0; - top: -21px; - } - -/* side: [ top ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_top - { - border-width: 0 20px 20px; - top: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_top - { - border-color: #f5f5f5 transparent; - border-width: 0 20px 20px; - top: 1px; - } - -/* side: [ left, right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_left, - .cke_balloon_triangle_outer.cke_balloon_triangle_right - { - border-color: transparent #6B6B6B; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_left, - .cke_balloon_triangle_inner.cke_balloon_triangle_right - { - border-color: transparent #fff; - top: -20px; - } - -/* side: [ left ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_left - { - border-width: 20px 20px 20px 0; - left: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_left - { - border-color: transparent #fff; - border-width: 20px 20px 20px 0; - left: 1px; - } - -/* side: [ right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_right - { - border-width: 20px 0 20px 20px; - right: -20px; - } - - .cke_balloon_triangle_inner.cke_balloon_triangle_right - { - border-width: 20px 0 20px 20px; - right: 1px; - } - - -/* align: [ hcenter ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter - { - left: 50%; - margin-left: -20px; - } - -/* align: [ left ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_left - { - left: 20px; - margin-left: 0; - } - -/* align: [ right ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_right - { - right: 20px; - margin-left: 0; - } - -/* align: [ vcenter ] */ - .cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter - { - top: 50%; - margin-top: -20px; - } diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/close.png b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/close.png deleted file mode 100644 index 04b9c97dde8273f8518060c82104b38b51832fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|iQ=q4dV~EA+rIQW2r5r_$|IbhBX1!iK_4XmB4ZGuZyxX>Mli(%E z3$HvlGJ~HaFWITo!p#_bl)s>kG4~ILn4ZiInf3+cyI*T<`W(k~_vmY;nOSN7-tT?5 z_kMlG#)t>?(@N_U7A5H`{SZHU%5|y8mTLiCjxG~YC1*%7ESS=i8mXXUVBBMvkk)Zx zV?z+v(jd;QQM_K73<pl1=ANX&$Y9aOe7%&B;Y`ohs@}I{+{rv53>j+!*M=?Jx=(qL zyV9$j>$uN<eo!eFbDdT2YsZVg?Ar1!+iwCajMGl5y0FZ9Zp+WcoM|E@*|4wU$=`3% zy>4a_JV!q7Nf$g=w9`d^C7^PGA=~P!uT~qnS<UUsGn?(K^h!8z|IHje>$!bq$4+Rn zRm$m#aRaT?oBmm{=FQhCd#|NJzRQD|8O+Vit9IW#m0|Mh$eHi2ze*L#9F{1SQ8HHc z4Zg9BH*Meg5Uo|W-`4Hlx9=LmhWqbRZRG0Hp8YoQowzL1@kK9x5mTUu>hHgCQ-VsW z92RMKolEYT^XF2b3{bDqtLv}7DjKgo{7|9&u;Yx#t3aOM*WBA}k1bpkwU1Xgef{_8 zQ_+pAttB$Yjb{4TF*LmYZ6CdM+Pt%A&Pql~pVU2tB$E3i4jY^)wB33;_hapR#yj&8 z_k69LfBWq=h6*9Umc$MPj)YE+L~jQEM2UT~&p(fMdGbAP`{}*^yE`_mUcEY>LGD~J zSC6>3_=>RA3QDR<GRF<$;^P?^rh2hHE!ug(Y&P#AjjC?L?|<{QKR%n*tl~K#HS(kW zCY|cVPbK~{ecxOlUm!aB3^2v1mbgZgq$HN4S|t~y0x1R~14Cn719M#ilMq95D+6O7 z(l#)%GBEI6vKyEhku>Dyr(~v8;?`jEllcfxgCxj?;QX|b^2DN4hVt@qz0ADq;^f4F ZRK5J7^x5xhq=1STJYD@<);T3K0RTH-Q&a!| diff --git a/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png b/vendor/unisharp/laravel-ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png deleted file mode 100644 index e406c2c35ba11a410291fe484d5bb406657b62eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V0;tc6XJSh#fqyyv~uOORjaPA zT6JUf>YG5cX3Z@iTD$i4+O>Dqt-HH^{liV09&Ot6c=P5bK(uAc)2&;dZQc4Dh_-Ee zxqbV~9Xnp{-1%nb&bPaFzuUe0^S*tb_wWC5;K0{|2frOS@a^EiABPYBJAV8>5S=*j z|K!R4r%wGpefs~|v;WVX`+xrY{|guXU%veR%9a1uum8V!6X-&s03#y{4-coHAOjN< zF7?84azG>`D=R214OAv9D+@&WmX<*ETmk|DqM|?~A|b&mEX*e&!Vg415fKq-S=pfA zU_(nwIW;wHV`EcmYfF238%IZ5CnqO&cOO5$fY8vu(9p2(@W8OJkjTiem>7E}CkJO| zM^{%T7Z+D|F!1zr_ww=p0#8pbAn@_=1_B=+A73!=^Yilug8&c+3=9kcf?yB`0fJBv z2n!2~0D?#`h>nf|f@lzk0fM-=*x1;(xVU&ANC1Px#3Ud{PEJZmNls2q0fMx&bRfvc z$jZvf&dtrq$yq#0?-bDIOG<+Lf^mfyPH|QlH7z4^3rj0&8(Wb7JUqR8rcR%~VBw0D zt5&bwymi~F_wPS^_y_@CzJ7y)@87@wB@djAYS_oXz$E7B;uvCa`s(Dn{=$I*N1xw& zmuH{2J$}UvvF664p8t)Uot^w@YX3e<Efw+=kX|z7(zLwt@^@!GF7(#4`SEVgojKO~ z?|7b@>HS4MMA5#twxCv@S8$@{k82K*Q#(4=#CkFcR=T*fdPzi-erDAcjNHHLY2?{u z8&A962-^K~k93eA&xEgw=dQTCQgSj^(SkcSY^&H+_8IlaZ_V2K&rrQ^&eMkQ)$jKo z-Tcq>QD?>Nw^8pe2fz6zd3@zMhG31h-+n9WXI3n`bLUlUNZF@U3*XP;JztqFmn8A) zU0x9Ny6(c2hoAc|9(u~aV3B*^;^~i<-tU_p^7Zw}pDGir7cZD)cvUg2KF)rcPiaAs zS>%pt^@k?OCJU~-)L1=_r!MxqtQmua!EBF+7&QyoKl9Ga%}ZnKFx)8aDEj5|?FysE zq4lX>wd7837f{l=vuW$Iz**P$qi^fSbuwKrJ02!+gJF&Q)<t{Gr}WoOQVT0ywBcQO zytZ@uX0Dd9OK<u<badowmHhha(18qx4C#;kJdNqQ`gV)Hlg&~qGTq@RwscWf<|n3; zR`0wPmuE;w@Vi~#sH2@KB(3(@;&4_AZ<AGb!mnDBd6Si`IC`^eIo8}c8mpJ*oVI-N z$DX5_le+lJ>q<8ZnjeXq6B~Ozf^oT&wN%`lJ4T<@emnIwOEc2%aZRRn;?5~LYTo7h wzq#6<u$Vfvl0W6$PSdc3uj@a1{M-DGX;O1gaCJP-eNc+^boFyt=akR{0APJM!2kdN diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bbcode/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/bbcode/plugin.js deleted file mode 100644 index 072c2a461..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bbcode/plugin.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.on("dialogDefinition",function(a){var b;b=a.data.name;a=a.data.definition;"link"==b?(a.removeContents("target"),a.removeContents("upload"),a.removeContents("advanced"),b=a.getContents("info"),b.remove("emailSubject"),b.remove("emailBody")):"image"==b&&(a.removeContents("advanced"),b=a.getContents("Link"),b.remove("cmbTarget"),b=a.getContents("info"),b.remove("txtAlt"),b.remove("basic"))});var l={b:"strong",u:"u",i:"em",color:"span",size:"span",quote:"blockquote",code:"code",url:"a", -email:"span",img:"span","*":"li",list:"ol"},x={strong:"b",b:"b",u:"u",em:"i",i:"i",code:"code",li:"*"},m={strong:"b",em:"i",u:"u",li:"*",ul:"list",ol:"list",code:"code",a:"link",img:"img",blockquote:"quote"},y={color:"color",size:"font-size"},z={url:"href",email:"mailhref",quote:"cite",list:"listType"},n=CKEDITOR.dtd,A=CKEDITOR.tools.extend({table:1},n.$block,n.$listItem,n.$tableContent,n.$list),C=/\s*(?:;\s*|$)/,q={smiley:":)",sad:":(",wink:";)",laugh:":D",cheeky:":P",blush:":*)",surprise:":-o", -indecision:":|",angry:"\x3e:(",angel:"o:)",cool:"8-)",devil:"\x3e:-)",crying:";(",kiss:":-*"},B={},r=[],t;for(t in q)B[q[t]]=t,r.push(q[t].replace(/\(|\)|\:|\/|\*|\-|\|/g,function(a){return"\\"+a}));var r=new RegExp(r.join("|"),"g"),D=function(){var a=[],b={nbsp:" ",shy:"­"},c;for(c in b)a.push(c);a=new RegExp("\x26("+a.join("|")+");","g");return function(c){return c.replace(a,function(a,c){return b[c]})}}();CKEDITOR.BBCodeParser=function(){this._={bbcPartsRegex:/(?:\[([^\/\]=]*?)(?:=([^\]]*?))?\])|(?:\[\/([a-z]{1,16})\])/ig}}; -CKEDITOR.BBCodeParser.prototype={parse:function(a){for(var b,c,h=0;b=this._.bbcPartsRegex.exec(a);)if(c=b.index,c>h&&(h=a.substring(h,c),this.onText(h,1)),h=this._.bbcPartsRegex.lastIndex,(c=(b[1]||b[3]||"").toLowerCase())&&!l[c])this.onText(b[0]);else if(b[1]){var f=l[c],k={},g={};if(b=b[2])if("list"==c&&(isNaN(b)?/^[a-z]+$/.test(b)?b="lower-alpha":/^[A-Z]+$/.test(b)&&(b="upper-alpha"):b="decimal"),y[c]){"size"==c&&(b+="%");g[y[c]]=b;b=k;var e="",d=void 0;for(d in g)var u=(d+":"+g[d]).replace(C, -";"),e=e+u;b.style=e}else z[c]&&(k[z[c]]=CKEDITOR.tools.htmlDecode(b));if("email"==c||"img"==c)k.bbcode=c;this.onTagOpen(f,k,CKEDITOR.dtd.$empty[f])}else if(b[3])this.onTagClose(l[c]);if(a.length>h)this.onText(a.substring(h,a.length),1)}};CKEDITOR.htmlParser.fragment.fromBBCode=function(a){function b(a){if(0<g.length)for(var f=0;f<g.length;f++){var b=g[f],c=b.name,k=CKEDITOR.dtd[c],e=d.name&&CKEDITOR.dtd[d.name];e&&!e[c]||a&&k&&!k[a]&&CKEDITOR.dtd[a]||(b=b.clone(),b.parent=d,d=b,g.splice(f,1),f--)}} -function c(a,f){var b=d.children.length,c=0<b&&d.children[b-1],b=!c&&v.getRule(m[d.name],"breakAfterOpen"),c=c&&c.type==CKEDITOR.NODE_ELEMENT&&v.getRule(m[c.name],"breakAfterClose"),k=a&&v.getRule(m[a],f?"breakBeforeClose":"breakBeforeOpen");e&&(b||c||k)&&e--;e&&a in A&&e++;for(;e&&e--;)d.children.push(new CKEDITOR.htmlParser.element("br"))}function h(a,f){c(a.name,1);f=f||d||k;var b=f.children.length;a.previous=0<b&&f.children[b-1]||null;a.parent=f;f.children.push(a);a.returnPoint&&(d=a.returnPoint, -delete a.returnPoint)}var f=new CKEDITOR.BBCodeParser,k=new CKEDITOR.htmlParser.fragment,g=[],e=0,d=k,u;f.onTagOpen=function(a,k){var e=new CKEDITOR.htmlParser.element(a,k);if(CKEDITOR.dtd.$removeEmpty[a])g.push(e);else{var w=d.name,p=w&&(CKEDITOR.dtd[w]||(d._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span));if(p&&!p[a]){var p=!1,l;a==w?h(d,d.parent):(a in CKEDITOR.dtd.$listItem?(f.onTagOpen("ul",{}),l=d):(h(d,d.parent),g.unshift(d)),p=!0);d=l?l:d.returnPoint||d.parent;if(p){f.onTagOpen.apply(this, -arguments);return}}b(a);c(a);e.parent=d;e.returnPoint=u;u=0;e.isEmpty?h(e):d=e}};f.onTagClose=function(a){for(var f=g.length-1;0<=f;f--)if(a==g[f].name){g.splice(f,1);return}for(var b=[],c=[],e=d;e.type&&e.name!=a;)e._.isBlockLike||c.unshift(e),b.push(e),e=e.parent;if(e.type){for(f=0;f<b.length;f++)a=b[f],h(a,a.parent);d=e;h(e,e.parent);e==d&&(d=d.parent);g=g.concat(c)}};f.onText=function(a){var f=CKEDITOR.dtd[d.name];if(!f||f["#"])c(),b(),a.replace(/(\r\n|[\r\n])|[^\r\n]*/g,function(a,f){if(void 0!== -f&&f.length)e++;else if(a.length){var b=0;a.replace(r,function(f,c){h(new CKEDITOR.htmlParser.text(a.substring(b,c)),d);h(new CKEDITOR.htmlParser.element("smiley",{desc:B[f]}),d);b=c+f.length});b!=a.length&&h(new CKEDITOR.htmlParser.text(a.substring(b,a.length)),d)}})};for(f.parse(CKEDITOR.tools.htmlEncode(a));d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT;)a=d.parent,h(d,a),d=a;return k};var v=new (CKEDITOR.tools.createClass({$:function(){this._={output:[],rules:[]};this.setRules("list",{breakBeforeOpen:1, -breakAfterOpen:1,breakBeforeClose:1,breakAfterClose:1});this.setRules("*",{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:1,breakAfterClose:0});this.setRules("quote",{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:0,breakAfterClose:1})},proto:{setRules:function(a,b){var c=this._.rules[a];c?CKEDITOR.tools.extend(c,b,!0):this._.rules[a]=b},getRule:function(a,b){return this._.rules[a]&&this._.rules[a][b]},openTag:function(a){a in l&&(this.getRule(a,"breakBeforeOpen")&&this.lineBreak(1),this.write("[", -a))},openTagClose:function(a){"br"==a?this._.output.push("\n"):a in l&&(this.write("]"),this.getRule(a,"breakAfterOpen")&&this.lineBreak(1))},attribute:function(a,b){"option"==a&&this.write("\x3d",b)},closeTag:function(a){a in l&&(this.getRule(a,"breakBeforeClose")&&this.lineBreak(1),"*"!=a&&this.write("[/",a,"]"),this.getRule(a,"breakAfterClose")&&this.lineBreak(1))},text:function(a){this.write(a)},comment:function(){},lineBreak:function(){!this._.hasLineBreak&&this._.output.length&&(this.write("\n"), -this._.hasLineBreak=1)},write:function(){this._.hasLineBreak=0;var a=Array.prototype.join.call(arguments,"");this._.output.push(a)},reset:function(){this._.output=[];this._.hasLineBreak=0},getHtml:function(a){var b=this._.output.join("");a&&this.reset();return D(b)}}}));CKEDITOR.plugins.add("bbcode",{requires:"entities",beforeInit:function(a){CKEDITOR.tools.extend(a.config,{enterMode:CKEDITOR.ENTER_BR,basicEntities:!1,entities:!1,fillEmptyBlocks:!1},!0);a.filter.disable();a.activeEnterMode=a.enterMode= -CKEDITOR.ENTER_BR},init:function(a){function b(a){var b=a.data;a=CKEDITOR.htmlParser.fragment.fromBBCode(a.data.dataValue);var c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,h);a=c.getHtml(!0);b.dataValue=a}var c=a.config,h=new CKEDITOR.htmlParser.filter;h.addRules({elements:{blockquote:function(a){var b=new CKEDITOR.htmlParser.element("div");b.children=a.children;a.children=[b];if(b=a.attributes.cite){var c=new CKEDITOR.htmlParser.element("cite");c.add(new CKEDITOR.htmlParser.text(b.replace(/^"|"$/g, -"")));delete a.attributes.cite;a.children.unshift(c)}},span:function(a){var b;if(b=a.attributes.bbcode)"img"==b?(a.name="img",a.attributes.src=a.children[0].value,a.children=[]):"email"==b&&(a.name="a",a.attributes.href="mailto:"+a.children[0].value),delete a.attributes.bbcode},ol:function(a){a.attributes.listType?"decimal"!=a.attributes.listType&&(a.attributes.style="list-style-type:"+a.attributes.listType):a.name="ul";delete a.attributes.listType},a:function(a){a.attributes.href||(a.attributes.href= -a.children[0].value)},smiley:function(a){a.name="img";var b=a.attributes.desc,g=c.smiley_images[CKEDITOR.tools.indexOf(c.smiley_descriptions,b)],g=CKEDITOR.tools.htmlEncode(c.smiley_path+g);a.attributes={src:g,"data-cke-saved-src":g,title:b,alt:b}}}});a.dataProcessor.htmlFilter.addRules({elements:{$:function(b){var c=b.attributes,g=CKEDITOR.tools.parseCssText(c.style,1),e,d=b.name;if(d in x)d=x[d];else if("span"==d)if(e=g.color)d="color",e=CKEDITOR.tools.convertRgbToHex(e);else{if(e=g["font-size"])if(c= -e.match(/(\d+)%$/))e=c[1],d="size"}else if("ol"==d||"ul"==d){if(e=g["list-style-type"])switch(e){case "lower-alpha":e="a";break;case "upper-alpha":e="A"}else"ol"==d&&(e=1);d="list"}else if("blockquote"==d){try{var h=b.children[0],l=b.children[1],m="cite"==h.name&&h.children[0].value;m&&(e='"'+m+'"',b.children=l.children)}catch(n){}d="quote"}else if("a"==d){if(e=c.href)-1!==e.indexOf("mailto:")?(d="email",b.children=[new CKEDITOR.htmlParser.text(e.replace("mailto:",""))],e=""):((d=1==b.children.length&& -b.children[0])&&d.type==CKEDITOR.NODE_TEXT&&d.value==e&&(e=""),d="url")}else if("img"==d){b.isEmpty=0;g=c["data-cke-saved-src"]||c.src;c=c.alt;if(g&&-1!=g.indexOf(a.config.smiley_path)&&c)return new CKEDITOR.htmlParser.text(q[c]);b.children=[new CKEDITOR.htmlParser.text(g)]}b.name=d;e&&(b.attributes.option=e);return null},br:function(a){if((a=a.next)&&a.name in A)return!1}}},1);a.dataProcessor.writer=v;if(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE)a.once("contentDom",function(){a.on("setData",b)}); -else a.on("setData",b)},afterInit:function(a){var b;a._.elementsPath&&(b=a._.elementsPath.filters)&&b.push(function(b){var h=b.getName(),f=m[h]||!1;"link"==f&&0===b.getAttribute("href").indexOf("mailto:")?f="email":"span"==h?b.getStyle("font-size")?f="size":b.getStyle("color")&&(f="color"):"img"==f&&(b=b.data("cke-saved-src")||b.getAttribute("src"))&&0===b.indexOf(a.config.smiley_path)&&(f="smiley");return f})}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidiltr.png b/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidiltr.png deleted file mode 100644 index 310e53c7b6dbbf032df4ce41c5a4701215258c68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUJnS9rJW?46!&pbyA?;VFLk| zbTd0?kDsSxxjg<H^n9VdXfMZ{v-cjJzPN2;aJtIrI7{nUwS0nGbhz)-#!g~LxEt-Y zQDdpYrM$y?EzTEzFFJCj%6HO)Vz!g=3|VWoIhuHB#;WW+c0`(OZ3p8$@BA;mOq2FM zwBfn<YR|iWDQWQ+Tb?{!=&0kRDW6uhw)EW3-Y4G|hOhWM(Z!2%(!J;pv)C@1%)R^9 zgonXl)d7!xJAbFQSbTC{$Eji~pS#b~K;hoo*p7Cg8yCW@f3e^Bma}tL^4EnxAE}nO zMwFx^mZVxG7o`Fz1|tJQGhG97T|>(dLt`sr11l3FZ381K0|SW(<rOFza`RI%(<*Um U$UJ-g2v7rqr>mdKI;Vst05>0}Jpcdz diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidirtl.png b/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/bidirtl.png deleted file mode 100644 index 1fcff90c5859fedbbf6131df09fc20279bbd875a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUJnSo%D2Z46!)9H0U7jAp@R0 z#m2nd0iko5F0#w3m^I2X9g&gM`}EOks?#mEM@uyPlIFkdzWLquj_f3cgj?4Q`W~l5 z`yP;T@(XZw6N<flR(nE=gtCVn!-@@QES5T{e2O-zygTzXe<yKI>hlhL-u~WfZP*$c z>ys~~b!;cpgcjYsQ#*gl<|A^+G9LHLo9<6Kw^_`iNyUj{LWx%Ab~bIz-A&GyO|Jh@ znlPvLlh~cVNol*E<g2W17FKyX*_R>X_O^BLzyE%HWf`IJclrb7XIm4TJr^b10eVWc z#5JNMC9x#cD!C{XNHG{07@FxCnClu^h8P-K85>xc7-<_ASs55eOen8F(U6;;l9^VC WTSMmA^GARh7(8A5T-G@yGywpeXP|ok diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidiltr.png b/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidiltr.png deleted file mode 100644 index f657d52fd65edfab21227b9a58a71a6937ef277e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|Qfzr;B4q#NoGLw)wXW1ZvAe5-gnCbqeeJ8Lk(9E77{J zS9a4D-(MTIRX6(aKDa+Y>Zi3+Q;uV+)wC14c{pQFEmJw=wrdN!z@!D%`^x+Kr!>^t zuE=j(_2|hHmdbgHHMl}TSp|Puv-I`#O-PmO;5cVFC6zP#Z5YcA|L4afBC@9+ShdS= z1OMb%7W2;+R#)$SbE7}kQ$>5ibIUo!0ihinbBYB7fjZLc!mi%ucUsAmA-(lP5T}Ui zMwah$@87wTP+$Mw%f-!wC6v|p`zIH(nLbvN_4M=tLPbAZP+~~f7?F^l|NfMv`KN|6 zJlVQ4B!47-xMrFadZ4-Y_~WhX+73V5xV7v_W38RB`LCvo+RJMNJ4CB14{x|u7kqVV zx$f7Cy7QOrvY2Gfb6u9fMdcM^{A<qkgR8m<3_knU&-Xedefj?P%q4CQ0&f{M=-cgV zJ!8Xaz$Rsv&Z{4n9vK#q?SJ@t+&=fEahA{POlInx>8;E#n{BIc;mD3vtG>IGh-p1g zS5~@n_wHQbi=`GDzc;bxFs;{hoL!<+bn47}r&627g9!|RmI{krE7bcw($hE9dcZxm zIDh8P-&!0D63GG6o;DgjV-@_%H8o1Mm*v)^<W^p<Ijdh8cg;1?_TJQW@u#8Du^O?7 z(^m^iB_BAmwf63nTz&pED)j~D_I8WDd-LW>-veL!)7dOc*Xvjc#I%J3-@JRLXK$DL z+h*I5-scVukF*;u7YO;EiC=zMli|UK4+dfJpS|wqS}=cDmYexU@sh~xyu;6Pg}*cU zcRsOKV%V`~&zmzZC)Fe~X+D_ee7sn9Qk_?I!}q>7n(9CW_dosr7*fcepd`!jd|8Ph zFe$2*xJHzuB$lLFB^RXvDF!10Lo;1NLtO)-5JO`tV`D1=18oCCAbFi}&07==x%nxX YX_dG&EQ=8d1ZrULboFyt=akR{0A|o+YXATM diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidirtl.png b/vendor/unisharp/laravel-ckeditor/plugins/bidi/icons/hidpi/bidirtl.png deleted file mode 100644 index ba1ba355cf46b004c661f96d585d34323883d75a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|V1mPZ!6Kh{JEgy#4Mt2-Jq&{dR&WRo22e?_kmrms!#i za{U-KD+md9`u0t54V$CLZ5N(+@_<mLo8gYaP%)qCTl2oLbF6;isk{B|)zI~;R<Gjy z^IE|^Fw|#x@R{euI@7%^o+~H?T+NbY=vcArKz;tBH*azT7`Yi9f0USflI2>IfS^mt z4tAHdDs2s+qM5UtTprB1{bA4P)B71GKev4M?wx|t)Q1H}Y~-3&uU?%fxMSZwHo?%Y zP*J6(_I7rI&vwTD*%mNN=?Ix0@pAHus(+U_Zagj8IWgx<kBM*osZBNax89sw=PMWS zJSJ6wp=*)DtYzk_b|u!RI<H>d#W6#2m6YwQj}<biIX#Y(RBqh5)$~>JJ!eYfw*NnV z+;~}8T6f0uXza1Qy#ZmN*I8`l6x;uDx)&gE_SCi&E$5gR+^-p@t=se2f4`wjZ2J9h zUAvpfEUPAc`K+g^xba3+^4suv&!>JgW2%&H-1qFtW&3@rU%4mys0L3{z44tv-YD(g zr7{+~Cy76HyEV-0kZE&&oH}Es;G`Y<_uI1;++MzA{ky$;ww5hhbv*Z%g{M$N_QTE| zH|35Ke1dl$eYGe&CtJ?>;oG;eQtm2=<N%SQeTL7B8(iP?u$SzczpCnr`uW|vcW*WR zmMq#C%<z80ySnpE6T&afX$-fS=@T&R>9JOkFy?FGd|US%&-(8Y+JA^YH8N<Diovl2 z6DiwJ$3T(LdcR3aUcJv%{lQaXdaUMkPf*5#2M-uN|CH%I%Cs+$<=)EuJ%6T6J#M-^ zy6$G$swy4^rJ(MH+}k_0Zx;`~@_X%4*7H4vAYc8Tc4m*-2Qd!Lt`k!_?0&>l3pOgs znd`4O_G`J$X|2b{X8cGs5!qNUfByXIw@R<aDOHIvI@vy)^<Gp@U%$Hd_w&_C7h1c! zyTjHy3+2yhF%<IM6Up)~S>qqW6$wqhW8OC1z%;E|;u=wsl30>zm0Xkxq!^4049#>6 z4RsBSLJW<qjE$`f473dlf#h|@HE&Tg<mRVjrd8tBuq;L-5U7E{)78&qol`;+0Bw4b ALI3~& diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/af.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/af.js deleted file mode 100644 index 0b9a692a0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","af",{ltr:"Skryfrigting van links na regs",rtl:"Skryfrigting van regs na links"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ar.js deleted file mode 100644 index a776f7986..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ar",{ltr:"إتجاه النص من اليسار إلى اليمين",rtl:"إتجاه النص من اليمين إلى اليسار"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/az.js deleted file mode 100644 index 841435ab3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","az",{ltr:"Mətnin istiqaməti - soldan sağa",rtl:"Mətnin istiqaməti - sağdan sola"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bg.js deleted file mode 100644 index cd775f893..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","bg",{ltr:"Посока на текста от ляво на дясно",rtl:"Посока на текста от дясно на ляво"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bn.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bn.js deleted file mode 100644 index 34ef74601..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","bn",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bs.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bs.js deleted file mode 100644 index 849f6f416..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","bs",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ca.js deleted file mode 100644 index 10076e238..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ca",{ltr:"Direcció del text d'esquerra a dreta",rtl:"Direcció del text de dreta a esquerra"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cs.js deleted file mode 100644 index fa4a0f890..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","cs",{ltr:"Směr textu zleva doprava",rtl:"Směr textu zprava doleva"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cy.js deleted file mode 100644 index 76b109604..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","cy",{ltr:"Cyfeiriad testun o'r chwith i'r dde",rtl:"Cyfeiriad testun o'r dde i'r chwith"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/da.js deleted file mode 100644 index 9474fffbe..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","da",{ltr:"Tekstretning fra venstre til højre",rtl:"Tekstretning fra højre til venstre"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de-ch.js deleted file mode 100644 index bc7739113..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","de-ch",{ltr:"Leserichtung von Links nach Rechts",rtl:"Leserichtung von Rechts nach Links"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de.js deleted file mode 100644 index 5193d8053..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","de",{ltr:"Leserichtung von Links nach Rechts",rtl:"Leserichtung von Rechts nach Links"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/el.js deleted file mode 100644 index 73f7703fb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","el",{ltr:"Διεύθυνση κειμένου από αριστερά στα δεξιά",rtl:"Διεύθυνση κειμένου από δεξιά στα αριστερά"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-au.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-au.js deleted file mode 100644 index 5939f82d7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","en-au",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-ca.js deleted file mode 100644 index 78827e3ad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","en-ca",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-gb.js deleted file mode 100644 index 3dd382109..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","en-gb",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en.js deleted file mode 100644 index f9aed2a45..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","en",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eo.js deleted file mode 100644 index 30e93b1c2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","eo",{ltr:"Tekstdirekto de maldekstre dekstren",rtl:"Tekstdirekto de dekstre maldekstren"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es-mx.js deleted file mode 100644 index 69388c6ad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","es-mx",{ltr:"Dirección del texto de izquierda a derecha",rtl:"Dirección del texto de derecha a izquierda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es.js deleted file mode 100644 index 7321b290d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","es",{ltr:"Dirección del texto de izquierda a derecha",rtl:"Dirección del texto de derecha a izquierda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/et.js deleted file mode 100644 index cd4995489..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","et",{ltr:"Teksti suund vasakult paremale",rtl:"Teksti suund paremalt vasakule"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eu.js deleted file mode 100644 index 0fbdda3db..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","eu",{ltr:"Testuaren norantza ezkerretik eskuinera",rtl:"Testuaren norantza eskuinetik ezkerrera"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fa.js deleted file mode 100644 index a625ce957..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","fa",{ltr:"جهت متن از چپ به راست",rtl:"جهت متن از راست به چپ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fi.js deleted file mode 100644 index d6501bf93..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","fi",{ltr:"Tekstin suunta vasemmalta oikealle",rtl:"Tekstin suunta oikealta vasemmalle"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fo.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fo.js deleted file mode 100644 index 9f9365057..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","fo",{ltr:"Tekstkós frá vinstru til høgru",rtl:"Tekstkós frá høgru til vinstru"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr-ca.js deleted file mode 100644 index 0f92cc733..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","fr-ca",{ltr:"Direction du texte de gauche à droite",rtl:"Direction du texte de droite à gauche"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr.js deleted file mode 100644 index f3904683c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","fr",{ltr:"Direction du texte de la gauche vers la droite",rtl:"Direction du texte de la droite vers la gauche"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gl.js deleted file mode 100644 index 8c33c9668..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","gl",{ltr:"Dirección do texto de esquerda a dereita",rtl:"Dirección do texto de dereita a esquerda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gu.js deleted file mode 100644 index 69fb4ebee..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","gu",{ltr:"ટેક્ષ્ત્ ની દિશા ડાબે થી જમણે",rtl:"ટેક્ષ્ત્ ની દિશા જમણે થી ડાબે"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/he.js deleted file mode 100644 index 5f35dbcae..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","he",{ltr:"כיוון טקסט משמאל לימין (LTR)",rtl:"כיוון טקסט מימין לשמאל (RTL)"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hi.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hi.js deleted file mode 100644 index 1a56a6762..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","hi",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hr.js deleted file mode 100644 index e53b4d9ed..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","hr",{ltr:"Smjer teksta s lijeva na desno",rtl:"Smjer teksta s desna na lijevo"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hu.js deleted file mode 100644 index 2edc78181..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","hu",{ltr:"Szöveg iránya balról jobbra",rtl:"Szöveg iránya jobbról balra"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/id.js deleted file mode 100644 index a614b243b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","id",{ltr:"Arah penulisan dari kiri ke kanan.",rtl:"Arah penulisan dari kanan ke kiri."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/is.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/is.js deleted file mode 100644 index 9bee7c82b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","is",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/it.js deleted file mode 100644 index c9fc54bc6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","it",{ltr:"Direzione del testo da sinistra verso destra",rtl:"Direzione del testo da destra verso sinistra"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ja.js deleted file mode 100644 index 53ac0ee1b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ja",{ltr:"テキストの向き : 左から右へ",rtl:"テキストの向き : 右から左へ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ka.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ka.js deleted file mode 100644 index fb14539f6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ka",{ltr:"ტექსტის მიმართულება მარცხნიდან მარჯვნივ",rtl:"ტექსტის მიმართულება მარჯვნიდან მარცხნივ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/km.js deleted file mode 100644 index fec2b2427..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","km",{ltr:"ទិស​ដៅ​អក្សរ​ពី​ឆ្វេង​ទៅ​ស្ដាំ",rtl:"ទិស​ដៅ​អក្សរ​ពី​ស្ដាំ​ទៅ​ឆ្វេង"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ko.js deleted file mode 100644 index 3b154acba..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ko",{ltr:"텍스트 방향이 왼쪽에서 오른쪽으로 ",rtl:"텍스트 방향이 오른쪽에서 왼쪽으로"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ku.js deleted file mode 100644 index 9b668f05d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ku",{ltr:"ئاراستەی نووسە لە چەپ بۆ ڕاست",rtl:"ئاراستەی نووسە لە ڕاست بۆ چەپ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lt.js deleted file mode 100644 index d809fc02a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","lt",{ltr:"Tekstas iš kairės į dešinę",rtl:"Tekstas iš dešinės į kairę"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lv.js deleted file mode 100644 index 014b9cfd7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","lv",{ltr:"Teksta virziens no kreisās uz labo",rtl:"Teksta virziens no labās uz kreiso"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mk.js deleted file mode 100644 index aab32ce88..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","mk",{ltr:"Насока на текст: од лево кон десно",rtl:"Насока на текст: од десно кон лево"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mn.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mn.js deleted file mode 100644 index d7f6ba9de..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","mn",{ltr:"Зүүнээс баруун тийш бичлэг",rtl:"Баруунаас зүүн тийш бичлэг"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ms.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ms.js deleted file mode 100644 index 09c685d7e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ms",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nb.js deleted file mode 100644 index 05d502cee..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","nb",{ltr:"Tekstretning fra venstre til høyre",rtl:"Tekstretning fra høyre til venstre"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nl.js deleted file mode 100644 index c7babcff7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","nl",{ltr:"Schrijfrichting van links naar rechts",rtl:"Schrijfrichting van rechts naar links"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/no.js deleted file mode 100644 index e956963bc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","no",{ltr:"Tekstretning fra venstre til høyre",rtl:"Tekstretning fra høyre til venstre"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/oc.js deleted file mode 100644 index bdd8d94c4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","oc",{ltr:"Direccion del tèxte d'esquèrra cap a dreita",rtl:"Direccion del tèxte de dreita cap a esquèrra"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pl.js deleted file mode 100644 index bcee3e0a7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","pl",{ltr:"Kierunek tekstu od lewej strony do prawej",rtl:"Kierunek tekstu od prawej strony do lewej"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt-br.js deleted file mode 100644 index e62c4ca73..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","pt-br",{ltr:"Direção do texto da esquerda para a direita",rtl:"Direção do texto da direita para a esquerda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt.js deleted file mode 100644 index 293ba2511..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","pt",{ltr:"Direção do texto da esquerda para a direita",rtl:"Direção do texto da direita para a esquerda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ro.js deleted file mode 100644 index a35c4200a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ro",{ltr:"Direcția textului de la stânga la dreapta",rtl:"Direcția textului de la dreapta la stânga"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ru.js deleted file mode 100644 index 033c0008d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ru",{ltr:"Направление текста слева направо",rtl:"Направление текста справа налево"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/si.js deleted file mode 100644 index 466e72fa7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","si",{ltr:"වගන්ති දිශාව වමේ සිට දකුණට",rtl:"වගන්ති දිශාව දකුණේ සිට වමට"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sk.js deleted file mode 100644 index 26150c486..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sk",{ltr:"Smer textu zľava doprava",rtl:"Smer textu sprava doľava"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sl.js deleted file mode 100644 index ae184de21..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sl",{ltr:"Smer besedila od leve proti desni",rtl:"Smer besedila od desne proti levi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sq.js deleted file mode 100644 index 8ae3bb3ff..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sq",{ltr:"Drejtimi i tekstit nga e majta në të djathtë",rtl:"Drejtimi i tekstit nga e djathta në të majtë"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr-latn.js deleted file mode 100644 index 04f04fc28..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sr-latn",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr.js deleted file mode 100644 index 56efd86ab..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sr",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sv.js deleted file mode 100644 index b5eb279f6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","sv",{ltr:"Text riktning från vänster till höger",rtl:"Text riktning från höger till vänster"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/th.js deleted file mode 100644 index 82de00f51..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","th",{ltr:"Text direction from left to right",rtl:"Text direction from right to left"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tr.js deleted file mode 100644 index 74fc66414..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","tr",{ltr:"Metin yönü soldan sağa",rtl:"Metin yönü sağdan sola"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tt.js deleted file mode 100644 index f6fea6a70..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","tt",{ltr:"Сулдан уңга язылыш",rtl:"Уңнан сулга язылыш"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ug.js deleted file mode 100644 index 2ad6f0670..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","ug",{ltr:"تېكىست يۆنىلىشى سولدىن ئوڭغا",rtl:"تېكىست يۆنىلىشى ئوڭدىن سولغا"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/uk.js deleted file mode 100644 index aaa68d7e2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","uk",{ltr:"Напрямок тексту зліва направо",rtl:"Напрямок тексту справа наліво"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/vi.js deleted file mode 100644 index ceefbdd9d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","vi",{ltr:"Văn bản hướng từ trái sang phải",rtl:"Văn bản hướng từ phải sang trái"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh-cn.js deleted file mode 100644 index 7eae5cfbd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","zh-cn",{ltr:"文字方向为从左至右",rtl:"文字方向为从右至左"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh.js deleted file mode 100644 index e978e3e78..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("bidi","zh",{ltr:"文字方向從左至右",rtl:"文字方向從右至左"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/bidi/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/bidi/plugin.js deleted file mode 100644 index aa330c703..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/bidi/plugin.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function q(a,f,d,b){if(!a.isReadOnly()&&!a.equals(d.editable())){CKEDITOR.dom.element.setMarker(b,a,"bidi_processed",1);b=a;for(var c=d.editable();(b=b.getParent())&&!b.equals(c);)if(b.getCustomData("bidi_processed")){a.removeStyle("direction");a.removeAttribute("dir");return}b="useComputedState"in d.config?d.config.useComputedState:1;(b?a.getComputedStyle("direction"):a.getStyle("direction")||a.hasAttribute("dir"))!=f&&(a.removeStyle("direction"),b?(a.removeAttribute("dir"),f!=a.getComputedStyle("direction")&& -a.setAttribute("dir",f)):a.setAttribute("dir",f),d.forceNextSelectionCheck())}}function v(a,f,d){var b=a.getCommonAncestor(!1,!0);a=a.clone();a.enlarge(d==CKEDITOR.ENTER_BR?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(a.checkBoundaryOfElement(b,CKEDITOR.START)&&a.checkBoundaryOfElement(b,CKEDITOR.END)){for(var c;b&&b.type==CKEDITOR.NODE_ELEMENT&&(c=b.getParent())&&1==c.getChildCount()&&!(b.getName()in f);)b=c;return b.type==CKEDITOR.NODE_ELEMENT&&b.getName()in f&&b}}function p(a){return{context:"p", -allowedContent:{"h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td":{propertiesOnly:!0,attributes:"dir"}},requiredContent:"p[dir]",refresh:function(a,d){var b=a.config.useComputedState,c,b=void 0===b||b;if(!b){c=d.lastElement;for(var h=a.editable();c&&!(c.getName()in u||c.equals(h));){var e=c.getParent();if(!e)break;c=e}}c=c||d.block||d.blockLimit;c.equals(a.editable())&&(h=a.getSelection().getRanges()[0].getEnclosedNode())&&h.type==CKEDITOR.NODE_ELEMENT&&(c=h);c&&(b=b?c.getComputedStyle("direction"): -c.getStyle("direction")||c.getAttribute("dir"),a.getCommand("bidirtl").setState("rtl"==b?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF),a.getCommand("bidiltr").setState("ltr"==b?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF));b=(d.block||d.blockLimit||a.editable()).getDirection(1);b!=(a._.selDir||a.lang.dir)&&(a._.selDir=b,a.fire("contentDirChanged",b))},exec:function(f){var d=f.getSelection(),b=f.config.enterMode,c=d.getRanges();if(c&&c.length){for(var h={},e=d.createBookmarks(),c=c.createIterator(),g, -l=0;g=c.getNextRange(1);){var k=g.getEnclosedNode();k&&(!k||k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in r)||(k=v(g,t,b));k&&q(k,a,f,h);var m=new CKEDITOR.dom.walker(g),n=e[l].startNode,p=e[l++].endNode;m.evaluator=function(a){var c=b==CKEDITOR.ENTER_P?"p":"div",d;if(d=(a?a.type==CKEDITOR.NODE_ELEMENT:!1)&&a.getName()in t){if(c=a.is(c))c=(c=a.getParent())?c.type==CKEDITOR.NODE_ELEMENT:!1;d=!(c&&a.getParent().is("blockquote"))}return!!(d&&a.getPosition(n)&CKEDITOR.POSITION_FOLLOWING&&(a.getPosition(p)& -CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_CONTAINS)==CKEDITOR.POSITION_PRECEDING)};for(;k=m.next();)q(k,a,f,h);g=g.createIterator();for(g.enlargeBr=b!=CKEDITOR.ENTER_BR;k=g.getNextParagraph(b==CKEDITOR.ENTER_P?"p":"div");)q(k,a,f,h)}CKEDITOR.dom.element.clearAllMarkers(h);f.forceNextSelectionCheck();d.selectBookmarks(e);f.focus()}}}}function w(a){var f=a==l.setAttribute,d=a==l.removeAttribute,b=/\bdirection\s*:\s*(.*?)\s*(:?$|;)/;return function(c,h){if(!this.isReadOnly()){var e;if(e=c==(f||d? -"dir":"direction")||"style"==c&&(d||b.test(h))){a:{e=this;for(var g=e.getDocument().getBody().getParent();e;){if(e.equals(g)){e=!1;break a}e=e.getParent()}e=!0}e=!e}if(e&&(e=this.getDirection(1),g=a.apply(this,arguments),e!=this.getDirection(1)))return this.getDocument().fire("dirChanged",this),g}return a.apply(this,arguments)}}var t={table:1,ul:1,ol:1,blockquote:1,div:1},r={},u={};CKEDITOR.tools.extend(r,t,{tr:1,p:1,div:1,li:1});CKEDITOR.tools.extend(u,r,{td:1});CKEDITOR.plugins.add("bidi",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn", -icons:"bidiltr,bidirtl",hidpi:!0,init:function(a){function f(b,c,d,e,f){a.addCommand(d,new CKEDITOR.command(a,e));a.ui.addButton&&a.ui.addButton(b,{label:c,command:d,toolbar:"bidi,"+f})}if(!a.blockless){var d=a.lang.bidi;f("BidiLtr",d.ltr,"bidiltr",p("ltr"),10);f("BidiRtl",d.rtl,"bidirtl",p("rtl"),20);a.on("contentDom",function(){a.document.on("dirChanged",function(b){a.fire("dirChanged",{node:b.data,dir:b.data.getDirection(1)})})});a.on("contentDirChanged",function(b){b=(a.lang.dir!=b.data?"add": -"remove")+"Class";var c=a.ui.space(a.config.toolbarLocation);if(c)c[b]("cke_mixed_dir_content")})}}});for(var l=CKEDITOR.dom.element.prototype,n=["setStyle","removeStyle","setAttribute","removeAttribute"],m=0;m<n.length;m++)l[n[m]]=CKEDITOR.tools.override(l[n[m]],w)})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/dialogs/codesnippet.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/dialogs/codesnippet.js deleted file mode 100644 index 8fd8149dc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/dialogs/codesnippet.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.dialog.add("codeSnippet",function(c){var b=c._.codesnippet.langs,d=c.lang.codesnippet,g=document.documentElement.clientHeight,e=[],f;e.push([c.lang.common.notSet,""]);for(f in b)e.push([b[f],f]);b=CKEDITOR.document.getWindow().getViewPaneSize();c=Math.min(b.width-70,800);b=b.height/1.5;650>g&&(b=g-220);return{title:d.title,minHeight:200,resizable:CKEDITOR.DIALOG_RESIZE_NONE,contents:[{id:"info",elements:[{id:"lang",type:"select",label:d.language,items:e,setup:function(a){a.ready&& -a.data.lang&&this.setValue(a.data.lang);!CKEDITOR.env.gecko||a.data.lang&&a.ready||(this.getInputElement().$.selectedIndex=-1)},commit:function(a){a.setData("lang",this.getValue())}},{id:"code",type:"textarea",label:d.codeContents,setup:function(a){this.setValue(a.data.code)},commit:function(a){a.setData("code",this.getValue())},required:!0,validate:CKEDITOR.dialog.validate.notEmpty(d.emptySnippetError),inputStyle:"cursor:auto;width:"+c+"px;height:"+b+"px;tab-size:4;text-align:left;","class":"cke_source"}]}]}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/codesnippet.png b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/codesnippet.png deleted file mode 100644 index c71851067105640817b7a7360126b1127c60683e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU}W}maSX9Iy)@V`>#&2s zoSU2d*c3S$7o5_HRqr==aro7r_8s9X{g!wxbh7L7RMtGynR;9@qHO2g*>i6vM}~_2 zV`g4pSa(92p^u&a=h+iSSU=m&c(pUq;E~ckHr?#$T+>cgD=@^IOGw(AWq3?J>;IAi zmfv?Y2{3v3)rBR9$A0a8SYxN`Da6?DJ&wUaD6MTam&(EF^&4N`S@FL5PKW|$n%bm{ zS#1mf(^AzqBd4ugmtB-Ae&$W+rQIq#hY!3h>lQflXO6_<+pqLItR~hdcAEIIChUt5 zIXb!c-IiV4lN4SiZ@-=U;cVC8hYxnI`>nzm{rh`nLGJBif9u{eDxClP{P9PLWq-ua zx0D=moc2Kl7(%Kgt`Q|Ei6yC4$wjF^iowXh&`j6BT-VSt#L(Ev*ucufNZY{3%D_Nk hLU{#>hTQy=%(P0}8ZytGKLXUi;OXk;vd$@?2>?^$!l3{F diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/hidpi/codesnippet.png b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/icons/hidpi/codesnippet.png deleted file mode 100644 index 2de477f6b1345fd235c347deff599628924022d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1046 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|T>^r;B4q#NngiwizOhBLD8qPTd)!*IwncVgD(kh-IQd zTur@GS-7<wwYj-nSsWd8bX<a>G&1t%8%0ENt@KfxE>c}I{mvPi?mM^7oICq&uIGiu zhtJ-gG5=h*?|WLGnVH!FUl#@jmnl<TUz;n&&(QP#jzoh`^~whuCk0J>{Il}Yq8~aX z?r(NYIX&yzUtKu{BL)%OHEcSH?$YzP)_WDO{7d(BQBXQjAf&(5C+XU?T!CFSrt3bo zv>0hSIJ$&XDgU_|SDrAVNVDct)mI1AWe1;$<Xsb4wJcvrsCtW1im%>0@utrQQVM;V zTAv>~_2NM!pAMH@@6~(1kNxzL?U*I>@QHKNU0=z^bD9m^f_}GgspwDK#jToF8}zyD zwE8^%B8S2mmxH=qm@73Isx8fUy2nfG%28{(6?*$$KYR6Im4h<-E54{Ls$4No_dKb7 zu!eoznl&+3Ufp{ARnKIt|6cZxY|h_b4$Y7}E?s6d_gsO+o$Eo?5<Gli;o-MS-3m`V z+7Ol<E`IE>!0hKgr!LayGWfpt`;FVTf1f=w-I;moXA`w4Hzpj?Q#!fvn8o?eTMr*T zJl~MB^q%GS?8?fYSve2xcv-CP<mfRp@9XO;W8&W49CQEr!2*jvc|AMr4mW15&X6ls zxY%!=P-igHXCKRs{Kp?FVq<OO`m0?+UM$)AZM9)q@OAw!avXP;C1>l-s61`?y{qHF zUUuX63=!E|qg2;j%{mx$o7EuTPl{3H`7`-fnWZkzyy4GmbGfslti1f;oZZ3u-p+7z z(GPKaU%PUPA=|MT<_ll%{r=r;ao|^9iRhV0yH5SBlXndaIg!2g?};<tL$Bo|JZryp zOT9~dQId(&#Y>lh{{C;O+|;q)_S-Be8J3)S-UpQnKEyu1b6Vku{hZ>vWxHdSJ)CKj zAa&VWX_K&zE!VO4OsBW6-CCRMb8`D8J{5}%6MS4we3m)4Gu!3MLdW~(uig5pb6RVO z{bcq-UDHw}8Sa=Jv+=$%O_#y^@Zp(~XJY<q#BMPxK3Ty~aLzXEnP&i}edmd^9>ZfY z+I4br9s4^^1j{n-SX%thTl=)plgd8(D>c&ubLOd=0yB<kiEBhjN@7W>RdP`(kYX@0 zFf`LOG}JXP3NbXcGB&m{FwizI1d`Vo*Stm1kei>9nO2Eg!?GBWK%fQ&Pgg&ebxsLQ E0M3NQ?EnA( diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ar.js deleted file mode 100644 index c7638745a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ar",{button:"أدمج قصاصة الشيفرة",codeContents:"محتوى الشيفرة",emptySnippetError:"قصاصة الشيفرة لايمكن أن تكون فارغة.",language:"لغة",title:"قصاصة الشيفرة",pathName:"قصاصة الشيفرة"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/az.js deleted file mode 100644 index 96402dae3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","az",{button:"Kodun parçasını əlavə et",codeContents:"Kod",emptySnippetError:"Kodun parçasını boş ola bilməz",language:"Programlaşdırma dili",title:"Kodun parçasını",pathName:"kodun parçasını"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/bg.js deleted file mode 100644 index 2fd8c6503..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","bg",{button:"Въвеждане на блок с код",codeContents:"Съдържание на кода",emptySnippetError:"Блока с код не може да бъде празен.",language:"Език",title:"Блок с код",pathName:"блок с код"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ca.js deleted file mode 100644 index d4da9f0d9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ca",{button:"Insereix el fragment de codi",codeContents:"Contingut del codi",emptySnippetError:"El fragment de codi no pot estar buit.",language:"Idioma",title:"Fragment de codi",pathName:"fragment de codi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/cs.js deleted file mode 100644 index ba32cd09b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","cs",{button:"Vložit úryvek kódu",codeContents:"Obsah kódu",emptySnippetError:"Úryvek kódu nemůže být prázdný.",language:"Jazyk",title:"Úryvek kódu",pathName:"úryvek kódu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/da.js deleted file mode 100644 index bcd355ea3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","da",{button:"Indsæt kodestykket her",codeContents:"Koden",emptySnippetError:"Kodestykket kan ikke være tomt.",language:"Sprog",title:"Kodestykke",pathName:"kodestykke"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de-ch.js deleted file mode 100644 index 99e8f62fc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","de-ch",{button:"Codeschnipsel einfügen",codeContents:"Codeinhalt",emptySnippetError:"Ein Codeschnipsel darf nicht leer sein.",language:"Sprache",title:"Codeschnipsel",pathName:"Codeschnipsel"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de.js deleted file mode 100644 index 7cf149218..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","de",{button:"Codeschnipsel einfügen",codeContents:"Codeinhalt",emptySnippetError:"Ein Codeschnipsel darf nicht leer sein.",language:"Sprache",title:"Codeschnipsel",pathName:"Codeschnipsel"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/el.js deleted file mode 100644 index c6d927ddb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","el",{button:"Εισαγωγή Αποσπάσματος Κώδικα",codeContents:"Περιεχόμενο κώδικα",emptySnippetError:"Δεν γίνεται να είναι κενά τα αποσπάσματα κώδικα.",language:"Γλώσσα",title:"Απόσπασμα κώδικα",pathName:"απόσπασμα κώδικα"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en-gb.js deleted file mode 100644 index b6bff686f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","en-gb",{button:"Insert Code Snippet",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en.js deleted file mode 100644 index 0b5c45510..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","en",{button:"Insert Code Snippet",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eo.js deleted file mode 100644 index 723164d88..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","eo",{button:"Enmeti kodaĵeron",codeContents:"Kodenhavo",emptySnippetError:"Kodaĵero ne povas esti malplena.",language:"Lingvo",title:"Kodaĵero",pathName:"kodaĵero"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es-mx.js deleted file mode 100644 index 98f6c7073..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","es-mx",{button:"Insertar fragmento de código",codeContents:"Contenido del código",emptySnippetError:"Un fragmento de código no puede estar vacio.",language:"Idioma",title:"Fragmento de código",pathName:"fragmento de código"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es.js deleted file mode 100644 index 57f9fdef5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","es",{button:"Insertar fragmento de código",codeContents:"Contenido del código",emptySnippetError:"Un fragmento de código no puede estar vacío.",language:"Lenguaje",title:"Fragmento de código",pathName:"fragmento de código"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/et.js deleted file mode 100644 index ef3792505..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","et",{button:"Koodilõigu sisestamine",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eu.js deleted file mode 100644 index 33d37d834..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","eu",{button:"Txertatu kode zatia",codeContents:"Kode edukia",emptySnippetError:"Kode zatiak ezin du hutsik egon.",language:"Lengoaia",title:"Kode zatia",pathName:"kode zatia"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fa.js deleted file mode 100644 index c4509c944..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","fa",{button:"قرار دادن کد قطعه",codeContents:"محتوای کد",emptySnippetError:"کد نمی تواند خالی باشد.",language:"زبان",title:"کد قطعه",pathName:"کد قطعه"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fi.js deleted file mode 100644 index 071cfd2e5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","fi",{button:"Lisää koodileike",codeContents:"Koodisisältö",emptySnippetError:"Koodileike ei voi olla tyhjä.",language:"Kieli",title:"Koodileike",pathName:"koodileike"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr-ca.js deleted file mode 100644 index 254a6aa53..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","fr-ca",{button:"Insérer du code",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr.js deleted file mode 100644 index 43e9e7d05..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","fr",{button:"Insérer un extrait de code",codeContents:"Code",emptySnippetError:"Un extrait de code ne peut pas être vide.",language:"Langue",title:"Extrait de code",pathName:"extrait de code"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/gl.js deleted file mode 100644 index 4e9bcfbef..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","gl",{button:"Inserir fragmento de código",codeContents:"Contido do código",emptySnippetError:"Un fragmento de código non pode estar baleiro.",language:"Linguaxe",title:"Fragmento de código",pathName:"fragmento de código"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/he.js deleted file mode 100644 index 47bb4b497..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","he",{button:"הכנס קטע קוד",codeContents:"תוכן קוד",emptySnippetError:"קטע קוד לא יכול להיות ריק.",language:"שפה",title:"קטע קוד",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hr.js deleted file mode 100644 index 48b7272f5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","hr",{button:"Ubaci isječak kôda",codeContents:"Sadržaj kôda",emptySnippetError:"Isječak kôda ne može biti prazan.",language:"Jezik",title:"Isječak kôda",pathName:"isječak kôda"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hu.js deleted file mode 100644 index 3a9844b52..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","hu",{button:"Illeszd be a kódtöredéket",codeContents:"Kód tartalom",emptySnippetError:"A kódtöredék nem lehet üres.",language:"Nyelv",title:"Kódtöredék",pathName:"kódtöredék"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/id.js deleted file mode 100644 index 83323b45e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","id",{button:"Masukkan potongan kode",codeContents:"Konten kode",emptySnippetError:"Potongan kode tidak boleh kosong",language:"Bahasa",title:"Potongan kode",pathName:"potongan kode"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/it.js deleted file mode 100644 index b544024b4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","it",{button:"Inserisci frammento di codice",codeContents:"Contenuto del codice",emptySnippetError:"Un frammento di codice non può essere vuoto.",language:"Lingua",title:"Frammento di codice",pathName:"frammento di codice"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ja.js deleted file mode 100644 index 9903eac61..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ja",{button:"コードスニペットを挿入",codeContents:"コード内容",emptySnippetError:"コードスニペットを入力してください。",language:"言語",title:"コードスニペット",pathName:"コードスニペット"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/km.js deleted file mode 100644 index 7f041e97c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","km",{button:"Insert Code Snippet",codeContents:"មាតិកាកូដ",emptySnippetError:"A code snippet cannot be empty.",language:"ភាសា",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ko.js deleted file mode 100644 index e23ad4675..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ko",{button:"코드 스니펫 삽입",codeContents:"코드 본문",emptySnippetError:"코드 스니펫은 빈칸일 수 없습니다.",language:"언어",title:"코드 스니펫",pathName:"코드 스니펫"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ku.js deleted file mode 100644 index e6a4bb7e8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ku",{button:"تێخستنی تیتکی کۆد",codeContents:"ناوەڕۆکی کۆد",emptySnippetError:"تیتکی کۆد نابێت بەتاڵ بێت.",language:"زمان",title:"تیتکی کۆد",pathName:"تیتکی کۆد"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lt.js deleted file mode 100644 index 8a0c8c059..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","lt",{button:"Įterpkite kodo gabaliuką",codeContents:"Kodo turinys",emptySnippetError:"Kodo fragmentas negali būti tusčias.",language:"Kalba",title:"Kodo fragmentas",pathName:"kodo fragmentas"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lv.js deleted file mode 100644 index 265318e53..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","lv",{button:"Ievietot koda fragmentu",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nb.js deleted file mode 100644 index 910cf7dd1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","nb",{button:"Sett inn kodesnutt",codeContents:"Kodeinnhold",emptySnippetError:"En kodesnutt kan ikke være tom.",language:"Språk",title:"Kodesnutt",pathName:"kodesnutt"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nl.js deleted file mode 100644 index b2a244275..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","nl",{button:"Stuk code invoegen",codeContents:"Code",emptySnippetError:"Een stuk code kan niet leeg zijn.",language:"Taal",title:"Stuk code",pathName:"stuk code"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/no.js deleted file mode 100644 index ae1707f33..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","no",{button:"Sett inn kodesnutt",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/oc.js deleted file mode 100644 index 96013fd81..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","oc",{button:"Inserir un extrait de còdi",codeContents:"Còdi",emptySnippetError:"Un extrait de còdi pòt pas èsser void.",language:"Lenga",title:"Extrait de còdi",pathName:"extrait de còdi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pl.js deleted file mode 100644 index cdf94e6cb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","pl",{button:"Wstaw fragment kodu",codeContents:"Treść kodu",emptySnippetError:"Kod nie może być pusty.",language:"Język",title:"Fragment kodu",pathName:"fragment kodu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt-br.js deleted file mode 100644 index 3aa79358c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","pt-br",{button:"Inserir fragmento de código",codeContents:"Conteúdo do código",emptySnippetError:"Um fragmento de código não pode ser vazio",language:"Idioma",title:"Fragmento de código",pathName:"fragmento de código"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt.js deleted file mode 100644 index d216d3864..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","pt",{button:"Inserir fragmento de código",codeContents:"Conteúdo do código",emptySnippetError:"A code snippet cannot be empty.",language:"Idioma",title:"Segmento de código",pathName:"Fragmento de código"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ro.js deleted file mode 100644 index 7e1c67e3c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ro",{button:"Adaugă segment de cod",codeContents:"Conținutul codului",emptySnippetError:"Un segment de cod nu poate fi gol.",language:"Limba",title:"Segment de cod",pathName:"segment de cod"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ru.js deleted file mode 100644 index 4226cbc66..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ru",{button:"Вставить сниппет",codeContents:"Содержимое кода",emptySnippetError:"Сниппет не может быть пустым",language:"Язык",title:"Сниппет",pathName:"сниппет"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sk.js deleted file mode 100644 index 4fb5a462e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","sk",{button:"Vložte ukážku programového kódu",codeContents:"Obsah kódu",emptySnippetError:"Ukážka kódu nesmie byť prázdna.",language:"Jazyk",title:"Ukážka programového kódu",pathName:"ukážka programového kódu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sl.js deleted file mode 100644 index 7312dd556..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","sl",{button:"Vstavi odsek kode",codeContents:"Vsebina kode",emptySnippetError:"Odsek kode ne more biti prazen.",language:"Jezik",title:"Odsek kode",pathName:"odsek kode"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sq.js deleted file mode 100644 index c4202e365..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","sq",{button:"Shto kod copëze",codeContents:"Përmbajtja e kodit",emptySnippetError:"A code snippet cannot be empty.",language:"Gjuha",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sv.js deleted file mode 100644 index 785fd9256..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","sv",{button:"Infoga kodsnutt",codeContents:"Kodinnehålll",emptySnippetError:"Innehåll krävs för kodsnutt",language:"Språk",title:"Kodsnutt",pathName:"kodsnutt"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/th.js deleted file mode 100644 index 1f1723d2a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/th.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","th",{button:"แทรกชิ้นส่วนของรหัสหรือโค้ด",codeContents:"Code content",emptySnippetError:"A code snippet cannot be empty.",language:"Language",title:"Code snippet",pathName:"code snippet"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tr.js deleted file mode 100644 index 38a725ed6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","tr",{button:"Kod parçacığı ekle",codeContents:"Kod",emptySnippetError:"Kod parçacığı boş bırakılamaz",language:"Dil",title:"Kod parçacığı",pathName:"kod parçacığı"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tt.js deleted file mode 100644 index 5998bff74..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","tt",{button:"Код өзеген өстәү",codeContents:"Код эчтәлеге",emptySnippetError:"Код өзеге буш булмаска тиеш.",language:"Тел",title:"Код өзеге",pathName:"код өзеге"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ug.js deleted file mode 100644 index e8c0fef4d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","ug",{button:"كود پارچىسى قىستۇرۇش",codeContents:"كود مەزمۇنى",emptySnippetError:"كود پارچىسى بوش قالمايدۇ",language:"تىل",title:"كود پارچىسى",pathName:"كود پارچىسى"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/uk.js deleted file mode 100644 index 8b23f1995..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","uk",{button:"Вставити фрагмент коду",codeContents:"Код",emptySnippetError:"Фрагмент коду не можи бути порожнім.",language:"Мова",title:"Фрагмент коду",pathName:"фрагмент коду"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/vi.js deleted file mode 100644 index e2bedd7bb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","vi",{button:"Chèn đoạn mã",codeContents:"Nội dung mã",emptySnippetError:"Một đoạn mã không thể để trống.",language:"Ngôn ngữ",title:"Đoạn mã",pathName:"mã dính"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh-cn.js deleted file mode 100644 index 824ca4d03..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","zh-cn",{button:"插入代码段",codeContents:"代码内容",emptySnippetError:"插入的代码不能为空。",language:"代码语言",title:"代码段",pathName:"代码段"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh.js deleted file mode 100644 index 0c31b193b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("codesnippet","zh",{button:"插入程式碼片段",codeContents:"程式碼內容",emptySnippetError:"程式碼片段不可為空白。",language:"語言",title:"程式碼片段",pathName:"程式碼片段"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md deleted file mode 100644 index f878062bb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md +++ /dev/null @@ -1,827 +0,0 @@ -## Version 8.0 beta - -This new major release is quite a big overhaul bringing both new features and -some backwards incompatible changes. However, chances are that the majority of -users won't be affected by the latter: the basic scenario described in the -README is left intact. - -Here's what did change in an incompatible way: - -- We're now prefixing all classes located in [CSS classes reference][cr] with - `hljs-`, by default, because some class names would collide with other - people's stylesheets. If you were using an older version, you might still want - the previous behavior, but still want to upgrade. To suppress this new - behavior, you would initialize like so: - - ```html - <script type="text/javascript"> - hljs.configure({classPrefix: ''}); - hljs.initHighlightingOnLoad(); - </script> - ``` - -- `tabReplace` and `useBR` that were used in different places are also unified - into the global options object and are to be set using `configure(options)`. - This function is documented in our [API docs][]. Also note that these - parameters are gone from `highlightBlock` and `fixMarkup` which are now also - rely on `configure`. - -- We removed public-facing (though undocumented) object `hljs.LANGUAGES` which - was used to register languages with the library in favor of two new methods: - `registerLanguage` and `getLanguage`. Both are documented in our [API docs][]. - -- Result returned from `highlight` and `highlightAuto` no longer contains two - separate attributes contributing to relevance score, `relevance` and - `keyword_count`. They are now unified in `relevance`. - -Another technically compatible change that nonetheless might need attention: - -- The structure of the NPM package was refactored, so if you had installed it - locally, you'll have to update your paths. The usual `require('highlight.js')` - works as before. This is contributed by [Dmitry Smolin][]. - -New features: - -- Languages now can be recognized by multiple names like "js" for JavaScript or - "html" for, well, HTML (which earlier insisted on calling it "xml"). These - aliases can be specified in the class attribute of the code container in your - HTML as well as in various API calls. For now there are only a few very common - aliases but we'll expand it in the future. All of them are listed in the - [class reference][]. - -- Language detection can now be restricted to a subset of languages relevant in - a given context — a web page or even a single highlighting call. This is - especially useful for node.js build that includes all the known languages. - Another example is a StackOverflow-style site where users specify languages - as tags rather than in the markdown-formatted code snippets. This is - documented in the [API reference][] (see methods `highlightAuto` and - `configure`). - -- Language definition syntax streamlined with [variants][] and - [beginKeywords][]. - -New languages and styles: - -- *Oxygene* by [Carlo Kok][] -- *Mathematica* by [Daniel Kvasnička][] -- *Autohotkey* by [Seongwon Lee][] -- *Atelier* family of styles in 10 variants by [Bram de Haan][] -- *Paraíso* styles by [Jan T. Sott][] - -Miscelleanous improvements: - -- Highlighting `=>` prompts in Clojure. -- [Jeremy Hull][] fixed a lot of styles for consistency. -- Finally, highlighting PHP and HTML [mixed in peculiar ways][php-html]. -- Objective C and C# now properly highlight titles in method definition. -- Big overhaul of relevance counting for a number of languages. Please do report - bugs about mis-detection of non-trivial code snippets! - -[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html -[api docs]: http://highlightjs.readthedocs.org/en/latest/api.html -[variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion -[beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d -[php-html]: https://twitter.com/highlightjs/status/408890903017689088 - -[Carlo Kok]: https://github.com/carlokok -[Bram de Haan]: https://github.com/atelierbram -[Daniel Kvasnička]: https://github.com/dkvasnicka -[Dmitry Smolin]: https://github.com/dimsmol -[Jeremy Hull]: https://github.com/sourrust -[Seongwon Lee]: https://github.com/dlimpid -[Jan T. Sott]: https://github.com/idleberg - - -## Version 7.5 - -A catch-up release dealing with some of the accumulated contributions. This one -is probably will be the last before the 8.0 which will be slightly backwards -incompatible regarding some advanced use-cases. - -One outstanding change in this version is the addition of 6 languages to the -[hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and -Makefile. It now weighs about 6K more but we're going to keep it under 30K. - -New languages: - -- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud] -- [LiveCode Server][lcs] by [Ralf Bitter][revig] -- Scilab by [Sylvestre Ledru][sylvestre] -- basic support for Makefile by [Ivan Sagalaev][isagalaev] - -Improvements: - -- Ruby's got support for characters like `?A`, `?1`, `?\012` etc. and `%r{..}` - regexps. -- Clojure now allows a function call in the beginning of s-expressions - `(($filter "myCount") (arr 1 2 3 4 5))`. -- Haskell's got new keywords and now recognizes more things like pragmas, - preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep] - for the implementation and to [Jeremy Hull][sourrust] for guiding it. -- Miscelleanous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#. - -[mehdid]: https://github.com/mehdid -[nbraud]: https://github.com/nbraud -[revig]: https://github.com/revig -[lcs]: http://livecode.com/developers/guides/server/ -[sylvestre]: https://github.com/sylvestre -[isagalaev]: https://github.com/isagalaev -[treep]: https://github.com/treep -[sourrust]: https://github.com/sourrust -[d]: http://highlightjs.org/download/ - - -## New core developers - -The latest long period of almost complete inactivity in the project coincided -with growing interest to it led to a decision that now seems completely obvious: -we need more core developers. - -So without further ado let me welcome to the core team two long-time -contributors: [Jeremy Hull][] and [Oleg -Efimov][]. - -Hope now we'll be able to work through stuff faster! - -P.S. The historical commit is [here][1] for the record. - -[Jeremy Hull]: https://github.com/sourrust -[Oleg Efimov]: https://github.com/sannis -[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f - - -## Version 7.4 - -This long overdue version is a snapshot of the current source tree with all the -changes that happened during the past year. Sorry for taking so long! - -Along with the changes in code highlight.js has finally got its new home at -<http://highlightjs.org/>, moving from its craddle on Software Maniacs which it -outgrew a long time ago. Be sure to report any bugs about the site to -<mailto:info@highlightjs.org>. - -On to what's new… - -New languages: - -- Handlebars templates by [Robin Ward][] -- Oracle Rules Language by [Jason Jacobson][] -- F# by [Joans Follesø][] -- AsciiDoc and Haml by [Dan Allen][] -- Lasso by [Eric Knibbe][] -- SCSS by [Kurt Emch][] -- VB.NET by [Poren Chiang][] -- Mizar by [Kelley van Evert][] - -[Robin Ward]: https://github.com/eviltrout -[Jason Jacobson]: https://github.com/jayce7 -[Joans Follesø]: https://github.com/follesoe -[Dan Allen]: https://github.com/mojavelinux -[Eric Knibbe]: https://github.com/EricFromCanada -[Kurt Emch]: https://github.com/kemch -[Poren Chiang]: https://github.com/rschiang -[Kelley van Evert]: https://github.com/kelleyvanevert - -New style themes: - -- Monokai Sublime by [noformnocontent][] -- Railscasts by [Damien White][] -- Obsidian by [Alexander Marenin][] -- Docco by [Simon Madine][] -- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything) -- Foundation by [Dan Allen][] - -[noformnocontent]: http://nn.mit-license.org/ -[Damien White]: https://github.com/visoft -[Alexander Marenin]: https://github.com/ioncreature -[Simon Madine]: https://github.com/thingsinjars -[Ivan Sagalaev]: https://github.com/isagalaev - -Other notable changes: - -- Corrected many corner cases in CSS. -- Dropped Python 2 version of the build tool. -- Implemented building for the AMD format. -- Updated Rust keywords (thanks to [Dmitry Medvinsky][]). -- Literal regexes can now be used in language definitions. -- CoffeeScript highlighting is now significantly more robust and rich due to - input from [Cédric Néhémie][]. - -[Dmitry Medvinsky]: https://github.com/dmedvinsky -[Cédric Néhémie]: https://github.com/abe33 - - -## Version 7.3 - -- Since this version highlight.js no longer works in IE version 8 and older. - It's made it possible to reduce the library size and dramatically improve code - readability and made it easier to maintain. Time to go forward! - -- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and - Brainfuck (by [Evgeny Stepanischev][bolk]). - -- Improvements to existing languages: - - - interpreter prompt in Python (`>>>` and `...`) - - @-properties and classes in CoffeeScript - - E4X in JavaScript (by [Oleg Efimov][oe]) - - new keywords in Perl (by [Kirk Kimmel][kk]) - - big Ruby syntax update (by [Vasily Polovnyov][vast]) - - small fixes in Bash - -- Also Oleg Efimov did a great job of moving all the docs for language and style - developers and contributors from the old wiki under the source code in the - "docs" directory. Now these docs are nicely presented at - <http://highlightjs.readthedocs.org/>. - -[ng]: https://github.com/nathan11g -[dd]: https://github.com/drdrang -[bolk]: https://github.com/bolknote -[oe]: https://github.com/Sannis -[kk]: https://github.com/kimmel -[vast]: https://github.com/vast - - -## Version 7.2 - -A regular bug-fix release without any significant new features. Enjoy! - - -## Version 7.1 - -A Summer crop: - -- [Marc Fornos][mf] made the definition for Clojure along with the matching - style Rainbow (which, of course, works for other languages too). -- CoffeeScript support continues to improve getting support for regular - expressions. -- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the - [project by Chris Kempson][tm0]. -- Thanks to [Casey Duncun][cd] the library can now be built in the popular - [AMD format][amd]. -- And last but not least, we've got a fair number of correctness and consistency - fixes, including a pretty significant refactoring of Ruby. - -[mf]: https://github.com/mfornos -[tm]: http://jmblog.github.com/color-themes-for-highlightjs/ -[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme -[cd]: https://github.com/caseman -[amd]: http://requirejs.org/docs/whyamd.html - - -## Version 7.0 - -The reason for the new major version update is a global change of keyword syntax -which resulted in the library getting smaller once again. For example, the -hosted build is 2K less than at the previous version while supporting two new -languages. - -Notable changes: - -- The library now works not only in a browser but also with [node.js][]. It is - installable with `npm install highlight.js`. [API][] docs are available on our - wiki. - -- The new unique feature (apparently) among syntax highlighters is highlighting - *HTTP* headers and an arbitrary language in the request body. The most useful - languages here are *XML* and *JSON* both of which highlight.js does support. - Here's [the detailed post][p] about the feature. - -- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an - emulation of*XCode* IDE by [Angel Olloqui][ao]. - -- Three new languages: *D* by [Aleksandar Ružičić][ar], *R* by [Joe Cheng][jc] - and *GLSL* by [Sergey Tikhomirov][st]. - -- *Nginx* syntax has become a million times smaller and more universal thanks to - remaking it in a more generic manner that doesn't require listing all the - directives in the known universe. - -- Function titles are now highlighted in *PHP*. - -- *Haskell* and *VHDL* were significantly reworked to be more rich and correct - by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik]. - -And last but not least, many bugs have been fixed around correctness and -language detection. - -Overall highlight.js currently supports 51 languages and 20 style themes. - -[node.js]: http://nodejs.org/ -[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api -[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/ -[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html -[ao]: https://github.com/angelolloqui -[ar]: https://github.com/raleksandar -[jc]: https://github.com/jcheng5 -[st]: https://github.com/tikhomirov -[sr]: https://github.com/sourrust -[ik]: https://github.com/ikalnitsky - - -## Version 6.2 - -A lot of things happened in highlight.js since the last version! We've got nine -new contributors, the discussion group came alive, and the main branch on GitHub -now counts more than 350 followers. Here are most significant results coming -from all this activity: - -- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and - experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av], - [Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis - Bardadym][db] and [John Crepezzi][jc]. - -- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of - another well-known highlighter Google Code Prettify by [Aahan Krish][ak]. - -- A vast number of [correctness fixes and code refactorings][log], mostly made - by [Oleg Efimov][oe] and [Evgeny Stepanischev][es]. - -[av]: https://github.com/vlasovskikh -[am]: https://github.com/myadzel -[dn]: https://github.com/dnagir -[oe]: https://github.com/Sannis -[db]: https://github.com/btd -[jc]: https://github.com/seejohnrun -[lm]: http://grigio.org/ -[ak]: https://github.com/geekpanth3r -[es]: https://github.com/bolknote -[log]: https://github.com/isagalaev/highlight.js/commits/ - - -## Version 6.1 — Solarized - -[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][] -style theme famous for being based on the intricate color theory to achieve -correct contrast and color perception. It is now available for highlight.js in -both variants — light and dark. - -This version also adds a new original style Arta. Its author pumbur maintains a -[heavily modified fork of highlight.js][pb] on GitHub. - -[jh]: https://github.com/sourrust -[solarized]: http://ethanschoonover.com/solarized -[pb]: https://github.com/pumbur/highlight.js - - -## Version 6.0 - -New major version of the highlighter has been built on a significantly -refactored syntax. Due to this it's even smaller than the previous one while -supporting more languages! - -New languages are: - -- Haskell by [Jeremy Hull][sourrust] -- Erlang in two varieties — module and REPL — made collectively by [Nikolay - Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov] -- Objective C by [Valerii Hiora][vhbit] -- Vala by [Antono Vasiljev][antono] -- Go by [Stephan Kountso][steplg] - -[sourrust]: https://github.com/sourrust -[desh]: http://desh.su/ -[arhibot]: https://github.com/arhibot -[ignatov]: https://github.com/ignatov -[vhbit]: https://github.com/vhbit -[antono]: https://github.com/antono -[steplg]: https://github.com/steplg - -Also this version is marginally faster and fixes a number of small long-standing -bugs. - -Developer overview of the new language syntax is available in a [blog post about -recent beta release][beta]. - -[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/ - -P.S. New version is not yet available on a Yandex' CDN, so for now you have to -download [your own copy][d]. - -[d]: /soft/highlight/en/download/ - - -## Version 5.14 - -Fixed bugs in HTML/XML detection and relevance introduced in previous -refactoring. - -Also test.html now shows the second best result of language detection by -relevance. - - -## Version 5.13 - -Past weekend began with a couple of simple additions for existing languages but -ended up in a big code refactoring bringing along nice improvements for language -developers. - -### For users - -- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard. -- Description of HTML has got new tags from [HTML 5][]. -- CSS-styles have been unified to use consistent padding and also have lost - pop-outs with names of detected languages. -- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake и VHDL. - -This makes total number of languages supported by highlight.js to reach 35. - -Bug fixes: - -- Custom classes on `<pre>` tags are not being overridden anymore -- More correct highlighting of code blocks inside non-`<pre>` containers: - highlighter now doesn't insist on replacing them with its own container and - just replaces the contents. -- Small fixes in browser compatibility and heuristics. - -[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x -[html 5]: http://en.wikipedia.org/wiki/HTML5 -[ik]: http://kalnitsky.org.ua/ - -### For developers - -The most significant change is the ability to include language submodes right -under `contains` instead of defining explicit named submodes in the main array: - - contains: [ - 'string', - 'number', - {begin: '\\n', end: hljs.IMMEDIATE_RE} - ] - -This is useful for auxiliary modes needed only in one place to define parsing. -Note that such modes often don't have `className` and hence won't generate a -separate `<span>` in the resulting markup. This is similar in effect to -`noMarkup: true`. All existing languages have been refactored accordingly. - -Test file test.html has at last become a real test. Now it not only puts the -detected language name under the code snippet but also tests if it matches the -expected one. Test summary is displayed right above all language snippets. - - -## CDN - -Fine people at [Yandex][] agreed to host highlight.js on their big fast servers. -[Link up][l]! - -[yandex]: http://yandex.com/ -[l]: http://softwaremaniacs.org/soft/highlight/en/download/ - - -## Version 5.10 — "Paris". - -Though I'm on a vacation in Paris, I decided to release a new version with a -couple of small fixes: - -- Tomas Vitvar discovered that TAB replacement doesn't always work when used - with custom markup in code -- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests - - -## Version 5.9 - -A long-awaited version is finally released. - -New languages: - -- Andrew Fedorov made a definition for Lua -- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for - Nginx config -- [Vladimir Moskva][vm] made a definition for TeX - -[pl]: http://kung-fu-tzu.ru/ -[vm]: http://fulc.ru/ - -Fixes for existing languages: - -- [Loren Segal][ls] reworked the Ruby definition and added highlighting for - [YARD][] inline documentation -- the definition of SQL has become more solid and now it shouldn't be overly - greedy when it comes to language detection - -[ls]: http://gnuu.org/ -[yard]: http://yardoc.org/ - -The highlighter has become more usable as a library allowing to do highlighting -from initialization code of JS frameworks and in ajax methods (see. -readme.eng.txt). - -Also this version drops support for the [WordPress][wp] plugin. Everyone is -welcome to [pick up its maintenance][p] if needed. - -[wp]: http://wordpress.org/ -[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php - - -## Version 5.8 - -- Jan Berkel has contributed a definition for Scala. +1 to hotness! -- All CSS-styles are rewritten to work only inside `<pre>` tags to avoid - conflicts with host site styles. - - -## Version 5.7. - -Fixed escaping of quotes in VBScript strings. - - -## Version 5.5 - -This version brings a small change: now .ini-files allow digits, underscores and -square brackets in key names. - - -## Version 5.4 - -Fixed small but upsetting bug in the packer which caused incorrect highlighting -of explicitly specified languages. Thanks to Andrew Fedorov for precise -diagnostics! - - -## Version 5.3 - -The version to fulfil old promises. - -The most significant change is that highlight.js now preserves custom user -markup in code along with its own highlighting markup. This means that now it's -possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the -[initial proposal][1] and for making a proof-of-concept patch. - -Also in this version: - -- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented - support for CSS @-rules and Ruby symbols. -- Yura Zaripov has sent two styles: Brown Paper and School Book. -- Oleg Volchkov has sent a definition for [Parser 3][p3]. - -[1]: http://softwaremaniacs.org/forum/highlightjs/6612/ -[p3]: http://www.parser.ru/ -[vp]: http://vasily.polovnyov.ru/ -[vd]: http://dolzhenko.blogspot.com/ - - -## Version 5.2 - -- at last it's possible to replace indentation TABs with something sensible (e.g. 2 or 4 spaces) -- new keywords and built-ins for 1C by Sergey Baranov -- a couple of small fixes to Apache highlighting - - -## Version 5.1 - -This is one of those nice version consisting entirely of new and shiny -contributions! - -- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler -- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his - original visual style for it is now available for all highlight.js languages - under the name "Magula". -- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan - languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on - the matter. - -[vooon]: http://vehq.ru/about/ -[rukeba]: http://rukeba.com/ -[drake]: http://drakeguan.org/ -[ke]: http://k-evdokimenko.moikrug.ru/ - - -## Version 5.0 - -The main change in the new major version of highlight.js is a mechanism for -packing several languages along with the library itself into a single compressed -file. Now sites using several languages will load considerably faster because -the library won't dynamically include additional files while loading. - -Also this version fixes a long-standing bug with Javascript highlighting that -couldn't distinguish between regular expressions and division operations. - -And as usually there were a couple of minor correctness fixes. - -Great thanks to all contributors! Keep using highlight.js. - - -## Version 4.3 - -This version comes with two contributions from [Jason Diamond][jd]: - -- language definition for C# (yes! it was a long-missed thing!) -- Visual Studio-like highlighting style - -Plus there are a couple of minor bug fixes for parsing HTML and XML attributes. - -[jd]: http://jason.diamond.name/weblog/ - - -## Version 4.2 - -The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's -somewhat experimental meaning that for highlighting "keywords" it doesn't use -any pre-defined set of a Lisp dialect. Instead it tries to highlight first word -in parentheses wherever it makes sense. I'd like to ask people programming in -Lisp to confirm if it's a good idea and send feedback to [the forum][f]. - -Other changes: - -- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic -- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for - test.html -- comments now allowed inside Ruby function definition -- [MEL][] language from [Shuen-Huei Guan][drake] -- whitespace now allowed between `<pre>` and `<code>` -- better auto-detection of C++ and PHP -- HTML allows embedded VBScript (`<% .. %>`) - -[f]: http://softwaremaniacs.org/forum/highlightjs/ -[voldmar]: http://voldmar.ya.ru/ -[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language -[drake]: http://drakeguan.org/ - - -## Version 4.1 - -Languages: - -- Bash from Vah -- DOS bat-files from Alexander Makarov (Sam) -- Diff files from Vasily Polovnyov -- Ini files from myself though initial idea was from Sam - -Styles: - -- Zenburn from Vladimir Epifanov, this is an imitation of a - [well-known theme for Vim][zenburn]. -- Ascetic from myself, as a realization of ideals of non-flashy highlighting: - just one color in only three gradations :-) - -In other news. [One small bug][bug] was fixed, built-in keywords were added for -Python and C++ which improved auto-detection for the latter (it was shame that -[my wife's blog][alenacpp] had issues with it from time to time). And lastly -thanks go to Sam for getting rid of my stylistic comments in code that were -getting in the way of [JSMin][]. - -[zenburn]: http://en.wikipedia.org/wiki/Zenburn -[alenacpp]: http://alenacpp.blogspot.com/ -[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823 -[jsmin]: http://code.google.com/p/jsmin-php/ - - -## Version 4.0 - -New major version is a result of vast refactoring and of many contributions. - -Visible new features: - -- Highlighting of embedded languages. Currently is implemented highlighting of - Javascript and CSS inside HTML. -- Bundled 5 ready-made style themes! - -Invisible new features: - -- Highlight.js no longer pollutes global namespace. Only one object and one - function for backward compatibility. -- Performance is further increased by about 15%. - -Changing of a major version number caused by a new format of language definition -files. If you use some third-party language files they should be updated. - - -## Version 3.5 - -A very nice version in my opinion fixing a number of small bugs and slightly -increased speed in a couple of corner cases. Thanks to everybody who reports -bugs in he [forum][f] and by email! - -There is also a new language — XML. A custom XML formerly was detected as HTML -and didn't highlight custom tags. In this version I tried to make custom XML to -be detected and highlighted by its own rules. Which by the way include such -things as CDATA sections and processing instructions (`<? ... ?>`). - -[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6 - - -## Version 3.3 - -[Vladimir Gubarkov][xonix] has provided an interesting and useful addition. -File export.html contains a little program that shows and allows to copy and -paste an HTML code generated by the highlighter for any code snippet. This can -be useful in situations when one can't use the script itself on a site. - - -[xonix]: http://xonixx.blogspot.com/ - - -## Version 3.2 consists completely of contributions: - -- Vladimir Gubarkov has described SmallTalk -- Yuri Ivanov has described 1C -- Peter Leonov has packaged the highlighter as a Firefox extension -- Vladimir Ermakov has compiled a mod for phpBB - -Many thanks to you all! - - -## Version 3.1 - -Three new languages are available: Django templates, SQL and Axapta. The latter -two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an -SQL definition but I'd never started it be it from the ground up :-) - -The engine itself has got a long awaited feature of grouping keywords -("keyword", "built-in function", "literal"). No more hacks! - -[1]: http://roudakov.ru/ - - -## Version 3.0 - -It is major mainly because now highlight.js has grown large and has become -modular. Now when you pass it a list of languages to highlight it will -dynamically load into a browser only those languages. - -Also: - -- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for - RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more - languages! -- Heuristics for C++ and HTML got better. -- I've implemented (at last) a correct handling of backslash escapes in C-like - languages. - -There is also a small backwards incompatible change in the new version. The -function initHighlighting that was used to initialize highlighting instead of -initHighlightingOnLoad a long time ago no longer works. If you by chance still -use it — replace it with the new one. - -[RibKit]: http://ribkit.sourceforge.net/ - - -## Version 2.9 - -Highlight.js is a parser, not just a couple of regular expressions. That said -I'm glad to announce that in the new version 2.9 has support for: - -- in-string substitutions for Ruby -- `#{...}` -- strings from from numeric symbol codes (like #XX) for Delphi - - -## Version 2.8 - -A maintenance release with more tuned heuristics. Fully backwards compatible. - - -## Version 2.7 - -- Nikita Ledyaev presents highlighting for VBScript, yay! -- A couple of bugs with escaping in strings were fixed thanks to Mickle -- Ongoing tuning of heuristics - -Fixed bugs were rather unpleasant so I encourage everyone to upgrade! - - -## Version 2.4 - -- Peter Leonov provides another improved highlighting for Perl -- Javascript gets a new kind of keywords — "literals". These are the words - "true", "false" and "null" - -Also highlight.js homepage now lists sites that use the library. Feel free to -add your site by [dropping me a message][mail] until I find the time to build a -submit form. - -[mail]: mailto:Maniac@SoftwareManiacs.Org - - -## Version 2.3 - -This version fixes IE breakage in previous version. My apologies to all who have -already downloaded that one! - - -## Version 2.2 - -- added highlighting for Javascript -- at last fixed parsing of Delphi's escaped apostrophes in strings -- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in - Perl - - -## Version 2.0 - -- Ruby support by [Anton Kovalyov][ak] -- speed increased by orders of magnitude due to new way of parsing -- this same way allows now correct highlighting of keywords in some tricky - places (like keyword "End" at the end of Delphi classes) - -[ak]: http://anton.kovalyov.net/ - - -## Version 1.0 - -Version 1.0 of javascript syntax highlighter is released! - -It's the first version available with English description. Feel free to post -your comments and question to [highlight.js forum][forum]. And don't be afraid -if you find there some fancy Cyrillic letters -- it's for Russian users too :-) - -[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6 diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/LICENSE b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/LICENSE deleted file mode 100644 index 422deb735..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2006, Ivan Sagalaev -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 highlight.js nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS AND 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/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/README.ru.md b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/README.ru.md deleted file mode 100644 index 0d0e0fea8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/README.ru.md +++ /dev/null @@ -1,171 +0,0 @@ -# Highlight.js - -Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах, -форумах и вообще на любых веб-страницах. Пользоваться им очень просто, -потому что работает он автоматически: сам находит блоки кода, сам -определяет язык, сам подсвечивает. - -Автоопределением языка можно управлять, когда оно не справляется само (см. -дальше "Эвристика"). - - -## Простое использование - -Подключите библиотеку и стиль на страницу и повесть вызов подсветки на -загрузку страницы: - -```html -<link rel="stylesheet" href="styles/default.css"> -<script src="highlight.pack.js"></script> -<script>hljs.initHighlightingOnLoad();</script> -``` - -Весь код на странице, обрамлённый в теги `<pre><code> .. </code></pre>` -будет автоматически подсвечен. Если вы используете другие теги или хотите -подсвечивать блоки кода динамически, читайте "Инициализацию вручную" ниже. - -- Вы можете скачать собственную версию "highlight.pack.js" или сослаться - на захостенный файл, как описано на странице загрузки: - <http://highlightjs.org/download/> - -- Стилевые темы можно найти в загруженном архиве или также использовать - захостенные. Чтобы сделать собственный стиль для своего сайта, вам - будет полезен [CSS classes reference][cr], который тоже есть в архиве. - -[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html - - -## node.js - -Highlight.js можно использовать в node.js. Библиотеку со всеми возможными языками можно -установить с NPM: - - npm install highlight.js - -Также её можно собрать из исходников с только теми языками, которые нужны: - - python3 tools/build.py -tnode lang1 lang2 .. - -Использование библиотеки: - -```javascript -var hljs = require('highlight.js'); - -// Если вы знаете язык -hljs.highlight(lang, code).value; - -// Автоопределение языка -hljs.highlightAuto(code).value; -``` - - -## AMD - -Highlight.js можно использовать с загрузчиком AMD-модулей. Для этого его -нужно собрать из исходников следующей командой: - -```bash -$ python3 tools/build.py -tamd lang1 lang2 .. -``` - -Она создаст файл `build/highlight.pack.js`, который является загружаемым -AMD-модулем и содержит все выбранные при сборке языки. Используется он так: - -```javascript -require(["highlight.js/build/highlight.pack"], function(hljs){ - - // Если вы знаете язык - hljs.highlight(lang, code).value; - - // Автоопределение языка - hljs.highlightAuto(code).value; -}); -``` - - -## Замена TABов - -Также вы можете заменить символы TAB ('\x09'), используемые для отступов, на -фиксированное количество пробелов или на отдельный `<span>`, чтобы задать ему -какой-нибудь специальный стиль: - -```html -<script type="text/javascript"> - hljs.configure({tabReplace: ' '}); // 4 spaces - // ... or - hljs.configure({tabReplace: '<span class="indent">\t</span>'}); - - hljs.initHighlightingOnLoad(); -</script> -``` - - -## Инициализация вручную - -Если вы используете другие теги для блоков кода, вы можете инициализировать их -явно с помощью функции `highlightBlock(code)`. Она принимает DOM-элемент с -текстом расцвечиваемого кода и опционально - строчку для замены символов TAB. - -Например с использованием jQuery код инициализации может выглядеть так: - -```javascript -$(document).ready(function() { - $('pre code').each(function(i, e) {hljs.highlightBlock(e)}); -}); -``` - -`highlightBlock` можно также использовать, чтобы подсветить блоки кода, -добавленные на страницу динамически. Только убедитесь, что вы не делаете этого -повторно для уже раскрашенных блоков. - -Если ваш блок кода использует `<br>` вместо переводов строки (т.е. если это не -`<pre>`), включите опцию `useBR`: - -```javascript -hljs.configure({useBR: true}); -$('div.code').each(function(i, e) {hljs.highlightBlock(e)}); -``` - - -## Эвристика - -Определение языка, на котором написан фрагмент, делается с помощью -довольно простой эвристики: программа пытается расцветить фрагмент всеми -языками подряд, и для каждого языка считает количество подошедших -синтаксически конструкций и ключевых слов. Для какого языка нашлось больше, -тот и выбирается. - -Это означает, что в коротких фрагментах высока вероятность ошибки, что -периодически и случается. Чтобы указать язык фрагмента явно, надо написать -его название в виде класса к элементу `<code>`: - -```html -<pre><code class="html">...</code></pre> -``` - -Можно использовать рекомендованные в HTML5 названия классов: -"language-html", "language-php". Также можно назначать классы на элемент -`<pre>`. - -Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight": - -```html -<pre><code class="no-highlight">...</code></pre> -``` - - -## Экспорт - -В файле export.html находится небольшая программка, которая показывает и дает -скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода. -Это может понадобится например на сайте, на котором нельзя подключить сам скрипт -highlight.js. - - -## Координаты - -- Версия: 8.0 -- URL: http://highlightjs.org/ - -Лицензионное соглашение читайте в файле LICENSE. -Список авторов и соавторов читайте в файле AUTHORS.ru.txt diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js deleted file mode 100644 index 45d02a9fe..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js +++ /dev/null @@ -1 +0,0 @@ -var hljs=new function(){function k(v){return v.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+k(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(i(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(i(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&i(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?"":b.classPrefix,U='<span class="'+T,Y=W?"":"</span>";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{k:a,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|<!--|-->"},{cN:"xmlDocTag",b:"</?",e:">"}]},b.CLCM,b.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(e){var h="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var g="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var a={cN:"yardoctag",b:"@[A-Za-z]+"};var i={cN:"comment",v:[{b:"#",e:"$",c:[a]},{b:"^\\=begin",e:"^\\=end",c:[a],r:10},{b:"^__END__",e:"\\n$"}]};var c={cN:"subst",b:"#\\{",e:"}",k:g};var d={cN:"string",c:[e.BE,c],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">",r:10},{b:"%[qw]?/",e:"/",r:10},{b:"%[qw]?%",e:"%",r:10},{b:"%[qw]?-",e:"-",r:10},{b:"%[qw]?\\|",e:"\\|",r:10},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var b={cN:"params",b:"\\(",e:"\\)",k:g};var f=[d,i,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]},i]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:h}),b,i]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[d,{b:h}],r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[i,{cN:"regexp",c:[e.BE,c],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];c.c=f;b.c=f;return{k:g,c:f}});hljs.registerLanguage("diff",function(a){return{c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,a.REGEXP_MODE,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBLCLM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/</,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html"],cI:true,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("markdown",function(a){return{c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].+?[\\)\\]]",rB:true,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:true,rE:true,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:true,eE:true},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:true,eE:true,}],r:10},{b:"^\\[.+\\]:",e:"$",rB:true,c:[{cN:"link_reference",b:"\\[",e:"\\]",eB:true,eE:true},{cN:"link_url",b:"\\s",e:"$"}]}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",e:"\\)",c:["self",a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.NM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("http",function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}});hljs.registerLanguage("java",function(b){var a="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws";return{k:a,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}],r:10},b.CLCM,b.CBLCLM,b.ASM,b.QSM,{bK:"protected public private",e:/[{;=]/,k:a,c:[{cN:"class",bK:"class interface",eW:true,i:/[:"<>]/,c:[{bK:"extends implements",r:10},b.UTM]},{b:b.UIR+"\\s*\\(",rB:true,c:[b.UTM]}]},b.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBLCLM,c,d]}]},{cN:"class",bK:"class interface",e:"{",i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)"/,e:/"/,},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){return{cI:true,i:/[<>]/,c:[{cN:"operator",b:"\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}});hljs.registerLanguage("ini",function(a){return{cI:true,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM],r:0}]}]}});hljs.registerLanguage("perl",function(c){var d="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var f={cN:"subst",b:"[$@]\\{",e:"\\}",k:d};var g={b:"->{",e:"}"};var a={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@\*](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@\*][^\s\w{]/,r:0}]};var e={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var h=[c.BE,f,a];var b=[a,c.HCM,e,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},g,{cN:"string",c:h,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[c.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[c.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+c.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[c.HCM,e,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[c.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];f.c=b;g.c=b;return{k:d,c:b}});hljs.registerLanguage("objectivec",function(a){var d={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign self synchronized id nonatomic super unichar IBOutlet IBAction strong weak @private @protected @public @try @property @end @throw @catch @finally @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};var c=/[a-zA-Z@][a-zA-Z0-9_]*/;var b="@interface @class @protocol @implementation";return{k:d,l:c,i:"</",c:[a.CLCM,a.CBLCLM,a.CNM,a.QSM,{cN:"string",b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"},{cN:"preprocessor",b:"#import",e:"$",c:[{cN:"title",b:'"',e:'"'},{cN:"title",b:"<",e:">"}]},{cN:"preprocessor",b:"#",e:"$"},{cN:"class",b:"("+b.split(" ").join("|")+")\\b",e:"({|$)",k:b,l:c,c:[a.UTM]},{cN:"variable",b:"\\."+a.UIR,r:0}]}});hljs.registerLanguage("coffeescript",function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module exports global window document"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var f=c.inherit(c.TM,{b:a});var e={cN:"subst",b:/#\{/,e:/}/,k:b};var d=[c.BNM,c.inherit(c.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[c.BE]},{b:/'/,e:/'/,c:[c.BE]},{b:/"""/,e:/"""/,c:[c.BE,e]},{b:/"/,e:/"/,c:[c.BE,e]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[e,c.HCM]},{b:"//[gim]*",r:0},{b:"/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"}]},{cN:"property",b:"@"+a},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"}];e.c=d;return{k:b,c:d.concat([{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"function",b:"("+a+"\\s*=\\s*)?(\\(.*\\))?\\s*\\B[-=]>",e:"[-=]>",rB:true,c:[f,{cN:"params",b:"\\(",rB:true,c:[{b:/\(/,e:/\)/,k:b,c:["self"].concat(d)}]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:true,i:/[:="\[\]]/,c:[f]},f]},{cN:"attribute",b:a+":",e:":",rB:true,eE:true,r:0}])}});hljs.registerLanguage("nginx",function(c){var b={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+c.UIR}]};var a={eW:true,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[c.HCM,{cN:"string",c:[c.BE,b],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:true,eE:true},{cN:"regexp",c:[c.BE,b],v:[{b:"\\s\\^",e:"\\s|{|;",rE:true},{b:"~\\*?\\s+",e:"\\s|{|;",rE:true},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},b]};return{c:[c.HCM,{b:c.UIR+"\\s",e:";|{",rB:true,c:[c.inherit(c.UTM,{starts:a})],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{cI:true,c:[a.HCM,{cN:"tag",b:"</?",e:">"},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});hljs.registerLanguage("cpp",function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c"],k:b,i:"</",c:[a.CLCM,a.CBLCLM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$",c:[{b:"include\\s*<",e:">",i:"\\n"},a.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10,c:["self"]}]}});hljs.registerLanguage("makefile",function(a){var b={cN:"variable",b:/\$\(/,e:/\)/,c:[a.BE]};return{c:[a.HCM,{b:/^\w+\s*\W*=/,rB:true,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:true,starts:{e:/$/,r:0,c:[b],}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,c:[a.QSM,b]}]}}); diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css deleted file mode 100644 index 02db86a27..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css +++ /dev/null @@ -1,160 +0,0 @@ -/* -Date: 17.V.2011 -Author: pumbur <pumbur@pumbur.net> -*/ - -.hljs -{ - display: block; padding: 0.5em; - background: #222; -} - -.profile .hljs-header *, -.ini .hljs-title, -.nginx .hljs-title -{ - color: #fff; -} - -.hljs-comment, -.hljs-javadoc, -.hljs-preprocessor, -.hljs-preprocessor .hljs-title, -.hljs-pragma, -.hljs-shebang, -.profile .hljs-summary, -.diff, -.hljs-pi, -.hljs-doctype, -.hljs-tag, -.hljs-template_comment, -.css .hljs-rules, -.tex .hljs-special -{ - color: #444; -} - -.hljs-string, -.hljs-symbol, -.diff .hljs-change, -.hljs-regexp, -.xml .hljs-attribute, -.smalltalk .hljs-char, -.xml .hljs-value, -.ini .hljs-value, -.clojure .hljs-attribute, -.coffeescript .hljs-attribute -{ - color: #ffcc33; -} - -.hljs-number, -.hljs-addition -{ - color: #00cc66; -} - -.hljs-built_in, -.hljs-literal, -.vhdl .hljs-typename, -.go .hljs-constant, -.go .hljs-typename, -.ini .hljs-keyword, -.lua .hljs-title, -.perl .hljs-variable, -.php .hljs-variable, -.mel .hljs-variable, -.django .hljs-variable, -.css .funtion, -.smalltalk .method, -.hljs-hexcolor, -.hljs-important, -.hljs-flow, -.hljs-inheritance, -.parser3 .hljs-variable -{ - color: #32AAEE; -} - -.hljs-keyword, -.hljs-tag .hljs-title, -.css .hljs-tag, -.css .hljs-class, -.css .hljs-id, -.css .hljs-pseudo, -.css .hljs-attr_selector, -.lisp .hljs-title, -.clojure .hljs-built_in, -.hljs-winutils, -.tex .hljs-command, -.hljs-request, -.hljs-status -{ - color: #6644aa; -} - -.hljs-title, -.ruby .hljs-constant, -.vala .hljs-constant, -.hljs-parent, -.hljs-deletion, -.hljs-template_tag, -.css .hljs-keyword, -.objectivec .hljs-class .hljs-id, -.smalltalk .hljs-class, -.lisp .hljs-keyword, -.apache .hljs-tag, -.nginx .hljs-variable, -.hljs-envvar, -.bash .hljs-variable, -.go .hljs-built_in, -.vbscript .hljs-built_in, -.lua .hljs-built_in, -.rsl .hljs-built_in, -.tail, -.avrasm .hljs-label, -.tex .hljs-formula, -.tex .hljs-formula * -{ - color: #bb1166; -} - -.hljs-yardoctag, -.hljs-phpdoc, -.profile .hljs-header, -.ini .hljs-title, -.apache .hljs-tag, -.parser3 .hljs-title -{ - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata -{ - opacity: 0.6; -} - -.hljs, -.javascript, -.css, -.xml, -.hljs-subst, -.diff .hljs-chunk, -.css .hljs-value, -.css .hljs-attribute, -.lisp .hljs-string, -.lisp .hljs-number, -.tail .hljs-params, -.hljs-container, -.haskell *, -.erlang *, -.erlang_repl * -{ - color: #aaa; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css deleted file mode 100644 index 532d683ff..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css +++ /dev/null @@ -1,50 +0,0 @@ -/* - -Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-filter .hljs-argument, -.hljs-addition, -.hljs-change, -.apache .hljs-tag, -.apache .hljs-cbracket, -.nginx .hljs-built_in, -.tex .hljs-formula { - color: #888; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-shebang, -.hljs-doctype, -.hljs-pi, -.hljs-javadoc, -.hljs-deletion, -.apache .hljs-sqbracket { - color: #CCC; -} - -.hljs-keyword, -.hljs-tag .hljs-title, -.ini .hljs-title, -.lisp .hljs-title, -.clojure .hljs-title, -.http .hljs-title, -.nginx .hljs-title, -.css .hljs-tag, -.hljs-winutils, -.hljs-flow, -.apache .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css deleted file mode 100644 index a25b30885..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Dune Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Dune Dark Comment */ -.hljs-comment, -.hljs-title { - color: #999580; -} - -/* Atelier Dune Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d73737; -} - -/* Atelier Dune Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #b65611; -} - -/* Atelier Dune Dark Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #cfb017; -} - -/* Atelier Dune Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #60ac39; -} - -/* Atelier Dune Dark Aqua */ -.css .hljs-hexcolor { - color: #1fad83; -} - -/* Atelier Dune Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6684e1; -} - -/* Atelier Dune Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b854d4; -} - -.hljs { - display: block; - background: #292824; - color: #a6a28c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css deleted file mode 100644 index 66483c974..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Dune Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Dune Light Comment */ -.hljs-comment, -.hljs-title { - color: #7d7a68; -} - -/* Atelier Dune Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d73737; -} - -/* Atelier Dune Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #b65611; -} - -/* Atelier Dune Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #cfb017; -} - -/* Atelier Dune Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #60ac39; -} - -/* Atelier Dune Light Aqua */ -.css .hljs-hexcolor { - color: #1fad83; -} - -/* Atelier Dune Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6684e1; -} - -/* Atelier Dune Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b854d4; -} - -.hljs { - display: block; - background: #fefbec; - color: #6e6b5e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css deleted file mode 100644 index 9331e4179..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Forest Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Forest Dark Comment */ -.hljs-comment, -.hljs-title { - color: #9c9491; -} - -/* Atelier Forest Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f22c40; -} - -/* Atelier Forest Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #df5320; -} - -/* Atelier Forest Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #d5911a; -} - -/* Atelier Forest Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #5ab738; -} - -/* Atelier Forest Dark Aqua */ -.css .hljs-hexcolor { - color: #00ad9c; -} - -/* Atelier Forest Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #407ee7; -} - -/* Atelier Forest Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #6666ea; -} - -.hljs { - display: block; - background: #2c2421; - color: #a8a19f; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css deleted file mode 100644 index 9898ec446..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Forest Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Forest Light Comment */ -.hljs-comment, -.hljs-title { - color: #766e6b; -} - -/* Atelier Forest Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f22c40; -} - -/* Atelier Forest Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #df5320; -} - -/* Atelier Forest Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #d5911a; -} - -/* Atelier Forest Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #5ab738; -} - -/* Atelier Forest Light Aqua */ -.css .hljs-hexcolor { - color: #00ad9c; -} - -/* Atelier Forest Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #407ee7; -} - -/* Atelier Forest Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #6666ea; -} - -.hljs { - display: block; - background: #f1efee; - color: #68615e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css deleted file mode 100644 index 1544f62e7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Heath Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Heath Dark Comment */ -.hljs-comment, -.hljs-title { - color: #9e8f9e; -} - -/* Atelier Heath Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ca402b; -} - -/* Atelier Heath Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #a65926; -} - -/* Atelier Heath Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #bb8a35; -} - -/* Atelier Heath Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #379a37; -} - -/* Atelier Heath Dark Aqua */ -.css .hljs-hexcolor { - color: #159393; -} - -/* Atelier Heath Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #516aec; -} - -/* Atelier Heath Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #7b59c0; -} - -.hljs { - display: block; - background: #292329; - color: #ab9bab; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css deleted file mode 100644 index c45bfe8a7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Heath Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Heath Light Comment */ -.hljs-comment, -.hljs-title { - color: #776977; -} - -/* Atelier Heath Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ca402b; -} - -/* Atelier Heath Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #a65926; -} - -/* Atelier Heath Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #bb8a35; -} - -/* Atelier Heath Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #379a37; -} - -/* Atelier Heath Light Aqua */ -.css .hljs-hexcolor { - color: #159393; -} - -/* Atelier Heath Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #516aec; -} - -/* Atelier Heath Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #7b59c0; -} - -.hljs { - display: block; - background: #f7f3f7; - color: #695d69; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css deleted file mode 100644 index f7b61382d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Lakeside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Lakeside Dark Comment */ -.hljs-comment, -.hljs-title { - color: #7195a8; -} - -/* Atelier Lakeside Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d22d72; -} - -/* Atelier Lakeside Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #935c25; -} - -/* Atelier Lakeside Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #8a8a0f; -} - -/* Atelier Lakeside Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #568c3b; -} - -/* Atelier Lakeside Dark Aqua */ -.css .hljs-hexcolor { - color: #2d8f6f; -} - -/* Atelier Lakeside Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #257fad; -} - -/* Atelier Lakeside Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #5d5db1; -} - -.hljs { - display: block; - background: #1f292e; - color: #7ea2b4; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css deleted file mode 100644 index 955b33396..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Lakeside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Lakeside Light Comment */ -.hljs-comment, -.hljs-title { - color: #5a7b8c; -} - -/* Atelier Lakeside Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d22d72; -} - -/* Atelier Lakeside Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #935c25; -} - -/* Atelier Lakeside Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #8a8a0f; -} - -/* Atelier Lakeside Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #568c3b; -} - -/* Atelier Lakeside Light Aqua */ -.css .hljs-hexcolor { - color: #2d8f6f; -} - -/* Atelier Lakeside Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #257fad; -} - -/* Atelier Lakeside Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #5d5db1; -} - -.hljs { - display: block; - background: #ebf8ff; - color: #516d7b; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css deleted file mode 100644 index 5688b1529..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Seaside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Seaside Dark Comment */ -.hljs-comment, -.hljs-title { - color: #809980; -} - -/* Atelier Seaside Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #e6193c; -} - -/* Atelier Seaside Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #87711d; -} - -/* Atelier Seaside Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #c3c322; -} - -/* Atelier Seaside Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #29a329; -} - -/* Atelier Seaside Dark Aqua */ -.css .hljs-hexcolor { - color: #1999b3; -} - -/* Atelier Seaside Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #3d62f5; -} - -/* Atelier Seaside Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ad2bee; -} - -.hljs { - display: block; - background: #242924; - color: #8ca68c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css deleted file mode 100644 index 873180828..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Seaside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Seaside Light Comment */ -.hljs-comment, -.hljs-title { - color: #687d68; -} - -/* Atelier Seaside Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #e6193c; -} - -/* Atelier Seaside Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #87711d; -} - -/* Atelier Seaside Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #c3c322; -} - -/* Atelier Seaside Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #29a329; -} - -/* Atelier Seaside Light Aqua */ -.css .hljs-hexcolor { - color: #1999b3; -} - -/* Atelier Seaside Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #3d62f5; -} - -/* Atelier Seaside Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ad2bee; -} - -.hljs { - display: block; - background: #f0fff0; - color: #5e6e5e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css deleted file mode 100644 index f9541c3a4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - -Brown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net> - -*/ - -.hljs { - display: block; padding: 0.5em; - background:#b7a68e url(./brown_papersq.png); -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special, -.hljs-request, -.hljs-status { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-keyword { - color: #363C69; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-number { - color: #2C009F; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula { - color: #802022; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-command { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.8; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png deleted file mode 100644 index 3813903dbf9fa7b1fb5bd11d9534c06667d9056f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18198 zcmZsCRajhYlWil7yGw9LaCaw2kl^kP!M%at?m>cka0u>ctf6s&e8CzTLSrGMaSIUS zWM<BsGxPla&EEUH*jKfxYSpUsCh2Is!N;M&0RRB_YN|?l000{N?>7q;>fa~s$OpT> zFLY-GO$7j;Wl{{7eE9cF?XPU&ukYpLA870A2vBhFvU6lq^RRVx)N{0T2=<wBlm-A) z>eQ4J41(5=2G+8;)w1ZEPMkbF2bGnazV|OLZz2Hb@=WyXBX0)f+0o;fWze0N{t<*y ztIiNnZC{LRA&k!$ZY8RSSkRr34SfzyO1FQ1#+`5DKBGKIaW*#IpS|)H)0b)RO)vVT zdmZs``V5~Rd=7^niGNRi-KohFdl7;cLNt=6H%jET$<@@a?HPC}DI+UeV-R$j(|Cgb zovyEp&h`&JS~h*u+dsTgScW2zDVr4f<Q^WcQ~UfHvU+2PMyM789^pt4^sSp)eW|qF zptAV`{mj^akc}`o;i97Aj;-gNz^uB#{(g1C8Y+16=LXlpmrTjy!o7l{2DxLd#%$Fq z*C!RYvT-^+DqLyS$8al(DR8yw;raH%#YL7~61fS|U&>~<H^}nkMkrzUR+uSSkosc& zriW}SRaW{Z5grh+qIWn{-;NAC^6VW!tb`TP)<g<w_kf?==uKVTweJpsNKxj?wDX+( z?ujb7?c3gZUEbc@!cKVa1_}@0;2~LAi^6+>DH;Zx@cQhlKiyzUik!{j?26_bcGl3n zz;xi(8ENgs!;6LMT9?9^)|SgIm+Xu<9pAn@Jwvr@j|kU$Ps<;yJK|Ptilz{)cF~50 z>3}X}-GE2L$gd5vToUcA;ufTe+vCmq6y;EHLIF1Y)!*mMIk7Ufz<IXq&lk3|S_iWy z{CLtSo7yuDg*6QChY~i|*YnlYr93LKe=Nn5wLNt=9)oSf9(U2Y+nW7Whu1%4Lk#N- z_C-TmWB8OVf>`-6@{%j+0t}5by-kjAimHgt*AfoWQ3<}2%HH1G)X=gxwsGTnqo!jS zPp^mHU)Wdo9i$J93f_cGL~o081HVh2MIfFb&r#24&zMhy4-B`@-M4wqKeV5e3rOCk zzfxnXb=ed%7QxZsGFZ!Bk=ojIqXM0lz`=t&N`(ieb`uT$vaWG--x!ps=kokELG7^v z+{LRR;H>H{+#Sy9)~}T-X{s*WDIF9ko?!YOUr<Zup=MumQG-aUl^ahE4l{N=PPIN~ zn-l^?RKDuV@=n3+zLOZobbuL=?iq!V`LGHA*RF@Cm+IZ?*xepkW(o__+~GH;_KN|R z{fT-8;DoeQk2DTf%YvFF#8I#;KAoMtRc-~lBgdcSguAnaFhZdh`nj;a3^tvVxcjx{ zOH@{}tY?zc-B^5;0~=dz6e<OSkURs9sA89X!$@OOsat_N^}L#Ipn{m9lD^$apDlZ) z+F%}BLotzW`brjYCfTlL$A?!oo1nfet-KU0HB@FSmeE+E%|lk40j*XtPa<1FC2CY| zLEP-F%&!)9#+>BL6c1UTt%|c-C%-<d%s%A?9Qw0wD#NMZ2BT4As8=6FW-E-^<mv1o z%y4z4`#yG_Q@pM|fvT#@&Eu+CNErvly+g_m;8!<%Lww-az%?q6yKUU#Zy7k09_RcL z$a%Kp(M5QWAV}VT&=y5z{L!n=UJ*!IXVmx&`PTj+$H<%c+jQX2En6e{&_?a5V@W9k zUwW+qN@cXl(477n;`bSqU8C}}Dy;C$cc01W96giS{|^PZ|H4Mk*w6#R)1L_JLEsA3 zDAeVj-AhN@jet>R`h{*D&-?xTv6%U;Fy)q@zD7n;Mm&VTYo!f>`4|^@IrUrWqi<2` zIK=%8Y<M`hR&&lrT`sgoO2e#xH1^?uW1Q*gnF<R^+{Rd}kov{D)UCW~RDtlYz9!J0 zvuzG#esVN#MA2q6X0(?Qe}99XcjC9KNVICw+cr$m)_i<qsw_E*igb*Y$g49orOhx4 zK;VYH(YPe;w9pj~0DlCR58o2A%4Us5R>>k7_cJFc62Fm1dsu5V%^D!kOF(oA;3duw z%pO09{DvbtIv+U1{6MQ8Wq|e~4(8R<QVp|BKxY6b@ms$w<mJdEzk;EVq-<vB6xQ$n z%BeKbvX1%kg!C|4zjZO@(LO{6MdJ71yKphNKsFdZc#EG*ZP9QKzGXHf|4G?ws|OLo zTDm-pO%<N~Xs52%nU|g@e1tpy8c%8nH@?m@ks*j$4u)xFWs?B)RyWC*Xd>FaZSiu$ z|CJ~BTvRLdM64V<l%{G@ZG=2gV)qsc@-J1H=OzYFczd=+EHftsd^8tBCp<coL8T2A zKeBQyr!n=ytc(8y9sJ=kZWl#y_7g0sn4t7UdzY>`xYr`XpzSoka%-H{0)Ro-jT6+} zT18|CY&T<`K}73~WMQMkzj<-{e`EjOV2Ch(n321C+#16;>MjIhblly|M?Br0UERMA z8yIvk9sVuv0~h)1=S{wY{&V6fDi@0c8|@S!>h`gR_^u~(f!y=uu=3o8U2>$VV-mwV zeJKl8K*mz%0O$3!XmmqEd#rW!>oY?U<|?CBsX=UMCSrinA}B9GA5MTUzn%ILQD=}Q z^-qc}to5D!{UYEBFfSF{7{}5#I2`7!9Xcs|{e!rTVYvNetFc@43N$#e!DM_Y#5_4V z3P*)qJyw97IJGZYj53iEQKK~Zk6QE|wnDAQ6e%ci7WM9yX{3Voy>2v7-{d<kg-Gz= zL~i2NYm+Jz{)Vu=O{-|Xa^xvlliPb~{};7-MuwYsXkxG1lj00SnqkGbog9SeL|$gg zWwMWn??T^)njDa$U{w%C<B};yZAq!bp`P-!;%1n+g9<43nESZ@blaZWv@Je<*xwVX z+svoY8BY(e{M&b#<CrwbPzF;$#Xo|tB+d|-ql+ARHV#xN2m_p(t$_)gsHcFE&2D~t zGE}UXiJ|AaEx2^MYaBY}3$%MIQu(rj$Qn;-<4;b7OGW0k6?2`vSVj9zHV^$R`4GmO zO>W*|+Zvy7%^(o^DMc&%_Tp}4@Jo%0Bs7ObY$K2QS=1v19slY*WwV!8B05I;*7gc| zC}iWT!ocL=zoXCa-*EVkQZPGoFVou4>|(ng{&T`5ns(d;`0IW<cE)-zv>RE4$3aCE zX={pif)<o*iDoSpB$}uyh3B!TW;&bzq8ZkN5V!Go6J3<IZ`{x=pnKYSK0qa_%*uG3 zVZi35uKLvY)6enbqPNS^yzpQ06n)L(>xfKL2J&CwL-rbsVhFX~Ast|24AzGCb$6bP zzjP96&p17?0<d_~za()iT`s)+v!iqje}jQB4e}}^qoPp+ch#U8(uuem<AvNDj^gm? zz}V3tP009uYV@^_drJXfk|hYe{Oo-DEcU!HCt1_7c%iz3N06fYjt|I>`zA}Cr(1{- zBWmAc^Tih%c@PSpJD39Rtvbpc27|&`W}18q&trP3z4xp%4^t5T!T})zWON*!hQ+0C zGnKXI-(t5+$xcN_*!vy^Ebcn(`}3GQ=EjrR)jEu#)a!Qo+uU^L6Sf!vtQo@-)YCH_ zIkq!}#RQ?#H9Na)c>fA?i%F=AwN>+%6IHG_6~07@;tNMw)pj-py?fm5OAkUXC)Brp z)eG?cTAV-ODy=aRrlcS^!0S!95GOO@_zy6Yr~oZODHiWB(rYDHVW+oP+iSHanvW_2 zD+33#kuvw;P&BQf8OM-`63t1%h)cdnm8}>fIrS=425~>gpk!*nOPF^FRJ!}0{NO(e z1ANE&sU_mPMS;Pw9^8F*v5!k1Dr?=^%?eWij0f~to7y`V{K(<#9fgxsh1qZ}irc;t zApc;fE}TBG^?-(ZYfC3hk)rzA9||a50&`5$fO<eY3cKJBSAkuCMjM_C==EME6Dks^ zzL=O1{%{4KFMA@$9qabdwjjLOeGqM`bO8jSW-M#y0#*V%h-!j8OjJ-c48C!9ps{gG z+obX;M8N7J9hu}!-T~v$m#BL6+rCAZ@~{(|Qp{KA8QP~|Ws!GcNZ6IsjuPg2)Ay@# zlkbm<lDRjHuEV?0-rG|2dAN_szeTtjjfi+x8X(NVs%cA~RM$E&0%PK~Dlx@JV(!97 zB9-b{!&C4hwW4Zvjd5VueJVf4{f7pkLgZvi#QI25A`7?N3{%j1jOL_jn00q#zq*O+ z)JHKWyez5-4i8t!X6kJXb>MODInB^CQQz-%|FVW(Me6cd&RQ!Em*`8(cOiTV*}I0^ zkh9#bz+b`^Achh+t!T{E%m*7Spr8X*#NFvrNeQKR9N#NYImXo$orFW}S<u$C_j~T- zg9F0XYA~w{k0^t+C3!N6^t9l3zrxxAVY3|1tsn~^0A*24ye}FGou{e!xQ}|mm8~+e zK(kVmmvpXAwz(keVcsKxTC+E`EBiqR5Gq;nAH?u~b%Y^-r{_Jw@E(tl%n|YL=VI^k zBMMcd@st1`qAKO2Wg@XJAdDC~Qw<oVjqM#%sgT#L8_mbIn#wh-(7}%vswlrRXxYH% z<|ss_5^Tty1I<y{-`XOvk8+%Oyu&SxXC!w?1Mr`m1AC0CF)%m_=y^S4#TPvNTKoLC zWS?%gi?s!(!KfblG_LxYIv%vz)!Ce6*rb!^cN-d@WP|7lCSMD$L|X**XKL`^Uj18x zIFmf$?adp_D-%Up+mKL?AXT#OY^M)`Bh<aLfOO2X-9&aip)XNk+n(aI7NmVPOynVI zk{Gs1R0(7~pK_Qz`(i#dz^?<ka%-Jdl!=LpTZxH|#2$28&qwVU`iPR&Y7>#|kp!g) zC|mslRtj<WpwH*$1?0vyPMOEsIf9XMH~KDSK79kjc8JAHgVYJbR*Wp&#T$=RC|_a> z{<(wk5heSmNTLQPjVu+tu`Ax0<<A#5#ux4wy~Nol)akOY-;exwWwK!-b_@)qlV7$w zetK)O5ko-*<1Kt;3=9nLny}iY#7-PfBbuMeL7vh$4l|;veeCVPm^Vu!@#TM1iVU!9 zVoo(teMS{K_Cz!_rjzR+6dBcb7m6G({++e6)*WJEo!9<Mv%`tX1OcY)zPN{74Ta#+ zabo}Cu>Jp<3;sv=x5%C^te-lbQRUIA>ktvMAj}|$FYU$Qp}=T~;pv%9btR=dxklUy zkR9E*9e)3CPHhghYGI4o&yB<6Ek^@&s6_$^hHm%y;<q2JXN)zzFe^8`IJKdn2s#$7 z6!_s!!&<P?eKE%-i~G{hpj@<pS*<z8RkV!#kW_z_I`*AM9lyN-^CE#A(_~hf^&~Ee z<paf6|9NuFs$!0`MLbU~F3r%m*u>$mG#6s2Gj@yUh|7NNvbZ*-CiW>(<tYM3C0`s^ zA?3&t82Kk)&HL^$!Flv%wS`ZZNIdhvDw67m;Lj-U8B5QW_0}LGEo9@;;WynGnvllt zKUBAARXOXTZLbPvm!dqlSf^{Cvv_^I%67;pSHDWETa(6%b3ArFBn*KzgS982%7L=y zSb*z*qJG&*lj1pd2*||o6H{5P*+0zp>`$PB*?kxl)}lSZKB^Wx?u%oy%PiU;Ucb|V z|JbtHI`e>wDu43V9mbmTz-O*hsj=x3p@_52uHWdv$KHWXIJ?hAN_O+SE^)}7#rG|6 z_BKM`Ghwpm2fNaI-XM&&0MIf<WD;>Lw+nk~2$Q9!(m1H({sIm*PjV$tD(vHzF8J^I z$5d)V3#P=#{X0~lkvdz*hO?2|P39$67m%BB>cJ;P&i?e>f6oD0A_x(fXnlhN8_iy~ z=8_i6_?scR{Q@F{<_+s`6F0?)4q>Y!TZURG@z1Xg(XF|Uq<7M}+x3!5CKzKPU%EBw zWsc%dMB{e=rbNFynyQz;$Wk>xdNDkRB!r}hPlheoBDRi4NdE0U68C8T=FwmB)E|du zu(3Ry^ER}qt8o=s^t;)ka7?Rw9BkK-AbMm!5YyN{n8j%4(FS=#^NXNFzOKvDh-fh_ ztrMuN#+;}%O*fdC_O-zikI?cL4FkQFbMJ&%;LsLdp2pU1z81byeDrcnfVfSPjd&Tx z0uTNCRa&zYgwCK{AP>=r8Sx{G=0I#zQ4SAF*CLY5@Ge_3>$_ebR&z8QuoP^G_nMbA zR!J5=NfW+bA;6g4yh|56J$}zRiUEt*T!NqU4MM$Ik(YO<fa!*pqlS%~x5Vh1>5ElC z3I>TTR5(&RS-e$~mJ610i3Tb|O!%oihx<r;%EzNWrw(%;e7HcAM1+i2m!U<@3yx_A z@BrjnKZyu$_}uiD=n0T$pyaOo8LkmtBoO3sn;jzHnw!Wmh|2+UElz(n$)TVtn!1Zt zLPt*`B+x+P=WK)u%SW-pzM&Y971W?PE44Vx(!$L}r$^ffzjr9pWkS%0^O#5c1H7fS zULKW}oc`O~pMSpnz2UkxE7^i0d&m_F&EsonY2g#_&}@?5Xq{jEV<N(6<>2Dou=SDi zY8QGbi&iMst0x9N)(Qw|m<=v9=H$h=d9q7_RC$8&xiTCpO(nAT)09jNd*kDz)xA=d zA>mDJMEO}wm=z8%##p8Epux^Z?6*hT+bBf^Yw~9wh1mOBI2*B_&;n6YqN$_sLi+`r zN+}oUEH%!)UEZO0kGwoV{fV0125Liy{XQRjOG;ll15xL$5w(ynu*BE#Y!uUbJlqhC z*)p9Akd=!p3VXT;Mo_Zvej_{xJkq)x&0<&B)@Utjud|co5aPb~dM)3OKXKmRzZ}RD zt~hR#D>70m`e$6d9RY-q2@W6QANld%I<S55;;N27*Te)k{(3q1=Zui}3!`sEsx<$3 zka`~a)1<vnEVU<#Mp&OF$SR?x@YH&BZG;E@>vZ*VmwpbdVCzWDJ`&UO%hC*(c9AJ; z<Fw_L+~}P#;?LFX6=U+__3^UQg8QE49{J1RQH)f4Z@i-xBAXi%obwJAYYfY%oC|O$ zmBEM*5R`p`^-^7;%3%0NKBiISX0k)fk&s|UUKP-iI1nuY3gIxgm?UHEnp8#pFmXAs z-0Fmb1tN<imBci6=|jcvYM7xI=iz;6SoEw;y50`*hFnhelz}TDIr9Hr80d+($MhyK z!Z1=A_}#4Aep2`ZO-OezP)Mv=2ff1_m`ib4*T>8qe|b;=knC|ZRghL9-j+JpIpBjS zLIz{G#rkZ%K&UOs1pgA;bi1JjfXryT;9AV*AdF1(P;A$V^MMS0X10gTzoNjJBTB;U z#kJ5|QkG?|zHY}$^ddtj_$wAkIcd;Wk|&B6^`fnOL3uIPj@Z+b!gftAC_YE@sh~EY z@awBver>U-j(pBMf%*W;OI?#3J3yRO&^PqFHW`#yr|<HN5*1V6<7*_>%#0rDM+^ZV zw!IXpiDk0Qo5i<HY~uMDSv#WPCC3L1r8!oCt%KzGPXPVM>L_mNZlA`+m>mgyn-Z9( z1VK4OJry2Iq?o90-NhDNVAP3Niev{MJh~PQ7M5U9?Ob1#H}q=Dgn%~Ng=3b;7jX>n zADv=?=pgaOIN2G2JCr_(7k0YF#OlE0c}by4_|pb-iJ-CYzLbWw<r^K#=rJHNzDF3~ zEYIbLJyB5cO;v>Hs2A)ZY;uuYwbQMUa1ed5)1G+DXr$;MC*sQ-N@4$xD327+bTrT^ z?kmr?X}=Lu2xf<Nh9GBhB<B}i(hZyzCc!9WX&S8UyPAxyPc{wk;(%N}_KJn|{{B#p zx61(sX#!>7X5|gkw#k>FEC139#QtL*Y>C)kvvqB=d;fVQ8{+;RhP-)is9rX&jj-Ik zT00%|O4wv`6`(<QwZmiMoVuppt!}Q#^NL*Agqa&nMe)?_P_xX3`IZ5v>M(&W*hs2A z?qIa9QPvO>*ssTM+$((GcA1>?(C1jm10t6@Dy(k%HtIN+5d!B<k2qQv(35Ye2Zl~A z&Fon+6YBHg@i;~Lm}LvKO7N&WuPU0S!i10Z+`i!#*F^1Y1_{B)lHS7EAt|nEW^7Hv zZIs`CuC5-ca-Pl?33=+y4`W~P&iD>k;~J%32ZhcKu$-i2gOM1Ek)Av0js<&PBErK4 zp0BqauJ^Yy7bnHdyGOO!FbWP*qG)O@I>y%wAIOX9eD)7R>ow6xlYRy-h|ZmQaLshv zm7r7H)>I5~>_i>NDSv6k)mCwZu$9K6)JGn#ni#>O5}3aMrYt7e67}_&zNlt_@b&$n z)VO|sK6qnt57(FA0!{d&$}h!DdNgOgYMn=8${CJ<oF1@0pd2cV%NwECVxVAPw7T15 zmTtdP+auOaA|sV(P`XiQ*iRLnx4L09flS!i+pZdv^4L$4l1eAo08i=p4hB6yTGnXo zwA{hlb*N&+9IIe%`QR63XgvigLQBwix~7%fg2;~k&!<T6a2CP8(0`t%eTL^JIqMp1 z|6hkt7K+)5;OgNgP<OeRxLV@Q`+=eU(D+)Pk3QfDr6zSteHr@s8dz<{_|>>S2YIAe zYh9atd77_K6soYC+WALnJL7SxqnE#(+1G`m^0I56gta@e+L0z>IRG+?>DS@Oe-NlQ z-mQ)F{=7b($L)X@jB5Ot*D*>ceMR8793ItK-tTO`iAnNm-xzYn0#;&=gXJYz8<Xj< zi+ynPbztvyuhwadre(flpQkggk^85;A%tnEDOaI0l=6A!yf~<L19u+=@%~LO5Huow z(fb!48*a?bWkULAo)Iep92Z;fZj;kq+fRm+DRfJ}{A((l7ndYEzC~l2H5x<d6{cSF zjXfR;F8D-yuqEcY6ng&VGFMXn)G!WA;9k7pp~HQTA9UUO>KmnUBrL#cb@ELwnkp?O z<rzEA*BP7^$AbGBhxry`;QR%SO~vs>ZZ{8tSRklRk}8Ts29G>v-&z?qob#qYSe!ek zt^r`X2W(J?(qxhOf%h#^?8D`^&MPbuUE<rgB}g}ksqJvUa$;kd!781Nj$b4{a;FZT z^#)PL%o;pe^G+K=P?M^<{GuSG?zQajbs{}|2(@b_GwxoaW+#jOk_q`oxM<7Xe($`u zEYd9L^~U$V(}nfr7iaN*yCIk<d%iz}lETnt-beSP86$FL$5eiYx%FHhALC;@-)>9s z$80u<1iU&&+mQB<4bZeyBaOB}$!d@`^f4+iXS3;h>rXP~*FRrr)Wki^(q)&E<x3mP zCiPB6n+re(61W5?qrRAF_xuw-0YTpto}F3N&!f*yk-<l23&wa=89l|M65LJlJD@t* zLAJ4uW;5z8n$BM2docaXJN!4OO^lKzhO;{L^1;J;oua1;7J1a@?JnA2&-><i8ygLb zMDD3~l|n_?t%yh2+!s6G0ZT8n(S(GFh6au_vf+HOO!WN_7%quu&xktnvJao4_wEA@ zYy@ky@rFT=!nVh;RHHh@AUeC_Rvq0iujY`H>wAMt?71xOWwtXa8UsY(_;C*7d*d9Z z-#(@Mu>`+6lrEC|=E^q^u&A=e+P9|#`hdP0Rg9`gUbNqm@!-Gg-V6vL;!*U<4ZtIa zv@cWy_^m4cV=F@sv3lCwx|?r%lb?NGQobaW&#Mi<9dngpq({-uy?<X8bYhrHzd&4Z zY!;p42(tOwMWiY&eRgqF&KHSpg-c4dvwcCwi?HCUE-<2-h}kx>xwAR&#MBUtybddE z1Ka>|_TRpK@#mBE#M;ka;RDR*2pXmP#YHG|5qh#YgXDUPD*cs3)<j0y;@=j4p~pqJ zQPG<78z|w>>>Co@wnbArjo;_^QGnuQGdUSqu6AMPxBHbW99c9gHFZ*u&-M5cS}n@d z@wWUbV?X7y#NTCaqV_t*)w+Vzpte?L^08$=xiju5lCZ4~#~@34qa{rJM!{y~Tqe5H z-`N}U;ZKj9jnYas%EXCD=*$|XC$h{m@?;&T(uT--QOR_H^PcjyAP~pc&dS&v#J%KN zK|)APC-pnC;EKdibK<GG!r!33O?jjHT2P5c#5qarLr$U9kYI9j|G;c|9^ujVM2D|X zw5P2oE8gFE$kicS+qHqsI3(w@@zCREllVcezd}^tXMb(E=MyLtQ~E0y>x8O+Pqef? zY3J^)uf~;VDge4m$gh`Aj{?OYnES!Tftm1kjZwLB-5soBf8q9RaPk~e{SqHq+Gh(R z<}KbtcWaoIC!do+k`h}5s~QzJ&#Ro?TzU_eO^<L_7Omn7g9T{r(7H!=+FuhNN@rPB z;~&KTEpS=0EY+~p;4hZM9m(JtliH7_{E67nW&05^fu`^-6LIzOIEjIDl^%DWZO6Dv zsi%+Ej`e1-K@~NxG)~mry-I2kMB6ChSCcYwYS$kvP={@x0ci#%`Q1zs7<o6XZ`X-J zu&&!Tj8<>xAgvNoX&oKS7|-8Lm;%2@BRKwb9H4rRICqXPIQLdOMGtG>0(Kh}5xDzW z<`R5ub7|^ov6hX(i^R_d6ZdLQ5t}vu@?2|ueBl^W!CoR=LZ1Urel(cC{`jK##xJ5Z zW6m&PFV^e{7~mrz4!xy@n!O%C(vIRG0g>FrE1t+=n3;z9D!vWHCUjqMi*QAc4!hId zk9MAo2%jf}g*lzYPM7_RYQxo3rJR%jUCd5FoBmmSn@QTM@?QERM*E-uEb}GD!7+W4 z;ucS;Fa1*ZgF9U&8>R&|tjy3FH;93-Kpof^^nCm9kp4U+SFqwi@6}>$jo4)7x?L*p z5e<NgLBlrhpA1IZk>HsG=We;aDoq*x+H6v7x39;dP<1mgK0fQuG+#L+=2<$z#m5Z5 zCEto{j1wIIxQ(7>!yi2iRgQS~c_6N5JHqo=$`<Z4>q=PD?Y@90#727stD}1n!C~qy z1q^LAqT}jq4r2TFIf&-|vYu|DXI}0>^}2ev5jUXZCM+Z<H2PEc!}cksDTJ)dT4Gi_ zIn3-w>OWL>l4t}d2Pur%y+XM$j(Cc126Ww7ST~4S;g=2q8j3!|OoWynEtKkuUjZ>k za%azP+sS^P^KJ=|`TAdnlNkRHqn@0nFWdFe<s`~4P9^t78|9}Q-+1$dm8;9dxVsP! z8kelq;Okl7bX$l|^{+^vc)myvzt+wRuEx>MoI4<uZsqpeGFeTpjh1gtfm(G|yxwnj z=b+f_Utf;Kk7Tys)wT?bXBt0W2Z_LbN%O2p^31?B7k7Jh+hNC{vXrOlCkRV2Yi^T$ z1{NYfy3~j1v@U_F+F>-_sH22UA`hq_xA?B;_u;ixDrx%9ajWMqLgzfYCofw8KF`gO zWh92d@!_T((;rc7)Y0;~o3^0R^ALS8opgP}hX%hpsuO^eo@L^`#d1RJD{m2kN6wGw z5T;|y=;jNZl}W2j;Bc$yGn_%Ti(Jtk4%<zmI=TPkLM$Bu`+OR4_j|5(X6SilsLG$X zcId;vw(SCZCdXq|eZX?dTVPhaxzBuUMemFVr;6ZgJbdFv6(_8aZsg8C{u08%mv<>` zDK<n{OFDvSie@8%akOPC#ZM!JA)ceoSV2<Tor`idjCQ1gZ+ydh>5cCl`%fdh(p%F! zN4;@Huf@ukLx1k|0(qt;@&Xiw=4#8cVPcfFDX~atn}9jl7(Tz#p-Q|4F%ywo(jlv# z%qISsaHlw>1|(CS*2KqRSCP8NF(6NfJ>HP|lV`v4llSyqe<E|J5l24&->D!0%X_1> zg{vvN5D0m~n!O3#;}}s;n>z%iE0e^EX_%IQaWRp4yx4LOzqV3T+W(;k{udVh!#EJ} zgnXu%H1P~HO=bwcbt57%T)u4QT05g9BA!O6PoHP#DPg-80&W|M33F=n@!{4j6>-=9 z<hAqWVp}XyfyN=oZ7B_bW=4{IF;%){?PLw?TWdV?CMJ$!Q-*V%InBc`tdg2AKJ4{P z0{-QIn9Zm#Z?a$Q{bJsG9rO(?ULUFrY;u9P?c%vOTrLU|>l9KJP6S3H+U>;T?}#WA z_O%upq*IdOTe9b~q#{Y}07vk515LC)Il|+Aa$f}Tc<VN$!X7Zb>r-&vQOIH)UZ$6& z36g&<+>7?MFwXUe`uwpa`gVyIwLJn~p1QK-H&X5vGa};Wdy^Q_m|$Lgl*a(g9EO{h z##w%7(g(SjboyvXP~vP72(|N1)ZI{XNa-&bPjF54D`q-}^mUm=DGk7I_a#t~zNU)> zJD=vyGTVi2y<U{L&m=!HRbZwWQ)hRWTcIT3njw$#H;fw=v=!7nxFdBX|E5YWT1~Y` zYHpUHg-A#nwuGMaO+8sSTpmA@`QG-O=124NHAT89JT&>}*&qMByXD3Tn-Wj|5S#f( z1uWJ`3RnO6rh+Yy?c=B~PUJ?nV_{w6l7FulT#(2M_~r)HsCX+L?$5L39mEvBSU`8$ zYq&EhHXoxg(J-om_c-<sk}HMeU-tnVPy0i6A0tq}<(g?jtIxArPqXlAq}=_R=fi~B zgMcm%XYZuuVR)w>f<e=;AaoiUReo^7japP;U-gopFGhk~JsPJ~i+(}-S4lhLpuDou z%4<yLHdzwPfB|<}u0ka}u$_$2b#p%y9IONXDbYn?9#?dCRRbL}A^+@gR^0HTKm#Iz zElOWY?CGY8qM!&er1<^k`Z8TEqX1poLu>e@=~3q#OG#^kYLhMnV)y;ZF6Gqz_mr2P zugbL0xc8{kyxRcLC?m)K&Yj$%)>_B@og|1@e~QPf=dh!p2dBQAtX$a~q4}AI9ArA; za(4@-P0mv5dlML~u;DO#U*_mx8yZv31rn3O5F4pLW;#xXKA<~u3@cMIw&h)_VR<hr z!9BUkX`tVYVsZnBQyLoK?@el`7pjsMZnW+-rdM%a7fk;yM(^G|FP~#ffZfDXDUnI; zG3L{|yxApgedaGdPwRpes$t!ZxLHD@k>G3S-EN>9CM!{YB*|;6wg-K3V?)eR((z#1 zHyX+Us~H@9)~!8`K-#ZDU>v8HpiaQ|@=VU5MgT@ehzQ(1nZ!M0ZDk{Fb`>pCb0vQE z`gX@ZK}6S!(-($v3w8-+L6Xs~;@WTrR}q42gH9p2ncZYDab8*`#p8jbS&H9$DTx{1 z|8L)r+}X3oIp6b9dN^fZsl0TpRK4NW^TVGZOit8~r*qM+QL3pd7G0|~C`PHxw2PM3 z->n8iEh)LU)Je%r7nEt|D%&F&(={XI*19z_HKI38aE6Cfm-buU7W|=mo3gMA57~g` z7aBx4OS&(O5w@W;2pO@ZVyG;2^F+2cYshx%M2*M@%;(4quYc}>z1WX(9ccb&>8#{j zE=VlFg+&2-xsr%AY_}ciz4+<$^}2TO2e)byPmJl?+aOU7{UVx$=ZNQDTQLxsh}+(_ zak-NBw`v4=+Ydp_L=w^J1&NT$-AbEUuj%8LN7nJzt^APyl$(ght>;(o{)xCqf8IX6 zq`a-CyPq$UOPJN(oo>$gX?v65Y<IVrD>$GnIq7Fq?=??};kY4#Na69k#iG|Wd|{Tt z&uFLgaDQ<f-bY#NK*2`a#nEB^i$K<i5_Q{%$<LupJKT0N_`-X{OF?W{!1NJAm~0u` z90aa)SRx2Sa3I6RwT9D8=?$qhuud=4*FtzmnQxw3c3!jU6#Tr2C%>4)`{9^3rX|Bg zNY8N2w1??HVsq#}Xk&RcmoQ<y;6(;#7|x1fmj@yz&`|WH(-s-BRWLXV4-35HyVley zVTQAu+(g>Bacog;CZ%I-HU?7dT+nZRo?h7BQd5Yrv%sI0rPF^Sk^9@l-_4``bwK!A z5Ud{#8B%fMPHat04G9kj%j5>0maQK}jQTzGC!2<9FicZ-#V^ZaC)A?QK9EelA!nP) z+Z2DqYAqTsfZ9k1CW9+h;Uao59}OnJ9>r}xs&nHlM5^Y58T*TkM80zn8=UE2e8u{j zpH(Cv<_IWBdh<6_f1={d7#R|wGLcIoegMU>82VZLrcn;{FuCmF59Tpu<i#i}Oa^ad z$fDiiTwo@;h7K+%9&a`0=up)0!TEh`KX3AS{`5Ddr>7qQ5TEj5`AFXQxx{XS6|0N# z3g?J^0RDM8_l@3M4G0f^O03>$S#_it3cdG%7HWo_Xb-<{a&<IuxPG{G;MwU24!(<a zP)MR56XYh?+~2I&qkeH6s#3b(VLDf~Yy(rVXGi>XHHzW`(2t54<~-m{AO)J~7AhPI zbkz9A9Eq!7aijhY%^=rG`j6?w^hb13^_LKf!X*}jaV$GaXvsies~+H0T#v%OcveHN zw6t*A@XdVfqJIPsPwPO4;>%M4C+{dTVU{cOk`3puW6b36K2&z%>btSk&&H>Z;<`p> z`FMTMiHw&wO<Bcc{If!ESS4RjvT^h}GielUk8~1rKJJ^m>XcQ$-Y{pG@3aN}s_>;# zeQ6GDsqIMA?iz{B1XzIIegeu-#qL_ZBH|eh`L{~J(A{bH*vND8W}io(WZ9s;;m3qZ zElXp!ru)Ht+yJJ|dfvRtcX?~Pn_nW{zZbM5z3mB?Hbf_|+7ZC-9yVjR&7mnNul4vE z%KEK*b1~tReV{kNh2E=&iwgU8w0kYs3c1o6m;*fZfrF-g?1!~+<-`f!Dj8+i7NJUI zcZj}vt?|8iHQ3TdM;gn(X(Vidn!cd{^x{>dX&Vt<c~kY$*=!Jlt$zH<$)D{`Ucajy z&;VwxYuf_O)~Jr~=04@ngQFW>^`^_3pu?t)#>x|K0cW=egSMl9#+mqq-8|RdMP1Dw zx^5}L#|i6)ERW8LBjm}wD6@3<?Nud{P#@qIK#`tV-h;`V=p69O^mLAGF(TMW6~DOP zyDpyxO|p|cePp`grO!8?nQ0#ZY2{(!U(nqA?%<@tbhA;!=~G~ZIe4_6={B1*bUI|h zJc&0To~1MU!jryCL?K6{3hjC{&E_}cR>$`!cXl0aV*W>(xz)J2m+v|RNGEXIA%XWv z$Hx$v!@W5LfaU7iEY}no2e;*F&dh{F;<$?``JyH&l3RVjA{xC<KlGaMVsbmn>=Rq{ z6}dLQKK(BW4N!Y)Mzd3h)PX8L3OR6JX82vsk<?!K2=fGX6aY;;A)HZGGb}75<{uxX zkhV+ntp7HV{y%c)l^Ai?67k4&6NU3ZyurWYD?w*Qj*(z}17rs@Aw;Q94T!Fg@K!Sn zsAbYnXgAJgNnt%$bTut_I2mveeqHC8Faxz$2j&9JB3~`l(8gbSfTOt8G(TUK*Q(lR zn7M6$UCb0D0-H=Y_@ozfR2F|pyOD)+$%M{Va&ls>%|<`y{3G<99ycR8(ZD;4@=k|d zx1nPOrARPmMi86c#Qn^1g5RVk00)%LY3fdvDm`_|D|ZP>a4hmnJmTiqc40*eItZ0G z(Cfxe`6oWB{4L&V2-lf)Dz{MkXQ(A{E}?e1cWU;s-J?xBbGBUgebeTI{+k+LT|P=A z;GHDn*981}=hBJAGXPX?iXEu)RoZN2kKn)}Yp)=+)%`(=Hk2z^Csu^a+hNSE9<}O4 zW9BhF843QW<{+N^4NZ(+Ohu0L$qp9AhpJ?UbX8~fibx(>f<ko>3CRh|ZH~FPW;%L4 z2Jfb`#^2zr=0rNvM5{6`q6x-M;Q<N0#SuM;>J8B$W1lwJwBT6OTa+L|E?*68NnD-d zqirI@#!DTk6=nvBq1t|F2a57+*JomCoPO&bkNHd&fq@7CoA#=ogI<ZG86lOO9TWza zOa3ncx>@ER;^g6MTjnNJpU8$17lkcby!fn#Y^cf59qs4;WjW9@I`pu+^=!$XvlzSp zHl-BP6qCLifc*pwQ8vDfUY0lgjC>>zTLL$6VLQBKH2U4M(&?%A718nspPj%tmUBw+ z#X>LH_#p;`9!I5vv6@cVh1b)~bHTXz;!@s>4omWjec#A;((g=Fq_p{u1|<#I-D{h1 zr%{sZ%zv+3T?)s{c78c|r6Ez1kf5OuR<!e%FZH3R@ys2(iOnrffDi;zFe@cBMPZ}# zs$Wo{1&)itUJ&gr?)P<{0_b#pfgA0N_`4D>J<^!_`!;|HxG;mZiSf=CdVqy^)Fpf= zR6<3YrraF!c1|tIJ#;9sg<)`+=a+cw8*6)$-yV3w_=*W`MB#~zjz6^LYX4eVoTxdI zc3h_Bc-v+z^z5>e3vEp)brfA?bQ>r1^-8x`-ATBNL)9<bX9-R%aS<I@mO9YTx@_@J z@?;QUJ#BrrGOlk#&jHnb_{Da$9gIOeJQJZoWumRlYaFdADd{Ghq(F2U3aF+rM*Qu= z{vr}dei%tp99#wcVX<|+zNA|00cR#5V&NAV6OCFed83?o&V4f)Yz)JnEl%mb2*LgJ zq))r7=SA)YHIpU`%y7^56`#wSWhhSn8f5pyYU2CDX3V?qUSjTFkRdaaghF~~B>9$& z<i7A=ti-0W`x|Gu=P_^8An}dce`6IZ6O#HfXuJJovyNQfWFhl|X5W*qtYHI&GN7hD z+KTh07-NP17+0C02;6o#B6jU>;rXG-!IBn08OxyuZoj`hcQ)a@7O5;d=o7$6_hSTJ z;(^Dr%6p+QhE473G62?L^T{&S2^UB8^~fFHE0@wP^b_T#h%rn7^=(?yQf+N!)<~#c zB&mh#W%khdZrGJgs@ixb%h?ad2HG&$G8+QXR6zbUk;$(r4F#>F^1>Br!mAfDkRR@D z!K|#|oQj<FEnak?Kq3<@2Yk@3?uUAF%MKQp-ri)?dltM&Nb;3zDJ4aCuLXozF6<uf zjk9k;7aVNl4ZD6nf7y}cM-NiW-L5ky9{!^25Nx_5fRi!>Ah)DlY~3|CG`+4@opGIM z^i^Z4rXu>d*NVX<Si0H~gd6A-MvG~P(lUxp9Xw5PA2rLSX({wc=au31fwxTVQh~Ia zt5qVs=~AMZa#%%;=wcXperc&(evRpI)^$1=_Y%I05s*G{QuhuY-NY-QieofB`^yhI zg_~}T?ri%R_{;XV%%zN?*DE+(@Ym8gooZ7%{3sm<dlkfHY_(m$*lMH1I#=-$%lN2o zli}b)GkLuqT(<UE0U$x+&|^Js4D=Da)tUC`7`)_vE%+%BcLx#oTSvvE)8}de<TRtI zi2+49xnZlr^?%jCke*=-tgK+O4x%c6sSAykJg_uqqf-4w@Kj695uo3f*_Ruzb<=v< z{?$gUn)_|7tJb?F1>ngpKK<ky<s<PQz}KKn?8pSD$t|n$<geGgwo|)k4OmfB`jQw9 z?0LU-=VqjfzQPep9wm;ty@1!dk?YB5K)kxIBeI*=D**1)6&UjPIDQuV)l#&lKlF|y zkZ?|Hp2C1&@4`16-G-e&y?_ao%s(0W`C;w^HCNL1QmXc!cE_q;;FDL&w3`&}F9^8c zFU^t}+D1~F(Bj{MbCk!ltfB_Qs|ss8^46lwJ-(QEQfUbUYFhKkq`r_2x}jqNNm#3H zqTj9TpQBK`{gQ6-<Io|Jz-BrR2elDAuF@({MtJm^6C6H?DT1wa!CiXcF2=#y7k@D2 zd9%GOjfa*m^AiNepX8EdxcF&i_+k&&-xa|kW@}(tP*>I2U_*K}S3_}=T|7q^w`XB` z2D5mfvT(`vMwh8DGJql?=LI15;DsNI&n^nhYwgI&-{a#V-{;<=cJWiZ5HEkDY(4jD zc2?xCALMIz@)_iwDG(vRJQ8kP<l+Vwoy?kB5BPyiEC_R&2<|7Wee(Y$j>7xC8|N5n z-mb8AOpEdA->ZPnh_c<&o3Jg+X;AwynF(`1Ihpp<naOdzTu&{<jq6!k7HV>9xt|hy zu7!?dLSahdVg=JpZk#xq{L7i0<LiK0GU*LgdG1N4P))+NkQk48m_zc2zKcI0^I35+ zfbG1(u$`5N%GHCWUY*F)hG3~VBWeFl!~Kc#P@Uf0%|(ECR|6*{X8Rbm>Y3(N`w+}g zn}vYJKK$VH`HhCBK)g%Cw8flu&$)8+Ef5m{+5}|bRYsP&t~Jk0TLEENO=yT3nr<lm z@Zi~Hi?v*t)~m%x#XyA2@56Zi?f$WQ(xOpQ+m+uuZcE}tNvin=5=Yw)-cK$;Zpr*K zVdb5N_lpZ<ym>vyfYKk*n#uYjkyI9wC{A(mO8ae&B%;9#dTh)|_V0}&D>^xO(UZ2e z2{_|CZ)7#U(3yWf5i9##7`c79OX{6Y8(moRVE~tW6|XopYg$JLlxm|Q3X{o#=h{Lt zyCavxXR*2;2qGJ^XJ;nKfb^TpVwPUUM{br*(tWeRu{4Id4v!3gY2#K~T^)u_Zer}E zn_7xjY>yK@ouN|9;O0P^ZRT#CcRfGYf%F#Vs;VRb^a|0p^Z(QZ<vLJSPjez4r24#( z;S+YY4APm^cJ-}u+PmVLPRVEbwe<_*-WNP?*8Y9+%RT={Z+mnpmN)Z8JHzNX-t>;v z_h#9VcRfJ+!d^?N=4N?P&mP&Il_OwCQMpD;0zHfk@ay$}8TVzgO~mUpV_LitM@Q8z z?9S+w#)-R7Wl<Jqtbu^+Oi~n!$nu+s02ZOf<4j@X%-U%cf9f~&-C(#s-KB6=hXw{6 z3>o;vsZz9D@#<Cq3+cao2&D#!x?aJ@En0faklj*k8?qGY2W7NqF`8U&<O2d0SAO`v z-@`NS^|91k#Ix*iAf7JVoHz*|f-VJAULIBVzI7XOq%9PKEJ{U_o_Blv5g#1q{%)Yt zuHV`t7OdsEDT-d&T)1I8rwj4MqY%~C2oLVJ2;Ey#pY)Y@iCf}yrVI*5khguM+aJ?D zi8k08g0MGr24%YWdh&l++)v%RzPJERPF}`GVXT3;Q~SQ3);N&{uLjx_s7gcdjOIR4 zUR=<qVZ)snd>pj>8Cxn}a*?q4(u0!Y^j5C?U$fc+Q?CL<P4o5nci5lNCx*piDO7p3 zw7s)X1*lLp08=l03J&gycNVzHUhT)Dhg(-$$ObXIk$=&)DcV)O9^w49G9x3O8?~ET z{YEEdco)~jSjott&Coi_j{th-KghVYJ&c8~|2d#UD0n&g5@E1~|8LV>`w3ANg?&_1 z?FycB-DhP^mg2^y?@lqA_P>^f{|QRaU~igN=blSkS9CZwMjy&9MHhfv%{2!{eynf` z$pvnj!j!PJ^$UUrQOmKo@@YFMK}y`iI9Na(F-H2m)K^;G@|^OUI0RWuw$|>Zi>>4v zq8|c(foEJT-K`qR-DS<QQpmplNi`({O8SNeecMxWE%*Vy&h5(LR9K#;zv?ll#_(?x z@tC)@f+VPd`nOgyNryPs{OP1L^$HKVzP5{%Px7Qs(0FV1;_w5{2P}96%1Uie<Y~-@ zaV1)4xxWX785&z+zFv!TU)IztsnpwkC7^~V_b@ZTxQPf0QOuT=i%@E1tbEHNlEi7s zoMB^98n7I2#oEYI6n)O`vX0@jN3DhjcO_<+6f7pkRp%uamx1%N|ASCRpqYo?Jp`M& z!{6CwnC}RG9~=ygpHMjJJT!0U#5q{yUgh*Fp_s?BMbo?NS77C+qRn#5fHzNU%5x!W zZ27tg+u5U}YF4ON-9EEIg;mZ}8Hdm1v;2C*jqtCevErWh+ssQ25B{JQ^ON0tVXuaF zXC>&5P&JlKeXe6o?f<I!hD$G|QT#FL5|x<?czG-ItCa-8l)GerV?s5785`=lA{;M+ zkeuiJ@dxim$-nmb<cPb^5%*<jm*n!Z;Hy(tf#{KpBsvss@``UdNeL4&-ImX1-t?!J zkKxc71wH`B4KphR*)XnGk9o6mOIxDHR+?w4(LyPrXRs11^*OHU9iD}rp4rDu+N}9% z3&J7~+$S9qTpc5vt8Cy!B6VPJ?;cB48kr<eOXpkmrY#+5l+wWb+jk9SJ?{0hLe;O6 z7wL*k_D|653^agS^OspkT2n08ZYVzPqj#Ilm)FSJ&AB#pN8(}Bt=d}2bcAlX+)?p0 zL1e1J9sq(0OKNiaIOhMY^R2Y0E}Lw7qrRI>)$qE9Lfsl2!ik}0GeaVk8W1YV42f9! zrDpRi_q@-CcyuXkqt%*k_=Sc09&?96Tu==56A9)J#}xMwb)PC2fO#x-Caabw>Rn0y z{HI2_IqLYwp=X|p=?Np~=<UJRjui>954+Ml?kfMhR7O0xujiI*!b{uTA~|{_q>bBp z=-{T8<|tDq3CTI;lW2D@h@1>&cH*BDa_y{)8j?pQ@ST4-bycb_leaSjIqXOg!I-dI zwNUCuLgX|9CoCb|R&9g{#A6D$#nUq#?A;pr8AdUx?+Mg??0rWBc7w@CmP8$GxdE}e zzHzq~`$CYEEw*mQui5d*E?e~uhB&}WX3EcR8?CKn>HfFzpYY*7uYx^#J!@o8sI_T# z<9>7j4!UEiu=RQ98@44ed!uGToSby}kzEY$x!v2ihKXiyj2);!CRiFr>vI6V7wV&~ zpF$-W<*Q*jZKoda1CDyKwXd4AY%8NW?9?a@Y<jmp4Jb~hx@`Tnx)fT?5|=(2n7q?} zL+k?$%;k_^|2#bCLyFFc`<yhbT0Q+PD)1KLlcigl2(xq<{gAx`StVK9NBRT>y}T{I z8l%p<QwEx46v^x@>zl<xyp1Td;Ir1*>#*N&hVTtVAK9|*u$h3nx1=6hC?%PgdUH$1 zgU4B#9LvX`-GA_Cqke<q(>n?Okqp8ZYE~ymacnbL{jExU#!eyp{f&~&7KrUZ(@I$| z*^;qz>W?cO%fU+}`r^A}yw+(=Jny@=CHlQvYr*sZn~<g>Mq?a}U+deU_vMDx=p%_S zeq4>UTvg|Ns%zPo!tKDK1jo!MHXs5k!B@$&Iw30U0NMQkIcpzN?DYb2*ymZtS+0tL z|7ZN81f&h|3Gcxa1-K}FIu}UC&Q5;*yA>^uZA?ny{4)}sFcUL|IrhZMoeaaeLpX1W z;w-j*w2UV02#G(CdabMIPx^&kQ$y&xwe3xF%dn^Zx=-2<iAp6|^VK;0&iq;2n+I;U z#cse&zt)^-b;`eH{a<!3_qfJTs!iDCVtT~KQKt$aH7T8tl-f5_r4kH4qq~yrdgL&c zkJ}49)If>>R>1)!wONiAju(G&X}wa&e3M9e@y*jUOnq=Da;aeY3U?)V#0wlC4b>zD zYg41RpwFSrtQS5)@i*U(!g@ZK3qpF#ekkwhzv36}MIRhhvDIX_{kvF-w-i!URUy&1 zZ(GVLd13Rxa`n}=54^&rT5t6b{-~*ny>~1i9TpVYZ!wNEQFHytZc3QlVJihZ*&r<0 z+pVZ@C%9pIE7QsXE_Wp;lEw)G|JA?Qr?Kw4JQlq%?zBMH%<rqGFBhcVOuaWs7im>3 zQ6JVx`e*&{{{B6UR&7EDCoSR>Ia4d+4zz1c4JkkrJzYuTQJ&qreUvcDtG1l9xOB(^ zrc~7sn*MO0arcJ>5^dNJY0Dd`dhvNp0zvzsHa0TO=<$99GqoAfRNXiNXf(!*IEnmP zr8tbeCb^b*$m_VvC6g&*bjtGqCpo-Ox`{)A5lw;yGH&b+sGu3`p#9`TQsPue)fUR< z&`V+$NVA8gzWIS^yrU#20h!!^9m?LW?#vpgS2M(T!&ts|UtGu)ibm12hjYQH3>Qh9 z&4Gq1i{aI05C~XPmovUh_g2b!EvwQ{JyK_xNk>x&ulaux-hYGOKQD&wmOXCwH|wi# z>ZA;Hh-sqvZJyfmPTTsim;OTNb>l5w$r>9)Wr+8Y<E4v4YxmC&%(mx%tN_kOE8Ye< zkXQ4yxUj#M>$ptx_kA@kv@KugIc@7s51}<>$GYQ56)Ki`;R>$*#5fm%=a3oHXA{2r ze(gE^q7@6M#NOKDk?lQ!5v+|OS})<3Q$-XinH=iC%oZ$K*8mR&EYajonfKIB3qJw` zEh)zGw95_xD1yBg7v#8+sMaF^CW02x=1c30XZN3`1|S3xsHPU&%AtideyTVxW^pmN zC+CEKwcWLdiPK%WA><$Zk_5~1-n5;YlQ3aqhz90Q0Xyfxt(2@|0?VzodBvU=`;yT2 z97iv%rVlOZAzEh~-1FWqO$aNkyaLq>*<|?mOs(GR3FT392W{moZ;HD&I)GzNjoj|$ z6#h>D!~{G0fG#7m_{NwN;WBo+FBYH&u^ak!z=N*W+uPe4om4A>NYVy$G_k2Ag|NAO z1wvW{1B!~LG<?~xZCj+`QiJu+^DH%mVP9T8JGVVNJR;fE6}Y{@+QxZmTcl%iyWfB# z4>ZRF@(ZG@sG?88UFOlrO7R5%3$!Z0a^39~K+xO1U`7jU^5z(@hy;s>te8_ua9x0Q zn(l}+Nj+K~g&_``wy#um;Qzq?f&T;l2mTNIANW7;|84Ov|JCpRS8NUz9_W9coCNv_ z?xl52VVa7r#b5F5PRa<1$EH=S_I<UR)$HsQrfD>dUhr^0@&t!&FBRvJ)_Pg&>TFXt z;Him`;9z20Fs(B_&VW(!)c3<MEbQjBipuz$FG~gfu2)j!M&sQVJFJ{h8rh|rn_)rI zI@4qXgv9Y$W}YVMx_3?3)3)vGXRRAh&5py9ShWSJ0%vfT?b{W1W&^=I<8Gp;t#v6k zT$5489f<F-u<l`=ms(dGc`7A`>M{jzBor(F1Dq}caD#skevw=^xy`W{jSaVH-|RF^ zSxJ<1s$c_lG4y9pCj12Kt805nHipE(fmI(remtK}i2v8umpU5=fE&6Kz!tKfD5{zY zco!fp1V_e}JZR%cv(4G}(kNtwr>75|O)au*I`|}b#FsjqhIe!NJ-zeaOcKF`RqzgX zM*JenjN>g8sc(CV9npdUo7l-3T~TbOt`ob-!+y>EHiCg>^;n^+rmplETdVk@A`cVT zA1`NM{`03FQ?x4Ad8O#s9fGCv7?9O}iuG`+X$PzYMAI#+5>jAk1=DDL4Zw~OY#s>1 zQelFQX}adIQepTSq~Q#Jb(w>Y{qR)gW)Aw04L6*=W|uYVCY8oiUWoVZpBMokVRv`n z|G@u&{{#OA{tx^g_&@OfZSgOE^Xp%o&t1c5t;L4bTyJavWpxv!`N2~II|QWnuI)Ob zYv3~hzdJ|?XBxHj0LyR7#yX)CPY)MQMfjp;<xK?l;shk6@+{d*R|{(CgT2Amkqx}y zezs|wEUjZ%T2yf?EIT=h(zGq0hzQwpKZM~Cg~l%Iy0UYblTN`uXz@~3tYm694^}G! zGX^$M^Kb~z0Yl5p%LR~EWnCTsk+PLRtaf%gdj)DR<A|^<mU)ccJwN~Ka=t9H{rdIg zeQ@i(?_gDdCm@^|1%gG|$GR>JB;mJUhwT5L@?^+5I~?-#K5{H_o>s$tlw9%!2JAO% zwPewi-QXC{!xhKIj#2<sKw-^!!m=OENDVKquN+K;h@IEg7?RE1n^t2b-lr^M<QYq{ z0_g|Dx~|6>sjTTl)0}n}@N`7N{W=1DLw7kpe!!Zsa-=pa8*m(NH%XbHdb1Xf#@^W+ z0!Yl(Z&WF*q+t}rJ+X~J$AAkhsNVDQV?(l=i7Q)eikH_fxBDBC;`#gl3*YY74ymO- zu^WR8?-b)qS)xc+#&MP};#uWZXjqxtS8$~83O9k&BTMF?%87MjbR|<Ouz^f>K3ytK zDO-8yV;5vhR^p`+p+(ZmL}s%bYB1U6cA4RPB%6{$xxo07C&85m{tx^g_&@M};Qzq? jf&T;l-xmM>p8x{@D(Mktb)u`N00000NkvXXu0mjf(?NUb diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css deleted file mode 100644 index 8e76cddf7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - -Dark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #444; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color: white; -} - -.hljs, -.hljs-subst { - color: #DDD; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.ini .hljs-title, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt, -.coffeescript .hljs-attribute { - color: #D88; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #777; -} - -.hljs-keyword, -.hljs-literal, -.hljs-title, -.css .hljs-id, -.hljs-phpdoc, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/default.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/default.css deleted file mode 100644 index 3d8485b48..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/default.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - -Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #F0F0F0; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-title, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title { - color: black; -} - -.hljs-string, -.hljs-title, -.hljs-constant, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.haml .hljs-symbol, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.bash .hljs-variable, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.tex .hljs-special, -.erlang_repl .hljs-function_or_atom, -.asciidoc .hljs-header, -.markdown .hljs-header, -.coffeescript .hljs-attribute { - color: #800; -} - -.smartquote, -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk, -.asciidoc .hljs-blockquote, -.markdown .hljs-blockquote { - color: #888; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.hljs-hexcolor, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.go .hljs-constant, -.hljs-change, -.lasso .hljs-variable, -.makefile .hljs-variable, -.asciidoc .hljs-bullet, -.markdown .hljs-bullet, -.asciidoc .hljs-link_url, -.markdown .hljs-link_url { - color: #080; -} - -.hljs-label, -.hljs-javadoc, -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-important, -.hljs-pseudo, -.hljs-pi, -.haml .hljs-bullet, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula, -.erlang_repl .hljs-reserved, -.hljs-prompt, -.asciidoc .hljs-link_label, -.markdown .hljs-link_label, -.vhdl .hljs-attribute, -.clojure .hljs-attribute, -.asciidoc .hljs-attribute, -.lasso .hljs-attribute, -.coffeescript .hljs-property, -.hljs-phony { - color: #88F -} - -.hljs-keyword, -.hljs-id, -.hljs-title, -.hljs-built_in, -.hljs-aggregate, -.css .hljs-tag, -.hljs-javadoctag, -.hljs-phpdoc, -.hljs-yardoctag, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.go .hljs-typename, -.tex .hljs-command, -.asciidoc .hljs-strong, -.markdown .hljs-strong, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.asciidoc .hljs-emphasis, -.markdown .hljs-emphasis { - font-style: italic; -} - -.nginx .hljs-built_in { - font-weight: normal; -} - -.coffeescript .javascript, -.javascript .xml, -.lasso .markup, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css deleted file mode 100644 index 993fd268d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css +++ /dev/null @@ -1,132 +0,0 @@ -/* -Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) -*/ - -.hljs { - display: block; padding: 0.5em; - color: #000; - background: #f8f8ff -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-javadoc { - color: #408080; - font-style: italic -} - -.hljs-keyword, -.assignment, -.hljs-literal, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.lisp .hljs-title, -.hljs-subst { - color: #954121; -} - -.hljs-number, -.hljs-hexcolor { - color: #40a070 -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula { - color: #219161; -} - -.hljs-title, -.hljs-id { - color: #19469D; -} -.hljs-params { - color: #00F; -} - -.javascript .hljs-title, -.lisp .hljs-title, -.hljs-subst { - font-weight: normal -} - -.hljs-class .hljs-title, -.haskell .hljs-label, -.tex .hljs-command { - color: #458; - font-weight: bold -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal -} - -.hljs-attribute, -.hljs-variable, -.instancevar, -.lisp .hljs-body { - color: #008080 -} - -.hljs-regexp { - color: #B68 -} - -.hljs-class { - color: #458; - font-weight: bold -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-symbol .hljs-keyword, -.ruby .hljs-symbol .keymethods, -.lisp .hljs-keyword, -.tex .hljs-special, -.input_number { - color: #990073 -} - -.builtin, -.constructor, -.hljs-built_in, -.lisp .hljs-title { - color: #0086b3 -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold -} - -.hljs-deletion { - background: #fdd -} - -.hljs-addition { - background: #dfd -} - -.diff .hljs-change { - background: #0086b3 -} - -.hljs-chunk { - color: #aaa -} - -.tex .hljs-formula { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/far.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/far.css deleted file mode 100644 index ecac3c9a0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/far.css +++ /dev/null @@ -1,113 +0,0 @@ -/* - -FAR Style (c) MajestiC <majestic2k@gmail.com> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000080; -} - -.hljs, -.hljs-subst { - color: #0FF; -} - -.hljs-string, -.ruby .hljs-string, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.css .hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.clojure .hljs-title, -.coffeescript .hljs-attribute { - color: #FF0; -} - -.hljs-keyword, -.css .hljs-id, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.xml .hljs-tag .hljs-title, -.hljs-winutils, -.hljs-flow, -.hljs-change, -.hljs-envvar, -.bash .hljs-variable, -.tex .hljs-special, -.clojure .hljs-built_in { - color: #FFF; -} - -.hljs-comment, -.hljs-phpdoc, -.hljs-javadoc, -.java .hljs-annotation, -.hljs-template_comment, -.hljs-deletion, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #888; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.clojure .hljs-attribute { - color: #0F0; -} - -.python .hljs-decorator, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.xml .hljs-pi, -.diff .hljs-header, -.hljs-chunk, -.hljs-shebang, -.nginx .hljs-built_in, -.hljs-prompt { - color: #008080; -} - -.hljs-keyword, -.css .hljs-id, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.hljs-winutils, -.hljs-flow, -.apache .hljs-tag, -.nginx .hljs-built_in, -.tex .hljs-command, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css deleted file mode 100644 index bc8d4df42..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css +++ /dev/null @@ -1,133 +0,0 @@ -/* -Description: Foundation 4 docs style for highlight.js -Author: Dan Allen <dan.j.allen@gmail.com> -Website: http://foundation.zurb.com/docs/ -Version: 1.0 -Date: 2013-04-02 -*/ - -.hljs { - display: block; padding: 0.5em; - background: #eee; -} - -.hljs-header, -.hljs-decorator, -.hljs-annotation { - color: #000077; -} - -.hljs-horizontal_rule, -.hljs-link_url, -.hljs-emphasis, -.hljs-attribute { - color: #070; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-link_label, -.hljs-strong, -.hljs-value, -.hljs-string, -.scss .hljs-value .hljs-string { - color: #d14; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-blockquote, -.hljs-comment { - color: #998; - font-style: italic; -} - -.asciidoc .hljs-title, -.hljs-function .hljs-title { - color: #900; -} - -.hljs-class { - color: #458; -} - -.hljs-id, -.hljs-pseudo, -.hljs-constant, -.hljs-hexcolor { - color: teal; -} - -.hljs-variable { - color: #336699; -} - -.hljs-bullet, -.hljs-javadoc { - color: #997700; -} - -.hljs-pi, -.hljs-doctype { - color: #3344bb; -} - -.hljs-code, -.hljs-number { - color: #099; -} - -.hljs-important { - color: #f00; -} - -.smartquote, -.hljs-label { - color: #970; -} - -.hljs-preprocessor, -.hljs-pragma { - color: #579; -} - -.hljs-reserved, -.hljs-keyword, -.scss .hljs-value { - color: #000; -} - -.hljs-regexp { - background-color: #fff0ff; - color: #880088; -} - -.hljs-symbol { - color: #990073; -} - -.hljs-symbol .hljs-string { - color: #a60; -} - -.hljs-tag { - color: #007700; -} - -.hljs-at_rule, -.hljs-at_rule .hljs-keyword { - color: #088; -} - -.hljs-at_rule .hljs-preprocessor { - color: #808; -} - -.scss .hljs-tag, -.scss .hljs-attribute { - color: #339; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/github.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/github.css deleted file mode 100644 index 71967a373..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/github.css +++ /dev/null @@ -1,125 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #333; - background: #f8f8f8 -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-javadoc { - color: #998; - font-style: italic -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.nginx .hljs-title, -.hljs-subst, -.hljs-request, -.hljs-status { - color: #333; - font-weight: bold -} - -.hljs-number, -.hljs-hexcolor, -.ruby .hljs-constant { - color: #099; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula { - color: #d14 -} - -.hljs-title, -.hljs-id, -.coffeescript .hljs-params, -.scss .hljs-preprocessor { - color: #900; - font-weight: bold -} - -.javascript .hljs-title, -.lisp .hljs-title, -.clojure .hljs-title, -.hljs-subst { - font-weight: normal -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.vhdl .hljs-literal, -.tex .hljs-command { - color: #458; - font-weight: bold -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body { - color: #008080 -} - -.hljs-regexp { - color: #009926 -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.lisp .hljs-keyword, -.tex .hljs-special, -.hljs-prompt { - color: #990073 -} - -.hljs-built_in, -.lisp .hljs-title, -.clojure .hljs-built_in { - color: #0086b3 -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold -} - -.hljs-deletion { - background: #fdd -} - -.hljs-addition { - background: #dfd -} - -.diff .hljs-change { - background: #0086b3 -} - -.hljs-chunk { - color: #aaa -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css deleted file mode 100644 index 45b8b3bf6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css +++ /dev/null @@ -1,147 +0,0 @@ -/* - -Google Code style (c) Aahan Krish <geekpanth3r@gmail.com> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-comment * { - color: #800; -} - -.hljs-keyword, -.method, -.hljs-list .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.hljs-tag .hljs-title, -.setting .hljs-value, -.hljs-winutils, -.tex .hljs-command, -.http .hljs-title, -.hljs-request, -.hljs-status { - color: #008; -} - -.hljs-envvar, -.tex .hljs-special { - color: #660; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.hljs-regexp, -.coffeescript .hljs-attribute { - color: #080; -} - -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.ini .hljs-title, -.hljs-shebang, -.hljs-prompt, -.hljs-hexcolor, -.hljs-rules .hljs-value, -.css .hljs-value .hljs-number, -.hljs-literal, -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number, -.css .hljs-function, -.clojure .hljs-attribute { - color: #066; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.hljs-typename, -.hljs-tag .hljs-attribute, -.hljs-doctype, -.hljs-class .hljs-id, -.hljs-built_in, -.setting, -.hljs-params, -.hljs-variable, -.clojure .hljs-title { - color: #606; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.hljs-subst { - color: #000; -} - -.css .hljs-class, -.css .hljs-id { - color: #9B703F; -} - -.hljs-value .hljs-important { - color: #ff7700; - font-weight: bold; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #444; -} - -.tex .hljs-formula { - background-color: #EEE; - font-style: italic; -} - -.diff .hljs-header, -.hljs-chunk { - color: #808080; - font-weight: bold; -} - -.diff .hljs-change { - background-color: #BCCFF9; -} - -.hljs-addition { - background-color: #BAEEBA; -} - -.hljs-deletion { - background-color: #FFC8BD; -} - -.hljs-comment .hljs-yardoctag { - font-weight: bold; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css deleted file mode 100644 index 77352f4bb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css +++ /dev/null @@ -1,122 +0,0 @@ -/* - -Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #000; - background: #fff; -} - -.hljs-subst, -.hljs-title { - font-weight: normal; - color: #000; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.diff .hljs-header { - color: #808080; - font-style: italic; -} - -.hljs-annotation, -.hljs-decorator, -.hljs-preprocessor, -.hljs-pragma, -.hljs-doctype, -.hljs-pi, -.hljs-chunk, -.hljs-shebang, -.apache .hljs-cbracket, -.hljs-prompt, -.http .hljs-title { - color: #808000; -} - -.hljs-tag, -.hljs-pi { - background: #efefef; -} - -.hljs-tag .hljs-title, -.hljs-id, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-literal, -.hljs-keyword, -.hljs-hexcolor, -.css .hljs-function, -.ini .hljs-title, -.css .hljs-class, -.hljs-list .hljs-title, -.clojure .hljs-title, -.nginx .hljs-title, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; - color: #000080; -} - -.hljs-attribute, -.hljs-rules .hljs-keyword, -.hljs-number, -.hljs-date, -.hljs-regexp, -.tex .hljs-special { - font-weight: bold; - color: #0000ff; -} - -.hljs-number, -.hljs-regexp { - font-weight: normal; -} - -.hljs-string, -.hljs-value, -.hljs-filter .hljs-argument, -.css .hljs-function .hljs-params, -.apache .hljs-tag { - color: #008000; - font-weight: bold; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-char, -.tex .hljs-formula { - color: #000; - background: #d0eded; - font-style: italic; -} - -.hljs-phpdoc, -.hljs-yardoctag, -.hljs-javadoctag { - text-decoration: underline; -} - -.hljs-variable, -.hljs-envvar, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #660e7a; -} - -.hljs-addition { - background: #baeeba; -} - -.hljs-deletion { - background: #ffc8bd; -} - -.diff .hljs-change { - background: #bccff9; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css deleted file mode 100644 index cc64ef5c5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru> -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000; color: #f8f8f8; -} - -.hljs-shebang, -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc { - color: #7c7c7c; -} - -.hljs-keyword, -.hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status, -.clojure .hljs-attribute { - color: #96CBFE; -} - -.hljs-sub .hljs-keyword, -.method, -.hljs-list .hljs-title, -.nginx .hljs-title { - color: #FFFFB6; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.coffeescript .hljs-attribute { - color: #A8FF60; -} - -.hljs-subst { - color: #DAEFA3; -} - -.hljs-regexp { - color: #E9C062; -} - -.hljs-title, -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-decorator, -.tex .hljs-special, -.haskell .hljs-type, -.hljs-constant, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.nginx .hljs-built_in { - color: #FFFFB6; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number, -.hljs-variable, -.vbscript, -.hljs-literal { - color: #C6C5FE; -} - -.css .hljs-tag { - color: #96CBFE; -} - -.css .hljs-rules .hljs-property, -.css .hljs-id { - color: #FFFFB6; -} - -.css .hljs-class { - color: #FFF; -} - -.hljs-hexcolor { - color: #C6C5FE; -} - -.hljs-number { - color:#FF73FD; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.7; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css deleted file mode 100644 index 45aff24b8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css +++ /dev/null @@ -1,122 +0,0 @@ -/* -Description: Magula style for highligh.js -Author: Ruslan Keba <rukeba@gmail.com> -Website: http://rukeba.com/ -Version: 1.0 -Date: 2009-01-03 -Music: Aphex Twin / Xtal -*/ - -.hljs { - display: block; padding: 0.5em; - background-color: #f4f4f4; -} - -.hljs, -.hljs-subst, -.lisp .hljs-title, -.clojure .hljs-built_in { - color: black; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.bash .hljs-variable, -.apache .hljs-cbracket, -.coffeescript .hljs-attribute { - color: #050; -} - -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk { - color: #777; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.hljs-change, -.tex .hljs-special { - color: #800; -} - -.hljs-label, -.hljs-javadoc, -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula, -.hljs-prompt, -.clojure .hljs-attribute { - color: #00e; -} - -.hljs-keyword, -.hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-built_in, -.hljs-aggregate, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.xml .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; - color: navy; -} - -.nginx .hljs-built_in { - font-weight: normal; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} - -/* --- */ -.apache .hljs-tag { - font-weight: bold; - color: blue; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css deleted file mode 100644 index 4152d82d6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css +++ /dev/null @@ -1,62 +0,0 @@ -/* - Five-color theme from a single blue hue. -*/ -.hljs { - display: block; padding: 0.5em; - background: #EAEEF3; color: #00193A; -} - -.hljs-keyword, -.hljs-title, -.hljs-important, -.hljs-request, -.hljs-header, -.hljs-javadoctag { - font-weight: bold; -} - -.hljs-comment, -.hljs-chunk, -.hljs-template_comment { - color: #738191; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-built_in, -.hljs-literal, -.hljs-filename, -.hljs-value, -.hljs-addition, -.hljs-tag, -.hljs-argument, -.hljs-link_label, -.hljs-blockquote, -.hljs-header { - color: #0048AB; -} - -.hljs-decorator, -.hljs-prompt, -.hljs-yardoctag, -.hljs-subst, -.hljs-symbol, -.hljs-doctype, -.hljs-regexp, -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-attribute, -.hljs-attr_selector, -.hljs-javadoc, -.hljs-xmlDocTag, -.hljs-deletion, -.hljs-shebang, -.hljs-string .hljs-variable, -.hljs-link_url, -.hljs-bullet, -.hljs-sqbracket, -.hljs-phony { - color: #4C81C9; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css deleted file mode 100644 index 4e49befdd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css +++ /dev/null @@ -1,127 +0,0 @@ -/* -Monokai style - ported by Luigi Maselli - http://grigio.org -*/ - -.hljs { - display: block; padding: 0.5em; - background: #272822; -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-keyword, -.hljs-literal, -.hljs-strong, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color: #F92672; -} - -.hljs { - color: #DDD; -} - -.hljs .hljs-constant, -.asciidoc .hljs-code { - color: #66D9EF; -} - -.hljs-code, -.hljs-class .hljs-title, -.hljs-header { - color: white; -} - -.hljs-link_label, -.hljs-attribute, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-value, -.hljs-regexp { - color: #BF79DB; -} - -.hljs-link_url, -.hljs-tag .hljs-value, -.hljs-string, -.hljs-bullet, -.hljs-subst, -.hljs-title, -.hljs-emphasis, -.haskell .hljs-type, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt { - color: #A6E22E; -} - -.hljs-comment, -.java .hljs-annotation, -.smartquote, -.hljs-blockquote, -.hljs-horizontal_rule, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #75715E; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-header, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css deleted file mode 100644 index 7b0eb2e37..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css +++ /dev/null @@ -1,149 +0,0 @@ -/* - -Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #23241f; -} - -.hljs, -.hljs-tag, -.css .hljs-rules, -.css .hljs-value, -.css .hljs-function -.hljs-preprocessor, -.hljs-pragma { - color: #f8f8f2; -} - -.hljs-strongemphasis, -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-blockquote, -.hljs-horizontal_rule, -.hljs-number, -.hljs-regexp, -.alias .hljs-keyword, -.hljs-literal, -.hljs-hexcolor { - color: #ae81ff; -} - -.hljs-tag .hljs-value, -.hljs-code, -.hljs-title, -.css .hljs-class, -.hljs-class .hljs-title:last-child { - color: #a6e22e; -} - -.hljs-link_url { - font-size: 80%; -} - -.hljs-strong, -.hljs-strongemphasis { - font-weight: bold; -} - -.hljs-emphasis, -.hljs-strongemphasis, -.hljs-class .hljs-title:last-child { - font-style: italic; -} - -.hljs-keyword, -.hljs-function, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special, -.hljs-header, -.hljs-attribute, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-tag .hljs-title, -.hljs-value, -.alias .hljs-keyword:first-child, -.css .hljs-tag, -.css .unit, -.css .hljs-important { - color: #F92672; -} - -.hljs-function .hljs-keyword, -.hljs-class .hljs-keyword:first-child, -.hljs-constant, -.css .hljs-attribute { - color: #66d9ef; -} - -.hljs-variable, -.hljs-params, -.hljs-class .hljs-title { - color: #f8f8f2; -} - -.hljs-string, -.css .hljs-id, -.hljs-subst, -.haskell .hljs-type, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt, -.hljs-link_label, -.hljs-link_url { - color: #e6db74; -} - -.hljs-comment, -.hljs-javadoc, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #75715e; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata, -.xml .php, -.php .xml { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css deleted file mode 100644 index 1174e4c1c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Obsidian style - * ported by Alexander Marenin (http://github.com/ioncreature) - */ - -.hljs { - display: block; padding: 0.5em; - background: #282B2E; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.css .hljs-id, -.tex .hljs-special { - color: #93C763; -} - -.hljs-number { - color: #FFCD22; -} - -.hljs { - color: #E0E2E4; -} - -.css .hljs-tag, -.css .hljs-pseudo { - color: #D0D2B5; -} - -.hljs-attribute, -.hljs .hljs-constant { - color: #668BB0; -} - -.xml .hljs-attribute { - color: #B3B689; -} - -.xml .hljs-tag .hljs-value { - color: #E8E2B7; -} - -.hljs-code, -.hljs-class .hljs-title, -.hljs-header { - color: white; -} - -.hljs-class, -.hljs-hexcolor { - color: #93C763; -} - -.hljs-regexp { - color: #D39745; -} - -.hljs-at_rule, -.hljs-at_rule .hljs-keyword { - color: #A082BD; -} - -.hljs-doctype { - color: #557182; -} - -.hljs-link_url, -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-bullet, -.hljs-subst, -.hljs-emphasis, -.haskell .hljs-type, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt { - color: #8CBBAD; -} - -.hljs-string { - color: #EC7600; -} - -.hljs-comment, -.java .hljs-annotation, -.hljs-blockquote, -.hljs-horizontal_rule, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #818E96; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-header, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-at_rule .hljs-keyword, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css deleted file mode 100644 index bbbccdd54..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* - Paraíso (dark) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-title { - color: #8d8687; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99b15; -} - -/* Paraíso Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #48b685; -} - -/* Paraíso Aqua */ -.css .hljs-hexcolor { - color: #5bc4bf; -} - -/* Paraíso Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #06b6ef; -} - -/* Paraíso Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #815ba4; -} - -.hljs { - display: block; - background: #2f1e2e; - color: #a39e9b; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css deleted file mode 100644 index 494fcb4cb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* - Paraíso (light) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-title { - color: #776e71; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99b15; -} - -/* Paraíso Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #48b685; -} - -/* Paraíso Aqua */ -.css .hljs-hexcolor { - color: #5bc4bf; -} - -/* Paraíso Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #06b6ef; -} - -/* Paraíso Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #815ba4; -} - -.hljs { - display: block; - background: #e7e9db; - color: #4f424c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css deleted file mode 100644 index 6ee925def..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css +++ /dev/null @@ -1,106 +0,0 @@ -/* - -Pojoaque Style by Jason Tate -http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html -Based on Solarized Style from http://ethanschoonover.com/solarized - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #DCCF8F; - background: url(./pojoaque.jpg) repeat scroll left top #181914; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.lisp .hljs-string, -.hljs-javadoc { - color: #586e75; - font-style: italic; -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.method, -.hljs-addition, -.css .hljs-tag, -.clojure .hljs-title, -.nginx .hljs-title { - color: #B64926; -} - -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor { - color: #468966; -} - -.hljs-title, -.hljs-localvars, -.hljs-function .hljs-title, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.lisp .hljs-title, -.clojure .hljs-built_in, -.hljs-identifier, -.hljs-id { - color: #FFB03B; -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type { - color: #b58900; -} - -.css .hljs-attribute { - color: #b89859; -} - -.css .hljs-number, -.css .hljs-hexcolor { - color: #DCCF8F; -} - -.css .hljs-class { - color: #d3a60c; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-important, -.hljs-subst, -.hljs-cdata { - color: #cb4b16; -} - -.hljs-deletion { - color: #dc322f; -} - -.tex .hljs-formula { - background: #073642; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg deleted file mode 100644 index 9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0 zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5 z@ci`~)&qzDP(lO<O#w_=Ra{yPARq$(#Dp~sI5{Qw_V+=FlW<^Y6zm5ml}e>iQ5p?p z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6<E5Jc&8l!3As3|1J6!wQRd z-V(uI9KaVwV1y!skwSq$AdHNO5ej2s5)+pvCcfxj8FB)Q4jMoM2_^spgCq=wu7Iro zLP#9>A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ zG|~pGp<w4_&QCo@xn1P1M0j6PuuaUUx?w)Q15Ksdv-E1Uyr8jff%m|S;O0KGX4?5u zcY>EGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D zjzpyzPnD3}hBNaS4aFX7=0&~I*<I1gl);;MHu4&K1%I;}H}}pdeV}msD&8ZuzDzH< zjs%}^eZx9tj&Cj4Rem!m7?W9-;wPH|CTw__Q8b>Hu7#4au@qVBglH#-m;QFOx_`=j z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@ z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMy<Tt*(wEUr;=}T08 zwr4iQLXQt-4U$zHxQBaftQf(Yp<ET%udI>P7eA&RS{)h5{??W3^Rq=goFJ>?lA~J- zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9<C`ZfC?$$I3ZovN#F=y~=x<iwqpGc&Fa z!>_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g z`Hd<uZEy9yjY6-c(?%?S4=3`QI_=xfg529VWEEJk$>}h<_WR<Zc1@js5HPhhe{UnV z+qpwizwrJv_3wqH(KR=Zp2|HqVCv6SNX`wV`OPQRXJj)}%e$t=$MRdar)ZmEr9R!$ z<l(H`+bxXKz73<WvNG=#;y(f(W{xUg<V#f`{pr)>vUc|n*%v4Hbb-4tJD40iyF^<n zrd(ZUzA$o-V2Gj0TB0p$%WvWRao2gif1>q%g*&!6>hkYDvi-<Lx9G?TP4>{Uc4yTM zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i` zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~ qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css deleted file mode 100644 index 6a3806444..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css +++ /dev/null @@ -1,182 +0,0 @@ -/* - -Railscasts-like style (c) Visoft, Inc. (Damien White) - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #232323; - color: #E6E1DC; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-shebang { - color: #BC9458; - font-style: italic; -} - -.hljs-keyword, -.ruby .hljs-function .hljs-keyword, -.hljs-request, -.hljs-status, -.nginx .hljs-title, -.method, -.hljs-list .hljs-title { - color: #C26230; -} - -.hljs-string, -.hljs-number, -.hljs-regexp, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.tex .hljs-command, -.markdown .hljs-link_label { - color: #A5C261; -} - -.hljs-subst { - color: #519F50; -} - -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-tag .hljs-title, -.hljs-doctype, -.hljs-sub .hljs-identifier, -.hljs-pi, -.input_number { - color: #E8BF6A; -} - -.hljs-identifier { - color: #D0D0FF; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc { - text-decoration: none; -} - -.hljs-constant { - color: #DA4939; -} - - -.hljs-symbol, -.hljs-built_in, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-symbol .hljs-identifier, -.markdown .hljs-link_url, -.hljs-attribute { - color: #6D9CBE; -} - -.markdown .hljs-link_url { - text-decoration: underline; -} - - - -.hljs-params, -.hljs-variable, -.clojure .hljs-attribute { - color: #D0D0FF; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.tex .hljs-special { - color: #CDA869; -} - -.css .hljs-class { - color: #9B703F; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-rules .hljs-value { - color: #CF6A4C; -} - -.css .hljs-id { - color: #8B98AB; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #8996A8 !important; -} - -.hljs-hexcolor, -.css .hljs-value .hljs-number { - color: #A5C261; -} - -.hljs-title, -.hljs-decorator, -.css .hljs-function { - color: #FFC66D; -} - -.diff .hljs-header, -.hljs-chunk { - background-color: #2F33AB; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.diff .hljs-change { - background-color: #4A410D; - color: #F8F8F8; - display: inline-block; - width: 100%; -} - -.hljs-addition { - background-color: #144212; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #600; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.7; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css deleted file mode 100644 index d9ffef6d1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css +++ /dev/null @@ -1,112 +0,0 @@ -/* - -Style with support for rainbow parens - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #474949; color: #D1D9E1; -} - - -.hljs-body, -.hljs-collection { - color: #D1D9E1; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.lisp .hljs-string, -.hljs-javadoc { - color: #969896; - font-style: italic; -} - -.hljs-keyword, -.clojure .hljs-attribute, -.hljs-winutils, -.javascript .hljs-title, -.hljs-addition, -.css .hljs-tag { - color: #cc99cc; -} - -.hljs-number { color: #f99157; } - -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor { - color: #8abeb7; -} - -.hljs-title, -.hljs-localvars, -.hljs-function .hljs-title, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.lisp .hljs-title, -.hljs-identifier -{ - color: #b5bd68; -} - -.hljs-class .hljs-keyword -{ - color: #f2777a; -} - -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-label, -.hljs-id, -.lisp .hljs-title, -.clojure .hljs-title .hljs-built_in { - color: #ffcc66; -} - -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword, -.clojure .hljs-title .hljs-built_in { - font-weight: bold; -} - -.hljs-attribute, -.clojure .hljs-title { - color: #81a2be; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-important, -.hljs-subst, -.hljs-cdata { - color: #f99157; -} - -.hljs-deletion { - color: #dc322f; -} - -.tex .hljs-formula { - background: #eee8d5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css deleted file mode 100644 index 98a3bd27d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css +++ /dev/null @@ -1,113 +0,0 @@ -/* - -School Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net> - -*/ - -.hljs { - display: block; padding: 15px 0.5em 0.5em 30px; - font-size: 11px !important; - line-height:16px !important; -} - -pre{ - background:#f6f6ae url(./school_book.png); - border-top: solid 2px #d2e8b9; - border-bottom: solid 1px #d2e8b9; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-keyword { - color: #3E5915; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.nginx .hljs-built_in, -.tex .hljs-command, -.coffeescript .hljs-attribute { - color: #2C009F; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket { - color: #E60415; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.xml .hljs-tag .hljs-title, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png deleted file mode 100644 index 956e9790a0e2c079b3d568348ff3accd1d9cac30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV7?7x3vjRjNjAS6Ga$v1?&#~tz_9*=IcwKTAYZb? zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4)r;B4q#jQ7Ycl#YS5MfK$ z?b^fh#qmaEhFDxvyThwfhdfkOPApt1lr{NA;Vr%uzxJuVIyzm(ed_<E=VqS`p8l-k zMtpHz{$@YRySeLE*Ya}$?Ok`{te)BVtcjm@Ca0ycGcY`ur8@;E%+QhxBm}lGGB7yY z0680(Z#S8FKUh{@M?@OPNCXi`Y7>8_-0$LLU})H&o5Re&aDemE>EG#(|F^t9_pa-H z_Mf?rMVrs}-M?S|?ZdY@c6s41zy8~}@a{v&#Ea7V)wJ$+#K|u$<a;jco6PrHvRYR7 zd%!Bk+<CfxufI!;xGfPoxmaf1$vs==)R}qJUdyr#eg1fxWvS-#bL&}n`+t3#d9p8N z!?kDKTLZga?|R;GcVE5XB+g&IH(a^x?fZ81;t8fvzjU{H8y{PLR#EDh##{B^#6KJN zOib&U@Ahrg;rF_q!%YQaoy1Q|n*P>5UvWCdFLwGac}6w{_s*=8A6L7Rfc|9gboFyt I=akR{0OLZ+qyPW_ diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css deleted file mode 100644 index f520533f2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css +++ /dev/null @@ -1,107 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com> - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #002b36; - color: #839496; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.hljs-pi, -.lisp .hljs-string, -.hljs-javadoc { - color: #586e75; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-winutils, -.method, -.hljs-addition, -.css .hljs-tag, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor, -.hljs-link_url { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-localvars, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.hljs-identifier, -.vhdl .hljs-literal, -.hljs-id, -.css .hljs-function { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type, -.hljs-link_reference { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-preprocessor, -.hljs-preprocessor .hljs-keyword, -.hljs-pragma, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-subst, -.hljs-cdata, -.clojure .hljs-title, -.css .hljs-pseudo, -.hljs-header { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-deletion, -.hljs-important { - color: #dc322f; -} - -/* Solarized Violet */ -.hljs-link_label { - color: #6c71c4; -} - -.tex .hljs-formula { - background: #073642; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css deleted file mode 100644 index ad7047414..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css +++ /dev/null @@ -1,107 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com> - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #fdf6e3; - color: #657b83; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.hljs-pi, -.lisp .hljs-string, -.hljs-javadoc { - color: #93a1a1; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-winutils, -.method, -.hljs-addition, -.css .hljs-tag, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor, -.hljs-link_url { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-localvars, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.hljs-identifier, -.vhdl .hljs-literal, -.hljs-id, -.css .hljs-function { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type, -.hljs-link_reference { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-preprocessor, -.hljs-preprocessor .hljs-keyword, -.hljs-pragma, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-subst, -.hljs-cdata, -.clojure .hljs-title, -.css .hljs-pseudo, -.hljs-header { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-deletion, -.hljs-important { - color: #dc322f; -} - -/* Solarized Violet */ -.hljs-link_label { - color: #6c71c4; -} - -.tex .hljs-formula { - background: #eee8d5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css deleted file mode 100644 index 07b30c243..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css +++ /dev/null @@ -1,160 +0,0 @@ -/* - -Sunburst-like style (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000; color: #f8f8f8; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc { - color: #aeaeae; - font-style: italic; -} - -.hljs-keyword, -.ruby .hljs-function .hljs-keyword, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #E28964; -} - -.hljs-function .hljs-keyword, -.hljs-sub .hljs-keyword, -.method, -.hljs-list .hljs-title { - color: #99CF50; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.tex .hljs-command, -.coffeescript .hljs-attribute { - color: #65B042; -} - -.hljs-subst { - color: #DAEFA3; -} - -.hljs-regexp { - color: #E9C062; -} - -.hljs-title, -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.hljs-shebang, -.hljs-prompt { - color: #89BDFF; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc { - text-decoration: underline; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number { - color: #3387CC; -} - -.hljs-params, -.hljs-variable, -.clojure .hljs-attribute { - color: #3E87E3; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.tex .hljs-special { - color: #CDA869; -} - -.css .hljs-class { - color: #9B703F; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-rules .hljs-value { - color: #CF6A4C; -} - -.css .hljs-id { - color: #8B98AB; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-pragma { - color: #8996A8; -} - -.hljs-hexcolor, -.css .hljs-value .hljs-number { - color: #DD7B3B; -} - -.css .hljs-function { - color: #DAD085; -} - -.diff .hljs-header, -.hljs-chunk, -.tex .hljs-formula { - background-color: #0E2231; - color: #F8F8F8; - font-style: italic; -} - -.diff .hljs-change { - background-color: #4A410D; - color: #F8F8F8; -} - -.hljs-addition { - background-color: #253B22; - color: #F8F8F8; -} - -.hljs-deletion { - background-color: #420E09; - color: #F8F8F8; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css deleted file mode 100644 index dfe267524..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Tomorrow Night Blue Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #7285b7; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ff9da4; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #ffc58f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #ffeead; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #d1f1a9; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #99ffff; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #bbdaff; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ebbbff; -} - -.hljs { - display: block; - background: #002451; - color: white; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css deleted file mode 100644 index 4ad5d25f4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css +++ /dev/null @@ -1,92 +0,0 @@ -/* Tomorrow Night Bright Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d54e53; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #e78c45; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #e7c547; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #b9ca4a; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #70c0b1; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #7aa6da; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #c397d8; -} - -.hljs { - display: block; - background: black; - color: #eaeaea; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css deleted file mode 100644 index 08b49c623..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css +++ /dev/null @@ -1,92 +0,0 @@ -/* Tomorrow Night Eighties Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #999999; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f2777a; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99157; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #ffcc66; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #99cc99; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #66cccc; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6699cc; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #cc99cc; -} - -.hljs { - display: block; - background: #2d2d2d; - color: #cccccc; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css deleted file mode 100644 index c269b17e7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Tomorrow Night Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #cc6666; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #de935f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #f0c674; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #b5bd68; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #8abeb7; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #81a2be; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b294bb; -} - -.hljs { - display: block; - background: #1d1f21; - color: #c5c8c6; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css deleted file mode 100644 index 3bdead603..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css +++ /dev/null @@ -1,90 +0,0 @@ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #8e908c; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #c82829; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f5871f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #eab700; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #718c00; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #3e999f; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #4271ae; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #8959a8; -} - -.hljs { - display: block; - background: white; - color: #4d4d4c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css deleted file mode 100644 index bf33f0fb6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css +++ /dev/null @@ -1,89 +0,0 @@ -/* - -Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name> - -*/ -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk, -.apache .hljs-cbracket { - color: #008000; -} - -.hljs-keyword, -.hljs-id, -.hljs-built_in, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.tex .hljs-command, -.hljs-request, -.hljs-status, -.nginx .hljs-title, -.xml .hljs-tag, -.xml .hljs-tag .hljs-value { - color: #00f; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.apache .hljs-tag, -.hljs-date, -.tex .hljs-formula, -.coffeescript .hljs-attribute { - color: #a31515; -} - -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.hljs-preprocessor, -.hljs-pragma, -.userType, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-special, -.hljs-prompt { - color: #2b91af; -} - -.hljs-phpdoc, -.hljs-javadoc, -.hljs-xmlDocTag { - color: #808080; -} - -.vhdl .hljs-typename { font-weight: bold; } -.vhdl .hljs-string { color: #666666; } -.vhdl .hljs-literal { color: #a31515; } -.vhdl .hljs-attribute { color: #00B0E8; } - -.xml .hljs-attribute { color: #f00; } diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css deleted file mode 100644 index 57bd748e0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css +++ /dev/null @@ -1,158 +0,0 @@ -/* - -XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com> - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #fff; color: black; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-comment * { - color: #006a00; -} - -.hljs-keyword, -.hljs-literal, -.nginx .hljs-title { - color: #aa0d91; -} -.method, -.hljs-list .hljs-title, -.hljs-tag .hljs-title, -.setting .hljs-value, -.hljs-winutils, -.tex .hljs-command, -.http .hljs-title, -.hljs-request, -.hljs-status { - color: #008; -} - -.hljs-envvar, -.tex .hljs-special { - color: #660; -} - -.hljs-string { - color: #c41a16; -} -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.hljs-regexp { - color: #080; -} - -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.ini .hljs-title, -.hljs-shebang, -.hljs-prompt, -.hljs-hexcolor, -.hljs-rules .hljs-value, -.css .hljs-value .hljs-number, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-number, -.css .hljs-function, -.clojure .hljs-title, -.clojure .hljs-built_in, -.hljs-function .hljs-title, -.coffeescript .hljs-attribute { - color: #1c00cf; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.hljs-typename, -.hljs-tag .hljs-attribute, -.hljs-doctype, -.hljs-class .hljs-id, -.hljs-built_in, -.setting, -.hljs-params, -.clojure .hljs-attribute { - color: #5c2699; -} - -.hljs-variable { - color: #3f6e74; -} -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.hljs-subst { - color: #000; -} - -.css .hljs-class, -.css .hljs-id { - color: #9B703F; -} - -.hljs-value .hljs-important { - color: #ff7700; - font-weight: bold; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #643820; -} - -.tex .hljs-formula { - background-color: #EEE; - font-style: italic; -} - -.diff .hljs-header, -.hljs-chunk { - color: #808080; - font-weight: bold; -} - -.diff .hljs-change { - background-color: #BCCFF9; -} - -.hljs-addition { - background-color: #BAEEBA; -} - -.hljs-deletion { - background-color: #FFC8BD; -} - -.hljs-comment .hljs-yardoctag { - font-weight: bold; -} - -.method .hljs-id { - color: #000; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css deleted file mode 100644 index 163484b27..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - -Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru> -based on dark.css by Ivan Sagalaev - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #3F3F3F; - color: #DCDCDC; -} - -.hljs-keyword, -.hljs-tag, -.css .hljs-class, -.css .hljs-id, -.lisp .hljs-title, -.nginx .hljs-title, -.hljs-request, -.hljs-status, -.clojure .hljs-attribute { - color: #E3CEAB; -} - -.django .hljs-template_tag, -.django .hljs-variable, -.django .hljs-filter .hljs-argument { - color: #DCDCDC; -} - -.hljs-number, -.hljs-date { - color: #8CD0D3; -} - -.dos .hljs-envvar, -.dos .hljs-stream, -.hljs-variable, -.apache .hljs-sqbracket { - color: #EFDCBC; -} - -.dos .hljs-flow, -.diff .hljs-change, -.python .exception, -.python .hljs-built_in, -.hljs-literal, -.tex .hljs-special { - color: #EFEFAF; -} - -.diff .hljs-chunk, -.hljs-subst { - color: #8F8F8F; -} - -.dos .hljs-keyword, -.python .hljs-decorator, -.hljs-title, -.haskell .hljs-type, -.diff .hljs-header, -.ruby .hljs-class .hljs-parent, -.apache .hljs-tag, -.nginx .hljs-built_in, -.tex .hljs-command, -.hljs-prompt { - color: #efef8f; -} - -.dos .hljs-winutils, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-string { - color: #DCA3A3; -} - -.diff .hljs-deletion, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.sql .hljs-aggregate, -.hljs-javadoc, -.smalltalk .hljs-class, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.css .hljs-rules .hljs-value, -.hljs-attr_selector, -.hljs-pseudo, -.apache .hljs-cbracket, -.tex .hljs-formula, -.coffeescript .hljs-attribute { - color: #CC9393; -} - -.hljs-shebang, -.diff .hljs-addition, -.hljs-comment, -.java .hljs-annotation, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype { - color: #7F9F7F; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/plugin.js deleted file mode 100644 index 837feedb0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippet/plugin.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){function m(a){CKEDITOR.tools.extend(this,a);this.queue=[];this.init?this.init(CKEDITOR.tools.bind(function(){for(var a;a=this.queue.pop();)a.call(this);this.ready=!0},this)):this.ready=!0}function p(a){var b=a.config.codeSnippet_codeClass,e=/\r?\n/g,h=new CKEDITOR.dom.element("textarea");a.widgets.add("codeSnippet",{allowedContent:"pre; code(language-*)",requiredContent:"pre",styleableElements:"pre",template:'\x3cpre\x3e\x3ccode class\x3d"'+b+'"\x3e\x3c/code\x3e\x3c/pre\x3e',dialog:"codeSnippet", -pathName:a.lang.codesnippet.pathName,mask:!0,parts:{pre:"pre",code:"code"},highlight:function(){var d=this,c=this.data,b=function(a){d.parts.code.setHtml(n?a:a.replace(e,"\x3cbr\x3e"))};b(CKEDITOR.tools.htmlEncode(c.code));a._.codesnippet.highlighter.highlight(c.code,c.lang,function(d){a.fire("lockSnapshot");b(d);a.fire("unlockSnapshot")})},data:function(){var a=this.data,b=this.oldData;a.code&&this.parts.code.setHtml(CKEDITOR.tools.htmlEncode(a.code));b&&a.lang!=b.lang&&this.parts.code.removeClass("language-"+ -b.lang);a.lang&&(this.parts.code.addClass("language-"+a.lang),this.highlight());this.oldData=CKEDITOR.tools.copy(a)},upcast:function(d,c){if("pre"==d.name){for(var g=[],e=d.children,k,l=e.length-1;0<=l;l--)k=e[l],k.type==CKEDITOR.NODE_TEXT&&k.value.match(q)||g.push(k);var f;if(1==g.length&&"code"==(f=g[0]).name&&1==f.children.length&&f.children[0].type==CKEDITOR.NODE_TEXT){if(g=a._.codesnippet.langsRegex.exec(f.attributes["class"]))c.lang=g[1];h.setHtml(f.getHtml());c.code=h.getValue();f.addClass(b); -return d}}},downcast:function(a){var c=a.getFirst("code");c.children.length=0;c.removeClass(b);c.add(new CKEDITOR.htmlParser.text(CKEDITOR.tools.htmlEncode(this.data.code)));return a}});var q=/^[\s\n\r]*$/}var n=!CKEDITOR.env.ie||8<CKEDITOR.env.version;CKEDITOR.plugins.add("codesnippet",{requires:"widget,dialog",lang:"ar,az,bg,ca,cs,da,de,de-ch,el,en,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,sk,sl,sq,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"codesnippet", -hidpi:!0,beforeInit:function(a){a._.codesnippet={};this.setHighlighter=function(b){a._.codesnippet.highlighter=b;b=a._.codesnippet.langs=a.config.codeSnippet_languages||b.languages;a._.codesnippet.langsRegex=new RegExp("(?:^|\\s)language-("+CKEDITOR.tools.objectKeys(b).join("|")+")(?:\\s|$)")}},onLoad:function(){CKEDITOR.dialog.add("codeSnippet",this.path+"dialogs/codesnippet.js")},init:function(a){a.ui.addButton&&a.ui.addButton("CodeSnippet",{label:a.lang.codesnippet.button,command:"codeSnippet", -toolbar:"insert,10"})},afterInit:function(a){var b=this.path;p(a);if(!a._.codesnippet.highlighter){var e=new CKEDITOR.plugins.codesnippet.highlighter({languages:{apache:"Apache",bash:"Bash",coffeescript:"CoffeeScript",cpp:"C++",cs:"C#",css:"CSS",diff:"Diff",html:"HTML",http:"HTTP",ini:"INI",java:"Java",javascript:"JavaScript",json:"JSON",makefile:"Makefile",markdown:"Markdown",nginx:"Nginx",objectivec:"Objective-C",perl:"Perl",php:"PHP",python:"Python",ruby:"Ruby",sql:"SQL",vbscript:"VBScript",xhtml:"XHTML", -xml:"XML"},init:function(h){var e=this;n&&CKEDITOR.scriptLoader.load(b+"lib/highlight/highlight.pack.js",function(){e.hljs=window.hljs;h()});a.addContentsCss&&a.addContentsCss(b+"lib/highlight/styles/"+a.config.codeSnippet_theme+".css")},highlighter:function(a,b,d){(a=this.hljs.highlightAuto(a,this.hljs.getLanguage(b)?[b]:void 0))&&d(a.value)}});this.setHighlighter(e)}}});CKEDITOR.plugins.codesnippet={highlighter:m};m.prototype.highlight=function(){var a=arguments;this.ready?this.highlighter.apply(this, -a):this.queue.push(function(){this.highlighter.apply(this,a)})}})();CKEDITOR.config.codeSnippet_codeClass="hljs";CKEDITOR.config.codeSnippet_theme="default"; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/codesnippetgeshi/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/codesnippetgeshi/plugin.js deleted file mode 100644 index 5af94fde2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/codesnippetgeshi/plugin.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.plugins.add("codesnippetgeshi",{requires:"ajax,codesnippet",init:function(c){var d=new CKEDITOR.htmlParser.basicWriter,f=new CKEDITOR.plugins.codesnippet.highlighter({languages:a,highlighter:function(b,a,e){b=JSON.stringify({lang:a,html:b});CKEDITOR.ajax.post(CKEDITOR.getUrl(c.config.codeSnippetGeshi_url||""),b,"application/json",function(a){a?(CKEDITOR.htmlParser.fragment.fromHtml(a||"").children[0].writeChildrenHtml(d),e(d.getHtml(!0))):e("")})}});c.plugins.codesnippet.setHighlighter(f)}}); -var a={abap:"ABAP",actionscript:"ActionScript",ada:"Ada",apache:"Apache Configuration",applescript:"AppleScript",asm:"Assembly",asp:"Active Server Pages (ASP)",autoit:"AutoIt",bash:"Bash",basic4gl:"Basic4GL",bf:"Brainfuck",blitzbasic:"Blitz BASIC",bnf:"Backus-Naur Form",c:"C",c_mac:"C (Mac)",caddcl:"AutoCAD DCL",cadlisp:"AutoLISP",cfdg:"CFDG",cfm:"ColdFusion Markup Language",cil:"Common Intermediate Language (CIL)",cobol:"COBOL","cpp-qt":"C++ (Qt toolkit)",cpp:"C++",csharp:"C#",css:"Cascading Style Sheets (CSS)", -d:"D",delphi:"Delphi",diff:"Diff",div:"DIV",dos:"DOS batch file",dot:"DOT",eiffel:"Eiffel",fortran:"Fortran",freebasic:"FreeBASIC",gambas:"Gambas",genero:"Genero",gettext:"GNU internationalization (i18n) library",glsl:"OpenGL Shading Language (GLSL)",gml:"Game Maker Language (GML)",gnuplot:"gnuplot",groovy:"Groovy",haskell:"Haskell",hq9plus:"HQ9+",html4strict:"HTML",html5:"HTML5",idl:"Uno IDL",ini:"INI",inno:"Inno",intercal:"INTERCAL",io:"Io",java:"Java",java5:"Java(TM) 2 Platform Standard Edition 5.0", -javascript:"JavaScript",kixtart:"KiXtart",klonec:"Klone C",klonecpp:"Klone C++",latex:"LaTeX",lisp:"Lisp",lolcode:"LOLCODE",lotusscript:"LotusScript",lua:"Lua",Code:"Language",m68k:"Motorola 68000 Assembler",make:"make",matlab:"MATLAB M",mirc:"mIRC scripting language",mxml:"MXML",mpasm:"Microchip Assembler",mysql:"MySQL",nsis:"Nullsoft Scriptable Install System (NSIS)",objc:"Objective-C","ocaml-brief":"OCaml",ocaml:"OCaml",oobas:"OpenOffice.org Basic",oracle8:"Oracle 8 SQL",oracle11:"Oracle 11 SQL", -pascal:"Pascal",per:"per",perl:"Perl","php-brief":"PHP",php:"PHP",pixelbender:"Pixel Bender",plsql:"PL/SQL",povray:"Persistence of Vision Raytracer",powershell:"Windows PowerShell",progress:"OpenEdge Advanced Business Language",prolog:"Prolog",providex:"ProvideX",python:"Python",qbasic:"QBasic/QuickBASIC",rails:"Rails",reg:"Windows Registry",robots:"robots.txt",rsplus:"R",ruby:"Ruby",sas:"SAS",scala:"Scala",scheme:"Scheme",scilab:"Scilab",sdlbasic:"SdlBasic",smalltalk:"Smalltalk",smarty:"Smarty", -sql:"SQL",tcl:"Tcl",teraterm:"Tera Term",text:"Plain text",thinbasic:"thinBasic",tsql:"Transact-SQL",typoscript:"TypoScript",vala:"Vala",vb:"Visual Basic",vbnet:"Visual Basic .NET",verilog:"Verilog",vhdl:"VHDL",vim:"Vimscript",visualfoxpro:"Visual FoxPro",visualprolog:"Visual Prolog",whitespace:"Whitespace",winbatch:"Winbatch",xml:"XML",xorg_conf:"Xorg.conf",xpp:"X++",z80:"ZiLOG Z80 Assembler"}})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/bgcolor.png b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/bgcolor.png deleted file mode 100644 index aa03f4438b2f0bbcbaa5b30a5bf26694cec73c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU<~(kaSX9IJ$LfPJSj&J z*Yk6azp;8Py7q0;u~exe@&P*-j)<%Ha*0o~=Quf4d-ukrOBVS~l=ql^%6C`D#0y^1 zZ=2#~u`-&m{q|ZsH|g2E&-eCR%`iE1moe<VvkGU!gLhx5_Oh&CurHW8`J@U%hJ}pT z!}jIozu0Ry*3b30yyf{j`RO~Nt)ixGQ2tvT8fx#%vEPZqe794XP)g)CSD{HKKL2^; z%Qi`)>(TcTtEC!TX`3Y{{gcZPaN5yhXe8HPzvcGZ^@=QK-hA#(Y(CiVEHiA?DlbE~ zq#nKv5jt1CWbTfva#MI2J!{zv$;x@^f9ve^suR<;S95OC@jkU_O=EWXeg+mBk6q@* z&pz+Wf3jBE;}`RsYo)$Dg~>ba#PXh;ynFt7uZTycY~^WXlT=QA{gyN1=JK%BrD`t= z7q@)x+qA?|fZ1XB<&)Pvzs0x+-Oc+h;qZEYar36@3AO*_y(Aizr)D&70fxG2iEBhj zN@7W>RdP`(kYX@0Ff`LOFxNG-3^6peGB&U>G14|LvNAA`m{4AUq9HdwB{QuOw}#BK S=Z^q2FnGH9xvX<aXaWGS-RmI$ diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png deleted file mode 100644 index 9e52d1e55285c93a74e5c6a8478f93826f324e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249 zcmZ{kYgE#A9L9er(LXH%!%0S3F11!R5GR3{iQuJ%N$S+ROe4)pCM9|lWNYdYXXTk! zDlB&J5|y%AUX#?h(9FD*vFx(Uyu|`V(-Ote%U<k!&-eM9^E~Hy`{eoid9O3EG64Xr z^Yx(}GH}bMhY$u$;d18;fFJW<cmQy-z;r2k)u)i<bBF-|*B*e=IRGpgtkaVKq~ZX0 z8wCJa2!JJ9)Xbz90>qI6-ZZfC>BREtB7?J<<IAA0er0O3ZY#((>xBR?9`mJn1cr1} z2KVJ->1cgq>JX>zINUPl4f38FMDn36T=nTu|M^w=eFSQodCD3t5`B=QbH~h!)4yoR z5nE?9r*rJAY12;3_4>AZH&nk9<UyJY_BDP$fc#P3`ioL&ZLo&-kB&KXyQwK}I}MKV zxP(N3+qHR`J3h}l-q>62c%jiXddUdVTPbQf@C4>Itg`@Vn=pQg<yN+rHkVyDpV=*B z^z$Q?@0-xy5c)EzR|o_F)RQTiE%+IE0`@^DsE@@UQ6Y&9K=dHqi}mZ>xlmdwzG_A& z*u7_>*L(8@3;BZ55;48k&S?WonaX!Np9)$3Ql!A(QnD!xztzpV#$H}hi8p3wuAB(F zV(N``2DEL59%Bl+0`}3F;#yT_O`TPLKW`=O1i$%vCVHhLdhW229q6oR!x*FDi>vy0 zPlgfG=s6Xazckdm$Y&iOu)_<d*4mu&O0Ez+NnMtvQ41bn`v*yJ`_*d^*`)gJTRDQ` z6Trs7{=Kuq$v>tvm6Op-Gy|f+J4U7xEG5H{4hW8xVP7OWizg^XbtNSh$bsbi`AheS zZcm?tycP;x)?71D2;)9n6i_4{<^v_8+8r?$U0htOTsQk~K(&){C6X^g5+!D^eGn`+ zH+OPDXHJcC>}U+0Kz=)x_%1%QR3=5bZSrK6+EJlr1MEWg*^!5ggvvc>y>cs9x~9EH za~;ViSr=UTTdh{7?N@vUn!KE?&fP7DG(%)p4`QX)66}mZA|h51i1&r$irMyY@K^8E zLQT>{_~?jUuO|itC0Wo<B0yeOLk}fzhAvayc`a|fKrS|^k;#Z@DNzDwbVj(itbdM3 z3U-cFq*J^?OAA$BFBIq4YD0s99x8Y|9<)^yGoI@SRa2pA;YSoWh{a-^%ZhI8f<?K; zY>^Xp!(WN+RIut>T9&lM+AG43WmB_~1^xWs;NZpxm8+|3@FT2HWlV-Ub|!O&mP2WN zovg5iBesk1HdEiYA6BtXMMHBZrDt0!EF6l~0MU7bZROiNKfdI-AGnE^z3JwvcXhp3 zO@(aYPs<}U<>84#76GMWXUse!lnpoPp6c4dH`>p9e0Es(lRyOb$FTHA#`Bvf1Aqz< zVb8%d0LeAW<rg$Y>Ha0DlIyUgHBq6<?(IEgVQmk6sMn3zu+9hNXOhP5h2^j1OudW9 z5xf)`xAoW<HI@f-)y48B!r<FUuUn(WHxYcVPVxsaDHjCl`Xq6YUzr&3SUaNiW}+=& z6k>;Bc=+)CgNZHgGlvJ7Glk=KFCXj1?QSgV`*&sM3dpLm-O}6LZEe^9I}SaBb2OS0 zLuQ?dF#tH>@Gg#cyd%yj5KkZz2xJ^?Ck}5=CG5t#&k9M&N8@8N{=ZNaj%FGPz?bev JtEEO|{RaotE2sbf diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png deleted file mode 100644 index 67faa8e213e7d03fbd607f2b13acb64915339792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1312 zcmZ`(Yf#d86#c2BY-!03o7u7n4v~Zp6qUb%1%@Umy113Eay1nzDblP_)Iy?N)O=Q( zkF?ChYLnFvG%Pi3H4|;<q1mpfQED0LhWX0J(#QR<bLXBjbMBlwckZ3J89(~(G+VuK zH2}bj>B9)rGx}@7jrDk(&!5&4ESAoq15lg0W-)Tr*J6}UAPWFK4gi4&fCarI7z5x0 z5r7X70Js+dU~%lSl1<eYj1TzkWPp{garJ)HdA(wi$Ygn$46QLV!+<kud*J&1SSEwM zJGf07#5#!eLN15zS%EwXQHEJ=4`EyKV)pTb5&q!?rUh-8cQeE9&z~t1eT+ef?q@L8 zXaA!RqbHb#Ddrh&NmG(}OkN&}gWd5auWUjp9mV`qT0Bt}eW#>iUGYu+{>c}!uV+8( zSr_RO5**wx?SV)aqbo(D$#5Z%hnjVDbzORu5ousbP?=V{TnIcU4-Jx9t)^9|8`i_C zT?()dIy*bN!3Ng^-StD6P>%Y2VogKC92Y!B5lP}Ptqwy1IP0}-=Aq-~giucW@`5FJ z`$OT~-UVOIFXq;o0o}bm)yvya99uiP0Tcibl?oGtd7v$NL`lKkzNn4>lZc~7rRxNi z0e*heI;Z^fh!ILvRaIJCk>#$N=_!x8!1Kd$q4d)0D}pQ;uU%z2IJ;S}#hVw+=WnD? zC~dJVQ=B<x#C+4rUWb7+zK$T8Q*A>?a8ee%SQ3(`kU=@k<QC8pe>sNo%9(``CCOE> zAweiOEzS%B<BsNNs2!?wGjxt7g)uEFHLL!7%Y%$`Dd`>tswYo&;4j8=X;|i+-$wVr z4XQscU7m<({FDLr6hG~Oh(^0^ZkuQ&!Vq@-`Aq!aWcAX3^o%oWSUEB33amY=p5g00 z8v<F2J(}Y!4^4Bp^3*1?=>W$Ej}gs1kmQQDWnZ(=x!fSF2X6^4$Le|qU&fY+hoGK% zu*oRt`UPdFo3=FXuzW%JO{+pqsd&T-H^#w*7W^eEPqA&cYSCUmHn2sgOYh}knR|8V zL{b5^vlqEhtyZ(kH@$(D5wvnbk&i=utwy6sp_@;?Fa%s4&%(gZ-{0D_Eftv;D7~26 z{6S(Q*j4G|$!LD7l}IEt_4OtlHs5C(ztWz3kUpAhRVaye#a;^li>t00wm4^s#KocG zKeOsW<DeW}WC7NSiT9;bW*$ldIo?RGDe7c;QOPvEvgsJA3MgV5y&01mGWkP;VCuT< z@z%W~R)e#=5>AxmsUXE&1peL9BK}*?+ao7d0VC)X3@QCPx2u8N|Ndm-=}`wX=ad?j zf61?;xwf~j&tT{xci8LCmGc1=7o3cSl=dR?=6B@hq1)|^XaoWQ^n_{K+x0^$=4(=! z@OTT_c`;Iu*}D(`P6L4ky3sdYSX4y+{YC4@2=1DVlRRNf%YLvjGm{)1*A1F*)^km{ z{rw^5va|PtvF|KqW@l>~8?$6G(lhSD(~nB~_KptrAAONM<YVD2VPRnq1kvjMvYTQt zrl=0G>fKwHENimZ__IV)wf3a!2_6GW9o$(NsNbKB=6Rx9REgveXIyD7L<=Urq$$oO zxU!Yfto(e$myepQj%<F}ull2vbB_S(qxa7q6BXp;!71gZ?Sd76D<2xZ#U-WcU&!V} zui(V!$ix`;sDv0j0VkrPtDU2x9nopGBgvgaawifAL`OaL8Qj+X$8dxfeTb9%{|3oE QBwKF)OfP?i)H6c(FAPaYz5oCK diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/textcolor.png b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/icons/textcolor.png deleted file mode 100644 index 88575c146411382e346b4eac6cab915d3c37e1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eV0_}~;uvCax^}XCwzQ+b z(fZBXx2qRhXobjH?ASc(iT4T*uKB?%ESi^IdUKdI)-*{pIc(iHYl7ZfY3E%NwBGq} zJyddY%xf{YbKmpf?$fSfGt*|yow@z}-n*i!Iv&qhq`?qywMtsBa*A~Fi?ZEko)_~R zD6q)sdRr<U!8;*U@&L0#<TT&pYKZ{Bzz4<BF`=H9r#ycAn7v_<hSV1;w&uqBNgu2{ zC$$AePJ2?x*C2lUqrJ)N2pzHK2R2)Mul+CmVe?&OrFzvZsY^1sKCm5-_`L3w<?Yf5 znbJ#Ft<b8juFek?75q8%`On{8QSYBUdp2=qT6^J>%DOPdI?4Xy4A~8b4<Ej1#%yV6 znfYS1*50`F+oRToz2Oj4^bIaNXWBmN?XumwcYnTiAYAZgUeC@Is%(xQR_R`sN}iRn z`KCbI!_%ksh_9*&oXzuxVczuApPU?0{J;L%B}zQ1l>7brw|taZY{k6xtzzdt3ry@6 zHB4Vy`)bbP2M-u#`Ym5`Jv%Qy-_q8$wy31!Nql^KzT4tJAy>gfiA^zjJNNH@{^`@E z=W{-<Teq&xUrl(ChEv*R$yHwSo~w8|O-q$Xeo<oeV_$zqfCy{mtZVO?pUXH3B=j5% zn{xI0-?W6^!jah<uL-q1e0=Mh?whLI|EvEpe){>+?9$~7U<zPREpd$~Nl7e8wMs5Z z1yT$~28L$32IjhkmLZ15R>lTaCPvx@Mpgy}5);ZRP&DM`r(~v8;?|IP_WTi$6`rns JF6*2UngHD`Gm!uQ diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/af.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/af.js deleted file mode 100644 index 238e54af1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/af.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","af",{auto:"Outomaties",bgColorTitle:"Agtergrondkleur",colors:{"000":"Swart",8E5:"Meroen","8B4513":"Sjokoladebruin","2F4F4F":"Donkerleisteengrys","008080":"Blougroen","000080":"Vlootblou","4B0082":"Indigo",696969:"Donkergrys",B22222:"Rooibaksteen",A52A2A:"Bruin",DAA520:"Donkergeel","006400":"Donkergroen","40E0D0":"Turkoois","0000CD":"Middelblou",800080:"Pers",808080:"Grys",F00:"Rooi",FF8C00:"Donkeroranje",FFD700:"Goud","008000":"Groen","0FF":"Siaan","00F":"Blou", -EE82EE:"Viooltjieblou",A9A9A9:"Donkergrys",FFA07A:"Ligsalm",FFA500:"Oranje",FFFF00:"Geel","00FF00":"Lemmetjie",AFEEEE:"Ligturkoois",ADD8E6:"Ligblou",DDA0DD:"Pruim",D3D3D3:"Liggrys",FFF0F5:"Linne",FAEBD7:"Ivoor",FFFFE0:"Liggeel",F0FFF0:"Heuningdou",F0FFFF:"Asuur",F0F8FF:"Ligte hemelsblou",E6E6FA:"Laventel",FFF:"Wit","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Meer Kleure...",panelTitle:"Kleure",textColorTitle:"Tekskleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ar.js deleted file mode 100644 index c2318307b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ar.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ar",{auto:"تلقائي",bgColorTitle:"لون الخلفية",colors:{"000":"أسود",8E5:"كستنائي","8B4513":"بني فاتح","2F4F4F":"رمادي أردوازي غامق","008080":"أزرق مخضر","000080":"أزرق داكن","4B0082":"كحلي",696969:"رمادي داكن",B22222:"طوبي",A52A2A:"بني",DAA520:"ذهبي داكن","006400":"أخضر داكن","40E0D0":"فيروزي","0000CD":"أزرق متوسط",800080:"بنفسجي غامق",808080:"رمادي",F00:"أحمر",FF8C00:"برتقالي داكن",FFD700:"ذهبي","008000":"أخضر","0FF":"تركواز","00F":"أزرق",EE82EE:"بنفسجي",A9A9A9:"رمادي شاحب", -FFA07A:"برتقالي وردي",FFA500:"برتقالي",FFFF00:"أصفر","00FF00":"ليموني",AFEEEE:"فيروزي شاحب",ADD8E6:"أزرق فاتح",DDA0DD:"بنفسجي فاتح",D3D3D3:"رمادي فاتح",FFF0F5:"وردي فاتح",FAEBD7:"أبيض عتيق",FFFFE0:"أصفر فاتح",F0FFF0:"أبيض مائل للأخضر",F0FFFF:"سماوي",F0F8FF:"لبني",E6E6FA:"أرجواني",FFF:"أبيض","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"ألوان إضافية...",panelTitle:"Colors",textColorTitle:"لون النص"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/az.js deleted file mode 100644 index ad3ec164b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/az.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","az",{auto:"Avtomatik",bgColorTitle:"Doldurma rəngi",colors:{"000":"Qara",8E5:"Şabalıdı","8B4513":"Açıq şabalı","2F4F4F":"Açıq boz","008080":"Firuzəyi göy","000080":"Tünd göy","4B0082":"İndigo",696969:"Tünd boz",B22222:"Kərpiç",A52A2A:"Şabalıdı",DAA520:"Qızıl ağcaqayın","006400":"Tünd yaşıl","40E0D0":"Firuzəyi","0000CD":"Göy",800080:"Bənövşəyi",808080:"Boz",F00:"Qırmızı",FF8C00:"Tünd narıncı",FFD700:"Qızılı","008000":"Yaşıl","0FF":"Mavi","00F":"Göy",EE82EE:"Açıq bənövşəyi", -A9A9A9:"Asfalt rəngi",FFA07A:"Qızılbalıq",FFA500:"Narıncı",FFFF00:"Sarı","00FF00":"Laym",AFEEEE:"Acıq firuzəyi",ADD8E6:"Acıq göy",DDA0DD:"Gavalı",D3D3D3:"Acıq boz",FFF0F5:"Yasəmən",FAEBD7:"Kağız",FFFFE0:"Acıq sarı",F0FFF0:"Yemişi",F0FFFF:"Gömgöy",F0F8FF:"Solğun göy",E6E6FA:"Lavanda",FFF:"Ağ","1ABC9C":"Güclü mavi","2ECC71":"Zümrüd","3498DB":"Parlaq göy","9B59B6":"Ametist","4E5F70":"Bozlu göy",F1C40F:"Sapsarı","16A085":"Tünd mavi","27AE60":"Tünd zümrüd","2980B9":"Güclü göy","8E44AD":"Tünd bənövşəyi", -"2C3E50":"Rəngsiz göy",F39C12:"Narıncı",E67E22:"Yerkökülü",E74C3C:"Solğun qırmızı",ECF0F1:"Parlaq gümüşü","95A5A6":"Acıq bozlu mavi",DDD:"Acıq boz",D35400:"Balqabaqlı",C0392B:"Güclü qırmızı",BDC3C7:"Gümüşü","7F8C8D":"Bozlu mavi",999:"Tünd boz"},more:"Digər rənglər...",panelTitle:"Rənglər",textColorTitle:"Mətnin rəngi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bg.js deleted file mode 100644 index 199a9c537..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bg.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","bg",{auto:"Автоматично",bgColorTitle:"Фонов цвят",colors:{"000":"Черно",8E5:"Кестеняво","8B4513":"Светлокафяво","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Индиго",696969:"Тъмно сиво",B22222:"Огнено червено",A52A2A:"Кафяво",DAA520:"Златисто","006400":"Тъмно зелено","40E0D0":"Тюркуазено","0000CD":"Средно синьо",800080:"Пурпурно",808080:"Сиво",F00:"Червено",FF8C00:"Тъмно оранжево",FFD700:"Златно","008000":"Зелено","0FF":"Светло синьо", -"00F":"Blue",EE82EE:"Violet",A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Още цветове",panelTitle:"Цветове",textColorTitle:"Цвят на шрифт"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bn.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bn.js deleted file mode 100644 index 221800262..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bn.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","bn",{auto:"স্বয়ংক্রিয়ভাবে",bgColorTitle:"পৃষ্ঠতলের রং",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"আরও রং...",panelTitle:"Colors",textColorTitle:"টেক্স্ট রং"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bs.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bs.js deleted file mode 100644 index 0c63064f2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/bs.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","bs",{auto:"Automatska",bgColorTitle:"Boja pozadine",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Više boja...",panelTitle:"Colors",textColorTitle:"Boja teksta"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ca.js deleted file mode 100644 index a15faed6c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ca.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ca",{auto:"Automàtic",bgColorTitle:"Color de Fons",colors:{"000":"Negre",8E5:"Grana","8B4513":"Marró sella","2F4F4F":"Gris pissarra fosca","008080":"Blau xarxet","000080":"Blau marí","4B0082":"Indi",696969:"Gris Fosc",B22222:"Foc Maó",A52A2A:"Marró",DAA520:"Solidago","006400":"Verd Fosc","40E0D0":"Turquesa","0000CD":"Blau 1/2",800080:"Lila",808080:"Gris",F00:"Vermell",FF8C00:"Taronja Fosc",FFD700:"Or","008000":"Verd","0FF":"Cian","00F":"Blau",EE82EE:"Violat", -A9A9A9:"Gris clar",FFA07A:"Salmó clar",FFA500:"Taronja",FFFF00:"Groc","00FF00":"Verd Llima",AFEEEE:"Turquesa Pàl·lid",ADD8E6:"Blau Clar",DDA0DD:"Pruna",D3D3D3:"Gris Clar",FFF0F5:"Lavanda rosat",FAEBD7:"Blanc Antic",FFFFE0:"Groc Clar",F0FFF0:"Verd Pàl·lid",F0FFFF:"Atzur",F0F8FF:"Cian pàlid",E6E6FA:"Lavanda",FFF:"Blanc","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Més Colors...",panelTitle:"Colors",textColorTitle:"Color del Text"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cs.js deleted file mode 100644 index 57aaf0691..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cs.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","cs",{auto:"Automaticky",bgColorTitle:"Barva pozadí",colors:{"000":"Černá",8E5:"Kaštanová","8B4513":"Sedlová hněď","2F4F4F":"Tmavě bledě šedá","008080":"Čírka","000080":"Námořnická modř","4B0082":"Inkoustová",696969:"Tmavě šedá",B22222:"Pálená cihla",A52A2A:"Hnědá",DAA520:"Zlatý prut","006400":"Tmavě zelená","40E0D0":"Tyrkisová","0000CD":"Středně modrá",800080:"Purpurová",808080:"Šedá",F00:"Červená",FF8C00:"Tmavě oranžová",FFD700:"Zlatá","008000":"Zelená","0FF":"Azurová", -"00F":"Modrá",EE82EE:"Fialová",A9A9A9:"Kalně šedá",FFA07A:"Světle lososová",FFA500:"Oranžová",FFFF00:"Žlutá","00FF00":"Limetková",AFEEEE:"Bledě tyrkisová",ADD8E6:"Světle modrá",DDA0DD:"Švestková",D3D3D3:"Světle šedá",FFF0F5:"Levandulově ruměnná",FAEBD7:"Antická bílá",FFFFE0:"Světle žlutá",F0FFF0:"Medová rosa",F0FFFF:"Azurová",F0F8FF:"Alenčina modrá",E6E6FA:"Levandulová",FFF:"Bílá","1ABC9C":"Strong Cyan","2ECC71":"Emeraldová","3498DB":"Jasně modrá","9B59B6":"Ametystová","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow", -"16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Oranžová",E67E22:"Mrkvová",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Dýňová",C0392B:"Strong Red",BDC3C7:"Stříbrná","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Více barev...",panelTitle:"Barvy",textColorTitle:"Barva textu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cy.js deleted file mode 100644 index 8289cbfef..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/cy.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","cy",{auto:"Awtomatig",bgColorTitle:"Lliw Cefndir",colors:{"000":"Du",8E5:"Marwn","8B4513":"Brown Cyfrwy","2F4F4F":"Llechen Tywyll","008080":"Corhwyad","000080":"Nefi","4B0082":"Indigo",696969:"Llwyd Tywyll",B22222:"Bric Tân",A52A2A:"Brown",DAA520:"Rhoden Aur","006400":"Gwyrdd Tywyll","40E0D0":"Gwyrddlas","0000CD":"Glas Canolig",800080:"Porffor",808080:"Llwyd",F00:"Coch",FF8C00:"Oren Tywyll",FFD700:"Aur","008000":"Gwyrdd","0FF":"Cyan","00F":"Glas",EE82EE:"Fioled", -A9A9A9:"Llwyd Pwl",FFA07A:"Samwn Golau",FFA500:"Oren",FFFF00:"Melyn","00FF00":"Leim",AFEEEE:"Gwyrddlas Golau",ADD8E6:"Glas Golau",DDA0DD:"Eirinen",D3D3D3:"Llwyd Golau",FFF0F5:"Gwrid Lafant",FAEBD7:"Gwyn Hynafol",FFFFE0:"Melyn Golau",F0FFF0:"Melwn Gwyrdd Golau",F0FFFF:"Aswr",F0F8FF:"Glas Alys",E6E6FA:"Lafant",FFF:"Gwyn","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Mwy o Liwiau...",panelTitle:"Lliwiau",textColorTitle:"Lliw Testun"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/da.js deleted file mode 100644 index 63005c421..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/da.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","da",{auto:"Automatisk",bgColorTitle:"Baggrundsfarve",colors:{"000":"Sort",8E5:"Mørkerød","8B4513":"Mørk orange","2F4F4F":"Dark Slate Grå","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Mørkegrå",B22222:"Scarlet / Rød",A52A2A:"Brun",DAA520:"Guld","006400":"Mørkegrøn","40E0D0":"Tyrkis","0000CD":"Mellemblå",800080:"Lilla",808080:"Grå",F00:"Rød",FF8C00:"Mørk orange",FFD700:"Guld","008000":"Grøn","0FF":"Cyan","00F":"Blå",EE82EE:"Violet",A9A9A9:"Matgrå", -FFA07A:"Laksefarve",FFA500:"Orange",FFFF00:"Gul","00FF00":"Lime",AFEEEE:"Mat tyrkis",ADD8E6:"Lyseblå",DDA0DD:"Plum",D3D3D3:"Lysegrå",FFF0F5:"Lavender Blush",FAEBD7:"Antikhvid",FFFFE0:"Lysegul",F0FFF0:"Gul / Beige",F0FFFF:"Himmeblå",F0F8FF:"Alice blue",E6E6FA:"Lavendel",FFF:"Hvid","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Flere farver...",panelTitle:"Farver",textColorTitle:"Tekstfarve"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de-ch.js deleted file mode 100644 index 026c230d4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de-ch.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","de-ch",{auto:"Automatisch",bgColorTitle:"Hintergrundfarbe",colors:{"000":"Schwarz",8E5:"Kastanienbraun","8B4513":"Braun","2F4F4F":"Dunkles Schiefergrau","008080":"Blaugrün","000080":"Marineblau","4B0082":"Indigo",696969:"Dunkelgrau",B22222:"Ziegelrot",A52A2A:"Braun",DAA520:"Goldgelb","006400":"Dunkelgrün","40E0D0":"Türkis","0000CD":"Mittelblau",800080:"Lila",808080:"Grau",F00:"Rot",FF8C00:"Dunkelorange",FFD700:"Gold","008000":"Grün","0FF":"Cyan","00F":"Blau", -EE82EE:"Violett",A9A9A9:"Dunkelgrau",FFA07A:"Helles Lachsrosa",FFA500:"Orange",FFFF00:"Gelb","00FF00":"Lime",AFEEEE:"Blasstürkis",ADD8E6:"Hellblau",DDA0DD:"Pflaumenblau",D3D3D3:"Hellgrau",FFF0F5:"Lavendel",FAEBD7:"Antik Weiss",FFFFE0:"Hellgelb",F0FFF0:"Honigtau",F0FFFF:"Azurblau",F0F8FF:"Alice Blau",E6E6FA:"Lavendel",FFF:"Weiss","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Weitere Farben...",panelTitle:"Farben",textColorTitle:"Textfarbe"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de.js deleted file mode 100644 index c2af13abd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/de.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","de",{auto:"Automatisch",bgColorTitle:"Hintergrundfarbe",colors:{"000":"Schwarz",8E5:"Kastanienbraun","8B4513":"Braun","2F4F4F":"Dunkles Schiefergrau","008080":"Blaugrün","000080":"Marineblau","4B0082":"Indigo",696969:"Dunkelgrau",B22222:"Ziegelrot",A52A2A:"Braun",DAA520:"Goldgelb","006400":"Dunkelgrün","40E0D0":"Türkis","0000CD":"Mittelblau",800080:"Lila",808080:"Grau",F00:"Rot",FF8C00:"Dunkelorange",FFD700:"Gold","008000":"Grün","0FF":"Cyan","00F":"Blau",EE82EE:"Violett", -A9A9A9:"Dunkelgrau",FFA07A:"Helles Lachsrosa",FFA500:"Orange",FFFF00:"Gelb","00FF00":"Lime",AFEEEE:"Blasstürkis",ADD8E6:"Hellblau",DDA0DD:"Pflaumenblau",D3D3D3:"Hellgrau",FFF0F5:"Lavendel",FAEBD7:"Antik Weiß",FFFFE0:"Hellgelb",F0FFF0:"Honigtau",F0FFFF:"Azurblau",F0F8FF:"Alice Blau",E6E6FA:"Lavendel",FFF:"Weiß","1ABC9C":"Strong Cyan","2ECC71":"Smaragdgrün","3498DB":"Bright Blue","9B59B6":"Amethystblau","4E5F70":"Graublau",F1C40F:"Vivid Yellow","16A085":"Dunkelcyan","27AE60":"Dunkelsmaragdgrün","2980B9":"Strong Blue", -"8E44AD":"Dunkelviolett","2C3E50":"Entsättigtes blau",F39C12:"Orange",E67E22:"Möhrenfarben",E74C3C:"Blassrot",ECF0F1:"Glänzendes Silber","95A5A6":"Helles Graublau",DDD:"Hellgrau",D35400:"Kürbisfarben",C0392B:"Strong Red",BDC3C7:"Silber","7F8C8D":"Graucyan",999:"Dunkelgrau"},more:"Weitere Farben...",panelTitle:"Farben",textColorTitle:"Textfarbe"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/el.js deleted file mode 100644 index 8afe22149..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/el.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","el",{auto:"Αυτόματα",bgColorTitle:"Χρώμα Φόντου",colors:{"000":"Μαύρο",8E5:"Καστανέρυθρο","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Βαθυκύανο","000080":"Μπλε μαρέν","4B0082":"Ινδικό",696969:"Σκούρο Γκρι",B22222:"Ανοικτό Κόκκινο",A52A2A:"Καφέ",DAA520:"Golden Rod","006400":"Σκούρο Πράσινο","40E0D0":"Τυρκουάζ","0000CD":"Medium Blue",800080:"Μοβ",808080:"Γκρι",F00:"Κόκκινο",FF8C00:"Σκούρο Πορτοκαλί",FFD700:"Χρυσαφί","008000":"Πράσινο","0FF":"Κυανό", -"00F":"Μπλε",EE82EE:"Μενεξεδί",A9A9A9:"Ποντικί",FFA07A:"Ανοικτό Σομόν",FFA500:"Πορτοκαλί",FFFF00:"Κίτρινο","00FF00":"Μοσχολέμονο",AFEEEE:"Pale Turquoise",ADD8E6:"Γαλάζιο",DDA0DD:"Δαμασκηνί",D3D3D3:"Ανοικτό Γκρι",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Ανοικτό Κίτρινο",F0FFF0:"Honeydew",F0FFFF:"Γαλανό",F0F8FF:"Alice Blue",E6E6FA:"Ελαφρός Ιώδες",FFF:"Λευκό","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow", -"16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Πορτοκαλί",E67E22:"Καροτί",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Αργυρό","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Περισσότερα Χρώματα…",panelTitle:"Χρώματα",textColorTitle:"Χρώμα Κειμένου"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-au.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-au.js deleted file mode 100644 index e4a68bf09..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-au.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","en-au",{auto:"Automatic",bgColorTitle:"Background Colour",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colours...",panelTitle:"Colors",textColorTitle:"Text Colour"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-ca.js deleted file mode 100644 index 43b22d150..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-ca.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","en-ca",{auto:"Automatic",bgColorTitle:"Background Colour",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colours...",panelTitle:"Colors",textColorTitle:"Text Colour"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-gb.js deleted file mode 100644 index a0adadb3a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en-gb.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","en-gb",{auto:"Automatic",bgColorTitle:"Background Colour",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Grey","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Grey",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Grey",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Grey",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colours...",panelTitle:"Colours",textColorTitle:"Text Colour"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en.js deleted file mode 100644 index e77ae096e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/en.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","en",{auto:"Automatic",bgColorTitle:"Background Color",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colors...",panelTitle:"Colors",textColorTitle:"Text Color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eo.js deleted file mode 100644 index b06f1a29b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eo.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","eo",{auto:"Aŭtomata",bgColorTitle:"Fona Koloro",colors:{"000":"Nigra",8E5:"Kaŝtankolora","8B4513":"Mezbruna","2F4F4F":"Ardezgriza","008080":"Marĉanaskolora","000080":"Maristblua","4B0082":"Indigokolora",696969:"Malhelgriza",B22222:"Brikruĝa",A52A2A:"Bruna",DAA520:"Senbrilorkolora","006400":"Malhelverda","40E0D0":"Turkisblua","0000CD":"Reĝblua",800080:"Purpura",808080:"Griza",F00:"Ruĝa",FF8C00:"Malheloranĝkolora",FFD700:"Orkolora","008000":"Verda","0FF":"Verdblua", -"00F":"Blua",EE82EE:"Viola",A9A9A9:"Mezgriza",FFA07A:"Salmokolora",FFA500:"Oranĝkolora",FFFF00:"Flava","00FF00":"Limetkolora",AFEEEE:"Helturkiskolora",ADD8E6:"Helblua",DDA0DD:"Prunkolora",D3D3D3:"Helgriza",FFF0F5:"Lavendkolora vangoŝminko",FAEBD7:"Antikvablanka",FFFFE0:"Helflava",F0FFF0:"Vintromelonkolora",F0FFFF:"Lazura",F0F8FF:"Aliceblua",E6E6FA:"Lavendkolora",FFF:"Blanka","1ABC9C":"Fortverdblua","2ECC71":"Smeraldkolora","3498DB":"Brilblua","9B59B6":"Ametistkolora","4E5F70":"Grizblua",F1C40F:"Brilflava", -"16A085":"Malhelverdblua","27AE60":"Malhelsmeraldkolora","2980B9":"Fortblua","8E44AD":"Malhelviola","2C3E50":"Malsaturita Bluo",F39C12:"Oranĝkolora",E67E22:"Karotkolora",E74C3C:"Pale Ruĝa",ECF0F1:"Brile Arĝenta","95A5A6":"Helgrizverdblua",DDD:"Helgriza",D35400:"Kukurbokolora",C0392B:"Forte ruĝa",BDC3C7:"Arĝenta","7F8C8D":"Grizverdblua",999:"Malhelgriza"},more:"Pli da Koloroj...",panelTitle:"Koloroj",textColorTitle:"Teksta Koloro"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es-mx.js deleted file mode 100644 index 9cd9f8122..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es-mx.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","es-mx",{auto:"Automático",bgColorTitle:"Color de fondo",colors:{"000":"Negro",8E5:"Marrón","8B4513":"Café sucio","2F4F4F":"Gris pizarra oscuro","008080":"Teal","000080":"Armada","4B0082":"Indigo",696969:"Gris oscuro",B22222:"Ladrillo de fuego",A52A2A:"Café",DAA520:"Barra de oro","006400":"Verde oscuro","40E0D0":"Turquesa","0000CD":"Azul medio",800080:"Morado",808080:"Gris",F00:"Rojo",FF8C00:"Naranja oscuro",FFD700:"Oro","008000":"Verde","0FF":"Cian","00F":"Azul", -EE82EE:"Violeta",A9A9A9:"Gris oscuro",FFA07A:"Salmón claro",FFA500:"Naranja",FFFF00:"Amarillo","00FF00":"Lima",AFEEEE:"Turquesa pálido",ADD8E6:"Azul claro",DDA0DD:"Ciruela",D3D3D3:"Gris claro",FFF0F5:"Rubor de lavanda",FAEBD7:"Blanco antiguo",FFFFE0:"Amarillo claro",F0FFF0:"Gotas de miel",F0FFFF:"Azul celeste",F0F8FF:"Azul Alicia",E6E6FA:"Lavanda",FFF:"Blanco","1ABC9C":"Cian fuerte","2ECC71":"Esmeralda","3498DB":"Azul brillante","9B59B6":"Amatista","4E5F70":"Azul grisáceo",F1C40F:"Amarillo vívido", -"16A085":"Cian oscuro","27AE60":"Esmeralda oscuro","2980B9":"Azul fuerte","8E44AD":"Violeta oscuro","2C3E50":"Azul Desaturado",F39C12:"Naranja",E67E22:"Zanahoria",E74C3C:"Rojo pálido",ECF0F1:"Plata brillante","95A5A6":"Cian grisáceo claro",DDD:"Gris claro",D35400:"Calabaza",C0392B:"Rojo fuerte",BDC3C7:"Plata","7F8C8D":"Cian grisáceo",999:"Gris oscuro"},more:"Más colores...",panelTitle:"Colores",textColorTitle:"Color de texto"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es.js deleted file mode 100644 index c84514243..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/es.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","es",{auto:"Automático",bgColorTitle:"Color de Fondo",colors:{"000":"Negro",8E5:"Marrón oscuro","8B4513":"Marrón tierra","2F4F4F":"Pizarra Oscuro","008080":"Azul verdoso","000080":"Azul marino","4B0082":"Añil",696969:"Gris oscuro",B22222:"Ladrillo",A52A2A:"Marrón",DAA520:"Oro oscuro","006400":"Verde oscuro","40E0D0":"Turquesa","0000CD":"Azul medio-oscuro",800080:"Púrpura",808080:"Gris",F00:"Rojo",FF8C00:"Naranja oscuro",FFD700:"Oro","008000":"Verde","0FF":"Cian", -"00F":"Azul",EE82EE:"Violeta",A9A9A9:"Gris medio",FFA07A:"Salmón claro",FFA500:"Naranja",FFFF00:"Amarillo","00FF00":"Lima",AFEEEE:"Turquesa claro",ADD8E6:"Azul claro",DDA0DD:"Violeta claro",D3D3D3:"Gris claro",FFF0F5:"Lavanda rojizo",FAEBD7:"Blanco antiguo",FFFFE0:"Amarillo claro",F0FFF0:"Miel",F0FFFF:"Azul celeste",F0F8FF:"Azul pálido",E6E6FA:"Lavanda",FFF:"Blanco","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan", -"27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Más Colores...",panelTitle:"Colores",textColorTitle:"Color de Texto"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/et.js deleted file mode 100644 index b8d72bd3d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/et.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","et",{auto:"Automaatne",bgColorTitle:"Tausta värv",colors:{"000":"Must",8E5:"Kastanpruun","8B4513":"Sadulapruun","2F4F4F":"Tume paehall","008080":"Sinakasroheline","000080":"Meresinine","4B0082":"Indigosinine",696969:"Tumehall",B22222:"Šamottkivi",A52A2A:"Pruun",DAA520:"Kuldkollane","006400":"Tumeroheline","40E0D0":"Türkiissinine","0000CD":"Keskmine sinine",800080:"Lilla",808080:"Hall",F00:"Punanae",FF8C00:"Tumeoranž",FFD700:"Kuldne","008000":"Roheline","0FF":"Tsüaniidsinine", -"00F":"Sinine",EE82EE:"Violetne",A9A9A9:"Tuhm hall",FFA07A:"Hele lõhe",FFA500:"Oranž",FFFF00:"Kollane","00FF00":"Lubja hall",AFEEEE:"Kahvatu türkiis",ADD8E6:"Helesinine",DDA0DD:"Ploomililla",D3D3D3:"Helehall",FFF0F5:"Lavendlipunane",FAEBD7:"Antiikvalge",FFFFE0:"Helekollane",F0FFF0:"Meloniroheline",F0FFFF:"Taevasinine",F0F8FF:"Beebisinine",E6E6FA:"Lavendel",FFF:"Valge","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow", -"16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Rohkem värve...",panelTitle:"Värvid",textColorTitle:"Teksti värv"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eu.js deleted file mode 100644 index 064843870..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/eu.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","eu",{auto:"Automatikoa",bgColorTitle:"Atzeko planoko kolorea",colors:{"000":"Beltza",8E5:"Granatea","8B4513":"Zela marroia","2F4F4F":"Arbel gris iluna","008080":"Urdin berdexka","000080":"Urdin iluna","4B0082":"Indigoa",696969:"Gris iluna",B22222:"Adreilu erregogorra",A52A2A:"Marroia",DAA520:"Urrezko makila","006400":"Berde iluna","40E0D0":"Turkesa","0000CD":"Urdin ertaina",800080:"Morea",808080:"Grisa",F00:"Gorria",FF8C00:"Laranja iluna",FFD700:"Urrea","008000":"Berdea", -"0FF":"Ziana","00F":"Urdina",EE82EE:"Bioleta",A9A9A9:"Gris ahula",FFA07A:"Izokin-kolore argia",FFA500:"Laranja",FFFF00:"Horia","00FF00":"Lima",AFEEEE:"Turkesa argia",ADD8E6:"Urdin argia",DDA0DD:"Aran-kolorea",D3D3D3:"Gris argia",FFF0F5:"Izpiliku-gorrixka",FAEBD7:"Zuri zaharra",FFFFE0:"Hori argia",F0FFF0:"Ezti-ihintza",F0FFFF:"Zeru-urdina",F0F8FF:"Alizia urdina",E6E6FA:"Izpilikua",FFF:"Zuria","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue", -F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Kolore gehiago...",panelTitle:"Koloreak",textColorTitle:"Testu-kolorea"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fa.js deleted file mode 100644 index 176390773..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fa.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","fa",{auto:"خودکار",bgColorTitle:"رنگ پس​زمینه",colors:{"000":"سیاه",8E5:"خرمایی","8B4513":"قهوه​ای شکلاتی","2F4F4F":"ارغوانی مایل به خاکستری","008080":"آبی مایل به خاکستری","000080":"آبی سیر","4B0082":"نیلی",696969:"خاکستری تیره",B22222:"آتش آجری",A52A2A:"قهوه​ای",DAA520:"میله​ی طلایی","006400":"سبز تیره","40E0D0":"فیروزه​ای","0000CD":"آبی روشن",800080:"ارغوانی",808080:"خاکستری",F00:"قرمز",FF8C00:"نارنجی پررنگ",FFD700:"طلایی","008000":"سبز","0FF":"آبی مایل به سبز", -"00F":"آبی",EE82EE:"بنفش",A9A9A9:"خاکستری مات",FFA07A:"صورتی کدر روشن",FFA500:"نارنجی",FFFF00:"زرد","00FF00":"فسفری",AFEEEE:"فیروزه​ای رنگ پریده",ADD8E6:"آبی کمرنگ",DDA0DD:"آلویی",D3D3D3:"خاکستری روشن",FFF0F5:"بنفش کمرنگ",FAEBD7:"عتیقه سفید",FFFFE0:"زرد روشن",F0FFF0:"عسلی",F0FFFF:"لاجوردی",F0F8FF:"آبی براق",E6E6FA:"بنفش کمرنگ",FFF:"سفید","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"رنگ​های بیشتر...",panelTitle:"رنگها",textColorTitle:"رنگ متن"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fi.js deleted file mode 100644 index 2bcb8a1ee..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fi.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","fi",{auto:"Automaattinen",bgColorTitle:"Taustaväri",colors:{"000":"Musta",8E5:"Kastanjanruskea","8B4513":"Satulanruskea","2F4F4F":"Tumma liuskekivenharmaa","008080":"Sinivihreä","000080":"Laivastonsininen","4B0082":"Indigonsininen",696969:"Tummanharmaa",B22222:"Tiili",A52A2A:"Ruskea",DAA520:"Kultapiisku","006400":"Tummanvihreä","40E0D0":"Turkoosi","0000CD":"Keskisininen",800080:"Purppura",808080:"Harmaa",F00:"Punainen",FF8C00:"Tumma oranssi",FFD700:"Kulta", -"008000":"Vihreä","0FF":"Syaani","00F":"Sininen",EE82EE:"Violetti",A9A9A9:"Tummanharmaa",FFA07A:"Vaaleanlohenpunainen",FFA500:"Oranssi",FFFF00:"Keltainen","00FF00":"Limetin vihreä",AFEEEE:"Haalea turkoosi",ADD8E6:"Vaaleansininen",DDA0DD:"Luumu",D3D3D3:"Vaaleanharmaa",FFF0F5:"Laventelinpunainen",FAEBD7:"Antiikinvalkoinen",FFFFE0:"Vaaleankeltainen",F0FFF0:"Hunajameloni",F0FFFF:"Asurinsininen",F0F8FF:"Alice Blue -sininen",E6E6FA:"Lavanteli",FFF:"Valkoinen","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue", -"9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Lisää värejä...",panelTitle:"Värit",textColorTitle:"Tekstiväri"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fo.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fo.js deleted file mode 100644 index d4334b0b4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fo.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","fo",{auto:"Automatiskt",bgColorTitle:"Bakgrundslitur",colors:{"000":"Svart",8E5:"Maroon","8B4513":"Saðilsbrúnt","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Myrkagrátt",B22222:"Fire Brick",A52A2A:"Brúnt",DAA520:"Gullstavur","006400":"Myrkagrønt","40E0D0":"Turquoise","0000CD":"Meðal blátt",800080:"Purple",808080:"Grátt",F00:"Reytt",FF8C00:"Myrkt appelsingult",FFD700:"Gull","008000":"Grønt","0FF":"Cyan","00F":"Blátt",EE82EE:"Violet", -A9A9A9:"Døkt grátt",FFA07A:"Ljósur laksur",FFA500:"Appelsingult",FFFF00:"Gult","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Ljósablátt",DDA0DD:"Plum",D3D3D3:"Ljósagrátt",FFF0F5:"Lavender Blush",FAEBD7:"Klassiskt hvítt",FFFFE0:"Ljósagult",F0FFF0:"Hunangsdøggur",F0FFFF:"Azure",F0F8FF:"Alice Blátt",E6E6FA:"Lavender",FFF:"Hvítt","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Fleiri litir...",panelTitle:"Litir",textColorTitle:"Tekstlitur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr-ca.js deleted file mode 100644 index a6c43c87d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr-ca.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","fr-ca",{auto:"Automatique",bgColorTitle:"Couleur de fond",colors:{"000":"Noir",8E5:"Marron","8B4513":"Brun foncé","2F4F4F":"Gris ardoise foncé","008080":"Sarcelle","000080":"Marine","4B0082":"Indigo",696969:"Gris foncé",B22222:"Rouge brique",A52A2A:"Brun",DAA520:"Doré","006400":"Vert foncé","40E0D0":"Turquoise","0000CD":"Bleu",800080:"Mauve",808080:"Gris",F00:"Rouge",FF8C00:"Orange foncé",FFD700:"Or","008000":"Vert","0FF":"Cyan","00F":"Bleu",EE82EE:"Violet", -A9A9A9:"Gris pâle",FFA07A:"Saumon clair",FFA500:"Orange",FFFF00:"Jaune","00FF00":"Vert lime",AFEEEE:"Turquoise pâle",ADD8E6:"Bleu pâle",DDA0DD:"Prune",D3D3D3:"Gris pâle",FFF0F5:"Bleu lavande",FAEBD7:"Blanc antique",FFFFE0:"Jaune pâle",F0FFF0:"Miel doré",F0FFFF:"Azure",F0F8FF:"Bleu alice",E6E6FA:"Lavande",FFF:"Blanc","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Plus de couleurs...",panelTitle:"Couleurs",textColorTitle:"Couleur de texte"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr.js deleted file mode 100644 index cd7c51e74..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/fr.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","fr",{auto:"Automatique",bgColorTitle:"Couleur d'arrière-plan",colors:{"000":"Noir",8E5:"Marron","8B4513":"Brun de selle","2F4F4F":"Gris sombre d'ardoise","008080":"Canard","000080":"Bleu marine","4B0082":"Indigo",696969:"Gris foncé",B22222:"Rouge brique",A52A2A:"Brun",DAA520:"Or terni","006400":"Vert foncé","40E0D0":"Turquoise","0000CD":"Bleu royal",800080:"Violet",808080:"Gris",F00:"Rouge",FF8C00:"Orange foncé",FFD700:"Or","008000":"Vert","0FF":"Cyan","00F":"Bleu", -EE82EE:"Violet",A9A9A9:"Gris tamisé",FFA07A:"Saumon clair",FFA500:"Orange",FFFF00:"Jaune","00FF00":"Lime",AFEEEE:"Turquoise clair",ADD8E6:"Bleu clair",DDA0DD:"Prune",D3D3D3:"Gris clair",FFF0F5:"Fard lavande",FAEBD7:"Blanc antique",FFFFE0:"Jaune clair",F0FFF0:"Vert rosée",F0FFFF:"Azur",F0F8FF:"Bleu Alice",E6E6FA:"Lavande",FFF:"Blanc","1ABC9C":"Cyan dur","2ECC71":"Émeraude","3498DB":"Bleu brillant","9B59B6":"Améthyste","4E5F70":"Bleu-gris",F1C40F:"Jaune vif","16A085":"Cyan foncé","27AE60":"Émeraude foncée", -"2980B9":"Bleu dur","8E44AD":"Violet foncé","2C3E50":"Bleu désaturé",F39C12:"Orange",E67E22:"Carotte",E74C3C:"Rouge pâle",ECF0F1:"Argent brillant","95A5A6":"Cyan-gris clair",DDD:"Gris clair",D35400:"Citrouille",C0392B:"Rouge dur",BDC3C7:"Argent","7F8C8D":"Cyan-gris",999:"Gris foncé"},more:"Plus de couleurs...",panelTitle:"Couleurs",textColorTitle:"Couleur du texte"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gl.js deleted file mode 100644 index acd671349..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gl.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","gl",{auto:"Automático",bgColorTitle:"Cor do fondo",colors:{"000":"Negro",8E5:"Marrón escuro","8B4513":"Ocre","2F4F4F":"Pizarra escuro","008080":"Verde azulado","000080":"Azul mariño","4B0082":"Índigo",696969:"Gris escuro",B22222:"Ladrillo",A52A2A:"Marrón",DAA520:"Dourado escuro","006400":"Verde escuro","40E0D0":"Turquesa","0000CD":"Azul medio",800080:"Púrpura",808080:"Gris",F00:"Vermello",FF8C00:"Laranxa escuro",FFD700:"Dourado","008000":"Verde","0FF":"Cian", -"00F":"Azul",EE82EE:"Violeta",A9A9A9:"Gris medio",FFA07A:"Salmón claro",FFA500:"Laranxa",FFFF00:"Amarelo","00FF00":"Lima",AFEEEE:"Turquesa pálido",ADD8E6:"Azul claro",DDA0DD:"Violeta pálido",D3D3D3:"Verde claro",FFF0F5:"Lavanda vermello",FAEBD7:"Branco antigo",FFFFE0:"Amarelo claro",F0FFF0:"Mel",F0FFFF:"Azul celeste",F0F8FF:"Azul pálido",E6E6FA:"Lavanda",FFF:"Branco","1ABC9C":"Cian forte","2ECC71":"Esmeralda","3498DB":"Azul brillante","9B59B6":"Amatista","4E5F70":"Azul agrisado",F1C40F:"Amarelo vívido", -"16A085":"Cian escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Azul desaturado",F39C12:"Laranxa",E67E22:"Cenoria",E74C3C:"Vermello pálido",ECF0F1:"Plata brillante","95A5A6":"Cian agrisado claro",DDD:"Gris claro",D35400:"Cabaza",C0392B:"Vermello forte",BDC3C7:"Plata","7F8C8D":"Cian agrisado",999:"Gris escuro"},more:"Máis cores...",panelTitle:"Cores",textColorTitle:"Cor do texto"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gu.js deleted file mode 100644 index 3bb74272c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/gu.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","gu",{auto:"સ્વચાલિત",bgColorTitle:"બૅકગ્રાઉન્ડ રંગ,",colors:{"000":"કાળો",8E5:"મરુન","8B4513":"છીક","2F4F4F":"ડાર્ક સ્લેટ ગ્રે ","008080":"ટીલ","000080":"નેવી","4B0082":"જામલી",696969:"ડાર્ક ગ્રે",B22222:"ઈટ",A52A2A:"બ્રાઉન",DAA520:"ગોલ્ડન રોડ","006400":"ડાર્ક લીલો","40E0D0":"ટ્રકોઈસ","0000CD":"મધ્યમ વાદળી",800080:"પર્પલ",808080:"ગ્રે",F00:"લાલ",FF8C00:"ડાર્ક ઓરંજ",FFD700:"ગોલ્ડ","008000":"ગ્રીન","0FF":"સાયન","00F":"વાદળી",EE82EE:"વાયોલેટ",A9A9A9:"ડીમ ",FFA07A:"લાઈટ સાલમન", -FFA500:"ઓરંજ",FFFF00:"પીળો","00FF00":"લાઈમ",AFEEEE:"પેલ કોઈસ",ADD8E6:"લાઈટ બ્લુ",DDA0DD:"પલ્મ",D3D3D3:"લાઈટ ગ્રે",FFF0F5:"લવંડર ",FAEBD7:"એન્ટીક સફેદ",FFFFE0:"લાઈટ પીળો",F0FFF0:"હનીડઉય",F0FFFF:"અઝુરે",F0F8FF:"એલીસ બ્લુ",E6E6FA:"લવંડર",FFF:"સફેદ","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange", -E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"ઔર રંગ...",panelTitle:"રંગ",textColorTitle:"શબ્દનો રંગ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/he.js deleted file mode 100644 index 589db168a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/he.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","he",{auto:"אוטומטי",bgColorTitle:"צבע רקע",colors:{"000":"שחור",8E5:"סגול כהה","8B4513":"חום בהיר","2F4F4F":"אפור צפחה","008080":"כחול-ירוק","000080":"כחול-סגול","4B0082":"אינדיגו",696969:"אפור מעומעם",B22222:"אדום-חום",A52A2A:"חום",DAA520:"כתום זהב","006400":"ירוק כהה","40E0D0":"טורקיז","0000CD":"כחול בינוני",800080:"סגול",808080:"אפור",F00:"אדום",FF8C00:"כתום כהה",FFD700:"זהב","008000":"ירוק","0FF":"ציאן","00F":"כחול",EE82EE:"סגלגל",A9A9A9:"אפור כהה",FFA07A:"כתום-וורוד", -FFA500:"כתום",FFFF00:"צהוב","00FF00":"ליים",AFEEEE:"טורקיז בהיר",ADD8E6:"כחול בהיר",DDA0DD:"שזיף",D3D3D3:"אפור בהיר",FFF0F5:"לבנדר מסמיק",FAEBD7:"לבן עתיק",FFFFE0:"צהוב בהיר",F0FFF0:"טל דבש",F0FFFF:"תכלת",F0F8FF:"כחול טיפת מים",E6E6FA:"לבנדר",FFF:"לבן","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue", -F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"צבעים נוספים...",panelTitle:"צבעים",textColorTitle:"צבע טקסט"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hi.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hi.js deleted file mode 100644 index 28563cc5f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hi.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","hi",{auto:"स्वचालित",bgColorTitle:"बैक्ग्राउन्ड रंग",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"और रंग...",panelTitle:"Colors",textColorTitle:"टेक्स्ट रंग"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hr.js deleted file mode 100644 index f10eeb6ab..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hr.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","hr",{auto:"Automatski",bgColorTitle:"Boja pozadine",colors:{"000":"Crna",8E5:"Kesten","8B4513":"Smeđa","2F4F4F":"Tamno siva","008080":"Teal","000080":"Mornarska","4B0082":"Indigo",696969:"Tamno siva",B22222:"Vatrena cigla",A52A2A:"Smeđa",DAA520:"Zlatna","006400":"Tamno zelena","40E0D0":"Tirkizna","0000CD":"Srednje plava",800080:"Ljubičasta",808080:"Siva",F00:"Crvena",FF8C00:"Tamno naranđasta",FFD700:"Zlatna","008000":"Zelena","0FF":"Cijan","00F":"Plava",EE82EE:"Ljubičasta", -A9A9A9:"Mutno siva",FFA07A:"Svijetli losos",FFA500:"Naranđasto",FFFF00:"Žuto","00FF00":"Limun",AFEEEE:"Blijedo tirkizna",ADD8E6:"Svijetlo plava",DDA0DD:"Šljiva",D3D3D3:"Svijetlo siva",FFF0F5:"Lavanda rumeno",FAEBD7:"Antikno bijela",FFFFE0:"Svijetlo žuta",F0FFF0:"Med",F0FFFF:"Azurna",F0F8FF:"Alice plava",E6E6FA:"Lavanda",FFF:"Bijela","1ABC9C":"Jaka cijan","2ECC71":"Emerald","3498DB":"Svijetlo plava","9B59B6":"Ametist","4E5F70":"Sivkasto plava",F1C40F:"Žarka žuta","16A085":"Tamna cijan","27AE60":"Tamna emerald", -"2980B9":"Jaka plava","8E44AD":"Tamno ljubičasta","2C3E50":"Desatuirarana plava",F39C12:"Narančasta",E67E22:"Mrkva",E74C3C:"Blijedo crvena",ECF0F1:"Sjana srebrna","95A5A6":"Svijetlo sivkasta cijan",DDD:"Svijetlo siva",D35400:"Tikva",C0392B:"Jaka crvena",BDC3C7:"Srebrna","7F8C8D":"Sivkasto cijan",999:"Tamno siva"},more:"Više boja...",panelTitle:"Boje",textColorTitle:"Boja teksta"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hu.js deleted file mode 100644 index 24d07e619..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/hu.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","hu",{auto:"Automatikus",bgColorTitle:"Háttérszín",colors:{"000":"Fekete",8E5:"Bordó","8B4513":"Barna","2F4F4F":"Sötét türkiz","008080":"Türkiz","000080":"Király kék","4B0082":"Indigó kék",696969:"Szürke",B22222:"Tégla vörös",A52A2A:"Vörös",DAA520:"Arany sárga","006400":"Sötét zöld","40E0D0":"Türkiz","0000CD":"Kék",800080:"Lila",808080:"Szürke",F00:"Piros",FF8C00:"Sötét narancs",FFD700:"Arany","008000":"Zöld","0FF":"Türkiz","00F":"Kék",EE82EE:"Rózsaszín",A9A9A9:"Sötét szürke", -FFA07A:"Lazac",FFA500:"Narancs",FFFF00:"Citromsárga","00FF00":"Neon zöld",AFEEEE:"Világos türkiz",ADD8E6:"Világos kék",DDA0DD:"Világos lila",D3D3D3:"Világos szürke",FFF0F5:"Lavender Blush",FAEBD7:"Törtfehér",FFFFE0:"Világos sárga",F0FFF0:"Menta",F0FFFF:"Azúr kék",F0F8FF:"Halvány kék",E6E6FA:"Lavender",FFF:"Fehér","1ABC9C":"Erős cián","2ECC71":"Smaragd","3498DB":"Fényes kék","9B59B6":"Ametiszt","4E5F70":"Szürkéskék",F1C40F:"Világossárga","16A085":"Sötét cián","27AE60":"Sötét smaragd","2980B9":"Erős kék", -"8E44AD":"Sötétlila","2C3E50":"Világoskék",F39C12:"Narancs",E67E22:"Répa",E74C3C:"Sápadt vörös",ECF0F1:"Fényes ezüst","95A5A6":"Világos szürkés cián",DDD:"Világosszürke",D35400:"Tök",C0392B:"Erős vörös",BDC3C7:"Ezüst","7F8C8D":"Szürkés cián",999:"Sötétszürke"},more:"További színek...",panelTitle:"Színek",textColorTitle:"Betűszín"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/id.js deleted file mode 100644 index 4bf03b520..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/id.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","id",{auto:"Automatic",bgColorTitle:"Warna Latar Belakang",colors:{"000":"Hitam",8E5:"Merah Tua","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Abu-abu Gelap",B22222:"Merah Bata",A52A2A:"Coklat",DAA520:"Golden Rod","006400":"Hijau Gelap","40E0D0":"Turquoise","0000CD":"Biru Sedang",800080:"Ungu",808080:"Abu-abu",F00:"Merah",FF8C00:"Jingga Gelap",FFD700:"Emas","008000":"Hijau","0FF":"Cyan","00F":"Biru", -EE82EE:"Violet",A9A9A9:"Abu-abu Redup",FFA07A:"Salmon Cerah",FFA500:"Jingga",FFFF00:"Kuning","00FF00":"Jeruk Lemon",AFEEEE:"Biru Hijau Pucat",ADD8E6:"Biru Cerah",DDA0DD:"Plum",D3D3D3:"Abu-abu Cerah",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Kuning Cerah",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"Putih","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan", -"27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Warna lainnya...",panelTitle:"Warna",textColorTitle:"Warna Teks"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/is.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/is.js deleted file mode 100644 index ad2fc3e8d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/is.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","is",{auto:"Sjálfval",bgColorTitle:"Bakgrunnslitur",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Fleiri liti...",panelTitle:"Colors",textColorTitle:"Litur texta"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/it.js deleted file mode 100644 index c11bd13e2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/it.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","it",{auto:"Automatico",bgColorTitle:"Colore sfondo",colors:{"000":"Nero",8E5:"Marrone Castagna","8B4513":"Marrone Cuoio","2F4F4F":"Grigio Fumo di Londra","008080":"Acquamarina","000080":"Blu Oceano","4B0082":"Indigo",696969:"Grigio Scuro",B22222:"Giallo Fiamma",A52A2A:"Marrone",DAA520:"Giallo Mimosa","006400":"Verde Scuro","40E0D0":"Turchese","0000CD":"Blue Scuro",800080:"Viola",808080:"Grigio",F00:"Rosso",FF8C00:"Arancio Scuro",FFD700:"Oro","008000":"Verde", -"0FF":"Ciano","00F":"Blu",EE82EE:"Violetto",A9A9A9:"Grigio Scuro",FFA07A:"Salmone",FFA500:"Arancio",FFFF00:"Giallo","00FF00":"Lime",AFEEEE:"Turchese Chiaro",ADD8E6:"Blu Chiaro",DDA0DD:"Rosso Ciliegia",D3D3D3:"Grigio Chiaro",FFF0F5:"Lavanda Chiara",FAEBD7:"Bianco Antico",FFFFE0:"Giallo Chiaro",F0FFF0:"Verde Mela",F0FFFF:"Azzurro",F0F8FF:"Celeste",E6E6FA:"Lavanda",FFF:"Bianco","1ABC9C":"Ciano intenso","2ECC71":"Smeraldo","3498DB":"Blu luminoso","9B59B6":"Ametista","4E5F70":"Blu grigiastro",F1C40F:"Giallo vivido", -"16A085":"Ciano scuro","27AE60":"Smeraldo scuro","2980B9":"Blu intenso","8E44AD":"Viola scuro","2C3E50":"Blu desaturato",F39C12:"Arancio",E67E22:"Carota",E74C3C:"Rosso pallido",ECF0F1:"Argento luminoso","95A5A6":"Ciano grigiastro chiaro",DDD:"Grigio chiaro",D35400:"Zucca",C0392B:"Rosso intenso",BDC3C7:"Argento","7F8C8D":"Ciano grigiastro",999:"Grigio scuro"},more:"Altri colori...",panelTitle:"Colori",textColorTitle:"Colore testo"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ja.js deleted file mode 100644 index b63d5fadf..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ja.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ja",{auto:"自動",bgColorTitle:"背景色",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet",A9A9A9:"Dim Gray", -FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"その他の色...",panelTitle:"色",textColorTitle:"文字色"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ka.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ka.js deleted file mode 100644 index ed0cbb5a9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ka.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ka",{auto:"ავტომატური",bgColorTitle:"ფონის ფერი",colors:{"000":"შავი",8E5:"მუქი შინდისფერი","8B4513":"ყავისფერი","2F4F4F":"მოლურჯო ნაცრისფერი","008080":"ჩამქრალი ლურჯი","000080":"მუქი ლურჯი","4B0082":"იასამნისფერი",696969:"მუქი ნაცრისფერი",B22222:"აგურისფერი",A52A2A:"მუქი ყავისფერი",DAA520:"მოყვითალო","006400":"მუქი მწვანე","40E0D0":"ცისფერი","0000CD":"ზომიერად ლურჯი",800080:"იისფერი",808080:"ნაცრისფერი",F00:"წითელი",FF8C00:"მუქი სტაფილოსფერი",FFD700:"ოქროსფერი", -"008000":"მწვანე","0FF":"ღია ცისფერი","00F":"ლურჯი",EE82EE:"იისფერი",A9A9A9:"ბაცი ნაცრისფერი",FFA07A:"ჩამქრალი ვარდისფერი",FFA500:"სტაფილოსფერი",FFFF00:"ყვითელი","00FF00":"ლურჯი",AFEEEE:"ცისფერი",ADD8E6:"ღია ლურჯი",DDA0DD:"ღია იისფერი",D3D3D3:"ღია ნაცრისფერი",FFF0F5:"ღია ვარდისფერი",FAEBD7:"ღია ყავისფერი",FFFFE0:"ნათელი ყვითელი",F0FFF0:"ღია მწვანე",F0FFFF:"ღია ცისფერი 2",F0F8FF:"ღია ცისფერი 3",E6E6FA:"ღია იისფერი 2",FFF:"თეთრი","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst", -"4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"მეტი ფერი...",panelTitle:"ფერები",textColorTitle:"ტექსტის ფერი"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/km.js deleted file mode 100644 index 5411b0cb9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/km.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","km",{auto:"ស្វ័យប្រវត្តិ",bgColorTitle:"ពណ៌ផ្ទៃខាងក្រោយ",colors:{"000":"ខ្មៅ",8E5:"ត្នោត​ចាស់","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"ខៀវ​ចាស់","4B0082":"ធ្លះ",696969:"ប្រផេះ​ក្រាស់",B22222:"Fire Brick",A52A2A:"ត្នោត",DAA520:"Golden Rod","006400":"បៃតង​ចាស់","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"ប្រផេះ",F00:"ក្រហម",FF8C00:"ទឹក​ក្រូច​ចាស់",FFD700:"មាស","008000":"បៃតង","0FF":"Cyan","00F":"ខៀវ", -EE82EE:"ស្វាយ",A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"ទឹក​ក្រូច",FFFF00:"លឿង","00FF00":"ក្រូច​ឆ្មារ",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"លឿង​ស្ដើង",F0FFF0:"Honeydew",F0FFFF:"ផ្ទៃមេឃ",F0F8FF:"Alice Blue",E6E6FA:"ឡាវិនដឺ",FFF:"ស","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"ពណ៌​ផ្សេង​ទៀត..",panelTitle:"ពណ៌",textColorTitle:"ពណ៌អក្សរ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ko.js deleted file mode 100644 index ef9f36105..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ko.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ko",{auto:"기본 색상",bgColorTitle:"배경 색상",colors:{"000":"검정",8E5:"밤색","8B4513":"새들 브라운","2F4F4F":"다크 슬레이트 그레이","008080":"틸","000080":"네이비","4B0082":"남색",696969:"짙은 회색",B22222:"벽돌색",A52A2A:"갈색",DAA520:"골든 로드","006400":"암록색","40E0D0":"터코이즈","0000CD":"미디엄 블루",800080:"보라",808080:"회색",F00:"빨강",FF8C00:"짙은 주황",FFD700:"금색","008000":"녹색","0FF":"시안","00F":"파랑",EE82EE:"남보라",A9A9A9:"딤 그레이",FFA07A:"라이트 새먼",FFA500:"주황",FFFF00:"노랑","00FF00":"라임",AFEEEE:"패일 터코이즈",ADD8E6:"연한 파랑", -DDA0DD:"자두",D3D3D3:"연한 회색",FFF0F5:"라벤더 블러쉬",FAEBD7:"앤틱 화이트",FFFFE0:"연한 노랑",F0FFF0:"허니듀",F0FFFF:"하늘색",F0F8FF:"앨리스 블루",E6E6FA:"라벤더",FFF:"흰색","1ABC9C":"진한 청록색","2ECC71":"에메랄드","3498DB":"밝은 파랑","9B59B6":"자수정","4E5F70":"회청색",F1C40F:"선명한 노랑","16A085":"다크 시안","27AE60":"다크 에메랄드","2980B9":"진한 파랑","8E44AD":"다크 바이올렛","2C3E50":"탁한 파랑",F39C12:"주황",E67E22:"당근",E74C3C:"창백한 빨강",ECF0F1:"밝은 은색","95A5A6":"밝은 회청록",DDD:"밝은 회색",D35400:"호박",C0392B:"진한 빨강",BDC3C7:"은색","7F8C8D":"회청록",999:"암회색"},more:"색상 선택...",panelTitle:"색상", -textColorTitle:"글자 색상"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ku.js deleted file mode 100644 index 0b6d7b14e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ku.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ku",{auto:"خۆکار",bgColorTitle:"ڕەنگی پاشبنەما",colors:{"000":"ڕەش",8E5:"سۆرو ماڕوونی","8B4513":"ماڕوونی","2F4F4F":"سەوزی تاریك","008080":"سەوز و شین","000080":"شینی تۆخ","4B0082":"مۆری تۆخ",696969:"ڕەساسی تۆخ",B22222:"سۆری تۆخ",A52A2A:"قاوەیی",DAA520:"قاوەیی بریسکەدار","006400":"سەوزی تۆخ","40E0D0":"شینی ناتۆخی بریسکەدار","0000CD":"شینی مامناوەند",800080:"پەمبەیی",808080:"ڕەساسی",F00:"سۆر",FF8C00:"نارەنجی تۆخ",FFD700:"زەرد","008000":"سەوز","0FF":"شینی ئاسمانی", -"00F":"شین",EE82EE:"پەمەیی",A9A9A9:"ڕەساسی ناتۆخ",FFA07A:"نارەنجی ناتۆخ",FFA500:"نارەنجی",FFFF00:"زەرد","00FF00":"سەوز",AFEEEE:"شینی ناتۆخ",ADD8E6:"شینی زۆر ناتۆخ",DDA0DD:"پەمەیی ناتۆخ",D3D3D3:"ڕەساسی بریسکەدار",FFF0F5:"جەرگی زۆر ناتۆخ",FAEBD7:"جەرگی ناتۆخ",FFFFE0:"سپی ناتۆخ",F0FFF0:"هەنگوینی ناتۆخ",F0FFFF:"شینێکی زۆر ناتۆخ",F0F8FF:"شینێکی ئاسمانی زۆر ناتۆخ",E6E6FA:"شیری",FFF:"سپی","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"شینی ناتۆخ","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow", -"16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"شینی تۆخ","8E44AD":"پەمەیی تاریک","2C3E50":"Desaturated Blue",F39C12:"نارنجی",E67E22:"گێزەر",E74C3C:"Pale Red",ECF0F1:"زیوی ڕووناک","95A5A6":"Light Grayish Cyan",DDD:"ڕەساسی بریسکەدار",D35400:"کولەکەی شیرین",C0392B:"سوری بەهێز",BDC3C7:"زیوی","7F8C8D":"Grayish Cyan",999:"ڕەساسی تۆخ"},more:"ڕەنگی زیاتر...",panelTitle:"ڕەنگەکان",textColorTitle:"ڕەنگی دەق"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lt.js deleted file mode 100644 index 8e6ed5d51..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lt.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","lt",{auto:"Automatinis",bgColorTitle:"Fono spalva",colors:{"000":"Juoda",8E5:"Kaštoninė","8B4513":"Tamsiai ruda","2F4F4F":"Pilka tamsaus šiferio","008080":"Teal","000080":"Karinis","4B0082":"Indigo",696969:"Tamsiai pilka",B22222:"Ugnies",A52A2A:"Ruda",DAA520:"Aukso","006400":"Tamsiai žalia","40E0D0":"Turquoise","0000CD":"Vidutinė mėlyna",800080:"Violetinė",808080:"Pilka",F00:"Raudona",FF8C00:"Tamsiai oranžinė",FFD700:"Auksinė","008000":"Žalia","0FF":"Žydra", -"00F":"Mėlyna",EE82EE:"Violetinė",A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Oranžinė",FFFF00:"Geltona","00FF00":"Citrinų",AFEEEE:"Pale Turquoise",ADD8E6:"Šviesiai mėlyna",DDA0DD:"Plum",D3D3D3:"Šviesiai pilka",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Šviesiai geltona",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"Balta","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow", -"16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Daugiau spalvų...",panelTitle:"Spalva",textColorTitle:"Teksto spalva"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lv.js deleted file mode 100644 index 01ed98a35..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/lv.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","lv",{auto:"Automātiska",bgColorTitle:"Fona krāsa",colors:{"000":"Melns",8E5:"Sarkanbrūns","8B4513":"Sedlu brūns","2F4F4F":"Tumšas tāfeles pelēks","008080":"Zili-zaļš","000080":"Jūras","4B0082":"Indigo",696969:"Tumši pelēks",B22222:"Ķieģeļsarkans",A52A2A:"Brūns",DAA520:"Zelta","006400":"Tumši zaļš","40E0D0":"Tirkīzs","0000CD":"Vidēji zils",800080:"Purpurs",808080:"Pelēks",F00:"Sarkans",FF8C00:"Tumši oranžs",FFD700:"Zelta","008000":"Zaļš","0FF":"Tumšzils","00F":"Zils", -EE82EE:"Violets",A9A9A9:"Pelēks",FFA07A:"Gaiši laškrāsas",FFA500:"Oranžs",FFFF00:"Dzeltens","00FF00":"Laima",AFEEEE:"Gaiši tirkīza",ADD8E6:"Gaiši zils",DDA0DD:"Plūmju",D3D3D3:"Gaiši pelēks",FFF0F5:"Lavandas sārts",FAEBD7:"Antīki balts",FFFFE0:"Gaiši dzeltens",F0FFF0:"Meduspile",F0FFFF:"Debesszils",F0F8FF:"Alises zils",E6E6FA:"Lavanda",FFF:"Balts","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan", -"27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Plašāka palete...",panelTitle:"Krāsa",textColorTitle:"Teksta krāsa"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mk.js deleted file mode 100644 index ad2270f87..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mk.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","mk",{auto:"Automatic",bgColorTitle:"Background Color",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colors...",panelTitle:"Colors",textColorTitle:"Text Color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mn.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mn.js deleted file mode 100644 index 0429c66d5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/mn.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","mn",{auto:"Автоматаар",bgColorTitle:"Дэвсгэр өнгө",colors:{"000":"Хар",8E5:"Хүрэн","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Саарал",F00:"Улаан",FF8C00:"Dark Orange",FFD700:"Алт","008000":"Ногоон","0FF":"Цэнхэр","00F":"Хөх",EE82EE:"Ягаан", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Улбар шар",FFFF00:"Шар","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Цайвар саарал",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"Цагаан","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Нэмэлт өнгөнүүд...",panelTitle:"Өнгөнүүд",textColorTitle:"Бичвэрийн өнгө"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ms.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ms.js deleted file mode 100644 index 53ffb929c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ms.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ms",{auto:"Otomatik",bgColorTitle:"Warna Latarbelakang",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Warna lain-lain...",panelTitle:"Colors",textColorTitle:"Warna Text"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nb.js deleted file mode 100644 index b859fa6a4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nb.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","nb",{auto:"Automatisk",bgColorTitle:"Bakgrunnsfarge",colors:{"000":"Svart",8E5:"Rødbrun","8B4513":"Salbrun","2F4F4F":"Grønnsvart","008080":"Blågrønn","000080":"Marineblå","4B0082":"Indigo",696969:"Mørk grå",B22222:"Mørkerød",A52A2A:"Brun",DAA520:"Lys brun","006400":"Mørk grønn","40E0D0":"Turkis","0000CD":"Medium blå",800080:"Purpur",808080:"Grå",F00:"Rød",FF8C00:"Mørk oransje",FFD700:"Gull","008000":"Grønn","0FF":"Cyan","00F":"Blå",EE82EE:"Fiolett",A9A9A9:"Svak grå", -FFA07A:"Rosa-oransje",FFA500:"Oransje",FFFF00:"Gul","00FF00":"Lime",AFEEEE:"Svak turkis",ADD8E6:"Lys blå",DDA0DD:"Plomme",D3D3D3:"Lys grå",FFF0F5:"Svak lavendelrosa",FAEBD7:"Antikk-hvit",FFFFE0:"Lys gul",F0FFF0:"Honningmelon",F0FFFF:"Svak asurblå",F0F8FF:"Svak cyan",E6E6FA:"Lavendel",FFF:"Hvit","1ABC9C":"Sterk cyan","2ECC71":"Smaragd","3498DB":"Lys blå","9B59B6":"Ametyst","4E5F70":"Gråaktig blå",F1C40F:"Livaktig gul","16A085":"Mørk cyan","27AE60":"Mørk smaragd","2980B9":"Sterk blå","8E44AD":"Mørk fiolett", -"2C3E50":"Desaturert blå",F39C12:"Oransje",E67E22:"Gulrot",E74C3C:"Blek rød",ECF0F1:"Klar sølv","95A5A6":"Lys gråaktig cyan",DDD:"Lys grå",D35400:"Gresskar",C0392B:"Sterk rød",BDC3C7:"Sølv","7F8C8D":"Gråaktig cyan",999:"Mørk grå"},more:"Flere farger...",panelTitle:"Farger",textColorTitle:"Tekstfarge"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nl.js deleted file mode 100644 index 7f231cb77..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/nl.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","nl",{auto:"Automatisch",bgColorTitle:"Achtergrondkleur",colors:{"000":"Zwart",8E5:"Kastanjebruin","8B4513":"Chocoladebruin","2F4F4F":"Donkerleigrijs","008080":"Blauwgroen","000080":"Marine","4B0082":"Indigo",696969:"Donkergrijs",B22222:"Baksteen",A52A2A:"Bruin",DAA520:"Donkergeel","006400":"Donkergroen","40E0D0":"Turquoise","0000CD":"Middenblauw",800080:"Paars",808080:"Grijs",F00:"Rood",FF8C00:"Donkeroranje",FFD700:"Goud","008000":"Groen","0FF":"Cyaan","00F":"Blauw", -EE82EE:"Violet",A9A9A9:"Donkergrijs",FFA07A:"Lichtzalm",FFA500:"Oranje",FFFF00:"Geel","00FF00":"Felgroen",AFEEEE:"Lichtturquoise",ADD8E6:"Lichtblauw",DDA0DD:"Pruim",D3D3D3:"Lichtgrijs",FFF0F5:"Linnen",FAEBD7:"Ivoor",FFFFE0:"Lichtgeel",F0FFF0:"Honingdauw",F0FFFF:"Azuur",F0F8FF:"Licht hemelsblauw",E6E6FA:"Lavendel",FFF:"Wit","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald", -"2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Meer kleuren...",panelTitle:"Kleuren",textColorTitle:"Tekstkleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/no.js deleted file mode 100644 index 3fea7f7b3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/no.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","no",{auto:"Automatisk",bgColorTitle:"Bakgrunnsfarge",colors:{"000":"Svart",8E5:"Rødbrun","8B4513":"Salbrun","2F4F4F":"Grønnsvart","008080":"Blågrønn","000080":"Marineblått","4B0082":"Indigo",696969:"Mørk grå",B22222:"Mørkerød",A52A2A:"Brun",DAA520:"Lys brun","006400":"Mørk grønn","40E0D0":"Turkis","0000CD":"Medium blå",800080:"Purpur",808080:"Grå",F00:"Rød",FF8C00:"Mørk oransje",FFD700:"Gull","008000":"Grønn","0FF":"Cyan","00F":"Blå",EE82EE:"Fiolett",A9A9A9:"Svak grå", -FFA07A:"Rosa-oransje",FFA500:"Oransje",FFFF00:"Gul","00FF00":"Lime",AFEEEE:"Svak turkis",ADD8E6:"Lys Blå",DDA0DD:"Plomme",D3D3D3:"Lys grå",FFF0F5:"Svak lavendelrosa",FAEBD7:"Antikk-hvit",FFFFE0:"Lys gul",F0FFF0:"Honningmelon",F0FFFF:"Svakt asurblått",F0F8FF:"Svak cyan",E6E6FA:"Lavendel",FFF:"Hvit","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Flere farger...",panelTitle:"Farger",textColorTitle:"Tekstfarge"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/oc.js deleted file mode 100644 index 0a7beceda..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/oc.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","oc",{auto:"Automatic",bgColorTitle:"Color de rèireplan",colors:{"000":"Negre",8E5:"Marron","8B4513":"Brun de sèla","2F4F4F":"Gris escur de lausa","008080":"Guit","000080":"Blau marina","4B0082":"Indigo",696969:"Gris escur",B22222:"Roge teula",A52A2A:"Brun",DAA520:"Aur ternit","006400":"Verd escur","40E0D0":"Turquesa","0000CD":"Blau reial",800080:"Violet",808080:"Gris",F00:"Roge",FF8C00:"Irange escur",FFD700:"Aur","008000":"Verd","0FF":"Cian","00F":"Blau",EE82EE:"Violet", -A9A9A9:"Gris tamisat",FFA07A:"Salmon clar",FFA500:"Irange",FFFF00:"Jaune","00FF00":"Lima",AFEEEE:"Turquesa clar",ADD8E6:"Blau clar",DDA0DD:"Pruna",D3D3D3:"Gris clar",FFF0F5:"Fard lavanda",FAEBD7:"Blanc antic",FFFFE0:"Jaune clar",F0FFF0:"Verd rosada",F0FFFF:"Azur",F0F8FF:"Blau Alícia",E6E6FA:"Lavanda",FFF:"Blanc","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Mai de colors...",panelTitle:"Colors",textColorTitle:"Color del tèxte"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pl.js deleted file mode 100644 index 2b1195af1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pl.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","pl",{auto:"Automatycznie",bgColorTitle:"Kolor tła",colors:{"000":"Czarny",8E5:"Kasztanowy","8B4513":"Czekoladowy","2F4F4F":"Ciemnografitowy","008080":"Morski","000080":"Granatowy","4B0082":"Indygo",696969:"Ciemnoszary",B22222:"Czerwień żelazowa",A52A2A:"Brązowy",DAA520:"Ciemnozłoty","006400":"Ciemnozielony","40E0D0":"Turkusowy","0000CD":"Ciemnoniebieski",800080:"Purpurowy",808080:"Szary",F00:"Czerwony",FF8C00:"Ciemnopomarańczowy",FFD700:"Złoty","008000":"Zielony", -"0FF":"Cyjan","00F":"Niebieski",EE82EE:"Fioletowy",A9A9A9:"Przygaszony szary",FFA07A:"Łososiowy",FFA500:"Pomarańczowy",FFFF00:"Żółty","00FF00":"Limonkowy",AFEEEE:"Bladoturkusowy",ADD8E6:"Jasnoniebieski",DDA0DD:"Śliwkowy",D3D3D3:"Jasnoszary",FFF0F5:"Jasnolawendowy",FAEBD7:"Kremowobiały",FFFFE0:"Jasnożółty",F0FFF0:"Bladozielony",F0FFFF:"Jasnolazurowy",F0F8FF:"Jasnobłękitny",E6E6FA:"Lawendowy",FFF:"Biały","1ABC9C":"Cyjan","2ECC71":"Szmaragdowy","3498DB":"Jasnoniebieski","9B59B6":"Ametystowy","4E5F70":"Szaroniebieski", -F1C40F:"Żółty","16A085":"Ciemny cyjan","27AE60":"Ciemnoszmaragdowy","2980B9":"Ciemnoniebieski","8E44AD":"Ciemnofioletowy","2C3E50":"Nienasycony niebieski",F39C12:"Pomarańczowy",E67E22:"Marchewkowy",E74C3C:"Bladoczerwony",ECF0F1:"Jasnosrebrny","95A5A6":"Szarocyjanowy",DDD:"Jasnoszary",D35400:"Dyniowy",C0392B:"Ciemnoczerwony",BDC3C7:"Srebrny","7F8C8D":"Szarawy cyjan",999:"Ciemnoszary"},more:"Więcej kolorów...",panelTitle:"Kolory",textColorTitle:"Kolor tekstu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt-br.js deleted file mode 100644 index 4ae7d80e1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt-br.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","pt-br",{auto:"Automático",bgColorTitle:"Cor do Plano de Fundo",colors:{"000":"Preto",8E5:"Foquete","8B4513":"Marrom 1","2F4F4F":"Cinza 1","008080":"Cerceta","000080":"Azul Marinho","4B0082":"Índigo",696969:"Cinza 2",B22222:"Tijolo de Fogo",A52A2A:"Marrom 2",DAA520:"Vara Dourada","006400":"Verde Escuro","40E0D0":"Turquesa","0000CD":"Azul Médio",800080:"Roxo",808080:"Cinza 3",F00:"Vermelho",FF8C00:"Laranja Escuro",FFD700:"Dourado","008000":"Verde","0FF":"Ciano", -"00F":"Azul",EE82EE:"Violeta",A9A9A9:"Cinza Escuro",FFA07A:"Salmão Claro",FFA500:"Laranja",FFFF00:"Amarelo","00FF00":"Lima",AFEEEE:"Turquesa Pálido",ADD8E6:"Azul Claro",DDA0DD:"Ameixa",D3D3D3:"Cinza Claro",FFF0F5:"Lavanda 1",FAEBD7:"Branco Antiguidade",FFFFE0:"Amarelo Claro",F0FFF0:"Orvalho",F0FFFF:"Azure",F0F8FF:"Azul Alice",E6E6FA:"Lavanda 2",FFF:"Branco","1ABC9C":"Ciano Forte","2ECC71":"Esmeralda","3498DB":"Azul Brilhante","9B59B6":"Ametista","4E5F70":"Azul acinzentado",F1C40F:"Amarelo Vívido", -"16A085":"Ciano Escuro","27AE60":"Esmeralda Escura","2980B9":"Azul Forte","8E44AD":"Violeta Escura","2C3E50":"Azul Dessaturado",F39C12:"Laranja",E67E22:"Laranja Cenoura",E74C3C:"Vermelho Pálido",ECF0F1:"Prata Brilhante","95A5A6":"Ciano Acinzentado Claro ",DDD:"Cinza Claro",D35400:"Abóbora",C0392B:"Vermelho Forte",BDC3C7:"Prata","7F8C8D":"Ciano Acinzentado",999:"Cinza Escuro"},more:"Mais Cores...",panelTitle:"Cores",textColorTitle:"Cor do Texto"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt.js deleted file mode 100644 index 2ef35e127..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/pt.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","pt",{auto:"Automático",bgColorTitle:"Cor de fundo",colors:{"000":"Black",8E5:"Castanho","8B4513":"Saddle Brown","2F4F4F":"Cinza lousa escuro","008080":"Teal","000080":"Azul naval","4B0082":"Indigo",696969:"Cinza escuro",B22222:"Vermelho tijolo",A52A2A:"Castanho",DAA520:"Dourado (daa520)","006400":"Verde escuro (006400)","40E0D0":"Turquesa","0000CD":"Azul médio (0000cd)",800080:"Purple",808080:"Cinza",F00:"Vermelho",FF8C00:"Laranja escuro",FFD700:"Dourado","008000":"Verde", -"0FF":"Ciano","00F":"Azul",EE82EE:"Violeta",A9A9A9:"Cinza fosco",FFA07A:"Salmão claro",FFA500:"Laranja",FFFF00:"Amarelo","00FF00":"Limão (Verde espectro)",AFEEEE:"Turquesa pálida (afeeee)",ADD8E6:"Light Blue",DDA0DD:"Ameixa",D3D3D3:"Cinza claro",FFF0F5:"Lavanda avermelhada",FAEBD7:"Branco velho",FFFFE0:"Amarelo claro",F0FFF0:"Maná (f0fff0)",F0FFFF:"Azul celeste",F0F8FF:"Azul Alice (f0f8ff)",E6E6FA:"Lavanda",FFF:"Branco","1ABC9C":"Ciano forte","2ECC71":"Esmeralda","3498DB":"Azul brilhante","9B59B6":"Amethyst", -"4E5F70":"Azul acinzentado",F1C40F:"Amarelo vívido","16A085":"Ciano escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Desaturated Blue",F39C12:"Laranja",E67E22:"Cenoura",E74C3C:"Vermelho claro",ECF0F1:"Prateado brilhante","95A5A6":"Ciano acinzentado claro",DDD:"Cinza claro",D35400:"Abóbora",C0392B:"Strong Red",BDC3C7:"Prateado","7F8C8D":"Ciano acinzentado",999:"Cinza escuro"},more:"Mais cores...",panelTitle:"Cores",textColorTitle:"Cor do texto"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ro.js deleted file mode 100644 index 1778f1da5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ro.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ro",{auto:"Automatic",bgColorTitle:"Coloarea fundalului",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Mai multe culori...",panelTitle:"Colors",textColorTitle:"Culoarea textului"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ru.js deleted file mode 100644 index 82025d057..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ru.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ru",{auto:"Автоматически",bgColorTitle:"Цвет фона",colors:{"000":"Чёрный",8E5:"Бордовый","8B4513":"Кожано-коричневый","2F4F4F":"Темный синевато-серый","008080":"Сине-зелёный","000080":"Тёмно-синий","4B0082":"Индиго",696969:"Тёмно-серый",B22222:"Кирпичный",A52A2A:"Коричневый",DAA520:"Золотисто-берёзовый","006400":"Темно-зелёный","40E0D0":"Бирюзовый","0000CD":"Умеренно синий",800080:"Пурпурный",808080:"Серый",F00:"Красный",FF8C00:"Темно-оранжевый",FFD700:"Золотистый", -"008000":"Зелёный","0FF":"Васильковый","00F":"Синий",EE82EE:"Фиолетовый",A9A9A9:"Тускло-серый",FFA07A:"Светло-лососевый",FFA500:"Оранжевый",FFFF00:"Жёлтый","00FF00":"Лайма",AFEEEE:"Бледно-синий",ADD8E6:"Свелто-голубой",DDA0DD:"Сливовый",D3D3D3:"Светло-серый",FFF0F5:"Розово-лавандовый",FAEBD7:"Античный белый",FFFFE0:"Светло-жёлтый",F0FFF0:"Медвяной росы",F0FFFF:"Лазурный",F0F8FF:"Бледно-голубой",E6E6FA:"Лавандовый",FFF:"Белый","1ABC9C":"Strong Cyan","2ECC71":"Изумрудный","3498DB":"Bright Blue","9B59B6":"Amethyst", -"4E5F70":"Grayish Blue",F1C40F:"Ярко-желтый","16A085":"Dark Cyan","27AE60":"Тёмно-изумрудный","2980B9":"Strong Blue","8E44AD":"Тёмно-фиолетовый","2C3E50":"Desaturated Blue",F39C12:"Оранжевый",E67E22:"Морковный",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Светло-серый",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Тёмно-серый"},more:"Ещё цвета...",panelTitle:"Цвета",textColorTitle:"Цвет текста"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/si.js deleted file mode 100644 index 0e6e3c6e0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/si.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","si",{auto:"Automatic",bgColorTitle:"පසුබිම් වර්ණය",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"More Colors...",panelTitle:"වර්ණය",textColorTitle:"අක්ෂර වර්ණ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sk.js deleted file mode 100644 index 86c27c110..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sk.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sk",{auto:"Automaticky",bgColorTitle:"Farba pozadia",colors:{"000":"Čierna",8E5:"Gaštanová","8B4513":"Sedlová hnedá","2F4F4F":"Tmavo bridlicovo sivá","008080":"Modrozelená","000080":"Tmavomodrá","4B0082":"Indigo",696969:"Tmavá sivá",B22222:"Ohňová tehlová",A52A2A:"Hnedá",DAA520:"Zlatobyľ","006400":"Tmavá zelená","40E0D0":"Tyrkysová","0000CD":"Stredná modrá",800080:"Purpurová",808080:"Sivá",F00:"Červená",FF8C00:"Tmavá oranžová",FFD700:"Zlatá","008000":"Zelená", -"0FF":"Azúrová","00F":"Modrá",EE82EE:"Fialová",A9A9A9:"Tmavá sivá",FFA07A:"Svetlá lososová",FFA500:"Oranžová",FFFF00:"Žltá","00FF00":"Vápenná",AFEEEE:"Svetlá tyrkysová",ADD8E6:"Svetlá modrá",DDA0DD:"Slivková",D3D3D3:"Svetlá sivá",FFF0F5:"Levanduľovo červená",FAEBD7:"Antická biela",FFFFE0:"Svetlá žltá",F0FFF0:"Medová",F0FFFF:"Azúrová",F0F8FF:"Alicovo modrá",E6E6FA:"Levanduľová",FFF:"Biela","1ABC9C":"Silno tyrkysová","2ECC71":"Smaragdová","3498DB":"Svetlo modrá","9B59B6":"Ametystová","4E5F70":"Sivo modrá", -F1C40F:"Sýto žltá","16A085":"Tmavo tyrkysová","27AE60":"Tmavo smaragdová","2980B9":"Silno modrá","8E44AD":"Tmavo fialová","2C3E50":"Nesýto modrá",F39C12:"Oranžová",E67E22:"Mrkvová",E74C3C:"Bledo červená",ECF0F1:"Svetlá bronzová","95A5A6":"Svetlá sivo-tyrkysová",DDD:"Svetlo sivá",D35400:"Tekvicová",C0392B:"Silno červená",BDC3C7:"Strieborná","7F8C8D":"Sivo tyrkysová",999:"Tmavo sivá"},more:"Viac farieb...",panelTitle:"Farby",textColorTitle:"Farba textu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sl.js deleted file mode 100644 index 2ee82b6c8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sl.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sl",{auto:"Samodejno",bgColorTitle:"Barva ozadja",colors:{"000":"Črna",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Rjava",DAA520:"Golden Rod","006400":"Temno zelena","40E0D0":"Turkizna","0000CD":"Srednje modra",800080:"Škrlatna",808080:"Siva",F00:"Rdeča",FF8C00:"Temno oranžna",FFD700:"Zlata","008000":"Zelena","0FF":"Sinja","00F":"Modra",EE82EE:"Vijolična", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Oranžna",FFFF00:"Rumena","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Svetlo modra",DDA0DD:"Plum",D3D3D3:"Svetlo siva",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Svetlo rumena",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"Bela","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Več barv ...",panelTitle:"Barve",textColorTitle:"Barva besedila"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sq.js deleted file mode 100644 index 0821c04f1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sq.js +++ /dev/null @@ -1,4 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sq",{auto:"Automatik",bgColorTitle:"Ngjyra e Prapavijës",colors:{"000":"E zezë",8E5:"Ngjyrë gështenjë","8B4513":"Ngjyrë Shale Kafe","2F4F4F":"Ngjyrë Gri të errët ardëz","008080":"Ngjyrë bajukë","000080":"Ngjyrë Marine","4B0082":"Indigo",696969:"Gri e Errët",B22222:"Tullë në Flakë",A52A2A:"Ngjytë Kafe",DAA520:"Shkop i Artë","006400":"E Gjelbër e Errët","40E0D0":"Ngjyrë e Bruztë","0000CD":"E Kaltër e Mesme",800080:"Vjollcë",808080:"Gri",F00:"E Kuqe",FF8C00:"E Portokalltë e Errët", -FFD700:"Ngjyrë Ari","008000":"E Gjelbërt","0FF":"Cyan","00F":"E Kaltër",EE82EE:"Vjollcë",A9A9A9:"Gri e Zbehtë",FFA07A:"Salmon i Ndritur",FFA500:"E Portokalltë",FFFF00:"E Verdhë","00FF00":"Ngjyrë Gëlqere",AFEEEE:"Ngjyrë e Bruztë e Zbehtë",ADD8E6:"E Kaltër e Ndritur",DDA0DD:"Ngjyrë Llokumi",D3D3D3:"Gri e Ndritur",FFF0F5:"Ngjyrë Purpur e Skuqur",FAEBD7:"E Bardhë Antike",FFFFE0:"E verdhë e Ndritur",F0FFF0:"Ngjyrë Nektari",F0FFFF:"Ngjyrë Qielli",F0F8FF:"E Kaltër Alice",E6E6FA:"Ngjyrë Purpur e Zbetë",FFF:"E bardhë", -"1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Më Shumë Ngjyra...",panelTitle:"Ngjyrat", -textColorTitle:"Ngjyra e Tekstit"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr-latn.js deleted file mode 100644 index d0360f8b8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr-latn.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sr-latn",{auto:"Automatski",bgColorTitle:"Boja pozadine",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Više boja...",panelTitle:"Colors",textColorTitle:"Boja teksta"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr.js deleted file mode 100644 index a3a26bd71..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sr.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sr",{auto:"Аутоматски",bgColorTitle:"Боја позадине",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet", -A9A9A9:"Dim Gray",FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Више боја...",panelTitle:"Colors",textColorTitle:"Боја текста"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sv.js deleted file mode 100644 index ba42c1dbb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/sv.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","sv",{auto:"Automatisk",bgColorTitle:"Bakgrundsfärg",colors:{"000":"Svart",8E5:"Rödbrun","8B4513":"Mörkbrun","2F4F4F":"Skiffergrå","008080":"Kricka","000080":"Marinblå","4B0082":"Indigo",696969:"Mörkgrå",B22222:"Tegelsten",A52A2A:"Brun",DAA520:"Mörk guld","006400":"Mörkgrön","40E0D0":"Turkos","0000CD":"Medium blå",800080:"Lila",808080:"Grå",F00:"Röd",FF8C00:"Mörkorange",FFD700:"Guld","008000":"Grön","0FF":"Turkos","00F":"Blå",EE82EE:"Violett",A9A9A9:"Matt grå", -FFA07A:"Laxrosa",FFA500:"Orange",FFFF00:"Gul","00FF00":"Lime",AFEEEE:"Ljusturkos",ADD8E6:"Ljusblå",DDA0DD:"Plommon",D3D3D3:"Ljusgrå",FFF0F5:"Ljus lavendel",FAEBD7:"Antikvit",FFFFE0:"Ljusgul",F0FFF0:"Honungsdagg",F0FFFF:"Azurblå",F0F8FF:"Aliceblå",E6E6FA:"Lavendel",FFF:"Vit","1ABC9C":"Stark turkos","2ECC71":"Smaragd","3498DB":"Klarblå","9B59B6":"Ametist","4E5F70":"Gråblå",F1C40F:"Klargul","16A085":"Mörk turkos","27AE60":"Mörk smaragd","2980B9":"Stark blå","8E44AD":"Mörk violett","2C3E50":"Blek blå", -F39C12:"Orange",E67E22:"Morot",E74C3C:"Blekröd",ECF0F1:"Stark silver","95A5A6":"Ljus gråaktig turkos",DDD:"Ljusgrå",D35400:"Pumpa",C0392B:"Stark röd",BDC3C7:"Silver","7F8C8D":"Gråaktig turkos",999:"Mörkgrå"},more:"Fler färger...",panelTitle:"Färger",textColorTitle:"Textfärg"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/th.js deleted file mode 100644 index 38c821f6b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/th.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","th",{auto:"สีอัตโนมัติ",bgColorTitle:"สีพื้นหลัง",colors:{"000":"Black",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Brown",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Gray",F00:"Red",FF8C00:"Dark Orange",FFD700:"Gold","008000":"Green","0FF":"Cyan","00F":"Blue",EE82EE:"Violet",A9A9A9:"Dim Gray", -FFA07A:"Light Salmon",FFA500:"Orange",FFFF00:"Yellow","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"White","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"เลือกสีอื่นๆ...",panelTitle:"Colors",textColorTitle:"สีตัวอักษร"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tr.js deleted file mode 100644 index 5c1c706d3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tr.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","tr",{auto:"Otomatik",bgColorTitle:"Arka Renk",colors:{"000":"Siyah",8E5:"Kestane","8B4513":"Koyu Kahverengi","2F4F4F":"Koyu Kurşuni Gri","008080":"Teal","000080":"Mavi","4B0082":"Çivit Mavisi",696969:"Silik Gri",B22222:"Ateş Tuğlası",A52A2A:"Kahverengi",DAA520:"Altun Sırık","006400":"Koyu Yeşil","40E0D0":"Turkuaz","0000CD":"Orta Mavi",800080:"Pembe",808080:"Gri",F00:"Kırmızı",FF8C00:"Koyu Portakal",FFD700:"Altın","008000":"Yeşil","0FF":"Ciyan","00F":"Mavi", -EE82EE:"Menekşe",A9A9A9:"Koyu Gri",FFA07A:"Açık Sarımsı",FFA500:"Portakal",FFFF00:"Sarı","00FF00":"Açık Yeşil",AFEEEE:"Sönük Turkuaz",ADD8E6:"Açık Mavi",DDA0DD:"Mor",D3D3D3:"Açık Gri",FFF0F5:"Eflatun Pembe",FAEBD7:"Antik Beyaz",FFFFE0:"Açık Sarı",F0FFF0:"Balsarısı",F0FFFF:"Gök Mavisi",F0F8FF:"Reha Mavi",E6E6FA:"Eflatun",FFF:"Beyaz","1ABC9C":"Koyu Camgöbeği","2ECC71":"Zümrüt Yeşili","3498DB":"Parlak Mavi","9B59B6":"Ametist Moru","4E5F70":"Kirli Gri Mavi",F1C40F:"Canlı Sarı","16A085":"Koyu Camgöbeği", -"27AE60":"Koyu Zümrüt Yeşili","2980B9":"Koyu Mavi","8E44AD":"Koyu Menekşe","2C3E50":"Koyu Lacivert",F39C12:"Turuncu",E67E22:"Havuç Turuncusu",E74C3C:"Soluk Kırmızı",ECF0F1:"Parlak Gümüş","95A5A6":"Açık Kirli Gri Camgöbeği",DDD:"Açık Gri",D35400:"Balkabağı Turuncusu",C0392B:"Kan Kırmızı",BDC3C7:"Gümüş","7F8C8D":"Kirli Gri Camgöbeği",999:"Koyu Gri"},more:"Diğer renkler...",panelTitle:"Renkler",textColorTitle:"Yazı Rengi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tt.js deleted file mode 100644 index 8847d79e9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/tt.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","tt",{auto:"Автоматик",bgColorTitle:"Фон төсе",colors:{"000":"Кара",8E5:"Бордо","8B4513":"Дарчин","2F4F4F":"Аспид соры","008080":"Күкле-яшелле","000080":"Куе күк","4B0082":"Индиго",696969:"Куе соры",B22222:"Кармин",A52A2A:"Чия кызыл",DAA520:"Алтын каен","006400":"Үлән","40E0D0":"Фирәзә","0000CD":"Фарсы күк",800080:"Шәмәхә",808080:"Соры",F00:"Кызыл",FF8C00:"Кабак",FFD700:"Алтын","008000":"Яшел","0FF":"Ачык зәңгәр","00F":"Зәңгәр",EE82EE:"Миләүшә",A9A9A9:"Ачык соры", -FFA07A:"Кызгылт сары алсу",FFA500:"Кызгылт сары",FFFF00:"Сары","00FF00":"Лайм",AFEEEE:"Тонык күк",ADD8E6:"Тонык күкбаш",DDA0DD:"Аксыл шәмәхә",D3D3D3:"Ачык соры",FFF0F5:"Ал ала миләүшә",FAEBD7:"Җитен",FFFFE0:"Ачык сары",F0FFF0:"Аксыл көрән",F0FFFF:"Ап-ак",F0F8FF:"Аксыл зәңгәр диңгез",E6E6FA:"Ала миләүшә",FFF:"Ак","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue", -"8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Башка төсләр...",panelTitle:"Төсләр",textColorTitle:"Текст төсе"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ug.js deleted file mode 100644 index f526f8af8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/ug.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","ug",{auto:"ئۆزلۈكىدىن",bgColorTitle:"تەگلىك رەڭگى",colors:{"000":"قارا",8E5:"قىزغۇچ سېرىق","8B4513":"توق قوڭۇر","2F4F4F":"قارامتۇل يېشىل","008080":"كۆكۈش يېشىل","000080":"قارامتۇل كۆك","4B0082":"كۆكۈش كۈلرەڭ",696969:"قارامتۇل كۈلرەڭ",B22222:"خىش قىزىل",A52A2A:"قوڭۇر",DAA520:"ئالتۇن سېرىق","006400":"توق يېشىل","40E0D0":"كۆكۈچ يېشىل","0000CD":"ئوتتۇراھال كۆك",800080:"بىنەپشە",808080:"كۈلرەڭ",F00:"قىزىل",FF8C00:"توق قىزغۇچ سېرىق",FFD700:"ئالتۇن","008000":"يېشىل", -"0FF":"يېشىل كۆك","00F":"كۆك",EE82EE:"قىزغۇچ بىنەپشە",A9A9A9:"توق كۈلرەڭ",FFA07A:"كاۋا چېچىكى سېرىق",FFA500:"قىزغۇچ سېرىق",FFFF00:"سېرىق","00FF00":"Lime",AFEEEE:"سۇس ھاۋا رەڭ",ADD8E6:"ئوچۇق كۆك",DDA0DD:"قىزغۇچ بىنەپشە",D3D3D3:"سۇس كۆكۈچ كۈلرەڭ",FFF0F5:"سۇس قىزغۇچ بىنەپشە",FAEBD7:"Antique White",FFFFE0:"سۇس سېرىق",F0FFF0:"Honeydew",F0FFFF:"ئاسمان كۆكى",F0F8FF:"سۇس كۆك",E6E6FA:"سۇس بىنەپشە",FFF:"ئاق","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue", -F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"باشقا رەڭ",panelTitle:"رەڭ",textColorTitle:"تېكىست رەڭگى"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/uk.js deleted file mode 100644 index c33a6cec0..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/uk.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","uk",{auto:"Авто",bgColorTitle:"Колір фону",colors:{"000":"Чорний",8E5:"Бордовий","8B4513":"Коричневий","2F4F4F":"Темний сіро-зелений","008080":"Морської хвилі","000080":"Сливовий","4B0082":"Індиго",696969:"Темносірий",B22222:"Темночервоний",A52A2A:"Каштановий",DAA520:"Бежевий","006400":"Темнозелений","40E0D0":"Бірюзовий","0000CD":"Темносиній",800080:"Пурпурний",808080:"Сірий",F00:"Червоний",FF8C00:"Темнооранжевий",FFD700:"Жовтий","008000":"Зелений","0FF":"Синьо-зелений", -"00F":"Синій",EE82EE:"Фіолетовий",A9A9A9:"Світлосірий",FFA07A:"Рожевий",FFA500:"Оранжевий",FFFF00:"Яскравожовтий","00FF00":"Салатовий",AFEEEE:"Світлобірюзовий",ADD8E6:"Блакитний",DDA0DD:"Світлофіолетовий",D3D3D3:"Сріблястий",FFF0F5:"Світлорожевий",FAEBD7:"Світлооранжевий",FFFFE0:"Світложовтий",F0FFF0:"Світлозелений",F0FFFF:"Світлий синьо-зелений",F0F8FF:"Світлоблакитний",E6E6FA:"Лавандовий",FFF:"Білий","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue", -F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet","2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Кольори...",panelTitle:"Кольори",textColorTitle:"Колір тексту"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/vi.js deleted file mode 100644 index 16177f4f6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/vi.js +++ /dev/null @@ -1,3 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","vi",{auto:"Tự động",bgColorTitle:"Màu nền",colors:{"000":"Đen",8E5:"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo",696969:"Dark Gray",B22222:"Fire Brick",A52A2A:"Nâu",DAA520:"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue",800080:"Purple",808080:"Xám",F00:"Đỏ",FF8C00:"Dark Orange",FFD700:"Vàng","008000":"Xanh lá cây","0FF":"Cyan","00F":"Xanh da trời",EE82EE:"Tím",A9A9A9:"Xám tối", -FFA07A:"Light Salmon",FFA500:"Màu cam",FFFF00:"Vàng","00FF00":"Lime",AFEEEE:"Pale Turquoise",ADD8E6:"Light Blue",DDA0DD:"Plum",D3D3D3:"Light Grey",FFF0F5:"Lavender Blush",FAEBD7:"Antique White",FFFFE0:"Light Yellow",F0FFF0:"Honeydew",F0FFFF:"Azure",F0F8FF:"Alice Blue",E6E6FA:"Lavender",FFF:"Trắng","1ABC9C":"Strong Cyan","2ECC71":"Emerald","3498DB":"Bright Blue","9B59B6":"Amethyst","4E5F70":"Grayish Blue",F1C40F:"Vivid Yellow","16A085":"Dark Cyan","27AE60":"Dark Emerald","2980B9":"Strong Blue","8E44AD":"Dark Violet", -"2C3E50":"Desaturated Blue",F39C12:"Orange",E67E22:"Carrot",E74C3C:"Pale Red",ECF0F1:"Bright Silver","95A5A6":"Light Grayish Cyan",DDD:"Light Gray",D35400:"Pumpkin",C0392B:"Strong Red",BDC3C7:"Silver","7F8C8D":"Grayish Cyan",999:"Dark Gray"},more:"Màu khác...",panelTitle:"Màu sắc",textColorTitle:"Màu chữ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh-cn.js deleted file mode 100644 index e1fb1ee05..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh-cn.js +++ /dev/null @@ -1,2 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","zh-cn",{auto:"自动",bgColorTitle:"背景颜色",colors:{"000":"黑色",8E5:"栗色","8B4513":"鞍褐色","2F4F4F":"深岩灰色","008080":"凫绿色","000080":"海军蓝色","4B0082":"靛色",696969:"深灰色",B22222:"火砖红色",A52A2A:"褐色",DAA520:"金菊色","006400":"深绿色","40E0D0":"绿松石色","0000CD":"中蓝色",800080:"紫色",808080:"灰色",F00:"红色",FF8C00:"深橙色",FFD700:"金色","008000":"绿色","0FF":"青色","00F":"蓝色",EE82EE:"紫罗兰色",A9A9A9:"暗灰色",FFA07A:"浅鲑红色",FFA500:"橙色",FFFF00:"黄色","00FF00":"鲜绿色",AFEEEE:"灰绿松石色",ADD8E6:"浅蓝色",DDA0DD:"梅红色",D3D3D3:"浅灰色", -FFF0F5:"薰衣草紫红色",FAEBD7:"古董白色",FFFFE0:"浅黄色",F0FFF0:"蜜瓜绿色",F0FFFF:"浅蓝色",F0F8FF:"爱丽丝蓝色",E6E6FA:"薰衣草紫色",FFF:"白色","1ABC9C":"浓青色","2ECC71":"碧绿色","3498DB":"亮蓝色","9B59B6":"紫水晶色","4E5F70":"灰蓝色",F1C40F:"鲜黄色","16A085":"深青色","27AE60":"深碧绿色","2980B9":"浓蓝色","8E44AD":"深紫罗兰色","2C3E50":"不饱和蓝色",F39C12:"橙色",E67E22:"红萝卜红色",E74C3C:"灰红色",ECF0F1:"亮银色","95A5A6":"浅灰青色",DDD:"浅灰色",D35400:"南瓜黄色",C0392B:"浓红色",BDC3C7:"银色","7F8C8D":"灰青色",999:"深灰色"},more:"其它颜色...",panelTitle:"颜色",textColorTitle:"文本颜色"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh.js deleted file mode 100644 index e4df4bd08..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/lang/zh.js +++ /dev/null @@ -1,2 +0,0 @@ -CKEDITOR.plugins.setLang("colorbutton","zh",{auto:"自動",bgColorTitle:"背景顏色",colors:{"000":"黑色",8E5:"栗色","8B4513":"鞍褐色","2F4F4F":"暗瓦灰色","008080":"水壓色","000080":"丈青澀","4B0082":"靛青",696969:"深灰色",B22222:"磚紅色",A52A2A:"褐色",DAA520:"金黃色","006400":"深綠色","40E0D0":"青綠色","0000CD":"藍色",800080:"紫色",808080:"灰色",F00:"紅色",FF8C00:"深橘色",FFD700:"金色","008000":"綠色","0FF":"青色","00F":"藍色",EE82EE:"紫色",A9A9A9:"暗灰色",FFA07A:"亮鮭紅",FFA500:"橘色",FFFF00:"黃色","00FF00":"鮮綠色",AFEEEE:"綠松色",ADD8E6:"淺藍色",DDA0DD:"枚紅色",D3D3D3:"淺灰色",FFF0F5:"淺紫色", -FAEBD7:"骨董白",FFFFE0:"淺黃色",F0FFF0:"蜜瓜綠",F0FFFF:"天藍色",F0F8FF:"愛麗斯蘭",E6E6FA:"淺紫色",FFF:"白色","1ABC9C":"深青色","2ECC71":"翠綠色","3498DB":"亮藍色","9B59B6":"紫色","4E5F70":"藍灰色",F1C40F:"鮮黃色","16A085":"暗青色","27AE60":"暗綠色","2980B9":"深藍色","8E44AD":"暗紫色","2C3E50":"不飽和藍色",F39C12:"橘色",E67E22:"胡蘿蔔色",E74C3C:"淡紅色",ECF0F1:"亮銀色","95A5A6":"淺灰青色",DDD:"淺灰色",D35400:"南瓜色",C0392B:"深紅色",BDC3C7:"銀色","7F8C8D":"灰青色",999:"深灰色"},more:"更多顏色",panelTitle:"顏色",textColorTitle:"文字顏色"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/plugin.js deleted file mode 100644 index d48149cf6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colorbutton/plugin.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.add("colorbutton",{requires:"panelbutton,floatpanel",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"bgcolor,textcolor",hidpi:!0,init:function(d){function t(a,e,g,r,l){var n=new CKEDITOR.style(k["colorButton_"+e+"Style"]),m=CKEDITOR.tools.getNextId()+"_colorBox",p;l=l||{};d.ui.add(a, -CKEDITOR.UI_PANELBUTTON,{label:g,title:g,modes:{wysiwyg:1},editorFocus:0,toolbar:"colors,"+r,allowedContent:n,requiredContent:n,contentTransformations:l.contentTransformations,panel:{css:CKEDITOR.skin.getPath("editor"),attributes:{role:"listbox","aria-label":h.panelTitle}},onBlock:function(a,b){p=b;b.autoSize=!0;b.element.addClass("cke_colorblock");b.element.setHtml(y(a,e,m));b.element.getDocument().getBody().setStyle("overflow","hidden");CKEDITOR.ui.fire("ready",this);var c=b.keys,f="rtl"==d.lang.dir; -c[f?37:39]="next";c[40]="next";c[9]="next";c[f?39:37]="prev";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c[32]="click"},refresh:function(){d.activeFilter.check(n)||this.setState(CKEDITOR.TRISTATE_DISABLED)},onOpen:function(){var a=d.getSelection(),b=a&&a.getStartElement(),c=d.elementPath(b);if(c){b=c.block||c.blockLimit||d.document.getBody();do c=b&&b.getComputedStyle("back"==e?"background-color":"color")||"transparent";while("back"==e&&"transparent"==c&&b&&(b=b.getParent()));c&&"transparent"!=c||(c= -"#ffffff");!1!==k.colorButton_enableAutomatic&&this._.panel._.iframe.getFrameDocument().getById(m).setStyle("background-color",c);if(b=a&&a.getRanges()[0]){for(var a=new CKEDITOR.dom.walker(b),f=b.collapsed?b.startContainer:a.next(),b="";f;){f.type===CKEDITOR.NODE_TEXT&&(f=f.getParent());f=u(f.getComputedStyle("back"==e?"background-color":"color"));b=b||f;if(b!==f){b="";break}f=a.next()}a=b;b=p._.getItems();for(f=0;f<b.count();f++){var g=b.getItem(f);g.removeAttribute("aria-selected");a&&a==u(g.getAttribute("data-value"))&& -g.setAttribute("aria-selected",!0)}}return c}}})}function y(a,e,g){a=[];var r=k.colorButton_colors.split(","),l=k.colorButton_colorsPerRow||6,n=d.plugins.colordialog&&!1!==k.colorButton_enableMore,m=r.length+(n?2:1),p=CKEDITOR.tools.addFunction(function(a,b){function c(a){d.removeStyle(new CKEDITOR.style(k["colorButton_"+b+"Style"],{color:"inherit"}));var e=k["colorButton_"+b+"Style"];e.childRule="back"==b?function(a){return v(a)}:function(a){return!(a.is("a")||a.getElementsByTag("a").count())||v(a)}; -d.focus();d.applyStyle(new CKEDITOR.style(e,{color:a}));d.fire("saveSnapshot")}d.focus();d.fire("saveSnapshot");if("?"==a)d.getColorFromDialog(function(a){if(a)return c(a)});else return c(a)});!1!==k.colorButton_enableAutomatic&&a.push('\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"',h.auto,'" onclick\x3d"CKEDITOR.tools.callFunction(',p,",null,'",e,"');return false;\" href\x3d\"javascript:void('",h.auto,'\')" role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"',m, -'"\x3e\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctr\x3e\x3ctd colspan\x3d"'+l+'" align\x3d"center"\x3e\x3cspan class\x3d"cke_colorbox" id\x3d"',g,'"\x3e\x3c/span\x3e',h.auto,"\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/a\x3e");a.push('\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e');for(g=0;g<r.length;g++){0===g%l&&a.push("\x3c/tr\x3e\x3ctr\x3e");var q=r[g].split("/"),b=q[0],c=q[1]||b;q[1]||(b="#"+b.replace(/^(.)(.)(.)$/, -"$1$1$2$2$3$3"));q=d.lang.colorbutton.colors[c]||c;a.push('\x3ctd\x3e\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"',q,'" onclick\x3d"CKEDITOR.tools.callFunction(',p,",'",b,"','",e,"'); return false;\" href\x3d\"javascript:void('",q,'\')" data-value\x3d"'+c+'" role\x3d"option" aria-posinset\x3d"',g+2,'" aria-setsize\x3d"',m,'"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#',c,'"\x3e\x3c/span\x3e\x3c/a\x3e\x3c/td\x3e')}n&&a.push('\x3c/tr\x3e\x3ctr\x3e\x3ctd colspan\x3d"'+ -l+'" align\x3d"center"\x3e\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"',h.more,'" onclick\x3d"CKEDITOR.tools.callFunction(',p,",'?','",e,"');return false;\" href\x3d\"javascript:void('",h.more,"')\"",' role\x3d"option" aria-posinset\x3d"',m,'" aria-setsize\x3d"',m,'"\x3e',h.more,"\x3c/a\x3e\x3c/td\x3e");a.push("\x3c/tr\x3e\x3c/table\x3e");return a.join("")}function v(a){return"false"==a.getAttribute("contentEditable")||a.getAttribute("data-nostyle")}function u(a){return CKEDITOR.tools.convertRgbToHex(a|| -"").replace(/#/,"").toLowerCase()}var k=d.config,h=d.lang.colorbutton;if(!CKEDITOR.env.hc){t("TextColor","fore",h.textColorTitle,10,{contentTransformations:[[{element:"font",check:"span{color}",left:function(a){return!!a.attributes.color},right:function(a){a.name="span";a.attributes.color&&(a.styles.color=a.attributes.color);delete a.attributes.color}}]]});var w={},x=d.config.colorButton_normalizeBackground;if(void 0===x||x)w.contentTransformations=[[{element:"span",left:function(a){var d=CKEDITOR.tools; -if("span"!=a.name||!a.styles||!a.styles.background)return!1;a=d.style.parse.background(a.styles.background);return a.color&&1===d.objectKeys(a).length},right:function(a){var e=(new CKEDITOR.style(d.config.colorButton_backStyle,{color:a.styles.background})).getDefinition();a.name=e.element;a.styles=e.styles;a.attributes=e.attributes||{};return a}}]];t("BGColor","back",h.bgColorTitle,20,w)}}});CKEDITOR.config.colorButton_colors="1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000"; -CKEDITOR.config.colorButton_foreStyle={element:"span",styles:{color:"#(color)"},overrides:[{element:"font",attributes:{color:null}}]};CKEDITOR.config.colorButton_backStyle={element:"span",styles:{"background-color":"#(color)"}}; \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.css b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.css deleted file mode 100644 index e284ba089..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.css +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -.cke_colordialog_colorcell { - width: 12px; /* All cells have equal width which depends on parent width (in this case table parent). Width works more like max-width. */ - height: 14px; - padding: 1px; /* Padding is replaced by border for focused cells. Prevents 'jumping' when adding borders. */ -} - -.cke_colordialog_colorcell.cke_colordialog_focused_light, -.cke_colordialog_colorcell.cke_colordialog_focused_dark { - padding: 0; /* Shrink cell to allow 1px border indicating focus. */ - border: 1px dotted #000; -} - -.cke_colordialog_colorcell.cke_colordialog_focused_dark { - border-color: #FFF; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.js deleted file mode 100644 index ae32c1552..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/dialogs/colordialog.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("colordialog",function(x){function m(){h.getById(n).removeStyle("background-color");p.getContentElement("picker","selectedColor").setValue("");y()}function z(a){a=a.data.getTarget();var c;"td"==a.getName()&&(c=a.getChild(0).getHtml())&&(y(),f=a,f.setAttribute("aria-selected",!0),f.addClass("cke_colordialog_selected"),p.getContentElement("picker","selectedColor").setValue(c))}function y(){f&&(f.removeClass("cke_colordialog_selected"),f.removeAttribute("aria-selected"),f=null)}function D(a){a= -a.replace(/^#/,"");for(var c=0,b=[];2>=c;c++)b[c]=parseInt(a.substr(2*c,2),16);return 165<=.2126*b[0]+.7152*b[1]+.0722*b[2]}function A(a){!a.name&&(a=new CKEDITOR.event(a));var c=!/mouse/.test(a.name),b=a.data.getTarget(),g;"td"==b.getName()&&(g=b.getChild(0).getHtml())&&(q(a),c?d=b:B=b,c&&b.addClass(D(g)?"cke_colordialog_focused_light":"cke_colordialog_focused_dark"),r(g))}function q(a){if(a=!/mouse/.test(a.name)&&d)a.removeClass("cke_colordialog_focused_light"),a.removeClass("cke_colordialog_focused_dark"); -d||B||r(!1)}function r(a){a?(h.getById(t).setStyle("background-color",a),h.getById(u).setHtml(a)):(h.getById(t).removeStyle("background-color"),h.getById(u).setHtml("\x26nbsp;"))}function E(a){var c=a.data,b=c.getTarget(),g=c.getKeystroke(),e="rtl"==x.lang.dir;switch(g){case 38:if(a=b.getParent().getPrevious())a=a.getChild([b.getIndex()]),a.focus();c.preventDefault();break;case 40:(a=b.getParent().getNext())&&(a=a.getChild([b.getIndex()]))&&1==a.type&&a.focus();c.preventDefault();break;case 32:case 13:z(a); -c.preventDefault();break;case e?37:39:(a=b.getNext())?1==a.type&&(a.focus(),c.preventDefault(!0)):(a=b.getParent().getNext())&&(a=a.getChild([0]))&&1==a.type&&(a.focus(),c.preventDefault(!0));break;case e?39:37:if(a=b.getPrevious())a.focus(),c.preventDefault(!0);else if(a=b.getParent().getPrevious())a=a.getLast(),a.focus(),c.preventDefault(!0)}}var v=CKEDITOR.dom.element,h=CKEDITOR.document,e=x.lang.colordialog,p,f,C={type:"html",html:"\x26nbsp;"},d,B,l=function(a){return CKEDITOR.tools.getNextId()+ -"_"+a},t=l("hicolor"),u=l("hicolortext"),n=l("selhicolor"),k;(function(){function a(a,d){for(var w=a;w<a+3;w++){var f=new v(k.$.insertRow(-1));f.setAttribute("role","row");for(var e=d;e<d+3;e++)for(var g=0;6>g;g++)c(f.$,"#"+b[e]+b[g]+b[w])}}function c(a,c){var b=new v(a.insertCell(-1));b.setAttribute("class","ColorCell cke_colordialog_colorcell");b.setAttribute("tabIndex",-1);b.setAttribute("role","gridcell");b.on("keydown",E);b.on("click",z);b.on("focus",A);b.on("blur",q);b.setStyle("background-color", -c);var d=l("color_table_cell");b.setAttribute("aria-labelledby",d);b.append(CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+c+"\x3c/span\x3e",CKEDITOR.document))}k=CKEDITOR.dom.element.createFromHtml('\x3ctable tabIndex\x3d"-1" class\x3d"cke_colordialog_table" aria-label\x3d"'+e.options+'" role\x3d"grid" style\x3d"border-collapse:separate;" cellspacing\x3d"0"\x3e\x3ccaption class\x3d"cke_voice_label"\x3e'+e.options+'\x3c/caption\x3e\x3ctbody role\x3d"presentation"\x3e\x3c/tbody\x3e\x3c/table\x3e'); -k.on("mouseover",A);k.on("mouseout",q);var b="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,3);a(3,3);var g=new v(k.$.insertRow(-1));g.setAttribute("role","row");c(g.$,"#000000");for(var f=0;16>f;f++){var d=f.toString(16);c(g.$,"#"+d+d+d+d+d+d)}c(g.$,"#ffffff")})();CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.plugins.get("colordialog").path+"dialogs/colordialog.css"));return{title:e.title,minWidth:360,minHeight:220,onLoad:function(){p=this},onHide:function(){m();d.removeClass("cke_colordialog_focused_light"); -d.removeClass("cke_colordialog_focused_dark");r(!1);d=null},contents:[{id:"picker",label:e.title,accessKey:"I",elements:[{type:"hbox",padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"\x3cdiv\x3e\x3c/div\x3e",onLoad:function(){CKEDITOR.document.getById(this.domId).append(k)},focus:function(){(d||this.getElement().getElementsByTag("td").getItem(0)).focus()}},C,{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"\x3cspan\x3e"+e.highlight+'\x3c/span\x3e\x3cdiv id\x3d"'+ -t+'" style\x3d"border: 1px solid; height: 74px; width: 74px;"\x3e\x3c/div\x3e\x3cdiv id\x3d"'+u+'"\x3e\x26nbsp;\x3c/div\x3e\x3cspan\x3e'+e.selected+'\x3c/span\x3e\x3cdiv id\x3d"'+n+'" style\x3d"border: 1px solid; height: 20px; width: 74px;"\x3e\x3c/div\x3e'},{type:"text",label:e.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px",onChange:function(){try{h.getById(n).setStyle("background-color",this.getValue())}catch(a){m()}}},C,{type:"button",id:"clear",label:e.clear, -onClick:m}]}]}]}]}}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/af.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/af.js deleted file mode 100644 index 9a6d5746c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","af",{clear:"Herstel",highlight:"Aktief",options:"Kleuropsies",selected:"Geselekteer",title:"Kies kleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ar.js deleted file mode 100644 index 3b4a4977f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ar",{clear:"مسح",highlight:"تحديد",options:"اختيارات الألوان",selected:"اللون المختار",title:"اختر اللون"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/az.js deleted file mode 100644 index 03776b43b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","az",{clear:"Təmizlə",highlight:"Ayırmaq",options:"Rəng seçimləri",selected:"Seçilmiş rəng",title:"Rəngi seç"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bg.js deleted file mode 100644 index f57a3a9ce..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bg",{clear:"Изчистване",highlight:"Осветяване",options:"Цветови опции",selected:"Изберете цвят",title:"Изберете цвят"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bn.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bn.js deleted file mode 100644 index 1cd509727..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bn",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bs.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bs.js deleted file mode 100644 index e8ea577b6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bs",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ca.js deleted file mode 100644 index 9e76e9e10..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ca",{clear:"Neteja",highlight:"Destacat",options:"Opcions del color",selected:"Color Seleccionat",title:"Seleccioni el color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cs.js deleted file mode 100644 index 4de1f1fc7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","cs",{clear:"Vyčistit",highlight:"Zvýraznit",options:"Nastavení barvy",selected:"Vybráno",title:"Výběr barvy"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cy.js deleted file mode 100644 index 6536226be..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","cy",{clear:"Clirio",highlight:"Uwcholeuo",options:"Opsiynau Lliw",selected:"Lliw a Ddewiswyd",title:"Dewis lliw"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/da.js deleted file mode 100644 index df1c5c85c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","da",{clear:"Nulstil",highlight:"Markér",options:"Farvemuligheder",selected:"Valgt farve",title:"Vælg farve"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de-ch.js deleted file mode 100644 index 9d156a74b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","de-ch",{clear:"Entfernen",highlight:"Hervorheben",options:"Farboptionen",selected:"Ausgewählte Farbe",title:"Farbe auswählen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de.js deleted file mode 100644 index 6ebe48e09..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","de",{clear:"Entfernen",highlight:"Hervorheben",options:"Farboptionen",selected:"Ausgewählte Farbe",title:"Farbe auswählen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/el.js deleted file mode 100644 index 1447a1c44..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","el",{clear:"Εκκαθάριση",highlight:"Σήμανση",options:"Επιλογές Χρωμάτων",selected:"Επιλεγμένο Χρώμα",title:"Επιλογή χρώματος"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-au.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-au.js deleted file mode 100644 index cdde12b87..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-au",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-ca.js deleted file mode 100644 index 535acfcac..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-ca",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-gb.js deleted file mode 100644 index 1ec95ff21..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-gb",{clear:"Clear",highlight:"Highlight",options:"Colour Options",selected:"Selected Colour",title:"Select colour"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en.js deleted file mode 100644 index 21a79bc0a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eo.js deleted file mode 100644 index aaa8cf96b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","eo",{clear:"Forigi",highlight:"Detaloj",options:"Opcioj pri koloroj",selected:"Selektita koloro",title:"Selekti koloron"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es-mx.js deleted file mode 100644 index ebef9611c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","es-mx",{clear:"Borrar",highlight:"Realce",options:"Opciones de color",selected:"Color seleccionado",title:"Selecciona un color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es.js deleted file mode 100644 index ae4688f24..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","es",{clear:"Borrar",highlight:"Muestra",options:"Opciones de colores",selected:"Elegido",title:"Elegir color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/et.js deleted file mode 100644 index 4a51ac6bd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","et",{clear:"Eemalda",highlight:"Näidis",options:"Värvi valikud",selected:"Valitud värv",title:"Värvi valimine"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eu.js deleted file mode 100644 index 4155381da..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","eu",{clear:"Garbitu",highlight:"Nabarmendu",options:"Kolore aukerak",selected:"Hautatutako kolorea",title:"Hautatu kolorea"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fa.js deleted file mode 100644 index 8b0de9dfe..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fa",{clear:"پاک کردن",highlight:"متمایز",options:"گزینه​های رنگ",selected:"رنگ انتخاب شده",title:"انتخاب رنگ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fi.js deleted file mode 100644 index 8a9a1fe30..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fi",{clear:"Poista",highlight:"Korostus",options:"Värin ominaisuudet",selected:"Valittu",title:"Valitse väri"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fo.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fo.js deleted file mode 100644 index 575a9d476..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fo",{clear:"Strika",highlight:"Framheva",options:"Litmøguleikar",selected:"Valdur litur",title:"Vel lit"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr-ca.js deleted file mode 100644 index d321a8395..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fr-ca",{clear:"Effacer",highlight:"Surligner",options:"Options de couleur",selected:"Couleur sélectionnée",title:"Choisir une couleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr.js deleted file mode 100644 index d7699158e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fr",{clear:"Effacer",highlight:"Pointée",options:"Options de couleur",selected:"Couleur choisie",title:"Sélectionner une couleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gl.js deleted file mode 100644 index 13fcd5fb3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","gl",{clear:"Limpar",highlight:"Resaltar",options:"Opcións de cor",selected:"Cor seleccionado",title:"Seleccione unha cor"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gu.js deleted file mode 100644 index 658cb5a35..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","gu",{clear:"સાફ કરવું",highlight:"હાઈઈટ",options:"રંગના વિકલ્પ",selected:"પસંદ કરેલો રંગ",title:"રંગ પસંદ કરો"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/he.js deleted file mode 100644 index c57007169..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","he",{clear:"ניקוי",highlight:"סימון",options:"אפשרויות צבע",selected:"בחירה",title:"בחירת צבע"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hi.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hi.js deleted file mode 100644 index d14f1a84e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hi",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hr.js deleted file mode 100644 index 5a99c466f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hr",{clear:"Očisti",highlight:"Istaknuto",options:"Opcije boje",selected:"Odabrana boja",title:"Odaberi boju"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hu.js deleted file mode 100644 index f905e8f09..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hu",{clear:"Ürítés",highlight:"Nagyítás",options:"Szín opciók",selected:"Kiválasztott",title:"Válasszon színt"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/id.js deleted file mode 100644 index 21ca1ad21..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","id",{clear:"Hapus",highlight:"Sorot",options:"Pilihan Warna",selected:"Warna Dipilih",title:"Pilih Warna"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/is.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/is.js deleted file mode 100644 index 35044395d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","is",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/it.js deleted file mode 100644 index cb5ca8603..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","it",{clear:"cancella",highlight:"Evidenzia",options:"Opzioni colore",selected:"Seleziona il colore",title:"Selezionare il colore"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ja.js deleted file mode 100644 index 01f28518b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ja",{clear:"クリア",highlight:"ハイライト",options:"カラーオプション",selected:"選択された色",title:"色選択"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ka.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ka.js deleted file mode 100644 index d11c48490..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ka",{clear:"გასუფთავება",highlight:"ჩვენება",options:"ფერის პარამეტრები",selected:"არჩეული ფერი",title:"ფერის შეცვლა"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/km.js deleted file mode 100644 index 9be3d0f0a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","km",{clear:"សម្អាត",highlight:"បន្លិច​ពណ៌",options:"ជម្រើស​ពណ៌",selected:"ពណ៌​ដែល​បាន​រើស",title:"រើស​ពណ៌"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ko.js deleted file mode 100644 index bf8921fa4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ko",{clear:"비우기",highlight:"강조",options:"색상 옵션",selected:"선택된 색상",title:"색상 선택"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ku.js deleted file mode 100644 index 5b590758d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ku",{clear:"پاکیکەوە",highlight:"نیشانکردن",options:"هەڵبژاردەی ڕەنگەکان",selected:"ڕەنگی هەڵبژێردراو",title:"هەڵبژاردنی ڕەنگ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lt.js deleted file mode 100644 index 4e3f25064..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","lt",{clear:"Išvalyti",highlight:"Paryškinti",options:"Spalvos nustatymai",selected:"Pasirinkta spalva",title:"Pasirinkite spalvą"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lv.js deleted file mode 100644 index 0e4c7b8b3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","lv",{clear:"Notīrīt",highlight:"Paraugs",options:"Krāsas uzstādījumi",selected:"Izvēlētā krāsa",title:"Izvēlies krāsu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mk.js deleted file mode 100644 index 870e23256..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","mk",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mn.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mn.js deleted file mode 100644 index 0547d82c2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","mn",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ms.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ms.js deleted file mode 100644 index 65c6e8175..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ms",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nb.js deleted file mode 100644 index 85795e834..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","nb",{clear:"Nullstill",highlight:"Fremhevet",options:"Alternativer for farge",selected:"Valgt farge",title:"Velg farge"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nl.js deleted file mode 100644 index c2ed1223a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","nl",{clear:"Wissen",highlight:"Actief",options:"Kleuropties",selected:"Geselecteerde kleur",title:"Selecteer kleur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/no.js deleted file mode 100644 index 7a8530262..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","no",{clear:"Tøm",highlight:"Merk",options:"Alternativer for farge",selected:"Valgt",title:"Velg farge"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/oc.js deleted file mode 100644 index f4b57e439..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","oc",{clear:"Escafar",highlight:"Puntada",options:"Opcions de color",selected:"Color seleccionada",title:"Seleccionar una color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pl.js deleted file mode 100644 index 3be00f6e6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pl",{clear:"Wyczyść",highlight:"Zaznacz",options:"Opcje koloru",selected:"Wybrany",title:"Wybierz kolor"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt-br.js deleted file mode 100644 index 90c14fd74..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pt-br",{clear:"Limpar",highlight:"Grifar",options:"Opções de Cor",selected:"Cor Selecionada",title:"Selecione uma Cor"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt.js deleted file mode 100644 index ac3664582..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pt",{clear:"Limpar",highlight:"Realçar",options:"Opções de cor",selected:"Cor selecionada",title:"Selecionar cor"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ro.js deleted file mode 100644 index 85d83ffb5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ro",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ru.js deleted file mode 100644 index 7fe16d270..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ru",{clear:"Очистить",highlight:"Под курсором",options:"Настройки цвета",selected:"Выбранный цвет",title:"Выберите цвет"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/si.js deleted file mode 100644 index 54bb6924b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","si",{clear:"පැහැදිලි",highlight:"මතුකර පෙන්වන්න",options:"වර්ණ විකල්ප",selected:"තෙරු වර්ණ",title:"වර්ණ තෝරන්න"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sk.js deleted file mode 100644 index 77777c700..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sk",{clear:"Vyčistiť",highlight:"Zvýrazniť",options:"Možnosti farby",selected:"Vybraná farba",title:"Vybrať farbu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sl.js deleted file mode 100644 index 29ac7ccf7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sl",{clear:"Počisti",highlight:"Poudarjeno",options:"Možnosti barve",selected:"Izbrana barva",title:"Izberi barvo"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sq.js deleted file mode 100644 index f739ac4de..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sq",{clear:"Pastro",highlight:"Thekso",options:"Përzgjedhjet e Ngjyrave",selected:"Ngjyra e Përzgjedhur",title:"Përzgjidh një ngjyrë"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr-latn.js deleted file mode 100644 index cd518c981..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sr-latn",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr.js deleted file mode 100644 index 227ed2eaf..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sr",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sv.js deleted file mode 100644 index d527156a1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sv",{clear:"Rensa",highlight:"Markera",options:"Färgalternativ",selected:"Vald färg",title:"Välj färg"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/th.js deleted file mode 100644 index 8f352d9df..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","th",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tr.js deleted file mode 100644 index c416c0613..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","tr",{clear:"Temizle",highlight:"İşaretle",options:"Renk Seçenekleri",selected:"Seçilmiş",title:"Renk seç"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tt.js deleted file mode 100644 index df9d32aef..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","tt",{clear:"Бушату",highlight:"Билгеләү",options:"Төс көйләүләре",selected:"Сайланган төсләр",title:"Төс сайлау"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ug.js deleted file mode 100644 index f89a948cc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ug",{clear:"تازىلا",highlight:"يورۇت",options:"رەڭ تاللانمىسى",selected:"رەڭ تاللاڭ",title:"رەڭ تاللاڭ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/uk.js deleted file mode 100644 index c59d1de83..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","uk",{clear:"Очистити",highlight:"Колір, на який вказує курсор",options:"Опції кольорів",selected:"Обраний колір",title:"Обрати колір"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/vi.js deleted file mode 100644 index dae8623e8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","vi",{clear:"Xóa bỏ",highlight:"Màu chọn",options:"Tùy chọn màu",selected:"Màu đã chọn",title:"Chọn màu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh-cn.js deleted file mode 100644 index 25e3b0008..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","zh-cn",{clear:"清除",highlight:"高亮",options:"颜色选项",selected:"选择颜色",title:"选择颜色"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh.js deleted file mode 100644 index 57868b94a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","zh",{clear:"清除",highlight:"高亮",options:"色彩選項",selected:"選取的色彩",title:"選取色彩"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/colordialog/plugin.js deleted file mode 100644 index b232d2e6f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/colordialog/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.colordialog={requires:"dialog",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",init:function(b){var c=new CKEDITOR.dialogCommand("colordialog");c.editorFocus=!1;b.addCommand("colordialog",c);CKEDITOR.dialog.add("colordialog",this.path+"dialogs/colordialog.js");b.getColorFromDialog=function(c, -f){var d=function(a){this.removeListener("ok",d);this.removeListener("cancel",d);a="ok"==a.name?this.getValueOf("picker","selectedColor"):null;c.call(f,a)},e=function(a){a.on("ok",d);a.on("cancel",d)};b.execCommand("colordialog");if(b._.storedDialogs&&b._.storedDialogs.colordialog)e(b._.storedDialogs.colordialog);else CKEDITOR.on("dialogDefinition",function(a){if("colordialog"==a.data.name){var b=a.data.definition;a.removeListener();b.onLoad=CKEDITOR.tools.override(b.onLoad,function(a){return function(){e(this); -b.onLoad=a;"function"==typeof a&&a.call(this)}})}})}}};CKEDITOR.plugins.add("colordialog",CKEDITOR.plugins.colordialog); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg b/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg deleted file mode 100644 index 9298aefd8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="16px" height="16px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - - <title>cursor_disabled - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor.svg b/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor.svg deleted file mode 100644 index 95951478f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/cursors/cursor.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - cursor - - - - - - - - - - - diff --git a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/copyformatting.png b/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/copyformatting.png deleted file mode 100644 index 11284089f62e01b98ea4f2b456d1bc772b375584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?e4&pIsn~7JJJ#VH`2m=G-aZeY=5R22L!M5EZjsmrzcdeZdKRTo|`@~;HR_5m4 ztZAE+q`G!;HO-u;@sH8j^x9sJ#HR<2)GwIvi@A;aJ4^H5S@+hZ7hFF4X2WOh%JkOhblRvb!$l+qLarLXc?HyY-O;y=;Tld&w!{na(u1|K(+^b%B=VH&4OYML3 zl>)AIN9ax0=xVxIYh2C!pnK-uFZbflrcFz&+?>DeyPT9$!uCd~JKyhxm&VTTcT>J@ zP;s&T-opY8)`I7g)NP8+74D6T4h>zj>in)}6OZJWH8cHKw(2|IS0>LR5|%T47#{dv zZ@zY9+5P=i&)brImrXwt=CQfx!{3yICk2a`RI%(<*Um*czUC Q4XA;^)78&qol`;+0Gi4s)c^nh diff --git a/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png b/vendor/unisharp/laravel-ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png deleted file mode 100644 index c46e5140ae46320062a6aa96f2daa7075a8bdfb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1245 zcmZ{jX;9L67{`C89IIGqlp3oe|4_&d|46eI>x#Ot#u&D!sFeq-DHX1)Njce+SBF}w zmg{(nV}Ytv$bX3}=2W82}nau1ipw>C93qy|Ey1DaRu?hD#YG%>oDL7amlQ4=P4Om42r)yy8?q#G*K*c}RBn)~-LK0g3yXeJ zdOMw&+1wmaxuwniS19^YFgtqPGtpIzLggPY?*kQV_usK&M;OCgxzR9ECCd@t6Ye`{ zqWArRhdMes@_fzrRrxQMsMKD6s4S3hbJ$pSs%Nb7O+sUV?Jlh%U~@APdQ$sX(!V0^ zef?BJcexz5sU!RO&X$IThOPIz5U6fmj2;AY2L8>=+KC8QE1K>W|e+Vhmqhe%?c9OeUPwl1u6r zSJUk??`5uBSDn~%GzBY_N_h(Amk;BUU;iyACX?W{w}D|8f#1<_4E0k3@v%!)mxVckAl24vsD3f2OR_ z$XntvJcr_>n!j{N*Fg7_RnL`IQKVZzN=ZAaG%%5jPp_@H$^68s4T`2ixEt_z{Dcdc_2D8#nn|b5XPT@_T_4nH^(#~it7%&tW_&1CemsJ$ zUn`qFM|%hrs8p)Uj;^o;deR@xB=#C<2Cvz%!!H^0r*O<{XPI?; zCtG-@_;C7cLVmyR61{vd;-9o2mcAy@9(Q=oRGgU@Yx{p6F*9C#h%Zj1r5sDO0R+I5 zueMVt+u?v13YA8s(qMQiOtI+@qTTqP!jGauN77FIe?gjnCKEDITOR.env.version?1===b.button:0===b.button:!1}function k(a,b,e,d){var c=new CKEDITOR.dom.walker(a);if(a=a.startContainer.getAscendant(b,!0)||a.endContainer.getAscendant(b,!0))if(e(a),d)return;for(;a=c.next();)if(a=a.getAscendant(b,!0))if(e(a),d)break}function u(a,b){var e={ul:"ol",ol:"ul"};return-1!==l(b,function(b){return b.element===a||b.element===e[a]})}function q(a){this.styles=null;this.sticky=!1;this.editor=a; -this.filter=new CKEDITOR.filter(a.config.copyFormatting_allowRules);!0===a.config.copyFormatting_allowRules&&(this.filter.disabled=!0);a.config.copyFormatting_disallowRules&&this.filter.disallow(a.config.copyFormatting_disallowRules)}var l=CKEDITOR.tools.indexOf,t=!1;CKEDITOR.plugins.add("copyformatting",{lang:"az,de,en,it,ja,nb,nl,oc,pl,pt-br,ru,sv,tr,zh,zh-cn",icons:"copyformatting",hidpi:!0,init:function(a){var b=CKEDITOR.plugins.copyformatting;b._addScreenReaderContainer();t||(CKEDITOR.document.appendStyleSheet(this.path+ -"styles/copyformatting.css"),t=!0);a.addContentsCss&&a.addContentsCss(this.path+"styles/copyformatting.css");a.copyFormatting=new b.state(a);a.addCommand("copyFormatting",b.commands.copyFormatting);a.addCommand("applyFormatting",b.commands.applyFormatting);a.ui.addButton("CopyFormatting",{label:a.lang.copyformatting.label,command:"copyFormatting",toolbar:"cleanup,0"});a.on("contentDom",function(){var b=a.editable(),d=b.isInline()?b:a.document,c=a.ui.get("CopyFormatting");b.attachListener(d,"mouseup", -function(b){r(b)&&a.execCommand("applyFormatting")});b.attachListener(CKEDITOR.document,"mouseup",function(d){var c=a.getCommand("copyFormatting");r(d)&&c.state===CKEDITOR.TRISTATE_ON&&!b.contains(d.data.getTarget())&&a.execCommand("copyFormatting")});c&&(d=CKEDITOR.document.getById(c._.id),b.attachListener(d,"dblclick",function(){a.execCommand("copyFormatting",{sticky:!0})}),b.attachListener(d,"mouseup",function(a){a.data.stopPropagation()}))});a.config.copyFormatting_keystrokeCopy&&a.setKeystroke(a.config.copyFormatting_keystrokeCopy, -"copyFormatting");a.on("key",function(b){var d=a.getCommand("copyFormatting");b=b.data.domEvent;b.getKeystroke&&27===b.getKeystroke()&&d.state===CKEDITOR.TRISTATE_ON&&a.execCommand("copyFormatting")});a.copyFormatting.on("extractFormatting",function(e){var d=e.data.element;if(d.contains(a.editable())||d.equals(a.editable()))return e.cancel();d=b._convertElementToStyleDef(d);if(!a.copyFormatting.filter.check(new CKEDITOR.style(d),!0,!0))return e.cancel();e.data.styleDef=d});a.copyFormatting.on("applyFormatting", -function(e){if(!e.data.preventFormatStripping){var d=e.data.range,c=b._extractStylesFromRange(a,d),f=b._determineContext(d),g,h;if(a.copyFormatting._isContextAllowed(f))for(h=0;h <\/span>/g,""),a.replace(/<.*?>/g,"")):a.getText()}function d(a, -c){var f=a,g=/\s/g,h="p br ol ul li td th div caption body".split(" "),m=!1,k=!1,p,n;do{for(p=b(f,c);!p&&f.getParent();){f=f.getParent();if(-1!==l(h,f.getName())){k=m=!0;break}p=b(f,c)}if(p&&p.getName&&-1!==l(h,p.getName())){m=!0;break}f=p}while(f&&f.getStyle&&("none"==f.getStyle("display")||!f.getText()));for(f||(f=a);f.type!==CKEDITOR.NODE_TEXT;)f=!m||c||k?f.getChild(0):f.getChild(f.getChildCount()-1);for(h=e(f);null!=(k=g.exec(h))&&(n=k.index,c););if("number"!==typeof n&&!m)return d(f,c);if(m)c? -n=0:(g=/([\.\b]*$)/,n=(k=g.exec(h))?k.index:h.length);else if(c&&(n+=1,n>h.length))return d(f);return{node:f,offset:n}}var c=/\b\w+\b/ig,f,g,h,m,k;h=m=k=a.startContainer;for(f=e(h);null!=(g=c.exec(f));)if(g.index+g[0].length>=a.startOffset)return a=g.index,c=g.index+g[0].length,0===g.index&&(g=d(h,!0),m=g.node,a=g.offset),c>=f.length&&(f=d(h),k=f.node,c=f.offset),{startNode:m,startOffset:a,endNode:k,endOffset:c};return null},_filterStyles:function(a){var b=CKEDITOR.tools.isEmpty,e=[],d,c;for(c=0;c< -a.length;c++)d=a[c]._.definition,-1!==CKEDITOR.tools.indexOf(CKEDITOR.plugins.copyformatting.inlineBoundary,d.element)&&(d.element=a[c].element="span"),"span"===d.element&&b(d.attributes)&&b(d.styles)||e.push(a[c]);return e},_determineContext:function(a){function b(b){var d=new CKEDITOR.dom.walker(a),c;if(a.startContainer.getAscendant(b,!0)||a.endContainer.getAscendant(b,!0))return!0;for(;c=d.next();)if(c.getAscendant(b,!0))return!0}return b({ul:1,ol:1})?"list":b("table")?"table":"text"},_applyStylesToTextContext:function(a, -b,e){var d=CKEDITOR.plugins.copyformatting,c=d.excludedAttributesFromInlineTransform,f,g;CKEDITOR.env.webkit&&!CKEDITOR.env.chrome&&a.getSelection().selectRanges([b]);for(f=0;f` which changes the cursor using inlined styles. */ -.cke_copyformatting_active, -.cke_copyformatting_active.cke_editable, -.cke_copyformatting_active .cke_editable, -.cke_copyformatting_active a, -.cke_copyformatting_active table, -.cke_copyformatting_active div[data-cke-temp], -.cke_copyformatting_tableresize_cursor div[data-cke-temp] { - cursor: url(../cursors/cursor.svg) 12 1, auto !important; -} - -.cke_screen_reader_only { - position: absolute; - clip: rect(1px, 1px, 1px, 1px); - padding: 0; - border: 0; - height: 1px; - width: 1px; - overflow: hidden; -} diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/_translationstatus.txt b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/_translationstatus.txt deleted file mode 100644 index 6ff1cee39..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/_translationstatus.txt +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license - -bg.js Found: 5 Missing: 0 -cs.js Found: 5 Missing: 0 -cy.js Found: 5 Missing: 0 -da.js Found: 5 Missing: 0 -de.js Found: 5 Missing: 0 -el.js Found: 5 Missing: 0 -eo.js Found: 5 Missing: 0 -et.js Found: 5 Missing: 0 -fa.js Found: 5 Missing: 0 -fi.js Found: 5 Missing: 0 -fr.js Found: 5 Missing: 0 -gu.js Found: 5 Missing: 0 -he.js Found: 5 Missing: 0 -hr.js Found: 5 Missing: 0 -it.js Found: 5 Missing: 0 -nb.js Found: 5 Missing: 0 -nl.js Found: 5 Missing: 0 -no.js Found: 5 Missing: 0 -pl.js Found: 5 Missing: 0 -tr.js Found: 5 Missing: 0 -ug.js Found: 5 Missing: 0 -uk.js Found: 5 Missing: 0 -vi.js Found: 5 Missing: 0 -zh-cn.js Found: 5 Missing: 0 diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ar.js deleted file mode 100644 index 883c34634..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ar",{title:"معلومات العنصر",dialogName:"إسم نافذة الحوار",tabName:"إسم التبويب",elementId:"إسم العنصر",elementType:"نوع العنصر"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/az.js deleted file mode 100644 index 13f8b0b8b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","az",{title:"Element haqqında məlumat",dialogName:"Açılan pəncərənin adı",tabName:"Vərəqin adı",elementId:"Elementin İD",elementType:"Elementin növü"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/bg.js deleted file mode 100644 index 3290eea44..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","bg",{title:"Информация за елемента",dialogName:"Име на диалоговия прозорец",tabName:"Име на таб",elementId:"ID на елемента",elementType:"Тип на елемента"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ca.js deleted file mode 100644 index 532416782..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ca",{title:"Informació de l'element",dialogName:"Nom de la finestra de quadre de diàleg",tabName:"Nom de la pestanya",elementId:"ID de l'element",elementType:"Tipus d'element"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cs.js deleted file mode 100644 index 52698baf6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","cs",{title:"Informace o prvku",dialogName:"Název dialogového okna",tabName:"Název karty",elementId:"ID prvku",elementType:"Typ prvku"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cy.js deleted file mode 100644 index 30598f9b1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","cy",{title:"Gwybodaeth am yr Elfen",dialogName:"Enw ffenestr y deialog",tabName:"Enw'r tab",elementId:"ID yr Elfen",elementType:"Math yr elfen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/da.js deleted file mode 100644 index afd80bc45..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","da",{title:"Information på elementet",dialogName:"Dialogboks",tabName:"Tab beskrivelse",elementId:"ID på element",elementType:"Type af element"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de-ch.js deleted file mode 100644 index 2580a281e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","de-ch",{title:"Elementinformation",dialogName:"Dialogfenstername",tabName:"Reitername",elementId:"Elementkennung",elementType:"Elementtyp"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de.js deleted file mode 100644 index 6addff495..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","de",{title:"Elementinformation",dialogName:"Dialogfenstername",tabName:"Reitername",elementId:"Elementkennung",elementType:"Elementtyp"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/el.js deleted file mode 100644 index f223fede3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","el",{title:"Πληροφορίες Στοιχείου",dialogName:"Όνομα παραθύρου διαλόγου",tabName:"Όνομα καρτέλας",elementId:"Αναγνωριστικό Στοιχείου",elementType:"Τύπος στοιχείου"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en-gb.js deleted file mode 100644 index 27bc3b979..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","en-gb",{title:"Element Information",dialogName:"Dialogue window name",tabName:"Tab name",elementId:"Element ID",elementType:"Element type"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en.js deleted file mode 100644 index 08b24cfe4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","en",{title:"Element Information",dialogName:"Dialog window name",tabName:"Tab name",elementId:"Element ID",elementType:"Element type"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eo.js deleted file mode 100644 index ff1052784..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","eo",{title:"Informo pri la elemento",dialogName:"Nomo de la dialogfenestro",tabName:"Langetnomo",elementId:"ID de la elemento",elementType:"Tipo de la elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es-mx.js deleted file mode 100644 index 1c6a33f62..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","es-mx",{title:"Información del elemento",dialogName:"Nombre de la ventana de diálogo",tabName:"Nombre de la pestaña",elementId:"ID del elemento",elementType:"Tipo de elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es.js deleted file mode 100644 index 7d396953b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","es",{title:"Información del Elemento",dialogName:"Nombre de la ventana de diálogo",tabName:"Nombre de la pestaña",elementId:"ID del Elemento",elementType:"Tipo del elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/et.js deleted file mode 100644 index a10093d54..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","et",{title:"Elemendi andmed",dialogName:"Dialoogiakna nimi",tabName:"Saki nimi",elementId:"Elemendi ID",elementType:"Elemendi liik"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eu.js deleted file mode 100644 index d247ba176..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","eu",{title:"Elementuaren informazioa",dialogName:"Elkarrizketa-koadroaren izena",tabName:"Fitxaren izena",elementId:"Elementuaren IDa",elementType:"Elementu mota"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fa.js deleted file mode 100644 index 6af7e36c8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","fa",{title:"اطلاعات عنصر",dialogName:"نام پنجره محاوره‌ای",tabName:"نام برگه",elementId:"ID عنصر",elementType:"نوع عنصر"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fi.js deleted file mode 100644 index ae0e25093..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","fi",{title:"Elementin tiedot",dialogName:"Dialogi-ikkunan nimi",tabName:"Välilehden nimi",elementId:"Elementin ID",elementType:"Elementin tyyppi"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr-ca.js deleted file mode 100644 index beee27998..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","fr-ca",{title:"Information de l'élément",dialogName:"Nom de la fenêtre",tabName:"Nom de l'onglet",elementId:"ID de l'élément",elementType:"Type de l'élément"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr.js deleted file mode 100644 index e94d5d0ce..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","fr",{title:"Informations sur l'élément",dialogName:"Nom de la boîte de dialogue",tabName:"Nom de l'onglet",elementId:"ID de l'élément",elementType:"Type de l'élément"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gl.js deleted file mode 100644 index 37be0a124..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","gl",{title:"Información do elemento",dialogName:"Nome da xanela de diálogo",tabName:"Nome da lapela",elementId:"ID do elemento",elementType:"Tipo do elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gu.js deleted file mode 100644 index 8103d4a25..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/gu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","gu",{title:"પ્રાથમિક માહિતી",dialogName:"વિન્ડોનું નામ",tabName:"ટેબનું નામ",elementId:"પ્રાથમિક આઈડી",elementType:"પ્રાથમિક પ્રકાર"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/he.js deleted file mode 100644 index 308163d3f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","he",{title:"מידע על האלמנט",dialogName:"שם הדיאלוג",tabName:"שם הטאב",elementId:"ID של האלמנט",elementType:"סוג האלמנט"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hr.js deleted file mode 100644 index 39a8276f6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","hr",{title:"Informacije elementa",dialogName:"Naziv prozora za dijalog",tabName:"Naziv kartice",elementId:"ID elementa",elementType:"Vrsta elementa"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hu.js deleted file mode 100644 index 04d394156..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","hu",{title:"Elem információ",dialogName:"Párbeszédablak neve",tabName:"Fül neve",elementId:"Elem ID",elementType:"Elem típusa"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/id.js deleted file mode 100644 index 63233c13e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","id",{title:"Informasi Elemen",dialogName:"Nama jendela dialog",tabName:"Nama tab",elementId:"ID Elemen",elementType:"Tipe elemen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/it.js deleted file mode 100644 index a3f536dbe..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","it",{title:"Informazioni elemento",dialogName:"Nome finestra di dialogo",tabName:"Nome Tab",elementId:"ID Elemento",elementType:"Tipo elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ja.js deleted file mode 100644 index 21293ffc4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ja",{title:"エレメント情報",dialogName:"ダイアログウィンドウ名",tabName:"タブ名",elementId:"エレメントID",elementType:"要素タイプ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/km.js deleted file mode 100644 index 652f668b3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","km",{title:"ព័ត៌មាន​នៃ​ធាតុ",dialogName:"ឈ្មោះ​ប្រអប់​វីនដូ",tabName:"ឈ្មោះ​ផ្ទាំង",elementId:"អត្តលេខ​ធាតុ",elementType:"ប្រភេទ​ធាតុ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ko.js deleted file mode 100644 index b9a6dc799..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ko",{title:"구성 요소 정보",dialogName:"다이얼로그 윈도우 이름",tabName:"탭 이름",elementId:"요소 ID",elementType:"요소 형식"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ku.js deleted file mode 100644 index 483f297be..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ku",{title:"زانیاری توخم",dialogName:"ناوی پەنجەرەی دیالۆگ",tabName:"ناوی بازدەر تاب",elementId:"ناسنامەی توخم",elementType:"جۆری توخم"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lt.js deleted file mode 100644 index b10ccba4c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","lt",{title:"Elemento informacija",dialogName:"Dialogo lango pavadinimas",tabName:"Auselės pavadinimas",elementId:"Elemento ID",elementType:"Elemento tipas"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lv.js deleted file mode 100644 index eac2cfa11..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","lv",{title:"Elementa informācija",dialogName:"Dialoga loga nosaukums",tabName:"Cilnes nosaukums",elementId:"Elementa ID",elementType:"Elementa tips"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nb.js deleted file mode 100644 index 8e110c647..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","nb",{title:"Elementinformasjon",dialogName:"Navn på dialogvindu",tabName:"Navn på fane",elementId:"Element-ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nl.js deleted file mode 100644 index 32842850c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","nl",{title:"Elementinformatie",dialogName:"Naam dialoogvenster",tabName:"Tabnaam",elementId:"Element ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/no.js deleted file mode 100644 index eeb6245a1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","no",{title:"Elementinformasjon",dialogName:"Navn på dialogvindu",tabName:"Navn på fane",elementId:"Element-ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/oc.js deleted file mode 100644 index ca76940f3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","oc",{title:"Informacions sus l'element",dialogName:"Nom de la bóstia de dialòg",tabName:"Nom de l'onglet",elementId:"ID de l'element",elementType:"Element tipe"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pl.js deleted file mode 100644 index 32cc13916..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","pl",{title:"Informacja o elemencie",dialogName:"Nazwa okna dialogowego",tabName:"Nazwa zakładki",elementId:"ID elementu",elementType:"Typ elementu"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt-br.js deleted file mode 100644 index 6f052ce4a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","pt-br",{title:"Informação do Elemento",dialogName:"Nome da janela de diálogo",tabName:"Nome da aba",elementId:"ID do Elemento",elementType:"Tipo do elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt.js deleted file mode 100644 index cb902040e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","pt",{title:"Informação do elemento",dialogName:"Nome da janela de diálogo",tabName:"Nome do separador",elementId:"ID do elemento",elementType:"Tipo de elemento"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ro.js deleted file mode 100644 index 41da71b9e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ro",{title:"Informația elementului",dialogName:"Numele ferestrei de dialog",tabName:"Denumire de tab",elementId:"ID Element",elementType:"Tipul elementului"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ru.js deleted file mode 100644 index 4a23794ee..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ru",{title:"Информация об элементе",dialogName:"Имя окна диалога",tabName:"Имя вкладки",elementId:"ID элемента",elementType:"Тип элемента"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/si.js deleted file mode 100644 index 31b112a0d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","si",{title:"මුලද්‍රව්‍ය ",dialogName:"දෙබස් කවුළුවේ නම",tabName:"තීරුවේ නම",elementId:"මුලද්‍රව්‍ය කේතය",elementType:"මුලද්‍රව්‍ය වර්ගය"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sk.js deleted file mode 100644 index f01d24c2f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","sk",{title:"Informácie o prvku",dialogName:"Názov okna dialógu",tabName:"Názov záložky",elementId:"ID prvku",elementType:"Typ prvku"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sl.js deleted file mode 100644 index 8278f8de7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","sl",{title:"Podatki elementa",dialogName:"Ime pogovornega okna",tabName:"Ime zavihka",elementId:"ID elementa",elementType:"Vrsta elementa"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sq.js deleted file mode 100644 index 2d0741167..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","sq",{title:"Të dhënat e elementit",dialogName:"Emri i dritares së dialogut",tabName:"Emri i fletës",elementId:"ID e elementit",elementType:"Lloji i elementit"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sv.js deleted file mode 100644 index 21ab67ca4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","sv",{title:"Elementinformation",dialogName:"Dialogrutans namn",tabName:"Fliknamn",elementId:"Element-ID",elementType:"Element-typ"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tr.js deleted file mode 100644 index f0713a3c8..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","tr",{title:"Eleman Bilgisi",dialogName:"İletişim pencere ismi",tabName:"Sekme adı",elementId:"Eleman ID",elementType:"Eleman türü"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tt.js deleted file mode 100644 index 315ad8130..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","tt",{title:"Элемент тасвирламасы",dialogName:"Диалог тәрәзәсе исеме",tabName:"Өстәмә бит исеме",elementId:"Элемент идентификаторы",elementType:"Элемент төре"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ug.js deleted file mode 100644 index 9d78b8d95..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","ug",{title:"ئېلېمېنت ئۇچۇرى",dialogName:"سۆزلەشكۈ كۆزنەك ئاتى",tabName:"Tab ئاتى",elementId:"ئېلېمېنت كىملىكى",elementType:"ئېلېمېنت تىپى"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/uk.js deleted file mode 100644 index 538d03518..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","uk",{title:"Відомості про Елемент",dialogName:"Заголовок діалогового вікна",tabName:"Назва вкладки",elementId:"Ідентифікатор Елемента",elementType:"Тип Елемента"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/vi.js deleted file mode 100644 index a498aea3c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","vi",{title:"Thông tin thành ph",dialogName:"Tên hộp tho",tabName:"Tên th",elementId:"Mã thành ph",elementType:"Loại thành ph"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh-cn.js deleted file mode 100644 index a21e6ca44..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","zh-cn",{title:"元素信息",dialogName:"对话框窗口名称",tabName:"选项卡名称",elementId:"元素 ID",elementType:"元素类型"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh.js deleted file mode 100644 index 980f64a53..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang("devtools","zh",{title:"元件資訊",dialogName:"對話視窗名稱",tabName:"標籤名稱",elementId:"元件 ID",elementType:"元件類型"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/devtools/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/devtools/plugin.js deleted file mode 100644 index e45d63c54..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/devtools/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.add("devtools",{lang:"ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,gu,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn",init:function(k){k._.showDialogDefinitionTooltips=1},onLoad:function(){CKEDITOR.document.appendStyleText(CKEDITOR.config.devtools_styles||"#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }#cke_tooltip ul { padding: 0pt; list-style-type: none; }")}}); -(function(){function k(a,c,b,f){a=a.lang.devtools;var l='\x3ca href\x3d"http://docs.ckeditor.com/#!/api/CKEDITOR.dialog.definition.'+(b?"text"==b.type?"textInput":b.type:"content")+'" target\x3d"_blank" rel\x3d"noopener noreferrer"\x3e'+(b?b.type:"content")+"\x3c/a\x3e";c="\x3ch2\x3e"+a.title+"\x3c/h2\x3e\x3cul\x3e\x3cli\x3e\x3cstrong\x3e"+a.dialogName+"\x3c/strong\x3e : "+c.getName()+"\x3c/li\x3e\x3cli\x3e\x3cstrong\x3e"+a.tabName+"\x3c/strong\x3e : "+f+"\x3c/li\x3e";b&&(c+="\x3cli\x3e\x3cstrong\x3e"+ -a.elementId+"\x3c/strong\x3e : "+b.id+"\x3c/li\x3e");c+="\x3cli\x3e\x3cstrong\x3e"+a.elementType+"\x3c/strong\x3e : "+l+"\x3c/li\x3e";return c+"\x3c/ul\x3e"}function m(d,c,b,f,l,g){var e=c.getDocumentPosition(),h={"z-index":CKEDITOR.dialog._.currentZIndex+10,top:e.y+c.getSize("height")+"px"};a.setHtml(d(b,f,l,g));a.show();"rtl"==b.lang.dir?(d=CKEDITOR.document.getWindow().getViewPaneSize(),h.right=d.width-e.x-c.getSize("width")+"px"):h.left=e.x+"px";a.setStyles(h)}var a;CKEDITOR.on("reset",function(){a&& -a.remove();a=null});CKEDITOR.on("dialogDefinition",function(d){var c=d.editor;if(c._.showDialogDefinitionTooltips){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv id\x3d"cke_tooltip" tabindex\x3d"-1" style\x3d"position: absolute"\x3e\x3c/div\x3e',CKEDITOR.document),a.hide(),a.on("mouseover",function(){this.show()}),a.on("mouseout",function(){this.hide()}),a.appendTo(CKEDITOR.document.getBody()));var b=d.data.definition.dialog,f=c.config.devtools_textCallback||k;b.on("load",function(){for(var d= -b.parts.tabs.getChildren(),g,e=0,h=d.count();e!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4W)8d9K9cG}U9(^$IWVR?qjgTG^Yu#p=YSoV^-d;qU)$Ut-$u zv7#nDZA$9TjI>$rPI*pNFSnYzc9Di%!}+K=%U-&L)*BnUEe_NT=@Il4X7+3m&{Gvm z-m~JaGlx0D-ne}E1-IWa*?1f})3OXP zLwnjcCZ0_?yI18|W#wZP(^O90F=YP3F!6cGiH&U+?g4{QwZt`| zBqgyV)hf9t6-Y4{85o-B8kp-ET80=JTNxWznHXss7+Dz@NK7cNK+%w!pOTqYiCaVF T+4Dz$8W=oX{an^LB{Ts57+ub0 diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/icons/hidpi/creatediv.png b/vendor/unisharp/laravel-ckeditor/plugins/div/icons/hidpi/creatediv.png deleted file mode 100644 index eb63fe370bc1cbbd33d728e15fdffb8f867f4ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1678 zcmZ`(Yg7{G7X4%-EX8!Cg@z5|`*AanribGgCiuWGH8ax?3B{{era_IEk427`1|Nml zK#rOk_E1t&QgBSo!c?@mJ}4#9HQMC0%o3CsGcWzTKkho`?7h}LYya72t#c_XG!VYY zb`t;q9vp;^Ffi)tm~1fMSvFg1Amb!Ik{S5x8$Mj1u1MV2?~FKZ>B#;d-+v; z%@&u?Y3gQ6BOuUM%d&nXx}i1P&1;mx^~2Nu(uZ-}k4%%vbiIpx6frwY`(|GHcPPrH zYHQECcd6uA@E5>YhkIeU|BQ8Gl?&IKm5&gbdlB=!5N=&6Y2_3IcfIb+Hj(5@?1jdL zhL>CP3dJEFx4_0itN7e1SwZJ*$m<31g_%icM9>)sIuKuFL+e&hyfjF#l%306+D$4M zSYKLNnt`-Wq@D{vSoqstx310U%8l(lm6~d$W4gz#-5iYnYbK+vWp-{?qDIF-0c;5j zbpM*(rW$$^TIFlke&{%ZB`@}*@546I?>hzNV#+%ln*$!?adCJlwz@(XUO)a~T%v@4 zR%PUgpbmB1vlrpPd~Q)w^Yvpr7YBY8YHmXEP$mIdfz9z9W)o5F)_W}pNC*zucOcla zkaSRokB?G)BEtP=AiP8UHV#JICIKH?h_F=@vsQE8fRMMjlauEWwT}cp=^70 zmNT_$YS%T<)8yZL&ut%k+VbGRIiV1PFso!pV*2jCjA5<4e}c0oj;DP8E2aGmHSC7Z z5K=_D3wS(U$7;h^I%5Gt4`_TId)BTn5$9HRzA>QoBX?h1bhK;KA&+vEZ5veh3QqTh z#M^*JXynND@_e~qJIH}G2_5^>ggs7TNr>K#vA~#k>49g$z~IXMOoyunpwo=KpPp{r zSFkG3TVVHkO=N*#Z#YzOp(*Sam{{_`XP3?&Z_@kWtc$SAwdou3)5$B2Du=+^=;3vV zGK}cw2Bn$F)bGDN`6py>nP=8sI%3^|pB(bOg^_CBM>8*(OeD*6+3_XT2N`fND>S)H z1-0zat)1|sh{kHEh#gKfE*GY9a~KR$MIpUqqiF1MqkaDXe16sU5gKn{taq2GJ+DR} z3IC>~BSXr%H9o*_1n}W)Jo=MRm>WE*T_uVjqA?oG92x&i6UUnP=#w^gbeU}@iGjb) zuz9$+`6#~exxW=5137$+DEjuL@ku&9TzgHjXHlS>Y-=IPgcVN5xO1P{ccScn(r7gN zas4sZlA7B?iY=TRGy=&l8}x%t%ifN~biB*l(ICNs%6>>yvog-1M&+;dfR@#{6=KkG zT-3;am=*=pa^c{8FPd3@vMcV#XIT+)WsIvR%J@daJV`W`X;gnz7J%PnwIy2GBeYSe zRNNX@XxO#d-J~OvGcjv-X7iP{3+GnhZ8Z&&H-=6~E!0ObI(;5^1Q)y{acb>nc zHk0?-7V+-=BbZ-GxGYB)`!&fGtD?SqYI|Br%DnG44lHTNG7sF_bXzPIztU=%vvH#W zeFIHt$a9n&#CJs1)XN1ql;%Ms#|cA^yb<`T^sVTy5oFDX=&;A^n%6JB(lrH z#VY2ukwu-QaZicj^ZmK2gRd`DR8%}@Sb?FHC0T8d?-S+#)wP!jz)Prdk6bg z)dC#0FGUigMray7g^acu!erBmQ*OKda>TaHsGeO>05(T{wiySoh! z+lfhtW+qUXiQcq~L<0dYG-l6E3}z?VD-whC#$vtEXb&{TfX|H@7XHU@DlH+Ip85X` TbtkOC4F(WQ2*uw!7|;1HkVyl| diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/af.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/af.js deleted file mode 100644 index d3d3fc9d7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","af",{IdInputLabel:"Id",advisoryTitleInputLabel:"Aanbevole Titel",cssClassInputLabel:"CSS klasse",edit:"Wysig Div",inlineStyleInputLabel:"Inlyn Styl",langDirLTRLabel:"Links na regs (LTR)",langDirLabel:"Skryfrigting",langDirRTLLabel:"Regs na links (RTL)",languageCodeInputLabel:" Taalkode",remove:"Verwyder Div",styleSelectLabel:"Styl",title:"Skep Div houer",toolbar:"Skep Div houer"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ar.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ar.js deleted file mode 100644 index 21c63f7e1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ar",{IdInputLabel:"هوية",advisoryTitleInputLabel:"عنوان التقرير",cssClassInputLabel:"فئات التنسيق",edit:"تحرير Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"اليسار لليمين (LTR)",langDirLabel:"إتجاه النص",langDirRTLLabel:"اليمين لليسار (RTL)",languageCodeInputLabel:"رمز اللغة",remove:"إزالة Div",styleSelectLabel:"نمط",title:"إحداث Div Container",toolbar:"إحداث Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/az.js deleted file mode 100644 index 61502ab7f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","az",{IdInputLabel:"Id",advisoryTitleInputLabel:"Məsləhətli başlıq",cssClassInputLabel:"Üslub klassları",edit:"DİV eıementini redaktə et",inlineStyleInputLabel:"Sözlərin üslubları",langDirLTRLabel:"Soldan sağa (LTR)",langDirLabel:"Yaziların istiqaməti",langDirRTLLabel:"Sağdan sola (RTL)",languageCodeInputLabel:"Dilin kodu",remove:"DİV elementini sil",styleSelectLabel:"Üslub",title:"DİV ilə əhatələməni yarat",toolbar:"DİV ilə əhatələməni yarat"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bg.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bg.js deleted file mode 100644 index 7d39047ed..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","bg",{IdInputLabel:"ID",advisoryTitleInputLabel:"Препоръчително заглавие",cssClassInputLabel:"Класове за CSS",edit:"Промяна на Div",inlineStyleInputLabel:"В редица",langDirLTRLabel:"Ляво на Дясно (ЛнД)",langDirLabel:"Посока на езика",langDirRTLLabel:"Дясно на Ляво (ДнЛ)",languageCodeInputLabel:" Код на езика",remove:"Премахване на Div",styleSelectLabel:"Стил",title:"Създай Div блок",toolbar:"Създаване на Div контейнер"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bn.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bn.js deleted file mode 100644 index ae62f7d57..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","bn",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bs.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bs.js deleted file mode 100644 index 259583de7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","bs",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory title",cssClassInputLabel:"Klase CSS stilova",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"S lijeva na desno (LTR)",langDirLabel:"Smjer pisanja",langDirRTLLabel:"S desna na lijevo (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Stil",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ca.js deleted file mode 100644 index 118a6816c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ca",{IdInputLabel:"Id",advisoryTitleInputLabel:"Títol de guia",cssClassInputLabel:"Classes de la fulla d'estils",edit:"Edita la Capa",inlineStyleInputLabel:"Estil en línia",langDirLTRLabel:"D'esquerra a dreta (LTR)",langDirLabel:"Direcció de l'idioma",langDirRTLLabel:"De dreta a esquerra (RTL)",languageCodeInputLabel:" Codi d'idioma",remove:"Elimina la Capa",styleSelectLabel:"Estil",title:"Crea una Capa Contenidora",toolbar:"Crea una Capa Contenidora"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cs.js deleted file mode 100644 index 1239c576f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","cs",{IdInputLabel:"Id",advisoryTitleInputLabel:"Nápovědní titulek",cssClassInputLabel:"Třídy stylů",edit:"Změnit Div",inlineStyleInputLabel:"Vnitřní styly",langDirLTRLabel:"Zleva doprava (LTR)",langDirLabel:"Směr jazyka",langDirRTLLabel:"Zprava doleva (RTL)",languageCodeInputLabel:" Kód jazyka",remove:"Odstranit Div",styleSelectLabel:"Styly",title:"Vytvořit Div kontejner",toolbar:"Vytvořit Div kontejner"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cy.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cy.js deleted file mode 100644 index aed7b7730..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","cy",{IdInputLabel:"Id",advisoryTitleInputLabel:"Teitl Cynghorol",cssClassInputLabel:"Dosbarthiadau Ffeil Arddull",edit:"Golygu Div",inlineStyleInputLabel:"Arddull Mewn Llinell",langDirLTRLabel:"Chwith i'r Dde (LTR)",langDirLabel:"Cyfeiriad yr Iaith",langDirRTLLabel:"Dde i'r Chwith (RTL)",languageCodeInputLabel:" Cod Iaith",remove:"Tynnu Div",styleSelectLabel:"Arddull",title:"Creu Cynhwysydd Div",toolbar:"Creu Cynhwysydd Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/da.js deleted file mode 100644 index 38e5920d5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","da",{IdInputLabel:"Id",advisoryTitleInputLabel:"Vejledende titel",cssClassInputLabel:"Typografiark",edit:"Rediger Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Venstre til højre (LTR)",langDirLabel:"Sprogretning",langDirRTLLabel:"Højre til venstre (RTL)",languageCodeInputLabel:" Sprogkode",remove:"Slet Div",styleSelectLabel:"Style",title:"Opret Div Container",toolbar:"Opret Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de-ch.js deleted file mode 100644 index 923e7b10d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","de-ch",{IdInputLabel:"Kennung",advisoryTitleInputLabel:"Tooltip",cssClassInputLabel:"Formatvorlagenklasse",edit:"Div bearbeiten",inlineStyleInputLabel:"Inline Stil",langDirLTRLabel:"Links nach Rechs (LTR)",langDirLabel:"Sprachrichtung",langDirRTLLabel:"Rechs nach Links (RTL)",languageCodeInputLabel:"Sprachcode",remove:"Div entfernen",styleSelectLabel:"Stil",title:"Div Container erzeugen",toolbar:"Div Container erzeugen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de.js deleted file mode 100644 index 8b90221ad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","de",{IdInputLabel:"Kennung",advisoryTitleInputLabel:"Tooltip",cssClassInputLabel:"Formatvorlagenklasse",edit:"Div bearbeiten",inlineStyleInputLabel:"Inline Stil",langDirLTRLabel:"Links nach Rechs (LTR)",langDirLabel:"Sprachrichtung",langDirRTLLabel:"Rechs nach Links (RTL)",languageCodeInputLabel:"Sprachcode",remove:"Div entfernen",styleSelectLabel:"Stil",title:"Div Container erzeugen",toolbar:"Div Container erzeugen"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/el.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/el.js deleted file mode 100644 index d65661c2e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","el",{IdInputLabel:"Id",advisoryTitleInputLabel:"Ενδεικτικός Τίτλος",cssClassInputLabel:"Κλάσεις Φύλλων Στυλ",edit:"Επεξεργασία Div",inlineStyleInputLabel:"Στυλ Εν Σειρά",langDirLTRLabel:"Αριστερά προς Δεξιά (LTR)",langDirLabel:"Κατεύθυνση Κειμένου",langDirRTLLabel:"Δεξιά προς Αριστερά (RTL)",languageCodeInputLabel:"Κωδικός Γλώσσας",remove:"Διαγραφή Div",styleSelectLabel:"Μορφή",title:"Δημιουργία Div",toolbar:"Δημιουργία Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-au.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-au.js deleted file mode 100644 index eb8810315..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","en-au",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-ca.js deleted file mode 100644 index 136b99f1c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","en-ca",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-gb.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-gb.js deleted file mode 100644 index 04d4745dc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","en-gb",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en.js deleted file mode 100644 index 03fc7d6e4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","en",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eo.js deleted file mode 100644 index e587cac4e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","eo",{IdInputLabel:"Id",advisoryTitleInputLabel:"Priskriba Titolo",cssClassInputLabel:"Stilfolioklasoj",edit:"Redakti Div",inlineStyleInputLabel:"Enlinia stilo",langDirLTRLabel:"Maldekstre dekstren (angle LTR)",langDirLabel:"Skribdirekto",langDirRTLLabel:"Dekstre maldekstren (angle RTL)",languageCodeInputLabel:" Lingvokodo",remove:"Forigi Div",styleSelectLabel:"Stilo",title:"Krei DIV ujon",toolbar:"Krei DIV ujon"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es-mx.js deleted file mode 100644 index 0d90bedbe..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","es-mx",{IdInputLabel:"Id",advisoryTitleInputLabel:"Título del anuncio",cssClassInputLabel:"Clases de la hoja de estilos",edit:"Editar Div",inlineStyleInputLabel:"Estilo de línea",langDirLTRLabel:"Izquierda a Derecha (LTR)",langDirLabel:"Dirección de idiomas",langDirRTLLabel:"Derecha a Izquierda (RTL)",languageCodeInputLabel:"Código del idioma",remove:"Remover Div",styleSelectLabel:"Estilo",title:"Crear contenedor Div",toolbar:"Crear contenedor Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es.js deleted file mode 100644 index 78732f148..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","es",{IdInputLabel:"Id",advisoryTitleInputLabel:"Título",cssClassInputLabel:"Clase de hoja de estilos",edit:"Editar Div",inlineStyleInputLabel:"Estilo",langDirLTRLabel:"Izquierda a Derecha (LTR)",langDirLabel:"Orientación",langDirRTLLabel:"Derecha a Izquierda (RTL)",languageCodeInputLabel:" Codigo de idioma",remove:"Quitar Div",styleSelectLabel:"Estilo",title:"Crear contenedor DIV",toolbar:"Crear contenedor DIV"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/et.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/et.js deleted file mode 100644 index 690848d63..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","et",{IdInputLabel:"ID",advisoryTitleInputLabel:"Soovitatav pealkiri",cssClassInputLabel:"Stiililehe klassid",edit:"Muuda Div",inlineStyleInputLabel:"Reasisene stiil",langDirLTRLabel:"Vasakult paremale (LTR)",langDirLabel:"Keele suund",langDirRTLLabel:"Paremalt vasakule (RTL)",languageCodeInputLabel:" Keelekood",remove:"Eemalda Div",styleSelectLabel:"Stiil",title:"Div-konteineri loomine",toolbar:"Div-konteineri loomine"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eu.js deleted file mode 100644 index 780527d35..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","eu",{IdInputLabel:"Id",advisoryTitleInputLabel:"Aholkatutako izenburua",cssClassInputLabel:"Estilo-orriko klaseak",edit:"Editatu Div-a",inlineStyleInputLabel:"Lineako estiloa",langDirLTRLabel:"Ezkerretik eskuinera (LTR)",langDirLabel:"Hizkuntzaren norabidea",langDirRTLLabel:"Eskuinetik ezkerrera (RTL)",languageCodeInputLabel:"Hizkuntzaren kodea",remove:"Kendu Div-a",styleSelectLabel:"Estiloa",title:"Sortu Div edukiontzia",toolbar:"Sortu Div edukiontzia"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fa.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fa.js deleted file mode 100644 index bdc9449ca..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","fa",{IdInputLabel:"شناسه",advisoryTitleInputLabel:"عنوان مشاوره",cssClassInputLabel:"کلاس​های شیوه​نامه",edit:"ویرایش Div",inlineStyleInputLabel:"سبک درون​خطی(Inline Style)",langDirLTRLabel:"چپ به راست (LTR)",langDirLabel:"جهت نوشتاری زبان",langDirRTLLabel:"راست به چپ (RTL)",languageCodeInputLabel:" کد زبان",remove:"حذف Div",styleSelectLabel:"سبک",title:"ایجاد یک محل DIV",toolbar:"ایجاد یک محل DIV"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fi.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fi.js deleted file mode 100644 index e88857979..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","fi",{IdInputLabel:"Id",advisoryTitleInputLabel:"Ohjeistava otsikko",cssClassInputLabel:"Tyylitiedoston luokat",edit:"Muokkaa Diviä",inlineStyleInputLabel:"Sisätyyli",langDirLTRLabel:"Vasemmalta oikealle (LTR)",langDirLabel:"Kielen suunta",langDirRTLLabel:"Oikealta vasemmalle (RTL)",languageCodeInputLabel:" Kielen koodi",remove:"Poista Div",styleSelectLabel:"Tyyli",title:"Luo div-kehikko",toolbar:"Luo div-kehikko"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fo.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fo.js deleted file mode 100644 index e00fb861f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","fo",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Redigera Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Vinstru til høgru (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Høgru til vinstru (RTL)",languageCodeInputLabel:" Language Code",remove:"Strika Div",styleSelectLabel:"Style",title:"Ger Div Container",toolbar:"Ger Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr-ca.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr-ca.js deleted file mode 100644 index 0f61fc349..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","fr-ca",{IdInputLabel:"ID",advisoryTitleInputLabel:"Titre",cssClassInputLabel:"Classes CSS",edit:"Modifier le DIV",inlineStyleInputLabel:"Style en ligne",langDirLTRLabel:"De gauche à droite (LTR)",langDirLabel:"Sens d'écriture",langDirRTLLabel:"De droite à gauche (RTL)",languageCodeInputLabel:"Code de langue",remove:"Supprimer le DIV",styleSelectLabel:"Style",title:"Créer un DIV",toolbar:"Créer un DIV"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr.js deleted file mode 100644 index 8074f2825..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","fr",{IdInputLabel:"ID",advisoryTitleInputLabel:"Infobulle",cssClassInputLabel:"Classes de style",edit:"Modifier la division",inlineStyleInputLabel:"Style en ligne",langDirLTRLabel:"Gauche à droite (LTR)",langDirLabel:"Sens d'écriture",langDirRTLLabel:"Droite à gauche (RTL)",languageCodeInputLabel:"Code de langue",remove:"Enlever la division",styleSelectLabel:"Style",title:"Créer une division",toolbar:"Créer une division"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gl.js deleted file mode 100644 index 2f5e17147..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","gl",{IdInputLabel:"ID",advisoryTitleInputLabel:"Título informativo",cssClassInputLabel:"Clases da folla de estilos",edit:"Editar Div",inlineStyleInputLabel:"Estilo de liña",langDirLTRLabel:"Esquerda a dereita (LTR)",langDirLabel:"Dirección de escritura do idioma",langDirRTLLabel:"Dereita a esquerda (RTL)",languageCodeInputLabel:"Código do idioma",remove:"Retirar Div",styleSelectLabel:"Estilo",title:"Crear un contedor Div",toolbar:"Crear un contedor Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gu.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gu.js deleted file mode 100644 index 633644c5e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","gu",{IdInputLabel:"Id",advisoryTitleInputLabel:"એડવાઈઝર શીર્ષક",cssClassInputLabel:"સ્ટાઈલશીટ કલાસીસ",edit:"ડીવીમાં ફેરફાર કરવો",inlineStyleInputLabel:"ઈનલાઈન પદ્ધતિ",langDirLTRLabel:"ડાબે થી જમણે (LTR)",langDirLabel:"ભાષાની દિશા",langDirRTLLabel:"જમણે થી ડાબે (RTL)",languageCodeInputLabel:"ભાષાનો કોડ",remove:"ડીવી કાઢી કાઢવું",styleSelectLabel:"સ્ટાઈલ",title:"Div કન્ટેનર બનાવુંવું",toolbar:"Div કન્ટેનર બનાવુંવું"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/he.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/he.js deleted file mode 100644 index 80ad2a97f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","he",{IdInputLabel:"מזהה (ID)",advisoryTitleInputLabel:"כותרת מוצעת",cssClassInputLabel:"מחלקת עיצוב",edit:"עריכת מיכל (Div)",inlineStyleInputLabel:"סגנון פנימי",langDirLTRLabel:"שמאל לימין (LTR)",langDirLabel:"כיוון שפה",langDirRTLLabel:"ימין לשמאל (RTL)",languageCodeInputLabel:"קוד שפה",remove:"הסרת מיכל (Div)",styleSelectLabel:"סגנון",title:"יצירת מיכל (Div)",toolbar:"יצירת מיכל (Div)"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hi.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hi.js deleted file mode 100644 index fa3f89551..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","hi",{IdInputLabel:"Id",advisoryTitleInputLabel:"परामर्श शीर्शक",cssClassInputLabel:"स्टाइल-शीट क्लास",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"बायें से दायें (LTR)",langDirLabel:"भाषा लिखने की दिशा",langDirRTLLabel:"दायें से बायें (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"स्टाइल",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hr.js deleted file mode 100644 index 87d62ffc9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","hr",{IdInputLabel:"Id",advisoryTitleInputLabel:"Savjetodavni naslov",cssClassInputLabel:"Klase stilova",edit:"Uredi DIV",inlineStyleInputLabel:"Stil u liniji",langDirLTRLabel:"S lijeva na desno (LTR)",langDirLabel:"Smjer jezika",langDirRTLLabel:"S desna na lijevo (RTL)",languageCodeInputLabel:"Jezični kod",remove:"Ukloni DIV",styleSelectLabel:"Stil",title:"Napravi DIV kontejner",toolbar:"Napravi DIV kontejner"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hu.js deleted file mode 100644 index 949b2dd9f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","hu",{IdInputLabel:"Azonosító",advisoryTitleInputLabel:"Tipp szöveg",cssClassInputLabel:"Stíluslap osztály",edit:"DIV szerkesztése",inlineStyleInputLabel:"Inline stílus",langDirLTRLabel:"Balról jobbra (LTR)",langDirLabel:"Nyelvi irány",langDirRTLLabel:"Jobbról balra (RTL)",languageCodeInputLabel:" Nyelv kódja",remove:"DIV eltávolítása",styleSelectLabel:"Stílus",title:"DIV tároló létrehozása",toolbar:"DIV tároló létrehozása"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/id.js deleted file mode 100644 index a7016a398..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","id",{IdInputLabel:"Id",advisoryTitleInputLabel:"Penasehat Judul",cssClassInputLabel:"Kelas Stylesheet",edit:"Sunting Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Kiri ke Kanan (LTR)",langDirLabel:"Arah Bahasa",langDirRTLLabel:"Kanan ke Kiri (RTL)",languageCodeInputLabel:"Kode Bahasa",remove:"Hapus Div",styleSelectLabel:"Gaya",title:"Ciptakan Wadah Div",toolbar:"Cipatakan Wadah Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/is.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/is.js deleted file mode 100644 index 39a3b10b9..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","is",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/it.js deleted file mode 100644 index 4d1717c2a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","it",{IdInputLabel:"Id",advisoryTitleInputLabel:"Titolo Avviso",cssClassInputLabel:"Classi di stile",edit:"Modifica DIV",inlineStyleInputLabel:"Stile Inline",langDirLTRLabel:"Da sinistra a destra (LTR)",langDirLabel:"Direzione di scrittura",langDirRTLLabel:"Da destra a sinistra (RTL)",languageCodeInputLabel:"Codice lingua",remove:"Rimuovi DIV",styleSelectLabel:"Stile",title:"Crea DIV contenitore",toolbar:"Crea DIV contenitore"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ja.js deleted file mode 100644 index d6f6e5020..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ja",{IdInputLabel:"Id",advisoryTitleInputLabel:"Title属性",cssClassInputLabel:"スタイルシートクラス",edit:"Divコンテナを編集",inlineStyleInputLabel:"インラインスタイル",langDirLTRLabel:"左から右 (LTR)",langDirLabel:"文字表記の方向",langDirRTLLabel:"右から左 (RTL)",languageCodeInputLabel:" 言語コード",remove:"Divコンテナを削除",styleSelectLabel:"スタイル",title:"Divコンテナを作成",toolbar:"Divコンテナを作成"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ka.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ka.js deleted file mode 100644 index aff4cc2d4..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ka",{IdInputLabel:"Id",advisoryTitleInputLabel:"სათაური",cssClassInputLabel:"CSS კლასები",edit:"Div-ის რედაქტირება",inlineStyleInputLabel:"თანდართული სტილი",langDirLTRLabel:"მარცხნიდან მარჯვნიც (LTR)",langDirLabel:"ენის მინართულება",langDirRTLLabel:"მარჯვნიდან მარცხნივ (RTL)",languageCodeInputLabel:"ენის კოდი",remove:"Div-ის წაშლა",styleSelectLabel:"სტილი",title:"Div კონტეინერის შექმნა",toolbar:"Div კონტეინერის შექმნა"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/km.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/km.js deleted file mode 100644 index 7032cb718..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","km",{IdInputLabel:"Id",advisoryTitleInputLabel:"ចំណង​ជើង​ប្រឹក្សា",cssClassInputLabel:"Stylesheet Classes",edit:"កែ Div",inlineStyleInputLabel:"ស្ទីល​ក្នុង​បន្ទាត់",langDirLTRLabel:"ពីឆ្វេងទៅស្តាំ(LTR)",langDirLabel:"ទិសដៅភាសា",langDirRTLLabel:"ពីស្តាំទៅឆ្វេង(RTL)",languageCodeInputLabel:"កូដ​ភាសា",remove:"ដក Div ចេញ",styleSelectLabel:"ស្ទីល",title:"បង្កើត​អ្នក​ផ្ទុក Div",toolbar:"បង្កើត​អ្នក​ផ្ទុក Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ko.js deleted file mode 100644 index 60446c3e5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ko",{IdInputLabel:"ID",advisoryTitleInputLabel:"보조 제목",cssClassInputLabel:"스타일 시트 클래스",edit:"Div 편집",inlineStyleInputLabel:"인라인 스타일",langDirLTRLabel:"왼쪽에서 오른쪽 (LTR)",langDirLabel:"언어 방향",langDirRTLLabel:"오른쪽에서 왼쪽 (RTL)",languageCodeInputLabel:" 언어 코드",remove:"Div 태그 삭제",styleSelectLabel:"스타일",title:"Div 태그 생성",toolbar:"Div 태그 생성"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ku.js deleted file mode 100644 index 33b892955..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ku",{IdInputLabel:"ناسنامە",advisoryTitleInputLabel:"سەردێڕ",cssClassInputLabel:"شێوازی چینی پەڕه",edit:"چاکسازی Div",inlineStyleInputLabel:"شێوازی ناوهێڵ",langDirLTRLabel:"چەپ بۆ ڕاست (LTR)",langDirLabel:"ئاراستەی زمان",langDirRTLLabel:"ڕاست بۆ چەپ (RTL)",languageCodeInputLabel:"هێمای زمان",remove:"لابردنی Div",styleSelectLabel:"شێواز",title:"دروستکردنی لەخۆگری Div",toolbar:"دروستکردنی لەخۆگری Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lt.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lt.js deleted file mode 100644 index 2dace839d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","lt",{IdInputLabel:"Id",advisoryTitleInputLabel:"Patariamas pavadinimas",cssClassInputLabel:"Stilių klasės",edit:"Redaguoti Div",inlineStyleInputLabel:"Vidiniai stiliai",langDirLTRLabel:"Iš kairės į dešinę (LTR)",langDirLabel:"Kalbos nurodymai",langDirRTLLabel:"Iš dešinės į kairę (RTL)",languageCodeInputLabel:" Kalbos kodas",remove:"Pašalinti Div",styleSelectLabel:"Stilius",title:"Sukurti Div elementą",toolbar:"Sukurti Div elementą"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lv.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lv.js deleted file mode 100644 index e8cfc365a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","lv",{IdInputLabel:"Id",advisoryTitleInputLabel:"Konsultatīvs virsraksts",cssClassInputLabel:"Stilu klases",edit:"Labot Div",inlineStyleInputLabel:"Iekļautais stils",langDirLTRLabel:"Kreisais uz Labo (LTR)",langDirLabel:"Valodas virziens",langDirRTLLabel:"Labais uz kreiso (RTL)",languageCodeInputLabel:"Valodas kods",remove:"Noņemt Div",styleSelectLabel:"Stils",title:"Izveidot div konteineri",toolbar:"Izveidot div konteineri"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mk.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mk.js deleted file mode 100644 index 8931f8063..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","mk",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Лево кон десно",langDirLabel:"Насока на јазик",langDirRTLLabel:"Десно кон лево",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Стил",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mn.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mn.js deleted file mode 100644 index cb515d65d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","mn",{IdInputLabel:"Id",advisoryTitleInputLabel:"Зөвлөлдөх гарчиг",cssClassInputLabel:"Stylesheet классууд",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Зүүн талаас баруун тишээ (LTR)",langDirLabel:"Хэлний чиглэл",langDirRTLLabel:"Баруун талаас зүүн тишээ (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Загвар",title:"Div гэдэг хэсэг бий болгох",toolbar:"Div гэдэг хэсэг бий болгох"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ms.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ms.js deleted file mode 100644 index 0b06fd00b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ms",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nb.js deleted file mode 100644 index 88f83b383..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","nb",{IdInputLabel:"Id",advisoryTitleInputLabel:"Tittel",cssClassInputLabel:"Stilark-klasser",edit:"Rediger Div",inlineStyleInputLabel:"Inlinestiler",langDirLTRLabel:"Venstre til høyre (LTR)",langDirLabel:"Språkretning",langDirRTLLabel:"Høyre til venstre (RTL)",languageCodeInputLabel:" Språkkode",remove:"Fjern Div",styleSelectLabel:"Stil",title:"Sett inn Div Container",toolbar:"Sett inn Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nl.js deleted file mode 100644 index 4989eb616..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","nl",{IdInputLabel:"Id",advisoryTitleInputLabel:"Adviserende titel",cssClassInputLabel:"Stylesheet klassen",edit:"Div wijzigen",inlineStyleInputLabel:"Inline stijl",langDirLTRLabel:"Links naar rechts (LTR)",langDirLabel:"Schrijfrichting",langDirRTLLabel:"Rechts naar links (RTL)",languageCodeInputLabel:" Taalcode",remove:"Div verwijderen",styleSelectLabel:"Stijl",title:"Div aanmaken",toolbar:"Div aanmaken"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/no.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/no.js deleted file mode 100644 index e43193608..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","no",{IdInputLabel:"Id",advisoryTitleInputLabel:"Tittel",cssClassInputLabel:"Stilark-klasser",edit:"Rediger Div",inlineStyleInputLabel:"Inlinestiler",langDirLTRLabel:"Venstre til høyre (VTH)",langDirLabel:"Språkretning",langDirRTLLabel:"Høyre til venstre (HTV)",languageCodeInputLabel:" Språkkode",remove:"Fjern Div",styleSelectLabel:"Stil",title:"Sett inn Div Container",toolbar:"Sett inn Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/oc.js deleted file mode 100644 index df85cf67c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","oc",{IdInputLabel:"ID",advisoryTitleInputLabel:"Infobulla",cssClassInputLabel:"Classas d'estil",edit:"Modificar la division",inlineStyleInputLabel:"Estil en linha",langDirLTRLabel:"Esquèrra a dreita (LTR)",langDirLabel:"Sens d'escritura",langDirRTLLabel:"Dreita a esquèrra (RTL)",languageCodeInputLabel:"Còdi de lenga",remove:"Levar la division",styleSelectLabel:"Estil",title:"Crear una division",toolbar:"Crear una division"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pl.js deleted file mode 100644 index 11edd560f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","pl",{IdInputLabel:"Id",advisoryTitleInputLabel:"Opis obiektu docelowego",cssClassInputLabel:"Klasy arkusza stylów",edit:"Edytuj pojemnik Div",inlineStyleInputLabel:"Style liniowe",langDirLTRLabel:"Od lewej do prawej (LTR)",langDirLabel:"Kierunek tekstu",langDirRTLLabel:"Od prawej do lewej (RTL)",languageCodeInputLabel:"Kod języka",remove:"Usuń pojemnik Div",styleSelectLabel:"Styl",title:"Utwórz pojemnik Div",toolbar:"Utwórz pojemnik Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt-br.js deleted file mode 100644 index 7bbd2caca..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","pt-br",{IdInputLabel:"Id",advisoryTitleInputLabel:"Título Consulta",cssClassInputLabel:"Classes de CSS",edit:"Editar Div",inlineStyleInputLabel:"Estilo Inline",langDirLTRLabel:"Esquerda para Direita (LTR)",langDirLabel:"Direção da Escrita",langDirRTLLabel:"Direita para Esquerda (RTL)",languageCodeInputLabel:"Código de Idioma",remove:"Remover Div",styleSelectLabel:"Estilo",title:"Criar Container de DIV",toolbar:"Criar Container de DIV"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt.js deleted file mode 100644 index 8df05f04c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","pt",{IdInputLabel:"ID",advisoryTitleInputLabel:"Título",cssClassInputLabel:"Classes de folhas de estilo",edit:"Editar Div",inlineStyleInputLabel:"Estilo na etiqueta",langDirLTRLabel:"Esquerda para a direita (EPD)",langDirLabel:"Orientação de idioma",langDirRTLLabel:"Direita para a Esquerda (DPE)",languageCodeInputLabel:"Código do idioma",remove:"Remover Div",styleSelectLabel:"Estilo",title:"Criar Div",toolbar:"Criar Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ro.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ro.js deleted file mode 100644 index 2186038ad..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ro",{IdInputLabel:"Id",advisoryTitleInputLabel:"Titlul consultativ",cssClassInputLabel:"Clasele cu stilul paginii (CSS)",edit:"Modifică Div-ul",inlineStyleInputLabel:"Stil Inline",langDirLTRLabel:"stânga-dreapta (LTR)",langDirLabel:"Direcţia cuvintelor",langDirRTLLabel:"dreapta-stânga (RTL)",languageCodeInputLabel:"Codul limbii",remove:"Șterge Div-ul",styleSelectLabel:"Stil",title:"Crează un container Div",toolbar:"Crează un container Div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ru.js deleted file mode 100644 index a254ceebd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ru",{IdInputLabel:"Идентификатор",advisoryTitleInputLabel:"Заголовок",cssClassInputLabel:"Классы CSS",edit:"Редактировать контейнер",inlineStyleInputLabel:"Стиль элемента",langDirLTRLabel:"Слева направо (LTR)",langDirLabel:"Направление текста",langDirRTLLabel:"Справа налево (RTL)",languageCodeInputLabel:"Код языка",remove:"Удалить контейнер",styleSelectLabel:"Стиль",title:"Создать Div-контейнер",toolbar:"Создать Div-контейнер"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/si.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/si.js deleted file mode 100644 index 035a735d6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","si",{IdInputLabel:"අංකය",advisoryTitleInputLabel:"උපදේශාත්මක නාමය",cssClassInputLabel:"විලාසපත්‍ර පන්තිය",edit:"වෙනස්කිරීම",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"වමේසිට දකුණුට",langDirLabel:"භාෂා දිශාව",langDirRTLLabel:"දකුණේ සිට වමට",languageCodeInputLabel:"භාෂා ",remove:"ඉවත් කිරීම",styleSelectLabel:"විලාසය",title:"නිර්මාණය ",toolbar:"නිර්මාණය "}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sk.js deleted file mode 100644 index ba965da01..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sk",{IdInputLabel:"Id",advisoryTitleInputLabel:"Pomocný titulok",cssClassInputLabel:"Triedy štýlu",edit:"Upraviť Div",inlineStyleInputLabel:"Inline štýl",langDirLTRLabel:"Zľava doprava (LTR)",langDirLabel:"Smer jazyka",langDirRTLLabel:"Zprava doľava (RTL)",languageCodeInputLabel:"Kód jazyka",remove:"Odstrániť Div",styleSelectLabel:"Štýl",title:"Vytvoriť Div kontajner",toolbar:"Vytvoriť Div kontajner"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sl.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sl.js deleted file mode 100644 index a55087de3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sl",{IdInputLabel:"Id",advisoryTitleInputLabel:"Predlagani naslov",cssClassInputLabel:"Razredi slogovne predloge",edit:"Uredi div",inlineStyleInputLabel:"Slog v vrstici",langDirLTRLabel:"Od leve proti desni (LTR)",langDirLabel:"Smer jezika",langDirRTLLabel:"Od desne proti levi (RTL)",languageCodeInputLabel:"Koda jezika",remove:"Odstrani div",styleSelectLabel:"Slog",title:"Ustvari vsebnik div",toolbar:"Ustvari vsebnik div"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sq.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sq.js deleted file mode 100644 index 8ec9583dc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sq",{IdInputLabel:"Id",advisoryTitleInputLabel:"Titull",cssClassInputLabel:"Klasa stili CSS",edit:"Redakto Div",inlineStyleInputLabel:"Stili i brendshëm",langDirLTRLabel:"Nga e majta në të djathë (LTR)",langDirLabel:"Drejtim teksti",langDirRTLLabel:"Nga e djathta në të majtë (RTL)",languageCodeInputLabel:"Kodi i Gjuhës",remove:"Largo Div",styleSelectLabel:"Stil",title:"Krijo Div Përmbajtës",toolbar:"Krijo Div Përmbajtës"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr-latn.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr-latn.js deleted file mode 100644 index 344573b55..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sr-latn",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory naslov",cssClassInputLabel:"Stylesheet klase",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"S leva na desno (LTR)",langDirLabel:"Smer jezika",langDirRTLLabel:"S desna na levo (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Stil",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr.js deleted file mode 100644 index 194041a9f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sr",{IdInputLabel:"Id",advisoryTitleInputLabel:"Advisory Title",cssClassInputLabel:"Stylesheet Classes",edit:"Edit Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Left to Right (LTR)",langDirLabel:"Language Direction",langDirRTLLabel:"Right to Left (RTL)",languageCodeInputLabel:" Language Code",remove:"Remove Div",styleSelectLabel:"Style",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sv.js deleted file mode 100644 index 56e587626..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","sv",{IdInputLabel:"Id",advisoryTitleInputLabel:"Rådgivande titel",cssClassInputLabel:"Stilmallar",edit:"Redigera Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"Vänster till höger (LTR)",langDirLabel:"Språkriktning",langDirRTLLabel:"Höger till vänster (RTL)",languageCodeInputLabel:" Språkkod",remove:"Ta bort Div",styleSelectLabel:"Stil",title:"Skapa Div container",toolbar:"Skapa Div container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/th.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/th.js deleted file mode 100644 index 1b5bbbe87..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","th",{IdInputLabel:"ไอดี",advisoryTitleInputLabel:"คำเกริ่นนำ",cssClassInputLabel:"คลาสของไฟล์กำหนดลักษณะการแสดงผล",edit:"แก้ไข Div",inlineStyleInputLabel:"Inline Style",langDirLTRLabel:"จากซ้ายไปขวา (LTR)",langDirLabel:"การเขียน-อ่านภาษา",langDirRTLLabel:"จากขวามาซ้าย (RTL)",languageCodeInputLabel:"รหัสภาษา",remove:"ลบ Div",styleSelectLabel:"ลักษณะการแสดงผล",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tr.js deleted file mode 100644 index 7c9a0266d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","tr",{IdInputLabel:"Id",advisoryTitleInputLabel:"Tavsiye Başlığı",cssClassInputLabel:"Stilltipi Sınıfı",edit:"Div Düzenle",inlineStyleInputLabel:"Inline Stili",langDirLTRLabel:"Soldan sağa (LTR)",langDirLabel:"Dil Yönü",langDirRTLLabel:"Sağdan sola (RTL)",languageCodeInputLabel:" Dil Kodu",remove:"Div Kaldır",styleSelectLabel:"Stil",title:"Div İçeriği Oluştur",toolbar:"Div İçeriği Oluştur"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tt.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tt.js deleted file mode 100644 index 1dbf9873e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","tt",{IdInputLabel:"Идентификатор",advisoryTitleInputLabel:"Киңәш исем",cssClassInputLabel:"Стильләр класслары",edit:"Edit Div",inlineStyleInputLabel:"Эчке стиль",langDirLTRLabel:"Сулдан уңга язылыш (LTR)",langDirLabel:"Язылыш юнəлеше",langDirRTLLabel:"Уңнан сулга язылыш (RTL)",languageCodeInputLabel:"Тел коды",remove:"Remove Div",styleSelectLabel:"Стиль",title:"Create Div Container",toolbar:"Create Div Container"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ug.js deleted file mode 100644 index 0ec740eae..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","ug",{IdInputLabel:"ID",advisoryTitleInputLabel:"ماۋزۇ",cssClassInputLabel:"ئۇسلۇب تىپىنىڭ ئاتى",edit:"DIV تەھرىر",inlineStyleInputLabel:"قۇر ئىچىدىكى ئۇسلۇبى",langDirLTRLabel:"سولدىن ئوڭغا (LTR)",langDirLabel:"تىل يۆنىلىشى",langDirRTLLabel:"ئوڭدىن سولغا (RTL)",languageCodeInputLabel:"تىل كودى",remove:"DIV چىقىرىۋەت",styleSelectLabel:"ئۇسلۇب",title:"DIV قاچا قۇر",toolbar:"DIV قاچا قۇر"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/uk.js deleted file mode 100644 index 8722fc6e6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","uk",{IdInputLabel:"Ідентифікатор",advisoryTitleInputLabel:"Зміст випливаючої підказки",cssClassInputLabel:"Клас CSS",edit:"Редагувати блок",inlineStyleInputLabel:"Вписаний стиль",langDirLTRLabel:"Зліва направо (LTR)",langDirLabel:"Напрямок мови",langDirRTLLabel:"Справа наліво (RTL)",languageCodeInputLabel:"Код мови",remove:"Видалити блок",styleSelectLabel:"Стиль CSS",title:"Створити блок-контейнер",toolbar:"Створити блок-контейнер"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/vi.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/vi.js deleted file mode 100644 index abab6579e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","vi",{IdInputLabel:"Định danh (id)",advisoryTitleInputLabel:"Nhan đề hướng dẫn",cssClassInputLabel:"Các lớp CSS",edit:"Chỉnh sửa",inlineStyleInputLabel:"Kiểu nội dòng",langDirLTRLabel:"Trái sang phải (LTR)",langDirLabel:"Hướng ngôn ngữ",langDirRTLLabel:"Phải qua trái (RTL)",languageCodeInputLabel:"Mã ngôn ngữ",remove:"Xóa bỏ",styleSelectLabel:"Kiểu (style)",title:"Tạo khối các thành phần",toolbar:"Tạo khối các thành phần"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh-cn.js deleted file mode 100644 index 8957cc8b1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","zh-cn",{IdInputLabel:"ID",advisoryTitleInputLabel:"标题",cssClassInputLabel:"样式类名称",edit:"编辑 DIV",inlineStyleInputLabel:"行内样式",langDirLTRLabel:"从左到右 (LTR)",langDirLabel:"语言方向",langDirRTLLabel:"从右到左 (RTL)",languageCodeInputLabel:"语言代码",remove:"移除 DIV",styleSelectLabel:"样式",title:"创建 DIV 容器",toolbar:"创建 DIV 容器"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh.js deleted file mode 100644 index c266d4c8c..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("div","zh",{IdInputLabel:"ID",advisoryTitleInputLabel:"標題",cssClassInputLabel:"樣式表類別",edit:"編輯 Div",inlineStyleInputLabel:"行內樣式",langDirLTRLabel:"由左至右 (LTR)",langDirLabel:"語言方向",langDirRTLLabel:"由右至左 (RTL)",languageCodeInputLabel:"語言碼",remove:"移除 Div",styleSelectLabel:"樣式",title:"建立 Div 容器",toolbar:"建立 Div 容器"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/div/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/div/plugin.js deleted file mode 100644 index 4816403c2..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/div/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.plugins.add("div",{requires:"dialog",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"creatediv",hidpi:!0,init:function(a){if(!a.blockless){var c=a.lang.div,b="div(*)";CKEDITOR.dialog.isTabEnabled(a,"editdiv","advanced")&&(b+=";div[dir,id,lang,title]{*}");a.addCommand("creatediv", -new CKEDITOR.dialogCommand("creatediv",{allowedContent:b,requiredContent:"div",contextSensitive:!0,contentTransformations:[["div: alignmentToStyle"]],refresh:function(a,c){this.setState("div"in(a.config.div_wrapTable?c.root:c.blockLimit).getDtd()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}}));a.addCommand("editdiv",new CKEDITOR.dialogCommand("editdiv",{requiredContent:"div"}));a.addCommand("removediv",{requiredContent:"div",exec:function(a){function c(b){(b=CKEDITOR.plugins.div.getSurroundDiv(a, -b))&&!b.data("cke-div-added")&&(f.push(b),b.data("cke-div-added"))}for(var b=a.getSelection(),g=b&&b.getRanges(),e,h=b.createBookmarks(),f=[],d=0;d!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4$o z?#vsfL^Hl~?RIZa;u00V(NrC{#$~6I$O4z9wl<-44!hk?9IrEZZE)_En7`D?jkfRi z&Me%K8_mTqA!fS5N#BXgf(r!<85>*!UF7Bz|K7E3eMg6|V0Y%~=TEA$-=@hNzg+KS zaBEv}UjEvC{JwMIQUr|Lm zc^%`PH8D0_C(gR^2hCXa($@JOTSGVBmR!L~CI_WYtL`#rSaW>1ci+%>&v(I(uEN(> ztjd~w^S&tOm5lwr_w~ocUoU+$=XcbpoLOln7as`@O2WBdy z{j*tJmm$RPh5PK9nJ(9&?%DtYOSQx`q9i4;B-JXpC>2OC7#SFv=^B{p8d`=J8e16~ sSeY1U8yHy`7)VSguRzg|o1c=IR*73f=GpT{fEpM)UHx3vIVCg!02Ud;RR910 diff --git a/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/docprops.png b/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/docprops.png deleted file mode 100644 index 16a500069fade465b1d7db8c7a705949c12b9fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4O7~TE}UNSK|&HssC^XR0d8r$a2pYI!c zJ@IVEieGFDX8Ey2Y5U@szNcVw0;ykg5y{q0CevH_dIcuBmWtpQA_H&8_ zCh{_*EYNbWd~S1oKHHJ*6Ib#KIXTbq);3!o&Dd31n~MDcuKr&1+jZGY&31up zs?lr=X?Dy7$?3sY+28+N$+|Kxar%c8`{KZ!k2Ad-vv`UajqO)y&G@-aEp2M!MFyoJ zKNl^f)veV$bBfisE+~HYBc4HX>Gnj4H<8IQ?p~UEZwqF-)!vVOnDcBBLsoL#(!=+y zSq`{r)d12AOJ!YeY#(Vo9o1a#1RfVlXl=G}ARO*EO^Z xF*LR^Hn1`=(l#)%GBA*sP+ozeAvZrIGp!Q0hRn0)j{r3=c)I$ztaD0e0suj)y{`ZO diff --git a/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png b/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png deleted file mode 100644 index 3e468bd59cb96ea82b17ff6fe31f801c3416893d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|T>$r;B4q#NoB!w%KF z$%cdMKh5*zp4!p%zw@-nzYHc#8IQSJ7{wJ6I3$XW&;7b_@*%0pt=m@zC-HYguPuAN zxAwE5tYX6N-@nh!=$N&!rF#crY9y#s9_g~A`fB(zZnrSrij&O(J?%lg@^E8UPZZz6h z;-7ndl1im)l=)1bM=U*tYuyf?*>H{R;QDpz7NxA&y5U;gS5C83xm!elbxyjgkU-!nQ&pVY#1=hhxj6`W*udQ-U4rV@bf{VlYty{N#XE<=D?4fFcH)rx0c6*mC+qZAu5>~tR z!58)eJ9>S2Io;C=#dLnYUF&c_>VwryyK`xq*(&VjH_z0s5&ct_=rk{UtG{h;n7eJA zxeTA`=}pg-HnBeF4(t7#);hbxL50&0s-y);)@smE>c zS{2Wz{LlsIq8%Qq1y?q|EUB8i?B%voZ=13Xb#h!XxjXM{+V#AdudePE))HJRP#Pw3 zw11I?hHo&ZYJTLjC+oh~|JP<&r}UL`x{!Z#-gR~z!Pegg_6roA<#l{=_NLdf&6_v- zG1Vq-{&iV`|DpFJmTOTlF?Y;Qp0j)K|Cryq+4mV^qvPX`KYf~7EFaX6#3?-KqUzKC zlgpyl-+K8n^Yy>L+5=k;CVXIW;A1!@p{-=^zWAcCs!X--f7ZKo1+ocy=R5>vBh?bu zh?11Vl2ohYqEsNoU}RuurfX=ZYhV;&Xl!L{Y-M1eZD0r_uQRTBi=rVnKP5A*61RqB SF(QFL4Gf;HelF{r5}E*oY0EJH diff --git a/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops.png b/vendor/unisharp/laravel-ckeditor/plugins/docprops/icons/hidpi/docprops.png deleted file mode 100644 index ac44303ed2b4ab205b0e2d79c73ba1e3348e8dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|V1vPZ!6Kh{J2c_GjNU5ZGrO{mr|e%}L>c=7hC#onHpL zxboz`XS>7ZR)+;Y{f){zH;e2NnYA_6+jxr8f(r+2lA^6jS3I5fRmFDybh(b@<(KB# z)qX#GsJWS$gHuWG#hR^-wHf=jmd%Kdjdk?Nn0h$)(Y3W(xvTm4`NNqK{{Px|?d)BL zBNOA!ZPwZC(b&_tUfnJWcw^?`mkY;F@>EDrI)UlOOK}kSRKyXSbXYOq~riPOWix`$kcrvU@ z>RQy%NEJN?O~x?sb#Gu64IN8|BY^ z7Vj~fzxCS1ANTLvY2aVi|DEB$&8L<7Or|VUshOA>X(IUT`*&T2Jzu__;pyNwCXw(g z@VgJwhev-}X4)^?w0}CkYoN{4*Vm#lZi~&REcviWfKTSDNZr(>8gqYNGC4baS!RLR z?A~uWo1+sB&A_VQ-jVkKG?nW+j7ISDe{ricpGZl zmMjr66mK&X486pt&-vMZ?uNDhonJYp6i@nTe4G3G z>GVl~7Q+JJ!|Ns80Gz8q48uTE%+1g{> z+RGJ9JPMCKuu7-C*k3eTE2&!?M)`n ze>#2obnd55=G`@v`t2jbyZm$gZ$V&^S330U*)uca{|pT8N^>Kp^`}PvlmEo-^?&)< zBdV6Jz`UVa;u=wsl30>zm0Xkxq!^4049#>64RsBSLJWPx$KS@MER5%f(Q#)>iFc8HOqRj=oh@Jw`(NaK@3vh*;Ag4&bN8kb}5CsiA1sxIs z5ky4}0OAwRWM{(?uf%FyFmHZup0Ujov4S9Y)imuaAYa#2VT>tYVG#yPOW?0z7~aA# z{8S;Rs_Hq*GEM~t?8&k$7iI{osX=&10m<1nga5Dsl1^j~DUeN*#eiJ;4`kCw z2@v_dzruxzqKFkmfvKBgyf=+Vw*RUuOFW&MQ;;bDQrC6yevoYPlO$nCFpeV*xu-x( z!@OY__%^DlLJL78===WLahz4W2`t=x(lljF)1X{k*HH=iR{|mJz3aLUvB#HfGhog+ jHnnZb>bl;ipZ9+N?)IpPx%l1W5CR9Fe^SIvqVK@c7_f;k1eB@F0EauCGaB_N2;5WM;fd5G*Qc=aK~gDiNC zh&coW1rd*dL=eHhRCWAntDEV}=DjFtM3B0>v49F*Y*J0X%hdu2k1@cZ$f0nGU?eS#cAKV z*`)%yEE@dOb2p9<(5yIU(zA65q9V;^(|VWmdOdUV&t@~r#7n?J-LTM^>IaXTs1VQw z91oe?5Zjn=AOzOF=kxi)V~~(SKpWf|RNJvXH(Ra8+#;Y2lJ)>9Rj=2rGuOU2nAWpy zFc_Fh2mxItu)9XGJxb02cSS&0=u~?KflX3M>%Kw4w zcAJPX3|-0D`Yx`HtAo8%;3th-F88KZt666WpqA_mB_0lk<}8=XrPbYqLP7j6-qpjO zRDeL=*6Ve!*=z#(JTos0uto+f^_=y-0W9!7oUksHO7C~O-B&Vr?E@#-U#(WgXBdVS zJM6nYqyp3F^gA8F2l{v%(x=le7pT|B92L?MIAD0K=g|L`sK9S=!OemeK%%Pv0000< KMNUMnLSTZg%~a6< diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embed/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/embed/plugin.js deleted file mode 100644 index 7139f5106..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embed/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){CKEDITOR.plugins.add("embed",{icons:"embed",hidpi:!0,requires:"embedbase",init:function(b){var c=CKEDITOR.plugins.embedBase.createWidgetBaseDefinition(b);b.config.embed_provider||CKEDITOR.error("embed-no-provider-url");CKEDITOR.tools.extend(c,{dialog:"embedBase",button:b.lang.embedbase.button,allowedContent:"div[!data-oembed-url]",requiredContent:"div[data-oembed-url]",providerUrl:new CKEDITOR.template(b.config.embed_provider||""),styleToAllowedContentRules:function(a){return{div:{propertiesOnly:!0, -classes:a.getClassesArray(),attributes:"!data-oembed-url"}}},upcast:function(a,b){if("div"==a.name&&a.attributes["data-oembed-url"])return b.url=a.attributes["data-oembed-url"],!0},downcast:function(a){a.attributes["data-oembed-url"]=this.data.url}},!0);b.widgets.add("embed",c);b.filter.addElementCallback(function(a){if("data-oembed-url"in a.attributes)return CKEDITOR.FILTER_SKIP_TREE})}})})(); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/dialogs/embedbase.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/dialogs/embedbase.js deleted file mode 100644 index 4bf6c7228..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/dialogs/embedbase.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.dialog.add("embedBase",function(b){var c=b.lang.embedbase;return{title:c.title,minWidth:350,minHeight:50,onLoad:function(){function e(){a.setState(CKEDITOR.DIALOG_STATE_IDLE);d=null}var a=this,d=null;this.on("ok",function(f){f.data.hide=!1;f.stop();a.setState(CKEDITOR.DIALOG_STATE_BUSY);var c=a.getValueOf("info","url");d=a.widget.loadContent(c,{noNotifications:!0,callback:function(){a.widget.isReady()||b.widgets.finalizeCreation(a.widget.wrapper.getParent(!0));b.fire("saveSnapshot");a.hide(); -e()},errorCallback:function(b){a.getContentElement("info","url").select();alert(a.widget.getErrorMessage(b,c,"Given"));e()}})},null,null,15);this.on("cancel",function(a){a.data.hide&&d&&(d.cancel(),e())})},contents:[{id:"info",elements:[{type:"text",id:"url",label:b.lang.common.url,required:!0,setup:function(b){this.setValue(b.data.url)},validate:function(){return this.getDialog().widget.isUrlValid(this.getValue())?!0:c.unsupportedUrlGiven}}]}]}}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/az.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/az.js deleted file mode 100644 index bd9317333..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","az",{pathName:"Multimedia obyektləri",title:"Multimedia obyektlərin quraşdırılması",button:"Multimedia obyekti quraşdır",unsupportedUrlGiven:"Daxil etdiyiniz linki dəstəklənmir",unsupportedUrl:"{url} linki quraşdırıla bilməz",fetchingFailedGiven:"Daxil etdiyiniz linkdən gələn məlumat yanlışdır",fetchingFailed:"{url} linkdən gələn məlumat yanlışdır",fetchingOne:"oEmbed tərəfindən cavabın yoxlanması...",fetchingMany:"oEmbed tərəfindən cavabların yoxlanması, {max}-dan {current} yerinə yetirilib..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ca.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ca.js deleted file mode 100644 index 0a846757e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ca",{pathName:"objecte multimèdia",title:"Objecte multimèdia incrustat",button:"Inserir objecte multimèdia incrustat",unsupportedUrlGiven:"La URL especificada no és compatible.",unsupportedUrl:"La URL {url} no és compatible pels objectes multimèdia incrustats.",fetchingFailedGiven:"No s'ha pogut obtenir el contingut de la URL especificada.",fetchingFailed:"No s'ha pogut obtenir el contingut de {url}.",fetchingOne:"Recuperant resposta de oEmbed...",fetchingMany:"Recuperant respostes dels oEmbed, {current} de {max} finalitzats..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/cs.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/cs.js deleted file mode 100644 index b3e9fdc5d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","cs",{pathName:"objekt média",title:"Vložení médií",button:"Vložit médium",unsupportedUrlGiven:"Zadaná URL není podporována.",unsupportedUrl:"URL {url} není podporována ",fetchingFailedGiven:"Pro zadanou adresu URL nelze získat obsah.",fetchingFailed:"Nelze získat obsah na {url}.",fetchingOne:"Získávání odpovědí oEmbed...",fetchingMany:"Získávání odpovědí oEmbed. {current} z {max} hotovo..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/da.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/da.js deleted file mode 100644 index 46b7f9354..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","da",{pathName:"media objekt",title:"Media Embed",button:"Indsæt Media Embed",unsupportedUrlGiven:"Den angivende URL er ikke undersøttet.",unsupportedUrl:"URLen {url} er ikke undersøttet af Media Embed.",fetchingFailedGiven:"Kunne ikke hente indholdet fra den angivende URL.",fetchingFailed:"Kunne ikke hente indholdet fra {url}.",fetchingOne:"Henter oEmbed-svar",fetchingMany:"Henter oEmbed-svar, {current} af {max} færdige..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de-ch.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de-ch.js deleted file mode 100644 index 70e86b90f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","de-ch",{pathName:"Medienobjekt",title:"Media Embed (Medieninhalte)",button:"Medieninhalte einfügen",unsupportedUrlGiven:"Die angegebene URL wird nicht unterstützt.",unsupportedUrl:"Die URL {url} wird von Media Embed nicht unterstützt.",fetchingFailedGiven:"Abrufen des Inhalts für die angegebene URL ist fehlgeschlagen.",fetchingFailed:"Abrufen des Inhalts für {url} ist fehlgeschlagen.",fetchingOne:"Empfangen der Medieninhalte...",fetchingMany:"Medieninhalte werden abgerufen, {current} von {max} empfangen..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de.js deleted file mode 100644 index e115c94bc..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","de",{pathName:"Medienobjekt",title:"Media Embed (Medieninhalte)",button:"Medieninhalte einfügen",unsupportedUrlGiven:"Die angegebene URL wird nicht unterstützt.",unsupportedUrl:"Die URL {url} wird von Media Embed nicht unterstützt.",fetchingFailedGiven:"Abrufen des Inhalts für die angegebene URL ist fehlgeschlagen.",fetchingFailed:"Abrufen des Inhalts für {url} ist fehlgeschlagen.",fetchingOne:"Empfangen der Medieninhalte...",fetchingMany:"Medieninhalte werden abgerufen, {current} von {max} empfangen..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/en.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/en.js deleted file mode 100644 index 30668c89a..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","en",{pathName:"media object",title:"Media Embed",button:"Insert Media Embed",unsupportedUrlGiven:"The specified URL is not supported.",unsupportedUrl:"The URL {url} is not supported by Media Embed.",fetchingFailedGiven:"Failed to fetch content for the given URL.",fetchingFailed:"Failed to fetch content for {url}.",fetchingOne:"Fetching oEmbed response...",fetchingMany:"Fetching oEmbed responses, {current} of {max} done..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eo.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eo.js deleted file mode 100644 index 4e9fcb4fd..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","eo",{pathName:"Datumportila objekto",title:"Enkorpigo de datumportilo",button:"Enmetu enkorpigitan datumportilon.",unsupportedUrlGiven:"la indikita URL ne estas subtenata.",unsupportedUrl:"La URL {url} ne estas subtenata de enkorpigo de datumportilo.",fetchingFailedGiven:"Rekuperi enhavon por la indikitan URL malsukcesis.",fetchingFailed:"Rekuperi enhavon por {url} malsukcesis.",fetchingOne:"La respondo de la enkorpigita objekto estas serĉata ...",fetchingMany:"La respondoj de la enkorpigita objekto estas serĉataj, {current} el {max} faritaj..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es-mx.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es-mx.js deleted file mode 100644 index 36a0bcb96..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","es-mx",{pathName:"objeto multimedia",title:"Empotrar multimedia",button:"Insertar multimedia empotrado",unsupportedUrlGiven:"La URL especificada no es soportada.",unsupportedUrl:"La URL {url} no es soportada para empotrar multimedia",fetchingFailedGiven:"No se pudo obtener el contenido de la URL dada.",fetchingFailed:"No se pudo obtener el contenido de {url}.",fetchingOne:"Recuperar o Incrustar respuesta ...",fetchingMany:"Recuperar o Incrustar respuestas, {current} de {max} listo..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es.js deleted file mode 100644 index 305fc5cc3..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","es",{pathName:"objeto media",title:"Media incrustado",button:"Insertar Media incrustado",unsupportedUrlGiven:"La URL especificada no está soportada.",unsupportedUrl:"La URL {url} no está soportada por Medio Inscrustado.",fetchingFailedGiven:"Fallo al recuperar el contenido de la URL dada.",fetchingFailed:"Fallo al recuperar contenido de {url}.",fetchingOne:"Recuperando respuesta oEmbed...",fetchingMany:"Recuperando respuestas oEmbed, {current} de {max} hecho..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eu.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eu.js deleted file mode 100644 index d88a889a1..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","eu",{pathName:"multimedia objektua",title:"Media Embed",button:"Txertatu edukia",unsupportedUrlGiven:"Ez dago zehazturiko URLarentzako euskarririk",unsupportedUrl:"Media Embed-ek ez dauka {url} URLarentzako euskarririk.",fetchingFailedGiven:"Huts egin du emandako URLetik edukia eskuratzean.",fetchingFailed:"Huts egin du {url}(e)tik edukia eskuratzean.",fetchingOne:"oEmbed erantzuna eskuratzen...",fetchingMany:"oEmbed erantzunak eskuratzen, {current} / {max}"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/fr.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/fr.js deleted file mode 100644 index 7b705b63e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","fr",{pathName:"objet média",title:"Incorporation de média",button:"Incorporer un média",unsupportedUrlGiven:"L'URL spécifiée n'est pas supportée.",unsupportedUrl:"L'URL {url} n'est pas supportée par l'incorporation de média.",fetchingFailedGiven:"Échec de la récupération du contenu de l'URL donnée.",fetchingFailed:"Échec de la récupération du contenu pour {url}.",fetchingOne:"Récupération de la réponse oEmbed...",fetchingMany:"Récupération des réponses oEmbed, {current} sur {max} effectué..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/gl.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/gl.js deleted file mode 100644 index b8429ba29..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","gl",{pathName:"obxecto multimedia",title:"Multimedia integrado",button:"Inserir un multimedia integrado",unsupportedUrlGiven:"O URL especificado non está admitido.",unsupportedUrl:"O URL {url} non está admitido polo multimedia integrado.",fetchingFailedGiven:"Non foi posíbel obter o contido do URL indicado.",fetchingFailed:"Non foi posíbel obter o contido der {url}.",fetchingOne:"Obtendo a resposta oEmbed...",fetchingMany:"Obtendo as respostas oEmbed, feito {current} de {max}..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hr.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hr.js deleted file mode 100644 index abb6c2c9b..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","hr",{pathName:"objekt medija",title:"Media Embed",button:"Umetanje Media Embed",unsupportedUrlGiven:"Navedeni URL nije podržan",unsupportedUrl:"URL {url} nije podržan od strane Media Embed-a.",fetchingFailedGiven:"Nije moguće dohvatiti sadržaj danog URL-a.",fetchingFailed:"Nije moguće dohvatiti sadržaj za {url}.",fetchingOne:"Dohvaćanje oEmbed odgovora...",fetchingMany:"Dohvaćanje oEmbed odgovora, {current} od {max} gotovo..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hu.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hu.js deleted file mode 100644 index 89927e5f5..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","hu",{pathName:"média objektum",title:"Média beágyazása",button:"Beágyazott média beszúrása",unsupportedUrlGiven:"A megadott URL nem támogatott.",unsupportedUrl:"Az URL-t {url} a média beágyazása nem támogatja.",fetchingFailedGiven:"Nem sikerült a megadott URL-hez tartalmat kinyerni.",fetchingFailed:"Nem sikerült az {url}-nek a tartalmát kinyerni.",fetchingOne:"oEmbed válasz kinyerése...",fetchingMany:"oEmbed válasz kinyerése folyamatban, {current} a {max}-ból kész..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/id.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/id.js deleted file mode 100644 index 084a54241..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","id",{pathName:"media object",title:"Sisipkan Media",button:"Insert Media Embed",unsupportedUrlGiven:"The specified URL is not supported.",unsupportedUrl:"The URL {url} is not supported by Media Embed.",fetchingFailedGiven:"Failed to fetch content for the given URL.",fetchingFailed:"Gagal mengambil konten untuk {url}",fetchingOne:"Fetching oEmbed response...",fetchingMany:"Fetching oEmbed responses, {current} of {max} done..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/it.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/it.js deleted file mode 100644 index aa6ed3165..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","it",{pathName:"oggetto multimediale",title:"Media incorporato",button:"Inserisci media incorporato",unsupportedUrlGiven:"L'URL specificato non è supportato.",unsupportedUrl:"L'URL {url} non è supportato da Media incorporato.",fetchingFailedGiven:"Non è stato possibile recuperareil contenuto per l'URL specificato.",fetchingFailed:"Non è stato possibile recuperare il contenuto per {url}.",fetchingOne:"Recupero della risposta oEmbed...",fetchingMany:"Recupero delle risposta oEmbed, {current} di {max} completati..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ja.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ja.js deleted file mode 100644 index d05045cb6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ja",{pathName:"media object",title:"Media Embed",button:"Insert Media Embed",unsupportedUrlGiven:"指定されたURLはサポートされていません。",unsupportedUrl:"The URL {url} is not supported by Media Embed.",fetchingFailedGiven:"Failed to fetch content for the given URL.",fetchingFailed:"Failed to fetch content for {url}.",fetchingOne:"Fetching oEmbed response...",fetchingMany:"Fetching oEmbed responses, {current} of {max} done..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ko.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ko.js deleted file mode 100644 index f1f3f306d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ko",{pathName:"미디어 오브젝트",title:"미디어 임베드",button:"미디어 임베드 삽입",unsupportedUrlGiven:"지원하지 않는 주소 형식입니다.",unsupportedUrl:"입력하신 주소 {url}은 지원되지 않는 형식입니다.",fetchingFailedGiven:"입력하신 주소에서 내용을 불러올 수 없습니다.",fetchingFailed:"입력하신 주소 {url}에서 내용을 불러올 수 없습니다.",fetchingOne:"oEmbed 응답을 가져오는 중...",fetchingMany:"총 {max} 개 중{current} 번째 oEmbed 응답을 가져오는 중..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ku.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ku.js deleted file mode 100644 index 3f76a9331..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ku",{pathName:"ڕاگەیاندنی بەرکار",title:"خستنەناوی ڕاگەیاندن",button:"خستنەناوی ڕاگەیاندن",unsupportedUrlGiven:"بەستەری نیشانکراو پشتیوان نەکراوە.",unsupportedUrl:"بەستەری {url} پشتیواننەککراوە لەلایەن خستنەناوی ڕاگەیاندن.",fetchingFailedGiven:"سەرکەوتوونەبوو لە هێنانی ناوەڕۆکی بەستەری دراو",fetchingFailed:"سەرکەوتوونەبوو لە هێنانەی ناوەڕۆکی ئەم بەستەرە {url}.",fetchingOne:"لە هەوڵی وەڵامی خستنەناوە",fetchingMany:"لە هەوڵی هێنانی خستنەناوە, {current} لە {max} کۆتایهاتووە..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nb.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nb.js deleted file mode 100644 index 1ded17360..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","nb",{pathName:"mediaobjekt",title:"Media-innbygging",button:"Sett inn mediaobjekt",unsupportedUrlGiven:"Den oppgitte URL-en er ikke støttet.",unsupportedUrl:"URL-en {url} er ikke støttet av Media-innbygging.",fetchingFailedGiven:"Kunne ikke hente innhold for den oppgitte URL-en.",fetchingFailed:"Kunne ikke hente innhold for {url}.",fetchingOne:"Henter oEmbed-svar...",fetchingMany:"Henter oEmbed-svar, {current} av {max} fullført..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nl.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nl.js deleted file mode 100644 index 2f5d699df..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","nl",{pathName:"media object",title:"Mediareferentie",button:"Mediareferentie invoegen",unsupportedUrlGiven:"De opgegeven URL wordt niet ondersteund.",unsupportedUrl:"De URL {url} wordt niet ondersteund door Mediareferentie.",fetchingFailedGiven:"Kon de inhoud van de opgegeven URL niet ophalen",fetchingFailed:"Kon de inhoud van {url} niet ophalen.",fetchingOne:"Ophalen van oEmbed antwoord…",fetchingMany:"Ophalen van oEmbed antwoorden, {current} van {max} klaar…"}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/oc.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/oc.js deleted file mode 100644 index 6022fb3ac..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","oc",{pathName:"objècte mèdia",title:"Incorporacion de mèdia",button:"Incorporar un mèdia",unsupportedUrlGiven:"L'URL especificada es pas suportada.",unsupportedUrl:"L'URL {url} es pas suportada per l'incorporacion de mèdia.",fetchingFailedGiven:"Fracàs de la recuperacion del contengut de l'URL donada.",fetchingFailed:"Fracàs de la recuperacion del contengut per {url}.",fetchingOne:"Recuperacion de la responsa oEmbed...",fetchingMany:"Recuperacion de las responsas oEmbed, {current} sus {max} efectuat..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pl.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pl.js deleted file mode 100644 index f50aec5d6..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","pl",{pathName:"obiekt multimediów",title:"Osadzenie multimediów (oEmbed)",button:"Osadź obiekt multimediów (oEmbed)",unsupportedUrlGiven:"Podany adres URL nie jest obsługiwany.",unsupportedUrl:"Adres URL {url} nie jest obsługiwany przez funkcjonalność osadzania multimediów.",fetchingFailedGiven:"Nie udało się pobrać zawartości dla podanego adresu URL.",fetchingFailed:"Nie udało się pobrać zawartości dla {url}.",fetchingOne:"Pobieranie odpowiedzi oEmbed...",fetchingMany:"Pobieranie odpowiedzi oEmbed, gotowe {current} z {max}..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt-br.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt-br.js deleted file mode 100644 index b42312143..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","pt-br",{pathName:"objeto de mídia",title:"Incorporação de Mídia",button:"Inserir Incorporação de Mídia",unsupportedUrlGiven:"A URL especificada não é suportada.",unsupportedUrl:"A UTL {url} não é suportada pela Incorporação de Mídia.",fetchingFailedGiven:"Falha ao obter conteúdo para a URL informada.",fetchingFailed:"Falha ao obter conteúdo para {url}.",fetchingOne:"Obtendo resposta oEmbed...",fetchingMany:"Obtendo respostas oEmbed, {current} de {max} completos..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt.js deleted file mode 100644 index 183d418a7..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","pt",{pathName:"objeto de media",title:"Embeber media",button:"Insert Media Embed",unsupportedUrlGiven:"O URL especificado não é suportado.",unsupportedUrl:"The URL {url} is not supported by Media Embed.",fetchingFailedGiven:"Failed to fetch content for the given URL.",fetchingFailed:"Failed to fetch content for {url}.",fetchingOne:"Fetching oEmbed response...",fetchingMany:"Fetching oEmbed responses, {current} of {max} done..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ru.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ru.js deleted file mode 100644 index a37c30566..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ru",{pathName:"Медиа объект",title:"Медиаконтент",button:"Вставить Медиаконтент",unsupportedUrlGiven:"Данный URL не поддерживается.",unsupportedUrl:"URL {url} не поддерживается Media Embed.",fetchingFailedGiven:"Не удалось подгрузить содержимое для заданного URL",fetchingFailed:"Не удалось подгрузить содержимое для {url}",fetchingOne:"Подгружаем oEmbed ответ...",fetchingMany:"Подгружаем oEmbed ответы, {current} из {max} подгружено..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sk.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sk.js deleted file mode 100644 index e353e896d..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","sk",{pathName:"media objekt",title:"Media Embed",button:"Vložte Media Embed",unsupportedUrlGiven:"Zadaná URL nie je podporovaná.",unsupportedUrl:"URL {url} nie je podporovaná Media Embedom.",fetchingFailedGiven:"Nepodarilo sa získať obsah zo zadanej URL.",fetchingFailed:"Nepodarilo sa získať obsah z {url}.",fetchingOne:"Získavanie oEmbed odpovede...",fetchingMany:"Získavanie oEmbed odpovede, {current} z {max} hotových..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sv.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sv.js deleted file mode 100644 index d943de08f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","sv",{pathName:"mediaobjekt",title:"Mediainbäddning",button:"Lägg in mediainbäddning",unsupportedUrlGiven:"Den angivna URL:en stöds inte.",unsupportedUrl:"URL:en {url} stöds inte av mediainbäddningen.",fetchingFailedGiven:"Lyckades inte hämta innehållet från den angivna URL:en.",fetchingFailed:"Lyckades inte hämta innehåll från {url}.",fetchingOne:"Hämtar oEmbed-svar...",fetchingMany:"Hämtar oEmbed-svar, {current} av {max} färdiga..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/tr.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/tr.js deleted file mode 100644 index bd50191fb..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","tr",{pathName:"medya nesnesi",title:"Gömülmüş Medya",button:"Gömülü Medya Ekle",unsupportedUrlGiven:"Belirtmiş olduğunuz URL desteklenmiyor.",unsupportedUrl:"Belirttiğiniz URL {url} gömülü medya tarafından desteklenmiyor.",fetchingFailedGiven:"Vermiş olduğunuz URL'nin içeriği alınamadı.",fetchingFailed:"{url} içeriği alınamadı.",fetchingOne:"oEmbed cevabı alınıyor...",fetchingMany:"oEmbed cevabı alınıyor, {current} / {max} tamamlandı..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ug.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ug.js deleted file mode 100644 index 6ae25286f..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","ug",{pathName:"ۋاسىتە ئوبيېكتى",title:"سىڭدۈرمە ۋاسىتە",button:"سىڭدۈرمە ۋاسىتە قىستۇر",unsupportedUrlGiven:"The specified URL is not supported.",unsupportedUrl:"The URL {url} is not supported by Media Embed.",fetchingFailedGiven:"Failed to fetch content for the given URL.",fetchingFailed:"Failed to fetch content for {url}.",fetchingOne:"Fetching oEmbed response...",fetchingMany:"Fetching oEmbed responses, {current} of {max} done..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/uk.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/uk.js deleted file mode 100644 index 39a136f20..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","uk",{pathName:"Медіаоб’єкт",title:"Медіаконтент",button:"Вставити медіаконтент",unsupportedUrlGiven:"Вказане URL посилання не підтримується.",unsupportedUrl:"URL посилання {url} не підтримується медіаконтентом.",fetchingFailedGiven:"Не вдалося отримати контент для даного URL посилання.",fetchingFailed:"Не вдалося отримати контент для {url}.",fetchingOne:"Отримання oEmbed відповіді...",fetchingMany:"Отримання {current} із {max} oEmbed відповідей завершено...."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh-cn.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh-cn.js deleted file mode 100644 index 092c19081..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","zh-cn",{pathName:"媒体对象",title:"嵌入媒体",button:"插入媒体",unsupportedUrlGiven:"不支持指定的 URL",unsupportedUrl:"嵌入媒体不支持此 URL {url}",fetchingFailedGiven:"无法抓取此 URL 的内容",fetchingFailed:"无法抓取 {url} 的内容",fetchingOne:"正在抓取...",fetchingMany:"正在抓取,{max} 中的 {current} ..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh.js deleted file mode 100644 index d753eccac..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("embedbase","zh",{pathName:"媒體元件",title:"內嵌媒體",button:"插入內嵌媒體",unsupportedUrlGiven:"不支援指定的 URL。",unsupportedUrl:"內嵌媒體不支援 URL {url} 。",fetchingFailedGiven:"抓取指定 URL 的內容失敗。",fetchingFailed:"抓取 {url} 的內容失敗。",fetchingOne:"正在抓取 oEmbed 回應...",fetchingMany:"正在抓取 oEmbed 回應,{max} 中的 {current} 已完成..."}); \ No newline at end of file diff --git a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/plugin.js b/vendor/unisharp/laravel-ckeditor/plugins/embedbase/plugin.js deleted file mode 100644 index 2740a253e..000000000 --- a/vendor/unisharp/laravel-ckeditor/plugins/embedbase/plugin.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -(function(){var l={_attachScript:function(e,c){var d=new CKEDITOR.dom.element("script");d.setAttribute("src",e);d.on("error",c);CKEDITOR.document.getBody().append(d);return d},sendRequest:function(e,c,d,a){function b(){g&&(g.remove(),delete CKEDITOR._.jsonpCallbacks[h],g=null)}var k={};c=c||{};var h=CKEDITOR.tools.getNextNumber(),g;c.callback="CKEDITOR._.jsonpCallbacks["+h+"]";CKEDITOR._.jsonpCallbacks[h]=function(a){setTimeout(function(){b();d(a)})};g=this._attachScript(e.output(c),function(){b(); -a&&a()});k.cancel=b;return k}};CKEDITOR.plugins.add("embedbase",{lang:"az,ca,cs,da,de,de-ch,en,eo,es,es-mx,eu,fr,gl,hr,hu,id,it,ja,ko,ku,nb,nl,oc,pl,pt,pt-br,ru,sk,sv,tr,ug,uk,zh,zh-cn",requires:"dialog,widget,notificationaggregator",onLoad:function(){CKEDITOR._.jsonpCallbacks={}},init:function(){CKEDITOR.dialog.add("embedBase",this.path+"dialogs/embedbase.js")}});CKEDITOR.plugins.embedBase={createWidgetBaseDefinition:function(e){var c,d=e.lang.embedbase;return{mask:!0,template:"\x3cdiv\x3e\x3c/div\x3e", -pathName:d.pathName,_cache:{},urlRegExp:/^((https?:)?\/\/|www\.)/i,init:function(){this.on("sendRequest",function(a){this._sendRequest(a.data)},this,null,999);this.on("dialog",function(a){a.data.widget=this},this);this.on("handleResponse",function(a){if(!a.data.html){var b=this._responseToHtml(a.data.url,a.data.response);null!==b?a.data.html=b:(a.data.errorMessage="unsupportedUrl",a.cancel())}},this,null,999)},loadContent:function(a,b){function c(e){f.response=e;d.editor.widgets.instances[d.id]?d._handleResponse(f)&& -(d._cacheResponse(a,e),b.callback&&b.callback()):(CKEDITOR.warn("embedbase-widget-invalid"),f.task&&f.task.done())}b=b||{};var d=this,e=this._getCachedResponse(a),f={noNotifications:b.noNotifications,url:a,callback:c,errorCallback:function(a){d._handleError(f,a);b.errorCallback&&b.errorCallback(a)}};if(e)setTimeout(function(){c(e)});else return b.noNotifications||(f.task=this._createTask()),this.fire("sendRequest",f),f},isUrlValid:function(a){return this.urlRegExp.test(a)&&!1!==this.fire("validateUrl", -a)},getErrorMessage:function(a,b,c){(c=e.lang.embedbase[a+(c||"")])||(c=a);return(new CKEDITOR.template(c)).output({url:b||""})},_sendRequest:function(a){var b=this,c=l.sendRequest(this.providerUrl,{url:encodeURIComponent(a.url)},a.callback,function(){a.errorCallback("fetchingFailed")});a.cancel=function(){c.cancel();b.fire("requestCanceled",a)}},_handleResponse:function(a){var b={url:a.url,html:"",response:a.response};if(!1!==this.fire("handleResponse",b))return a.task&&a.task.done(),this._setContent(a.url, -b.html),!0;a.errorCallback(b.errorMessage);return!1},_handleError:function(a,b){a.task&&(a.task.cancel(),a.noNotifications||e.showNotification(this.getErrorMessage(b,a.url),"warning"))},_responseToHtml:function(a,b){return"photo"==b.type?'\x3cimg src\x3d"'+CKEDITOR.tools.htmlEncodeAttr(b.url)+'" alt\x3d"'+CKEDITOR.tools.htmlEncodeAttr(b.title||"")+'" style\x3d"max-width:100%;height:auto" /\x3e':"video"==b.type||"rich"==b.type?(b.html=b.html.replace(/